On Becoming an Adult

Here’s the deal: In April, 2014, I’ll be graduating from McGill with a BSc. in Computer Science. I have one more semester left in school until I start working. I’m an adult, and in around 6 months time, I’ll be putting money in my bank account – money that I’ve earned by working – and living 100% by my own means. None of that was real for me until the other day. What happened? I signed up for my graduation photos.

First of all, let’s clear this up for good: graduation photos are a fraud. Why? Because you don’t actually take them when you graduate, and you’re not wearing your graduation gown when they’re taken. No no, you take them an entire 4 months before you graduate, and you wear a gown they lend you for the photo shoot. It is all a lie. There isn’t even cake. When you sign up to have your grad photo taken, you’re still not even 100% sure that you’ll graduate. Hell, you haven’t even applied to graduate. Which is also a thing, students: you have to apply to graduate.

Now that we’ve covered that little detail, let me talk about why all this “becoming an adult business” slapped me in the face when it did. You see, I’ve never really put much stock in all the accoutrements surrounding graduation. In fact, I’ve technically had the opportunity to attend three¬† of my own graduations, and of those I only attended one. In some ways, not attending graduation has become “a thing” for me; it’s like a tradition that I feel I have to uphold. But despite my feelings on graduation, and not wanting to be paraded around in front of a bunch of teary-eyed parents while some school official I’ve never even met berates me and my colleagues about the value of education, making the appointment for my grad photo was somehow a wake-up call for me. When I submitted that web form, it all became real. This is it: I’m becoming a real, proper, certified adult.

Rather than doing the sensible thing, and quickly signing up for a masters degree or adding a minor to my degree, or dropping some classes next term – anything to stay in school a bit longer – I actually felt pretty satisfied with myself. Never having to go back to school again is freeing. I’ve got a lot of experience under my belt, and now I’m free. And it’s not that I want to stop learning – on the contrary: now I get to learn even more – but I can do my learning on my schedule. I’m jumping off the treadmill of assignments and exams and quizes and essays. I’ll get to make things that have never existed before, and I’ll get paid to do it.

Sure, it’ll be hard. I’m about to start a whole new chapter in my life, in a totally different environment. Perhaps my next blog post will be about what I realized during my first job interview: that as much as I feel like an old hand at school, I’m going to feel like a total “n00b” in the workplace. But as scary as change is, it’s also exciting. It means new things, and I think I’m ready for them.


Maker Faire Was Awesome (Formerly Untitled, Because I’m Silly)

Update: Yes, I forgot to title this post. I’m silly. It’s been a weird sort of day, please forgive me.

You may have noticed that I missed a blog post yesterday. I can explain… I totally forgot. I managed to do everything else on my list in a timely, orderly, disciplined manner, but the blog post fell off the edge of the Earth. In the end, I decided that it was better to get to sleep on time so I could go running this morning than to stay up and derail my entire week. So that’s what I did.

Yesterday, as planned, I went to Montreal’s very first Mini Maker Faire. It was everything I had expected. I spent nearly three hours wandering around the medium sized tent that had at least six different kinds of 3D printer, ham radio enthusiasts, makers, crafters, hackers, developers, and spectators. The $6 entrance fee seems a measly offering compared to all the awesome I witnessed there, and the best part was that I could stay as long as I wanted, walking around and absorbing it all.

I started reading Make magazine around seven years ago, and I’ve been a subscriber for maybe 5 years. Every year, as I become more and more adventurous, the idea of travelling to one of the great Maker Faires around the world has grown more and more appealing in my mind. One of these days, I’ll certainly go, and I might even go to more than one (especially since New York is only a train ride away.) Even so, it’s wonderful to be able to attend a miniature version of the fabled Maker Faire right here in my own town.

But that’s not the most exhilarating part. For me, the most exciting thing about the mini Maker Faire was seeing all the people who make things in Montreal and the surrounding areas. To find out that all these exciting things are going on around me is inspiring, and makes me want to get making! Before I got to Montreal, I was the only person I knew who had even heard of Make Magazine. I would tell people about it, and how exciting it was, but few people really understood what I was so excited about. At mini Maker Faire, I told people that I had a Cupcake, and they totally knew what I was talking about*!

After about two hours and 30 minutes, when I had seen every booth, and talked to most of the people behind them at length about what they were doing, and how they were doing it, I walked out to see the second level, and reached my saturation point. My brain started turning off; there had been too much to see and experience, and I had taken in about as much of it as I could. It was time to go home.

I wish I had taken pictures, but honestly I was too enthralled by what was going on around me. I’m always afraid of getting distracted by taking too many pictures, and ending up with the tourist’s dilemma of experiencing an exciting event through the lens of a camera. All in all, I would totally do it again tomorrow. And who knows, maybe one day I’ll be on the other side of one of those booths.

*It’s a 3D printer made by Makerbot called a Cupcake CNC. Not the dessert.

My Livingroom Is A Supercomputer

As a Computer Science Student, I like the idea of being able to run my code on the biggest, baddest computers there are. Unfortunately, most of my code doesn’t need more than my laptop. In fact, many of the programs I write would run just about as well on my phone, or an Apple II. However, sometimes I do write programs that require gobs of raw computing power. Last night, I conceived an idea for just such a program. Before I even started programming, I realized that my only hope for finishing computation on the large dataset I wanted to process (all the links on Wikipedia, many times) was to spread the computation across multiple computers. I needed a cluster. So I built one.

A cluster (short for computing cluster) for those who don’t know, is basically a bunch of computers connected via a network. You could think of the Internet as a computing cluster, but the important difference between the Internet and a useful computing cluster is that a useful cluster works toward a unified goal. As you might have guessed, part of the beauty of a cluster is that the computers involved don’t have to be all that powerful by themselves to be useful. Because my family doesn’t usually get rid of computers (precisely for occasions such as this,) we had three old laptops lying around, all of which I confiscated for my cluster. Add my laptop to that, and I have a cluster of six cores. It’s not a whole lot, but it may just be enough. I also have an old switch (what most people would call a “router”) that I saved from the trash during high school, which I’m using to connect the computers together. After installing Debian Linux, and puppet to manage the configurations on all the machines, I’m almost ready to run cluster computations!

In order to run a cluster, you need a server to distribute the data you want to process, and clients to actually do the processing. In this case, I’m talking about the server and client software, not machines. So I have to write a series of programs that will split up my data and process it on each of the cluster computers. It’s simple enough when you use Java’s RMI (Remote Method Invocation.) The server maintains a collection of the processed data, which is updated whenever the clients finish processing. Once the client has finished its data, it sends back its results and requests more data.

This strategy has a lot of advantages, including the fact that I don’t have to store the entire Wikipedia database on more than one machine. Since the data is sent in chunks, I can store it all on one of the two computers in my cluster that can handle that much data. Also, the clients can work asynchronously. Since the computers don’t have to wait for each other before getting new data to work on, my laptop can crunch along at 2.53GHz per core, processing as much data as it wants, while the poor little AMD Athlon slogs through whatever data it can handle.

My livingroom table, which currently houses four computers and a switch. Delightful.

My cluster is called “End of the World,” or EotW for short. I was trying to think of a theme for the hostnames of the computers in the network, and I settled on character’s from Haruki Murakami’s novels. Since there’s a “place” in his book Hard Boiled Wonderland and the End of the World called “End of the World,” I figured that would be fitting. The nodes are named toru, watanabe, and sumire.

How much did all this cost? $20 for a power strip. Even if I didn’t have all the laptops, I could have waited until the morning, gone to the recycling center, and picked up a bunch of computers and a switch for free. That’s what I love about cluster computing: with just a little recycled hardware, you can create a pretty fast computer. It’s true, my tiny computing cluster barely rivals a new, mid-line desktop computer with an Intel Xeon processor, but it’s still faster than just my laptop. And hopefully, with all those computers working full tilt for a few days, I’ll be able to crunch through my data*.


*As I said before, I’ll discuss what I’m trying to do at another time. Trying to explain it here would make this post too long, and I want some tangible results before I start talking about it.

More Spammer Chili

You may remember my post from a few months ago when I made Spammer Chili. Today I’m writing to update you on some awesome changes that I’ve made to the Spammer Chili recipe, so that you can share in the awesome, and so that I remember them the next time I make it.

First, an eighth of a teaspoon of Cayenne pepper isn’t nearly enough: use a quarter teaspoon. If you’re craving something spicy, try a half or even a full teaspoon, but strictly at your own risk, because I haven’t done it yet myself, and I don’t know how hot it actually is. I.e. don’t come whining to me if you ruin your chili and burn your mouth.

Second, before making your chili, “prime” the pot by cooking bacon in it. Cut up between four and eight slices of bacon, coat the bottom of the pan with olive oil, and cook the bacon until it’s browned, but still meaty. Remove just the bacon (not the fat; leave the bacon fat right where it is,) and continue making chili as per the recipe. Then, when you’ve got around ten minutes of simmering left at the end of the recipe, add the cooked bacon and stir it around. Delicious bacon is delicious, especially when added to Spammer Chili. (Also, here’s a link to a poem about bacon that I found on Reddit, to get you in the mood for bacon. You’re welcome: Poems are Hard.)

Third, since I haven’t gotten around to buying black pepper, I’ve been using Maison Madelon‘s Maple Pepper, which is freaking delicious. I use a couple of healthy grinds. My recipes are pretty free-form, if you hadn’t already guessed.

Finally, tonight I felt like switching things around a bit, and rather than just eating chili (because anyone can just eat chili,) I made chili tacos. I highly recommend Spammer Chili tacos. They have all the delicious qualities of chili, with all the portability of tacos. Just be careful not to spill chili all over your pants like I did, because that would be embarrassing*.

I have to say that I’m still really stoked about Spammer Chili. I eat it around once a week, and I get really excited every time I make it. This is definitely one of my go-to meals when I’m not sure what else to make, and I love having left over chili the next day. Some days, it just feels like a Spammer Chili day.

*How do you make something embarrassing less embarrassing? Share it on the Internet.

Something Awesome is Coming…

I generally avoid promoting things on my blog. In fact, I generally avoid promoting my blog on my blog (notice how I don’t ask you to subscribe or anything, even though I really want you to.) But for the past month, I’ve been working on a project that I feel I have to promote. It’s a project that has consumed many of the waking hours of my life. My job has suffered because of it, I’ve been exhausted because of it, and every minute will have been totally worth it. And I have to promote it, because it’s going to be freaking awesome.

The musical I have to promote is Cabaret, produced by Music Theatre Montreal. You might have seen¬†Cabaret already, but I can assure you that this rendition will be worth seeing. Less than a year ago, Music Theatre Montreal put on Into The Woods (Technical Direction by yours truly,) which recieved a rave review in the Montreal Gazette, and we’re back again with Cabaret.

Music Theatre Montreal’s strength is it’s ability to combine professional people with the tenacity that comes from working on something you believe in. Since we’re doing this strictly because we love it, we put our hearts and souls into it. And while I complain a lot about how much work it is to put on a show, especially one with as complex a set as our production of Cabaret has, I secretly love every minute of it.

I invite you to watch the following promotional video that we spent 14 hours working on last Saturday, and which our director has spent many hours since editing. And I defy you to not be astounded.

The show will be in D.B. Clarke Theatre, starting on June 22nd. Please visit www.musictheatremontreal.com for more details. I will be overwhelmingly pleased if you go see it, and I’ll be even more pleased if you tell others about it.

Valentine’s Day: Musical Hearts

Here it is, ladies and gentlemen: this year’s Valentine’s Day computer art project. For the past two years, I’ve done some sort of computer art project for Valentine’s Day. The first was a 3D printed heart with a red LED inside. Last year, I recorded my entire bus trip to school, and wrote a program to select only frames with a certain amount of red in them, and compile them into a video. This year’s project was slightly more ambitious.

My original idea was to take videos of artistically interesting things on my walk to school. A computer program would then find trackable points on the video, and “stick” hearts to those objects. The sizes of the hearts would correspond to the amplitudes of certain frequency ranges in a song that would play in the background… a song which I would compose and create on my computer.

Several factors led to my cutting out the motion tracking entirely (namely that OpenCV is complicated, and Adobe After Effects hates me.) However, the hearts respond to the sound of a song that I composed and performed using ChucK, which is a programming language for creating sound. If you hadn’t already guessed, the red heart is low frequency, pink is midrange, and white/light pink is high. While the result isn’t nearly as cool as my original idea would have been, I think it’s pretty nifty, and it was fun to make. I also learned about some valuable tools in Processing.

To record the videos, I walked from Westmount to McGill at 7:40am, in -15 degree weather, without gloves. When I got to McGill, I could hardly feel my hands. So it’s safe to say that I put a lot of effort into this video.

(There was initially a problem with the upload, which has now been corrected.)

For the sake of comparison, for last year’s video I used two programs, one of which I wrote myself (Cinelerra and a python script for selecting video frames based on color composition.) For this year’s video, I used a grand total of 8. In order of usage (more or less:) ChucK, miniAudicle, Sound Flower, Audacity, Processing, Adobe After Effects, and Adobe Premiere*, and a Java program that I wrote in Processing.

*I am currently upset with Adobe. As a student, I cannot afford a license for the Adobe Creative Suite; a marvelous collection of software. I also have no intention or ability to make a profit from the work I have would do with the Creative Suite. If I spent my free time playing with Photoshop, After Effects, and all the other neat programs on my own computer, however, I might be able to make money from my work some day, at which point I would buy the Creative Suite so I could profit from my art. On the other hand, there isn’t a chance in hell I’m going to spend $899 on the Master Collection just to tinker. Therefore, it’s in Adobe’s best interest to offer a FREE (as in beer) version of the Master Collection to students for strictly non-profit, educational use. So there, Adobe, the ball is in your court now.

20 Volumes of Questionable Content Later…

Before I launch into some not-quite-but-almost-pointless algebra, let me explain why I’m calculating the number of years it will take for the Questionable Content books to catch up with the comic itself. First, I love QC. I was never that kid who watched cartoons on TV in the morning, or read comics in the paper at breakfast, but I do read QC every morning. Sometimes I check it on Saturday because I’m CONVINCED it’s Friday, and OMG WHY DIDN’T JEPH POST A COMIC IT’S FRIDAY WHAT’S WRONG??!!!!111!!!111 Second, I own both the QC books, because I love supporting artists and getting books I love signed by the authors. With this in mind, the other day I wondered to myself, “Self, if each QC book only has 300 comics in it, and if the current comic number is 2112, won’t it take a long time for the two to catch up? Doesn’t that mean that my bookshelf will be FULL of QC books in a few years?!” The answer, of course, was to put on my math hat, put pen to paper, and start working out a problem I could probably have done more quickly in high school*.

Because I haven’t blogged in a while, and because I thought this exercise would be fun to blog about, I’m going to walk you through the steps of figuring out exactly how long it will take, and how many volumes there will be. If you don’t want to come along for the ride, skip ahead to the second to last paragraph and weep because you’re depriving your brain of a chance to grow.

The approach I used is to come up with an equation for the comic number based on the week. Yes, I could have done it with the number of days, and maybe it would be a teensy bit more accurate, but that would entail carrying around a 1/7 that I don’t feel like dealing with. For our purposes, this is good enough. Hopefully most of you remember the equation for a straight line:

If not, let me refresh your memory. m is the slope of the line, b is where you started, and x and y are where you are on the line. For this example, I want y to give me the number of the comic from x, which is the number of weeks since the starting point when the number of comics was b. (Remember that when you’re adding things, they have to have the same units!) So this is pretty much what the equation looks like in words:

The starting time in which we’re interested is the launch date of the second book, because I already have my volume 2, and I want to know how many additional volumes I’ll have to buy. The first book was launched 20 weeks ago, when the comic number was 2012 (dun dun duuun…) so our starting number is 2012. There are 5 comics per week, so we plug those into the equation and get:

So that tells us the number of the comic on the Friday of any number of weeks since the book was released. Now we want to be able to ask how far along the next book is on any week after the launch date of the second volume. So we work some similar magic, and calculating that there are 319 days between the launch of the first and second volumes, which – divided by 7 – is 45.6 weeks. Since the second volume contained 299 comics, we can divide that by 45.6 and figure out that there are about 6.57 comics per week in “book time.” The second volume ended at 599, so that’s our starting number, and we get:

Then all we have to do is set the equations equal to each other and solve! Hooray math!

That means that 900 weeks – or 17.31 years – from now, the QC books will finally catch up to the comics… assuming that Jeph keeps the series going for that long. But how many volumes is that? Well, we know how many weeks it takes to make one volume, and we know how many weeks there are in a year, so let’s make a ratio that can tell us the answer:

That will be $354.96 in total, which is $20.51 a year. Remember that this is in addition to the number of volumes already published, and that you can’t have 0.72 of a volume, so the actual number of volumes will be 22.

Ok, so here’s the sad part where I tell you that none of this works in real life. We’re assuming that it takes the same amount of time to prepare and publish each volume, which I can’t believe is actually true. Maybe the time per volume will average out to 45.6 weeks, but we have no reason to believe it will. Also, as I mentioned before, we’re assuming that the comic will continue for another 17 to 18 years, which would be awesome, and is certainly possible (the oldest American comic strip is Katzenjammer Kids, at 114 years old – thank you Wikipedia,) but will it? I guess we’ll find out. In the meantime, I want a plush pintsize. You know, because WHO DOESN’T?!

If you’re curious about how I typeset the equations for this post, I used LaTeX, which is a typesetting language commonly used for research papers, among other things. I created the images to insert here with an online LaTeX equation generator. If you want to learn LaTeX (it’s really a great language for math and for any other sort of writing,) the LaTeX Wikibook is really fantastic.

*For the record, my calculus is skills are sharp as tacks. I can double integrate ANYTHING… ok, not anything, but you get my point. #mathjokes