Tag Archives: information-technology


A brief guide to going to the library to revivify your mind

(This is a distillation of my long personal experience with the technique; take from it what makes sense to you.)

This is a way to till up your mind-soil and get little thoughts into solution to crystallize them into seeds of tranquility, or something. I mash my metaphors purposefully, because this technique works by mixing up your thought-patterns to get you out of those boring little loops.


Set aside a two to three hour span of uninterrupted time. It’s best that you be unhurried and unpressured, but this technique can also help you get to that state, so no worries if you’re worried.

Walk to the library. Or use some other human-powered locomotion. Getting your body energy into the act helps get things flowing. On your walk, let your mind drift. If you’re troubled by something, just go ahead and ponder that, but expose your worries to a layer of honest analysis, too. If you’re untroubled, just think about kitty-cats and flowers and such. This is the tilling part. You’re preparing your mind by loosening it up.

Upon passing through the threshold of the library, put aside any worry-type thoughts. In the library, you’re going to run a simple little exercise, two to four times. This is the solution/crystallization phase.

Identify a section of the stacks. If you have a tendency to visit one place in the library a lot, you can start heading there. Or if you have a topic that’s been on your mind a lot lately, type a few keywords into the catalog and choose a book at semi-random from the list and go toward it. Or if you just see a space that seems to be relatively free of other people, drift there. The idea is not to find a specific book or a specific topic, but just to get near things that you’ll probably like.

While moving casually toward your target area, keep your eyes open for any interesting oddities in the stacks. Books that attract you with their nice colors or hot keywords or cool titles or I’ve-always-been-curious topics or whatever. If anything looks good, you’ve found your place. Otherwise, keep going to your original target.

Grab a book. Don’t give any thought to whether you understand the topic well enough to read the book, or whether it’s something worthy of discussion at the watercooler, or whether you’d normally be seen reading such a thing. Just grab something good. Open it to a random page about a third of the way through. You could use the table of contents, or something, too, but probably just go with randomness. Start reading. Don’t stop because they’re referring to some term defined previously in the book, or there’s an equation that you don’t like. You’re not trying to win an award for Awesomeness In Reading Stuff You Already Understand, you’re just activating parts of your brain and getting excited about some ideas and how they connect.

Read for five to fifteen minutes. Maybe break that time up in between two or three books in the vicinity that grab your attention, or just stick with the first one. If you spend too little time, you won’t really get things activating. If you spend too much time, you won’t really get things stirred up.

Repeat the exercise a few more times. I know I already said, that, but it bears repeating. Two times (total) will at least start cross-pollination of ideas, four times is probably best if you have the inclination.

While you’re working on your second or third go-round, you’ll find that things are starting to connect. Ideas expressed in a book about machine learning algorithms will be echoed eerily in a book about sketches by famous designers. This is the crystallization, and it pretty much always happens if you’ve run the exercise according to the basic outline above. It’s pretty awesome.

After a sufficient period of crystallization, you’ll be all revivified and feel better. You can head home, and as you do, just keep going on the various connecting threads. Also, look at trees and sidewalks and telephone poles. Sit in a park for a few minutes. That kind of stuff.



Backups are good

If you’re a go-go guy like me, you don’t want to have to spend a quarter-second between keystrokes to realize that you’ve accidentally selected five hundred files instead of just two before you hit that delete key. Backups to the rescue. That and ntfsundelete, which helps you get the handful of files that were modified since the backup yesterday. Because you deleted these files 2 minutes, literally, before the next backup VSS snapshot was to be created.


The Annoying Valley

OK, you probably know about ‘the uncanny valley’ (maybe start at the Wikipedia article if you don’t), but do you know about ‘the annoying valley’? If you’ve played a video game in the last bunch of years, I’m sure you do.

In an effort to make their AI players more human-like, a lot of game developers add little human touches, like a character saying something to you in a specific situation. But what’s a pain is that they often say the _exact_ same thing in the _exact_ same way (basically, the same sampled audio) in the same situations. Such that you hear it possibly dozens or hundreds of times in the course of normal gameplay. This is annoying, this is the annoying valley.

Some sounds in a game you expect to repeat exactly or nearly exactly, because they would in real life. But humans are so rarely that boring, so the fact that it’s supposed to be a human reaction just makes the annoyance level skyrocket. I suppose you could call that a personal problem, and I certainly understand the relative difficulty of making human speech/animation that sounds/looks good _and_ has lots of natural-seeming variability, but still…


TV firmware

I wonder when the day will come when the firmware in more consumer-electronics devices, like TVs, will go open-source. I would love to be able to modify the firmware in my TV. For one thing, there’s a very annoying video bug that I’m 98% sure is a firmware bug, but Sharp (ooops, I didn’t mean to say the name of the company, but it’s too late to backspace now) refuses to acknowledge that it’s a bug or fix it. I bet if I had a source tree/build tools/loader I could fix it in about a day, regardless of the fact that I don’t know anything about TV firmware.

But the real reason is this: some PS3 games do 720p and some do 1080p. When the mode switches, my TV has an indicator that comes on briefly that says “Video: 720p” or “Video: 1080p”. I want to change the former indicator to “Video: 720p (teh suck)” und express the anger than I am feeling about games that don’t do 1080p.


Nature software

Hmmm, looking at the credits on an episode of planet earth, I don’t see any credits for software/IT support staff. I’m sure there _is_ some, but the fact that it’s uncredited probably indicates that there isn’t as much computing going on in the production of such a series as there ought to be. I can think of lots of ways that software and computing infrastructure could support efficient production, insightful exploration of A/V materials and data, exceptional editing, etc., and I’m sure that current off-the-shelf software can’t be doing everything that can be done there.

So, if anyone reading this is a nature documentary producer, I’ve got two requests of you: produce lots and lots more content on the level of quality of planet earth (even a level or two lower quality would still be great), and talk to me about how to make more and better stuff through software magic.


Perverse geekery

Have you ever run NetBSD/x86 on qemu in Linux on your PS3? Don’t bother, it’s not that cool.


Bobbing and weaving, technologically speaking

Just read a pretty good overview of some of the nits of de-interlacing: The basics of de-interlacing from good to great. This is a sort of fascinating topic to me.

I guess the first thing I think of, when I think of interlacing on either an aesthetic or technical level, is ugh. Aesthetically, I’d be quite happy to never see another interlaced video or monitor again. Technically, I’m thinking that the resources, both of engineers and of computers, that have been used to de-interlace could really have gone to something much cooler.

And it’s so persistent, too. Interlaced videos are still being produced, I’m sure interlaced monitors are, and at the same time, de-interlacers are still being developed, and all that will continue for years from today.

But this is all just one of those things that happen so often in technology, where something that was a great idea at the time becomes a self-reproducing monster. I wonder if the people who started us down the road to the interlaced world we’re in today (and I don’t mean to deride them; I can only snipe at them with the advantage of hindsight and from the vantage point of _today’s_ technology) are all like “I am become tearing” or if they’re all “I wish people would love everybody else the way they love me”?

In any case, at least we can say that interlacing stimulates the economy.


Buggy software

Should I love or hate buggy software?

I mean, the hate part is somewhat obvious, in that it interrupts work and takes one out of flow and dammit I paid $apple and I should get orange performance, etc.

But the love part comes from the following facts:

  • in cases where I’m paid by the hour, I make the same amount of money for struggling for a hour with OPB as for doing, ya know, some real work.
  • I learn things from struggling with bugs. Not only “this crap doesn’t work in this situation” (which is commercially valuable knowledge), but also things about the technologies involved, theoretically things that transfer to other contexts. Wasn’t it Heidegger that had a whole theory about how tools are invisible until they fail to work?
  • (third entry because a list of two things is weird.)

Teaching programming

Someone (I don’t really like to mention a lot of specific names on my blog) asked me today what suggestions I might have to someone who’s about to start teaching a university course in programming in MIS. I had some fun hypothesizing about it; here’s what I wrote:

[I have to preface all my remarks with: I’ve never taught anything bigger than parts of a three-day course in the architecture of a specific application, and even then I didn’t try any of the blue-sky ideas I’m about to mention. But, if I did try to teach something like a college course, I would try them.]

My first thought is that the most important thing to emphasize is that programming is about structuring thinking and activity, and not really about the structure of computer programs, so I think a project-based approach seems like a good idea.

I’m going to just go full-hypothetical here and give a transcript of the first monologue I’d give :-). Hopefully people would interrupt me…

“Contrary to what you may have been told, programming is not really that much about languages and syntax and stringing together a series of canned solutions. Well, good programming is not about that. Mediocre programming is about that, and you can get by in the commercial sphere being a mediocre programmer, so if anyone is truly satisfied with that, we can have an independent study course where I assign you a textbook and you do problem sets and tests.

However, what I’d rather we all do is learn good programming, and by the method that I think makes most sense, which is to actually build something together and enjoy building it. Good programming is about structuring thinking and activity, both on your own and with others. It’s really just a particular discipline of problem-solving and communication, both of which I assume you all know a good deal about.

The project we’ll be doing is the software for a POS system. You might think “that’s boring”, which I hope to convince you doesn’t have to be true, and you might think “that’s quite practical”, which is true but not all that relevant.

What is relevant is that it’s something big enough that it will take the whole semester. Today is the last ‘lecture’ of the class. I mean, there’ll be plenty of opportunities to take notes if that’s your thing, but what I’ll be doing is not lecturing; I’ll be participating in the discussions that come naturally from the project, and bringing in whatever I can from my years of experience when the need arises. You’ll want to take notes on what you and your classmates say more than on what I say.

If you’re thinking about grades, and it’s OK to admit that you are, I think everyone will be graded by classmates. I won’t let you be too hard or too easy on one another, but other than that, you’ll be deciding grades. Inherent in the structure of a complete software system is some sort of assurance that what you’ve built is high-quality. So, for example, there’ll be people making test systems that will test modules that other people are making. It will be clear to both of those teams how well the other team did. You’ll be giving grades at the end of the second, fourth, eighth, and sixteenth weeks.

Speaking of teams, let’s start talking about the pieces of the system and the workflow for building them. I think we can accommodate everybody’s interests and talents somewhere in here.”…

[Some pieces of work/ideas I might bring up if they didn’t come up: user interface/ease of use, network protocols, language and coding style decisions, source control (use SourceForge and get the added effect that ‘anyone in the world might see your code’), error handling, exception handling, auditing, security, existing code and libraries, storage and redundancy, issue tracking, performance, testing, data formats (i.e. floating point is not necessarily good for financial data), customization/branding, data mining, what happens if the whole thing ‘crashes’, legacy system integration, self-check systems, …]


Burning down libraries remotely

Seeing this article over at Wired (Public Libraries, Private DRM) reminded me of a cool thing you can do to help accelerate the downfall of civilization:

  • Invent a DRM scheme with revocation (naturally, most of the ones coming out, such as AACS, have this).
  • Get useful content recorded with your scheme, then into libraries, through the force of the marketplace.
  • Let people go on thinking that libraries are a way to preserve cultural content beyond its life in the market and outside of the hands of future censors.
  • Revoke, revoke, revoke! The content magically disappears off library shelves (given that devices can no longer read the content, ever again).
  • Instead of revoking explicitly, you can also go out of business, release a new and incompatible version of your DRM scheme, have a bug in your DRM, let your servers go down, etc. The possibilities are wide open.