Bryan's Blog

Bearded Code Warrior

C++ Friends, Templates, and Friends of Templates

This post is mostly to keep my own memory fresh. It’s been a while since I’ve written any hard-core C++ code, especially code that uses the language to its fullest potential. Let’s assume for some strange reason that you have a class template within another class template. In other words, consider the following code: template <typename T> class outer { int x = 0; public: template <typename U> struct inner { void foo(outer<U> const& o) const { cout << o.


The world keeps turning And programs need to be built. Somebody save me.

Beta Reduce? What? Why? A Brief History

Introduction You might be wondering why I’ve decided to name my personal website (blog, what-have-you) what I did. The reason is, and this is probably not too surprising, because I’m a huge freaking nerd. This blog post is both a quick overview of my history as a geek, and a justification for why I named my personal website after an operation for manipulating expressions in something called lambda calculus.

Hugo: Only Show Content Under a Given Section

One thing I initially found strange of Hugo was that it listed every piece of content on the front page - as if they were all blog posts. Luckily Hugo is flexible enough to change that behaviour without having to do any hacking. This blog post is mostly so that I remember how to do this in the future. To limit your front page to show only content from a certain sub-directory, say, “post”, edit your index.

New Site

Every once in a while I like to shake things up a bit around here. I’ve owned this domain since around 2005 or so, and over the years it has changed quite drastically. From my humble web development beginnings, exploring the in’s and out’s of HTML, PHP, etc; to the Wordpress years; to now. Since 2013 I’ve opted to rely on static site generators such as Jekyll, Hakyll, and now Hugo.

2015 Wrapup

2015 is gone now, so I think this is a good time to look back and reflect on some things. First and foremost, 2015 was my very first full calendar year of being married, and also of owning a house. There were challenges to overcome and projects to complete, but overall I think Chelsey and I did pretty good for our first real year. I’m certain that there will be more challenges ahead, but Chel and I have a way of respectful argumentation that allows us to resolve issues very efficiently - we’re a good team!

Why Emacs?

Why do I still use the emacs text editor after all these years? I could try explaining it to you, but I think I’ll defer this one to science fiction author Neal Stephenson: I use emacs, which might be thought of as a thermonuclear word processor. It was created by Richard Stallman; enough said. It is written in Lisp, which is the only computer language that is beautiful. It is colossal, and yet it only edits straight ASCII text files, which is to say, no fonts, no boldface, no underlining.

Programming Outdoors

As a software professional, I spend a lot of time indoors. It’s really not so bad: I have a nice comfy chair, ample desk space, and the office is always nice and air conditioned :-) But the past few days have been so beautiful here in Windsor that I’ve been taking my coffee and laptop outside to read the morning news and catch up on email. It makes me remember the good old days when I was working to pay for my undergraduate.

Life is Good

I’m sitting out here in my back yard, sipping a cup of freshly brewed coffee. The sun is shining and I can hear birds chirping away in the trees. This is what it’s all about: Not the hustle and bustle of work, nor the never-ending list of things to do with the house. Just me, my coffee, and a beautiful Sunday morning. This is the life. And it is good.

Playing Around With Racket

Lately I’ve been playing around with the racket dialect of lisp. Racket is a language of the scheme family, and so far I’ve found it simple enough to pick up through the provided tutorials. Things I like about it are Simple syntax. It is a lisp, after all, so there are plenty of parentheses. One thing racket does, however, is treat all brackets: (, [, and {, the same. As long as they are balanced by the appropriate closing bracket, they are interchangeable.