That Subscription Did Pay Off…

Mind Tools logo

In January I decided to that I need to work on my time management and organization skills.  Especially with the amount of different projects and events happening in and around my life, I need to find scraps of time here and there.  Not to mention I need to remember tasks, people, the locations of miscellanous small items, and other important bits of data.  In the past one of my friends, Lina–she is who helped get me on track in university–pointed out the Mind Tools website as a great resource.  So last month, lured by the prospect of free e-books I subscribed to the Mind Tools website.  Even with the little time I have to read all the Mind Tools resources, I still found that the subscription definitely paid off.  Now I probably do not need the more managerial material.  But the time management, communication and project management resources already proved useful.  Heck I did not know that I have started implementing the concept of kaizen and reducing mud.  I highly recommend the Mind Tools site as a valuable organizational and time management skills training resource.

A Review of January 2009

1day.pngEvery so often I like to look back and review my achievements.  In the past I did it so rarely, that I just looked my current work and the few things I remembered made it look like I achieved little throughout the year.  So I’ll try to do a quick review for January here.

In writing, I started to edit a bit of chapter 1 of my book.   I planned on writing substantially more, but this didn’t occur as I didn’t work on my novel systematically.  However I did manage to restart more or less daily updates to my blog.  Now with the move to the new blogging application, I feel more productive and more in control.  I still need to clean up and improve my blog since my migration from Blogger to WordPress.  This next month, I plan on adding regular writing sessions for my novel.

In computing, did manage to purchase a new personal domain.  I set up this WordPress blog on this too.  I tried to setup clean URLs on my Drupal sites.  But for all my attempts, I could not setup my Drupal multi-site as planned.  Aside from a bit of maintenance, I still need to organize a good chunk of my files on my desktop at home.  The Internet Tablet still needs to shine in terms of really boosting my productivity.  For the time being, I use it more as a MSN client on the run and as a podcast-capable MP3 player.  This month, I will need to set some time aside and add GTD task management as something I can do on my tablet.  Also I plan on spending time organizing my desktop and digitized life.

I won’t get into my personal achievements.  However I will mention that I am keeping up with regular communication with old good friends and some new ones.  And I try to respond in reasonable amount of time.  I still need to get a cellphone though.  And the wintery weather prevented me from doing any driving.  But I am keeping up with my resolution to eat my own cooked food and being ready for work consistently.  And my finances are in check and all accounted for.  This February, I need to keep at it, better controlling my stress levels and making sure I continue growing.

On the professional side, I haven’t achieved my goals of learning Qt, GTK, C++ or maemo development.  Did however reviewed and strengthened my UML diagramming skills.  I am becoming a better, more visibly calm and upbeat consultant.  I still need learn to exude more calmness and in-control feeling.  I am managing to avoid most potential disasters at work.  So this month, I plan on brushing up and acquiring new programming skills.

Overall, I would consider January a month of personal growth.  I can’t say I achieved 1/12 of everything I want to achieve this year.  But I managed to get a sound base to start expanding upon.  Some major projects still need to get off the ground.  I will postpone and spend less time on a certain project, since it might not provide enough reward for the amount of effort put in.  I still need to clear off the majority of minor tasks from earlier months.  But on the whole I find myself a better, more approachable person and if nothing drastic happens in the next month, I should be able to continue on moving forward.

Dear Lazyweb: How Do You Deal with Blockers?

After reading a number of post on the Ubuntu and KDE planets, addressed to Dear Lazyweb.  I’m not going to be lazy and not do research on this topic.  Rather I am interested in hearing how people deal with certain problems.  So I’m going to turn the blog over to you guys and gal, and get your ideas.  Please prove to me that this crowdsourcing of ideas idea really works. :)

So dear Lazyweb,
How do deal with blockers?  Blockers being larger/enormous tasks, that prevent your project going forward organically.

Thanks in advance.

Time Management Resolutions for 2009

The fifth day into the year, and I can already foresee a number of huge changes in my life.  As I mentioned before the transition from thinking like a university student to a fully self-sufficient adult is a pretty huge one.  One of the things that I foresee is a glorious lack of time.  Essentially, I took upon a large number of personal projects and I might take on a few more this coming year.  And every task and every idea needs time to realize and complete.  So I decided upon a few New Years resolutions:

  1. Keep my tasks and projects organized.  I’ve worked out that I will keep to the core concept of the GTD methodology.  All that I need is some central, efficient manner to organize my evergrowing TODO lists.  At the moment I am experimenting with a number of different applications, to avoid the dreaded list on a piece of tattered paper syndrome.
  2. Handle communications efficiently.  I am already using the Inbox Zero method.  And for the most part I can keep track of everything and handle e-mails quickly.  My personal e-mail inbox is usually has zero messages.  My work inbox is a bit more chaotic, but I’ve gotten it down to zero in the past.  Nowadays no more than 30 e-mails stay in my inbox.
  3. Avoid wallowing and putting things off.  OK, this is a weak spot in my case.  There are days that I don’t feel like doing anything.  Unfortunately, while there are times my life feels like on hold, the world doesn’t stop.  So in essence I put off all kinds of work and only more piles on.  And it gets to the point that I get depressed just by looking at all the things I have to do.  Instead this year, if I feel like I am in rutt, I will take some menial tasks.  That way I keep my mind off whatever I am thinking about and still get stuff done.
  4. Do it now, not later.  One of the worst things to litter my tasks are the little day-to-day incidents.  The little errands, the little messes of life so to say can generate a disproportionate amount of work.  And it adds up.  Quickly.  So I have to stop procrastinating on these little tasks.  I think it is more effective to take all these little nuisance tasks, aggregate them together and do them all at once.  That way I can avoid task switching-even thought my task log method helps with that a bit-and clear these trivial things before they get out of hand.
  5. Keep taking bits off the big projects.  I have a number of large projects.  Some involving writing, some involving coding, etc.  Now I know that I can’t just sit down and finish a large part of a project.  My schedule and life in general won’t allow for that.  So instead I plan on taking bits and pieces off each my big projects each day.  And I’ll incorporated those bits into my daily tasks.  That way my projects will go forward a bit every day.

Now I should be able to accomplish all these resolutions without too much trouble.  My biggest concern is to make sure my tendency of inactivity doesn’t get in the way this year.  These resolutions should not only reduce the size of my TODO list.  But they should also remove a great deal of stress.  And the sense of accomplishment will definitely shine through on days where all I want to do is sing the blues.  So wish my luck and may you too have productive and joyful year ahead.

P.S.: I hope that by writing these blogs on time management will help someone.  Or at least inspire someone to achieve more in their life.  If they help you, please give me a shout on the comments section.  I love to hear from you and read your comments.

Perfection in Your Process

I have a serious character flaw. I’m a perfectionist. Nothing kills creativity like trying to get everything right the first time around. One of the most important skills I learned in professional writing: is create first, edit to perfection later. Give yourself leeway and freedom to make mistakes and to experiment.

There is a second part to the lesson though. You must treat and follow your process as closely one should practise religion. In writing, a process gives you the structure to write faster, better and with more freedom. In programming and developing applications, rigour in sticking with your process is essential for the project’s health and your sanity.

Processes like planning, documenting, testing, deploying and fixing bugs should be well worked out in the developer’s mind. Being drilled, the developer can control her environment better. In a controlled environment, there are no surprises or unexpected issues. Everything works with the precision, logic and accuracy of a Swiss watch. With a well documented and followed process, you can measure efficiency and progress.

In a controlled process, you can work out what you can expect to happen and how. Your developers can gauge how their work is progressing. Your designers can see how well the implementation follows the design. Your testers know where to spend time testing. And your business people, can figure out the cost in time, people and materials your project will take. Everyone know what is expected of them. Your team feels less stress, and works more effectively. That is why ideas like Sigma Six and best engineering practises exist. Japanese manufacturer stressed over their processes bring them to perfection. No wonder why Japanese manufacturers can corner the market.

Without a process, chaos ensues, stress builds and projects fail. So if you manage a team or a project, do your team a favour: figure out a process that works for everyone and stick to it. Your team will appreciate less stress and chaos. And your bosses will appreciate a project well done. Perfection belongs in your processes.

Calendars and TODOs Are Only Useful If You Use Them

You know those commercials for productivity suites/PDAs/etc. where the protagonist wants to go to an event… and then finds out it happened last week. Well that happened to me today. Just going through my “TODO” list, and wanting to check out when that expected event was gonna happen. And it already did.

The moral of the story, if you don’t want to look silly, check your todo list on a regular basis. And use a calendar. Sigh.

On a better note, KDE 4.0.1 came out yesterday. Upgraded today, works like a charm. Applications don’t crash and burn so far. But HAL is still kinda wierd. And not everything integrates as smoothly as one would expect of a Kubuntu release. I guess I will just have to wait until the Kubuntu 8.04 release. Just a few more days.

Review of 2007, the Promise(s) of 2008

The year 2007 has been quite a dynamic year for me. Instead of writing a long article about each thing… cause that might take me an year to write and edit, I will just present a list of lists of things that happened.

Academics

  • Completed my undergraduate studies at the University of Toronto at Mississauga.
  • Picked my diploma for Bachelor of Science.

Travel

  • Traveled to Italy and Poland.
  • Walked down Unter der Linden in Berlin, Germany.
  • Checked out the Tower of London, National Gallery and Museum of Natural History in London, England.
  • Saw the sights of Florence, Rome, Assisi, and bunch of the Umbria region of Italy.
  • Walked around Gdańsk, Szczecin, Poznan, Gdynia and Malbork in Poland.

Software Development

  • Increased my knowledge of information security.
  • Restarted my involvement with the justCheckers project.
  • Deepened my understanding on software libre and open source.
  • Learned Javascript, CGI-Perl and JSP.
  • Joined the Ubuntu Toronto Users group.

Business

  • Led a mock-up startup for a course.
  • Learned how to read and understand businesses.
  • Discovered the many aspects of open source businesses.
  • Read My Job Went to India, or how to stay in IT.

Art

  • Wrote six articles on quantum computing.
  • Wrote seven personal essays that form my Hacker, Gamer, Lover book.
  • Wrote and voiced in an audio documentary, Casanova.
  • Started writing a science fiction novel.

Social Activity

  • Learned of the open access movement.
  • Learned the basic ethical theories: utilitarianism, Kantian ethics, and Rousseau’s social contract.
  • Debated for network neutrality.
  • Read Stallman’s Free Software, Free Society.
  • Read about the anti-software patent efforts in the EU.

Personal

  • Went to Taize in Montreal.
  • Made a lot more friends.
  • Learned the subtle art of dating.
  • Survived the downs of 2007.
  • Got my G1 driver’s license. Again.
  • Invented task logs, an organizational tool.

Things to Do for 2008

  • Finish justCheckers.
  • Write and publish two books.
  • Get a software development related job.
  • Start a company.
  • Find a real girlfriend.
  • Learn to drive and get my full G license.
  • Learn C and C++.
  • Get involved in a major FOSS project.

Harnessing Chaos: A Framework for Team Management

Programming is a misunderstood art. Unfortunately many commercial ventures treat programming like a science and managers treat programmers as engineers. Engineers build things based on repeatable technologies and designs. Programmers craft code, a process more akin to the unpredictable and unrepeatable production of art like writing. Companies get in trouble when they try to apply engineering best practises such as enforcing strict requirements, and tight predictable deadlines. A far better approach works by treating programming as an art, and applying artistic best practises.

The Problem of Creativity
One problem with creativity, is that is hard to predict and control. Creativity comes and goes, at a whim. Since artists work in a creative manner, they need a great degree of freedom in their work. Unfortunately the real world treats art in the same way as it does engineering. The real world expects predictable work schedules and techniques.

This becomes problematic when programmers work on a project as a team. The team needs to balance creativity with reliability. So artists and programmers need to build predictability into their projects. One way to create repeatable and scheduleable for creative work is to use a framework.

Team Frameworks
I am an extremely individualistic person. Yet, I will admit many projects simply take too long for a single person to do. Teams naturally alleviate this problem, by throwing more people at a task. But like Fred Brooks mentions in his The Mythical Man-Month, throwing more people at a team does not guarantee faster completion.

One of the reasons, I dislike teams is the problem of expectations. Before starting on a team project, I find it best to lay out “ground rules”. The rules include:

  1. Quality Expectations
  2. Communication
  3. Scheduling
  4. Individual Talents
  5. Work Synchronization
  6. Task and Job Division

It is important to work out these rules early on in a long term project. Without getting into specifics of each pint, I think everyone on the team needs to know what is expected of them. This saves the trouble of anguished team members when things go wrong, which in any project always does.

It is essential that these rules (not guidelines) be in place early on. Also every member of the team must follow these rules religiously. Sometimes the rules need changing, but if you did a good job on setting them up, the rules should not drastic changes.

Buffer Schedules
Programmers are notorious at underestimating the time required for work. The problem of “engineering” comes into play, and the result is delays in work. Instead when working on any creative project, you need to schedule in “thinking”, “wasted” and “oh crap, this is all going to heck” time.

The best of doing this is to schedule in a buffer. I usually work on a 1.5X buffer, (which probably is a very short buffer and 2X, even 3X are preferable). A 1.5X buffer basically adds an extra half “of time I think this will take me”. So if I think something takes 2 days to do, I try to schedule 3 days. This gives me room for error and I can finish ahead of time rather than “after-time”. Many successful programming groups also use buffers in scheduling.

Open Source Palm-Desktop Groupware

I recently discovered the comfort of using groupware, to organize all my communication and email needs. I never used a groupware application before, so maybe I am just realizing the potential of such software. But I am getting ahead of myself.

I commute to university the majority of the time. This means 3-4 hours on the bus, with little to do. Last semester I began intensively using that time to finish homework, edit papers and so on. One of the things I wanted to do is to write emails on my Palm Tungsten E, and send them later. The Palm came with a Windows-only mail client, VersaMail. Not helpful when your main desktop being KDE running on Ubuntu Linux (Kubuntu 6.10). Fortunately that is where Kontact comes in.

Kontact: KDE’s Groupware Offering
Kontact acts as an all-purpose groupware program. I will not discuss the virtues of this program here. It is a serious contender for replacing Microsoft’s Outlook or Novell’s GroupWare. You should check it out yourself. Kontact comes with KPilot, a great program for basic syncing of a Palm. Unfortunately Kubuntu’s version KPilot had bug in it. Fortunately I found a deb from http://ubuntu.lnix.net/edgy/updates/kdepim-proposed/ that fixed my problem.

Migration
First, I needed to migrate my mail and contacts from Mozilla Thunderbird to Kontact. I needed to export my address book in Mozilla to LDIF. Kontact easily imported this. Kontact also comes with a neat feature for importing emails from other clients. A simple wizard, and my Thunderbird emails resided now in Kontact. An hour later of organization, I readied myself for Palm integration.

Palm syncing on Linux can be a chore. Fortunately, Ubuntu 6.10 comes with easy PDA syncing for most Palm PDAs. To my horror, KPilot actually removed contacts from my Palm. After I installed the updated deb for KPilot, this problem also disappeared. Now I all I need was the Palm’s email program integrating with KPilot.

VersaMail versus GNUGetMail
My Tungsten E came with an email client called VersaMail. Unfortunately KPilot’s email plug-in does not use the MultiMail format which VersaMail uses. Not wanting to buy an email client, I searched for a free solution. I stumbled upon gnuGetMail. gnuGetMail is a simple, open source email client and uses the older single account Palm mail format. All I really needed was something to write emails for later sending. gnuGetMail does both sending and receiving of emails.

I recommend both Kontact and gnuGetMail to anyone considering Palm based emailing.