On Time Management

This time of year, the stresses of academia mount and self-perpetuate through strained social interaction.  This year, in particular, is notable since the majority of the people around me are graduating and generally moving on with their lives.

In particular, the phrase “finals” has a chilling effect when they are, in fact, finals.  Though this is not the case for me, I found out today, I wanted to take a few moments to recognize what can help you, and those around you, stay somewhat sane:

  • Recognize your accomplishments.  We tend to focus on what remains to be done, and what new beginnings lie ahead, but easily forget that anything got done.
  • Think of the long term only to motivate yourself in the short term.  I love to have my whole life planned out, but it’s simply not practical.  Reality changes, circumstances change, and you change.  Having a direction is excellent and desired; plotting your course thinking the terrain never changes is not time well-spent.
  • Remember to time-box.  If you don’t do this during normal circumstances, it’s particularly important.  I recognized early in my college career that homework would become my life – if I let it.  By setting reasonable time estimates on my tasks and keeping a calendar, I recognize when the paper is taking twice as long to write or that I’m spending too much time programming and not enough time unwinding.
  • Sleep effectively.  Stress reduces the time available for and the effectiveness of sleep.  Set a regular time for sleep regardless of what day of the week it is and stick to it as close as is practical.  Slipping for a day or two will happen, but any more than that and you’re forming a habit.
  • Wake effectively.  You have to sleep effectively to work effectively, but you can help the situation by making wise use of your waking hours and allocating time well.  Time-boxing only works well if you estimate reasonably.  Learn your estimating habits and shortcomings to make the most of the time you have.
  • Adapt.  Some habits that work under a normal work load will buckle and leave you stranded.  It can feel weak to stray from your plans, but that’s what makes exceptional circumstances exceptional.

As I mentioned before, I love to have my life all planned out, but some things are simply unforeseeable.  I try to keep a substantial portion of my calendar blank to take care of the things that come up in the mean time.

I’ve tried to generalize these tips out for everyone.  My own style might be useful for you, or not.  In either case, here’s how I work:

  • I have a computer pretty much any time I have a notepad, and carry my iPhone far more often than I carry a pen.  I also do a decent job of not being distracted by my computer when using it.  That combination of facts has led me to go entirely electronic for my task management.  I used to use post-its on a due-date sorted basis but found that I could not adequately manage the time that needed to go into each task, which resulted in some large things not getting done as soon as they should have.
  • In particular, I use The Hit List.  No iPhone app just yet, which is a drawback, but its flexibility and suitedness to my style more than make up for it.
  • In THL, I keep few lists and very few projects.  Anything that will be around for less than a month or so is a task, and fortunately, tasks can have subtasks.
  • I never found the GTD idea of “contexts” useful.  I feel like I’m not alone in this, but have never really heard anything to confirm that.
  • I have a “Completed” Smart Folder to remind myself of what I have accomplished since my last review.  Seeing things checked off in the list can just get cluttery; I try to review once every day or two to clean up and see how productive I have or haven’t been.
  • Archiving takes place at my daily or two-daily reviews.
  • I’ve added an “On My Mind” list for things that I can’t do much about for a moment or want to review later.  Lately a lot of my friends have had problems or situations that I can’t help directly; this list lets me “forget” it when I can’t do anything and helps me focus on what’s important when I can.  It may seem like micromanagement of my life, but it eases my mind to remember I still care about things of that nature and want to do something about it.
  • From my task list, I use iCal to plan out time for each of my tasks during the week.  As I mentioned before, I try to stick to my estimates and leave a decent amount of free time as a buffer.  I don’t have a time set out for every task on my list; generally it has to be a “definite due” item or easily forgotten or at least 1 hour long to merit a mark on my calendar.  In the other direction, though, pretty much everything on my calendar besides classes has a task.

picture-13

Getting Things Done without Getting Things Done

I hope this helps someone with a few ideas.  I welcome people telling me I’m wrong about any of this.  🙂

Getting Started with Qt II: Qt Development Tools

In my last post, I tried to convey some of my excitement about the recently-LGPLed Qt framework for multiplatform develpment. I can list off great features all day and still not cover everything, but more importantly, Qt is great because there’s almost always something great about it that feels like it was built just for you. I think the best way to experience this is to take some time to sit down and play with it yourself, so I want to help you do just that.

Luckily, the 4.5 release has made it even easier to do just that with the introduction of the Qt Creator IDE. Binaries are available for Windows, Linux, and Mac OS X, so if it runs on your desk, it probably can run Qt Creator.

Qt Creator is included with the Qt SDK, which can be downloaded here.  I’ll cover integration with other IDEs like Visual Studio 2008 and Xcode in time, but for now, Qt Creator is the fastest way to get up and running to give things a try.

Rather than a typical hello world program, which is covered well elsewhere, I’d like to jump into some of the practical power of the framework by building a simple JavaScript interpreter. Think of it as a powerful version of the traditional calculator example.

Here’s a (terrible, hand-drawn) sketch of our goal:

qt_tut_thumb001

We have two major elements: the log area and a single-line text entry area with an “execute” button. On the back end, whatever you type into the text box will be executed by a script engine and the results are displayed in the log.  We’ll add some features as we go along to make it nicer.

We won’t be writing our own JavaScript engine.  Instead, we’ll leverage Qt’s QScriptEngine class so we can focus on adding features that are useful for us.  Have a look at that API and think about how you would implement this application.

Rather than publish this tutorial all at once, I’m going to post this in parts.  Think of it as a “Qt in 20 minutes a day” sort of tutorial.  If there are any topics you want to see covered or in expanded detail, let me know in the comments.

blog reincarnation exists – again