Category Archives: mac

Mac or macintosh programming related

WWDC 2010

Ticketing system replaced and launched, I’m ready for a decompress. There’s pretty much no better place to do that, in my mind, than at WWDC in San Francisco this coming week.

I used to send myself every other year. Strangely, I’ve been attending for over 10 years now. Seems odd that it’s been so long. It’s been wild watching the changes in the conference over the years. This year is no different. There’s hardly any “just” MacOS X sessions now – iPhone and iPad (not surprisingly) crowd out the whole schedule. The time to selling out the conference is shorter this year than before, and I rather expect the crowds to be as insane as ever. Fortunately, many of my friends from Seattle Xcoders will be there – even if they love taking digs at each other over sax interface xml parsing code and “unnatural love”.

Best of all, the really big project weighing on my mind for the past month is out – I can go play, hack, drink, laugh with my friends, and not worry about deadlines for a while.

Looking for a full time Cocoa programmer

Gus, El Presidente at Flying Meat Inc., is looking for a full time Cocoa programmer to come work with him up in Everett, WA.

Here’s the details:

Do you love programming for the Mac and iPhone and think Objective-C is the bees’ knees?  Are you sick of your boring 9-5 job and wish you had more interesting problems to solve?  Would you like to join an indie Mac shop in the heart of downtown Everett, Washington?

Flying Meat ( http://flyingmeat.com/ ) is looking for a full time programmer to work on our award winning applications for the Mac, iPhone, and iPad.

The ideal employee has real world experience with Objective-C, programming with Xcode, a friendly attitude when talking to customers, and a penchant for figuring out tough problems.

Location:
- Downtown Everett, WA.

Responsibilities:
- Programming (fixing bugs, adding new features, etc) on our existing applications, and help bringing about new ones for the Mac, iPhone, and iPad.
- Assisting with 2nd level support.

Requirements:
- Experience with Objective-C and Xcode.
- Experience with Subversion or similar version control systems.
- Ability to work with at least a couple of scripting languages, such as Python, JavaScript, Ruby, Bash, Lua, JSTalk, etc.
- Experience shipping an iPhone, iPad, or Mac application.
- Highly professional, with the ability to multitask and deliver solid work on tight schedules.
- A sense of humor and an easy to get along with personality.

Experience that will help you stand out:
- Ability to work comfortably with Mac OS X graphic APIs such as Core Image and Quartz.
- Familiarity with network protocols.
- Ability to zip around in Terminal.app while blindfolded.
- You know the Mac HIG inside and out.

Benefits:
- Paid vacation.
- Profit sharing.
- Relaxed working environment.
- Retirement plan.

How to Apply:
Please send resume in plain text to gus@flyingmeat.com .  Make sure to point to projects you’ve worked on, and we would also love to see code you’ve written!

collaborating on GitHub

No secret, I prefer Mercurial, and I think pretty highly of BitBucket too, but a whole lotta folks are using GitHub, and the platform is pretty damn good for general project collaboration, especially for open source projects.

The only problem, in my opinion, with GitHub is having to use git! I find it darned confusing, and I’m pretty confident and effective with source control tools. Not that I don’t appreciate it’s power, I’m just not in favor of that particular level of complexity/ease-of-use tradeoff.

Anyway, while I’m not great with it, I can figure it out. And since I did, I wrote it up. The example is available for the GitHub project letters if you’re interested. It should be really easy to translate into any other project on GitHub, and has the basics for collaborating, including getting code from anyone’s fork of the project and pull it into your own.

http://github.com/ccgus/letters/blob/master/README-CONTRIB.markdown

Hope it’s useful… I’ll be doing another one of these at some point for BitBucket and mercurial…

Acorn 2.0!

Acorn 2.0 has been released – and be aware, it is Mac OS X 10.6 (Snow Leopard) only! You can get a whole slew of details on Gus’ blog post about the 2.0 release of Acorn.

I’ve been impatiently awaiting this day for a while. I promised Gus I wouldn’t talk about features or the code or whatever while it was in beta, but now it’s out! The handy little feature that Gus posted (Command-Shift-6) a little while back has been my virtual life saver while making screen shots for classes. The new feature (my favorite, clearly) not only makes a snapshot but brings ALL the windows on your system in as layers in an Acorn document.

You can navigate down a great little hierarchy to find the one you can, select and copy the layer, and then paste directly into Keynote. Getting “just the right” shot is a hell of lot easier now: no trimming or dealing with that shadow effect (a real PITA for screenshots), you don’t have to worry about what background you have on your desktop, and even the windows of a given application are nicely sorted out into their own layers. You can merge them back together, or just grab the specific window you need (Hello Interface Builder!).

If you’re doing anything with screenshots on the Macintosh – get this program now! The minor cost will get paid back time on the first project you do with it.

class-dump 3.3 is now available

class-dump 3.3 is now available:

A new version of class-dump is now available. You can download it from the links on the class-dump project page. It is built for Mac OS X 10.5 or later.

Version 3.3 adds support for Snow Leopard, improves property handling, improves structure/union handling, fixes a bunch of bugs (including two crashers), and no doubt adds some new bugs.

(Via Steve Nygard’s Weblog.)

SeattleBus 1.2.0 sent in for review

Seattle Bus 1.2.0 has been pushed up to the App Store for application review. This update changes out the underlying parser, allowing the application to use King County’s provided real-time data feed (http://trackerloc.kingcounty.gov/avl.jsp) instead of the one hosted by UW (http://mybus.org/metrokc/avl.jsp).

While the MyBus.org site has been responding fine for the past few weeks, we’ve now seen multiple times over the past year when their site has been down and/or unresponsive to the point of breaking the Seattle Bus application. Hopefully this will fully resolve it. A future point update may allow users to choose between real-time trackers, but that hasn’t been coded in yet and I hope won’t be necessary.

I’ll post an update when it’s past review and is available for purchase again on the iTunes AppStore.

Temporarily removed from sale

Since I haven’t been able to get the site providing the data back online within the week, I’ve temporarily removed Seattle Bus from sale on the AppStore. I’m working on a “fix” (changing the data provider) now that will hopefully be available soon.

I apologize for the trouble and annoyances.

If you have the application already, it’s worth noting that the application does work periodically. Unfortunately, the data feed is just so inconsistent as to be nearly useless.

UPDATE:

I have a new parser functioning correctly with by MyBus.org and King County’s Metro Tracker site. The update should be uploaded to the AppStore shortly. I’ll post when I get the new version uploaded, and when it’s available.

I must say, it’s incredibly embarrassing that the King County site doesn’t even emit well formed HTML. The new parser is an interesting screen-scrape accumulation of regular expressions to pull out the relevant data. At least they’re posting it online…

Diving head first into GTD with OmniFocus

I think it’s safe to say that Things and OmniFocus are the top two GTD task manager dawgs in the field right now. And yeah, I know – Things is the shizzle right now and the application looks pretty darn fine. I spent a lot of time over the past week looking at both applications, giving them a little initial test run, etc. before finally settling on OmniFocus.

Two reasons finally swayed me to OmniFocus:

  1. Right now, out of the box, it syncs between multiple Macs and the iPhone. (Things doesn’t – although that’s coming in the future)
  2. I know some of the Omni guys and I think they do some darn nice stuff – I feel good about supporting folks who’s office is just within a couple of miles of my house.

Diving in headfirst, I got both the desktop and iphone versions of the app. Getting started with OmniFocus is, well, heady. There’s a lot in there, and a fair bit to learn. I was jones’n for the simpler “just tag the thing” structure of things for a bit, but I’m coming into sync with the OmniFocus way and getting some goodness from it. Since it caused me some gnashing of teeth to start, I thought I’d share what I’ve learned.

The two primary ways of looking at your work in OmniFocus is by project and by context. They’re orthogonal – so a given task can have a context and a project, and those don’t need to be related. The context setup flipped my trigger a couple of times, trying to get the sense of what they hell it was for. I’m not even sure that I’ve nailed it – but in my world, “context” in the OmniFocus set up is a description of the limiter to where you need to be or who you need to be working with to get something done. I’ve stripped out the default contexts and drained it down to “Office”, “Home”, “Online”, and a list of my team members.

The “Office” vs “Home” is really the differentiator for me. I’m online damn near all the time – but I kept that in the pile to keep it separate from contexts where I might be out somewhere and needing to get something done (like picking up groceries, in the classic setup of the app).

The “people as context” is my stab at dealing with follow-ups and tasks associated with the awesome team that I’m managing. The whole reason I decided to dive into GTD in a serious way was so that I had a handle on the sheer information volume load that was flowing through and around me – an order of magnitude greater than when I was just knocking stuff down by myself and mostly on my own recognizance. I’ve just started with the people as context setup – but so far it looks to be working OK. The question that I haven’t answered, and lies before me is do I want to track tasks that I’ve delegated to folks within my team in my OmniFocus task list. I may try it – but I fear that’s a slippery slope. I’m thinking that I’ll only really want to aim that towards when I need a follow-up or information back to do something else.

Projects are the other big deal in OmniFocus. I’ve got a ton of projects. I’ve also got them cascading down with folders (took a while to sync into that setup) and I’m using default contexts with those folders. So for something related to, oh, say one of those “Enterprise Software” systems I was tirading about yesterday – I make sure I have a pre-set context to “Office”. Any tasks I create under that project from there automatically get the “Office” context, which saves my fingers a few typings.

I also work between Mac and (sob) Windows. Nothin’ doin – it’s just the state of the world that I need to interact with both worlds constantly. I’ve also migrated my half-assed attempt at GTD with Outlook’s task manager (couldn’t keep a damn thing organized with that setup) fully into OmniFocus. So the trick is dealing with emails that come in from Outlook, asking for me to do something. I’ve taken advantage of the nifty Mail.app rules integration to enable me to forward email to a different inbox and that gets ingested into the world of OmniFocus. Works really well too – I just leave Mail running on the laptop and stuff gets crammed into my OmniFocus inbox for me to categorize and deal with at my next round of that (currently I’m doing that at the end of the day, cleaning up as it were).

I haven’t yet jumped in to reviewing my tasks and projects, but I’ve set up a repeating “to do” item (tickler, in GTD parlance) with OmniFocus to remind me to do just that. I also haven’t looked at the Calendar sync – at some point I may dive into that, but I haven’t so far.

Finally, Perspectives are the key to making OmniFocus really sing. You can set up one (or several) views into your world based on due dates, contexts, projects, etc. You can save a window’s view as a “Perspective” – and I’m making aggressive use of that setup. My only gripe there is that perspectives aren’t shared with the OmniFocus database – I had to set them up on each machine I was working with.

Finally – the iPhone app:

So far, it’s mostly a way for me to ingest tasks while I’m in a meeting. I can tap the task in there, and I feel a lot more confident that I won’t loose track of it. I generally just shove things into my Inbox from there, and at the end of the day I review all the stuff I need to get done, tasking it out further if needed and categorizing it from there. I tried to set up the location based context mappings, which seemed kinda nifty, but I ran into something unhappy there, and I’m working with Omni’s tech support to get that nailed down and straightened out. Not sure why – but it’s not ever returning a location to the application.

The sync, my key value and reason for choosing OmniFocus, is working great though. The end result is paying a bit more for the setup (desktop & iphone application), and I wish it would sync a bit faster than it does, but it DOES the sync and everything is being kept up to date.

As a final note to anyone reading this far – if you’re going to invest in the software to do GTD and you choose to do it with OmniFocus, take the time to watch the videos that they provide and spend a weekend getting used to the software. Also – like writing software – don’t be afraid to trash what you’ve done and rejigger the thing based on what you’ve learned to make it better for yourself.