Senior Infrastructure Developer, Cisco Systems Canada, April 2014–present.
Production Specialist, Calgary-based equity administration service provider, September 2013–February 2014.
Master of Science in Computing Science, University of Alberta, September 2008–September 2012.
Sabbatical, January–September 2008.
Statistical Data Engineer, Two Sigma Investments, New York City, April 2006–December 2007
ACM International Collegiate Programming Contest, Dec 2003–Apr 2006
Bachelor of Science with Honors in Mathematics with First Class Honors, University of Alberta, September 2002–December 2005.
NSERC Undergraduate Student Research Award in Mathematics, University of Alberta, May–August 2004 and May–August 2005.
Salad of Belgian Endive, Scallops, and Walnuts
Thinly slice radicchio and Belgian endive, saving some outer leaves from the endive for garnish. Julienne some carrots, chop some walnuts, and mince some chives. Season everything with a bit of salt and white pepper, then toss in a vinaigrette of balsamic vinegar and walnut oil. Season some scallops with salt and white pepper, sear them in olive oil, plate, and enjoy.
Fricassee de Volaille Vallée d'Auge, aka Apple Chicken
Cut a chicken into eight pieces, salt and pepper the pieces, and lightly brown them in butter. Add Calvados apple brandy, brace yourself, then ignite. Add some shallots and cook until soft. Simmer gently in cider. Add cream, and mushrooms sautéed in butter. Reduce the sauce. Serve with apples browned in butter.
Grilled Portobello and Boursin Sandwiches
Whip together oil, vinegar, and mustard, and brush a portobello mushroom with it. Broil the mushroom stem-down until half-cooked. Turn it over and fill it with boursin cheese, then finish broiling. Place on a bun, covered with arugula tossed in more of the vinaigrette.
Chicken Stir Fry with Walnuts
This one is fast to make. Cut peppers and scallions into strips. Sauté them rapidly for only a minute or two, then take them out of the pan. Cut chicken breasts into small cubes and sauté them. Add chopped walnuts, ginger, and cayenne, then a mixture of chicken stock, soy sauce, and cornstarch. When the chicken is heated through, add the vegetables back and serve on rice.
Cook down onions, garlic, tomatoes, and hot peppers with a bit of salt, sugar, and pepper. Add cilantro. Place on fried tortillas with fried eggs and avocado. Serve with hot chocolate.
I’m not sure where the recipe comes from.
One of the most delicious ways to eat eggs. Take some yummy things that you find in your fridge, such as tomatoes, ham, and mushrooms. Throw them in a baking dish with some whole eggs and cheese, and bake for about half an hour.
Fettuccine with Chiles and Grilled Chicken
Marinate chicken breasts in chili powder and olive oil. Roast lots of hot peppers and sauté them with tomatoes and some garlic. Grill the chicken, mix together the pepper-tomato mixture with the pasta and cheese, and serve with avocado and a sauce of lime juice mixed with sour cream.
Gather fresh fruits and berries that go well together. Cut them up so that all pieces are roughly the same size. Add some dried cherries if you have any. If you have two big bowls that are the same size, put the fruit in one bowl, put the other bowl upside down on top, and then shake the fruit around in the globe you’ve created. Finally, pour on some amaretto almond liqueur.
Here are some of my top picks from among all the books I’ve read over the years.
A Biographical History of Philosophy
Philosophy has wasted the finest minds of a thousand generations. The appeal of metaphysics is undeniable: let’s find out the underlying nature of things as they really are. However, as long as we’re dealing with blatant assertions about things that are by definition unobservable, with no objective way to decide between them, it’s impossible to make any progress from one generation to the next.
This book traces out in appalling detail the fruitless efforts of philosophers over the millennia. One philosopher says everything is made of fire. The next generation of philosophers says—no, everything is actually made of water. Then the students of the water-philosophers rebel and go back to arguing that everything is made of fire, and with nothing but vague definitions and opinions to argue about, things are right back where they started.
The only reason that all philosophy wasn’t a complete waste of time is because it did eventually lead to empirical science—but now that we have that, please, let’s not waste any more lives.
The Brain that Changes Itself
It’s widely believed that the brain stops growing when people reach adulthood, and that any trauma to it is irreversible. But scientists have recently uncovered a mass of evidence to show that that’s simply not true.
The book opens with a woman who lost her physical sense of balance after an injury—and who is trained to walk again by a computer. Each chapter interviews scientists who are actively doing things that conventional wisdom says is impossible, from restoring paralyzed stroke victims to full use of all their limbs, to training people with severe dyslexia to read analog clocks, to amputating phantom limbs.
The unifying theory behind all this work is easy-to-understand, and the techniques that are being used are easy to reuse in your own pursuits.
The Second World War
You think you have problems? They’re nothing compared to the problems that Britain and western civilization faced in 1940.
Winston Churchill was appointed Prime Minister of Britain the day Hitler invaded France. The Nazis had already conquered or allied themselves with half of Europe, and France would only last a few weeks. Britain was next on Hitler’s agenda, but it was basically unarmed. It had been conscripting for one year, but soldiers needed two years of training, and most of the army’s equipment had been sent to help France and was lost in a hurried retreat.
What could the British do? Would they make an agreement with Hitler to try to save themselves? No! “Without victory, there is no survival,” Churchill proclaimed:
This was not empty rhetoric. Churchill had a sound strategy for winning: he believed that the Nazis were too terrible to be accepted for long by the people of the world, and if the British resolved themselves to defend their island to the last man, the United States would eventually enter the war bringing overwhelming force. That was the strategy and this is the story of how he carried it out.
For lessons about strategy and leadership, for gripping firsthand stories of history and extreme heroism, for seeing and understanding the process by which the largest project in the history of the world was managed to a successful conclusion—this is a fascinating and instructive work.
A Consultation with the Back Doctor
Back pain is horrible, but if you suffer from it, this book has a lot of practical advice to get you through it. It describes what the different major kinds of back pain are, what causes them, and why surgery or medication is only very rarely a useful option. While in most cases you will still have some pain that you will have to learn to live with, this book will help you with that, and gives exercises for each kind of back pain to reduce the pain and keep it down.
Every now and then I get back pain that makes it nearly impossible to get out of bed, walk, or sit—and this book gets me back to normal.
Any recent psychology textbook
There have many amazing discoveries in psychology in the past few decades—discoveries about how people learn and get good at things, what intuition is and when to trust it, and the whole exploding field of neuroscience. Any recent textbook will explain it all clearly and understandably, and if you like people and self-improvement it will be lots of fun to read about. The one by Myers is good, but anything like it should be fine too.
How to Become a Straight-A Student
This is an excellent how-to book about time management and writing. Instead of giving you vague principles, it gives concrete instructions that you can easily follow to get started. It made finishing my master’s degree a whole lot easier.
Most books that claim to be about time management really aren’t. For example, the extremely popular Getting Things Done by David Allen has a lot of useful stuff about staying organized, but what does it say about time management? On the first page of Chapter 9: “How do you decide what to do at any given point? As I’ve said, my simple answer is, trust your heart.” If you had enough practice at time management that relying on your intuition was optimal, then you probably wouldn’t be reading a self-help book to try to learn it.
Straight-A, by contrast, tells you exactly what to do, when to do it, and why to do it that way, without being rigid or overwhelming. Following this book’s procedures, you can get started right away and build up your skills so that someday you will be able to rely on your intuition.
The best list of best books I’ve come across is the one titled “Book Value” by Jim Collins.
Stack Overflow is an extremely useful site where people answer programming questions. I use it all the time to search for the answers to problems I run into while programming. Sometimes I answer questions there too, in order to earn imaginary “points.”
Here are some of the more interesting questions that I’ve answered there:
Q: I have a password in memory, and I’m doing all the right stuff to zero it from memory. Yet if I dump core on the program, the password still shows up in the core dump! What’s going on?
A: When you
Q: I’m trying to parse the date 2012-03-11 2:46 a.m. in Java, with a
A: That day was daylight savings time change day, so times between
2:00 a.m. and 3:00 a.m. don’t actually exist. Huh. I’ll have to remember to
Q: On Linux, a file has been deleted from disk, but there is still one process that has the file open for writing. Is there any way to get the file back?
A: Sure! Reopen the deleted file via
Q: The Windows console is terrible at dealing with Unicode. Sometimes it seems capable of printing Unicode properly, but most of the time I get gibberish. How can I make it work?
A: If you open
In grad school, I studied software engineering to help become better at writing software.
I focused on build systems because I find them to be a big pain, but a big pain that’s absolutely worth it if done right. Usually you either spend too much time figuring out the build system at the start when there’s more important stuff to work on, or you end up wasting more time later on and getting frustrated with a poor build system that’s slow and occasionally fails to incorporate your latest changes. But when you have a great build system that instantly reflects all your source code changes in a running system, and gathers warnings and errors in an easy-to-remedy way—programming is just so much easier and more fun.
Building programs that use multiple programming languages is more complicated than the normal single-language case. By studying multilanguage build systems, what can we learn about build systems in general?
By comparing the build systems of a sample of different multilanguage software packages, I found a set of common techniques for causing and solving build problems, and a possible explanation for why previous quantitative work has found that centralizing responsibility for the build system reduces overall build maintenance.
Because build systems are seen as secondary and relatively unimportant, people don’t usually focus on them. They reuse design decisions and abstractions from the application domain in the build system. The build system for Python is Pythonic and build systems for CORBA-based software use CORBA patterns. This phenomenon is beneficial if the application domain is systems-type software with the emphasis on correctness that build systems require, but if the application domain is something else, this phenomenon is likely to result in lower-quality builds. You can counter this by having specific build experts who work primarily on the build system, rather than sharing responsibility for the build system among all developers.
Andrew Neitsch. Build System Issues in Multilanguage Software, Master’s thesis, University of Alberta, 2012. http://hdl.handle.net/10402/era.28641
The major results of my master’s thesis were published at the 28th IEEE International Conference on Software Maintenance in 2012.
Building software from source is often viewed as a “solved problem” by software engineers, as there are many mature, well-known tools and techniques. However, anecdotal evidence suggests that these tools often do not effectively address the complexities of building multilanguage software. To investigate this apparent problem, we have performed a qualitative study on a set of five multilanguage open source software packages. Surprisingly, we found build system problems that prevented us from building many of these packages out-of-the-box.
Our key finding is that there are commonalities among build problems that can be systematically addressed. In this paper, we describe the results of this exploratory study, identify a set of common build patterns and anti-patterns, and outline research directions for improving the build process. One such finding is that multilanguage packages avoid certain build problems by supporting compilation-free extension. As well, we find evidence that concerns from the application and implementation domains may “leak” into the build model, with both positive and negative effects on the resulting build systems.
Andrew Neitsch, Kenny Wong, and Michael W. Godfrey. “Build System
Issues in Multilanguage Software”, Proceedings of the 2012 28th
IEEE International Conference on Software Maintenance (ICSM 2012), Riva
del Garda, Trento, Italy, September 2012.
I don’t spend much time on this anymore, but here are some photos I’ve taken over the years.
Harvest Time, 2015
Lake Louise, 2013
New York rain, 2006
View to the southwest, 2010
Observation deck, 2009
Purple texture, 2011
Thruway 3, 2011
Empire rainbow, 2010
The morning after, 2010
An airplane flew between my telescope and the moon during the eclipse, 2008