Build there, check status everywhere

I've been using the iPhone SDK since its original release way back in March. Many frustrating moment in the beginning but the recent beta 7 and beta 8 release proved to be ready for prime time. Apple has added many helper classes or helper methods to classes to make it far easier to work with the UI components, which is by far the most frustrating things I encountered. I am still having problem wrapping my head around the idea of Interface Builder but since the apps that I am building do not involve very complex UI, I just hand coded all the UI instead.

To illustrate, the original iPhone app idea I had that I started developing using the original SDK is a mobile application for Mingle. The application would consist of a series of table views showing projects, cards, and card details, along with some network code to talk to the Mingle server through REST API. At that time, progress was slow because of many factors. First, learning Cocoa/Cocoa Touch API and Xcode at the same time was tough. Second, the Cocoa Touch API was a bit 'primitive' in the beginning. What I mean is that while the API provides all the necessary hooks for developers to create an iPhone app it does not provide many pre-build components, making it difficult and required lots more work from developers to re-create the look and feel of the built-in iPhone apps.

I was so put off by the initial experience that I skipped beta 4-6 and did not open up Xcode until last weekend. And what a refreshing change with beta 7! Now it is straightforward to make an app that looks and feels just like an Apple's one. I was so fired up that last Sunday evening I decided that I would try to create an app for an idea that one of my fellow ThoughtWorker suggested to me. Instead of days of tearing my hair out and got no where, I was able to create a almost features completed app within hours, using beta 8.
So what is this app? It checks the build status on the CruiseControl server. Just like CCTray (Windows) or CCMenu (OS X), it allows users to monitor their software build status. Following the convention, I am calling it CCPhone. The app isn't more complex than the Mingle app but the fact that I was able to almost match the productivity I normally get on my Windows development environment means that I was excited about working on the app rather than dreading it.
Now here are couple of screen shots:

  • Fix the build time being 1 hours off (probably day time saving bug)
  • Better status icons
  • Create application icon (currently it uses icon from CCMenu)
  • Finish coding the 'Force Build' functionality
  • Add startup screen bitmap (so it won't be just a black screen)
  • Add auto detect of CruiseControl server (Java, .Net, or Ruby)

Read and post comments |
Send to a friend

PowerShell rescues wedding photos

One of my friend reached out to me last week for help. The photographer she hired for her wedding had gone bankrupted. Since she has not gotten the album now she can't even get her wedding photos in either prints or digital form. All she has access to is the photographer's web site where the people can order prints from. She was hoping that I can somehow retrieve all the photos (~1220) from the site so that at least she would have digital copies of her wedding photos.

After poking around the site a bit, I found out that I was in luck. Sort of. All the photos are accessible but only in low resolution (500 x 366). But more importantly for me, the site developer had opted to have a nice AJAX interface and for some reason decided to include all the image URLs in the page!
So a plan of action quickly formed in my head:
1. Download the page source
2. Extract the image URLs from all the HTML/Javascript code
3. Download all the images, one by one
Initially I want to try out Automator on my Mac and see how easy it would be to do this, since this is exactly the type of repetitive tasks Steve Job told us Automator  is perfect for! Unfortunately after poking around for 30 minutes, I quickly came to the conclusion that Automator is woefully inadequate for this task. So I turned to PowerShell on my Windows VM instead. Having used PowerShell 2.0 CTP a lot in my last project, I was able to quickly develop a script that extracts URLs from the page source, download the file, and save it to disk. In fact, the most time consuming part is to figure out the regular expression for URL extraction!
From start to finish, it took me around 90 minutes to get all the photos downloaded. If I didn't waste time with Automator and better at regular expression I think I can do it in 15 minutes!
Now my friend can have her wedding photos. She may not be able to print them out, but at least she can view them on a computer screen.

Read and post comments |
Send to a friend

Productive Friday

Accomplishment of the day:

  • Went to the gym
  • Drop clothes to dry-cleaner
  • Got haircut
  • Visited chiropractor
  • Arranged dim-sum lunch with cousin and his girlfriend
  • Edited ThoughtWorks podcast using GarageBand for the very first time
  • Caught up with lots of outstanding podcasts
  • Updated my iPhone code to beta 5 SDK's new API
  • Watched Turkish F1 GP Friday practice
  • Watched two days of Daily Show & Colbert Report from two weeks ago!
  • Read last week Autosport

Read and post comments |
Send to a friend

Ecto is no more (for me)

Adriaan and I have decided to part ways. We started this great partnership nearly 4 years ago under very different circumstances than what we find ourselves in today. Since joining ThoughtWorks last August, my level of commitment as a developer has risen a lot. The weekly travels, working with open source project, involvement in recruitment within TW, etc. mean that I have not been able to devote the time to ecto that it deserves.

While it is sad to see the relationship end, I gained a great friendship and his daughter photos always brighten up my day!

The project will continue under the "Ecto for Windows" name until a new one is found. The hope is to have a new name by the end of next week. If any one out there has suggestions, feel free to let me know! Once it is decided, a new version of the application will be released with updated name, links, etc.
Sales & Support
As of right now, Ecto for Windows is no longer on sale. I have not decided on the course for the project yet. One of the benefit the partnership with Adriaan had brought was the sale infrastructure that he had in place. With that gone, I am re-evaluating whether keeping ecto as a commercial product is a viable option.
Even though I have less time for the project, this by no mean I am less committed to support ecto as it stands now. Ecto 2.x will be fully supported by me, just like it has been for the last 4 years. The new support forum is located here: The existing messages from old forum will be migrated to the new forum some time next week.
Future development
The development of the next version of ecto (e.g. version 3) remains to be decided. I have re-written almost all of the backend code but significant amount of work remains. One option would to open source the project for version 3 so hopefully more people can contribute to the development effort, instead of just little old me. (Open sourcing version 2.x is not possible currently as it contains a commercial component unless a replacement is found) Another option would be to find another developer to take over the project. But finding this some one may be difficult.

Read and post comments |
Send to a friend

Website Built with

Up ↑

%d bloggers like this: