Shoyu Ramen

shoyu ramen

Soup is not a meal.

Anybody who follows me on twitter, flickr or instagram has probably seen my almost perverse obsession with making Ramen. I started this a few years ago, making something approximating a bowl of noodles, but lately I’ve been trying to up my game. Do it right.

I got serious about it.

But that’s me. In all seriousness, you probably don’t want to make this at home. If you’re lucky enough to have a noodle shop in your town, go there. Let them do the work. This is not easy. To do it right, you have to get started the day before you want to eat these. Maybe two days ahead. You can do it in a day if you’ve got about six hours to kill, but even then, it won’t be quite right. You’ve been warned.

I thought I’d blog this recipe (or rather, set of four recipes all compounded together into a bowl of deliciousness) but decided to instead plug the excellent Takashi’s Noodles from whence these recipes came. I’ve been modifying them and cutting corners the whole way, but really, this guy knows what he’s talking about and it’s a great book. One of these days I’ll try my hand at Udon.

I would also like to send a shout-out to Sanko on Queen Street West in Toronto. They have all kinds of Japanese foods and ingredients on hand including the excellent Toronto Ramen noodles from Marufumi Foods in Mississauga.

The Incredible Resolution of the Olympus OM-D E-M1

And by “resolution”, I mean, I am making the resolution to take more pictures with this camera in 2015. See what I just did?

I like cameras.

Olympus OM-D E-M1

OM-D E-M1 Action shot with Sony RX1

Cameras have always had a special place in my heart. Designed to be held in your hand, a good camera feels like it belongs there. As an imaging instrument, they capture a scene by gathering photons through a focusing mechanism – usually a lens – and stacking them on a sensor. At least that’s what happens in a digital camera.

Think about that for a second. Photons.

When you take a picture, you are literally capturing a moment in time. My inner physics nerd freaks out a bit when I think about this too deeply. Photographs may well be our best proof of time’s existence. Sidebar, if you want to read about the elusiveness of proving time, Dan Falk’s In Search of Time: Journeys Along a Curious Dimension ( link) has nothing to do with photography but is pretty interesting.


Man hovering outside of GDC. Shot with the OM-D E-M1 and a Voigtlander 17.5mm F0.95. Manual focus.

Show a picture to one or more people who were in that place at that time and they will tell you, “Oh yeah, I remember that.” The image can take you back there.

Humans have been taking pictures (or, if you’re more serious about photography and want to sound like a prat, “making photographs”) for almost 200 years now. In that time, we’ve seen a couple of technologies come and go, though the death of film is somewhat up for debate. For the sake of argument, I’m going to claim it’s over.

As 2015 closes in, we’re seeing mirrorless cameras finally usurping the dominance of the once-ubiquitous DSLR. The tech is moving quickly too. Late last year, Sony released the first interchangeable lens full-frame mirrorless cameras. They’d previously managed a proof-of-concept with the RX1, a camera that can produce stunning images if you can put up with its incredibly poor performance and quirky controls and happen to like shooting in 35mm focal length (I do). The A7 series is an impressive line of cameras that one year later is already seeing its first revision in the form of the A7 mark II. Reviews are starting to come in and most of them have people gushing over it. “It boots up in under 2 seconds!” exuded one reviewer. “It focuses pretty fast!” wagged another.


If you want a camera that’s properly fast, look no further than the still amazing Olympus OM-D E-M1. Behind that mouthful of letters is a camera that screams capability. It will blow your doors off it takes pictures so fast. It will melt your face with its incredible electronic viewfinder.

It will boot up and shoot about six frames before the A7m2 has powered-up. (not actually tested with science!)

That’s right.

“But you can’t get a good image with that tiny sensor.”


Yes you can. This thing produces really sharp 16MP images.

sony a7r + voigtlander 15mm f4.5

Deb’s Sony A7R with Voigtlander 15mm Heliar M-mount lens on a Metabones adapter. Shot with OM-D E-M1 and 12mm F2 Olympus prime lens.

Olympus is making some really excellent cameras these days. Rumor has it, they’re coming out with a new E-M5 in the spring with some kind of crazy sensor shift technology that boosts the sensor up to an “effective” 40MP. Who cares? The E-M1 is the bomb. And the old E-M5 is still a plenty capable camera.


“Oli” on an Oly E-M5, Voigtlander 17.5mm prime at F0.95.

This post is my commitment to get out and shoot more pictures.

Blank Page

It’s autumn in 2014.

I’ve been staring at this blog for a few weeks now and it’s been taunting me to write something. Anything. I’m working up to it, but the pre-existing mass of material is preventing me. So I need a reset.

Whatever it is, it’ll be something boring. Maybe a review of a television program. Maybe a book review. Maybe a comment about my favorite camera. Something to create forward motion.

I like writing.

GDC 2014

I was fortunate to be able to attend the Game Developers Conference in San Francisco this year. Thanks to our organizers and IT staff for all the hard work they put into making everything run so smoothly.


My GDC14 Flickr Set

This was the first year Mozilla had an actual booth on the show floor and we put it to good use demoing our Developer Tools alongside some fun games. We showed off our new Canvas Debugger (should be landing next week!), the Shader Editor as well as our Debugger and our other inspection tools. People were really receptive to the Canvas tool. The Shader Editor got a fair number of positive comments as well. I was also able to show off our Network panel as a temporary solution for inspecting game assets like textures.

Another well-received demo was a setup where I paused my desktop JS Debugger when receiving a device orientation event on my phone. I loaded the three.js DeviceOrientation demo on my phone’s browser (Firefox for Android). I then connected the phone via USB to my laptop and launched our remote tools via the “connect” option. Opening the Events panel, I was able to pick “deviceorientation” as a category and selecting that caused execution on the phone to immediately pause with my desktop debugger showing the exact location.

Debugging device events is easy to do on a mobile device. I was also able to demo our Shader Editor running on mobile which was pretty cool. Editing shaders in real-time running on a remote device is some real science fiction level stuff.

Having the kind of immediate feedback for WebGL (and soon WebAudio) that our tools provide is kind of a big deal for people who aren’t used to living in a dynamic environment like a web browser. There is lots of opportunity in this space to make tools for game developers that are fun to use and interactive. You can literally program your game while playing it.

This feels like a tipping point for games on the web. There are now multiple engine developers offering the Web as a bona fide deployment target. Three big engines have reduced their pricing models to the point of being effectively free for most developers and that happened just this week. This is a big deal and I think we’re going to start seeing a lot of game publishers shipping games to the web very soon.

We also weren’t the only booth showing off HTML5-related game technology. Nintendo is shipping a “Web Framework” around a bundled WebKit shell for deployment on the WiiU and had a pretty sizeable installation to show it off. Unity is also making that a deployment target. Various other booths were demoing HTML5 games and tech.

In the emerging technology department, head-mounted displays were in full-evidence. Sony just announced a new piece of head-gear for the PS4 and there were some other vendors kicking around similar technologies. At this point, it seems obvious that head-displays are going to be very real, very soon. The lines of people at Oculus’ displays were a constant stream of humanity.



(This post is not really Mozilla-related, so if you’re not interested in open source flight-controllers and software, you can stop reading here. There are some parallels though and I draw a connection later on, so I did decide to push this to

A few weeks ago, a friend said, “hey, 3D Robotics has a sale on two of their drones right now.” This is exactly the kind of thing friends shouldn’t say to friends who are of a certain disposition – a highly-suggestible technology geek with a love of flying things and photography.

So I did a little research. And a little more research. And then a little more research… I did a lot of research and ultimately decided that the drone I wanted was not one of the two drones 3DR had on sale. The deal was a free GoPro Hero 3+ Black camera or 200 dollars off, I think. I looked hard at the Y6, but being a multicopter noob, it was a bit intimidating as a first vehicle. The drone I wanted was the IRIS which was still in “Developer Preview” mode but shipped ready to fly and promised to be a good platform to learn on. They’ve since closed orders on the machine and are shipping the consumer version sometime in December.

That weekend I bought a Heli-max 1SQ Vcam and proceeded to begin crashing it around inside the house. I nearly lost it after an exhilarating 10 minute flight around the park that terminated in crashing into a tree.

I was totally hooked.

I ordered my IRIS that Sunday night. Astoundingly, it arrived direct from the assembly plant in Tijuana that Thursday. I was all set for a 2-4 week waiting period, but was denied the wait. Unfortunately, the weather would force me to wait before I could take it out for its maiden flight. Since getting my quadcopter, I’ve become even more obsessed with the weather and frequently ping Billy Bishop airport for METAR weather codes since they’re nearby.

First flight happened on a blustery Wednesday afternoon. We went to Woodbine park in some pretty windy conditions, but I was dying to get some airtime with this thing. I did a few quick test launches before boxing everything back up and hurrying to the car because of the wind. First flight was a success!

That weekend the weather cleared and we had a really nice day on Saturday. That’s when I did my first real test flight.

A word about setup. There is a fairly lengthy bit of documentation on and the instructions pages on

The one thing you really have to do before you can make use of autopilot is calibrate your compass! Mine was still carrying the calibration from the factory in Tijuana.

If you watch the first video above, I go onto autopilot around the 56 second mark and it has a hard time hitting the waypoint (I later learned that you need to set a reasonable acceptance radius on each waypoint in the flight planning software). At 2:45 it flew out of bounds over some trees. At 4:50 it did a slingshot spiral out over the pumping station which was pretty spectacular. Each time I was able to cancel autopilot and manually control it back to ground.

So that was educational. I spent the rest of the weekend calibrating and then recalibrating. The onboard flight software is particularly sensitive to this calibration and if you do it incorrectly as I did the first time, it won’t even let you arm the craft for take off and will just flash a yellow warning light at you. The documentation is not exactly helpful in figuring out what the problem is, so I had to go back to initial configuration to guess what had gone wrong. Since calibrating it properly, control has improved and waypointing works flawlessly.

I’ve also learned a bit about using a GoPro camera. The Hero 3+ now has a “protune” option for video that drastically improves stability and rolling shutter. It takes pretty excellent video now. I’ve posted a couple of other videos showing my first successful auto-piloted flights including landing.

This stuff is a lot of fun, and I’m experiencing some of the “developer preview” speed bumps along the way which I’m more than happy to absorb. I find the documentation is pretty good, though the flight planning software screenshots (either Mission Planner on Windows or APM Planner on Mac) rarely match what’s in the instructions.

I also experienced a bit of deja vu trying to figure out which site to find the right documentation on. Feels a lot like Mozilla in some ways where you have a bunch of inputs and a bunch of outputs and its up to the user to figure out how it all fits together. Programming the radios and PIDs is still a bit of a mystery though the presets the IRIS came with are excellent right out of the box.

The other gem in all of this is the Android flight planning software. There are two of them, but I’ve been running Droid Planner and am pretty happy with it. The other option is called AndroPilot. They both seem to have different capabilities and are both on github.

I still have a lot of learning to do to optimize the controls to my liking. Fortunately, the software is all open source. Now if the wind would just die down I can go out for a flight.

Pumpkin Waffles

Yo, I heard you like pumpkin waffles on your Canksgiving. Well, I’m here to help you.

Here’s a recipe that will make you about 10 delicious, pumpkiney waffles.

  • 1 tsp sugar
  • 1 tsp dry yeast
  • 1 cup canned pumpkin puree
  • 2 cups warm milk
  • ¼ cup honey
  • 1 stick (4 oz) unsalted butter, melted
  • 2 cups all-purpose flour
  • 1 tsp ground cinnamon
  • ½ tsp ground nutmeg
  • ½ tsp ground ginger
  • 2 tsp pure vanilla extract
  • ½ tsp sea salt
  • 2 large eggs, at room temperature
  • ¼ tsp baking soda (optional?)

♣ About 8 hours before cooking, combine the dry ingredients (minus the salt) into a large mixing bowl. Melt that stick of butter in a pot then add the honey, vanilla extract and milk. When that’s warm (don’t boil it!) stir in the pumpkin sauce until it dissolves. Let that cool for a bit and when it’s just a little warm, stir it into the dry mixture.

Cover the batter and let sit overnight.

♣ In the morning when you’re ready to get your waffle on, add your salt to the batter and separate two eggs. Drop the yolks into the batter and mix ‘em in. The batter should be nice and fluffy from the yeast activity during the night.

Turn on your waffle iron and get it heating. Add some canola oil or butter to the grids if they need it. Turn on your oven to 200°F and put in a cookie tin with a drying rack over it. These’ll keep your cooked waffles warm and crispy until you’re ready to eat.

In a chilled metal bowl (I put mine in the freezer for 10 minutes), whisk the egg whites until peaky. Fold this gently into the waffle batter. It should run through the all the batter, but still retain some airy egg white bubbles.

Cook ‘em up as per your waffle iron’s recommended method and Enjoy!


Note, that I neglected to include the Baking Soda because Bittman didn’t call for it. I expect adding that will make the batter even poofier in the morning. Up to you.

PS, recovering from post waffle coma. They’re a little denser than the standard waffle. Delicious. Taste like pumpkin pie. Oh god halp.

Yelp and How Not to Run a Community

3505035923_23c034315f_qI used to like Yelp. Despite the occasional rumblings about “extortion” tactics[1, 2, etc], I found it to be useful. I also got a kick out of “playing the game” of checking into locations. It was fun, at least until they changed their frecency algorithm*. There were badges. My friends did it so there was a social aspect to it. I like to write reviews of things so this seemed like a good place to do that.

Then last year I signed up for “Elite”. This gets you a little badge on your page that says you’re one of the frequent users of Yelp. I tend to scan most restaurants’ reviews for the elites as they tend to have a bit more weight compared to the casual users. They’re the worldly ones. The people who’ve been around a bit and know what they like — even if their tastes aren’t always the same as mine.

But you know, writing reviews takes time. I’ve been really busy this year with work and I don’t have the same amount of time for personal writing. And I have this blog that I neglect. You know, excuses.

Then I got this “compliment” from the local Yelp Ambassador (their name for community manager):

The world needs more from the master of the grill… just sayin’

If there’s one way to sap the fun out of something, make it an obligation. Or worse, a veiled threat. I’ve had 3 “reviews of the day” this year. I’m pretty sure at least one of my reviews helped one of the local restaurant-bars out during their opening. I was writing quality reviews, just maybe not in the frequency that the Yelp Overlords liked. So I wrote less.

Then this weekend I received this:

AUG 30, 2013  |  09:57AM PDT

As you know, Elite Squad members are viewed as role models for the rest of the community and that comes with the expectation of maintaining a certain level of activity on the site. We couldn’t help but notice a drop in your contributions on Yelp.

While we’d love for you to continue to be a part of the Elite Squad, we’re going to go ahead and remove your 2013 badge at this time, with the hope you’ll continue to participate on Yelp to whatever degree you’re comfortable. If you should choose to become active again, and would like to regain Elite status, you can nominate yourself here:

Regardless of your decision, we think you’ve been a great asset and are truly thankful for your contributions to the community.

Yelp Elite Squad Messenger
San Francisco, California

My reply:

“Yelp Elite Squad Messenger”,

There are different ways to run a community. When people volunteer to provide content for a site that generates value for a business, it’s nice to recognize that. To give them a little something. Maybe a badge. Maybe a night out for a fancy dinner.

But when you start to pester people to keep it up as one of your own did previously to me, then it starts to feel more like an obligation on the part of the contributor. “I must do this thing that I thought was fun or I will lose the small token that was given to me” is not a nice way to motivate your contributors. The people who create the valuable content on your site.

As a result of this action, I will be deleting all of my positive reviews from your site and will no longer contribute.

If you would like me to reinstate my reviews, you may return my badge.

Thank you.
Rob Campbell


And then I proceeded to delete my content.

Thanks for the good times, Yelp. I won’t be adding value to your service anymore.

* – Their changes to the “frecency” algorithm they use to capture “dukedoms” and “feifdoms” was also a part of the reason I stopped checking into places. Dukedoms and “regularity” — whether or not you’re considered a regular at a location – expire after a very short period of time now.

South Africa 2

Some potentially useful or interesting information:

  • about $60 / GB prepaid GSM data.
  • most of South Africa is unwired and either poorly or entirely disconnected from the internet.
    • Even in cities, hitting a webpage full of flash or images can kill your page load speed to the point of timing it out. e.g., I had to retry loading this blog to post this meagre entry.
  • point A to point B is invariably much further than you think. I’ve driven ~2650kms. Many over unpaved roads – some you probably wouldn’t consider a “road” at all.

Still too burnt to post anything substantial, but processing the past three weeks. It’s been an incredible experience.

South Africa 1

Deb and I are in Cape Town, South Africa after a pretty ridiculous two days of travel. We got in yesterday at about 7am after a 12 hour flight from London. This after a 7 hour lay-over in Heathrow. After a 6.5 hour flight from Toronto.

After a few hours of that, things started to look kind of like this:

confusion at heathrow

Deb and I made a bit of a game of following all the various pieces of supporting vehicles around the airport through the windows. We had particular fun at keeping track of the “shoe” vehicles. Specialized trucks built to capture the front wheel of airliners and push them out of their berths. If you’re ever at Heathrow, send a shout out to number 109. He was totally my favorite.

I can’t sleep on airplanes. Never really been able to. I’m really envious of people who can. It’s not like I can get a lot done on an airplane other than some extra reading though after being awake for a total of about 40 hours, words on “pages” stop making a lot of sense.

On these flights, I read a couple of unmentionable books about street photography I downloaded for free in iBooks, a good chunk of Game of Thrones book 3 and most of Micheal Freeman’s, decent The Photographer’s Eye.

My time might have been put to better use reading up on South Africa, though my usual plan of attack of just winging it should be fine, right?

The cab ride to our hotel was very educational. We got a pretty good overview of the geo-political situation in the country from our driver Solly. He also gave us a swell tour of Cape Town along the way from the airport to our hotel. In another day, I am going to take a crack at driving.

Some interesting personal achievements on this trip:

  • 3 continents in 2 days
  • 40 hours without sleep!
  • flown over an entire continent from north to south
  • crossed the equator
  • 3rd continent



frank's demise

I have had a number of iPods over the years. Starting with my iPod 3G, then a 5G (whose screen is pictured above), a 1st-gen iPod Touch and lately an iPod 7G Classic with a 160GB drive in it. I’ve loved them all, but it really feels like “Device as a Music Player” is done. Apple’s shift from iPods to iPhones started that downward trend.

But it’s gone further than just the obsolescence of the dedicated player. Music storage itself has become another quaint notion. Services like Rdio and Pandora (still not available in Canada) have replaced saved music for many people. And video too is a thing that is streamed rather than “owned”.

I blame Apple. The company that started the shift to digital music has failed to innovate. The 256kbit AAC DRM file is now the pinnacle of purchasable audio and it’s not nearly good enough. Marketing phrases such as “Mastered for iTunes+” really mean “We’ve destroyed any dynamic range this recording might have had”. Sure, the Compact Disc wasn’t perfect, but mastering for that format certainly left a lot more room for the engineer to play with.

iTunes itself has become something of an abomination. More interested with selling you things than maintaining and organizing your library, it’s frustrating to use if you have any amount of content in your library. Ironically, I think the Apple Remote software available on the iPad may be my preferred interface for the new iTunes. It may feel more connected to my library than iTunes itself.

iTunes 11 is the Apple Maps of media software.

I think the field is ripe for picking. Someone could come along and ship some music library software that doesn’t suck. I would pay for it. Bonus points if it will recognize and consolidate libraries from around my home network. And if it could stream to my devices while I’m out and about, automagically compressing my music on the fly, well that’d be keen.