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

An hour fighting with play-clj

I spent an hour tonight playing with play-clj, with the end goal being a Pong clone. Unfortunately I distracted myself with how play-clj works in a way I don't like, and got nowhere.

I got started game programming with PyGame, which is a Python wrapper on top of SDL with some extra goodies. I think I've been spoiled by the clean mental model of 2D games that SDL provides, along with the total control over the main loop. But PyGame isn't a game engine, it's not a game "framework". It doesn't give you all that much. I enjoy that level of flexibility, though, and the necessary tradeoffs in what I worry about involved in using a game framework always seem to irritate me. One day I hope I'll find a really nice one, that's nice for both 2D and 3D, and has good Clojure support. Unfortunately, play-clj is not it, for me.

What follows is just my personal notes from when I started to when I stopped. I added/cleaned up a couple things in this after-edit. There's a macro, but that's about it in terms of code. I've got nothing against play-clj after this exercise, I'm sure it's fine if you can tolerate the way it and LibGDX do things. Wonderful even. But it's not for me. (At least play-clj. Potentially someone could write a nice enough wrapper around LibGDX that I'd want it.)

See Full Post and Comments

Solving word problems with models vs. direct translation

I skimmed this interesting study this morning. They were testing an idea about how people solve mathematical word problems that are expressing a less-than/more-than relation between two numbers, and then asking for a solution number that makes use of that relational information. They phrased each problem in one of two ways, "consistent" and "inconsistent", and measured successful and unsuccessful solvers. They also measured through eye-tracking what parts of the problem the subjects returned to and what their recall of the problem was, with results that strengthen the interpretation of the successful/unsuccessful results. In the end they found evidence that successful solvers seem to construct a model of the problem internally which they then use to get at the solution, whereas unsuccessful solvers seem to try a direct-translation sort of approach where they take the items in the problem, directly translate them to their most intuitive mathematical operations, and compute.

The way a problem is phrased (consistent vs. inconsistent) is key to getting evidence for this idea. An example problem, phrased consistently, is this:

At Lucky, butter costs 65 cents per stick.
Butter at Vons costs 2 cents more per stick than butter at Lucky.
If you need to buy 4 sticks of butter,
how much will you pay at Vons?

See Full Post and Comments

Why write?

I haven't posted anything of substance here in a long time. Life has been weird since a couple days after my September 2014 post. I'm in a mind state I've been in before, and I'll work through it eventually, but during this time I'm just not capable of caring about much of anything beyond what I deem necessary in order to get to tomorrow, so my actions are limited.

I'd like to write more. I enjoy playing with ideas, not necessarily taking them seriously, but sometimes updating to some conclusion that results from playing. For example, it's kind of fun to think about ideas that would make big democratic governments work more efficiently, And by exploring that thought-space, one can arrive at conclusions where doing X is significantly better than doing Y, even if this other totally different and opposing thing Z is better than all of them. It's like noticing that a flu is strictly a lot better than stomach cancer, even though they're both terrible and being healthy is totally superior. Except it's funner to work with more abstract things than sicknesses, and it becomes more exploratory that way (since things aren't self-evident, or "trivially derived from some framework but I'll never show you a proof"... you have to do work to explore), and in the end sometimes you'll have something you can reduce back to a less abstract belief or suggestion.

What little idea playing I've been doing lately has taken place mostly in the context of my head. And unsurprisingly, it has less quality. Writing (and the concurrent and following process of editing) creates a better environment for exploring, because you have to crystallize what exactly you're thinking and not just rely on your brain's intuition. I have many thoughts that are interesting, but not expressed in words, but then I forget about the thought because I didn't write it down.

See Full Post and Comments


In first grade, my teacher taught the class some French songs. Here are two I still remember that were meant to teach colors and days of the week.

Red and yellow
And pink and green
Purple and orange and blue
I can sing a rainbow
Sing a rainbow
Sing a rainbow too
Listen with your eyes
Listen with your ears
And sing everything you see
I can sing a rainbow
Sing a rainbow
Sing along with me

See Full Post and Comments

Orwell on Object Oriented Programming

I was re-reading Orwell's Politics and the English Language tonight, it's been many years. One new insight I got from it came from this subsection of a paragraph:

As I have tried to show, modern writing at its worst does not consist in picking out words for the sake of their meaning and inventing images in order to make the meaning clearer. It consists in gumming together long strips of words which have already been set in order by someone else, and making the results presentable by sheer humbug. The attraction of this way of writing is that it is easy. It is easier -- even quicker, once you have the habit -- to say In my opinion it is not an unjustifiable assumption that than to say I think. If you use ready-made phrases, you not only don't have to hunt about for the words; you also don't have to bother with the rhythms of your sentences since these phrases are generally so arranged as to be more or less euphonious. When you are composing in a hurry -- when you are dictating to a stenographer, for instance, or making a public speech -- it is natural to fall into a pretentious, Latinized style. Tags like a consideration which we should do well to bear in mind or a conclusion to which all of us would readily assent will save many a sentence from coming down with a bump. By using stale metaphors, similes, and idioms, you save much mental effort, at the cost of leaving your meaning vague, not only for your reader but for yourself.

This is the essence of bad OOP, characterized most humorously by Steve Yegge's Execution in the Kingdom of Nouns. It's a funny observation that many Javalanders are very happy with Java, and as Orwell says, it's easier, and quicker once you're in the habit, to fire up Eclipse, autocomplete and autorefactor this and that, sling giant names and namespaces around that still somehow fail to describe what's happening, and be satisfied by completing your story with the minimum of mental effort. Clojure is the antidote for anyone unhappy about being in Javaland. But I don't think Clojure will ever be as popular as Java, and it can at most hope to be bundled with the JDK. Simply because as Hickey says, simple does not mean easy, and as we've seen repeatedly in history, people choose the presently and evidently easy path even when it's against their long term interests. (Not that working with Clojure is an exercise in doing things the hard way -- it wouldn't be as popular as it is if it didn't make certain things, like Java interop, very easy as well as very simple -- but Clojure does require more mental effort overall because it makes it harder to get away with sloppiness.)

See Full Post and Comments

Installing NoMachine on Gentoo

I had some trouble getting the NoMachine server to work on my Gentoo box, but eventually I prevailed. I'm putting this out there in case anyone else had some issues.

This page is accurate to start out with: Extract the archive to /usr/NX, run the installer with --install redhat. If you want to add the /etc/init.d/nxserver service to startup, you'll have to use rc-update yourself.

If you don't install to /usr/NX, you may find an error starting the nxnode or nxd services. At least I did. Anyway, now you can try to log in, but you'll probably fail. In that case, run /usr/NX/bin/nxserver --userlist and verify there are no users. That's the first problem. Remedy it with /usr/NX/bin/nxserver --useradd <yourusername> --administrator. You're not done yet though. The nx user needs to be in the wheel group (su), so run usermod -a -G wheel nx. Finally, run /usr/NX/bin/nxserver --restart and you should now be able to login. Have fun!

See Full Post and Comments

Remark on the decline of Hacker News

Hacker News has been going downhill since at least 1237 days ago ( But it's an interesting decline. Maybe not for the most part anymore, but for a large part, the site is still pretty good. Every now and again something really precious will still come along, even if it's rarer than it once was. But a lot of things are just sorta-good, sorta-precious. For instance, this post about the Stalin Scheme compiler is on the front page this evening:

The first thing a good hacker should notice is "Cool! A language compiler! And for a dynamic and powerful language like Scheme, not C!" It's a technical project only certain types of hackers would be interested in. This makes it good. But what makes it less good is that it's such an old project, that any hacker who has had a slightly more than passing interest in Scheme the language has probably come across Stalin before. And Chicken Scheme, and so on.

So there's the problem of Hacker News submissions being sorta-good. This is what keeps the site alive. Now we look at the comments... not only are they almost all meta (a bad sign in itself), there's a crap ton of people complaining about the name! One even hints at getting the creator of the project fired from his position as a professor at his university, because of the name. This isn't outside the realm of possibility. The linked post is at once both a display of what keeps Hacker News good-enough and the ultimate real problem with Hacker News: its comment culture. The Hacker Aesthetic is all but extinct. People have to watch what they say, even if it's clearly a joke. It's depressing.

See Full Post and Comments