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’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.
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.
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.
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!
I’ve never had to revert a merge commit until last night, never want to do it again.
First impressions of a tool that allows you to generate UML from text.
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)
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.
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.
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.
A review of the book Asterisk, The Future of Telephony