Ansible
I’ve been playing with ansible off and on for several years now, usually in fits and starts. Ansible is a tool for managing computers. It lets you do things like setup a new web server in exactly the same way you setup your old web server, or make sure that your new laptop has all the software you routinely use installed, or configure a cluster of computers identically regardless of their underlying operating system, package manager, or authentication system.
Review of the Pine64 PINEBOOK Pro
I’ve been wanting to grab a PINEBOOK Pro since I first heard about it a few years ago. The PINEBOOK Pro checks all the boxes I care about when considering hardware:
Prioritizes open source Runs Linux/BSD/etc Small Solid build quality Replaceable parts It’s a solid little laptop and is perfect for my use cases:
Programming Writing blog posts SSH’ing to servers to do stuff Playing Minetest with my kids Playing around with open source software First impressions The PINEBOOK Pro comes in a non descript cardboard box.
I am an open source developer
I’m an open source developer. What does that mean to me?
Prefer open source software I always prefer open source software. If no open source software exists to do what I’m trying to do, see the next point.
If the software doesn’t exist, create it If there’s no software available to do what I’m trying to do, it’s my job to create it.
Contribute to open source software If I use open source software and find a way to improve that software, or fix a bug, it’s my job to improve it.
Review of the hubitat elevation IoT hub
I’ve been playing with home automation for a few years now and wanted to stop relying on 3rd party cloud software for the devices I run at home. I also wanted to stop connecting my IoT devices to my wifi in order to control them. In order to do this, I needed a zigbee or z-wave hub. One of my friends has a hubitat elevation and recommended it it to me so I ordered one to try it out.
Review of the hyperikon vapor proof LED fixture
What do I need this for? The lights in my duck house aren’t quite bright enough to cover the space adequately. The duck house is also a high humidity, high dust environment. We currently have 19 chickens and 10 ducks sleeping in there (they free range during they day). Before getting these, I was using two Lifx BR30 bulbs which overall worked fine, but had a few drawbacks:
They are wifi only If the power goes out they turn back on Not meant for harsh environments Eventually I may write a review of those but not today.
Review of the Jasco Enbrighten in wall toggle switch
As part of my move away from cloud based IoT devices I’ve been looking for a zigbee switch I could use to automatically turn the lights in my duck house on and off. I got the hubitat on a recomendation from a friend and managed to find these zigbee toggle switches that should work with it. After spending a few hours rewiring some of the electrical in the duck house (I’m not an electrician) and managing to not burn it down, I flicked the switch on and the lights came on!
git revert, merge commits, confusion
I’ve never had to revert a merge commit until last night, never want to do it again.
plantuml - drawing pictures with text
First impressions of a tool that allows you to generate UML from text.
arcanist: lint, unit test, and submit for code review
I briefly mentioned arcanist in a previous article. It is a command line tool that wraps around git, hg, and svn and provides some handy features for working on a shared codebase. It is meant to be used in conjunction with phabricator, and all my examples assume that situation. As I mentioned previously, a typical workflow while using arc might look something like this:
Create a local branch git checkout -b mygreatfeature hack on that branch Run arc lint to run your changes through several possible code linters Run arc unit to run the unit tests that are associated with your changes Run arc diff to submit your patch for review (Note: just running arc diff will call both the lint and the unit test steps if you have them configured)
code review before commit
I’ve started implementing code review before commit/push on my team. We theoretically had a code review system in place before this, but it went something like this:
Write code Commit code Push code Roll a d20 If die came up greater than 2, no one will review your code. Otherwise, someone tries to retroactively review a billion commits in 30 minutes. That process wasn’t really the best didn’t work. In my experience, once the code is in the tree, there is a near zero chance that it will be reviewed.
more continuous integration
So, in a previous post, Continuous Integration I gave a quick overview of our continuous integration setup, and mentioned that I’d like to explore allowing jenkins to push our deploys for us. That work is now done. The basic workflow is now:
Developer develops new feature Developer runs unit tests locally Developer submits patch for code review via Phabricator Code is approved by another person on the team Developer lands (pushes to master) changes Jenkins initiates a build, and if all tests pass, promotes the build automatically to the integration server.
Continuous Integration
I finally got around to setting up Jenkins for some continuous integration on one of the projects I contribute to at work. It’s been a long time coming and we’ve been talking about it for awhile. Finally getting it done ended up taking longer than expected. No surprise there, with the constant pressure to deliver and release, we often forget that quality and quality assurance are an important aspect of shipping.
Asterisk, The Future of Telephony
A review of the book Asterisk, The Future of Telephony