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

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

Jump Game As Interview Problem, Domain Solutions

Over on LeetCode, there's a problem known as the Jump Game.

Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Determine if you are able to reach the last index.

Example 1:
Input: [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.

See Full Post and Comments

Intangible costs matter in compensation packages

If you commute to work by car, what would you rather have: free parking or a $4k increase in annual salary?

Note that if you pay $15/day for parking, and take no days off, that comes out to $3900. So the raise is strictly more than the cost, even.

I would pick parking. That's because even though raise > parking_cost, the actual comparison is raise vs. parking_cost + intangible_costs.

See Full Post and Comments