Making a Giant Canvas Frame

At some point I became interested in doing giant paintings. I think it harkens back to my time as an undergraduate where I was allowed to paint murals on the walls. I painted a lot of murals over the four years I lived in that dormitory, most of which I’m proud of. Painting murals in apartments I’m renting is definitely less kosher, so instead I have decided to do giant paintings on canvas frames.

Unfortunately giant canvas frames are expensive. They easily shoot up in the hundreds of dollars getting anywhere close to wall-sized. I figured: I can make that.

For my first go at it I purchased a stack of 1x3s from Home Depot. I picked the straightest ones and cut four pieces with their ends at 45degree angles. Then I glued the corners with wood glue, having my boyfriend hold them tightly together while I used a staple gun to hold them in place while the wood dried. The result was a large frame that was pretty wonky — it did not sit flat on the ground at all. But it was my first go; I figured it was because the wood wasn’t planed.

I also bought a huge amount of canvas from Amazon for about $40. I expect it to last me a long time. Once I had the frame, I cut an appropriately sized piece of canvas and lay the frame on top of it. Then: a lot of time with the staple gun. The trick it to start in the center of each side and slowly, going round to each side, work your way out. Pull the canvas as tight as you can, staple it to the back of the frame. I would put one staple about every 2-3 inches until I had made it to the corners of the frame. Then I went back and stapled in between each staple. Remember: you still have to pull tight! It’s amazing how much you can stretch the canvas. The extra round of staples makes it much tighter.

I was pretty disappointed by how flat it was not. Plus, I decided it wasn’t that big. I wanted to go bigger! Flatter! Better! So I tried again.

This time I went with slightly more expensive wood from Home Depot — some planed 1x2s that I spent about half hour messing with to find the 3 straightest pieces they had. But I figured I’d use the same technique — glue, hold with staples — so I could compare how much flatter wood makes a difference. I didn’t do the 45degree cuts; since they were so square I just glued them at the right angles. I even included a center bar for extra structure. I canvased it and viola! Giant canvas frame.

This was about twice the size. 8×4 feet! It looked great. But in the process of moving it from the ground to laying it against the wall it broke. Though it’s light, it buckled under it’s weight when torqued. Some of the staples almost came completely out. I guess they weren’t enough to hold it while the glue set.

The wood glue really requires a lot of compression to work properly. Ideally the wood glue joints should be stronger than the wood itself. So I went back to Home Depot and bought a large square post, which I cut into a series of skinny squares — one for each corner. Then I glued by square pieces into the corners, this time clamping them down to get a good, strong joint.


Now I was getting somewhere. The resulting frame was huge, beautiful, and very robust. Not only that, but it was pretty freaking flat! I’m still in the process of painting it, but I’m extremely happy with the frame.

The whole thing probably cost about $30. There’s the cost of the slightly nicer wood, about $5/8feet, then the cost of the canvas, probably about $5 for the section I used. But the canvas is raw; it requires a lot of primer. And then there are the incidentals of glue, staples, the extra post… it’s not quite as cheap as I would like. But the nicer wood definitely made a difference.

Spinning Glass Simulation

I read recently about a question someone got asked in a technical interview for a mechanical engineering position at Apple. It went something like this:

Suppose you had a rotating plate, like a lazy susan, and put a glass of water on it towards the edge of the plate. Suppose the plate started rotating, getting faster and faster, though the acceleration is slow enough that you could consider everything in steady state. Which would happen first: the glass tips over, the glass slides off the plate, or the water spills out of the glass?

I liked this question. It was fun to think about. I think the point of asking it during an interview is just to see how people think about the question — it obviously depends on a number of physical properties and, as I learned, a decent about of math. But I wanted to go further than just thinking through it. I wanted to work out an actual solution to it. So I sat down with my boyfriend and started building a simple python script that would solve it for a bunch of physical parameters.

You can find the script on github here. It could use some work, like a visualization, and there’s plenty of room to make it more complicated and therefore more accurate. Like all good engineers, we made some simplifications.

The glass sliding off the plate is easy: is the centripetal force, a function of the rotational speed and distance from the center of rotation, greater than the frictional force, which is just a function of the weight of the glass + water?

The other two are a little trickier, especially if you think about how they relate to each other. As the glass starts to tip, the water obviously sits differently in the glass. So to keep it simple we considered them separate–if the glass started to tip at all, then the glass tipped first. Independently they’re much more tractable.

The water spilling out is a matter of the shape of the water in the glass. You can read up on a way to calculate this if you look up the bucket argument. Basically the bucket argument says that the slope of the water at any point on its surface is tangential to the resultant force at that point. Since this whole thing is rotating, it’s radially symmetric and we can look at this as a 2D problem.


Find the angle of the resulting force from the centripetal and the gravitational forces, and you have a curve that represents the shape of the water in the glass. (Remember, this is the shape in the radial dimension. It’s radially symmetric.) You need a little bit more to get all the way and figure out the actual height, which is based on the volume of the water in the glass. i.e. We’re looking for h_0. There’s a derivation you can follow here. It wasn’t too hard to follow. It reminded me that, hey, I do know how to do calculus. Woo! Basically you want to integrate this curve we’ve found over the area of the glass to get the volume of the water. This equation will obviously still have h_0 in it, but everything else should be a constant based on the physical properties. By setting this equation equal the volume of water, which we know because it’s a physical property, we can solve for h_0, plug it back into our curve equation, and figure out if the water is spilling out of the glass.

Because we’re working in a rotational frame of reference, integrating over the area means integrating over r, the radial distance, and alpha, the angle. Integrating over a circle looked extremely tricky, as r and alpha vary with regards to each. So instead we picked a much simpler shape. This makes the integration nice and easy.


The glass tipping over is a matter of finding the new center of gravity based on the shape of the water. That gives you the angle of the vector between the center of gravity and the pivot point, which is the outer edge of the glass where it touches the plate. Any forces perpendicular to that vector are rotational — in one direction they cause the glass to tip and in the other they cause the glass to remain on the plate.

You can look at the the components of the gravitational and centripetal force perpendicular to that pivotal angle and see if it’s in the direction of tipping or the direction of restoring. If it’s in the direction of tipping, then you’re tipping! Of course, it might not be enough to totally tip the glass over. As the glass starts to tip the pivotal angle changes and so the components of the forces perpendicular to it change. But as we said at the beginning, we consider any amount of tip tipping. At least for now. Currently I think our script doesn’t take even into account the new shape of the water, but it should eventually. Just like maybe eventually we’ll be more clever about checking if the glass tips all the way over versus lifts up just a tad.

But all in all it’s a nice round-up of mechanical engineering: lots of force diagrams, some calculus, some trigonometry, some conceptual problem-simplification. I think a visualization would be awesome, we’ll see if we ever get to it.

Mandala Coasters

I wanted to make a good friend of mine a house-warming gift. I wanted something that was elegant, useful, and took advantage of the free tools I had available: 3D printing, laser cutting, vinyl cutter. I saw some very cool 3D mandala designs on Thingiverse, but didn’t think they were particularly practical as coasters, neither do I think 3D printing coasters is particularly cost effective. However, laser etching designs onto wood seemed like a great coaster solution.

I found some free mandala designs online. A lot of the designs were hand-drawn, which I really liked; the slight imperfections would look natural when etched into wood. I took the designs into Inkscape, which I’ve been playing with lately as a free Adobe Illustrator replacement. Inkscape has a bitmap to path feature, which took these .png and .jpg images and turned them into vector objects. The settings were a little tricky, but it worked really well.

I had some 1/8″ wood hanging around, so I etched the designs onto the wood and laser cut them out into circles. Then I sealed it with polyurethane. I’d never done this before, so when, after the first layer dried, it felt very scratchy I was a little concerned. It turns out that after each coat you’re meant to sand it, and after sanding it felt incredibly smooth. I did several coats, leaving each for 24 hours to dry before sanding and reapplying another coat. They came out incredibly smooth and quite beautiful. The only problem was when I applied too much polyurethane and it didn’t all soak into the wood – instead a small blob of it dried on the edge. The blob not only looked weird but I could peal it off. Don’t apply too much polyurethane! It needs to soak in to work properly.

I’m really happy with the result. I also think they’d make a great Etsy store item. However, to do this I think I’d need to create my own mandala designs. While that sounds fun also, I think I am doing too many other projects (updates soon!) to take on another.

Icosahedron in OnShape

Inspired by a geodesic planter I saw on Thingiverse, I went about trying to make that shape in OnShape. I thought I might make the same thing out of wood, so I wanted to know what the composite triangle component was, which meant I had to CAD it starting with creating the correct triangular shape. In the end, the CAD was far more fun than I thought trying to make it on a table saw would be, so for now that’s where the project has ended.

I started with a sketch of two pentagons overlaid such that all ten points were equidistant. Then I created that same sketch on a plane some distance above the first. The concept of the shape is that the corner of a triangular side hits a point on a pentagon on one plane and the other two corners hit points on the offset pentagon below.

I wanted to try using variables in OnShape, so I wanted to be able to specify the length of the edge of the triangle and have it regenerate everything to fit together correctly. This meant I needed to calculate the distance between the two planes as a function of the length of the edge of the triangle. It was a fun geometric problem (you can do everything with Pythagoras’ theorem! and angles…) that resulted in a simple factor of the length of an edge as long as I kept the number of sides of the base shape (i.e. 5, a pentagon,) constant.


The tricky part in OnShape was getting the edges of the triangle at the correct angle. I ended up creating planes that bisected sketches of where two adjacent triangles would be and using those planes to split and then trim the triangular part. I used the Mid Plane option for creating a plane that bisected two other planes/sketches.

Once I got the correct triangular piece, I could mate them all together to form the shape I wanted.

I don’t think OnShape yet supports linking to public files, but if you’re interested in seeing or messing around the CAD, which is something it supports and I’m really interested in taking advantage of, let me know and I’ll share it with you!

A Synaesthetic Arboretum

I realize I don’t have anything here about the art project Lauren Gust and I did for Steer Roast of 2011. It was an awesome set of hard acrylic tubes filled with water with air stones at the bottom which were controlled by a micro-controller. Visually we wanted to evoke a tree, with the hard tubes as the trunk and small flexible tubing reaching up to the ceiling.

Letterpress Endeavors

I wanted to letterpress some of my poetry onto notecards. It was both a crafting project and a poetry one: figure out how a letterpress works and create a chapbook to distribute to friends and family. Unfortunately, I have yet been able to achieve a result I’m proud of and am on the verge of giving up the endeavor entirely. So here’s what I’ve tried and how it worked. If you have any suggestions, I’d love to hear them!

My coworker had a desktop hobby-level letterpress machine from when he made his wedding invitations. (I think it’s this one, from We R Memory Keepers.) I ordered my custom plates from Boxcar Press (type KF 152, they have information about the difference between types of plates here), the only letterpress ink I could find on Amazon (this guy, also from We R Memory Keepers), and a 4″ hard speedball roller (this is sometimes called a brayer).

As far as I can tell, this is how you work this kind of letterpress: your letterpress plates (glorified stamps) have an adhesive backing, so you stick them to your plate, which is really two plates on a hinge. Your paper goes on the other side, so that you can close the plates together, your glorified stamp lines up with your paper. Then you run it through the actual letterpress, which is really just a way to apply even pressure, just a runway with a metal drum above it that you can spin to feed the plate through. Of course before you do this, you need to put ink on your letterpress plate, unless you’re just looking to emboss. To apply the ink, you squirt some out onto a flat piece of glass or plastic (VERY LITTLE, everyone on the internet keeps saying) and use a roller to spread it out thinly and evenly. Then, with the thin and even ink on your roller, you roll the ink onto your letterpress plate. Close the hinge, run it through the letterpress (man, everything seems to be called letterpress or plate in this process) and you get beautiful, hand-crafted printing.


My set up! The letterpress machine is far left, the hinged plates in the center with a notecard on one side and the letterpress plate on the other, to its right are roller bearing strips (more on those later) and ink, farther right are rollers and a plate of acrylic with ink rolled out onto it.

This last part, beautiful printing, did not ever happen for me.

Boxcar Press has three blog posts about how to use these kinds of desktop presses. One two three. I read them after my first attempt failed. My attempt failed mainly in the evenness of the ink being applied to the letterpress plate and therefore the notecard. Here’s an example:


The shadows in this image suck, but you can still tell how uneven the ink is applied.

After much effort and attention, I was able to reduce the splotchiness of the ink but not to a level I was happy with.


I called Boxcar Press and they very nicely gave me some recommendations. They said to definitely stop using vegetable oil to clean everything. Letterpress ink is generally rubber or oil based, so water doesn’t work. For the most part I can wipe everything up with a rag but I used vegetable oil to remove ink that was giving me trouble. I was told that the vegetable oil will stick to my roller and plates instead of my ink, which would explain why parts of my plates wouldn’t pick up ink correctly. Instead I should be using mineral spirits, a type of paint thinner, where anything I didn’t wipe off would evaporate anyway.

They also recommended I use roller bearing strips, essentially strips of letterpress plates all around my letterpress plate such that when I rolled the ink the edges of the roller would be held at the right height, creating an even pressure as I rolled.

In addition, I read on their blog that they recommend a using a softer brayer. So I went and purchased the 4″ soft speedball brayer.

Armed with my new knowledge and tools, I cleaned everything carefully with mineral spirits and set out to try again. I carefully surrounded my plates with roller bearing strips. I rolled out the ink onto the plate with my hard roller and then used my soft roller to put the ink onto the plate.

Except the soft roller would not pick up much ink at all. And then it would not deposit it onto the plates. I resorted back to just using the hard roller. My set up did seem to be working better. My prints were coming out more even. But not even enough.

I was beginning to be able to tell where on the plate the ink was not even. This would allow me to proactively try to roll more ink onto those sections. (It also showed me that the problem was in applying the ink to the plate.) But I could not get it even to the point where I was happy. The parts that came out well were beautiful but I could never get the entire plate to come out well.


This is a close up of one of the best prints I was able to create.

I have a couple theories about why I could never get even inking.

The first is that my rollers were the cheapest I could buy. Recommended rollers run around $60 each and just go up from there. It’s clear that my rollers were not even and that may have been the source of all of my troubles. I’m not sure if I was meant to be able to get an even coat of ink with a single pass of rolling over the plate. I always had to roll and roll and roll to get close to even coverage.

My second is that I was using oil based ink. I’m not sure if I was because the ink I used did not say, but given the cost that is my guess. Rubber based ink seems to be the industry standard and is also about twice the cost of oil based ink. The recommendations I were given may have been for rubber based ink. It’s also possible that rubber based ink is simply easier to apply evenly.

My third and final is that I was dealing with very detailed plates and to print them well with this kind of set up, at least without much experience, is essentially impossible. My plates had pretty much exclusively 11pt text on them. I can think of nothing less forgiving.

Let me know if you have any ideas. I may ask a couple of pointed questions about my set up on dedicated letterpress forums and call Boxcar Press for more advice now that I understand more about my set up. But I’ve given up on the idea that without more purchases this project can be successful. However, I have learned a lot about letterpresses and think this kind of set up could be great for other kinds of printing. Probably I would stick to custom greeting cards like everyone else.🙂

IoT Light Sensor: There is Data!

One of my goals for the IoT light sensor was to explore graphing live data. Phant, the Sparkfun service I’m using to post my data online, has an example of graphing live data with Google Charts. Since I know nothing about coding for the web save some outdated html and css knowledge, I used their example code as a template for what I wanted to do.

Before we continue: I don’t fully understand it. I’m starting to get it but javascript is weird and so are asynchronous calls.

The key seems to be this ajax call.

// JSONP request
var jsonData = $.ajax({
    url: '' + public_key + '.json',
    data: {page: 1},
    dataType: 'jsonp',
}).done(function (results) {
    // do something here with the data returned

So a couple things. First of all, and this was not obvious to me at first, this asks for data from my Sparkfun Phant stream and then keeps going doing other things, like any code that comes afterwards, while it waits. When the data gets in, it executes what’s in the done function. So if I make a bunch of JSONP requests one after another, what I want done with the data returned won’t necessarily happen in the order I make the requests.

The next thing is that my data stream is really big. I post seven variables every 30 seconds and my sensor has been doing this for months. I have about 15MB of data hanging out. As far as I can tell there is only one way to limit the amount of data that gets returned:

data: {page: 1},

Sparkfun talks about this in their fairly bare-bones documentation. The relevant part is below:

By default, returns all of your logged data in the format you requested. If there is a need, you can also request output in 250 kilobyte chunks by setting the page parameter in the query string portion of the URL. This can be very helpful if you just want to check out the latest logged data without requesting the entire data set.

So if I don’t include a page, I’m calling all of my data which takes forever. Plus then I end up graphing way more than I’d like. But if I do include a page, I’m only getting a couple hours of data. Ideally I’d be graphing a couple days worth of data. As far as I can tell, there isn’t a way to ask for a range of pages at once. I tried a couple different ways of trying to do this, {page: 1-5}, {page: 1:5}, {page: [1,2,3,4,5]} but none of them worked. {page: [1,2,3,4,5]} appears to return the most recent two pages. I couldn’t figure out what I needed to return an arbitrary range nor even where to find this information.

Screen Shot 2016-01-16 at 11.02.54 AM

Takes way too long to load. That said, this graph is really interesting. It indicates that my office gets very little natural light. The smaller bumps are days when no one came into the office. The steps up and down from the high sections mark when the lights were turned on and off. It also shows that we have much less blue in our lightbulbs than daylight does.

Screen Shot 2016-01-16 at 11.04.06 AM

Loads quickly, but not enough data to be interesting.

That’s when I tried making multiple calls and realized that what I did with the result wouldn’t be done in order. This is not necessarily a problem, assuming I could do something once they were all done, i.e. sort and correctly order the data, but I didn’t know how to do that. The only thing I could think of was making additional calls within the done function, but that seems like the wrong way to do it.

Regardless I feel I got pretty far and learned a lot. If anyone knows the correct way to return an arbitrary amount of data from my data stream, let me know! Until them I’m psyched to have gotten a sensor-to-internet-graph system up and running with relatively little overhead.