One Year of Flickr

On March 25 2013, I made my Flickr account to upload and preserve my pictures. Back then, they were taken with my daily beater cellphone, my Galaxy S2X. Nowadays, I use my Flickr as my portfolio to showcase my best (and sometimes experimental) works.

Here is the first picture uploaded, almost 500 pictures ago:

2013-05-25 11.21.19 by BB ON

Jeez, what is even going on in this picture? I’m nowhere close to aligned; the white balance is completely off (it’s pink!?); the composition is uninspired and it’s low resolution on top of grainy. Looking back, I’d give myself an F. I didn’t even name it, its name is its timestamp.

But a lot of that isn’t because of the camera. In fact, nearly all of it is because of me. I started learning basic composition, and here’s what that exact same camera can do:

Tiger Lily by BB ON

Amazing isn’t it? We’re all so keen to blame the equipment instead of ourselves. When you understand the limitations of your equipment, you can push it hard enough to make it look like it was done with much more expensive gear. But most importantly, you know how to make your subject look its best. A 1D or a D4s, both almost $8000 cameras, won’t teach you how to make a picture worth looking at.

As I learned technique, it made me scrutinize my pictures more, so I started uploading less and less; only my very best. This improved the signal-to-noise ratio of my portfolio, but up until about the beginning of February, even after I got the SLR, all the pictures posted were as they were shot by the camera. Cameras, being the imperfect little eyeballs they are, need the photographer’s help to get it to what the photographer saw or wanted to see. This really triggered a change for the better. I learned how to do post-processing ranging from simple colour edits to distortion and, rarely, airbrushing. With those tools, I could now really evoke feelings with my photos, and to facilitate, I jumped from shooting JPG to shooting RAW to make those edits happen without murdering the quality of my photos. Every photo I post now has been worked on in some way, though 99% of the time it’s some basic level edits, noise reduction, CA reduction, lens correction, and so on.

So this weekend, which again was Doors Open, I made sure to get out shooting. Here’s a picture I posted today, for comparison:

Fisher Library by BB ON

I will upload the remainder over the course of the week. I wanted to take the SLR to the Portlands Energy Centre and RC Harris to redo some photos, but alas, I’m dogsitting, so he comes first. As far as tours go, Carpet Factory was the only actual tour out of the six places I went to. They really knocked it out of the park with interaction and their staff! Seriously, they gave us a freight elevator ride, a trip through the server room, and some posters.  A+ guys!

In one year I managed 20000+ cumulative views and 12 publishings. What will year 2 offer?

Lil Dolly

2014-03-30 11.33.05

Lil Dolly is a cheap 3D-printed tripod dolly. When I say cheap, I mean about $25 in parts and 3D printer materials. I made it about two months ago because I wanted a basic tripod dolly but without having to pay $100 + plus for one.


2014-04-03 16.51.49

Lil Dolly is 4 parts: a hexagonal centrepiece and 3 arms that are  joined together with some half-inch PVC pipe and some ABS cement. The great thing about it is that you can size the PVC pipe to however you want; I’m tall so I made the legs short (8″; shortened since the above picture) so that the tripod stands taller and takes a smaller footprint.  You can also make the legs longer so that it’s less top heavy, but keep in mind that it’s a no-frills design so doesn’t fold or dissassemble. At least this iteration. I’ve already designed on paper V2 that does all that. But alas, no rest for the wicked.

Here is a ZIP containing the STL (so you can make your own) and MAX  files (so you can edit it into your own (CC NC-BY-SA)

Lil_Dolly_STL_and_MAX.rar (232kb)

These print out well on Makerbot’s Replicator 2 on default settings (though you can reduce infill even down to 10%). It’s possible to print out all 3 leg pieces in one shot, however I found these printers to be historically very fussy and would mess up/clog way too frequently during large prints requiring everything to be redone. You’re better off doing each piece individually or 2+2.


  1. Apply ABS cement into the hole of the leg piece. Insert PVC pipe. Wipe the excess and let it dry.
  2. Apply ABS cement into the hole of the centrepiece. Insert the leg. On a flat surface, use a plank to level the edge of the leg piece by using the plank against flat edge of the centrepiece it connects to (You’re doing it right if the plank angles down from the centrepiece onto the leg, and from the side it looks like a triangle). Let it dry.
  3. Using some 8-32 bolts and washers, screw castors (I used these ones) onto the leg pieces.
  4. You’re done! That was easy! Insert tripod!

Results: It works! (Well enough). Performance is tied strongly to the choice of castors. I wasn’t too happy with the ones I picked because they weren’t perfectly round, so it wobbled. Use better more expensive ones, particularly ones without the seam running down the middle.  You might also want one with footbrakes. There’s also some minor design inadequacies that I’m going to eliminate in a future revision. In particular, making the socket wrap all the way around so the leg can’t move inwards. I would also employ something to strap it down, though that can be added on after the fact with the current version. But for a quick and dirty tripod dolly, it does the job great. 


I made Lil Dolly in 3DSMax in order to learn how to model some 3D parts. After all was said and done, I concluded it was completely the wrong tool for the job. 3DSMax is the equivalent to a digital carpentry shop: You can chisel stuff out and glue stuff together, but so help you if you want to go back and change some parameters after the fact. I wanted to make the spherical socket on the leg piece bigger and had to completely redo it; in Solidworks this would have taken two seconds since it’s designed around parametric design. I’m going to learn Solidworks and see how it all goes.



When I’m not out and about with my camera, I’m an engineer. This post is about engineering.

The PIC18F2550 is my go-to microcontroller for most situations I need a microcontroller since they’re inexpensive, moderately powerful and very straightforward to work with. It’s so convenient that I can’t imagine ever using an Arduino now that I use this, unless someone’s made something that I can just put to use instantly.

My latest project is a Brushless DC motor (BLDC) driver which I attempted to blind drive using a 2550, but this proved inadequate because there were only 2 hardware PWM channels (I need 3, though it’s possible to just bit-bang) and because its interrupt-on-change options were limited to only 4 pins on port B. It’s possible to work with it, but not ideal. When my blind driving attempt failed, I decided to just skip ahead to the chip I was eventually going to drive it with, one that was built for motor control; blind driving failed because without using any form of input feedback, it’s easy for the stator to slip from the applied field and end up just jumping about instead of spinning. I settled on the dsPIC33FJ32MC102.

The MC102 is one of many brawnier siblings to the 18F2550 but occupies the exact same 28 pin footprint and comes in a convenient DIP, among many other packages. What’s particularly great about it is that it’s got that third PWM channel, PWM fault detection, and the ability to remap peripherals to pretty much any pin. That removes a lot of constraints to my design! Don’t like the the UART is on pins 14/15? Move ‘em! And last but not least, it can be configured to raise interrupts on pretty much any input you want whenever they change.

That’s a big deal to me because I need the hall sensor feedback to signal me to change my commutation. There’s a six-step sequence I need to cycle through to get that motor to turn, and being late results in losing torque and certain doom. I can expect the motor controller to be doing some potentially hairy computing so I want to avoid the delay and overhead that results from polling.

When switching to a different microcontroller there’s a bit of a learning curve that is exactly as difficult as however much you try to avoid reading the datasheet. The MC102 is a 16 bit chip, so it needs a 16bit compiler. It also is a 3.3V chip, so applying 5V like the 2550 will immediately blow it up. Zero casualties so far. I got a timer interrupt based heartbeat up and going in ten minutes – it’s even nicer than the 2550 because you don’t have to preload the register, you can just set it to interrupt after whatever number of ticks.

Lesson learned: it’s critically important you read everything and not assume that just because it’s made by the same company that it does the same thing as sibling products. Case and point: The ADC enable is inverse to the 2550 on this chip. I thought I was disabling the ADC except on the one pin I needed. Nope. I was enabling them (and disabling the one I needed). It took me over an hour to figure out why my input was not working.  I fixed it, but I wouldn’t have spent so much time troubleshooting if I had just read the ADC register more closely.

Top: 18F2550; Middle: MC102; Bottom: LEDs and DIP switches

Top: 18F2550; Middle: MC102; Bottom: LEDs and DIP switches

I set up a test jig where my MC102 would echo input from the 2550 to some LEDs. The 2550 was running the bit banged commutation sequence from my earlier experiment. Whenever one of those inputs changed, the MC102 would raise an interrupt which would read all 3 inputs and shift them out to the LEDs.

I didn’t have a 3V3 regulator so I powered my jig from 2 different supplies. When doing that, you need to take one special precaution to not to blow things up; lab power supplies are isolated, so the negative terminal on one is not at the same potential as the negative on the other. There could be potentially kilovolts in between, which is death to a microcontroller. This was remedied by tying both negative terminals to earth ground. The MC102 was 5V tolerant on the input pins I was using so I didn’t have to level adjust.

2014-05-08 11.21.19


Latency Measurement

Latency Measurement

I hooked up the scope to measure the latency because with the DIP switches I thought I was getting perceptible lag. Turns out it was just the switches, there only an 11.5 uS delay from in to out using the 2550 output, even as frequency was swept into the kHz. Definitely acceptable!

That’s all for now.

Bent Outta Shape

In the last couple of days we’ve moved our offices out of the basement of 10 Dundas (underneath the subway!) to the far more prestigious Bell Trinity Square. The office is roughly the same size — maybe even a bit smaller; the old office had a lot of stuff in it which, now gone, doesn’t make the old space look so small.

We’re sharing the space with Think2Thing, a 3D printing company with an EOSINT P 395 which is so expensive it costs money to just look at. If that wasn’t enough, they’ve got a Projet 660 and a CubeX. The Objet is also coming with us too. We’ve got enough 3D printing  power to realize our plans of world domination. Watch out.

The new office is much better organized, and even better, there’s natural daylight, but this comes at the cost of ensuite bathrooms.

The first moving day was us moving the mission critical stuff ourselves which was a solid workout. In the cleanup of the old space, we found the weirdest stuff, like ten boxes of still-wrapped wooden trainsets from IKEA. Nobody knew why they were there, and we sure didn’t have a use for them, so we made it a donation to Sickkids.

Speaking of workouts, this weekend I did the CN tower stairclimb for WWF. My time was 20 minutes and 15 seconds — busting my previous time by over 5 minutes! For those not in the know, it’s 144 flights (1776 steps, 1122″/340m) of steps that ascend through the south leg of the tower. As you ascend, the exterior wall curves in until at the top, it touches the stairs. All you can hear during the climb is a thousand footsteps banging without rhythm.

This was my second time around, and it was much easier since I knew what to expect. As tempting as it was to start quickly, I walked up ‘drafting’ in a pack and made it to 75 before stopping for a quick breather. Previously (my first time), I ran out of steam at 50 because I went full tilt at the outset, making the middle third just awful. The last third was and still is the easiest because you can just power through to the top. I was going to take another breather at 100, but since everyone had set up base camp there, I pushed it up to 102 and then just decided to forego it altogether.

After you clock out there’s about another 5 flights of stairs to go to get to the observation deck proper which is like salt in the wound at that point. I cannot emphasize enough the importance of stretching afterwards, because everything will soon clamp up hard for the rest of the day. Also, do not forget your Metropass and Visa because the walk back is awful, especially without the means to pay for some food.

The elevator ride down is terrible because in under a minute, all your work is undone.

This weekend I was also going to go to see the ROM Revealed but I had booked the tickets for the same time as the climb (d’oh!) and the no-ticket lineup on Sunday stretched from Varsity Stadium to Queens Park circle. Eff that. Thankfully my camera and I were not disappointed since there was a massive police memorial going on at Queen’s Park, complete with cool motorbikes and cannon fire.

Police Bikes – Click to go to my Flickr

I’ve never seen so many police bikes in one spot, and the group of officers there were glad to show me around and let me photograph. I’m going to upload a few more over the next couple of days.

From there I made my way to the CBD for some more shots, though the best one was the clouds reflecting off of Mies’ TD Centre. This is a really great picture to point out the importance of correcting lens distortion:

The Reflexion - as shot by camera

The Reflexion – as shot by camera

Look at the bottom row of windows. That’s friggin’ curvaceous. Every lens does this to some degree, and software like Camera Raw is smart enough to identify the lens from metadata and apply a specific correction with just a button click. Here it’s really prominent because of the lines, but keep in mind this affects every single picture your camera takes. Here it is with the distortion corrected:


And the final. Correct your photos people!

I got home in time to watch the Raptors game.  Afterwards, someone showed me a video of a meteor crashing down somewhere in the GTA. I guess even God wanted to exterminate the raptors (again)