May 2005

FOAF interests…

So I’ve been listening to the new Prefuse 73 album, and I hop on Google to do a little research. I read he’s doing a tour to support the CD, and it occurs to me to check to see if there are any Phoenix dates.

Holy crap, he was here *last night*. :( That was a chance that is unlikely to come again for some time.

I’ve been thinking for some time about a centralized system which you can tell about your interests in bands, movies, actors, games, whatever, and it will go out and find news on them for you. I’m sure Prefuse 73 has a mailing list I could subscribe to that would have told me about the tour, but that’s just one artist, and besides, it would have subjected me to huge amounts of spam from his label, possibly regarding unrelated artists.

No, I want a system that lets me build a list like this:
prefuse 73
david fincher
sonic the hedgehog
the pillows

And then keeps me informed on those topics, with a minimum of spam. It could even update my LiveJournal and FOAF interests lists for me at the same time.

Fortunately, nowadays you can create an RSS feed that provides you with the results of a Google News search, and I think that could be used to build a prototype. I think that little project will be going on my someday/maybe list.

general

Comments (0)

Permalink

Archy…

I’m typing this message in Archy, the Raskin Center Humane Interface. I’ve been waiting for this day roughly five years, ever since reading the (now late) Jef Raskin’s The Humane Interface, which basically informed me that the entire direction human interfaces to software has taken for the last two decades has been wrong.

At one point, I was convinced I’d have to code this thing myself if I was ever going to see it, but here it sits on the screen in front of me; split-cursor blinking merrily away. A year ago, the installation instructions included directions to get Python and outdated versions of several libraries, because Archy wouldn’t work with the most current ones. Then the Raskin Center got a two-million-dollar grant to develop this (roughly coinciding, unfortunately, with Jef’s untimely death of pancreatic cancer). But his son Aza and associates have carried on, and now the program comes with a self-contained Windows installer. Evidently the Linux and Mac builds work fine too, although they’re officially unsupported while a few bugs are worked out.

So what the heck is it? At this point, little more than a glorified text editor. “Leaping”, a form of search, is absolutely central to its use, as there is no mouse. (Yay!) Rather than wait for a search dialog to load, I simply hold down the left Alt key to search backwards, or right Alt to search forwards through the text. It’s so easy and automatic that I find myself doing it a lot. If I don’t like the last sentence I typed, I simply leap to the period of the one before, highlight the text I leapt over, and hit delete. Gone in half a second. Infinite levels of undo (still available even after quitting the environment) ensure I can change my mind later. Demos can be found here to give you an idea.

Commands to use within the editor are easy to write, since they don’t need a GUI. I’m going to be submitting versions of several basic Unix utilities (sort, grep, etc.), and I expect each will take maybe a single night to code. There are already commands to access and respond to e-mail, right within the editor.

Most interesting is that Archy has no concept of files. “Document characters” separate sections of the text, which is auto-saved upon exiting and restored upon reentry. It’ll make work with formats where files are central (like MP3s, HTML documents, and Perl modules) quite challenging at first. I think it’s doable though.

One year from now, I expect this program will have replaced not only my text editor, but my e-mail client and iTunes as well, and I think I’ll be loving it. It’s that powerful. I’m already a lot less awkward than when I started typing this entry, and learning fast. Someday soon, I will likely refuse to work in anything else.

general

Comments (0)

Permalink

I went on an MP3 binge last night until 1 AM… that was dumb. Now I’m so tired I can’t think straight, and I have a deadline to deliver code today. Various forces are conspiring against that happening, but I could deal with them if I could just collect my thoughts…

general

Comments (0)

Permalink

There’s a software coding methodology called “test driven development”, which says that you write automated tests for your code first, giving sample input values and expected output. If input and output don’t match, the test raises an error.

Once the tests are complete, THEN you write the code. When your code clears all the tests, it’s done. If you make a change, rerun the tests. If something suddenly fails, you know something’s broken.

I was thinking about this last part today, and made an important realization. Automated tests give your program the sensation of “pain”. Previously, if the program were “injured” by defects, it would simply carry on happily until it died in production. But with testing in place, your application can actually tell you that something is wrong, and even what “limb” (module) the problem is in.

I have long had a vision of “self-healing” code in my mind - programs that, like a living organism, had internal mechanisms to detect problems and repair them without outside intervention. Well, outside intervention is still necessary at this point, but I think we’ve reached an important milestone along the path to self-healing applications.

general

Comments (0)

Permalink

I just grabbed what I thought was the SQL Pocket Guide off my shelf, to look up some database field types. I flipped to the index, and was surpised to see an entry for “Orwell, George”. “What is that doing in an IT handbook?”, I wondered, and flipped to the entry. It was only when I saw that it was in a section on creative writing technique that I realized I had grabbed Strunk and White’s The Elements of Style (which is about the same size and shape) instead.

general

Comments (0)

Permalink

Our project architect wanted to track files in a database. I would have been just as happy with a text file, but I put in a database to avoid an argument. In my experience, arguing over an overly-complex design takes longer than doing it the complex way.

Now the database admin, who I was never even introduced to, is vetoing my design. She says it’s not efficient enough. I say we’re going to be writing 20 records a DAY to it. She says “we might expand it in the future”.

Whatever. Arguing about it takes longer than doing it the complex way. I’m hoping my boss sticks a sock in the admin’s mouth before I start the redesign, though.

general

Comments (0)

Permalink

I’m programming! I’m writing honest to God code - that will go into a PRODUCTION SYSTEM!

How long has it been now - five months? During that time, all I’ve been able to do is write documents about programming. Now I get to actually do it! Can you imagine?

general

Comments (0)

Permalink

Have you heard about the TPS reports?

Seeing the Vogons and their triplicate authorization forms in the Hitchhiker’s Guide last week has me keenly aware of the bureaucracy within my own company. Just got this e-mail…

> We have found an opportunity for improvement! Our Change
> Management process states you should not modify a Change
> Request (”CR”) after it has been approved. There are cases
> where CRs have been modified after they have been approved,
> and the result has been unsuccessful changes. This is
> problematic for our customers, our employees, and [company name].
>
> Please be aware that if you modify a CR after it is
> approved, you invalidate your CR approval because your
> modifications are not necessarily read. If you modify a CR
> after it is approved (other than to update the worklog with
> status during/post change), you must reset it for approval.
> There are no exceptions to this requirement.

“Opportunity for improvement”? Gag. This must be the person who suggested that all employees put “Capitalize on our opportunities” as part of their e-mail signatures. (Which I refuse to do.)

I’ve resigned myself to the fact that I need to participate in some bare minimum of all this (change request documents, release management documents) to be able to get my job done. What I have to watch myself for, though, is to ensure that the need to cover my ass doesn’t turn me into a bureaucrat myself.

general

Comments (0)

Permalink