My brother and I have started a new blog about being more awesome. We called it TwoShay. You should check it out.
I’ll still keep posting tech things here.
Recently I have wanted to chart some cost data I collected on various foods. As a baseline for discussion, here is a very vanilla excel type graph, reminiscent of ones I am certain you have seen in powerpoint presentations:
This is not a good graph for several reasons
- Only provides a general overview of the data – some foods are cheaper, some more expensive, so what?
- Labels feel cramped and ugly.
- The grid is too prominent and distracting, without being very helpful – you can’t read accurate values from it.
The biggest problem is that it doesn’t “invite the eye to compare”. It doesn’t leave an impact. The first step to addressing this is to revisit the data – it’s quite possible you just have boring data. In this case, I improved the data by coding it according to whether it is vegetarian or not.
For the next iteration of this graph, I colored the graph to highlight the vegetarian aspect of the food. To address the other issues, I moved the labels into the legend, and completely removed the grid, instead displaying the values directly on the graph. This technique works due to the low number of data points. You can think of it has “enhancing” the table rather than displaying a high level overview of it. Also, a serif font (georgia) was used.
This is certainly an improvement, but it still has its flaws
- 8 different colors, which distracts from the data, and the vegetarian data is muted.
- It is much harder to identify the food with the data point, now that the labels have been moved into the legend.
I iterated again, moving the labels back down to the x-axis, which in addition to solving the identification problem, allowed me to drop back down to 2 colours. In our initial graph this felt cramped, so I added some more whitespace and also kept the serif font from the last iteration.
This version of the graph speaks much louder. It’s easier on the eye, and the conclusion I want to draw from the data is clearly expressed. I am using this graph (with proper references and notes) on a new information site I’m working on – it’s far from complete but you can follow along on github if you’re interested.
The first graph was made with OpenOffice spreadsheet, the second with a hacked version of flot for jQuery. The final graph was made with a new jQuery plugin I wrote called tufte-graph. There is a meta-lesson here – I spent hours hacking different JS libraries to try and get them working exactly how I wanted, in the end the quickest solution was to just write what I needed.
I use Colour Lovers to find color nice colour palettes. Works much better than trying random RGB codes.
Spend time on your graphs. A picture is worth a thousand words. They are too often neglected, and it doesn’t take much effort to make them really shine.
Developers don’t have enough time.
We’re all too busy working our day job, or looking after our better half, to give our pet projects the attention they deserve.
That makes time the most valuable thing we can give. This year for Christmas, why not give a fellow developer some?
Ticking off an amazon wishlist never really resonated with me, so this year here is what we are all doing instead:
- Find someone’s pet open source project – I’d start at github
- Contribute! It doesn’t have to be much – a spec or two, some documentation, or even just a “hey it works on my box”. Fork, commit, pull request.
- Wish them a Merry Christmas!
That shouldn’t take you more than an hour. It’s a total win all around – you get to hone your chops, they get some love on their project, and the open source ecosphere is improved. If you’re feeling generous, or don’t have any friends, there’s no shortage of projects that I’m sure would welcome some support.
My wishlist is any of the ruby midi projects out there.
I had no idea Working With Rails ran a monthly hackfest. Basically, you contribute to rails, you get points, at the end of the month you can win stuff. To my surprise, I came in at #8 last month and got a free copy of “Make” magazine from O’Reilly.
Sweet. Thank you doc patches.
Obligatory thumbs-up-with-swag photo:
The picturesque Otways served an inspiring back drop to the inaugural Mary Iron Chef Challenge. Tension was high – I had teamed up with the renowned dessert specialist Amelia Ie, pitted against the young superstar couple Yujin and Katie (photo). Chairman Tim flamboyantly revealed the challenge ingredient – Chocolate! – and with a bang of the saucepan lid gong started the 90 minute Timer Of Impending Dessert.
Amelia and I made 3 dishes for this challenge. Our crowning achievement were the Chocolate Jaffa Boxes. As a judge gushed – ‘the rich velvet couverture of the enclosure frolics playfully with the airy mousse, while the mango reminds me of the playful delights of summer’. Accept that translation at your own risk.
Chocolate Jaffa Boxes
- 500g dark chocolate, melted
- 250g milk chocolate, melted
- 1 packed orange jelly crystals
- Generous splash of brandy
- 500ml thickened cream
- 1 Mango
- Spread dark chocolate thinly over 2 trays covered in foil, saving a small amount for later. Refrigerate until solid – this will become the boxes.
- Whisk cream until fluffy (use electric beaters)
- Mix together brandy and jelly crystals, then dissolve crystals in microwave (takes about a minute). Inhale fumes deeply.
- Add jelly mix to milk chocolate, then fold in half of the cream. You fold rather than stir because it helps keep the mixture aerated.
- This bit takes some geometric nouse – take the solid dark chocolate out of the fridge and with a sharp knife divide each tray into 40 portions – groups of 5 will be used to make each box. A diagram here would be nice but I don’t have the tools. The base portion can be bigger than the other 4, as long as they all come from the same strip so that they have the same edge length. Take your time with this step because you don’t want to shatter any of the pieces.
- Assemble each group of 5 portions into a box, using the left over melted chocolate to stick them together. Lookout, here comes some math: 40×2 / 5 = 8 boxes.
- Spoon chocolate mix in to each box, then add a dollop of cream to each
- Slice up the mango and arrange it NICELY on the top of each box
- Refrigerate until the chocolate mix sets (we didn’t do this because we only had 90 minutes, but the ones we left overnight were much tastier)
This challenge was a lot of fun. We got to wear funny hats. Special thanks to Amelia, without whose kitchen mastery I would have probably just served chocolate pieces in a bowl.
Apologies for the absence of tech posts lately, that’s just how life is at the moment. Hopefully have something geekier to write about soon.
A more appropriate name may be “Ghetto Dessert #1”. Once again, I neglected the supermarket and tried cooking with whatever was in the cupboards.
- 1 bowl of oats
- 1/2 can coconut milk
- Caster sugar + maple Syrup OR brown sugar + cocoa
- Soak oats in coconut milk until it is absorbed (longer is better, I left mine for about 90 minutes)
- Mix in your choice of condiments
I experimented with a few different sweeteners – the four listed above individually and also honey. Honey didn’t work so well, but the 2 combinations above I think were winners. Adding fruit to the maple syrup variant would be particularly tasty, but we’re never home enough to have fruit on hand. I’m going to try turning the chocolate one into porridge by warming it in a saucepan. I have another bowl sitting in the fridge that I’m going to leave overnight a la bircher muesli to see just how much the oats can absorb.
And for bonus points it’s vegan – a rare property of my desserts.
UPDATE: Leaving overnight is highly recommended. A tasty non-vegan option is mixing in nutella.
UPDATE 2: Mix in castor sugar, dried apricot and cranberries, then serve with shredded coconut and flaked almonds. This is the best one.
It has a stupid name. The title is the first and last time I will refer to it as anything other than a “Seagate 500Gb external drive”. What is not stupid is the packaging. It’s clear, concise, fun, and most importantly makes me feel like Seagate actually cares about the people who use its products. Observe the following shots of the static packaging and the instruction booklet:
Text on the last frame says: “Note: Times may vary depending on how excited you are about using your new FreeAgent Pro data mover.” Delicious.
I had to format it as FAT32 because as far as I can tell OSX doesn’t support writing to NTFS volumes. This makes me sad. I presume linux can write to Mac’s filesystem, but AFAIK windows can’t, which unfortunately I need to support because that’s what all my family use :( No fault of the drive here, just another windows gripe. Although linux has had NTFS write support stable for a while now, I wouldn’t mind Mac catching up.
It is much quieter than I expected. It’s under full load right now – I’m rsyncing to it.
5 year warranty, so I guess they have confidence in the product.
Initial impression is positive, ask me again when I actually have to restore from it.
Unrelated footnote: Technically I’m back from my holiday, but I’m snowed under with dancing commitments for now so coding updates (and enki updates) will still be sporadic.
UPDATE Just reformatted for Time Machine, YAGNIed the work-with-family requirement.
I’m going on holidays until the end of January. The off line kind of holiday where I don’t see a computer. So sad.
So here is a tasty treat for you to devour until I return. A sneak preview of a Fashionable New Blogging App™ named Enki. It is an alternative to Mephisto and SimpleLog that is built on the principles espoused in my prior writings. The website is built using Enki itself, and the port of this site from mephisto is just about finished, so you know you’re getting code that’s got a real life application. There’s still a few rough edges, but it’s ready enough to start building something with if you don’t mind getting your hands a little dirty. I’ve set up a mailing list for it which I’ll be catching up on once I get back.
On my Mum’s digital camera, when you look at a movie, you get a still from the movie and two options: delete this frame, delete all frames. Delete all frames does not delete all frames of the movie. It deletes everything on the camera. We lost all our Christmas photos, and also a photo of my cake which is kind of depressing.
Don’t use ambiguous or unclear terminology in your UI. “Frame” in my mind refers to a frame of a movie, but the camera used it to refer to a photo – this is likely a case of a system term seeping through to the user interface (or bad translation – it’s a Japanese camera I think).
My brother was impressed by the feature: “Hey cool, you can delete individual frames from your movie”.
Rephrase important decisions in the confirmation, and provide important information. “Are you sure you want to delete all frames?” is useless. Try “This will irrevocably delete all 324 photos and movies on your camera. Are you sure you want to continue?”. And always provide ‘undo’. It’s not that hard to have a ‘trash’ area, only permanently delete the files when you really need the space.
If anyone has any spare Christmas shots they’re not using, please link them up. Mum’s pretty distraught.
In days gone by, before even when I was a young lad, the kids engaged in wholesome entertainment on their holidays. Chasing a wheel down the road, playing with wooden trains, arts and crafts. None of these newfangled electronics. Their eyes were round, not square. Last night my brother and I recaptured this spirit by eschewing the computer, the TV – we built something with our bare hands. A maddening patchwork of skewers and string, cardboard and bluetack. We created the Cockney Monster:
An abominable assemblage by any standards, it was begging for death towards the end. Nevertheless, we left it standing overnight for observation and discussion by the family over breakfast. I stabbed myself in the finger with a skewer while making this. Detail shots and tasty trivia on flickr.
A revolutionary new study reveals being obese increases your chance of cancer. Random fat member of public responds with “Pfft science. Everything gives you cancer these days.” The head of the meat industry claims we are eating nowhere near enough red meat and it absolutely essential that we get more steak in us.
This is why I don’t watch TV. The problem is everyone else does.
You gotta laugh else you get really fucking depressed.
The dynamic map in the header hits home hard, along with the real time death roll. Real people dying right now. This is a masterful example of boiling down your message and making it count. Even though they just make the names/photos up, it still works.
Allow me to gloat for a moment. Please turn your attention to changeset 7692 you’ll notice my name in the credits. So it’s not much, but there’s a certain amount of geek cred there.
The mirror to my previous misadventure, The Road To Berlin
Saturday, 5:30pm: And they’re racing!
6:30pm: Arrive at airport
6:40pm: Shoes get wet by an erratic shower
6:55pm: “I’m sorry sir, check-in for Frankfurt just closed. Please come back tomorrow”
8:41pm: Arrive at “dress to impress” party in t-shirt, fisherman’s and sandals
Sunday, 3:00am: Catch up on work emails
5:30am: Fall asleep on floor
9:00am: Morning, sunshine. More work.
Noon: Prost! Not eating chicken for lunch.
3:15pm: Admonished by the polezei for dancing
4:16pm: Pass out on the side of the road outside Oktoberfest
4:50pm: Scab 80c off French guy and spend last Euros on a train ticket
5:42pm: Arrive at airport, with a little help from my friends
6:20pm: Push to front of check-in line, wailing “I’m going to miss my flight!” (lie)
10:00pm: “I’m sorry sir, we don’t have a vegetarian meal for you. Have a bonus roll-with-cheese.”
3:00pm: Skip breakfast by nodding off during serving
5:35pm: After taxiing to the terminal, faint
5:38pm: After exitting the aircraft, faint
5:46pm: Eating chocolate while lying on the floor of business class
8:05pm: “I’m sorry sir, we don’t have your ticket for this flight”
8:15pm: Aquire ticket (5 minutes prior to checkin closure)
8:22pm: “Excuse me sir, Absolut Vodka for you?” (pass)
Tuesday, 1am: No vege meal booked, but the vege+fish one only has fish in the salad
1:16am: French lady in 59B gives me her icecream
5:36am: Touchdown in Melbourne, 1 hour ahead of schedule due to a roaring tail wind. Fantastic.
5:46am: Exit plane. Don’t faint. Fantastic.
5:55am: Exit Melbourne airport, having passed through duty-free collection, passport control, baggage collection and quarantine in under 10 minutes. Fantastic.
5:58am: Walk straight on to a sunbus that departs instantly. Fantastic.
6:55am: Asleep in own bed. FANTASTIC.
9:00am: At work, on time. Only a day late.
Don’t ever let it be said we were left hungry at RailsConf Berlin.
With an attendance nearing 1000, sating the herd could not have been a trivial feat. The staff at the Maritim stepped up to the challenge, and were clearly in their element serving such a large audience. An all-you-can-eat buffet each day for lunch maintained the air of a multi course delicacy. The salads and desserts in particular were exquisitely presented, with small serving platters (shot glasses, for example) placed alongside the main serving giving the impression that the dining party could be counted on one hand, rather than the illegal quantities that would in fact be required.
And the variety! Servings of lentil, tomato, potato, cous cous, capsicum and cucumber salads, cheeses, chillies, olives, seeds, beetroot, broccoli, breads, fried potato, rices, eggs, pestos, coleslaws, mushrooms, lasagne, curry – all a feast for the eyes as well as the tongue. Desserts included divine fruit combinations – fig and casois cream, banana and cherry tart, cream and mango ring cake, berry jam – and a chocolate mousse as light as the clouds, lightly encased in a delicate chocolate sponge. Individual truffles littered among the main platters made for a decadent final cadence.
My only criticism, reluctantly, is the hot food really suffered from the excess of scale. Presentation was clearly below that of the cold dishes, and “hot” is probably too generous an adjective. The taste of the lasagne and the broccoli was bland in comparison to exciting array of salads, but it did provide a nice anchor to the dish. I can’t comment on the uninteresting choices (meat), so maybe these redeemed the mains.
A more general note to close: If anyone ever tells you it is difficult to be a vegetarian in Berlin they are lying, and you should probably consider all of their opinions suspect.
EDIT: Day 3 was shit – cardboard potato, bland carrots and something so forgettable I’ve done just that.