Blog

The blog is currently being ported from WordPress to over 12 years of static pages of content. If there's an article missing that you're hoping to see, please contact me and let me know and I'll prioritize getting it online.

Review of the Google Pixel XL and accessories

I’ve owned just about every Nexus device since the Nexus One, including the Nexus Q and the tablets. The only devices I’ve missed in my collection are the Nexus 10 tablet, and the Nexus 6P from late 2015. I ordered the Pixel XL the morning of the announcement and have used it as my daily phone since it arrived, and this is a really solid device and definitely worth the upgrade from the 2014 Nexus 6.

Continue Reading

Managing multiple versions of PHP on Mac OS X with Homebrew

I sense a trend starting. A few weeks ago, I wrote a post about managing different versions of Python on Mac OS X, and today I’m going to explain how I use multiple versions of PHP on the same platform. The Problem Until the homebrew-php group figure out a better way of handling several versions of PHP (their instructions haven’t worked for several months), and without installing something like phpenv, I concocted my own means to manage PHP versions using bash aliases similar to my Python post.

Continue Reading

Dynamically Injecting Scraped GitHub Data in a Google Spreadsheet

At the new job, I started piecing together a Google Spreadsheet about our open-source software in various languages, based on frameworks, or example applications. One of the things we wanted to track for each repository was a count of open issues and pull requests we had at GitHub. Turns out Google made this pretty easy, but you have to scrape the repo page first. The code I wrote a scraper in Python using Flask, Requests and BeatifulSoup, hosted the project on Heroku, and works a little like this:

Continue Reading

HOWTO: Get a Mac, Python, Homebrew, PyEnv, and Bash aliases to play nicely

Okay, I’ll be blunt: I’m a Linux guy. I know, shocker. I’ve recently moved to an awesome new job and part of that role will be an area of developer advocacy which will require me to go to meetups and tech conferences from time to time, and talk about how freakin’ awesome my new employer is. And they are, srsly. You should sign up and use it if you’re thinking about building a news/activity feed/timeline in your app.

Continue Reading

Life Hack: Tech Meets Filing

(I’ve been asked to write this up several times over the years, so here goes.) Background Almost a decade ago, I thought it’d be neat to order a document scanner. Because, organization. I found out that the IRS would accept printed copies of scanned original documents and realized that I was lugging around a filing cabinet for no reason. A few years later, something magical came to be, and it’s turned into one of my favorite life hacks.

Continue Reading

I'm looking for another full-stack dev in Boulder, intermediate level or better....

In early 2015, I was hiring another full-stack dev in Boulder, intermediate level or better. The job was filled but I still get a lot of traffic to my blog because of the post.

Continue Reading

My oldest kid is loving CoderDojo

My wife found out about a CoderDojo chapter around Denver and I started taking my oldest child to check it out. I was curious if he’d enjoy it, since he has a very logical, analytical mind. Turns out he’s pretty good at figuring out solutions, but his favorite by far has been working with Scratch. Over the course of the year, I’ve found several ways to mentor and be a part of the group and ended up being a “champion” mentor, making lots of technical decisions and writing some software to track student’s progress, attendance, contact information, and so on.

Continue Reading

If you're running TendMicro's antivirus solution on Windows, update it asap!!

If you’re running TendMicro’s antivirus solution on Windows, update it asap!! A major information security flaw was detected in the software: it runs a localhost web service that is very vulnerable to attacks. From the security post: It took about 30 seconds to spot one that permits arbitrary command execution, openUrlInDefaultBrowser, which eventually maps to ShellExecute(). This means any website can launch arbitrary commands, like this: x = new XMLHttpRequest() x.

Continue Reading

Review: Dell Precision m3800 laptop

I purchased a Dell Precision m3800 laptop in late 2015 and haven’t been this happy about a laptop since my XPS13 Sputnik The initial build I purchased was the non-Thunderbolt edition, which I immediately exchanged (and paid the extra $150) for the Thunderbolt-compatible edition. It was a Windows-installed edition, which I quickly dual-booted to include Ubuntu. Dell, at the time, sold the laptop directly with Ubuntu pre-installed, but stubbornly refuse to make public the ISO to install Ubuntu on similar hardware.

Continue Reading