Mac

Jun 27, 2008

OmniFocus as a Development Management System

I'm developing software and most of the time I'm working by myself. This does not mean that I don't need to organize my work. As we all know, setting goals and staying focused is crucial. That is a challenge for me - I'm usually bursting with ideas for features and enhancements. I need to prioritize and keep tabs on what I'm doing. Still, I don't want to lose any good ideas for the future.

This is where OmniFocus comes to the rescue. OmniFocus, is, IMHO, the best task management software I've used. It is Mac only and it is based on the well known Getting Things Done method, aka GTD. I'm not a strict GTD follower, yet, I still get everything I need from OmniFocus. In this post, I'll show you how to turn OmniFocus into a development management system for tracking development tasks and bugs. For teams of developers, it cannot replace a full blown system like Bugzilla. However, if you're like me, working in a one man team (no sharing option in OmniFocus) this could be a great solution. Before we start, I recommend reading a bit about GTD if you're not familiar with its' basic concepts.

Overview
Here's an example of my "Planning View"
Planning View
My system is based on the following:

  • Product versions are shown as Folders (for grouping projects)
  • Each version will have the following projects:
    • Active Projects - Bugs and Enhancements
    • On Hold Projects - Waiting tasks - organized into 3 projects according to priority
    • On Hold Task List - Ideas for the future
    • Complete Task List - I drop finished tasks here to clear the clutter
  • I have contexts according to the product modules:
    • Main Context is called 'Dev' - to distinguish from my personal tasks
    • Under 'Dev' I have a hierarchy of modules like Front End and Back End, under Front End I'll have all the flows, etc.
  • Tasks usually have tags: when entering a task, I'll usually start with a tag, like [bug], [check], [idea], etc. This helps categorizing tasks later, but not a necessity.

Entering Tasks
I usually use the Quick Entry window to enter new tasks. The great thing about it is that I can invoke at any given time, jot down an idea, bug or just something that I need to check later, and immediately get it out of my head. I usually add a task note which contains as many details as I think I'll need to understand my original idea. I also enter a context (see hereunder), but not a project - so it will remain in my inbox for review.

Entry Window

If you want to include screen shots, you can just add it as a note to the task. I find that Skitch is the perfect companion for that, since it provides simple tools for easy annotations. You don't need to save the file, either, you can just drag it from Skitch to your OmniFocus item.

Working
I use either the Planning view or the Context View for that. I find the Planning View more natural for that. At the early days of the version you can decide to focus on Enhancements and proceed to bug fixes. That's why I find the separation to projects helpful. If I have a of lower priority, which I'm not interested in working on, I just push it to one of the Waiting projects according to its' priority.

When fixing bugs, the separation to Enhancements and Bugs becomes even more helpful as I usually have the tendency to get carried away and work on enhancements instead of fixing bugs. I have one super-task inside the Bugs project which I call "Can't Reproduce". Here I drop bug that I can't reproduce for some reason. You can also have a separate task list for that.

Contexts
The organization for contexts is critical here. When entering the context for a task I try to find the one that best fits. However, if I have a task for fixing something across the system, it will have a more general context, maybe even the top 'Dev' context.

One of the major benefits of this system is the ability to work by context. Clearly, if you have a large system, you cannot keep it all "in your head". This means that, when you're starting to work on some module, weather it is on an enhancement or a bug fix, you're going to spend some time to reacquaint yourself with the code.

When working by context, you can group tasks dealing with the same module and perform them together. Conceptually, it's the basic reason for having contexts like "@home" or "@supermarket" in GTD. You want to gather all the tasks which are relevant to your current context. That's exactly why module is the same: since I'm here, let's be productive and do everything which is in the vicinity, which is in the same context.

Context View

Review
From this point forward, it's basic GTD stuff. I have a daily review of my current tasks and I set up goals in terms of due dates. I have weekly reviews for reviewing all (hopefully) my tasks, promoting, demoting and eliminating the tasks no longer relevant.

Conclusion
I presented a way for turning OmniFocus into an effective development management system. What I like the most about this system:

  • The ability to quickly get things off my mind, knowing they won't be lost.
  • Gathering work by modules, i.e. contexts.
  • The outlining ability - breaking tasks into smaller and smaller sub-tasks. I think this is the main selling point of OmniFocus specially.

Hope this works for you, too. Good luck.

May 19, 2008

Upgrading to Leopard (finally)

Toleopard Almost 8 months after its' debut, I'm finally moving forward to Leopard, Mac OS X 10.5. For those not familiar with the Mac OS X versions, it's much like upgrading from Windows XP to Vista. I bought my copy a long time ago, but I've been postponing my transition because of several reasons:

  • I want to fully backup my system before upgrading and I didn't have the means. I'm glad to say that my new 500 GB Time Capsule is making its' way to me as I write these lines.
  • Since my Mac is not a home machine, but rather a critical business machine, I decided not to be an innovator in this case, although I did feel the itch. The third update (10.5.3, think of as SP3, how long did it take in XP?) will be released shortly and I think Apple engineers had enough time to squash most of the bugs.
  • Eclipse does not officially support Leopard. This will change with Ganymede (Eclipse 3.4), which is due in the upcoming weeks.

I read a lot about Leopard. I think the main features I'm looking forward to are:

  • Time machine. I like simplicity. I need backup but I don't like caring about it.
  • The new QuickLook for browsing documents without opening them.
  • Spaces, the virtual desktop support. I usually have a number of window "sets". It will be cool to be able to switch between them.
  • The updated Preview application with the ability to rearrange PDFs and resize images.
  • DTrace which supports Java.

Regarding the above picture. It is an amazing picture, IMHO. Too bad I didn't get it when Leopard was a big issue, I could've made a few bucks. It was shot in India, of course, as you can see from the Devanagari script. I took it in Pune, at the Katraj Zoo. They do have a Leopard there. A dangerous one.

PS. The picture is for sale, contact me for details or travel to Pune and get your own. :-)
 

Apr 24, 2008

You've gotta love Platform Independence

It has been a rough week. Last week my MacBook Pro burned his logic board and then I managed to brick my PC. This week, though, I got a new mother board (with a decent Core 2 Duo processor) for my PC and I'm up and running.

Going back to Windows is annoying as expected. The worst annoyance comes from the difference  in the location of the Mac "Command" and the Windows "Ctrl", especially when it comes to copy/paste: in OS X it's Command-X and in Windows it's Ctrl-X, but the Command is placed where the Alt key is in Windows. I also miss Quicksilver and Exposé. I know, there are alternatives, but I just couldn't be bothered to install any.

On the upside, my environment is surprisingly the same. Here's some examples:

  • Eclipse - exactly the same. Right down to the plug-ins. The keyboard shortcuts are a bit different which takes some time to get used to.
  • Subversion - I just got my repository from my Mozy backup, installed the Subclipse Eclipse plug-in and that's it.
  • H2 database - completely cross platform. I didn't even bother to install it, just downloaded the generic package and unzipped it. Works beautifully and exactly the same (maybe faster?).
  • Firefox - yes, I have all my add-ons running. It's feels at home.
  • Open Office - I had to work on some documents. On the Mac I use NeoOffice. My very complex spreadsheet didn't even notice the platform change.
  • I use Cygwin which gives a Unix prompt, much like the one I get in OS X. Cool.

After some minor tweaking the application I'm developing was up and running. It was working beautifully. I was working fluently and almost forgot I switched the platform. I made some progress this week, but...

  • All my tasks are managed in OmniFocus - I couldn't find anything that can open my backup files on PC.
  • All my brainstorming and designs are in OmniOutliner format - again, I couldn't read it. Not even close.
  • I had some notes in xPad. I managed to partially recover the ones I needed.

Some after thoughts after this "fun" week:

  • The Mozy backup service allows downloading backups through a web clients. However, Mac backups are downloaded as DMG files. It took me time to open these on Windows. I finally used IsoBuster, which isn't free. I'm just wondering what's wrong with plain-old ZIP files.
  • I have backups of my sources and documents. I missed out on some important stuff - like Eclipse workspace settings (including launch configurations and what not), my test projects, etc. Luckily, I'm going to get my MacBook Pro early next week with the hard-disk intact.
  • It took me hours to install the Eclipse & Firefox with all the plug-ins and settings. This gave me a great idea - write a plug-in which synchronizes the settings and plug-ins. You could then download a distribution of Eclipse/Firefox with this plug-in and the plug-in will install your other plug-ins and do all the configuration for you. Sounds like a million dollar idea to me.

Finally, this is the price of going solo and not having an IT department behind you. I knew that when I "signed up". This helped reduce the anger and pain involved. I knew this is going to happen some day and I just said to myself: "well, today is the day".

Apr 17, 2008

I'm switching after all...

In an unfortunate turn of events, my MacBook Pro has decided to take a vacation. It's spring time, so there must be something in the air. Maybe it's the upcoming Passover, which is known to be "the festival of freedom". Anyway, it just died on me. The Apple service in Israel has room for improvement: they promise to fix it in two weeks. Two weeks. What am I going to do in the mean while?

I wasn't really shocked when it happened. My personal experience tells me that laptops, no matter how good they are, will need service every year or so. It's probably because all the miniature and delicate components cramped in this overheating space, which constantly gets rattled and banged. My previous laptop was an IBM ThinkPad T41. It was a good and sturdy machine, but I did visit the IT department every now and then. The advantage of working in a big company is that I got a replacement laptop (with my hard drive) whenever such a mishap occurred, so I could keep on working. Now, I'm decommissioned.

I'm making the best of this time to finally test my product on Windows. It took me a few hours to restore my environment. I backed up my source repository, but not much else, which means I have to restore my workspace. I had to download all the relevant products (Eclipse, Spring, H2, ...) and install them. I also had to work around issues of platform compatibility, mainly resource locations. However, once all this was done, I was up and running.

I appreciate the platform compatibility, but It's not perfect. The Eclipse UI is based on SWT. SWT is much better looking than Swing since it is wrapping native UI controls. Which means it may behave a bit different under each platform. It is cross-platform, but it is far from being bug free and requires the developer to test and debug the product on all platforms. My product is running, but not without glitches. Well, I have the upcoming two weeks to get rid of those. And maybe I'll get a little freedom myself.

Mar 27, 2008

Imagine a life without swap...

This week, I upgraded my MacBook Pro to 4 GB RAM. Two main reasons for doing that. First, I need to work on Windows with VMWare Fusion and I find that it could be painful with 2 GB. It works, but it does slow down the machine. The second reason was the price. Memory became incredibly cheep. The memory itself was about $110 (bought on crucial.com, in Israel you can get it directly through crg.co.il). Buying a $2500 laptop and skimping on a $100 sounds plain stupid.

I got the memory installed and started working. I had 2-3 king-sized instances of Eclipse running along with all my other applications including Firefox with over 20 tabs, Mail, Calendar, Skype, Adium, OmniFocus, OmniOutliner, etc. I had VMWare Fusion running with Windows Vista. I had 0 "Page Outs". Again, 0. Nada. No swap. The machine was running smoother than ever. Those of you who don't understand what the big fuss is about, are either not familiar with the term "Page Outs" or not using Windows. On Windows, no matter how much memory you have, you're going to swap and it will slow you down.

I just wish I will never have to go back.

Mar 02, 2008

Abusing the term "critical"

It's no secret that I love apple products. One of the great things about them is that using them is pure joy. If you laid your hands on an iPod, iPhone ar a Mac, you know what I mean. Steve Jobs defines Apple as a software company. It's true that they sell hardware, but only to support their great software.

However, even the best has its' worse moments. I have an Apple Wireless Mighty Mouse. I find it to be a good mouse. I know that many people don't agree, but I enjoy using it. There is one annoyance, though. Once the mouse batteries reach 30% two things happen: the blue-tooth icon in the menu bar starts blinking and I start getting the following frightening messages every time the machine wakes up (and even more often).

Lowbattery

The blinking icon is the worse. It is incredibly distracting. Everybody knows that blinking text and icons is a big no-no in user interface design. I would prefer a different color, perhaps. You can remove it, but it will come back to haunt me after a short while. Now, just to make it clear: 30% batteries means you have about 2 weeks of usage left with the simple batteries that I use. Get better batteries, and you'll be using it for a month with that blinking icon. Besides, look at the message above: "please replaces the batteries as soon as possible". Why?  You still have 30% left. It's not a very "green" thing to do. Just a waste of energy and money.

Come on. There's nothing critical here. I have a stock of spare batteries at my disposal. Besides, even if I don't, I can still use the track-pad. Just for comparison, when the laptop battery is at critical level, there's nothing blinking, the battery icon in the menu-bar just changes color. You get one dialog box, 10 minutes before it dies.

I'm still using Tiger (Mac OS X 10.4) and I hope this has changed in Leopard. I should be migrating soon.

Feb 18, 2008

Apple Remote as a presentation device

I'm back from a long trip to India. It was a great trip. The weather is perfect in Pune this time of year. I have many updates to my Pune tips page. I'm still working on it and it will be up soon.

It was the first time I gave the presentation using my Apple Remote. Until now, I used the Logitech Cordless Presenter. The Logitech is an incredible device and it left some big shoes to fill. Here's my impressions of the Apple Remote as a presentation device.

The Good

  • Size & design - it is very small and slick. Feels very good in your hand and fits in the smallest pocket. This is a great plus. You want to pocket the device so you can release your hands to draw on the board. If you have to return to your desk just to get the device and flip the slide, you're missing the point.
  • Price - it's included with every MacBook and MacBook Pro (not included with the MacBook Air). Even if you lose it, it's not $19 replace (at the Apple Store). Than less than 25% the price of a Logitech Presenter.
  • Simple to use - buttons are placed intuitively so you don't have to look at it when you operate.

The Bad

  • IR. It's just not working well - The freedom of the true wireless presenter was liberating, especially for presenters who roam around the class, like myself. The IR works only with a clear line of sight. Left your white-board marker too close to the IR sensor of your laptop?  it won't work. Moreover, you have to take it out of your pocket, point it at your laptop and click. It takes too much attention. Eventually, I lost my confidence in the remote.
  • No laser pointer - I miss it. I can walk with two devices in my pockets, but it's a hassle. I got over it, though.
  • Missing buttons - the one button I really miss is the 'B' for making the screen go blank. I do that when I want to discuss a topic and have full attention. You can customize the settings with some third-party software. I tried iRed Lite, which is free. Unfortunately, it hung up on me on a daily basis. Leaving me with no remote at all each time it did.

The Logitech has more features, but not all of them were critical for me. The timer is a cool gimmick. I've used it and it's great. The only drawback is that I forgot to set it on many occasions. I use the Keynote Presenter Display to tell how much time passed since the beginning.

My bottom line: I liked the Logitech a lot better. It is close to perfection, in my opinion. The Apple Remote is just not built for presentations. It demands too much attention and disrupts the natural flow of the presentation. However, for me, doing only one training per quarter, the expense of the Logitech is not justified. Besides, training a class of students is different from a short keynote to a "hostile audience". I would go for the Logitech in the later case. In any event, be careful with iRed Lite.

One final thought: the Apple Remote got an unattractive yellowish hue. Reminds me of complaints I heard from white MacBook owners. Maybe I'll use some toothpaste to clean it.

Jan 30, 2008

Another training in India

I'm traveling to India again, to give a training in Pune. If any of my colleagues or former students is reading this, I'll be happy to meet. I'll be there for about 2 weeks this time. It's a great time to visit India: it's not too hot and it's not raining (unlike in Israel, at the moment). Last time I was there, I almost drowned in the streets of Mumbai.

Of course, I'll be updating my Pune Tips page while I'm there.

On the technical side, I'm using my MacBook Pro to do the presentations. The original presentations are in PowerPoint format. Converting them to Keynote worked very well. I had just minor issues which I fixed while going over the slides, which I had to do anyway. I also have Windows running as a backup, just in case.

Last time I was using the Logitech Cordless Presenter. It's a great device. You can tell that the people who designed it are giving many presentations. It's hasn't changed in years, just to prove how close to perfection this device is. I don't have it anymore, so I'll be using my Apple Remote instead. On the plus side, it is smaller. However, it works by infrared, so you have to point it at the machine and have a clear line of sight. There's also a useful piece of free software called iRed Lite which allows you to customize the remote for your needs. I'll write about my experience with the Apple Remote when I'm done.

Jan 16, 2008

Following the Macworld 08 Keynote

It seems that Steve Jobs' keynotes are becoming increasingly popular. I wouldn't be surprised if next year we will see a live broadcast of the event. I followed the keynote in several live blogs. Most of them couldn't accommodate the load and broke down at some point.

It was a mixed feeling. People were expecting more. Most of the people I interact with are very technologically oriented. For them, the introduction of a wireless router with integrated NAS (Time Capsule) or rental of movies from an online store (iTunes) using a digital media receiver (Apple TV) seem like yesterday's news. They're correct, nothing new from the technological point of view.

But there is something new here. This time, Apple is doing it. This means it will be simpler and work smoother. This makes the technology accessible by the majority of the population. When I'm training developers writing web applications, I have a motto: "when you're doing the UI, think about your old aunt sitting at home and trying to use it". It's hard for us techies to see that. Great technology is worthless without the correct packaging.

The new MacBook Air seems like Apple's attempt at entering the corporate world. It was missing. I'm thinking about executives who roam around the office all day, from one meeting to another. It is exactly what they need: it's light, it's ideal for e-mail and web surfing, it has a very long battery life. Just perfect. And the icing: it will make the correct impression on your customers, competitors, employees, colleagues. Again, the correct packaging.

The one thing missing is a VGA connector for presentations. This is essential in the corporate world. Even if you arrive at the meeting and you were not planning to do a presentation, you may still want to connect your laptop to a projector and bring up a document. I haven't seen a non-Apple laptop without a VGA connector, but you won't find it in any of the Apple laptops. They moved on to a digital connector and you need to use an adapter (included). It's a real annoyance for those who like to travel very light. Just pick up your laptop and go to the next meeting. Don't think about other things you need to take.

I'm glad that my beloved MacBook Pro did not become obsolete 6 months after I bought it. It's still one of the best laptops out there. I'm just wondering:

  • The current MacBook Pro touch-pad already supports multi-touch. For example, scrolling is done with two fingers. Will it support the new "gestures" interface by a software upgrade?
  • Will Time Machine be able to work over the air even without the new Time Capsule?  I would really prefer having a router and hard disk combination.

Many people are asking these questions. I'm guessing I'll have my answers soon enough.

Dec 17, 2007

Pulse for Mac: first impressions

Genutic's Pulse is a new product aimed at making Eclipse installation simpler. The original Eclipse distributions were notoriously complex, which created a fertile ground for 3rd party distributions. Pulse was released a couple of months ago, but was out of scope for me, as a Mac user. Now, a Mac version is out and it's a chance to see how it works.

Pulse In General
Eclipse distributions improved over the years. It's very easy to download and install Eclipse from eclipse.org. It becomes more complex once you start customizing your Eclipse with plug-ins. I have many plug-ins and it would take me up to several hours of attended installation to be up and running in case I will need to reinstall my environment. The idea of having a simple and automatic process that does it for me sounds great.

However, that's not exactly what happens with Pulse. In Pulse you're limited to a set of plug-ins which were determined by the Pulse team. Pulse becomes a de-facto distribution channel for downloading and buying plug-ins. It's like iTunes for Eclipse plug-ins. iTunes is slick, cool and, best of all, free to download. But at what cost?  At the cost of creating a new monopoly that controls the music industry. That's not something we want around the Eclipse community.

Don't get me wrong, I don't think that's going to happen. The music market is very different from the Plug-ins market. However, it is my opinion that the catalog should be open to embrace whatever plug-in I desire. Otherwise, there are other solutions on the market to fill that purpose like Tikal Update Manager.

Pulse for Mac
The main download is a 2.1 MB disk image (DMG). It holds a Pulse.app file which is actually an installer. In most Mac DMGs you either get an app, which you drag into the applications folder, or an installer package, so this is unorthodox to say the least. After launching the application, it will start downloading and installing Pulse into the applications folder. The installer sets up a folder called "Pulse" inside your applications folder and installs the Pulse launcher inside the folder. The launcher is 2.1 MB, so I don't see why I had to wait for another download.

The installer is OK. It's not the standard Mac installer, but it looks fine. You can choose a standard profile or go to the full "Pulse Explorer" where you can see available profiles and build your own. The UI is based on Eclipse RCP. It is slow, since it incrementally downloads information. It is also a bit buggy and erratic, but keep in mind that this is still a beta version.

Once you finished building your profile, you can now execute it. Pulse will download and install the necessary files. The download is fast with up to 8 simultaneous connections. Eventually, it launches Eclipse and you're good to do. All the plug-ins are configured correctly and you can start with the actual work immediately. At the end of the day, Pulse delivers and saves you the time.

The Pulse plug-in stays inside your environment, so you can update and modify your configuration at any time. Checking for updates is very fast compared to the Eclipse built-in update manager. When adding and removing features, the best approach is to modify the profile and restart the workbench. The changes are done upon launch. It took me some time to figure this out, though.

Some little annoyances I came across:

  • After the first setup of my Pulse profile, a launcher was not created. I had to launch Pulse again and then it was created.
  • It executed Eclipse by executing Java, which is different than running the Eclipse.app package. On the Mac, this means you get "Java" on your dock (it does show the Eclipse icon). However, you cannot "dock" it (keep in dock), since you'll be docking "Java" and not "Eclipse". You can put the Pulse Launcher on the dock, but then it will launch Java and quit. It's counterintuitive to the native Mac environment and the original Eclipse distribution behaves better.
  • It adds a "Pulse" menu, which just clutters the menu bar. It could've been added to the help menu, where the native update manager sits. Luckily, you can just turn it off by customizing the perspective.

Summary
I'm not the target audience for Pulse. I'm an individual developer and I like to be able to pick my plug-ins from all over the net. Is it for large teams?  Well, when I was working with a large team of Eclipse developers we had a rather simple way of "distribution" - copying files from the server. This is one of the major advantages of Eclipse: you can install it by a simple copy operation. Another issue is that most large corporates have their own, in house developed, plug-ins. You cannot add these to the catalog. It can be a good start for a novice developer, making the first steps in the Eclipse world. However, in this case, the Eclipse distributions are mature enough to use directly.

Bottom line: other than a few glitches, Pulse is a good product that has a potential of saving time. I just wish Genuitec would be smart enough to open it up. This would give it a broader appeal.