Category Archives: General

Catch-all category

General

‘Parented to’

Language morphs in interesting ways. Fields of endeavor adopt various words from the general language as terms of art. But of course, the metaphors break down around the edges and the terms morph to reflect that.

In computer science, the terms ‘tree’, ‘parent’ and ‘child’ were taken to talk about a certain way of structuring data, presumably because when you draw diagrams of this structure, it looks similar to a diagram of a family tree you might draw in genealogy. But often, when implementing this, it’s sensible for the node to have a ‘parent’ property rather than just the parent having a ‘children’ property. In those cases, it’s more natural, then, to English a line of code like “A.parent = B;” as “node A is parented to node B”, rather than “node A is made a child of node B”. They mean the same thing in the computer science nomenclature, but you’d probably never hear someone saying “Joe is parented to Jane” in genealogical terms.

General

urllib2

It’s been quite a while since I’ve looked at the HTTP client libraries in Python. urllib2 has a pretty cool pluggable-pipeline architecture, with a bunch of standard handlers for things like cookies, redirects, basic auth, etc. Nice.

General

Little bitty soft synth

I remember this wavetable synthesizer with a tiny sample set (I believe it was 128kB for a GM set). Crystal developed the algorithms and sample set for a tiny (at the time, at least) one-chip MIDI synth, and I worked on implementing a software synth that used the same sample set. It was a bit of a stretch on a 90Mhz Pentium, since the whole scheme was optimized for sample size and originally implemented on a chip with bunches of hardwired MAC units. But, it worked. I listened to Chopin’s Fantaisie Impromptu an awful lot during the development of that one, since it stressed the system pretty well (lots of polyphony, lots of note-on/note-offs, and using the piano, which had the most parallel SRCs in flight for each note.

General

Text Layout Framework

I like a good API. I’m not quite ready to commit to the assertion that Adobe’s Text Layout Framework API is a ‘good API’, but it’s not bad. The fact that they made it open-source is pretty cool.

I can see the potential for a lot of new experiments springing up from this foundation; I mean, who hasn’t had an idea for some groundbreaking new text editor or word processor? This API takes care of a lot of the little garbage associated with such a project, and so should help get some of those ideas into the wild.

(It doesn’t do spellchecking, though. You’d have to come up with your own solution for that, maybe basing it on the pretty-good Spelling Plus Library (which, we hear, will eventually have TLF integration).)

General

Unnecessary upgrades

Occasionally I subject myself to unnecessary software upgrades. I guess mainly to see some of the challenges and learn from them, at a non-critical time. I switched my desktop machine to Ubuntu 9.10 alpha (or is it beta) a few days ago. I’m still adjusting, but I’m learning a few things. Today was the pitfalls of IPv6 in a network with old devices. Apparently, 9.10 enables IPv6 by default and my old DSL modem is confused by and unresponsive to the new-style DNS request. Disabling IPv6 (by the kernel parameter method) cleared up my problems with very poor DNS resolution.

General

Counting is hard

(Hmmm. I was all ready to write a little post about how we talk like counting is the easiest thing to do, but really, it’s pretty hard, and was going to use examples based on cognitive science and applied computing… But then I realized that the word ‘hard’ in ‘counting is hard’ has a pretty different meaning than the word ‘hard’ in ‘quantum electrodynamics is hard’. So I’d have to lay down a whole epistemological breadcrumb trail for you to be able to follow me through my little forest and back out again.

Instead, I’ll just ask you to watch this and read this and see if you see what I mean. And I don’t really mean this, but you can read that if you want anyway, because it’s not totally unrelated.)

General

Crazy

Is it just me, or is the world going crazy? And by that, of course, I mean: isn’t it true that I’m extrapolating hyperbolically from a highly non-representative sampling of human activity as glibly reported in the mass media and repeated in idle chatter around me, which sampling was selected precisely because it is novel and unusually disturbing? Yes, the world is going crazy, in that sense.

General

The universal measure of intelligence

There is a unique, predefined, immutable set F of facts, and a unique, predefined, immutable set S of basic cognitive skills. The exact definitions of these sets are elided in this discussion, but some example members of F are “Raindrops are formed by nucleation on dust particles”, “Spain is east of Portugal”, “Two US presidents have had last names starting with ‘W'”. Some example members of S are the ability to add four-digit numbers, the ability to envision an approximate partition of a 3D volume into tetrahedra, the ability to enumerate notes in pentatonic scales.

For any given human, there is a set F’ of facts and a set S’ of basic cognitive skills that this person has acquired and can use immediately.

The universal measure of intelligence of said human is calculated simply as follows:
formula

Oh, wait, I didn’t finish reading my notes. What I meant to say was that the degree to which you believe the above is a definition of intelligence is the degree to which you are an ass-monkey. Sorry for the confusion.

General

The subtlety of user interface

I wonder how many user interface features are pretty much subliminal. I was working on one particular interface feature and got stuck. To do it one way is pretty easy, but to do it another, better, way, is a lot more work. Then I was trying to write a little tweet about this to try to convey to my masses the difference between the two approaches, and realized that for the average user, the difference would be very subtle and they might never notice it unless it was carefully pointed out to them, and they might never really care on a conscious level. As a developer, I’d prefer to give them the better solution, but the difference is probably subliminal.

When I think about it, that’s true for a lot of software features. I’m sure it’s true in any design context.

General

Those unsettling Facebook suggestions

From time to time on Facebook I get suggestions for friends, where I think “How the hell did they know about that person?”, i.e. I do actually know the person, but can’t figure out how Facebook would have been apprised of that.

I’m surely late to the game, but in doing some poking around on the web, I was made to realize that anyone with whom I’ve exchanged email in the past might have run the “search my contacts” feature Facebook has… and their contacts would contain me either because they’d added me or because email programs tend to auto-capture anyone in your From/To/CC lines.

Like any bit of data on the internet, once it’s out there, it stays out there forever and spreads slowly across the universe…