Scotty, over at the Mac Developer Network, is putting on a C4/WWDC-style independent Mac Developer Conference in England this April called NSConference. I won’t be able to make it, but it looks like a huge amount of fun. I’ve recorded a couple of podcasts with Scotty, and he’s top-notch, and I expect the conference to be excellent.
February 18, 2009
January 31, 2009
An unusual arrangement

It’s been awhile since I last used a two-monitor setup. Usually I do all of my work on a 15″ MacBookPro or one of the plastic MacBooks. But I wanted a better monitor for the desktop when I’m doing photostuff, so now I have two monitors again. Last time was in 2002 when I was doing contracting, and the client’s product I was working on wouldn’t fit on a laptop screen. I used a secondary monitor for running the software.
Even back in the Mac II days I always got really annoyed with the “traditional” way of setting up multiple monitors: having it so the desktop areas had large coincidental areas of vertical or horizontal border, so you could have one window span both screens and have it look non-horrible. My problem was I would always overshoot one monitor and end up on the other. I had really come to depend on Fitts’s Law. So why not use that for the monitors too?

I use my monitors as distinct playgrounds: Code and whatnot on one and the client’s big-assed program on the other. Lightroom’s Develop pane on one, and the Library grid on the other. Photoshop’s editing area on one, palettes on the other. I never have one big window that straddles both screens. Hence, my arrangement, seen above, connects the monitors at one corner.
This gives me my sides as big Fitts’s Law targets, as shown in the cute kitty picture. I can slam the mouse to the side to get to the tools. The menu bar at the top remains a nice big target. If I want to go to the other monitor, I throw the mouse to the bottom-left corner.
This makes the mouse enter the second screen at the top-right, and I keep my Photoshop palettes and Nik plugins panel up near that corner for easy access. I twiddle what I want, then throw the mouse into the upper-right corner to get to the main screen. If I lose my mouse, I can just keep mousing up and to the right until I see it on the main screen.

Why not put the other screen to the right? I keep my Dock hidden on the right. With today’s wide-screen displays, horizontal real estate is cheap, vertical real estate is still precious (six more lines of code! woo!). Having the Dock Fitts-style on the right makes it very easy to access.
Why not off the bottom? I use the hard border of the screen when resizing windows large – grab the corner, resize larger quickly until hitting the bottom of the screen. Unfortunately the green jellybean rarely does what I want it to do.
I’m not saying this is the best way for everybody, but it works very well for me. If you get frustrated with your multiple-monitor setup by accidentally mousing into the other screen, give the corner-connection a try.
January 4, 2009
New LoC is here
It’s finally seen the light of day. Learn Objective-C on the Mac is currently in dead-trees form, and available at amazon and other fine retailers.
I’m rather proud of the work that Scott Knaster and I have done on this second edition. It is the contents of the first edition from Spiderworks, but with about 100 new pages of goodies, including NSPredicate and Key Value Coding. There’s also a whole new chapter on Xcode tips and tricks.
The book is designed to sit between Dave Mark’s updated Learn C on the Mac and Dave’s and Jeff Lamarche’s most-excellent Beginning iPhone Development (exploding exploring the iPhone SDK). We go into things figuring you’ve met C and programming, so no “for loops are fun! ooh! variables!” kinds of rehashing. Instead we cover what’s been added by Objective-C, as well as some software engineering topics like indirection, object-oriented programming, the Open/Closed principle, and refactoring.
Plus the book is written to be fun. The English language is one of my favorite playthings. But the humor isn’t over the top and in your face. (at least I hope so)
On the AMOSXP front, we’ve added about 100 new pages of material, such as Objective-C 2.0 goodies (including some perversions of NSFastEnumeration), 64-bit programming, FSEvents, Dtrace and instruments, and NSOperation; and have also been removing some of the old and obsolete classic Mac information since it’s not relevant.
Fourteen students at the Big Nerd Ranch’s Advanced Mac OS X Bootcamp got a first crack at the new material. There is a second bootcamp scheduled for February in Frankfurt. The actual publishing of the next edition (and its ultimate contents) will hinge on Snow Leopard’s schedule. Hopefully MacWorld will give us some schedule insight there.
October 16, 2008
Git to Pittsburgh Cocoaheads
Hi!
Pittsburgh Cocoaheads tonight will feature Sean McCune talking about Git, the groovy distributed revision control system thingie.
7:30 on the CMU campus.
Cheers,
++md
September 16, 2008
LoC Review
James Summers has posted a very thoughtful review of Learn Objective-C on the Mac.
July 1, 2008
Next CocoaHeads/Pittsburgh : Thursday July 3
Next CoocaHeads/Pittsburgh is Thursday July 3, 2008, 7:30 at Newell Simon Hall 3001 on the CMU campus. No set agenda, but we’ll have the usual snacks and geeky discourse.
P.S. I’m on twitter as “borkware”, still working on revisions to AMOSXP, plus doing some work on LoC.
May 15, 2008
launchd tech talk
In case folks might have missed it : Launchd: One Program to Rule Them All Tech Talk @ Google, with Dave Zarzycki, the launchd dude.
May 11, 2008
Looking for Community Music in Philadelphia
Hello Everyone,
Two friends of mine who are excellent musicians (Trumpet and Trombone) are moving to Philly this summer, and they’re looking for good community music groups (band and/or orchestra). They don’t know anyone in Philly. *I* don’t know anyone in Philly would know what groups are good in the region. If anyone has suggestions, leave a comment or drop me a line at markd@borkware.com. Thanks!
April 20, 2008
Next CocoaHeads Pittsburgh, April 24

Hello everyone,
The next Pittsburgh CocoaHeads will be April 24, 7:30 pm at Newell Simon Hall, room 3000. Unless someone wants to talk about something else, I’ll babble incoherently about Unit Testing and Code Coverage, plus a peek at the Google Mac Playground and CoverStory.
We’ve got a google group / mailing list at http://groups.google.com/group/cocoaheads-pittsburgh. Please join if you’re in the area.
March 26, 2008
March 21, 2008
Fun (?) with Time Capsule
The Time Capsule I ordered a while ago has arrived. Woot! Remote Backup Nirvana is coming my way!
So far, it’s been working out “eh”. It took a couple of tries to get it onto my WDS network, and I’ve gone through a number of scram-the-backups-and-redo-from-scratch getting things set up. Here are a couple of first impressions.
- Enjoy the UI glitches, like this one that asks for a username but there’s no place to put it.
- Mail.app is *not* your friend. I had a large number of deleted messages that were getting
stated on every backup. I’d need to backup a few megs, which would take two minutes, and then it would sit at “Backed up 10Megs of 10Megs” for 5-10 minutes, all of which was looking at mail messages. It turns out I had a lot (over 65,000) of “deleted” messages that weren’t in the trash, weren’t in any mailbox, but showed up if you command-L while viewing the inbox. Control-clicking on the mailbox and choosing “Erase deleted messages” did nothing. I had to select each Inbox (I have 3) and choose “Erase Deleted Messages in Selected Mailbox” from the menu (or use command-K) Once I did this, a backup (including an email check) is about two minutes from “Backup now” til it completes. - If you have encrypted disk images where you store your
pornographic re-enactments of the Smurf sagasensitive financial data, you’ll want to use the Sparse Bundle format, which will only back up bands of data that have changed, vs the entire disk image. - Anyone with the Time Capsule disk password can see all the backed up data. Unfortunately, you have to supply this password (or an account password) when choosing a disk, so someone can look in their keychain and get it. So best to put your
Smurf pornsensitive financial data on those Sparse Bundle disk images. - I haven’t figured out the best way to back up the backup. There’s not (to my ability to find) a way to limit a particular backup set to a given size, like “only back up 300 gigs so I can fit it onto this laptop drive in an enclosure and stick in the bank lock-box”. There is an “Archive the Time Capsule disk to another USB disk” which might be useful, but I had hoped to be able to back up to smaller-profile disks.
- I’ve had some “could not mount backup” situations after sleeping the machine in the middle of a big incremental backup (I had done serious violence to my Mail.app message directory tracking down the issues I described earlier). I’ve also had this happen when ejecting the TC disk during an initial backup. No warning, it immediately ejected, and then would not re-mount. I had to delete the sparsebundle file on the Time Capsule and re-do my backup from ground-zero. So if you’re time-capsuling a laptop that you may want to shut down on a moment’s notice, even if it’s in the middle of a backup, run some tests before committing to it to make sure this won’t happen to you.
- Also, which is even more fun, is that spotlight has decided to index my time capsule backup volume. Before it decided to do this, backups were ~2 minutes for a no-op. Now they’re back up to 6-10 minutes, with mdworker going bonkers in fs_usage until I eject the Time Capsule backup volume (which usually auto-ejects once the backup is done) I can’t add the backup volume to the spotlight opt-out list:

And mdutil -i off /Volumes/blah doesn’t turn it off either. Even a reboot didn’t help. Sigh.
Hopefully once some of these annoyances are worked out I think Time Capsule will work out a lot better in backing up my, and the wife’s, MacBooks. Before this we had an “rsync to a DL-DVD-sized dmg on a Mac mini” setup, and hoped it didn’t fill up the disk image, plus waiting for a DL disk to burn, and hope it didn’t fail part-way through with media errors.
March 12, 2008
Making Command-Line Tools
Just in case you’re reading Learn Objective-C on the Macintosh, and you’re wanting to make a “Foundation Command-Line Utility” project in the might (or might not) be new Xcode which might (or might not) be associated with the latest iPhone excitement, you’ll probably want to look under “Command Line Utility” on the sidebar, and choose “Foundation Tool” from the project picker. They may (or may not) have moved it from previous Xcode versions. Or not. You didn’t hear it from me,
March 11, 2008
Learn Objective-C… on the iPhone?
I usually don’t like to Pimp my own Warez, but Sir Daniel Punkass pointed out to me that Learn Objective-C on the Macintosh is quite applicable to iPhone development, especially for folks who don’t already know Objective-C. Sometimes I’m a bit clueless.
LoC is an introductory book, but assumes you know C (it’s officially the follow-on to Learn C On the Macintosh). It covers a lot of the basic stuff you need in Cloud-Cocoa Land – especially memory management, which we go over a lot in the latter half of the book, since memory management is the place that many Cocoa programmers have problems.
We tried to make it as non-boring as possible, so I think even experienced programmers can get something out of it. From a twitter in response to Mr. Punkass, Diego wrote “started on the book and it’s very good. straight to the point and doesn’t linger on topics. which i like. thanks for the tip” (Thanks Diego!)
On the down-side, it doesn’t cover the properties syntax, or the new fast enumeration syntax, but once you have the basics of the language under your belt, you should be able to pick those up quickly.
March 9, 2008
OpenGL ES
Want to learn more about OpenGL ES? http://www.khronos.org/opengles/ has some information. The OpenGL ES 1.1 specs would probably be of the most interest.
March 1, 2008
New CocoaHeads/Pittsburgh mailing list
At the last CocoaHeads/Pittsburgh meeting, we chatted about setting up a mailing list, and maybe using a Google Group. I’ve gone ahead and set one up:
http://groups.google.com/group/cocoaheads-pittsburgh.
Wheeeee!
February 7, 2008
Apple’s Threaded Programming Guide
Apple’s released some new/updated documents. The Threading Programming Guide looks particularly interesting, especially if my LNC episode inspired you to not run away screaming.
February 3, 2008
Sometimes a signed value isn’t so bad after all

Wonder if a signed integer value and a sanity check for <= 0 would have caught this case? (Mail.app on Leopard. BTW. Anyone know how to get Mail.app on Leopard to delete messages without moving them to the trash? command-delete moves to the trash, and doing a “Cut” takes a freakishly long amount of time.) Radar 5353034.
February 1, 2008
Next CocoaHeads/Pittsburgh : Feb 7 – NSOperation
For folks in the Western PA area, the next CocoaHeads/Pittsburgh will be thursday, February 7. I’ll be talking about NSOperation.
January 29, 2008
Concurrent Programming with Many Mes
I had the pleasure of recording another Late Night Cocoa podcast over at the Mac Developer Network. This time I blabbled about concurrent programming, including some chatting about NSOperation.
If you know something about Cocoa programming, I’d like to encourage you to do a LNC podcast. Scotty is a pleasure to work with.
January 21, 2008
Chunky text in Pages
I’ve been using Pages for writing new AMOSXP chapters, and for the most part, it’s a pleasant experience. I’ve just about got the NSOperation chapter put to bed, and was making a PDF to send off to the first round of reviewers, when I noticed the generated PDF output was beyond horrible. Here’s what it looked like on-screen:

and here’s what the resulting PDF looked like:

Hideous, isn’t it?
Turns out that Pages is honoring the “Turn off text smoothing for font sizes x and smaller” when generating the PDF, and using bitmaps for the smaller font sizes. I have that set to “12 and smaller” because anti-aliasing plus my eye correction conspire to make things difficult to read. Why Pages is using this setting for PDFs is beyond my comprehension (and I hope it’s just a bug – VoodooPad does the RightThing. Filed Radar 5698417). You’d think that PDFs are being made for someone else’s consumption, and so wouldn’t carry along personal preferences like this.
January 20, 2008
Release In Order
My cow-orker, Mike Morton, gave me a little bit of advice over a year ago that’s proven to be incredibly useful: “In your -dealloc, release objects in the same order they’re listed in the @interface“. This makes it really easy to double-check your work and make sure you’re releasing everything you need to. It also makes maintenance easier: skim down your -dealloc and compare to your @interface before you land your code.
January 16, 2008
Macworld 2008
It’s Macworld 2008 time. I had Google Booth Bunny duty on tuesday. When I wasn’t working the booth, I wandered around the show floor with a camera, with the obligatory web gallery.
October 31, 2007
Exploring Leopard with DTrace
My friend and cow-orker Greg Miller has a piece published at MacTech: Exploring Leopard With DTrace.
DTrace is cool. DTrace is awesome. Go read this.
October 29, 2007
Speed Download for Apple Seeds
Apple provides downloads for OS X version for developers with seed keys. That’s cool.
Apple’s webservers cut off long downloads after twelve hours. When it takes twelve hours and fourteen minutes to download something, that’s not cool. I don’t want to think how many multigigabytes I downloaded before figuring out that twelve-hour cutoff.
Jonathan Wight said on IRC one day, “dude, use Speed Download“. I did. It works. I watched the progress meter at 12 hours. download speed went to zero as expected. A couple of seconds later it cranked back up Fourteen minutes later I had a finished download. That’s cool.




