Faux-Vintage Picture Frames

For the past three years, my wife and I have been attending Fan Expo in Toronto. In the past, I’ve described it to friends as Canadian ComiCon, which is a bit confusing, because there actually is a Toronto ComiCon, but it’s smaller and less well-attended than Fan Expo.

One of the features of Fan Expo is the Artist Alley, where local artists and more well known comic book artists sell prints of their work. Over the past two years, my wife and I have purchased eight large prints at the event, but until now, they’ve been sitting in a pile in our office, because we haven’t had any picture frames large enough to hold them.


I started out with some clear pine boards, all cut to approximately 22″ in length, jointed, and planed to around 5/8″ thick.


Next, I ripped the boards into 1.5″ strips, and cut them to length. Four of the prints were 11″ x 17″, while the other four were 12″ x 18″. Since the bezel on each of my frames is 1.5″ wide, I added 3″ to all of those dimensions to determine the final length of the strips.


With the strips cut to length, I mitred their ends. I also used my box joint blade and a sacrificial fence to cut a dado that would hold the glass along the short edge of each strip. Unfortunately, I neglected to take a picture of that step. Ah well.


With the cutting done, it was time to glue all of the frames into their final shapes. Since I don’t have enough clamps to secure eight frames all at once, this step took awhile to complete.


Mitred frames look cool, but glued end grain butt joints aren’t particularly strong, so I wanted to strengthen the corners of each piece. I used a simple jig to run each frame across the blade of my table saw, with its wide sides perpendicular to the table, and its long edges angled 45″ off of the table surface.


The result of this operation was an 1/8″ wide slot cut into each corner, running directly through the plane perpendicular to the mitre joint.


I glued a thin slice of pine into each of these slots, ensuring that the grain in the slice ran perpendicular to the mitre joint, strengthening it significantly.


With the glue dried, I cut away the excess material, added a chamfer around the edge of each frame, and gave them all a good sanding down to 220 grit.


After hitting each frame with a coat of Minwax pre-stain wood conditioner, I applied a coat of this Classic Black stain and polyurethane combination with a foam brush.




One coat in, this finish looked awful. The stain component of the product soaked into the wood unevenly, leaving a splotchy finish, and the polyurethane part of the product made it thicker than most of the stains that I’ve worked with, which really only made it harder to work with, and left an overly glossy finish behind.


In an effort to even out the finish, I sanded with 000 steel wool, and applied a second coat of the stain product. When that dried, I used steel wool to take the gloss off of the frames and wear down the edges, giving the them a sort of faux-worn look. Finally, I hit them with a satin spray polyurethane to seal the exposed wood.


While this was undoubtedly the long way to accomplish the finish that I ended up with, I’m pretty happy with how they turned out. My mitres are tight, my corners are square, and the worn edges look pretty cool with some of the art that we bought.


To finish the job, I ordered some 1/16″ thick glass panes from a local supplier that does custom cuts. The prints are sandwiched between the glass and a sheet of 3/16″ foam core, which is pinned in place with a few small brad nails.

This job has been taking up space in my shop for a couple months now, so it’s good to finally get it finished, and to get the prints that we bought two years ago up on the wall. They look great, and I’m really happy with the results.

A (Small) Bookshelf for the Kitchen

My wife has a lot of books. We have a whole room in our house dedicated to storing them. We call it the library, because we’re snooty like that. Some of the other rooms of our house have dedicated shelves for specific kinds of books. In the kitchen, we keep cookbooks in a cupboard above our microwave, but that cupboard is now so full that we can’t add any more books to it.

To rectify the situation, my wife asked me to build her a counter top sized bookshelf that could accommodate her favourite cookbooks, so that they were out and easy to access, and more cupboard space was made available for the inevitable purchase of additional books. The plan was pretty simple. I’d build two triangle-ish end pieces, with slats joining them together. The whole construction would be angled backward at about 15 degrees, tilting the spines of the books up towards anybody who might be looking at the shelf.

2016-06-13 13.32.37

I started with a 1″ x 6″ x 6′ piece of poplar from the Home Depot, which was actually 3/4″ x 5 1/2″ x 6′ long. Before I did anything else, I jointed and planed this piece to ensure that it was square, and milled it to a final thickness of 1/2″.

Since I wanted the end pieces of the shelf to be approximately 8″ x 8″ along their non-hypotenuse sides, the first job was to cut four 5 1/2″ x 9″ pieces from the poplar, and joint them together to form two 11″ x 9″ boards. These would later be cut down to the appropriate sizes to form the ends of the shelf.

2016-06-13 12.52.34

With the glue dried, I cut the end pieces to size, and then mocked up a simple jig on my crosscut sled that allowed me to cut the angle bit that turned the end pieces from rectangles into sort-of-triangles.

2016-07-17 13.04.39

Once the final size of the shelf ends was established, I could work on the joinery for the slats that would hold them together. I settled on 2″ by 1/2″ slats, each around 13″ long, which would give me a final interior shelf length of approximately 12″. I used my box joint blade to cut three slots along each of the straight edges for the slats to fit into.

2016-07-17 14.47.48

The trick with this approach is to cut each slot just a little bit small, and then to sneak up on the final dimensions, fine tuning where necessary with a file and sand paper to achieve a tight joint. Thankfully, I didn’t screw anything up, and because my slats had been milled to a uniform size, they were all interchangeable.

With the slots cut out of both ends, I started to attach the slats, using glue and 3/4″ brad nails to tack it all together while the glue dried.

2016-07-17 15.06.42

With all of the slats attached, the shelf really started to take shape.

2016-07-17 15.17.38-1

Next, I needed to cut some triangle pieces that would act as feet for the shelf, tipping it backward so that the spines of the cookbooks were angled up toward the viewer. Since I needed them to be the same, I got smart and taped two pieces of scrap poplar together, then marked out the desired shape and ran them both through the table in a single pass.

Once cut, I glued the feet to the bottom of the shelf, and tacked them in place with brad nails from the other side. This required some temporary tape to hold the feet in place while I flipped the piece over and fired the brad nails. I swear, I’m constantly finding more uses for that blue painters’ tape. It’s great stuff to have around.

2016-07-28 14.06.23

With the legs attached, the shelf really looked great. I gave the whole thing a good final sanding down to 220 grit in preparation for finish.

2016-07-28 14.13.46

The finish consists of a single coat of brown stain that I had left over from a previous project, followed by a coat of wipe on polyurethane. Both coats were applied by hand with an old rag, and between coats, I sanded with 400 grit sand paper, as well as 000 steel wool.

2016-07-30 14.45.38

After letting the finish cure on the bench for a couple of days, I brought the shelf inside, and Steph loaded it up with her favourite cookbooks. I’d say that it turned out pretty well.

2016-07-31 13.17.14

Cupboards for my Workshop

Since my shop is only about 17’x11′, it can get a bit cozy at the best of times. As I’ve continued to work in it, I’ve realized that having a decent storage system and constantly cleaning up as I work are key to maintaining a safe and productive environment. So instead of tidying up my space, I decided to build some cupboards to enhance my storage game. After all, what’s the point of tidying if I don’t have anywhere to put all of my shit?

I started off with a 4×4 sheet of 1/2″ GIS plywood that was left over from building my workbench.

2016-05-08 11.07.12

Using the table saw, I sliced the plywood into four one foot wide by four foot long strips. These would become the long sides of my cupboard boxes, which in turn meant that my cupboards would have a depth of about one foot.

2016-05-08 11.18.41

On each strip, I marked out three dados – one on each end, to accept the end caps of the cupboards, and another in the middle, where a divider would split the box into two compartments, each two feet wide.

2016-05-08 11.24.55
I cut the dados on my tablesaw, using a box joint set that makes perfect 1/2″ dados with flat bottoms. For the dados on the ends of the long strips, I set up a sacrificial fence so that the blade didn’t come into contact with my actual fence, which is made of metal, and eats sawblades for snacktime.

2016-05-08 11.52.28

These are the finished sides of the cupboards. That line down the middle does not go all the way through the pieces.

2016-05-08 12.06.46

Next, I cut the end caps for my cupboards. I needed six – one for each end of the two long boxes, and two more to split those boxes into two compartments. I made my end caps 12″ deep to match the width of the long pieces, and about 16″ tall, as that’s the height of the space where I want to hang my cupboards. This means that the final product will be two large cupboards, split into four 24″x16″ compartments.

2016-05-08 12.20.06

With the end caps cut, I could assemble the large boxes. I glued the end caps into the dados that had been cut into the longer pieces, tacked everything together with my brad nailer, and then put it all in clamps to dry.

2016-05-08 12.47.15

At this point, my 11’x17′ shop had two 2’x4′ boxes taking up most of the useable floor space in it. I found myself moving the boxes constantly to keep them out of the way while I continued to work.

2016-05-08 12.56.51

Once the glue was dry, I cut some thin clear pine strips and tacked them around the front edges of each box, giving them a nice veneer that hid the edges of the plywood. While it’s easy to work with, and was cheap scrap left over from a previous project, the pine was actually too soft for this application. I fully expect it to be dented and scratched and chipped after a few years of hard use. In retrospect, something harder would have made more sense for this application, as the fronts of the cupboards will get a lot of abuse.

2016-05-08 14.04.25

Here’s a shot of both boxes with the face trim complete

2016-06-13 13.35.26

With the cupboard boxes functionally complete, it was time to start on cupboard doors. This was actually the real challenge of the project, since making the boxes consisted of scaling up techniques that I’ve already learned.

I started by cutting the outer frame pieces from some more clear pine, again left over from a previous project. I cut everything just a bit long, and was careful to avoid knots that might lead to trouble down the line. Once the pieces were planed and jointed, it was easy to see how they’d fit together.

2016-06-13 14.08.51

I wanted to make rail and stile doors, which consist of an outer frame and a floating inner sheet of plywood, so the first step was to cut a dado on the inside of each of the rails and stiles that would accept the plywood that makes up the majority of the door surface.

The dado is 1/4″ wide, and was cut with a couple of passes across my standard table saw blade. The key to this technique is to flip the piece end over end with every pass, keeping the cut centred while slowly edging the fence out from the blade, sneaking up on a dado width that snugly accepts the plywood centre. Once I found that width, I left the fence in place, and used it to cut all of the other dados to the same width.

2016-06-13 14.51.57

Because my saw blade isn’t 1/4″ wide, this approach left me with a bunch of garbage material down the centre of my dado. Once the width was determined, I could move the fence and take another pass to hog this material out. The finished dado fit snugly onto the plywood that would form the inside of my doors.

2016-06-13 14.45.28

With the dados cut, I fashioned a tongue on the ends of each rail (the 16″ vertical edges of the cupboard doors). The first step was to figure out the length of each rail. I laid the stiles out on my cupboard boxes, set the rails on top, and worked out the final length of each rail, taking into account the fact that I was going to cut a tongue onto the end of the rail to fit into the dado on the stile.

2016-06-13 15.01.23

The next step was to slice off the outer edges of the piece in a series of passes perpendicular to the table saw blade, leaving a tongue the width of the dado exposed. Because the tongue is the same width as the dado, it will butt into the dado on the accepting piece, creating a tight joint.

2016-06-13 15.43.51

With the tongues and grooves cut to size, the doors could be dry fit together to test my cuts.

2016-06-13 16.05.52

Once I was sure that everything was the right size, I glued each cupboard together. It’s important to note here that the plywood in the centre of the frame is floating. It is not glued into the frame, because it’s meant to leave space for the materials to expand and contract with the weather, without cracking the door.

2016-06-13 16.30.02

Once the glue dried on the doors, I gave everything a thorough sanding and test fit my hinges. These are european-style hinges that allow the cupboards to open to 90 degrees, with the doors entirely perpendicular to the boxes. In this shot, the cupboards are upside-down. When hanging on the wall, the door will open upward, toward the ceiling.

2016-07-03 14.42.50

Once I was sure that everything would fit, I removed the hardware and masked the pieces off for painting.

2016-07-03 16.08.58

The cupboard boxes were painted the same grey as the walls of the shop, and the face trim was painted white. I used an alkalyde paint that I had left over from painting the trim on the outside of the garage. It’s meant to harden with a tough shell that resists damage, so my hope is that it will help the cupboards stand up to the abuse that they’re sure to receive in the shop.

2016-07-10 10.44.53

The cupboard doors got the same white paint job as the trim. My 12′ work bench comes in really handy when painting 8′ of cupboard doors.

2016-07-10 10.44.45

After letting the paint cure for a couple of days, I hanged the cupboard boxes on the wall above my work bench, screwing scraps of 2×4 into the studs in the wall, and affixing the cupboards to those scraps with 1 1/2″ wood screws. This probably isn’t the strongest way to hang cupboards, but it seems to be holding up ok, so here’s hoping that it doesn’t all come crashing down on me sometime soon.

2016-07-10 12.40.54

Finally, I re-attached the hinges, and added some cheap friction slides that help the doors to stay open in their eternal struggle with gravity.

2016-07-17 12.01.27-1

Look at all the space that I have on my workbench now that my shit is packed away into cupboards! I still need to do some organizing, especially in the left-most compartment, but it’s a start.

2016-07-17 12.02.06 HDR-2

This project has been a long time in the works. There were a lot of stops and starts and distractions, so it took me four or five weeks to get them done. If I worked straight through, I suspect that I could have finished them in two hard weekends of work with no problem.

All in all, I’m really happy with how they turned out, and my experiment with rail and stile cupboard doors was a success. I’ll have to use that joint again, perhaps for some cheap picture frames, or maybe a box with slats for sides.

Image Rotation and EXIF Data

If you’ve looked at some of my earlier posts in Firefox, you may have noticed something odd about them. Some of the photos will appear to be rotated in the wrong direction, but if you view the same post in Chrome or on an iPhone, they’ll appear to be rotated correctly.

When I’m working in my garage, I take all of my photos on my iPhone, and I’ve recently found out that when I take a picture in landscape orientation (with the home button held to the left or the right, rather than the top or bottom of the screen), iOS doesn’t rotate images to match the orientation of the phone when it writes them to storage. Instead, it writes the image data in the same orientation as the camera, and saves some time by writing the orientation information separately into the metadata that it attaches to the image. This lets the device take pictures faster, but means that some of the images have to be rotated before I post them.

Unfortunately, I didn’t notice this behaviour up until now, thanks to a series of unfortunate circumstances:

  1. As previously mentioned, Chrome looks at images’ EXIF data and re-orients them as necessary
  2. The file browser on my Ubuntu 14.04-LTS machine also auto-corrects for iOS’ sloppy behaviour
  3. Unlike the other parts of my toolchain, WordPress ignores EXIF orientation information when images are uploaded, taking the stance that it’s not interested in automatically modifying users’ images.

So what to do? Well, I could open each of the images in an image editing program like Pinta, apply the necessary rotation and resize the file. On the other hand, that sounds boring and time consuming, and I’d rather figure out how to do the job automatically.

Since we’re modifying images, the go-to tool in our kit will be an amazing suite of image editing tools called ImageMagick. It’s 100% free and open source, runs damned-near anywhere, and can do pretty much anything that you might want to do with an image file.

I’m working on an Ubuntu system, so I’ll install ImageMagick like this:

$ sudo apt-get install imagemagick

If you’re on some other platform, you can read up on how to download the tool here.

Now we just have to string together some command line switches to do what we want. Here’s what I came up with:

$ mogrify -auto-orient -resize 584x438 -strip -quality 85% *.jpg

The command that we’re running is called mogrify, and will modify your images in place, so you’re going to want to cd into a directory that contains a copy of your images before running it.

After the mogrify command, we specify a number of command line switches that change how it behaves:

  • -auto-orient fixes the iOS image orientation problem described above
  • -resize resizes the image to the size provided (specified as maximum width x height in pixels), and respects the source image aspect ratio if it can’t make the image exactly that size
  • -strip removes all EXIF data and other metadata from the image, including timestamps, GPS location data, and information about the device that took the image. It also removes the pesky orientation data that caused Chrome and Safari to automatically correct for iOS’ behaviour, which is important, because we’ve just rotated the image, so if we leave the metadata in place, the image might actually appeared double rotated after I post it
  • -quality specifies the compression level to use when resizing the image (specified as a percentage between 0 and 100)

The last thing in the command, after all of the command line switches, is *.jpg, which tells mogrify to do all of the previous steps on every file in the current directory that ends with .jpg.

Once I’ve run this command, I’m left with a directory full of properly oriented images that are the right size for posting on my website, with all of the private/identifying metadata stripped out of them.

Handy, right?

Cake Pops!

Well, actually, cake pop stands. My wife Stephanie is the one that makes the cake pops. I just make the things to display them with. This past weekend, our friends Warren and Kaitlin were married, and they asked Stephanie to make some cake pops for their reception. In turn, Stephanie asked me to come up with a classy way to present the cake pops. This is what I came up with:

2016-06-26 12.57.30

There are around 55 cake pops in a batch, and Stephanie planned to make two batches, so I wanted enough space to display 100 treats at once. I settled on five trays, each large enough to hold 20 cake pops. The final dimensions would be 6″ by 7.5″, with a matrix of evenly spaced holes centred 3/4″ from each edge. These dimensions meant that each hole would be 1.5″ from each other hole, which suits the average diameter of a cake pop perfectly.

2016-06-26 12.58.14

I started off with a 1″ x 10″ x 6′ length of clear poplar stock from Home Depot. Because the lumber industry doesn’t understand that numbers have meanings, the actual dimensions of this piece were 3/4″ x 9.25″, which left plenty of stock to cut my five 6″ by 7.5″ rectangles.

2016-06-26 13.04.47

On each piece, I marked out a grid for the holes

2016-06-26 13.44.51-2

Since I don’t yet own a drill press, I took a trip out to my parents’ place to borrow my Dad’s. It was the perfect tool for the job, and allowed me to drill a hole at each intersection that was perfectly perpendicular to the piece, and the correct depth to boot.

2016-06-26 14.37.05

The diameter of each hole is 5/32″, which is just a bit tight for the sucker sticks that Stephanie intended to use for her cake pops. Later on, I’d end up reaming each of the holes out just a bit to ensure that the sticks could slide in and out of the holes with ease. Unfortunately, the next size up in my drill index is 11/64″, which was a bit too loose for this application.

2016-06-26 14.56.06

To add a bit of detail to the face of each stand, I decided to chamfer each hole with a countersink bit. Back in my shop, I used my router to add a 45 degree chamfer to the edges of each tray. They’re simple touches, but in my eye, they add a bit of detail that really cleans the pieces up.

2016-06-26 15.47.22-1

After a good sanding down to 220 grit, I finished the trays with two coats of butcher block oil, sanding to 400 grit in between coats.

2016-06-26 16.26.19

Following the manufacturer’s directions, I let the finish cure for three days to ensure that it was food safe before letting anybody lick it. As mentioned above, I had to bore each hole after finishing the pieces, because the oil caused the grain around each hole to expand a bit.

The pieces were finished in plenty of time for Saturday’s wedding, and even though I forgot to take a picture during the reception (in my defense, the lighting was poor, and well, I’d had more than a few beers), I did take this picture of one posing with the left over cake pops the next morning:

2016-07-03 08.44.06

All in all, this was a really fun project. It only took me about a half day to complete (not including waiting for the finish coats to dry), and I’m really happy with how the trays turned out. They aren’t as tasty as my wife’s cake pops, but they do complement them pretty damned well.

My 12′ Long Workbench

When it came time to build a work bench for my brand new shop, I decided to go big. If you’re familiar with the much smaller bench that I built for my basement shop, the design of this project will be quite familiar. I’ve tweaked a few things here and there that I think will improve the end product, but at the end of the day, this is a fairly standard 24″ wide bench with a single shelf, built from plywood and 2x4s.

Photo 2016-01-31, 9 43 36 AM

I started by squaring off the ends of four twelve foot long 2x4s. These will serve as the stringers for the bench shelf and top.

Photo 2016-01-31, 9 29 08 AM

I decided to notch the stringers where each of the cross members attach. This helps to keep the structure square, and gives plenty of surface area for gluing and screwing the pieces together. Since the stringers are far too long to notch at the table saw, I used a 1/2″ straight cutting bit on my router. This simple jig clamps to the work piece and ensures that each notch is cut 1 1/2″ wide.

Photo 2016-01-31, 10 04 20 AM

The first time I tried to use this jig, I got a little bit too ambitious. I set the depth of the cut to the full 3/4″, and tried to cut through two of the stringers at once. My poor old second-hand router couldn’t keep up, and the bit wiggled loose, tearing a deep gash into my workpiece. Lesson learned, I continued by cutting one notch at a time, and removed the material with two passes instead of one. It took longer, but the router appreciated my patience.

Photo 2016-01-31, 11 01 28 AM

Here you can see one stringer with all of the notches cut, and the five perpendicular cross members inserted into them. Because the final width of the bench is meant to be 24″, and the notches are cut 3/4″ deep, each cross member is cut 22 1/2″ long.

Photo 2016-01-31, 11 09 44 AM (1)

Because the notches in each stringer are cut in the same place, the bench shelves come together very easily, and are almost perfectly square. I put wood glue and two screws on each butt joint between the stringers and cross members. This approach makes for really strong joints that will probably hold up for longer than I do.

Photo 2016-02-13, 1 51 27 PM

With the cross members done, I cut four 24″ end caps at the table saw. Each end cap has a 1 1/2″ notch cut out of its end that is 3/4″ deep, just like the notches in the stringers.

Unlike the cross members, the end caps fit over the ends of the stringers.

Photo 2016-02-20, 10 56 04 AM

With the skeletons of both shelves complete, it was time to attach some legs. Most garage floors aren’t level, and mine is no exception. I used a string line and a level to figure out the fall, and found that my floor drops 1″ over the 12′ length of the bench. As such, the legs closest to the far wall are 36″ tall, while the legs closest to the camera are 37″ tall. This results in a bench with level shelves that can’t really be moved out of the back corner that I’ve built it for.

Photo 2016-02-21, 12 41 02 PM

Once the legs were on and the two shelves were attached to them, I sheathed each shelf with 1/2″ sanded fir plywood. I had to use a jigsaw to notch the holes out for the legs. The plywood added a lot of weight and rigidity to the bench, and at this point, it really started to feel like a hefty piece of shop furniture.

Photo 2016-02-21, 3 13 39 PM

Once the bench was complete, I gave it a quick once over with my palm sander, and brushed on a coat of Minwax Indoor/Outdoor Helmsman Spar Urethane. Even though I fully intend for this bench to get beat to hell, I wanted a finish that would help to protect it from spills and tool scratches. The brush on product is much thicker than the wipe-on polyurethane that I’ve used in the past, and the satin finish that I chose looks great on the raw wood.

The Brand New Workshop

When we bought our house in June of 2015, my wife and I knew what kind of home we wanted. Sure, we took some time to tour other neighbourhoods and walk through houses from different eras, but almost from the beginning of the process, we knew that we wanted a brick home that was built in the early decades of the last century. The place that we settled on was built in 1927 and is in wonderful condition, thanks in no small part to the work that the previous owners put into it.

Photo 2015-04-25, 2 10 17 PM

The house sits on a decent sized lot in an old neighbourhood with large mature trees. To the back of the house, at the end of the driveway, there’s a detached single-car garage. It has not been taken care of in the same way that the house has.

Unfortunately, this is the best picture I have from before we started the renovations

It was pretty clear to us that the garage was going to need some work, but we weren’t sure what to do with it. The building was structurally sound, but it needed a new roof, new exterior siding, new doors, and new windows at the very least. It wasn’t insulated, and there was no electricity running out to it, so it wouldn’t really be a useful space after dark or during the winter.

In the weeks after the move, I set up a basic workshop in our basement. We have a large room down there that worked well, but the noise and dust got on my wife’s nerves, and moving stock in through the side door and down a narrow set of stairs was a pain. Soon enough, I had decided that the garage would become my new workshop.

File 2016-02-04, 8 10 18 AM

In August, I worked with my father in law to rip down the lean-to behind the main garage. It had been used by humans as a garden shed, and by squirrels as a winter home for years, and was in bad shape. In September, we put a new roof on the garage, and I replaced the fascia boards, which had long since rotted through.


Come October, it was time to start on the interior. I had an electrician run a couple of spare circuits out to the garage, and finally got some light and receptacles into the building. With power in place, the work could begin in earnest.

Photo 2015-11-21, 5 23 01 PM

The first job was to build a ceiling. In the image above, you can see new ceiling rafters that I installed at 8′ above the floor. It was challenging, in no small part because the floor isn’t level. As such, I had to choose a place to use as the measurement point, and then hang the rafters relative to that point using a plumb bob and a level.

In the image above, you can also see my first attempt at insulating the ceiling. I ended up pulling most of that insulation down, because the area between the ceiling and the roof is meant to be cold. Instead, I put the bats of insulation in the flat part of the ceiling, leaving the sloped bits above the rafters uninsulated.

Photo 2015-12-26, 2 02 54 PM (1)

With the rafters up and the building properly insulated, the next step was to sheathe the walls with 1/2″ OSB. Since the space is meant to be a workshop, I decided to use plywood instead of drywall, as I figured that it would take more abuse over the long term.

Photo 2016-01-02, 12 39 54 PM

Given the age of this building, I suppose it should be no surprise that none of the corners in it are square, which made cutting the sheets of OSB to fit very challenging. You can see some gaps in between the sheets that I couldn’t manage to massage out, regardless of how much swearing I did.

Photo 2016-01-23, 1 52 16 PM

Even though they were small, the gaps between the sheets really bothered me, especially in the corners where they were particularly bad. Since I couldn’t get the sheets of OSB to fit correctly, I decided to apply liberal amounts of spackle to the issue. Once sanded and primed, the room started to look really great.

Photo 2016-01-30, 11 36 35 AM (1)

I finished the room with a coat of grey paint. With the painters’ tape removed, the room really started to look like a real space.

To be honest, I’m still kind of surprised at how well it worked out. After all, I spent every weekend working on the project over a span of four or five months, and at times, it definitely felt like it would never be finished.

I still need to replace the doors, windows, and exterior siding, but those jobs can wait until next summer. For now, I’m just happy to have a working shop again.

Installing ROS on a Raspberry Pi

As a lover of technology, I tend to accumulate bits and pieces of interesting devices. Usually, these are purchased for use on unrelated projects, and on occasion, I have the opportunity to bring them together into a single project in a previously unanticipated way. Such is the case with my Arduino and Raspberry Pi. Both are interesting microcomputers with their own strengths and weaknesses, so it was when I learned that they could be made to work together with the help of Robot Operating System, I had to give it a shot.

My raspberry pi

ROS is an open-sourced project that is dedicated to providing a framework of libraries for performing common tasks under the general heading of robotics. It also includes drivers that allow you to easily interface with common hardware. The core of ROS is a reactor model of observables and observers that send messages to one another, typically over a serial connection, allowing any number of controllers to interface with one another and form a unified whole.

The rosserial_arduino library is a project that allows ROS on a Raspberry Pi (or other *nix device) to interface with an Arduino over a USB serial connection, thereby combining the computing power and versatility of a Linux-based microcomputer with the IO capabilities of an Arduino.

What You’ll Need to Get Started

Installing Raspbian on the Pi

If your Pi already has an operating system on it, you can probably skip this step. If, however, it’s straight out of the box, you’ll need to install the Raspbian distribution.

As of this writing, the latest version of Raspbian is Jesse, released in September of 2015. I wasn’t able to get ROS working with this version, and backed down to the Wheezy release from May of 2015 instead. To install the operating system, I did the following:

  1. Download the Raspbian Wheezy image via a bittorrent client.
  2. When the download is complete, follow these instructions to copy the image file to your MicroSD card.
  3. Unmount the card, insert it into your Pi, and hook up the power. Your device should boot into a command prompt. From here, you can run raspi-config to customize the installation, or get right to installing ROS.

Once the installation is complete, be sure to check for updates:

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade

An up to date system is a safe system.


Once your Pi has an operating system, you can switch to interacting with it via SSH. My TV is the only “monitor” in my house that has an HDMI input on it, so SSH works much better for me.

Make sure that sshd is running on your Pi:

pi@raspberrypi ~ $ sudo service sshd status
● ssh.service - OpenBSD Secure Shell server
 Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
 Active: active (running) since Thu 2015-10-08 12:17:06 UTC; 4 days ago
 Main PID: 506 (sshd)
 CGroup: /system.slice/ssh.service
 └─506 /usr/sbin/sshd -D

If everything is working, you should see the text active (running) in the result. Once we know that an ssh server is running, we can check our ip address with the ifconfig command. The output should look something like this:

pi@raspberrypi ~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:b9:49:cd  
          inet addr:  Bcast:  Mask:
          RX packets:5150 errors:0 dropped:51 overruns:0 frame:0
          TX packets:565 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:552488 (539.5 KiB)  TX bytes:60766 (59.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:  Mask:
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1104 (1.0 KiB)  TX bytes:1104 (1.0 KiB)

If your Pi is connected to a LAN cable, you’ll want to look at the eth0 section. If it’s connected to WiFi, look for a wlan0 section. Both sections should have an inet addr field whose value starts with a 192.168.x.x address. In my case, it’s From a terminal on my computer, I can connect with:

jfritz@IDEAPAD-UBUNTU:~$ ssh pi@

When prompted to accept the Pi’s RSA key, I do, and when prompted for a password, I enter the default password raspberry. If you intend to leave the Pi connected to your network for long periods of time, you should change this password or add key-based authentication to the system.

If you have problems getting connected, check out the official instructions on the Raspberry Pi website.

Installing ROS on the Pi

As of this writing, the most recent version of ROS is Indigo, released in July of 2014. To get it running on the Pi, you’ll want to follow the official ROSberryPi installation instructions on the ROS website.

While following these instructions, I had a few false starts. It’s important to read the instructions carefully, as they’re fairly generic, and can be used to install different configurations of ROS on different versions of Raspbian. I found that the instructions for the ros_conn configuration worked best on Raspbian’s Wheezy release.

The  trickiest part of the instructions is section 2.2 Resolve Dependencies. It took me a couple of reads to realize that if you’re installing ROS Indigo’s ros_conn configuration on Raspbian Wheezy, you only need to compile two packages from source: libconsole-bridge-dev and liblz4-dev. Installing any other packages at this step just costs you time, and may introduce problems down the road.

I also found that the install process went much smoother when the Pi was connected to a LAN rather than WiFi. The WiFi signal in my house is relatively weak, and the Realtek #814B is really cheap, so downloading a lot of files while maintaining an SSH connection is a big ask.

Once the installation is complete, open up your ~/.bashrc file, and add two lines to the end:

# export ROS environment variables
source /opt/ros/indigo/setup.bash

This will make sure that the appropriate environment variables are set to interact with ROS on every startup. You can check that it worked by rebooting your Pi and running

pi@raspberrypi ~ $ printenv | grep ROS

If you see all of the ROS_* environment variables print out, then everything is set up and ready to go. Now it’s time to start on some tutorials.

Eventually, I want to get the Raspberry Pi communicating with the Arduino, and use the latter as a sensor platform and motor controller for some kind of a robot. For now, I need to find my way around ROS.

Building Milk Crate Sized Boxes for my Record Collection

I’m a hipster. Seriously. I have a beard, I’m a foodie, and I collect vinyl records. After moving into my new house, I realized that I needed a new place to store the aforementioned record collection, as the bookshelf that it previously lived on is now on a different floor than the record player, and I’m too lazy to walk up and down stairs every time I want to listen to a record.

This project, as many woodworking projects do, started out with some wood:

Rough cut box sides

One of my goals for this project was to learn how to create a box joint, which is a method of joining two orthogonal pieces of material together by way of cutting a bunch of fingers into each piece and interlacing them, providing a large surface area for glue to adhere to. The result is an extremely strong and handsome joint, but the method requires the sides of the box to be cut longer than you intend them to be.

In general, if all of your material is the same thickness, then each piece needs to be cut two thicknesses longer than you intend its inside dimension to be once joined. My boxes have an outside dimension of 17″ by 14″, but their inside dimensions are only 15.5″ by 12.5″, because my material is 3/4″ thick. If I were joining the sides with a simple butt joint, and the front and back pieces of my box sat between the two side pieces, then the front and back pieces would have to be two thicknesses shorter than the final width of the box. With a box joint, all sides are cut to the intended final outside dimensions of the box, because the interlacing fingers will eat up the extra length. Therefore, the front and back of my box are cut 14″ long, while the sides are cut 17″ long.

Box joints can be cut by hand, or by hogging material out with many passes across a standard table saw blade, but these methods make it hard to keep the fingers and the spaces between the fingers the same width across the entire length of the joint. Instead, I purchased the Freud SBOX8, a table saw blade specifically made for cutting 1/4″ or 3/8″ box joints. It’s basically a dado blade with only two widths that cuts a flat-bottomed channel.


In addition, I built a simple jig to help keep the spacing between fingers even:

Box joint jig

This jig is basically just a mitre sled with a 3/8″ square piece of hardwood affixed 3/8″ away from the edge of the blade channel. When cutting the fingers of the box joint, you advance the piece along the jig by fitting the previously cut finger over top of the guide piece, which ensures that the next finger will be exactly 3/8″ away from the previous one. This in turn results in fingers and spaces between fingers that are all 3/8″ wide.

Using the box joint jig

In the photo above, you can see that I use my jig to cut two sides of the box at once. Any two sides that join at a 90 degree angle can be cut this way, but they need to be offset by one finger width (in my case, 3/8″) so that the tops of the two pieces will be flush when the fingers are meshed together.

After making a great deal of sawdust, I ended up with all four sides meshing nicely:

All four sides of the box cut, but not yet glued

The next step was to glue the sides together. The wood glue that I typically use has a working time of around 15 minutes. For a project with this many glue surfaces, I’d recommend finding a glue that takes longer to set up, since it takes awhile to get all of the surfaces covered in glue, and you do want to glue the entire box together in one operation so that you can ensure that all of the pieces are square to one another. Many clamps are essential for this process.

The box is glued and clamped

With the glue dry, I used a palm sander and a router with a flush trim bit to clean up the edges of the box as well as any areas where the fingers sat proud of the side of the box. I also used a jig saw to cut some handles into the front and back sides.

The box is glued together and has handles cut in it

The last step was to put a bottom on the box. I used a router with a rabbeting bit to cut a 1/4″ channel around the inside edge of the bottom of the box, then glued in a piece of 1/4″ thick plywood.

Gluing the bottom into the boxes

Finally, it was time for finishing. This project got one coat of Minwax Pre-Stain Wood Conditioner, two coats of Minwax American Chestnut Gloss stain, and three coats of Minwax Wipe-on Polyurethane. Before staining, I sanded down to 220 grit, then hit the surface with triple-zero steel wool between each finishing coat.

In the end, while the finish is smooth and glossy, I think it came out too dark. I really liked the look of the box after the first coat of stain, and if I were doing the project again, I would probably would stopped there.

First coat of stain

I really liked the look of the finger joins with just one coat of stain


Finished box

The finished look is nice, but a bit orange for my tastes. I think the polyurethane has a lot to do with that yellowing effect.

After a lot of hard work, many mistakes, and more than a few false starts, I triumphantly carried my new record crates upstairs and started to put my records into them… only to find out that they wouldn’t all fit. Fuck.

You know that old adage about measuring twice and cutting once? I measured twice, but I only measured a single-platter record sleeve, not realizing that gatefold sleeves and record sleeves that contain two platters are wider than their single-disk counterparts. Luckily, my wife had the bright idea of putting the records into the boxes sideways. It looks a little funny, but it works:

Photo 2015-09-07, 12 29 11 PM

The only problem is that my collection doesn’t have much space to grow. I guess I’ll have to make more boxes after all. Oh well. Back to the shop with me.

Playing the Simpsons Theme on an Arduino

A little while back, I picked up an Arduino Starter Kit. It contains an Arduino Uno, a bunch of common components, and an instruction book that walks beginners through building circuits and using the Arduino to interact with hardware.

One of the projects in the book is a basic synthesizer that lets you play tones on a piezo speaker. The schematic for this is dead simple:


After getting the Arduino to play a few notes, I decided to extend the project a bit and play a melody. After a bit of screwing around, I managed to get the thing to play the Simpsons theme.

The code for this sketch can be found on GitHub.