Using Quarterly Ports on FreeBSD

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:

  1. Switch pkg to install packages from the latest/HEAD branch.
  2. Use SVN instead of portsnap to fetch and update your local ports tree.

Migrating from Feedly to Nextcloud News

It's easy to migrate RSS subscriptions from Feedly to Nextcloud News, but saved articles are more complicated. Here's a bit of JavaScript to simplify the task.

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.

Nextcloud logo

Nextcloud: A safe home for all your data

Cruise to Jamaica, Grand Cayman, and Cozumel

For our 2016 vacation, we took a cruise to Jamaica, Grand Cayman, and Cozumel aboard the Carnival Splendor. It wasn't our favorite cruise, but we still had fun.

My family loves to travel and see new places. For vacation this year, we took a cruise to Jamaica, Grand Cayman, and Cozumel aboard the Carnival Splendor. While the ship wasn't great, it still got us to the places we wanted to see. Without finding yourself in a natural disaster, it would be tough to have a "bad vacation" in the Caribbean.

Carnival Splendor

How to Create Keyboard Shortcuts for PHP

I finally grew tired of typing the awkward PHP object operator. Learn how to create keyboard shortcuts for KDE and use my shortcuts for PHP as a starting point.

My preferred server-side language is PHP. It's powerful and flexible, but it's certainly not perfect. One of my pet peeves is the object operator (->). I've programmed in C++, so I can appreciate its heritage. It's simply not needed in this case, so it feels like overkill to have to repeatedly type such an awkward key combination. Why should I move my hand to the top row for one key and hold shift for another when a single dot would be perfect for the task? Is it solely a byproduct of the poor decision to use the dot for string concatenation? I finally got fed up enough to look for a solution.

As with many desktop environments, KDE allows you to configure keyboard shortcuts that trigger a specific set of keystrokes. You can create your own in System Settings -> Shortcuts and Gestures -> Custom Shortcuts. From the Edit menu, select New -> Global Shortcut -> Send Keyboard Input. On the Trigger tab, click the button and provide the shortcut you want to use. Then select the Action tab and enter the keystrokes you want the shortcut to send. Type out the words for meta keys like Shift and Alt, use + to indicate keys that should be pressed simultaneously, and separate the keys using a colon. For example, -:Shift+. will output - and > (the object operator). You can also use directional words (e.g., Left and Right) for the arrow keys to position the cursor within the output.

Getting Started With Estate Planning

We all die eventually and someone has to take our financial reins. A few hours of work now could save your survivors a lot of trouble in their time of grief.

This is my first blog post related to personal finance, but it's one of my favorite subjects to read about and discuss. I've loved numbers and math since a very young age, and personal finance gives me the opportunity to plan and strategize with numbers. What could be more fun? Needless to say, not everyone reads that question without thinking of a long list of things that would be more fun for them. My better half is one of those people, so I manage our household finances while she remains blissfully unaware. Like many other couples, that arrangement works well for us.

Although I enjoy planning for our future, there's one event no one likes to think about: their own death and/or their partner's. You could be the most fit 138-year-old the world has ever seen and still get hit by a self-flying car one day. Without a plan in place, your loved ones could be left not only grieving but panicking as well. I can only imagine how difficult it would be for the little woman to take over our finances even if I were here to answer questions. Going solo without my help would be a total mess. What about you: would your spouse or partner be prepared? What if the scenario were worse due to dying together in an accident or very close in time? In that situation (or for single people), someone even less familiar with your finances such as a child or parent would have to figure things out.

Search Shell History Using Arrow Keys

FreeBSD's root user can easily search its shell command history using the arrow keys. Add the same search capability in the Bash shell with this change.

By default, the FreeBSD root user can type part of a command and then search through history for previous commands beginning with those characters using the up/down arrow keys. If you're new to FreeBSD or csh, you might think the convenient shell history search is specific to root or csh/tcsh. Fortunately, it's not. You can get similar functionality in Bash by creating or editing ~/.inputrc to add the following lines:

# Allow history searching with the up/down arrows:
"\e[A": history-search-backward
"\e[B": history-search-forward

Chromebook for Power Users: Part 3

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.

Configuring LXDE on Debian

Chromebook for Power Users: Part 2

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.

As discussed in Chromebook for Power Users: Part 1, the primary use for my Chromebook is to act as a dumb terminal to remote my FreeBSD desktop. I run xrdp on the desktop, which allows me to securely connect to an X session using a standard RDP client. That's why I was disappointed to find that none of the popular RDP clients for Chrome OS were able to connect to xrdp. In an effort to settle for less, I enabled a VNC server and tried connecting. While VNC "worked," the experience was unacceptable due to keyboard issues related to uppercase/lowercase letters and the shift key. That was a deal breaker for me: if I couldn't remote my desktop with it, a Chromebook would be almost useless—just an oversized tablet weighed down by an attached keyboard. Luckily, crouton came to the rescue by enabling me to install Debian Linux in a chroot on the Chromebook.

Chromebook for Power Users: Part 1

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.

We all wear many hats. In my role as Household Systems Administrator, I manage more devices than I'd like. The desktop, my work laptop, and the youngster's college laptop (devices with important data on them) are actively managed: they get security updates for the OS and apps within days of release plus regularly scheduled backups. We also have a Windows VM that's actively managed, but it can skip backups since it's on the desktop. In addition, I manage the server that hosts this site and provide "IT support" for all devices within our home. Sometimes it feels like a second job, which is why I look for ways to minimize the workload while still meeting everyone's needs. All the important data is on the desktop, it's set up the way I like, and it's already actively managed, so adding another laptop to the mix seems like something to be avoided. Yet I live in the real world where computer activities happen throughout the house and may require more than a tablet to perform.

Life is Short by Paul Graham

Paul Graham's recent essay, Life is Short, discusses making the most of our short lives by focusing on the things that really matter.

With our youngster almost ready to leave the nest, I try to remind friends (and myself) to be conscious of how brief their kids' childhoods will be. Paul Graham puts it into perspective in his essay, Life is Short:

Having kids showed me how to convert a continuous quantity, time, into discrete quantities. You only get 52 weekends with your 2 year old. If Christmas-as-magic lasts from say ages 3 to 10, you only get to watch your child experience it 8 times. And while it's impossible to say what is a lot or a little of a continuous quantity like time, 8 is not a lot of something. If you had a handful of 8 peanuts, or a shelf of 8 books to choose from, the quantity would definitely seem limited, no matter what your lifespan was.