PAF #5 – LifeRecorder Show and Tell

It’s actually pretty functional! I’m pretty happy with the way this turned out in a fortnight, though it needs some styling and UI love.

Grab the APK here .

I’ve also made a video to go along with the screenshots:

Suggestions for what to improve or features are very much welcome! On a side note it does use a substantial amount of battery though that’s somewhat expected…


Stockholm Int’l Toastmasters CC #8 – Tips for Designing Visual Presentations

When I was in Sydney I was a member of a local Toastmasters club for around 2 or so years. Sad to say I wasn’t very committed about it and wasn’t a very regular participant.

Ever since moving to Stockholm with a little time on my hands I’ve joined a local club (actually, the only english speaking one within a reasonable distance!) and started to get a little more serious. Here are the slides for a speech I gave recently:

Tips for Designing VIsual Presentations

The slides don’t make very much sense without the presenter, but the next best thing you can do is follow along the notes in the actual ppt.

I highly recommend Toastmasters to anyone interested in improving their speaking skills! It’s also a fun way to meet new people in a new country 😛

The Lion and The Gazelle

This is one of my favourite quotes.

Every morning in Africa, a gazelle wakes up. It knows it must run faster than the fastest lion or it will be killed. Every morning a lion wakes up. It knows it must outrun the slowest gazelle or it will starve to death. It doesn’t matter whether you are a lion or a gazelle: when the sun comes up, you’d better be running. ~ a quote from The Economist 1985.

I get complacent, a lot. I despise the idea of being complacent, but I enjoy it when I’m in a state of one. This is nothing unique to me though, it’s just what naturally happen when one becomes better at things. It’s comforting to be good at something. When someone tells me that I did a good job, it polishes my ego, verifying that I don’t need to do anything more. It’s a good enough job, and I can stop.

But the truth is, I’m not even running. Let’s use an analogy in this post.

Once every year, there are two races that are held in different locations: one is a marathon in a desert and another is a 10 km run in the forest. The marathon has 1000 runners competing in it. All of them are used to the harsh heat, lack of water, and long distance torture. The price for finishing the race is large, but only very few can make it even to the last phase of the marathon. The forest short race however, has only 10 runners competing. It’s far from a marathon, and more like a walk in the park, where everyone will be fed fruits along the way, so that they can enjoy the run. If you win the forest race, you get nice lucrative prizes, which are, on average larger than the desert race. But it varies, in some rare years, the prize for the desert race is astronomically larger than the forest’s. No one knows when this happens though.

Every year, I walk fast in the forest, and I walk faster than other nine among the trees. I can’t see how fast the desert runners have blitzed passed me in terms of actual speed. Fortunately they can’t see me either, and I get to win because only I, and people slower than me race in the forest. Oh, I forgot to mention, it’s a VIP entry only, so the same people do the race with me every year. But here’s the scary bit, once every decade, at some random time, the entry is open to the winner of the desert marathon who doesn’t get much in the desert marathon. A kind of consolation prize if you like.

I don’t know when this marathon winner is going to join the forest. But I know one thing, when it happens, I will lose and it will be hard for me to give away the prizes I’m used to receiving every year.

I better start running.

PAF #5 – LifeRecorder

There have been numerous occasions where I have been in a casual conversation with someone and gone “damn that was a good line” or “I am so going to record this for your wedding day”. A particularly infamous example I tell people about comes to mind. During a discussion about future marital prospects:

uswhat kind of girl would you like then?
him: any one with a hole is fine

Would have made for an interesting wedding day speech recording 🙂

Apart from blackmail material, how many times have you thought “that’s a good idea, I should write it down later” only for it to disappear in the pit of ideas I thought of but forgot and someone eventually implemented?, particularly during a conversation with someone else where pen and paper weren’t accessible?

For the longest time I’ve wanted something which could easily capture moments like this; an always on recorder that you could say “save the last 60 seconds of what you heard”. Except it fell into the too crazy/difficult to do realistically bit till I saw Kapture and thought I wasn’t going to wear some wristband just to get it done. So here’s PAF #5 in a not so pretty picture:


Assuming I figure out how to do the technical bits, there’s a key difference between this PAF and the previous ones. By hook or crook, this one is definitely going on the play store.


PAF #4 GeoParty Show and Tell

Go try it out at ! It should work just fine if you login on your box with one name and your phone with another.



It’s mostly functional 😉 It’s done using plain old setInterval ajax calls as opposed to WebSockets and since all of the command sending and message retrieval is done via REST endpoints, you could write your own external client for it.

Unfortunately I had to break some rules to get to this point (this took two fortnights), but I put it down to our trip to Iceland and London, which is another story altogether. There was already a usable frontend and backend in the first fortnight, the rest of the time was figuring out what other features to add, mostly frontendy work.

I remember talking to Scott H about the project early on and he mentioned that it sounded like there would be a significant amount of frontend work. It turned out that frontend work consumed the vast majority of the work involved, coming second only to time wasted flip flopping between ideas. Writing the backend using Go turned out to be relatively easy; it’s a simple language, you can get your head around its use of channels pretty quickly and the documentation is quite good.

Writing the frontend was a different matter altogether. You can spend hours just getting the bits and pieces aligned and working the way you want it to, but all too easily decide that some bit doesn’t quite work the way you want it to and just spend another few hours massaging it so the bits get aligned again. Doing web-based frontend work gives you a really quick feedback loop, but is consequently both a blessing and a curse; it’s easy to get lost “tidying up” or “improving” how a frontend looks when you are given free reign over how it should look. Looking at the final outcome, it would probably have taken alot less time to build if I knew what I was coming up with.

In terms of directions and ideas this could go, there’s a number of things I’d like to try if I worked on this in the future. The page itself is very general – it does room, private chat and sending of files. But it could be streamlined for specific use cases; I could imagine a “geoshare” site using the same backend that focused on sending files between people in the same location. Or richer interactions with external services; there is an unexposed API for registering webhooks that trigger on specific regular expressions, which is why you can say things like “weather in here” or “weather in sydney”. It could be hooked up to external services to provide IRC-style bot games like hangman or geo-aware wikipedia queries.

What do you think? Could this be turned into something bigger? Would love to hear your thoughts 🙂