FreeBSD is my preferred OS thanks to ZFS, disk encryption, the wholly-owned base system, ports/packages, jails for securing network services, and the community.
A few years ago, I found myself looking for a new OS for day-to-day use. I'd been using Mac OS X for several years because my employer provided a MacBook Pro and I really loved the nice, clean Aqua UI on top of a POSIX compliant core. However, I was setting up a desktop, didn't want to spend a fortune on Apple hardware, and wasn't sure I liked the direction Apple was heading with OS X by making it more like iOS. My requirements pretty much boiled down to security (including support for full-disk encryption), stability, flexibility, software freedom, and a thriving community for those inevitable times when I would need some wisdom. If you're reading this blog, I probably don't need to tell you why Windows was ruled out before the competition started.
When your LCD monitor won't turn on, keep it out of a landfill by repairing it yourself for a few bucks. Grab a screwdriver and soldering iron for an easy fix.
My workstation consists of a FreeBSD desktop with dual LCD monitors and a MacBook Pro provided by my current client for anything that requires access to their network. Both monitors had some age on them, so it was only a matter of time before one died. I've used a dual monitor setup for so long that having only one monitor makes me feel... well, half as productive. When my primary monitor finally cashed in its chips a few months ago, that left me not only less productive but also using a very old LCD given that it was my former secondary. I immediately found a great deal on a shiny, new replacement that brought me up to date with a 23.6" 1080p primary monitor. Although I had 2 monitors again, my former primary sitting in the floor waiting to be recycled seemed to be taunting me.
As a 'power user' who wanted to replace my laptop with something inexpensive and low maintenance, I gave a Chromebook an honest try. Was it up to the challenge?
This is the first post in a 3-part series on using a Chromebook as a power user. It gives a high-level overview of how I'm using my Chromebook and some basic Chrome OS configuration steps. Part 2 digs deeper to show advanced users how to use crouton to install Debian Linux in a chroot. Part 3 finishes up by configuring LXDE and connecting to a remote FreeBSD desktop running xrdp.
The RDP apps on Chrome OS left me wondering if my Chromebook would be useless. Then I found crouton and installed Debian Linux in a chroot to expand my options.
This is the 2nd post in a 3-part series on using a Chromebook as a power user. Part 1 gave a high-level overview of how I'm using my Chromebook and some basic Chrome OS configuration steps. This post digs deeper to show advanced users how to use crouton to install Debian Linux in a chroot. Part 3 finishes up by configuring LXDE and connecting to a remote FreeBSD desktop running xrdp.
After installing Debian Linux in a chroot on my Chromebook, I slimmed LXDE down a bit before connecting to my FreeBSD desktop running xrdp.
This is the final post in a 3-part series on using a Chromebook as a power user. Part 1 gave a high-level overview of how I'm using my Chromebook and some basic Chrome OS configuration steps. Part 2 dug deeper to show advanced users how to use crouton to install Debian Linux in a chroot. This post finishes up by configuring LXDE and connecting to a remote FreeBSD desktop running xrdp.
I'll admit to using a few cloud services in moderation, but I tend to choose privacy over storing my life on other people's computers. While I was on vacation at the end of 2016, I set up a Nextcloud server to replace my privately hosted and very outdated solutions for syncing contacts (Kolab over IMAP) and calendars (ICS over WebDAV). After setting it up, I was surprised to find a News app for Nextcloud that adds support for RSS/Atom feed subscriptions. Of course, there are also apps that provide access to those subscriptions from mobile devices. Stop allowing Feedly to monitor my online reading habits? That sounded like icing on the cake to me.
FreeBSD 10.2 and higher use mismatched repos for packages and ports. This shell script simplifies updating your ports tree from the current quarterly branch.
Beginning with FreeBSD 10.2, binary packages installed using pkg are built from a quarterly SVN branch that only receives security and build updates once it's created. The goal is to provide a more stable software repository than the ports tree, which is constantly being updated and may even include broken ports at times. However, portsnap uses the latest/HEAD branch for the ports tree. Since mixing quarterly packages with current ports could lead to trouble, you have to choose one of these paths:
I use some shell script libraries to make FreeBSD system configuration easier. They're now available as freebsd-scripts on GitHub for anyone to use and improve.
I recently switched my hosting provider from Digital Ocean to Vultr to get tighter control over the configuration—a more "pure" FreeBSD installation. While updating my notes to prep for the install, I considered how many configuration steps were basic file editing: add this line under that line, uncomment this line, comment that line, etc. I love the simplicity that comes when the code is the documentation, so I decided to create a small file I/O library to make it easier to write shell scripts for system configuration. Why bother maintaining notes to describe manual changes when I could write a script to perform the changes automatically?
Create shell aliases to quickly search reference sites from a terminal including DuckDuckGo, Wikipedia, Dictionary.com, AcronymFinder, Devhints, and FreshPorts.
I listened to episode #283 of The Changelog this week and learned about Devhints, which provides "cheatsheets" on a variety of development related topics. The hosts mentioned that the site looks good in Lynx, the text-based browser, but still asked about a shell script to parse it. I thought a shell script would be overkill: why not a simple alias that searches the site in Lynx?
Sitka is an extremely lightweight but powerful Node.js logger that's great for cloud/serverless applications.
Although it's a very small project, I'm excited to release my first open source Node.js package today. Sitka is an extremely lightweight but powerful logger that's great for modern cloud/serverless applications. It can be installed using the Sitka NPM package and the source code for Sitka is on GitHub. Yes, there were already tons of loggers to choose from. When I browsed through them, most seemed to fall into 2 categories: many felt too rigid while others were "kitchen sink" projects trying to do far too much. A logger is an essential part of every application, but it should be simple to use and stay out of your way. As a minimalist, I want something flexible without a lot of overhead. Sitka stands on its own with less than 250 lines of code and without importing any dependencies—much less half a dozen.
I spent a day joining 3 presentations and 2 workshops at AWS Summit 2018 in Atlanta. Read my summary and suggestions to get more out of an AWS Summit near you.
I've been working on a new product at Nokia for the past few months, and we're leveraging Amazon Web Services for rapid development. This is my first AWS project, so it's a lot to take in. That process has gone well, but there are still many services I haven't even touched on. When I heard Amazon was hosting a free AWS Summit in Atlanta, I decided to attend and see what I could learn. I had to run some errands early in the day, so I only spent about 6 1/2 hours at the event. Still, I was glad to have the opportunity to check it out. Since there are more summits scheduled this year (and presumably ongoing), I'm writing to both share my experience and to help anyone considering a future Summit. If you're attending an AWS Summit near you or on the fence about it, read on to see what to expect and get some tips around planning.
Deploying a Helm chart to Kubernetes just to query resources is time consuming. It's possible to directly query a Helm chart using JSON with this simple trick.
After deploying a Helm chart into Kubernetes, it's easy to query the resources using kubectl with JSONPath expressions. That's not always an option, though. I recently needed to calculate the total CPU, memory, and storage allocated for a production sized deployment that wasn't deployed yet, but I didn't have a non-production environment large enough to deploy and then query. Wouldn't it be nice if you could query Helm charts using JSON?