Bryan Bonnici's Portfolio

A new year, a new site — Welcome!

This is a very transitional time in my life. So let transition be today’s theme.

Say, like how all those empty parking lots on the CNE grounds are transitioning into an amusement park.

The CNE opens this Friday (August 15th) but long before that they’re busy setting up the place. Before I moved onto much better things, I used to work for them. There I found out that even the largest rides don’t take more than a few days to put together.  I don’t know what to say about that. It must still hold true, because a week before the CNE, pretty much everything was still in its box.

I’m not kidding. Boxes everywhere:

Coming Soon

Coming Soon

The chairlift returns this year and is the first ride up and running. Look closely. Not to pad my photo’s view counts — the chairs are carrying some unexpected cargo:

Flying Barrels

Flying Barrels

Crews at one end were finishing up adding water-filled drums to the line. The result was something a bit surreal – two long rows of gently sloshing barrels in procession, making no noise otherwise.

On the other side of the chairlift, lots of naked, half-built rides. This is the Polar Express:


Polar Express

That’s not the track the ride travels on, that’s the pedestrian walkway. The carriages all sit on that strut in the middle. Behind it, is the Mighty Mouse:

Lines and Curves

Lines and Curves

Though some heavy equipment is putting it together:

Some Assembly Required (Click to see on Flickr)

Some Assembly Required

That’s actually the crane for Hotel X, a 27 storey complex being built between the Automotive Building and row of historical houses. That opens Fall 2015; I have no idea where the exhibits that used to be there will go now. In past years, it’s been used for military and automotive demos.

On the other side, Niagara Falls was in a similar state, though as close as it could possibly live to its name:


Niagara Fall Arrest Device Must Be Worn

The zipline also returns this year. Now that I have a decent camera and a tripod, I’m looking forward to the shots I take of people riding it. In the meantime, had to settle for these three:


Everything else was still in stasis. Though, there was one more thing I tried to photograph. The rear door of the food building was wide open, so I tried to take a picture of the interior while it was still empty. I stepped inside and was immediately accosted by staff in golf carts.

That was as good a time as ever to leave.

That’s my brief peek at the CNE this year. I will return with long-exposure shots when it’s open.

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

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 that, I jumped from shooting JPG to shooting RAW to make those edits happen without murdering the quality of my images. 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 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 ride on an ancient freight elevator, 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?

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.

A lot of my peers use Arduino. I don’t. My go-to microcontroller for most situations is the PIC18F2550, since they’re inexpensive, moderately powerful and very straightforward to work with. Plus they’re ready to drop into commercial designs. It’s so convenient that I can’t imagine ever using an Arduino now that I know how to use a PIC, unless someone’s made something that I can just put to use instantly.

Sometimes the go-to isn’t good enough. I attempted to blind-drive a Brushless DC motor, the kind used in remote control gadgets with one, however the lack of a third PWM channel and limited interrupt-on-change functionality made it impractical to work with. So I skipped ahead to a chip purpose designed for driving motors, 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 the ability to remap peripherals to pretty much any pin. That removes a lot of constraints. 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. This is a big deal because six inputs are needed for the hall sensor feedback to signal a change to the motor’s 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. Polling’s always an option, but that results in overhead that could otherwise be used for computing. Avoid wherever possible.

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.

The point is 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. The ADC enable on the MC102 is inverse to the 2550, so I thought I was disabling the ADC except on the one pin I needed when I was all but the one I actually 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.

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, a printer  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 now got enough 3D printing  power at our hands to realize our plans of world domination! 

The new office is organized, and even better, there’s natural daylight, but at the cost of ensuite bathrooms. 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.

Cleaning up the office wasn’t the only workout I got. This weekend I did the CN tower stairclimb for WWF, my second ever attempt, in 20 minutes and 15 seconds. I busted my previous time by over 5 minutes since I knew how to better pace myself and I was in better shape. The climb is 144 flights (1776 steps, 1122″/340m) 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 on the steel stairs. 

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.

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 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 disastrous Raptors game.  Then someone showed me a video of a meteor crashing down somewhere in the GTA. I guess even God wanted to exterminate the raptors (again).