Migrating from Docker for Mac

So you don't want to use Docker for Mac anymore, huh? First, let's install docker and virtualbox. brew install docker docker-machine brew install --cask virtualbox Now let's create a "docker machine" using docker-machine. This wraps around virtualbox to spin up a vm (and probably does other stuff). docker-machine create --driver…

Making a Wi-Fi Smart Fan (Part 1)

A few years ago I started slowly transforming my house into a "Smart House". It started with some friends of ours showing us their smart bulbs and how they could tell Alexa to turn them on and off. I'll admit, I was skeptical of how smart bulbs could be life…

Properties in C++20

C++ doesn't support getter/setter style properties. But you can get pretty darn close with templates or macros. #include <iostream> #include "properties.h" using namespace std; class User { private: int mId; int mWeight; int mPurse; int mBank; public: // Non-auto property only supporting get (runtime check) Property<int&…

Getting MacOS BigSur + ESP8266 to Play Nice

I ran across The "do not be alarmed" clock on HackerNews and thought that would be a fun little project to play around with. It's been an awful long time since I've done anything with hardware and I haven't played with anything "Arduino" yet so I made my way over…

Building a Custom Shelf for My Daughter

So we're expecting a baby here in the next week or two and my wife wanted a shelf/armoire/ambry(?) thing that matched our crib and changing dresser (see pictures of the store bought crib and dresser below). I drew up some plans in the free version of SketchUp and…

Showing Firefox close tab on tab hover

I switched from Chrome to Firefox a few months ago. For the most part...it feels roughly the same but there was one subtle difference that finally irked me to the point of googling: having to right click on a tab to close it. In Chrome, when you hover over…

Using() block hell in C#

So the other day I was working on transforming streams for an encryption layer for work. I ended up having some code that looked similar to this: public async Task SendAsync(byte[] data, Delegate next) { using (var stream = ...) { using (var encryptStream = ...) { using (var encodeStream = ...) { using (var reader = ...) { await next(...); } } } } } public…