Staying on-task

How do you stay focused on a task or activity?

Honesty time. I suck at staying focused. In my life I’m never far away from an internet-capable device, so distraction is a big time sink for me. Twitter, IM, RSS feeds, iPhone games, Facebook, YouTube, Wikipedia, so much will drain away my time.

When I am on task, it’s usually because I’ve set myself crystal-clear goals for the next few hours. If I can see the desired result and I know exactly how I can get to it, that’d be a good clear goal.

I try to rock the Getting Things Done methodology, using Cultured Code’s Things, with good results: I know exactly what it is I should be working towards. Where I currently let myself down is not doing my regular/weekly reviews, and sometimes slacking on writing good next actions.

Maybe I should mix in the Pomodoro technique to build focus. Anyone out there tried this, or something similar?

Programming for Health: A Reflection

I’m on ‘staycation’ –annual leave from my normal day job at Natcoll. Staycation because I’m not actually vacating where I am: I’m still at home in Wellington.

I’ve been volunteering at Catalyst IT working with Brenda Wallace to work on projects of her choice. She assigned me to work on Laconica (an open-source version of Twitter that works in a distributed fashion). In order to do so I’ve had to learn a little about many different technologies, like PostgreSQL, the weirdness of Apache+PHP on MacOS X 10.5, and overall, how to checkout and contribute code to an open source software project with Git.

I’ve now had three code merges into Laconica, albeit very minor ones, mostly fixing bugs.

I don’t even use Laconica. (Twitter is working just fine for me, thanks.)

But I feel great.

Computer programming is something some have described as the most complex thing humans have invented — it’s all abstract, there are few corollaries to it in nature. Probably the only thing more complicated is quantum mechanics (but that is, in fact, nature).

My job is to explain, demonstrate, and encourage people who have never programmed a computer in their life (let alone their VCR) to create rather complicated things we call websites.

Why have I enjoyed contributing patches so much to an project I don’t use or much care about? A couple of reasons:

The Zone

The elusive Zone has many names; Wikipedia refers to it as “flow“. It’s that state of being you get when they’re so intensely focussed in the task at hand that time and reality become irrelevant because you’re so energised and focussed and involved at what you’re working on, and having good success at doing it. You come away feeling elated and energised that you’ve completed something of value.

I haven’t been in The Zone for nearly four years. I’ve been teaching people how to program for nearly four years now, and nary the mind to knuckle down and flex my coding muscles. I’m too worked up with office politics, helping my workmates with the technology, and thinking that I wasn’t good enough to be in the industry.

Learning

It’s good to know that I can do it, though to do it professionally, I’d just need to learn more about the processes involved.

I’ve had to learn how to use Git, how to create PostgreSQL users and databases, and submit my finished code to the project administrators for merging with the mainline version of the program’s code.

I don’t normally get to be a learner. I’m a full-time teacher, and what I have to learn is usually because I need to teach it.

It’s nice to learn things for me and me alone. I may never get to teach what I’m learning here, but what I’ve learned is helping fulfill me (more on that later)

That old adage “Those who can, do. Those who can’t, teach”. It’s lies.

Actually I’m a tutor, but that’s just a particular kind of teacher. Not meaning to blow my own horn, but according to my student evaluations I am actually a really good tutor. Sure, I have my weaknesses, but overall, apparently I rock at it.

And I really enjoy teaching. It’s rewarding when the metaphorical light-bulbs turn on above the student’s heads. Some of them slowly brighten, some just pop on, and some of them shine more powerfully than others, but the lights do turn on. To know that a learner now understands one of the most complicated things there is to know,

I was at Wordcamp New Zealand here in Wellington over the weekend, and Nicki Gemmell was talking about using blogs at primary schools around New Zealand. She related how uploading an image to a blog was something a principal got excited about: “I uploaded a photo to our school blog today; how cool is that?!”.

As a programmer who has written photo upload functionality, I forget how far I have come and how valuable the skills I have really are. The challenge of teaching people to do things is fun and rewarding. Teaching students to do this even more complicated stuff is the same but even more challenging.

Teaching programming, from my own experience, is the ability to communicate the concepts and foster the understanding and use of them. I was told by a trainer there were four levels of competency:

1. Unconscious Incompetence – you are unaware that you don’t know how to do X.
… awareness brings:
2. Conscious Incompetence – you are aware that you don’t know how to X.
… learning brings:
3. Conscious Competence – you can do X, and you are thinking about it when doing it.
… practice brings:
4. Unconscious Competence – you can do X, but you do not have to think about it when doing it.

I say that there’s a fifth level: where you have become once again conscious of what it is you are competent at. And that’s the level where you’re ready to teach it.

To be able to teach, you must be able to learn, and then go further so you can show others the way.

Those who can teach, do teach.

People

Okay, I’ll be honest: being around Brenda and the other like-minded geeks at Catalyst IT has been a really energising experience. Being able to vent frustration at code and technology, bounce ideas off each other and have fun while doing it has been great.

But working on Laconica and spending some time reading other peoples code and improving it, and learning the technical, and social aspects of doing so has been fun and very enlightening.

My motivation for staying a teacher has been pretty simple: Hell is other people’s work. Most of the employment in the industry has been creating websites for companies; wish fulfilment for others. I could change the world one organisational website at a time, or I could change the world 20 web students at a time.

But working on an open source project has let me use my programming skills to directly improve, ever-so-slightly at this stage, the lives of people around the globe. By making the software they use better.

Having that sense of purpose in what I are doing is really important to me. I don’t want to just be working to collect a pay check: working to live. And I don’t want to be living to work either. I just want to do what is worthwhile while I’m alive: live life to the fullest. Use the abilities I have to do things worth doing.

I am a teacher. I am a programmer. I’ve been neglecting the programmer side of me.

“Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends – commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. Larry O’Brien and Bruce Eckel

New Zealand TWTR SMS Roundup

This is a work-in-progress timeline of all the news surrounding Vodafone New Zealand and Telecom New Zealand announcing their support for Twitter SMS through the shortcode TWTR (8987).

Any news, just leave a comment including any and all links to public sources and I’ll do my best to keep this up to date.

Lifehack: RSS Reader Fu: Heavy Traffic folder

I’m a heavy RSS user; one of those 4% of web users who read their content via a news reader. I’m a Google Reader user myself, but in the past I’ve tried many feed readers: I even registered both FeedDemon (for Windows) and NetNewsWire (for Mac OS X); both have since been bought by NewsGator and are now free -_-;… But ever since Google Reader got that major upgrade, that’s where it’s been at for me.

Anyway, a common problem with RSS reader users is they suffer from too-much-unread-post-itis. If I don’t read my feeds, in two days I’ll have 1000+ unread items.

Here’s my tip: if your reader lets you put one subscription into many folders, make a ‘heavy traffic’ folder, and put all those feeds that publish far too many posts, and that you only read when you have copious amounts of time. I have Slashdot,  Techmeme, Joystiq, Wired News, and 901am in my folder, with many more to be copied there.  Now when you’re feeling the overflow, you just mark that entire folder as read, and your unread count will drop substantially, and you won’t feel so bad anymore!

Overclock your breakfast!

I was discussing with a friend of mine how much I enjoy breakfast when I make time to have it, so here’s my top tips for changing breakfast to the best meal of the day:

Make time to have it

You can’t have breakfast if you don’t allow yourself time to prepare and consume it, so allow yourself some time before you leave the house. You probably have a morning routine, so just make it part of that. If it means getting out of bed 20 minutes earlier than you normally do, then do it! Breakfast is worth it.

Mix and match ingredients for a taste sensation

One thing that will stop you wanting to have breakfast every day is it always tastes the same. Stock up on various breakfast cereals and toppings. I’m in New Zealand, so some of this stuff won’t be familiar to my overseas readers, but here’s what I like to have around. Important factors in choosing stuff: Must be tasty by itself, but must be reasonably healthy. Anything with added sugar should be avoided in large quantities, but is nice once in a while.

Bowl: You need to have a bowl that has high edges to prevent spillages, large enough to hold three Weet-bix, standing up on their side and still be covered in milk.

leetbixCereals: Lots of Weet-bix, and a box of Honey Puffs, Corn Flakes, Rice Bubbles, and a couple of Hubbards mueslis: one heavier oat-based muesli and one lighter corn-flake based muesli. In small amounts: Coco Pops

Toppings: Bananas, real-fruit yoghurt (buy in 1kg pottles), grapes, other kinds of fresh and dried fruit. Avoid fresh citrus fruit as it makes the milk curdle. In small amounts: Fruit-based ice-cream or plain yoghurt toppings (strawberry, kiwifruit, black forest, blackberry, but NOT chocolate, caramel). Avoid dairy food (the sweet creamy flavoured stuff that’s not yoghurt, e.g., Swiss Maid, Go-gurt, etc.)

Milk: Homogenised pasteurised Blue-top all the way. Why not low-fat or non-fat milks? Because it doesn’t taste as good. I’m all about the taste. And you do need some fat in your diet.

How to put these ingredients together:

Weet-bix (similar to Weetabix) is the staple of a bowl breakfast in New Zealand and Australia, so use this is a base. Two or three bricks. Because Weet-bix is quite absorbant, some people put hot water over these so they don’t use so much milk. It does result in a watered down taste, but this is an option. If you like large portions for breakfast, then just add more Weet-bix bricks. I put these in the bowl standing on their sides, not lying down or on their ends.

l33t cerealChoose one of your other, more flavourful cereals and ‘fill the gaps’ in your bowl with it. You could add two or even three different bits. Don’t over-do it though; the Weet-bix is the base, we’re adding the secondary cereals for flavour and texture because Weetbix, while lightly malted, isn’t the exactly the taste sensation we’re looking for.

Toppings: If you’re adding fruit today, put this on. If you’re doing yoghurt or another thicker-than-milk topping, add this. Then add the milk. You might not like watering down your yoghurt with milk, but trust me, it helps the flavourful yoghurt get into the Weet-bix. Don’t go overboard with any sugary ice-cream/yoghurt toppings — just add enough for flavour. If you don’t have yoghurt, fruit or toppings, and you’re desperate, you might put a teaspoon or two of sugar on the Weet-bix to make it a bit more interesting — but be aware, you may set yourself up for sugar-crashing easily before lunch time.

Now enjoy a flavourful and nutritious breakfast!