Programmers aren’t special

Listen to craftspeople of all sorts. Learn from outside the bubble. We are not magical. What we do is not magical. It has some cool properties, so do other things. Learn. (Yes, this means learn about how writers write. Yes, this means learn about how carpenters carpent. How psychologists psychologize. How baristas bar. How sailors …

Embellish later

So, @wholemilk said something I liked: Note to self re complicated programming: EMBELLISH LATER. — the no woman (@wholemilk) January 29, 2016 Yeah. But sometimes that’s hard. Why? I am a big believer in the value of considering the emotional landscape of any labor, but in my day to day, that means mostly programming. When …

Code Folding

Nick made a comment about code folding, and I promised him an essay. Here it is. It’s not very long. I like code folding. When I know a mature project well, and the modules are kinda big, I want to open a file and not be distracted by seeing things I’m not working on. I …

The Historiography of Git, or How I learned to stop caring and love writing history

This post was occasioned by hearing about the experience of pairing with Nvie, and then talking with Owen about how he does similar things. Git is notorious for allowing you to rewrite history, which rubs some people the wrong way, but which I and some others think is actually pretty neat and useful, if you don’t …

Oh-my-zsh, virtualenvwrapper plugin, errors when you cd

(Because a few people have been having this problem.) Have you recently updated oh-my-zsh on your OS X install? Do you use the virtualenvwrapper plugin? Are you seeing “workon_cwd:6: command not found: realpath” whenever you try to cd? There’s a simple fix: brew install coreutils. That will provide the realpath command.

Git Shortcuts

I talked about how I use git. Let me talk about how I actually use it. I have an extensive [alias] section in my .gitconfig. Any sufficiently frequently used command gets abbreviated to two (or occasionally three) characters. st = status ci = commit co = checkout cob = checkout -b di = diff amend = …

How I git

Git is not a version control tool, right? It’s a graph-manipulation tool that you can use to support version control methodologies. So this is how I use git to practice version control. I’m going to be very explicit throughout this, using long forms of git flags and commands, and avoiding many shortcuts that I actually …

In Defense of the Last 20%

There’s an idea right now, in our culture, that if you can at least get something to 80% done, you’re doing well. You see this all over, in the start-up world especially, in ideas like minimum viable product, Agile’s ethos of always being able to push a new release, and so on. I think that …

Stupid bash tricks

Oh, hey, I have a blog. Who knew! So, let me cross-post to it. Stupid bash tricks with Kit La Touche! When you want to run a long-running task in a terminal, and leave it and do other things, but not lose time between when it finishes and you check it, it’s time for audio! …

Forward

So, John recently showed me this cool service, Foward. They are useful for two main things: showing off your development on localhost to people on the other side of the NAT, and developing on localhost with calls to external services that need to then call you back. Basically, it’s just a reverse proxy. So, without …