Cooking with Simon Monk - Raspberry Pi Cookbook

It’s been too long since I messed with the Raspberry Pi. It started with Hacktoberfest a few months ago, then we had a baby, and then I got it in my head to write a Chrome extension and… life happened. So I picked up a copy of Raspberry Pi Cookbook by Simon Monk to jump-start things again. I assumed it’d have “recipes” for some cool projects, but it ended up being much more comprehensive. It takes you from the very basics of unpacking your Pi and setting it up, to installing Raspbian and creating your first Python script, »

What is a Git alias, and how do I use it?

If you're unfamiliar with Git's "alias" feature, it provides a way to create shortcuts for other Git commands, which can save you a lot of time. They’re easy to setup and maintain too. Using Aliases for Shortcuts You can create aliases for short commands, like assigning "checkout" to "co": git config --global checkout Or longer commands, like this one that displays a unique log view: git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short" And what if you’re the sole developer of some project and you’d »


Book Review: Getting Things Done, Part 1

Do you ever get exhausted, thinking of everything that needs to be done? I do. I always have this feeling that there’s tons of “stuff” to do – some that needs to get done and a lot I want to get done, some at the forefront of my thought and some I just have a nagging feeling about. There’s stuff I wanted to do years ago that I still kind of intend to do, maybe, if and when I magically formulate a plan. Or more like, when the plan formulates itself. Most of it’s so vague that I »

5 Things You Can Do With a Locally Cloned GitHub Wiki

If you’ve been developing software for any length of time you’ve probably used GitHub, whether as free hosting for your own personal project, or searching for a library to use, or collaboration on a team. There’s a feature of every GitHub repo that in my experience doesn’t get a ton of love, and that's the GitHub wiki. In all fairness, I'm not sure how much love it deserves. Sure you can take notes in it, but its lack of short-codes/widgets (such as easily adding a table of contents to the top of your pages) and »

Creating My First Google Chrome Extension – Part 3

PART 1 | PART 2 | PART 3 I was looking forward to wrapping this extension up within the first couple days of xmas break (my workplace shuts its doors between Christmas and New Year’s), but then every single one of my kids got sick in turn. All of them. It was a crappy week. But now it’s finally done (I also wrote about it here and here), and I can generate bookmarks from Pinboard tags the way I wanted. All in all, a good learning experience. If you want to check it out, it’s in the Chrome store. »

Creating My First Google Chrome Extension - Part 2

PART 1 | PART 2 | PART 3 I started writing my first browser extension a couple weeks ago, and though my spare time has been pretty limited I've made some (never as much I'd like) progress. I left off last time with (finally!) figuring out how to authenticate to the Pinboard API. As with so many things, once I knew the answer I couldn't believe I didn't figure it out sooner. There are a number of reasons it might fail, but in my case I needed to add the API URL to the list of permissions in the manifest.json file. »

Creating My First Google Chrome Extension - Part 1

PART 1 | PART 2 | PART 3 Something’s been nagging me… I’ve been on this kick recently, trying to untangle myself from my reliance on all things Google. Their services are great, and I don’t mean the following to be a rant, but a few things worry me… Should I put all my eggs in one basket? It seems unlikely, but if Google goes down or gets hacked, or sees fit to freeze my account for some reason, I’m screwed from every angle. I lose my email, calendar, documents and photos, contacts, bookmarks, passwords… everything. Wisdom seems »

How to compare two objects (testing for equality) in C#

Hacktoberfest and the promise of free t-shirts had me looking for a project to help with this month. That’s how I stumbled across GeneGenie.Gedcom, a genealogical library written in C# (read more about it here), and found myself reviewing everything I know about class equality. I focused on implementing some logic to make sure changes were correctly detected, and in order to do that I had to define “equality” for each class that represented some facet of genealogical research. Why was that? Let’s take two instances of a class – one with data that’s fresh from the »