Time analysis

Now that Quantified Awesome has turned out to be a pretty convenient time tracker, I’ve been thinking what I want out of time analysis. I’m interested in a few things:

Am I doing good work within the hours I want to work, or is my focus slipping? (~8 hours per work day, not too much over)

Am I sleeping well? How regular can I make my sleep? (Between 7.5 and 8.5 hours on average, and work on reducing standard deviation of sleep length and start time.)

In terms of discretionary time, do I have a good balance between personal projects, social time, and miscellaneous relaxation? (At least 30% of discretionary time used for Quantified Awesome, and at least another 30% for socializing.)

Where am I shifting time from, and does that follow my priorities? If I spend more time on one thing, am I happy about where I’m spending less time?

The reporting system I’ve built so far makes it easy for me to answer the first three questions, and I should bring back the functionality that lets me answer the fourth easily. In the meantime, here’s this week in (fewer) numbers:

After a good summer season with Plan B Organic Farms, we decided to sign up for their fall season as well. This time, I made sure to weigh and track all the produce that came in. I also took notes on what we did with the produce to make it easier to think of ways to use them before they were wasted.

Here’s what I was curious about:

How much did we get?

What was the cost per kilo or pound?

How does it compare to organic produce prices at the supermarket?

What were the proportions like? Did they match up with our perceptions?

How do I feel about the different vegetables now?

How much did we get? Over the 11 distributions I tracked, we received a total of 71.6 kilograms of organic produce and a container of apple cider. This worked out to an average of 6.5kg per distribution, with a standard deviation of 1.08kg.

What was the cost per kilo or pound? Weekly half-shares cost $25, about $3.84/kg or $1.75/lb of organic produce (not including the cider).

How does it compare to organic produce prices at the supermarket? The No Frills supermarket we usually shop at doesn’t have a wide selection of organic produce, so I used prices from GroceryGateway instead. In a past analysis, I found them to be usually 10% more than No Frills prices, and there are minimum order limits and delivery fees as well. Using the prices for organic produce whenever available and guessing “bunch” weights from my data, I calculated that we received an average of $31 of produce each week (including the cider). This worked out to a savings of $6 per week, or 20% (not including taxes, delivery charges, or other purchases to meet the minimum).

Would we have bought all that produce if we weren’t part of the community-supported agriculture program? I’m not sure, but the commitment device of having a box of vegetables come into our house every week helped us improve our diet.

What were the proportions like? Did they match up with our perceptions?

I’m surprised by this, because it felt like we received a whole lot more squash and cabbage (which I’ve included in the Greens category). They were bulky and not in our usual cooking repertoire, so they were more of a challenge. We mostly managed to finishing the cabbage, but we had to cut up and throw some of the squash away. The apples and tomatoes were occasionally suspect, too.

Here’s the breakdown within each category:

On average, we received 11 different types in a distribution (standard deviation = 1.2), covering 32 different types in total. The fall box included imported items such as bananas and kiwi to fill out the selection, as well as produce grown in greenhouses.

How do I feel about the different vegetables now? After two seasons of community-supported agriculture, I’m more comfortable with dealing with the increased volume of vegetables passing through our kitchen. We’ve organized the pantries with bins so that we can store all the squash and onions neatly, and we manage to get through the produce in our fridge drawers in a reasonable period of time. We waste a small fraction of the produce through inattention (apples, mostly), but have managed to convert most of the produce into good food. I’d say we’re working at 90-95% efficiency or so.

Some experimental recipes have been more fun than others. Sweet potato fries have become a favourite in the house. Baked acorn squash with brown sugar and butter is a nice winter dessert. We discovered that adding sausages to butternut squash soup makes it much easier to finish. Turnips and beets still need a lot of tweaking.

We’ve signed up for a bi-weekly winter share from Cooper’s Farm CSA in order to take advantage of delivery. We happened to start with their program in time to make a side-by-side comparison with Plan B Organic Farms, and they turned out favourably (although their produce required more scrubbing). We’ll see how things work out over the next season.

How I tracked this: I built a small tool for tracking community-supported agriculture into my Quantified Awesome website. Every week, I weighed all the produce and typed in the their names and weights. At the end of the season, I copied the data and used pivot tables in Microsoft Excel to analyze the results by category and week. I manually checked the GroceryGateway website for prices, and I used VLOOKUP to cross-reference the data with the prices.

My input system didn’t do anything special that a spreadsheet couldn’t handle, although I liked how the weights became part of my dashboard. If you want to start tracking either community-supported agriculture or your regular groceries, you can start with a spreadsheet (Microsoft Excel or OpenOffice). Log the produce you receive or buy, and summarize them in ways that help you answer your questions. Have fun!

I’m working on the stylesheets for a site, which means lots of fiddly little changes.

I decided to make all of my styling changes to my Sass source files instead of editing the attributes in Google Chrome because I found myself forgetting to copy attribute values back from Chrome. Editing the source files directly meant that the changes would be persistent – a slightly slower workflow, but a more reliable one.

I used Chrome to set selected divs to show up with display: block. This meant that I didn’t have to keep triggering hover behaviours myself. Then I used CSS Reloader to reload the stylesheet. Chrome kept my manual attribute changes, like display: block, while applying the new styles. Awesome!

I wanted a quick way to update my browser windows after I saved the file. Saving would automatically trigger Compass’ conversion of the Sass files into CSS, but the browser still used the old stylesheet until I trigged CSS Reloader with F9 or the context menu. I didn’t want to refresh the entire page because that would lose the display: block I’d manually set.

AutoHotkey to the rescue! I wrote a function that saved the current file, waited for Compass to convert the Sass file into CSS, and then used the CSS Reloader shortcut key on all open Chrome windows. This meant that I could have a translucent browser window superimposed on the design PDF for easy comparison (thanks, WinWarden), and an opaque browser window for inspection and navigation.

To make it even easier to fine-tune tiny differences, I installed Magnifixer. I used the “Fixed” mode to magnify the translucent portion I was working on, and I moved the display next to my code. That meant that I could avoid turning my head all the time. I could simply tweak my code, nudge the pedal with my toes, glance at the display (or use peripheral vision!), get it right, and then check the overall view.

Foot pedals are fun. More fun than mapping the shortcut to something like F9 or F12, which would involve taking my fingers off home row and finding a small key. You can literally stamp out bugs.

All this put me in such a good humour that I ended up getting the homepage almost pixel-matched to the specs, except for the limitations on letter-spacing and the adjustments I made for the inconsistencies in the spec layout.

Whee! I can’t wait to use this idea when developing backend code. I’ve played around with Autotest on a Rails project, and it should be a simple matter to write a shell script running selected tests on any project. Fun!

I’ve been fiddling with Quantified Awesome, this personal dashboard that I’m building so that I can keep track of what’s going on in my life and use that data to make it even more awesome. For example:

Tracking my time helps me make sure work doesn’t tempt me too much, and that I make time for both personal projects as well as connecting with other people. It also helps me improve my time estimates: How much time does it really take to walk to the subway station? How instant are instant noodles?

It turns out that other people are interested in this too. 21 people have signed up through my “I’ll e-mail you when I figure out how to get this ready for other people” page, and my mom wants to use it too. That’s awesome!

Now I have to go ahead and actually build it so that other people can use it. That’s scary.

And like the way I deal with other scary, intimidating, procrastination-inducing things, I’m going to list my excuses here, so that I can shine a light on those assumptions and watch them scurry away like the cockroaches they are and, if necessary, squishing them with a well-applied flipflop.

Excuse #1: Idiosyncrasy. The way I work might be really weird, and other people may not be able to figure out what to do.

What’s the worst-case scenario? “I have no idea how this works!” I end up with lots of crufty special cases because I can’t figure out how to reconcile different ways of working.

What’s the best case? I adapt the system to the way other people work, and I get inspired by what they do. I build a lovely, flexible web app and API.

Excuse #2: Risk. I’m fine with loading my own data into an experimental system, but if I mess up and delete other people’s data, I’ll feel terrible. Also, they might trigger bugs.

What’s the best case? Regular backups help me recover from any major mishaps, and careful coding avoids more common mistakes.

Excuse #3: Support. I’m going to spend more time handling bug reports and feature requests, and less time building little things that might be useful only for me.

What’s the worst-case scenario? People get annoyed and frustrated because I’m currently focused on other things, like my work.

What’s the best case? I get the system to become mostly usable for people, and I use my discretionary time to build more features. People’s requests inspire me to build more stuff and create more value.

Excuse #4: Documentation. I’ll need to write documentation, or at the very least online help. This means confronting the less-than-intuitive parts of the system. ;)

What’s the worst-case scenario? I describe what currently exists, get frustrated because I want to improve it, and end up cycling between updating documentation and improving the system.

What’s the best case? I describe what currently exists, and end up improving it along the way. I build online help into the system so that it’s easy to change. There’s a blog that helps people learn about updates, too.

Excuse #5: Offline access. A web-based time tracker might be of limited use if you don’t have web access often. I’ve been working on an offline HTML5 interface, but it’s still buggy.

What’s the worst-case scenario? Early testers try it out, but get frustrated because of the lack of offline access.

What’s the best case? I figure out the HTML5 offline thing. Someone else might be interested in building a native app, and we work together on fleshing out an API.

Excuse #6: Impatience. If I bring people on too early, they might get annoyed with a buggy system, and lose interest.

What’s the worst-case scenario? People give it a cursory try, and give up in annoyance.

What’s the best case? Early users are extraordinarily patient. We figure out a minimal viable product for each of them – the simplest thing that could possibly support what they want to do. Over time, things keep getting better and better. Also, I build a decent export interface, so even if people move on to a different system, they’ll still have their data.

Excuse #7: Privacy and control. A bug might accidentally expose people’s information, which is not fun. I also don’t want to have to police the system for objectionable content, considering the thumbnail uploads.

I spent most of the holiday weekend organizing and backing up my files. I used VisiPics to delete duplicates and lower-resolution copies. I went through the rest to get rid of blurry pictures, and rated the pictures so that I could easily find highlights.

Although hard drive storage is relatively inexpensive, attention costs more, so I was more ruthless when it came to weeding things out. I figured that since we’ve survived thus far without a complete pictorial record of our lives, I’ll be okay even if decades down the line, I wish I’d kept this or that blurry picture of Neko sleeping under the blanket on the couch. No sense in stressing out over storage, or in overloading my ability to organize by insisting on keeping everything.

I burned my archives for 2011 and 2010 onto DVDs so that I could restore the data even if something happened to my hard disk. I also backed up my data to network storage.

With the basics out of the way, it’s time to think about what I want from my archives and how to structure things to make it even easier to work. I care the most about the following categories:

Blog posts and notes: I want to be able to review my experiences, decisions, and lessons learned.

Pictures: I want to trigger memories, particularly as I help write family stories. I want to index the pictures by person, so that I can search for combinations of people.

Drawings, sketchnotes, and mindmaps: I want to trigger memories and lessons learned using sketches. I also want to track my progress, which means chronologically ordering my sketches as well.

Book notes: I want to be able to review my book notes by topic and annotate them with questions, actions, and follow-up items. I want to slow down and take more notes while reading books, translating them into ways I can improve my life.

Archives are good for recovering data, but I wonder how I can structure things so that I can use the past to make the future even better.

Some ideas for what usefulness might look like:

A photograph encourages me to write a story, fleshing out the memory more; it might also get me to write that person

A blog post prompts me to revisit an idea and build on it.

A decision review leads to better decisions

Book notes nudge me to follow up on how I’m applying what I’ve learned, and I might reach out to people and tell them about the book

We use Bibble 5 to organize our photos. Bibble has a mode slideshow that can go through more than one slide a second, which is great for rapid review. That might be good for reviewing photographs and drawings to see if any of them trigger a quick memory or feeling. Rotating my desktop background through chosen highlights can also give me a peripheral awareness of faraway family and friends.

For blog posts and decision reviews, my monthly-ish and annual reviews are good for revisiting recent posts. Now that I’ve loaded my archives onto the Kindle, I can also flip through them while waiting.

My scanned mindmaps aren’t as useful for quick recall/addition as I’d hope. This could be because my paper-drawn mindmaps sometimes have text written sideways or upside down (yay for rotating), which is harder to read when I’m flipping through everything in the same orientation. If I stick to writing horizontally and I use bigger, more visual concepts, I can get more of an impression during a quick review. I’ve also used computer-based mindmaps like Freemind. They feel a little different, and I still have to figure out a better way to build mindmapping into my workflow.

Sketchnote-wise, I’ve learned that although OneNote’s infinite scroll of paper is nifty, I like the limits and easy review of a single screen with layers. That’s why I’ve switched to using Autodesk Sketchbook Pro for most of my sketchnotes. They’re much easier to flip through, and I can add them to presentations and yearly reviews easily.

For book notes, slowing down and using a template will help me take better notes from books. It’s not about quantity, it’s about quality. It’s not how much I read, it’s how much I keep (and act on!).

It looks like the key things I can do are:

Export picture highlights and set them as my desktop background. Print them for extra backup/flipping fun.

Import my sketchnotes into Bibble and organize them using keywords. Figure out how to set up a slideshow shortcut to review them. I’ll organize them by year, then use metadata to pull different topics together.

W- picked up the LEGO Indiana Jones game to round out our collection, and we’ve all been enjoying it. The puzzles sometimes take a while to figure out, but like all LEGO games we’ve played so far, they’re never frustrating and the little touches of humour make us laugh.

We started with the episodes for Indiana Jones and the Kingdom of the Crystal Skull. It hadn’t stuck in our memory as much as the previous films, so the game episodes were a little mystifying (although still lots of fun). To help clear things up, I requested the movie from the library. It was a lot more fun than I’d remembered it to be, possibly because of all the jokes we’d remembered from the game. The movie by itself, I don’t know… The movie and the game, yay. =)

We like the LEGO games. The puzzles are easy to solve, but still contain plenty of jokes. Looking forward to getting LEGO Batman 2 when it comes out (and rewatching the movies!).

I want to free up time later this week to focus on Quantified Awesome and explore something new, so I spent part of the weekend working on the Drupal engagement. In addition to the feature requests, there’s a fair bit that I need to do to clean up the previous code and make the site more maintainable, so I’m chipping away at the task list.

Still, there’s time to spend with friends and family, and that’s important, although I woke up too late to talk to my mom.

It’s a little odd shifting time around like this. The crunch time is temporary and self-imposed, and the freed-up time later this week might come in very handy.

I would like to spend more time on building the things that people are asking for, but I can’t think of anywhere else I’d want to take that time from. Sleep, work, and socialization are all important, and I enjoy working on my personal projects too. Chores don’t take us a lot of time – not enough to justify the cost and time of outsourcing them.

So it’s a matter of patience, dealing with the fact that there is only so much time in the day. I’d still rather build this slowly than not do it at all. At work, I’ve been opening up my extracurriculars to other people so that I’m not the bottleneck. For Quantified Awesome and these other personal interests, I’m not quite at the point of paying other people to work on them.

One of the books I’m reading is “Money Can Buy Happiness”, by MP Dunleavey. The book quotes:

Time is the coin of your life. It is the only coin you have, and only
you can determine how it will be spent.

Carl Sandburg (quoted on p63, Money Can Buy Happiness)

I am okay with how I spend my time. It would be interesting to have more of it, but the constraint of 24 hours is fair and equal. In a few years, I might experiment with different balances, but there are still many things I want to do and learn with this balance.

The Drupal site I’m working on is slowly coming together. I still feel an itch to redo the big, hardcoded structures that a previous developer left behind, but I’m focusing on all the functional pieces first. Then I’ll do the styling and spacing tweaks, and then I’ll think of making that structure more flexible.

I like working with other people’s code, even if the code occasionally makes me go “Huh? What were they thinking?” It’s good to be able to work with other people’s structures and gradually immerse yourself in a project. Otherwise, you’d be limited to just the things you can build from scratch.

We’re still quite a bit away from having something that would be ready for launch, but we’re making progress. I don’t know if I’ll be on this project through launch, but it would be nice.

Testing business assumptions: I like this definition from Eric Ries’ book, “The Lean Startup”:

A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.

I’ve come to realize that the most important part of this definition is what it omits. It says nothing about the size of the company, industry, or the sector of the economy. Anyone who is creating a new product or business under conditions of extreme uncertainty is an entrepreneur whether he or she knows it or not and whether working in a government agency, a venture-backed company, nonprofit, or decidedly for-profit company with financial investors.

I like the idea of treating work as an experiment that reduces uncertainty and helps us do something better. I want to get better at bringing out those uncertainties and planning how to resolve them.

Visualizing data and making better decisions: I like collecting data, bringing them together in dashboards, and figuring out visualizations that can help people make better decisions. Last year, I implemented a visualization for a Drupal project so that investors could see where the gaps in funding were. I’m working on some visualizations for my personal dashboard. I think it’s useful to be able to help people find patterns while avoiding false positives or visual noise.

Building systems that fit the way people need to work: I like the way we tailored the last project based on constant client feedback. I like saving people time by building systems that help them work more effectively instead of requiring a lot of repetitive work.

The urge to check things off can be a great way to start a new habit. On our recent trip to the Philippines, we found out that packing our vitamin supplements into pill organizers made it much easier to remember to take them daily. I get this compulsion to tick things off in order, to open each box on the right day, to see the chain of empty boxes grow.

It’s a well-known trick, this idea of making habits visible. Jerry Seinfeld says don’t break that chain, and that works wonders. It’s part anticipation and part loss aversion. People use it to pick up all sorts of habits. Mel Chua uses it to get the hang of flossing her teeth, for example. Visible progress is wonderful.

We’re back home now, but I’m going to keep using the pill organizers to keep track of supplements. Let’s see what else might benefit from this idea…

I remember now why I had stopped tracking time before. Breaking things down at the project level made me feel weird about my extracurricular interests at IBM, like the community toolkit and now the IBM comics. On one hand, I wanted to support our utilization goals and claim time as accurately as possible. On the other hand, I didn’t want to give up personal time, especially as I could use it to build more functionality into Quantified Awesome. I felt conflicted. I found myself slipping from the feeling of an abundance of time to the feeling of a scarcity of it, to be carefully portioned out among too many demands.

Today, brainstorming how to address my worst-case scenario considerations, I realized something: I’d been thinking about it the wrong way. It’s not extra time I’m donating or a hobby I might outgrow. It’s a live opportunity to test ideas with a massive, built-in internal market.

Comics on the intranet homepage? A fledgling artist couldn’t buy that kind of space. A community analysis tool that other people have come to rely on? Good practice in supporting disparate users and scaling up value.

No money might change hands, but a steady stream of thank-you notes helps my manager argue for a top rating, which often translates into a bonus.

So now I’ve got a couple of ways to rethink how this fits into my life.

I can promote these extracurriculars from the category “Work – Other” to “Discretionary – Other” or something similar, and budget myself four or five hours a week. It’s not work, it’s learning.

Alternatively, I can keep it under “Work – Other” and add an effective 10% overhead to my billable work. Many people have told me that I’m a fast developer, anyway, so scaling my output down to that of a somewhat above average developer will still mean that we do good stuff. The cognitive surplus goes into process improvement, self-development, and happiness, which is definitely worthwhile. I get stressed when I feel like I’m letting my other priorities slip, so spending time on them is important too.

These extracurricular interests can create a lot of value. I should adjust my measurements accordingly so that my measurements don’t lead to conflicting feelings.

It snowed today. Both W- and I worked from home. We closed the blinds and lowered the shades so that I wouldn’t have to look at the snow falling. I’m still in the stage of preferring winter to be abstract; savoured as baking season in a warm kitchen instead of seen – or experienced – as flurries and blizzards.

After the snow and wind subsided, we walked to the supermarket to pick up some supplies. Snow has a way of making everything farther, but good company makes a good walk.

I had shifted plenty of work time to the previous weekend in order to try something new this week. I felt stretched a little bit, but I think it paid off. I collected more data to help me make decisions.

I had more time today to focus on Quantified Awesome, too. I’m working on opening the site up to registrations. Yes, still that. I have a development environment up on the server so that I can work on it even when I’m away from home. After I build a tutorial, I think it will be ready for a couple of users.

I fixed some issues with the Lotus Connections community toolkit I’d created at work. It’s good to get that sorted out.

We held our first study group session for this year, reviewing areas, circumferences, and volumes. The kids asked for help with their other subjects, too. Writing: the five-paragraph structure. Drama: Romeo and Juliet.

After they departed, W- and I got ready for a cooking sprint. We watched Rashomon while having dinner. After I finished my beef bulgogi, I settled in and scrubbed more potatoes. The fingerling potatoes we received from the community-supported agriculture program had been crusty with dirt that was hard to dislodge. Half of the potatoes were relatively clean, thanks to last night’s movie-accompanied scrubbing. I worked my way through the rest of the potatoes as Akira Kurosawa’s classic story unfolded. Scrubbing kept my hands busy and didn’t demand too much attention away from the subtitles. When the potatoes were done, we roasted them along with the beets and the two chickens that W- had marinated in pandan mix. Yum.

[\] Open up Quantified Awesome to at least one other person – Still working on cleaning it up. Maybe I should just bring people in and see what breaks.

Quantified Awesome: Added graphical goal feedback

Quantified Awesome: Started cleaning up registration

Settled into more memory on website

Plans for next week

Work

[ ] Finish functionality-related tasks for project C

[ ] Work on styling for project C

Relationships

[ ] Go to Rails Pub Nite

[ ] Go to Quantified Self Toronto meetup

[ ] Go to IBM get-together

Life

[ ] Quantified: Open up time tracking to folks

[X] Quantified: Set up bug tracker

Time analysis

Work

Good

40:57 hours this week

Sleep

Good

61:05 hours, average of 8:43

Personal/social discretionary

Good

23:05 social to 17:44 personal

Work/discretionary balance

Good

40:57 work, 40:49 discretionary

Pretty good, actually! It was a little tight in the beginning, because I used last weekend to get some work done instead of tinkering with Quantified Awesome or focusing on chores. I used the time on Friday to focus on building and planning, and that was time well-spent.

Next week, I’m attending a couple of events, so I have less evening hacking time. I’m looking forward to being inspired by the events, and to more hacking and planning.

This weekend brought a cold snap, or maybe this is regular winter in contrast to the mild days earlier. We dealt with it by cooking and baking our way through many of the vegetables that had come from the community-supported agriculture program, stockpiling frozen lunches for the weeks to come. It was a productive weekend.

I spent most of the weekend working on Quantified Awesome. I’m looking forward to opening it up to people next week. It’s still rough in places, but people will probably be able to use it for tracking time, stuff, and clothes. I have a few more things to nail down before I reach out to the 35 people who’ve indicated their interest so far, but I feel like I’m getting close.

I hit my library checkout limit of 50 books the other day, what with all the books I’ve been checking out on psychology, planning, and other things I’m curious about. W- let me check things out on his card. There’s been a steady stream of books and movies going back to the library, and no late fines so far. I’ve been making an effort to read things roughly in order of due date. I sometimes give in to the temptation to read things out of order. (Like The Lean Startup, read the day I picked it up and quoted soon after.) The Toronto Public Library is amazing, and I’m happy to support it.

My time-tracking tweaks seem to be working out. David Ing wondered if I was getting limited by reductive analysis. I rather like the clarity of choosing one activity at a time. I’m satisfied with tweaking my goals to encompass the sustainability of growth at work, too.

This week: more functionality/theming changes at work, and three events to attend. Let’s see how it goes!

Justin Giancola (@elucid) wanted to use full-ack.el to search through his project files using the Ack tool, but Ack refused to run because it didn’t think his terminal had enough capabilities. A simple fix was to set the TERM variable with

(setenv "TERM" "xterm")

which told Ack that Emacs was fine with its output.

(Speaking of Ack integration – This being the Emacs world, there’s more than one way to do things. You might also want to check out ack-and-a-half.el, which is midway between ack.el and full-ack.el.)

It was interesting hanging out with someone else who used Emacs, and being able to share tips. I don’t run into many other Emacs geeks, but I sporadically hang out in the #emacs channel or browse Planet Emacsen to be inspired. It’s funny how many of the meetups I go to end up involving Emacs conversations. It’s like I have a big M-x banner hovering over my head. =) It’s awesome, actually!

Most of this weekend was taken up by schoolwork. J- had a large Math project to work on – cereal box design (volume, surface area, ratios, etc.) and a writing assignment. She also needed to work on her application for the CyberArts high school program.

I don’t know how other families handle it. W- has been tutoring J- through the tough parts, and that takes time.

As for me, I followed up on the events I attended last week. I’ve also been working on Project C. Spotted a few things I missed last runthrough. Sometimes it feels like three steps forward, one step back. But that’s okay.

So I’ve taken to calling my personal dashboard Quantified Awesome, and I even have the domain name for it. The name is fun, and it reminds me that this is data tracking for a reason: to live an even more awesome life. Right now, I use it for time, clothes, library books, fruits and vegetables, stuff, and measurements. I’ll add more as ideas come to me, and as I use the tools, I’ll flesh out the interface.

Quantified Self Toronto meetups have been fantastic for getting more ideas and for sharing what I’m working on with other people. I think this kind of tracking would be the kind of geeky thing that might be interesting for the DemoCamp Toronto crowd, too.

DemoCamp demos tend to be mostly startups, and I’m not at the point of turning this into a business yet. I remember they had lots of fun with my Livin’ la Vida Emacs talk, though, and I’d like to inspire people to apply their skills – programming, designing, whatever – to their own lives. I’d also love to connect with other people so that I can be inspired by their examples. People who are into this sort of thing in Toronto are probably already part of Quantified Self Toronto, though, so there may not be that much extra value in presenting something mainly for connection purposes. If I’m going to focus on either inspiring or collecting feedback, then, I want to make sure that people’s activation costs are low.

So, what would it take to get this to the point where I can create a lot of value in 10 minutes of demo and five minutes of Q&A? (Or if this is anything like my other talk, a short demo derailed by people anticipating jokes, turned into a general truth-is-funnier-than-fiction thing. =) )

I’d probably want to have lots of data driving lots of visualizations, because they’re easier to see on a big projected screen. If I build this up over a few months, I’ll have the data to let me ask interesting questions and report on behavioural changes, which will be really useful. I may want to shift from using RaphaelJS to using Protovis or a similar library for visualizations so that I can take advantage of the source code examples for a wide range of charts.

Another key thing would be to either allow other users or share the source code (maybe both! less hassle for helping people get started). That way, it’s not just about “Hey, this is cool! But you can’t use it unless you build your own.”

Opening this up to people will probably mean splitting my project time into development and support. It’s a trade-off: would the increased feedback be worth the support load? Depending on people and expectations (here there be bugs!), it might be okay. It might be a good idea to slow down and apply the same discipline we’re adopting on our work projects, too: test, test, test. I think it might be worth gradually opening this up over the next few months, with an eye towards demonstrating it at DemoCamp when I think it’ll help lots of people get started. It’s also highly likely that there’ll be a second Quantified Self conference, so that might be something good to plan for as well.

There are plenty of companies focused on making money by helping people track their life (health, mostly). Me, I want to be able to ask questions about life and figure out how to answer them, I want to inspire other people to try doing that too, and I eventually want to help build tools to make it easier for people to do so. Besides, it’s a great way to practice my development skills without giving in to the temptation to spend all that time on work instead. =)

The more people I talk to about my plans for leaving IBM and experimenting with business, the more real the idea becomes. The more excited and confident I get about it, too, which is a good sign.

Today I sent my formal resignation e-mail, the one that kicks off all the associated HR processes. I named February 17 as my date: four years, four months, and two days after I joined IBM.

I expect to feel more nostalgia as the date approaches, and perhaps uncertainty. That’s all normal, which is why I’m brainstorming and writing down my reasons. The notes will come in handy if I hit a slump. It looks like all systems are go, though. It’s clearly a good idea for me at this point in time.

I’ve found people to take over all of my extracurricular interests. I’ve been braindumping enough throughout my time at IBM to not worry as much about transitions. I’ve always worked on things with the lottery/bus factor in mind: would the project be endangered if I won the lottery or got hit by a bus? (The lottery is highly unlikely, since I don’t buy tickets; I usually look both ways when crossing the street, but one never knows what could happen in the streets of Toronto.) I’ve written lots of notes and shared as much as I could as publicly as I could, and now it’s easy to link things together in a knowledge map on a wiki page that people can even update after I’m gone.

My manager told me of ways back in, and contracting companies that IBM is used to working with. It might be an option. I’d like to spend some time up front seeing if I can develop a business. Freelancing sounds like a reliable alternative, but it’s similar enough to what I currently do at IBM that I think I would learn lots more from trying to build a proper sustainable business with compounding value.

One step at a time. The project that I’m working on looks decent in IE8, IE9, Firefox, and Safari, and it looks a heck of a lot better than it did when I took it over. I’m on track to wrap that up well. Then there’s some HR paperwork to take care of, and more braindumping of memories and thoughts before they fade into fuzziness. Then the transition! Then slowly easing into experiments and feedback cycles and little bets…

“Fourteen?!” my husband exclaimed. I looked up. He was talking to J-, who had apparently called from school asking if she could bring her friends over for pie. Fourteen teenagers in total. Two pies. After some hemming and hawing, he agreed, figuring that it was better to have them over than for them to have pie on some street corner.

We scrambled to get things ready. This meant ditching the comfortable bathrobes and breaking out the stack of saucers that I’d accumulated for my tea parties. As the kids tromped closer, W- directed them to the backyard. Although it was cold and the deck was wet, it wasn’t chilly, and there simply was not enough space in the living room to accommodate fourteen sugar-high bundles of energy. So the deck it would have to be.

W- brought the portable workbench out. We put the saucers and forks on the workbench, entrusted the pie server to J-, and stood back as the kids divided the apple pie and the pumpkin pie among themselves. They were apparently celebrating a fundraising milestone: their club had raised $100 for Free the Children. They had been planning the pie party for a month, but had forgotten to figure out where this pie party was going to take place. Fortunately, W- and I were at home and could give permission.

After the pie, the kids brought out their packed lunches. They shared their snacks with each other. Chocolate was the object of much envy, seaweed the currency of cool. They congratulated themselves on their fundraising, and circled around to repeat their oath. (It started with “I like kitties, and turtles too.”) They planned more celebrations for their next fundraising milestones.

It was much less chaotic than one might have expected. The kids tidied up before heading back to school, giving us the saucers and forks with thanks and apologies, and putting other garbage into a large bowl. It was fun hosting everyone, even.

J- is working on her application for Western Tech’s CyberArts specialized high school program. She’s been organizing her portfolio and revising her application answers. It’s fun watching her application take shape. We help out from time to time with editing tips. At the end of the day, though, it has to be her words, her passion, and and her commitment.

In the beginning, she seemed frustrated. It can be difficult to explain why you want to learn something or what qualities you bring to a program. The first draft took a while. Then she filled it in with more detail, becoming more specific about her reasons. As she put her application together, you could almost see her becoming more and more confident. We helped her remember some of her other accomplishments, and she worked those into her application. She put her portfolio items together, and it was easy to see how far she’d come.

W- has been stellar. He’s been helping her sort through the sometimes intimidating array of requirements and possibilities. My contributions: In addition to the occasional nudge to replace commas with periods and to tweak wording slightly, I also enjoy reading her answers out to her. IA voice-over of sorts, so that she can hear it with confidence. “It sounds so good,” she says, and she knows it’s her words.

We remind her that it’s perfectly okay to not go for this program, and that it may involve a lot of work down the line. That said – drawing, photography, modeling, animation… It fits her interests well.

I think she’s close to the finishing line, past the humps of “Am I good enough for this?” and “Is this the right fit for me?” It will be interesting to see what happens next.

I talked to my second-line manager (the manager of my manager) this week. It looks like all systems are go. Heading into my last three weeks at IBM! By golly.

This weekend was a busy one. I did a cooking sprint: beef stew, a stirfry with beef and cabbage, lots of cookies, two loaves of bread, and a pot of oatmeal. That should make our routines smoother for the rest of the week, giving us time to help J- with her homework.

I also worked on the bugs people have started identifying in Quantified Awesome. =) Sometimes the bugs are embarrassing, but I decided to squish my excuses and let people try things anyway. It’s fun tailoring systems to people again. I remember maintaining Planner Mode for a lively community of Emacs geeks, and I loved making all these little tweaks to help them live and work more awesomely. That was fun. It would be great to do something like that again.

“Why is your window transparent?” a coworker asked me when she noticed my screen. I told her about how I do my CSS theming, and she pulled another coworker over and made me repeat the explanation. Since that seems like something other people might find handy, here it is.

Sass: Syntactically Awesome Sytlesheets

I rarely do CSS/front-end theming work, but when I do, I try to make it as fun and easy as back-end development. I use Sass (Syntactically Awesome Stylesheets) so that I can use nested selectors, variables, and mixins. This makes my code cleaner and easier to write. You’ll need Ruby in order to install Sass, but the tool will give you CSS that you can use on any web platform.

Browser-based tools

I prefer doing the initial tweaking in Google Chrome, because I like the way that the developer tools make it easy to modify the stylesheet. The Chrome CSS Reloader extension is handy, too. Most of the time, I make my CSS changes in the text editor, then use the CSS Reloader to reload the stylesheet without refreshing the page. This makes it easy to manually toggle the display of some elements while allowing me to refresh style rules. If I want to figure out the values for a few simple changes, I’ll sometimes make the changes directly in Chrome (you can use arrow keys to adjust values), then copy the values to my Sass source file.

Colors, sizes, and spaces

A second monitor is totally awesome and well worth it.

Designs rarely specify all the colours, sizes, and spacing needed. To quickly get the color of a pixel, I use WhatColor. This shows the hex code for colors, and allows me to quickly copy the code with the F12 shortcut key. If you want to change the shortcut key, the source is available as an AutoHotkey script.

To make it easier to match sizes and spaces, I use WinWarden to make my browser window 20% translucent. Then I carefully position it over my design reference until the important features match. Magnifixer makes it easier to line things up because it can magnify a fixed portion of the screen. By focusing Magnifixer on the part I’m working on, I can tweak CSS without straining my eyes.

When I know I’m going to be making a lot of changes, I use AutoHotkey to map a shortcut so that I can refresh the CSS with one keystroke instead of several. When I happen to have my USB foot pedal handy, I rig it up to refresh my stylesheet.

Regression testing

Sometimes my CSS changes modify other rules. Instead of laboriously checking each page after changes, I’ve figured out how to use Selenium WebDriver to write a Java program that loads the pages in Mozilla Firefox and Internet Explorer, capturing screenshots and numbering them according to the pages in my design reference. This means that I can run the program in the background or start it before taking a break, and then flip through all the screenshots when I get back.

Cross-browser testing

What’s CSS theming without the requirement of browser compatibility? Someday, when I need to deal with more browsers, I might look into Selenium RC. In the meantime, I develop in Chrome, my Selenium-based program makes it easier to test in Firefox and IE, and it’s easy enough to try the URLs in Safari as well. Virtual machines handle the rest of the requirements.

So that’s how I’ve been doing CSS theming on this project. What are your favourite tips?

We’re in the user acceptance phase for the project I’m working on. There are a number of small things to fix, styling issues that we’d put off until the base functionality was in place. So I fix things and send them back, waiting for feedback.

In the meantime, there’s time to write, and to work on other things. There’s a nonprofit project that I want to do as much as I can on before I go, and I want to leave notes for the next developer. There’s the Community Toolkit that I’d like to add more to before I go.

I’m mapping things out, seeing what else I can share. The things I’ve learned about collaboration have become part of what IBM knows; BlueIQ and wikis and community managers doing awesome things have taken it much further. The Community Toolkit has what I understand about the Connections API, and there are enough people who have used it and even tinkered with it to keep the idea going. The Idea Lab processes and tools have been in other people’s keeping for a year, and they’re doing well. There are people who do Drupal and who do Rails, and my notes are on my blog. This is good.

So now, in the gaps between things to do, I write about the other things I’ve learned from IBM. There’s a lot to write about, and I’ll see how much of it I can put together in the next three weeks. =)