A project years in the making...

I love LED strip lighting. I first saw individually addressable LEDs on flexible strips in a Christmas tree decoration ca. 2011 and was sold. Since then, I’ve slowly worked on putting them to use in a smart DIY under-counter LED light system. Now, nearly 3 years after starting, I think I am getting closer! This post will be divided into at least 2 parts to describe the install and the electronics.

UnderCounter

Continue Reading ...

The .NET Core Can't Help on a Pi Zero, But Mono Can...

Sorry for the hiatus, but I’m back now. I am crazy excited about .NET Core and I think it is going in an awesome direction. We use it at work and I wish I had more Raspberry Pi 2 & 3s laying around since they are capable of running it. The problem is that I still have ARMv6 Pi 1s and Zeros that need to be put to use! I worked this out a few years ago on my Pi 1, but the latest version of Mono that I could get on my Pi at that time was 4.0.2. That version can run older ASP.NET 5 projects, but not ASP.NET Core. I will show you how to get Mono 4.6.2, libuv 1.22.0, and ASP.NET Core 2.0 to all play nicely together on a Pi Zero.

PiZero

Continue Reading ...

I was recently tasked with developing an application to easily add, remove and edit local standard user accounts in Windows. My goal was to replicate much of the functionality in the Local Account Management MMC snap-in, but in a more user-friendly and informative way. Imagine these screens combined, with other properties visible, such as bad logon count, last password set, password expiration date, etc.:

Windows Local Account Mangement screenshot

I started playing with the usual DirectoryEntry objects in the System.DirectoryServices namespace, but luckily I stumbled onto this excellent post before I got too far down that path. I know this is old news, but it turns out .NET 3.5 introduced the new System.DirectoryServices.AccountManagement namespace to make managing user accounts and groups on a local machine and in Active Directory much simpler and faster. That namespace, along with the API usage examples from the aforementioned post, gave me a nice jump start into my project.

Continue Reading ...

I am a huge fan of the open source WiX Toolset1 for authoring Windows installers. I’ve used Installshield and Visual Studio Setup projects for installers past. I even had to reverse engineer an old VB Package and Deployment Wizard installer for a customer. It only took me 16 hours to re-author it with WiX (and that included testing). Sure, sometimes it would be nice to have a GUI for spitting out the XML, but with the control WiX offers me there’s no going back. If you’ve never experienced the power of WiX (including custom actions in C#), you are missing out!

This week I ran into a situation where I needed to do something that I didn’t think would be so hard to figure out.

  1. I really needed a per-user install.
  2. I really needed the installer to prompt for elevation.
Continue Reading ...

(i.e., "Official" Jekyll Support on Windows 10 WSL)

Hello friends, I’m here to tell you that you can now have your cake and eat it, too! I have been dabbling with Jekyll for a few months, trying to get this blog off the ground. I can now say I have found the most straightforward way to do it in Windows.

best of both worlds

But before proceeding with my obligatory “Hello World” blog, some full disclosure. I am a solid Windows user–have been since Windows 95. Don’t get me wrong, I’ve had a special place in my heart for Linux/Unix since college. I am all about open source and open architectures and my faith in Microsoft has at times been tested (Windows Vista, 8, death of Silverlight, anyone?). But their recent efforts with open sourcing .NET and the cross-platform .NET Core1 are very heartening, to say the least. I love C#, and if I can’t run Visual Studio Enterprise2 on it, it’s not my base OS (sorry, I am not a die-hard emacs or vi user!). These days, I mostly stick with Linux on my Raspberry Pis and occasionally on virtual machines.

Continue Reading ...