Jach's personal blog

(Largely containing a mind-dump to myselves: past, present, and future)
Current favorite quote: "Supposedly smart people are weirdly ignorant of Bayes' Rule." William B Vogt, 2010

Why you should fear your automatic refactoring tool

Okay the title is clickbait. I actually encourage people to not let themselves succumb to fear-driven development. Fear is the mind-killer, stop fearing!

No really. All too often I come across people or comments about being too fearful to change software until they had "some tool" or process. The tool and processes vary, but the fear doesn't. I argue that even with no tool but your brain, you can code fearlessly. This isn't to say that tools don't help, especially when it comes to boosting confidence in correct results. I am saying that the physical sensation of fear that plagues certain programmers is entirely to do with their psyche.

If you're possessed by fear unless you have some particular tool or process, ask yourself, what if I took that tool or process away? And said you can't have it back? What are you going to do? Will you be able to move forward? The art of fearless coding is to change your perspective from an emotional one to a logical one. Instead of being fearful about the effects of some possible change, ask yourself instead how confident you are that this specific change will produce good effects over bad effects. How can you improve your confidence? Maybe you think back to the tools I took away -- what if you don't have those particular tools, how can you improve your confidence?

See Full Post and Comments

Driving a manual

Sometimes you find something that articulates so many feelings in one place about something and you can't help but share them all. From a comment on driving a stick:


I love stick and go out of my way to make sure the cars I own use them. It was a pain back in 2005 when I got my current car, and now that the baby is over 200k miles, when the time comes, it's gonna be even more of a pain to find one, but hey.

See Full Post and Comments

Jury Duty

I had the interesting experience to be called for jury duty this week. Well I was called last year but I was able to defer until this week. Since I was dismissed on Tuesday, I thought I'd write about some of the interesting things and some of the disturbing things.

It's important in any dealings with the government to not lie. If speaking the truth would be inconvenient, you should say nothing. Worst case then is that you enter a situation where you're compelled to speak, which is rare, and you can weigh the consequences of the truth vs. continuing to say nothing. This is much better than perjury.

I'm leading with that because most people don't actually want to be on a jury or even be in the jury selection process, me included. I think my time is best used elsewhere. However if you also prefer the outcome of getting dismissed over actually having to sit and deliberate, as I do, you have to make sure your reasons to make that case are truthful. If you're caught in a lie, not only is that bad for your own epistemic hygiene, you might face criminal charges if you lied under oath.

See Full Post and Comments

ELS, Italy Trip

Last week I went to Italy for the European Lisp Symposium! ELS was in Genoa (Genova?), Italy on Monday and Tuesday. Wednesday I traveled down to Rome and did some sightseeing Thursday and Friday, coming back home on Saturday. This blog post is just to share some highlights of the conference and to share some of the better pictures. (I don't think I got any great pictures.)

My employer was gracious enough to pay for the conference, too, of which the flight was the most expensive component. (It ended up being about $1400 due to booking kind of last-minute, with a few months advance booking it could have been closer to $900.) Europe is pretty cheap once you're over there!

I left Seattle's airport on Saturday the 30th. 5 hours later arrived at the JFK airport. My Japan trip has spoiled me, as I compare every airport now to the Haneda one. JFK is terrible! 10 hours later, arrived at the FCO airport near Rome. I was amused they make you walk through a shop to get to the customs area.. but then whoever was working the desk that day seemed to care very little. "Where are you going? Ok, next." The 'gate' for the next hour flight up to Genova was just a holding area before a shuttle we crammed full with everyone carried us out on the tarmac to get on our plane directly via the stairs.

See Full Post and Comments

Open source dramas

Just some commentary on some months-old dramas.

A couple months ago there was some drama in the Clojure community. An excellent summary can be found in eccentric_j's top comment on this reddit thread.

The TLDR is that someone got sick of how difficult it was to make contributions to Clojure and ragequit (politely), then Rich made this "it's not about you" post, and then a few days later as if to rub salt in the wounds REBL was released with a non-open-source license.

See Full Post and Comments

Self-documenting code

I read Uncle Bob's Clean Code book last year, and one of its examples in the final summary chapter on the importance of naming stuck with me. I mean, most people will just agree that naming is important, but sometimes convincing is needed, and the examples given are either trivial (i.e there's really not a naming problem) or convoluted (you'd never write code that way to being with, even with good names). Bob's example looked like it was going to be the second kind. Have a look:

public int x() {
int q = 0;
int z = 0;
for (int kk = 0; kk < 10; kk++) {
if (l[z] == 10) {
q += 10 + (l[z+1] + l[z+2]);
z += 1;
} else if (l[z] + l[z+1] == 10) {
q += 10 + l[z+2];
z += 2;
} else {
q += l[z] + l[z+1];
z += 2;
return q;

A loop with a few if-elses in it. A reference to some higher-scoped array l. Some magic numbers. What does it mean? Would anyone ever write this? I can tell you what this code does on the machine, I can't tell you what it "does". Its purpose. Its meaning.

See Full Post and Comments