Grafana for HVAC
The MarshallZehr office had wild temperature swings our HVAC contractor couldn’t solve. I built a fleet of cheap ESPHome temperature sensors and used Grafana to find the root causes.
Recent content on Nicholas Armstrong
The MarshallZehr office had wild temperature swings our HVAC contractor couldn’t solve. I built a fleet of cheap ESPHome temperature sensors and used Grafana to find the root causes.
Using Hugo to generate a fast static website that can be hosted on Amazon S3/CloudFront; and using Terraform to configure all of the Amazon infrastructure.
Google’s Project Fi represents a major shift for the cellular industry. I explore how Google’s Project Fi switches between Sprint, T-Mobile, and Wi-Fi.
Using WiX to create a Windows Installer that can install and update Windows 8 (modern/metro/windows store) apps for testing.
Windows 8 seemed to have an inability to stay asleep on my machine. What was going on? Here are a couple tools that helped me debug the problem.
2011 was an active year for mobile platforms – new versions of the major
smartphone operating systems were released, Android tablet manufacturers responded
en masse to the iPad, and partnerships, acquisitions, and new players that will
shape the space in the coming year all came about. 
 What does that mean for
2012? 

Over the past few years, I’ve used the EXIF data stored by modern digital cameras in a couple of programs I’ve worked on. Having access to the date the photo was taken – or which way the camera was rotated when it was – is useful information to have. Even though it’s relatively easy to do, finding the right identifier for the information you want is much harder than…
Labelling printed photos is a hassle – I show how to use PowerShell to rename photo files before printing so that the date is printed on the back.
I never quite understood the attraction of scripting; sure, not having to set up the scaffolding code of a more formal language is nice, but the limitations of the environment just seemed too great. The Unix community has it far better than the Windows community in this regard; shell scripting can accomplish amazing feats – as long as all of the appropriate utilities are strung together in…
There’s a well known concept in economics known as comparative advantage . A formal definition has many nuances, but
the basic principle can be summed up as each party undertaking the work that they are most productive at, such that the
overall production of the system is higher than it would be if each party performed tasks they were less productive
with. For example, if Farmer…
This term, I’ve been given a position as a teaching assistant for ECE 150 at the University of Waterloo. Here is a handful of applications that demonstrate various features of the C# language for programming beginners.
A word cloud of the UW ECE undergraduate calendar of courses.
After my previous laptop (an HP tablet) decided to pack it in for good after only 18 months of use, I decided to pick up a cheap netbook to tide me over until I finished my masters. The netbook I got was an HP Mini 110-1030CA; this post details installing Windows 7 on it and my initial thoughts on using the netbook.
The last article in a series on what you should be doing for each co-op work term.
The fifth article in a series on what you should be doing for each co-op work term.
The fourth article in a series on what you should be doing for each co-op work term.
The third article in a series on what you should be doing for each co-op work term.
The second article in a series on what you should be doing for each co-op work term.
The first article in a series on what you should be doing for each co-op work term.
Continuing from part 1 in the series, this post describes some of the tricky bits for implementing your own XAML-based test data loading infrastructure.
Writing a work report is something that students in co-op at the University of Waterloo will do a handful of times
throughout their degree. Unlike the literal interpretation of “work report”, for engineers these reports require the
analysis of a situation the student encountered over their work term in order to evaluate their engineering judgment
rather than a blow-by-blow…
XAML is somewhat of a niche language: developers outside of the .NET world
rarely have heard of it, and those that have heard about it – .NET developers or
not – often treat it as a language used exclusively for UI design. So it’s mostly
those of us in the XAML niche – those that write user interfaces for a living -
that know its secret: XAML itself has…
Welcome to everyone coming across this blog after seeing me speak with Adam Kinney about photoSuru.
A collection of techniques I’d have never guessed about WPF, but that together make it way easier to work on WPF projects.
WPF gives you dozens of different ways to do almost everything - but often, one way is strongly preferred. I explore documenting the ways that are best for the long run.
Joel Spolsky talks about how developers should only have to worry about developing applications, and not all the day-to-day minutia that is also involved in making software. After one a week at Microsoft, I can tell you that Microsoft does an excellent job of doing just that.
Talk to any co-op at Waterloo and they’ll tell you that the best, and the worst, thing about Waterloo is co-op. Here are the results of my fifth-term interview process.
The title animator is a simple WPF application for displaying movie-credits style text using WPF animations.
An unofficial list (in an official-looking format) of things that you’ll learn in UW Engineering, from my personal experiences.
A desktop background commemorating the 100+ hours my group members and I spent in a dingy lab working on Motorola Coldfire boards for our operating systems course.
Almost every work term, I have to write a large technical report for the Electrical and Computer Engineering department
at the University of Waterloo investigating a problem I encountered on that work term. I won’t go in to the details,
but needless to say, it’s always a lot of hassle and quite a bit of work to write a report that meets all of the
predefined requirements,…