Though there are some really nice OS X command line tools, there is not really much information available on how to write, build and distribute them. This is like in old times when you had to experiment and try out something in order to get it to work. Nevertheless I collected some links that may help in writing command line tools for OS X.
Have you ever wondered how the SMLoginItemSetEnabled function works? How to remove an application from launching at login from outside that application? Well, read on.
Have a bundle identifier like com.apple.Safari and want to know which applications are associated with it and where on your system you have installed instances of the application?
I have a lot of snippets that I found somewhere on the web, ages ago, or created myself. They solve small problems and range from making OS X working better to Cocoa development issues. Until now I didn’t have any central location for storing them, but will now begin publishing them on my blog, not least with the hidden agenda to not have them stored locally anymore.
Today: After each update of an app I bought in the Mac App Store, my Finder’s context menu shows duplicate entries for that app. Clean up this mess with two (well-known) Terminal commands.
- Private RSS Feeds: Support for security in aggregators — RSS test feeds with HTTP Auth and/or SSL authentication. This is almost ten years old, but still very valuable for testing your code.
- Programming in Objective-C, 5th Edition — The new edition of Stephen Kochan’s book which was published just before Christmas. A must read for the striving programmer.
- AppleScript Experiments with OmniFocus and Microsoft Office — Nice work from Canada.
- The difference between push and commit in git — Yeah, I knew that once, but lost it somewhere.
- Avenir, a new OS X font — Avenir has been added to OS X with Mountain Lion and I like it very much.
Last spring I blogged about Brow, a new app I prepared to sync my Firefox and Chrome bookmarks with Spotlight. Though this was not impossible, it was tricky from a design point of view, as I wanted to bring Brow to the Mac App Store and Brow had to run in a sandbox. Apple rejected the app for a bug they, but not I, experienced, and I didn’t touch Brow for some months after that setback.
Since a couple of weeks, I use the PieCrust static website generator to bake this blog locally on my computer before syncing it with my website. Although there is a learning curve, working with PieCrust proved to be generally easy, with the one exception of setting up a RSS feed for my blog.
Quite often I stumble upon interesting, innovative content on the web, like we probably all do. Months and years later I still remember that I once found something on a specific topic but of course I didn’t bookmark anything and have trouble finding it again. I will therefore from now on publish a selection of nice web content links I want to remember on my blog here and there.
- OS X 10.8 Notification Center Alert Automator Action — I really don’t get it why this hasn’t been included in Mountain Lion.
- PieCrust CMS — A static website generator I use to bake this blog. Running in PHP, which is nice as for OS X users this means there aren’t any additional packages to install.
- Terms of Service; Didn’t Read — “We are a user rights initiative to rate and label website terms & privacy policies, from very good Class A to very bad Class E.”
We all know that the user interfaces of OS X apps are becoming more and more differentiated. Apple as well as third party developers slowly move away from the once authoritative OS X Human Interface Guidelines and create not only new user interface elements, but a whole new experience of interacting with applications, at least partly borrowing from iOS innovations.
It is not that easy for an Mac indie developer to follow this trend if he or she doesn’t have at least some graphical and design talent. It is therefore not by chance that so far I have been rather traditional in my approaches. Now, however, I used some free time over the holidays and created a set of custom button controls.