Archive for the 'Software Development' Category

iPhone Development Course

Local Xcoders founder Joe Heck has just announced his 2-day iPhone course/workshop here in Seattle.

Joe has a very solid grip on the topic, and a seemingly boundless desire to both share what he’s learned and learn from others. Writing for the iPhone can be a bit disorienting at first, especially if you’re not already familiar with Cocoa; Joe is an ideal sounding board for questions you may worry might mark you as a “rookie.”

We got a preview of the course at last month’s Xcoders meeting, and I highly recommend it for anyone wanting to get up to speed on iPhone development. (Especially if you can get the discount he mentions in his post.)

Cocotron

I don’t intend for this to become a link blog–not because of some high-falutin’ ideals, but because I assume most potential readers are at least as connected into the Mac dev community as I am and will have already heard the latest cool news.

But the latest post by Glen Aspeslagh describes Ecamm Network’s usage of a project which seems to deserve increased exposure: Cocotron, “an open source project which aims to implement a cross-platform Objective-C API similar to that described by Apple Inc.’s Cocoa documentation.” Or, as glibly summarized by the Ecammeratus: “Wrote a Cocoa app? Just add a new Xcode target, hit compile and out shoots a Windows version.”

Sure, it doesn’t work perfectly, but Glen’s warts-and-all description sounds promising. If you have a product that could benefit from a Windows equivalent please give Cocotron a look and contribute code–so it will be easier for me to use when I come up with a product that could benefit from it.

iPhone SDK NDA Lifted!

Hooray, Apple has decided to lift the long-in-the-tooth NDA on the iPhone SDK!

I can’t imagine anyone will be hearing that news from this blog first, but I do want to acknowledge and take advantage of it. My last post felt a bit vague, even to me, about my definition of “iPhone black” and that was partly due to dancing around the NDA. While it was really tempting to be provocative, I felt it would be irresponsible for my current contract work to risk getting smacked with an NDA violation (even though I have yet to hear of an instance) and have the client’s product suffer as a result. I considered screenshots, but felt they were either singling out someone else’s application, or a simplistic straw man if I just used an Interface Builder mockup.

The definition I had in mind of “iPhone black UI” is not simply “any view whose background is black”; it is a UINavigationController whose UINavigationBar's barStyle is UIBarStyleBlackOpaque (instead of UIBarStyleDefault) and is controlling a UITableViewController whose controlled UITableView's rows have either a white or black background. If a UIToolbar is present, its barStyle is also UIBarStyleBlackOpaque. I think most people understood that, but I still prefer to be explicit.

Wow, that feels great to type all those UI* prefixes in public–I encourage everyone to do so!

iPhone Black == Brushed Metal?

Yesterday I tweeted: “Sorry, but I still feel black iPhone UIs are the equivalent of brushed metal.” I was aware that people I know personally are writing applications that this would seem to disparage. I also knew that I should follow it up with more explanation than can fit in 140-character chunks. (Read the article)

2.5 of 3 Goals Accomplished

I’m not usually one for New Year’s Resolutions, but this year I set three goals–one personal and two professional.

Goal #1 (The Personal One): Return to our honeymoon place for our anniversary. For the first 5 years of our marriage, we did an anniversary trip to Sooke Harbour House, the same place on Vancouver Island we honeymooned. It was an awesome indulgence and great way to recharge. Then baby came along, and logistics haven’t worked out. My goal was to get that tradition back on track–it didn’t happen. We (actually, Marya) did find a really nice weekend hideaway closer to home and more affordable, and that’s where we celebrated this year; we also technically still have time to visit Sooke this year, so I’m counting this goal as “half accomplished” and it’s already reappearing on next year’s list of goals.

Goal #2: Attend WWDC. I wanted to take the next step toward creating Mac software, which has long been a hobby/pasttime/fascination. This isn’t really a goal that can give half credit, and I didn’t actually think this was going to happen until (again, with not only my wife’s blessing but encouragement) it was decided at the last minute of early registration to go for it. I haven’t regretted it since, and need to make this another annual tradition.

And now the biggie:

Goal #3: Make some money writing Mac software. This could have been the easiest one, and certainly the most affordable. The size of the check wouldn’t matter–it could have been $5 under the table for all I cared, and it would have been a step forward. I have exceeded that goal.

I now hold in my hand a check for a side contract I accepted to write an iPhone application. I had not really been interested in iPhone apps when I went to WWDC, but I had just thought of an app that would scratch a personal itch and started writing that app when I was approached about this contract so I felt confident enough to accept it. It’s been hectic fitting this development into my schedule, it’s been frustrating to figure out not only how to do things on the phone, but how best to do them. But it’s also been incredibly rewarding even beyond the financial end.

This check was for the prototype of an application. It may never make it to the App Store, and you may never see it. I hope you do, and if it gets that far (and I’m allowed) I’ll make sure people know about it here. I’m proud of what I’ve done on it so far, but if it never goes any further, it will still be the application that accomplished one of my goals.

Adding Frameworks in Xcode 3.1

This is one of those cool little tidbits I learned during a WWDC session and can share now that Xcode 3.1 is out: Xcode 3.1 has changed the way you should add Apple-supplied frameworks. Although Apple claims in the Release Notes (you have read them, haven’t you?) that the process has been “simplified,” the method isn’t really apparent from within Xcode.
(Read the article)

WWDC Recap, Part Two

When last we joined our intrepid WWDC newbie, he had just entered Grand Keynote Cavern. Come along for the action-packed continuation (and conclusion, I promise!) of The Tale of WWDC.
(Read the article)

WWDC Recap, Part One

I haven’t been waiting around to have the last word on WWDC; I’ve been busy and distracted, but I suppose it’s time to sum up my experiences.

This was my first time attending WWDC. I’ve wanted to for a long, long time but could never justify the expense for something that was effectively a software hobby. But with a newly solidified application idea, and a perfect storm of situations, I couldn’t resist on the year that turned out to be the biggest WWDC yet.

Perfect Storm, Part One: My sister-in-law and her husband live in San Francisco, they were going to be in town that week, and they were perfectly happy to have me stay with them during the week. That cut out the great big expense of lodging. Pacific Heights is not as convenient as the local-to-Moscone hotels, but it was really only an inconvenience when I needed to carry my bag during the Bash Thursday night instead of dropping it off in a hotel room. Staying with them will probably become a tradition as long as they will have me.

Perfect Storm, Part Two: Alaska Airlines offered a great flight price ($170 round trip). Even though it required departing Seattle early Sunday morning and returning Saturday night, that actually worked out perfectly due to Part One: I got the opportunity to have family brunch Sunday, and had time to take them out to dinner Friday night to thank them for their hospitality. (I can now highly recommend Argentine steak house El Raigon, and their wonderful selection of Malbecs.) I also had the opportunity to catch all of Friday’s sessions instead of having to cut out early to make it to the airport.

Perfect Storm, Part Three was a huge factor, but the briefest to describe: I was generously given permission by my boss to go into vacation time debt. Without that, I don’t think I could have justified the trip.

These factors all started lining up in the last days before early registration ended. I booked my held flight reservation from my iPhone late Thursday night, after an Xcoders meeting; I purchased my WWDC ticket and ADC Select membership (another first) on the last day of early registration. I certainly felt like I just made it under the wire when they announced the conference was sold out.

The Keynote

Since this was my first WWDC, I figured I had to bathe in the Reality Distortion Field and see the Keynote. I overslept and woke up at 4:30 instead of my planned 3:30, figured out which bus was running at that hour only to miss it by less than a block, and ended up walking the entire way. I was in line just before 6:00, about halfway down Minna (before the first “everyone get to know your neighbor better” compression of the line).

Keynote Line Swag Tip: If you’re interested in swag (t-shirts, MacTech magazines and more) while in line, staying to the street side of the packed-in line will increase your chances of not being ignored.

Stand in line, eventually get let into Moscone. I had already registered on Sunday, so I followed the majority of the crowd up to the second floor “holding pen” (my term; I never actually heard the staff call it that) where we were told that we were guaranteed to get into the main auditorium. Comfortable in the knowledge I didn’t need to hold my spot, I made a quick restroom break.

Keynote Line Coffee Tip: The Starbucks right near Moscone is insanely packed at this time. Luckily my walk had earlier taken me past an uncrowded Starbucks on O’Farrell, but also try the Peet’s at 2nd and Mission.

I stopped paying attention to time; no easier way to get frustrated than watching a clock while waiting. After some period of time, we were led up to the third floor and another “holding pen” area in the hallway. After another period of time, we were let into Presidio, the largest available conference hall, where I quickly realized that unless I wanted to fight my way into the first ten rows it would look the same from any other row in the hall. So I casually settled into a seat about four rows behind the left side projection screen and awaited my first in-the-flesh Keynote.

If you have read this far, I apologize for the cliffhanger but this post has already become longer than expected. I will follow up on the rest of the week soon.

VOODOO Flashback

When you’ve been involved in (or just been watching) an industry long enough, you begin to see cycles. Or maybe they’re just ideas which were ahead of their time and eventually have come to fruition. (You can stop your smirking right now, Smalltalk advocates.)

Since changing from CVS to Subversion, one of these possible cycles has been tickling my basal ganglia: The change from CVS’ “every file on its own revision schedule” to Subversion’s “one revision for the entire repository state” has been both a blessing and a confusion, but it also reminded me of a revision control system from the pages of MacTech magazine. A few days ago, I finally remembered a keyword (“orthogonal”) at the same moment I had some time to do a bit searching, and I found it: VOODOO. From the stale MacUpdate entry:

VOODOO Personal (Versions Of Outdated Documents Organized Orthogonally) is a stand-alone version control tool, with a neat graphical user interface. It offers simple and clear access for managing projects in which files evolve in numerous versions. The tool manages not only variants and revisions of single files, but of whole software projects (multiple files, multiple users, multiple variants, access rights, project structure, project history, etc.).

VOODOO differs from previous source code control systems in its orthogonal approach to version management. This means that for every component of a project hierarchy, you can not only store its revision history, but also different variants of the same component. The orthogonal organization of revisions and variants leads to a much clearer arrangement than in other tools which use trees for organizing variants and revisions.

VOODOO uses delta storage for storing different versions, which can yield savings of about 95% (up to 99%). It is not restricted to text files but also handles files of arbitrary type (desktop publishing documents, databases, libraries, applications, etc.)

I remember downloading a trial of VOODOO Personal and not grokking it, but I hadn’t even started using CVS at the time; was Subversion simply a descendent? Reading the afore-linked ATPM review and the Google Book Search text of Software Configuration Management, I’d have to conclude “no.” The terminology still seems generically confusing, and the perceived level of fiddlyness is still something of a barrier, even though many of the concepts (variants and freedom of file layout) are appealing.

It seems uni software plus no longer maintains VOODOO–not surprising given all the screenshots you’ll find online are chock full of Platinum window goodness–but I wonder if its absence isn’t just due to it riding a wormhole into the future.

« Previous Page