One of the most powerful Unix command-line utilities is “find” — but it also has a huge number of options, and most of the documentation I’ve read on “find” is hard to follow and understand. That’s a shame, because once you understand what “find” does and how it works, you can accomplish quite a bit. …
Ah, Git. It’s one of the best and most important tools I use as a software developer. Git is everything I want in a version-control system: It’s fast. It lets me collaborate. I can work without an Internet connection. I can branch and merge easily, using a variety of techniques. I can take a personal…
[Update, as of August 8, 2019: Since I wrote this post, Linux Journal re-opened, thanks to a generous investment/purchase, and survived for another two years… And then, earlier today, I learned that LJ has closed, once again — and this time, for good. This post is just as accurate today as it was when I…
In just 48 hours, I’ll be starting my latest round of live, online courses. Wondering what it’s like to take an online course from me? Or perhaps you’re wondering what sorts of topics I’ll discuss in my “Python dictionaries” and “Python functions” courses? Well, wonder no more; here’s a short preview of my teaching style,…
Confused by Python dicts, or wondering how you can take advantage of them in your programs? Do you wonder how Python functions work, and how you can make them more “Pythonic,” and easier to maintain? Do you wonder why everyone raves about Git, when it seems impossibly hard to understand? Cloning, pulling, and pushing mostly…
I don’t know about you, but it’s common for me to switch between branches in Git. After all, that’s one of the main advantages of using Git — the incredible ease with which you can create and merge branches. Just a few minutes ago, I was in the “adwords” branch of an application I’m working…
If you use a modern, open-source Unix shell — and by that, I basically mean either bash or zsh — then you really should know this shortcut. Control-R is probably the shell command (or keystroke, to be technical about it) that I use most often, since it lets me search through my command history. Let’s…
Several months ago, I was teaching an introductory Python course, and I happened to mention the fact that I use Git for all of my version-control needs. I think that I would have gotten a more positive response if I had told them that my hobby is kicking puppies. The reactions were roughly — and…
If there’s anything that software people know, it’s that changing one part of a program can result in a change in a seemingly unrelated part of the program. That’s why automated testing is so powerful; it can show you when you have made a mistake that you not only didn’t intend, but that you didn’t…
One of the most celebrated phrases that has emerged from Ruby on Rails is “convention over configuration.” The basic idea is that software can traditionally be used in many different ways, and that we can customize it using configuration files. Over the years, configuration files for many types of software have become huge; installing software…