I was going to write this yesterday after dinner, but I happened to find Nadieh (or more appropriately, she found me!) and we had dinner and interesting conversations until late. So the only thing I had time for was packing my bag in preparation for my long trip home.

It was exciting to be back in Melbourne when the weather is warmer. Last year it was so cold just as London was getting warm! The coffees were good, and same for the food.

The audience at CSS/JSConf was really nice to interact with and I think they enjoyed my talk, which was recorded, but I am not sure when it’ll be published, and I want to check it out. Apparently the stenographer was having a field day thanks to my audio glitching experiments:

so I’m curious to relive that.

It was a bit accidented–my browser hung half way when encoding video, which it hadn’t in MONTHS, then the occasional bug that only happened one every twenty times? it also manifested itself. At least the projector played nicely with my laptop. It could have been worse, I say to myself.

Next day I indulged myself and stayed in bed for waayyy longer than was immediately necessary as I am going to spend so many hours in planes and airports this week-end… first an eight hours flight to Hong Kong, then a lay-over, and back to London in a twelve hours flight. It’s upcoming realities like these that make you truly appreciate the beauty of a simple bed on a quiet environment. Where quiet means literally quiet, not artificially induced quietness (via ear plugs etc).

I’ve been away from home for the last 12 days but it feels way longer due to travelling east, and also further down south. Everything is pretty much shifted for me right now. It’s “summer” here where it’s “winter” in London, and I’m wishing good morning to my people as I get ready to have dinner. It’s all a bit confusing.

I’m looking forward to being back and not having to do things such as putting a ‘please do not disturb’ sign on my door every day, or having to take food decisions every day (versus just buying familiar stuff and cooking it with my familiar kitchen accessories in my kitchen), or taking pills to go to sleep, every day (because I am still not used to the +11 hours shift).

I am glad I brought my own pillow with me this time. I used to think that was such a silly thing to do: I was wrong. There’s nothing like your own pillow to sleep on. Except for one night, I have slept really well during this trip, albeit not enough, as there was always something to prepare, somewhere to be, someone to meet.

And as much as I enjoy exploring new places and trying out new stuff, I am yearning to go back to normality. I found myself daydreaming with tea and toast and listening to BBC radio on a Sunday morning. If that’s not homesickness, I don’t know what that is!

One demo: two new bugs!

I thought that since I was going to the Web Audio Hack Day here in Singapore, it would be great to have a more Web Audio focused Media Recorder demo, so I built a little demo that essentially asks for audio permission, then records a short clip of audio, decodes it as an audio buffer and uses it to loop a BufferSourceNode in Web Audio.

You wouldn’t believe what happened next… or would you?

Two Things That Happened When Sole Ran This Demo

1. Chrome Canary Just Totally Gave Up

Aw, snap!

I filed a bug, since there wasn’t really much I could do…

2. Nightly Sometimes Insisted In Returning Some Mysterious 596 Samples Length Which Was Totally Not What I Expected, And Did So Without Following Any Meaningful Reproducible Pattern

596 samples for some reason

I tried to dump the contents of the returned blob once read as a buffer, using String.fromCharCode–perhaps looking at binary data while having my breakfast coffee would enlighten me?

I eat hex dumps for breakfast

As it turns out, no. So I filed another bug.

Try this yourself maybe?


The demo is here: instalooper (sources) … just in case you want to play with the code–maybe it will be fixed next month, who knows!!? Or maybe it is just a bug in my machine and it works in everyone else’s!

Disclaimer: I have not tested this anywhere else than Nightly and Canary. So I’ve no idea of how it works (or not) in mobile.

I have a more complicated version that not only loops the sample but also randomly changes its playback frequency. Sometimes the generated sounds are strangely fascinating. It still needs a bit of interface work, but hey… watch out, Steve Reich! 😎

And now… time to prepare to go to the airport and fly to Melbourne for JSConf.AU! More jetlag, YAY!

To Singapore! (and other unrelated things)

I have been a bit away from the blog lately as I was working on DevTools stuff, and also preparing my upcoming talks this and next week, but I realised that I do miss a good old-fashioned bit of stream-of-consciousness blogging, so here it goes:

Wish me an upgrade

Writing this at the airport, while I hope a big slide deck that Helen has shared with me finishes downloading with this wi-fi. Which is still going at 300mb/second, which for all my hotel wifi standards is AMAZING, but when I said “big” I really meant “big”!

I have also been asking everyone I’ve talked to today to wish me for a flight upgrade. The last time I flew long distance in this direction I had a very strange experience on the morning: I was going to the park for a run, with my headphones and everything plugged in. Then an old frail woman who was trying to load something onto her car asked me for help. I didn’t hear her initially, but I understood what she meant. I took the headphones out anyway, and started helping her, and she was already thanking me. The stuff was really big and heavy furniture–I don’t really know how she ever thought she could load it on the car herself, but I do not know the full background. Perhaps she had explained in the time it took me to remove the headphones! Anyway, I finished loading that stuff into the car and her gratefulness intensified:


I wanted to get going, and I was also a bit overwhelmed with so much gratefulness. I wished her a good day, and left. This had been a bit of an strange experience, I thought. I did my run, went back, eventually got myself to the airport. And checked in. I was wandering around in the airport so I could get myself REALLY tired and then get some sleep when I got in the plane (more about this in my SLEEP travel hacks post), and then I happened to check my boarding pass on the phone to see if the gate had been announced. That wasn’t the case, but my seat was different—I had been upgraded!

Scientifically speaking, I can’t connect the two incidents with a straight face, but sometimes it’s cool to pretend that good acts truly build good karma and good things happen to the enacters.

Obviously I’ve been trying to find chances to do a good act today. I went for an early run in the park, and paid close attention to my surroundings trying to find some elder woman in need of my help, but so far I’ve failed miserably… bah!


I’m quite excited to visit Singapore for more than a short layover in Changi Airport, which is my entire experience of Singapore to date. I have heard the Botanical Gardens are a thing of beauty, and since I like green stuff, it’s probably the only thing I’m really keen on going to when I’m done with the talks and conferences.

I will be speaking at CSS Conf Asia in two days, which will feel like one day thanks to the fact that I’ll spend more than half a day in a plane. Excuse me for the jetlag slurred talk already.

Then on Sunday I’ll be joining the Web Audio hack day for a bit before leaving for Melbourne for JSConf.AU—but that’s for a different post!

Last week-end

I was quite offline last week-end. I literally didn’t touch a computer in two days (unless you consider a phone a computer, but hey).

We did one of those “week-ends in the continent” escapes and went to Torino, which I’d never been to before. It was quite an interesting place–not as “fashion-driven” as Milano, but not as “food-focused” as Bologna. I really liked the Lingotto building, and the race track! The Mole Antonelliana is such a weird and surreal experience–cinema museum included. The archeology of cinema exhibition is super interesting: lots of old machinery and the evolution of moving images. Then… a very odd experience / installation which didn’t make much sense, but made sense within the weirdness of the building itself. The whole thing was like being inside a dream. I also liked that the interactives were mostly aimed at adults, not at kids, although the kids could also enjoy them. But it meant that the interactives were not oversimplified!

I also happened to find a book I didn’t buy the last time I was in Italy because I thought I could just buy it when I came back to London, but I was wrong because it was out of stock EVERYWHERE, and had been regretting ever since. Then, I come back to Italy, and… it was as if the book was waiting for me in the first design bookshop I visited. So perfect.

I’m liking Italy more and more each time I visit. I have been learning some Italian as well, which is moderately easy since I know Spanish and Catalan. I am still not really fluent but I can understand most of what I hear–and make myself understood in restaurants and taxis, etc, so I’m really pleased.

The other cool thing of learning Italian is that I can get books in Italian and not have to wait for or look for the English translation! So I also got a Bruno Munari book–he’s such an interesting figure and his advice is still super current nowadays.

PS Ah, the slide deck finished loading! just as I was going to hit POST. Yay!

PS2 Helen just published this post about the new Responsive design view in DevTools! Woot! Apart from also drawing the Internet Mascot


Metalsmith blog example

I’ve built a small example of using Metalsmith as a blog generator:

Metalsmith blog example

It generates an archives page and RSS feed. It also has a couple useful scripts for publishing to gh-pages and watching for changes. So it’s “batteries includes”.

Clone it:

git clone https://github.com/sole/metalsmith-blog-example.git

Then you can edit away!

In theory Metalsmith can be used to build anything, as it’s just “an static file generator”. But it can suffer a bit of the usual node.js “module decision paralysis”, and documentation quality varies a lot between different modules.

So here’s a complete working example. Enjoy!

Metalsmith blog example, archives page