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.

Jun 24, 2008

Eclipse 3.4 Hidden Treasures

Eclipse 3.4 "Ganymede" will be released in the upcoming days. I've been working with the RC builds for some time now and I like it. Eclipse 3.4 is a better IDE and a more robust platform than its' predecessor. In this post, I've gathered some new features which I like and may be "off the beaten path".

Rich Hovers
This is not a hidden feature, but I had to mention it. The Java Development Tools include some interesting enhancements in this release. The greatest innovation is the Java Editor Breadcrumbs. It looks cool, but, after using it for some time, I didn't find it very useful. The Rich Hovers, on the other hand,  are very useful. I especially like the Javadoc hovers. There's an emphasis in making the documentation accessible and that's a very positive improvement.
Javadoc Rich Hover
Another useful rich hover is the Java debug hover which makes it easier to view the contents of compound objects without having to copy them to the expressions view. You can use the preferences to determine whether the behavior of the "enriched hovers". Debug Rich Hover

The Dropins Folder
If you paid attention to the hype around Eclipse 3.4, you've heard the term P2. In simple terms, it's a new way of deploying Eclipse applications and plug-ins. For the average Eclipse user, the most noticeable change will be a new "Software Update" dialog which replaces the previous "Find & Install..." and "Manage Configuration" duo. It's a much better UI and it's a promising future to Eclipse updates.

Part of this change is "the dropins folder". This folder is located in your Eclipse distribution folder and it is initially empty. In this folder you can manually drop features and plugins which will be installed once you restart Eclipse. No more restarting with "-clean" option. There's also an option of using this folder to link to a central location of plugins, which can be shared among several Eclipse installations. I'll write a dedicated post about it in the future.

Templates View
Templates View One of the late features to make it into the Eclipse 3.4. Templates can be inserted while coding, usually using the content assistant. Adding and editing templates was possible before. In Eclipse 3.4 there's a new view which shows all possible templates and makes it easier to add new templates. There are also some new parameters which can be used when composing template. Templates are already an important feature. The templates view makes this feature even more user friendly, especially for customizations.
The view is found in the views under "General" - "Templates". Look in the Eclipse help for more details on the template variables.


Format Only Edited Lines
Enabling Format Edited Lines Only The "Save Actions" is one of my favorite features in Eclipse 3.3 (read my original post about it). In Eclipse 3.4 there are several improvements including some new formatting features. One of the complaints against the Save Actions feature was that it will change the entire file, thus, making it very hard to compare to previous revisions when using a source control. It can become very annoying if some team members use it and some don't.

For that purpose there's a new feature which allows changing just the edited lines, keeping the rest of the file intact. I highly recommend using the Save Actions feature. It is inactive by default, so go ahead and activate it.

Outline View Drag & Drop
This is a true hidden treasure. You can now easily rearrange your source code by dragging and dropping elements in the outline view. AFAIK, this currently works for Java and for XMLs. To use it, make sure the "sort" option is not selected and just drag & drop. Outline View Java Outline View XML

Plug-in Spy
Plugin Spy There are many new features in the Plug-in Development Environment (PDE) project which makes writing and deploying Eclipse plugins much easier. The Plug-in spy is a true hidden gem in this stack. One of the best ways to learn how to write plug-ins is to read the code of existing plug-ins. Naturally, the organic Eclipse plug-ins make great candidates. You see a view and you want to create something similar. The question is: how do you find the code behind that view?

This is where the plug-in spy comes into play. Invoke the plug-in spy and you'll get all the information that you need to start exploring the existing code. The plug-in spy can be invoked using the keyboard shortcut Shit+Option+F1 (Alt+Shift+F1 on Windows). It works on views and in dialogs as well, including the wizard and preferences dialog.

Error Log View
Error Log View The error log view is not new. It shows platform errors and informational messages. It was greatly improved in Eclipse 3.4, with a search box and a grouping feature. It's all good, but, there's one cool feature tucked away in the toolbar. You can quickly use the log view to view the logs of workspaces you launched when running or debugging plug-ins. It shows all the defined launch configuration. Each launch configuration is associated with a runtime workspace. The log of this workspace will be shown when that configuration is selected.

Export/Import Launch Configurations

Launch configurations are an important part of the workspace. Every once in a while I start over and create a new workspace after having too much garbage in the old one. Importing the projects is a breeze. It's the configuration that takes time. Most of the configuration can be exported and imported and now the launch configuration are included. Since creating launch configurations can be time consuming, this is a much needed feature.

Start from the "File" menu and select the "Export" feature. Select the "Launch Configurations" and in the next dialog box select the configurations to export. The result is a folder of XMLs which can be later imported to any workspace.

Launch Configuration Export

God is in the Details
The features I mentioned above are mostly major feature. Eclipse 3.4 also includes an assortment of small improvements for making your life easier. The content assistant, for example, is improved, and it works in cases where it didn't before. Argument name guessing is much improved and can now also guess methods which may be called to produce the arguments (e.g. getters). There are many new feature you'll discover once you start using the new version. "Ganymede" is a great release for the Eclipse platform.

Jun 22, 2008

Silent June

This is my first post for June and June is almost over. I had a lot to say, so it's not that I was out of ideas for posts. The main reason is that I'm working hard on pushing a beta version of my product out the door. I'm ironing out the final bugs and soon I'll be ready to start a private beta. I'm doing my best to start testing it publicly as fast as I can. 

I have a lot on my mind these days. For me, coding was the easy part. The road ahead is going to be the real challenge. It is suffice to say that this phase will only be complete once I'll get the first payment for my launched product. Seems like a long way to go. I'll share some of these challenges in my blog.

On a different note, we're now officially in the summer. Spring brought rejuvenation to my workspace: I upgraded to Leopard, switched to Firefox 3 and started developing using Eclipse 3.4, which is still in RC status. I have a lot to say on all of these products and I'll be blogging about it soon. However, if you're reading this using Firefox 2 than just stop right there and download Firefox 3 now. I'll just say it feels like I bought an extra gigabyte of RAM. 

P.S. If you're in Israel and interested in seeing my product in action, drop me a line and we can meet for a one-on-one demonstration. I'll be happy to get some first hand feedback. 

May 29, 2008

Up to my neck in SWT GUI

Last week, I discovered, to my dismay, that I need to write my own list widgets instead of using the built-in SWT widgets. The breaking point occurred when I found that I cannot have lists with variable height rows. I decided that this is something I cannot accept in my UI. I'm a strong believer in usability.

One week later, I'm a smarter man. Building my own list was nothing short of an eye-opening experience with SWT programming. Up until now I was on the SWT expressway. Sure, it will get you from A to B in the quickest way. However, you'll be missing out on everything around you. If you want to get to know a place, you need to take the B-roads, visit the small villages and... well, metaphor exhausted. 

Looking back at the journey, here's some thoughts:

  • SWT is very complex, especially if you don't have previous experience with similar widget frameworks like Swing, AWT, etc.
  • SWT is poorly documented, considering its' complexity and magnitude. Quality information on the net is scarce. I found myself digging into the sources of SWT again and again. True, the public interfaces and methods have good Javadoc. However, the rest of the code is poorly document. It sure make things harder.
  • From the reasons above, I found that it is much quicker to take a trial and error approach than to fully understand what's going on. My "SWT enlightenment" came when I decided to ditch that approach and really understand what's going on.

Bottom line: my UI works exactly as I wanted. I took advantage of the effort and added a couple more features which I couldn't with the oh-so-limited list widgets.

May 22, 2008

The Platform Ends Here

Dead-end I apologize for the somewhat grim title. I just couldn't help it. I'm working on my Eclipse plug-in, deep into shaping my UI. Working with SWT is fine, I don't have many complaints. Well, until I reached the border. SWT controls have many limitations. It's natural for a framework to have limitations. However, SWT is a framework suited for running on multiple platforms, which means it's the lowest common denominator.

I reached one of these borders this week - I found out that I cannot have a list with variable row height. All rows must be of the same height. Since I want a list with fixed width and word wrap and this is simply impossible without having huge gaps between the lines (each line will have the height of the tallest line). It's not the first time I come across such a limitation. For example, a few weeks ago I found that I cannot have a list without scrollbars. Yep. Even if I don't need them, they will always be there.

Each time I encounter such a block, it usually takes me time just to understand that this is a platform limitation. These limitations are tucked inside the Eclipse Bugzilla or in the Eclipse discussion forums (both not indexed by Google regular search, by the way). It is very time consuming.

My main option now is to simply create a list myself by using more basic controls. This means I'm going to have to write a lot of code which is already written inside the framework. That's mostly because the framework is very hard to extend. Most of the classes implementing the controls are specifically marked as "do not extend". That's mainly because of the implementation which is platform specific. I can understand the rationale.

What I can't understand is JFace. JFace is a neat little framework that works on top and with SWT to provide common tasks like working with lists, trees, etc. There are many important features there. However, this framework simply cannot be extended. It is fixed to the SWT widgets, which cannot be extended, so extending it is out of the question. Needless to say, there is no documentation what so ever on the topic.

Designing a reusable framework is a delicate task. It is far more complex than designing a framework which is to be used as is, without extensions. A reusable framework is measured by the amount of code you have to rewrite. In the case of JFace, it simply failed.

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. :-)
 

May 13, 2008

There's more than one way to start

I'm an Israeli and I live in Tel Aviv. Israel has a very vibrant hi-tech community and startups are a huge industry here with many success stories. Nevertheless, Israel is a very small country. Considering that most of the hi-tech is located around the center of the country, the relevant area is much smaller than, say, the San Francisco Bay Area (for comparison, the Bay Area is about 7000 sq miles and Israel is about 8000 sq miles, more than half is a desert).

When it comes to the community of entrepreneurs and investors in Israel, it actually is a very "small world". Personally, I know several people who were part of successful startups that did commendable exists. People feel that, if they had some conversations with people who made it and heard a lecture from Yossi Vardi (to whom I have the utmost respect) they know what needs to be done. It seems that we've formed some acceptable formula which one should follow in order to succeed. When people meet me and I tell them about my startup they immediately ask how much money did I raise and if I have a patent. There seem to be a consensus around the road to success.

That's why I enjoyed the presentation given by David Heinemeier Hansson (DHH) from 37Signals in the Y-Combinator 2008 Startup School.  I recommend this presentation to anyone in this business. I took some notes, which I included hereunder. It fits perfectly with the way I chose, the way of the MicroISV. Maybe I won't make hundreds of millions of dollars, but I will be working for myself and I'll enjoy what I'm doing while making more than enough money in the process, or at least having a better shot at making money.

I find the presentation very inspiring and entertaining. Highly recommended. I hope that me taking notes won't discourage you from watching it anyway. You'll probably get more insights there.

My notes:

  • KISS business model - charge money for your service.
  • This is still hard, but the odds are better than trying to build the next facebook/YouTube. We hear about these exits around us and think - "this can happen to me", much like the fear of a plane crash which is rare...
  • Million dollars is still a lot of money. It's not that hard to make it and the odds are much better than making a billion dollars.
  • For that, you don't need to solve the problems of the world, you can just "open a nice Italian restaurant". Provide a service which does one thing a little better.
  • It's hard to sell services to consumers (example from Backpack). Consumers don't easily open their wallet when it comes to internet services (especially with all the freebies around).
  • The  "Fortune 5,000,000":
    • Essentially, the market segment of small businesses, even 1-5 people. This is the large space between the consumer and the "tiny enterprises".
    • This is an untapped market - many problems waiting to be solved.
    • It's much easier to sell here - people evaluate the product, like it and buy it. No huge investment in red tape, sales reps, etc.
    • Your obligation to the customers paying small amounts is far less binding than to huge customers paying millions (it they call, you'd better answer and do what they say).
    • You can read more about it in this 37Signals post.
  • The purpose is to enjoy your life...
    • There's a great advantage to not making your company huge (by taking VC money): you can call your own shots.
    • You can create a company which you'll enjoy working at and that's key.
    • Don't plan on working hard for two years and selling out for big bucks and leave the good life. It's not clear how good your life will be.
    • Plan to create a workplace you'd like to work in for the next 20 years.
  • You can be a small successful business and enjoy your work, like a small Italian restaurants. Don't use Facebook as your role model.
  • Crashes the term "viral marketing". Just providing a great service can create a "viral" effect, even if you charge money for it. It's just a new hype over something which has been around for ages. It also contradicts the notion that your have to launch fast to create a "viral effect".
  • Having less time is a huge benefit to most people. If you had just 5 hours a day for working you'll focus your time a lot better. You cannot be productive for 14 hours a day.
  • Most companies are not built over night. Don't be in a hurry.
  • It's never gone get less work. The practices your choose to adopt now will stick with you.
  • If you're charging money from your customers, scaling means more users. So scaling problems are a good thing.

Apr 30, 2008

H2 Database - Performance Tracing

I first wrote about the H2 Database last August. I've been using it since and so far I'm very happy with it. The article I wrote is still getting hits from people searching for information on H2 (here's a fun fact, if you search Google for H2, you'll get the H2 Database before the H2 Hummer) . I'm now working on improving the performance of my application. Like everything else in H2, it is very simple to trace the database performance. This article demonstrates several techniques.

Note: the tools shown here are relevant to H2 starting from version 1.0.70. Since H2 is still work in progress, this may change in the future. I'll do my best to keep this article up to date. I also included some useful links to the original H2 Tutorial.

Generating Trace Files

H2 can output trace files which include the performance information. These trace files contain all the commands executed and their execution details. In the examples hereunder, I will use a database called mydatabase.

First, you need to specify the trace level.  You do this by setting a property called TRACE_LEVEL_FILE. The best way is to simply specify this upon connection to the database. This is done by adding ";TRACE_LEVEL_FILE=n", where n is the trace level, at the end of your database connection string.  The trace levels are: 0=off, 1=error, 2=info, 3=debug. Use trace level 2 or 3 in order to get the performance information. For example:

jdbc:h2:file:~/mydatabase;TRACE_LEVEL_FILE=3

From that point, H2 will start writing trace logs to the directory where the database file is located. The trace file is called mydatabase.trace.db. Once the file reaches the maximum size, it is rotated to mydatabase.trace.db.old (the old one is erased). You can set the size of the log file by setting TRACE_MAX_FILE_SIZE. My connection URL, looks like this:

jdbc:h2:file:~/mydatabase;TRACE_LEVEL_FILE=3;TRACE_MAX_FILE_SIZE=20

H2 is very tolerant regarding trace files. You can rename the file and it will create a new one instead. You can set the trace level at any given time, not only upon connection. You can use the H2 console for that, just connect to your database instance and execute the command:

SET TRACE_LEVEL_FILE=3

Using the Trace Files

SQL commands in the trace files will have the following format:

04-30 11:47:14 jdbc[10]:
/*SQL l:61 #:14 t:1*/SELECT * FROM EMPLOYEES WHERE EMP_ID = ? {1: 243};

The first line shows the date and time. The second line shows the following information:

  1. l:nn - The length of the SQL. Will not appear if there are no parameters (see below).
  2. #:nn - The number of rows returned or affected. Will not appear if no rows were found or affected.
  3. t:nn - The execution time in milliseconds. Will not appear if the time was less than 1 ms.
  4. The SQL command itself with all the parameters, in case you're using a prepared statement. You can simply copy the SQL with the parameters and execute it through the H2 Console, which is very handy for debugging.

The trace file is your first stop when checking your performance. You can check every single command and see how it performs.

SQL Command Statistics

H2 includes several tool, among them a utility that generates statistics from a trace file. The tool is called ConvertTraceFile. The tool takes a trace file as input and has two outputs: a Java class (not relevant) and an SQL script which contains all the SQL commands and the execution statistics.

The ConvertTraceFile is invoked in the following manner:

java -cp h2.jar org.h2.tools.ConvertTraceFile -traceFile mydatabase.trace.db

You should specify full paths for h2.jar and your trace file if necessary. Alternatively, make sure h2.jar is in your CLASSPATH. The SQL script will be in a file called mydatabase.sql. You may also specify a different file name (use -? to see all the available options). 

The SQL script file holds all the SQL commands which were executed when the trace file was active. At the end of the file, you will find the command statistics section which has the following form:

-- self accu time count result sql
-- 89% 89% 3309    12     234 SELECT * FROM EMPLOYEES WHERE EMP_ID = ?;
--   5% 94% 192 1015   1015 UPDATE EMPLOYEES SET NAME=?, DEPT=?, MANAGER=? WHERE EMP_ID=?;
--   2% 97%   87   421    421 UPDATE DEPARTMENTS SET NAME=? WHERE ID=?;
--   0% 97%   26 8123   8123 CALL AUTOCOMMIT();
--   0% 98%   16    18    736 SELECT * FROM DEPARTMENTS WHERE ID = ?;
--   0% 98%   14   424    740 SELECT COUNT(*) FROM DEPARTMENTS;

The columns are:

  1. Self - The percentage of the given command's time from the total time.
  2. Accu - The percentage of the accumulated time from the total time. The accumulated time is the time of the commands listed so far.
  3. Time - The total time of the command executions in milliseconds.
  4. Count - the number of times the command was executed.
  5. Result - the total number of fetched or affected rows.
  6. SQL - the command itself

Needless to say, the statistics you get can easily be imported to OpenOffice Calc or Micsoroft Excel for further manipulation (you can use a fixed column import).

Conclusion

I like simplicity and this is one of the main reasons I enjoy using H2. The above tools enable you to get statistics and detailed information on SQL queries and commands executed in H2.

Good luck with your performance tuning.

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 21, 2008

Off the Grid

Last week, my MacBook Pro died on me, as I wrote in my previous post. I started working on my PC, which is a very old and slow machine (a Pentium 4).  After a couple of hours I realized that it won't  work without upgrading my machine's memory. However, I couldn't upgrade the memory since my machine would not accept 1 GB memory modules. They told me it has something to do with the BIOS, which needs an update. So, I got the BIOS updating software, updated my BIOS and, as you might expect, ended up bricking my PC. Later that day I got a word from the lab that my MacBook Pro has toasted its' logic board and they're sending in a new one (which will take time).

Two machines. Two totaled logic boards. Two days. I'm off the grid.

I have no problem being disconnected from the net. I usually do that when I take a vacation: no internet, no e-mail, minimal phone calls. However, sitting at home with no computer was a strange feeling. Luckily, I could browse my Gmail from my 3G cell phone, although this wasn't very satisfying. Now, I got a spare machine from my brother and I'll do my best not to trash it. I should be getting my PC back today with a revamped processor.

Happy Passover everybody.