All Posts

Where’s Louie – a fun little js game.

It’s Homecoming at GVSU this weekend and the theme is “Where’s Louie” (Louie is our mascot). A while back a few of us talked about creating a game to promote it, and it’s out!

This was fun to write because it basically all takes place in a single canvas element. It’s written in vanilla javascript, with a polyfill or two for older browsers. The purpose of the game is to find the “Louie” image among the randomly generated characters on different maps before the time runs out.

I’ve helped with some similar projects, but this was the first one where I have done the vast majority of the programming. It was a fun challenge! The biggest issues were rendering tens of thousands of randomly generated sprites quickly, and also adding “lava” to the maps via SVG paths so that characters wouldn’t appear in odd places. (Get it? Don’t touch the lava!)

You can go to to play it. I’d love if you let me know in the comments what you think of it or if you have any technical questions.

(Hint: if you liked this game, go to and enter the Konami code on your keyboard. Trust me you will like “Legend of Louie”)

GVSU Destination Report

I just finished up a bit of a fun site at work: It’s the first time GVSU has built a dedicated web version of this report. Since a lot of the work I have been doing lately has been heavily into back-end application development, it was nice to get a break and make something where I could focus more on the design.

I also got to create an interactive React component to look up major-specific data about degrees. This was cool both because it makes it easier for students and potential students to see what they can do with a degree, and I also got to use Victory Charts, a React graphing library I had been wanting to play with. It turned out pretty nice, easy to use and make accessible:

Animated image showing react component displaying major specific data
React is really great for interactions like this

It proved a little tricky to integrate into the rest of the site. Mostly because I set it up using create-react-app and really didn’t want to eject it out of that. I ended up creating it as a sort of sub-project whose base HTML file then gets included in the larger project via the back end language. It worked really well, I would definitely use this method if you come across a similar situation.

French Cleat Tool Wall

A few weeks ago I got an unexpected surprise – a snow week! Maybe the best thing about working at a university is snow days as an adult, and a whole week was something new. I used the time to organize the basement a bit.

When I first started making space to do some woodworking in our basement, I put up some OSB I had laying around from roofing our porch and mounted tools to it with random screws and nails.

First Tool Wall

It was a big step up from having everything laying around, but as I get more tools and understand what I use more often, I wished it was easier to move things around.

In the other corner, I had an old wire rack that I was using to store some of my other tools. It was messy, and really hard to keep organized since it was basically just semi-organized piles. Behind it was the end of some storage shelves that I built a while ago. The ends were two 2×6’s so I decided to put up a storage wall there as well but wanted to try using french cleats.

What’s a “french cleat”? It’s a really simple but strong way to mount things the involves cutting strips of wood at an angle and mounting one to a wall and one to something you want to hold, like this:

The genius of this is it is really strong if you build the tool holder correctly (more on that later), but it’s still easy to rearrange if like me, you are adding to your tools as you go. There are lots of good videos about making them on youtube, I checked out a couple for ideas before I started.

Much Better!

The one thing I learned (a little too late) is that you have to be careful about providing enough vertical support under the cleat on the tool holder that the weight doesn’t pull it forward. This is easy to do by just putting a 3/4″ strip at the bottom of anything that is a little taller. The only holder that I might have an issue with is the drill holder. It wasn’t tall enough to add any support underneath, and I knocked it out once by bumping it when building the holders. I think it will be okay, but for the others, like the jigsaw, I added a strip to the bottom and it is rock solid.

All in all a fun and productive way to spend some unexpected free time. I also got a mobile tool base kit from Harbor Freight for my table saw and built that with some leftover pallet wood I had laying around. Moving the saw is about 100 times easier now, I didn’t realize what a pain it was before. I repurposed the wire rack to organize some of my wood, although I think a rolling lumber cart might be my next bigger project.

Goals for 2019

Goal 1: Learn German

I’ve tried learning languages before. I speak a little Spanish and last year I took German lessons in preparation for my trip to Europe. The problem is that when I get back from whatever trip, I lose motivation and don’t ever make it past the basics. I really enjoyed learning German last year and want to take this year to try and commit to learning it. Being bilingual would be awesome, and I want to make a real commitment to moving in that direction this year.

365 Day Duolingo Streak

Duolingo might not be the best or most efficient way to learn a language, but it is the easiest I have found to stick with. For that reason, I’m making that my base. I will complete my daily goal in Duolingo (30xp right now) every day for an entire year.

German Journal

I like the idea of the 5-minute journal, but it’s another thing that I have never actually done. So this year I’m going to kill two birds with one stone and try to do it in German. They sell a German version of it on, but I couldn’t get it here in the US. I reached out to the company and they were nice enough to send me a German version for free to try out! I think this will be a great way to force myself to use German every day.

More iTalki Lessons

iTalki is the best method that I have tried to learn a language. I took German lessons last year and learned exponentially more than I have from any other medium. Speaking to someone in real life makes you internalize a lot of what you have learned. Since I don’t know anyone who speaks German and wants to spend their free time helping me learn, this is the closest I will get.

Goal 2: Get in Shape

Ah, the universal new year’s resolution. The one everyone has and nobody keeps. Honestly, I hate putting this here just because it’s so cliche. On the flip side, it also needs to happen. A few years ago I really got things together health-wise and it’s slipped the last couple. Now I want to make it a priority again.

Maintain a healthy weight

I’ve lost, and gained, and lost weight again for years. This year I want to get to a better weight, and then focus more on maintaining it.

Find a reliable way to exercise at home

I work from home twice a week, which I really love, but I’ve struggled to find a way to make working out happen.

Goal 3: Morning Routine

This is the one goal from last year that completely eluded me. Mornings are not my strong suit. I’d like to try and get a more structured routine that involves all of these things. Even if I don’t stick with all of them, I think trying them all for at least a month at a time will give be something to go from:

  • Wake up at the same time every day
  • Morning Exercises/Stretching
  • Keeping a Journal
  • Eating a Healthy Breakfast
  • Walking Maya (my dog)

Goal 4: Meaningful Free Time

I wasn’t really sure how to word this. It seems odd to make goals about your free time. But the fact is, I really like some of my hobbies, and they are things that relax me. It also turns out that thing everyone says about having kids taking up a lot of your free time is mostly true. So I guess the goal here is to optimize my free time by making more conscious decisions about how I spend it. I like to flip on Netflix as much as the next person, but these things are better ways for me to unwind.

Beer Making

  • Make 5 batches of beer
  • Make one all grain batch


  • Turn 24 Bowls (2/month)
  • Make four other projects

Programming (outside of work)

  • Make at least 2 contributions a month to open source software
  • Make at least three new websites


Well, that’s it, a little ambitious maybe considering it’s already February 😉

2018 Goals Review

I’ve put off writing this for a while, I would say this is about the fifth attempt. I had a lot happen in my life last year, and writing a post like this makes it seem like it was just another year, when it really wasn’t. When you put goals like this up against losing someone you love or adding of your family, they seem really insignificant.

Acknowledging that, yearly goals and their corresponding update are a tradition I wish to keep up with, so I think this year I will just keep it short and sweet.

Finish one woodworking project a week

I didn’t finish 52 projects but I did make a dresser and maybe 25 other things, mostly on my new lathe. I would say about 10 to 12 of which were worth keeping, I was even able to use a few as Christmas presents.

Brew 6 times

I made two batches this year, but both turned out well. I made an English Mild and a Dunkelweissen. I used a kit for the English Mild and made the recipe for the Dunkel. I’d link to the recipies, but this site I used to store all my brewing info shut down, I’m still looking for a replacement.

5 Web Projects

In the past year, I made:

Eat out less

This went well. It took a little to get consistent. For the second half of the year though, I would say I ate out once a month at the most.

Write/Post three things a month

I started up at again this year like I wanted and between there and here have 24 posts total.

Solidify a morning routine

Well, they can’t all be winners right? Didn’t really make any progress on this at all.