PubSub & The Events Problem After I started to play more and more with IoT devices (see my last few blog posts), I realized that my communication lines were growing in complexity very rapidly. I had a few Devices talking directly to each other. IFTTT interfaced with my Google Home...

Controlling an RGB Light Strip over WiFi I had one of those RGB light strips hanging around, so I decided to put it up above some windows. When I bought it, it came with one of the IR color-remotes, which is great, but it didn't have a ton of range,...

Creating Your Own Smart Outlets for Cheap I've started to spend a little time learning about how to make my own basic electronic hardware as I delve into some simple home automation. One of the things that struck me, at least at the time of this writing, was that wifi...

Documenting in the Age of Microservices Yes, I know, I'm documenting documentation.  I wanted to take some time and outline how I believe we can accomplish a scalable and reusable platform through documentation, and why it's important. Why Should I Document? There's probably not any immediate value in documentation, right?...

Let's Encrypt About 6 months ago, Lets Encrypt was brought to my attention as I was once again scowering the internet for a cheap provider of SSL certificates. I run a handful of small websites where providing reliable encryption makes a lot of sense, especially given that passwords are often...

SshSysMon Ssh System Monitor (SshSysMon) is a system monitoring and alerting tool that operates purely over ssh connections, allowing for easy installation and wide portability between unix platforms. I started this project after spending quite some time searching for a simple solution to monitor various small servers that I operate....

Weak Delegates 2 After toying with weak delegates a bit more, I found that although my previous implementation was clean and useful, it was abhoridly slow. After a bit of thinking, I came up with a new method that creates a WeakReference within a closure, and generates the rest of...

Weak Delegates in CSharp Problem This idea has always plagued me -- how do I create weak delegates in C#? There is a problem with some of the code in my current engine where I want a short-lived entity to subscribe to a long-lived controller. When the entity loses ref,...

Foreach Loops I've mentioned before that foreach loops can be slow. This is often simply because of their nature of needing to retrieve an enumerator, which is a new instance of an object on the heap, everytime you loop through an object. I did some experimenting with this concept and...

Exception Performance We've all heard it many times: Exceptions are slow. The problem with this, is developers can read this and adopt bad practices under the assumption that their slowness eliminates their usefulness. Like anything else related to performance, it's best to understand when to use them, and when they...