Fun things to do for free in London (list)

[with help]

  • Roller skate from Regents Park to Hyde Park
  • Walk along the canal behind London Zoo and try and guess the animals from the backs of their cages
  • Peer into the houseboats along Little Venice and tell stories about the people inside
  • Run a sprint along the Millennium Bridge and feel it vibrate underneath you
  • Take a friend’s kid to the Launchpad in the Science Museum
  • Stage an improvised drama on the street, walking
  • Invite your friends for a football game in the park
  • Have a campfire – shout out if you know where it’s possible to set up a campfire legally in London

Small wins (list)

  1. Learn the lyrics to your favourite song, so you can sing along to it as you walk down the street.
  2. Oil a door handle that’s always been just a tiny bit awkward, with a can of WD-40 that has a long nozzle.
  3. Go to a pottery exhibition and buy a mug that feels really good in your hands. Enjoy drinking out of it every day.
  4. Pick one of your favourite old books and put it in the bathroom to dip in and out of when you feel like it.
  5. Put just one picture up on the wall. If you don’t have picture hooks, buy them now and then you’ll be ready next time.
  6. Notice another person in your organisation that you suspect wants to start a fire, and arrange to have lunch with them.
  7. Spray your favourite leather shoes to make them waterproof, and then smile smugly and gratefully next time you accidentally step in a puddle with them on.
  8. Create a playlist of songs that cheer you up, to have ready just in case.
  9. Carry a small Ziploc bag with a couple of tablets of medicines you find useful (e.g. Alka Seltzer for excess, Tums for heartburn, Zirtek & Beconase, for hayfever, Ibuprofen for headaches, Strepsils for sore throats). Replenish when you use one, and add to it when you wish you had something.
  10. Start a list of ‘Small wins’ of your own, and add the first item to it.

In grateful homage to Nicholas Bate.

Running a Premortem

In the past, running a Premortem has been the single most helpful exercise I’ve found for dealing with complex, risky projects. This is the core idea, but there’s a little more to it.

I’m not joking when I say that a premortem refocused the hardest death-march I’ve been on, and another premortem was a key step in planning for a complicated (and ultimately successful) $12m fund-raise. If all goes well, it’ll help highlight your biggest fears, and proactively figure out steps for how to defuse them.

In short, this is how I run them:

  • Gather a couple of other core people/project leads with complementary expertise. Allocate 2 uninterrupted hours (though you might not need all that time once you start to get efficient at them).
  • Sit down and read the above Guardian article through together at the beginning of the session.
  • Have fun telling each other the nightmare story. I usually set them at the next major milestone, perhaps within the next 6 months or so. Make it specific and vivid, e.g. ‘The CEO of X is on stage announcing their partnership in October with your major competitor’ or ‘We’re out of money and don’t exist, and you’re back to working at your previous job you hated.’
  • Set a timer for 15 minutes or so, and separately in silence each scribble down as many potential reasons why this terrible future came to pass, e.g. ‘Their CEO tried it out and happened to get a buggy version and they lost faith in us’, or ‘The lawyers axed the project because of regulatory hurdles’. I usually use either Google Docs or postits to make the following phases easier.
  • Race through everyone’s items out loud quickly. There will be duplicates and related issues – as you go through them, place them into groups.
  • Then, for each group of issues, ask ‘what could we do to fix/de-risk this?’. [Maybe do this in silence individually first too]. You’ll start to see that there are a few things you could do that will help considerably de-risk multiple issues at the same time. Assign one person to be responsible for each approach you agree to act on.
  • By this point, you should have felt like you’ve looked into the abyss, but come out the other side and achieved a measure of catharsis. There’s something about the perspective you get from doing this exercise that makes it much easier to make hard choices (I find).
  • Set a date to revisit in 6 weeks (to make sure you actually addressed the risks you’ve just identified, and see where things stand).

 

“Oh, that should be easy – maybe a few minutes…”

Hearing those words makes me feel like I’m tied mutely to a railway track, unable to scream for help as a train thunders towards me. We humans are walking sacks of blood, bile and bias, and estimating how long things will take brings out the worst in us.

A product manager recently asked me if one can get better at knowing whether things are easy or hard, and how long they will take. The good news is that with practice, you can help people estimate much better with your help than they would on their own.

Understand the problem you’re trying to solve.

If you don’t understand the problem well enough, you’re certainly blind to its potential complexities. Product managers are often in a *better* position than anyone else!

Understand what’s involved in the proposed solution(s).

This can be the trickiest part for non-engineers, because the details of the solution may sometimes be pretty arcane. Here’s what you can do:

  • You can go a long way by asking good questions about how things work, and what’s involved in the solution. Listen carefully to the answers. If they don’t make sense, ask for a higher-level explanation, or from a different person. Explain it back – that will make sure you’ve got it right and help you internalise it. Take good notes. Over time, you’ll start to see how the pieces interconnect, and what problems are similar to one another, and this will get easier and easier.
  • Don’t ask for an estimate for the whole solution. Break the solution down into pieces, estimate the size of each piece, and add them back together. In my experience, people can’t reliably estimate how long things will take beyond a few hours – so if the estimates are much bigger than this, break the pieces down into smaller and smaller chunks.
  • Be the rubber duck!
  • Offer to pair-program with a developer during the unit testing. You’ll get a really deep understanding of how the system works, and where the difficulties lie. Better still, if you write your tests before writing your code, your test suite provides a kind of score card for how close you are to a solution, and you’ll reduce time spent in QA.

Be aware and on the alert for pitfalls and cognitive biases that lead to poor estimations.

Human beings tend to be lazy about thinking through all the pieces for a complete solution (just focusing on the major parts, or the interesting parts, and ignoring the detail or the final 20% to make things perfect that takes all the time). They also tend to focus on the best case (if everything goes right) and ignore all the things that might go wrong. You never know what will go wrong, but if you have a sense of some possible pitfalls, you can factor them into your estimate. Possible approaches:

  • Start by asking out loud ‘what are the hidden traps, complications, edge cases, difficulties or things that could go wrong. When we did similar things in the past, how long did it end up taking? Were there surprise pitfalls that made it harder than we anticipated?’ Or run a premortem. You’ll get much better estimates after this discussion.
  • Use Planning Poker as an estimation approach. Each person makes an estimate in isolation – this forces them to think things through, and avoids estimates being dominated by what was said first or most loudly. The discussion afterwards creates an informed consensus view, and provides immediate feedback for people whose estimates are wildly off.
  • As a last resort: make an optimistic estimate and double it.

Learn from feedback.

  • Force yourself (or the project team) to make an estimate in advance, then during the project retrospective, compare the actual time taken to the estimated time. That would be the best way for everyone to learn from feedback! ‘We thought it was going to be X, but it turned out to be 2X’.
  • If things take much longer than anticipated, ask how we could have predicted this in advance. That might help you avoid similar estimation mistakes in future.
  • Notice if certain kinds of tasks tend to take longer than anticipated.
  • Notice if certain people tend to be inaccurate, and give them feedback on this.

Two-level tagging

Have you ever had trouble deciding where to store a file on your hard disk? Or worse, had trouble finding it later?

When you store a file on your hard disk, you have to decide which folder to put it in. That folder can in turn live inside other folders. This results in a hierarchy, known in computer science as a *tree*.

The main problem with trees is that sometimes you want things to live in multiple places.

Tagging provides an alternate system. Tags are a lot like folders, except that things can belong to multiple tags. However, but the tags can’t themselves belong to anything. So you have just one level of organisation with no nesting.

The main problem with single-level tagging is that it’s too simple. We want to be able to use fine-grained categories (e.g. ‘lesser spotted greeb’) that themselves belong to higher-level categories (e.g. ‘greeb’, or even ‘bird’ or ‘animal’). But we said that tags can’t themselves belong to tags.

Described like this, perhaps the solution will seem obvious to you too. We want things to belong to multiple tags, and for those tags to sometimes belong to other tags.

I built this into Emacs Freex, my note-taking system.

For instance, I have tagged this blog post with ‘data structure’ and ‘blogme’. In turn ‘data structure’ is tagged with ‘computer science’ and ‘blogme’ is tagged with ‘writing’. So I can find this blog post later in various ways, including by intersecting ‘computer science’ and ‘writing’.

This gives you the best of both worlds: things belong to multiple categories, along with a hierarchy of categories.

Setting up your own domain name and website

Someone asked me recently about getting their own domain name and setting up a website. I’m not very good at this stuff, but I have been through it once or twice, so I thought I’d at least offer this up in case it’s useful.

Let’s say you want to buy example.com, and set it up as a series of static informational pages about Example Business Inc, along with @example.com email addresses. There are (at least) 3 ways you can go:

1) the standard method

– Grab the domain from GoDaddy (or any other domain name registrar – they all do basically the same thing). It’ll cost you $10-20 for a year or two

– Then you need to find a place to host your site (e.g. Rackspace, Dreamhost). You’d spend c. $10/month to rent space on a server, point your new domain name to the server’s IP address, write and upload some html and images, and away you go.

– You then need to set up email addresses. If it’s GoDaddy, I think you’ll be able to set it up to forward your email to an existing account without too much trouble.

– This is what i had to do with Memrise because I wanted control over everything. Honestly, it was much much more complicated than i had anticipated to figure it all out.

option 2) use Google

– Use Google to register your domain name

– I think that’ll automatically set you up with Google Apps (custom Gmail, Calendar, Sites, Blogger, Docs etc.) for free.

– Then you can set up the design and content of the pages of your website with Google Sites.

– So then you’d all use a custom Gmail interface to check your @example.com address, and have access to blog.example.com, calendar.example.com etc. I’m a big fan of Google Apps.

option 3) Weebly (or some equivalent competitor)

– Besides Google, there are a variety of companies that help build a site. I’ve heard good things about Weebly, but haven’t closely investigated it for myself.

– Much like Google Sites, it looks like they’ll do most of what you’d want: help with design templates, deal with the hosting, potentially help with domain names, and a bunch of other stuff. Nice!

Conclusions:

– As long as your needs are simple, I would consider the Google/Weebly approach, since I think it’ll be the most straightforward.

– Down the line, if you decide that you want to build something more complicated and interactive, you can always hire a programmer and switch from Google/Weebly to your own hosting set up.

– If you have someone to help who enjoys techie stuff or has set up their own site before, then setting things up with GoDaddy and your own hosting will probably go smoothly. But otherwise, a company like Google or Weebly that’ll do 90% of the work for you, so you can focus on building a great site 🙂