Older blog entries for kai (starting at number 13)

Life: After more then 5 years I'm now studying mathematics again, giving it a second try. I've taken 3 classes this term: analysis, linear algebra, and computational mathematics. One week (and one examn) to go and I'm pretty tired. Studying math is definitely rewarding - feels almost like getting an upgrade for my brain :^D I think it'll help me with my programming skills as well in the long run but for now it's adding to the confusion. Last time I tried to study math my personal situation made it impossible to continue and I often felt like being caught in an endless loop since then. Things started getting better when I moved to Berlin and it seems I'm back on track now. Should do more sports, though ...

Free Software: Last fall I've contributed to a PHP/mySQL/X*L portal engine project: cyx5 and learning a little SQL was very interesting (as was having my first exposure to XSL). Maybe I'll have some time to hack on it again during the next two months.
What's cool about it is that it actually started out as a distributed team project - unlike most successful Open Source projects out there. It's a way of working I very much enjoy, and I fear it's the only way that works for me at all - I'm just too unorganized to be productive in isolation for a long time. Maybe that's something mathematics is going to help me with, too.

Programming

The following quote is from a document describing a calendaring architecture but I think it's a good rule for a much broader set of applications.
[Jan Grant] : The system's algorithms should be capable of operating in a mode where instant responses to requests are not required. That is, state transitions should not merge a request and a response.
Get used to writing programs this way. When half of the computers you're talking with are on Mars, it'll all be like this.

Syncronous, control-flow based languages make this hard, though.

Life

It's always better in the summer :°)

Web-mining

I'm looking for a tool to extract structured data from semi-structured web documents, identifying records (and hopefully fields) by learning extraction rules automatically or semi-automatically from multiple-record web-pages. I only found some research papers, can somebody point me to a Free Software tool to start with ?

With every day, Google seems to become more PDF/citeseer-infested, but there is (almost) no competition left, sigh.

LCDs

raph: Don't worry, marketing will coin a cool term, probably something containing "double", "ultra" or so ...

Coding

Linux Interface Project: Too hot for coding. Circular treemaps will have to wait.

During the 1990s Ben Shneiderman of the Human-Computer Interaction Laboritory (HCIL) at the University of Maryland invented Treemaps as a compact visualization of directory tree structures. Treemaps involve turning a tree into a planar space-filling representation using assorted boxes-in-boxes algorithms.

I've lately coded on a new, fresh, evolutionary dead-end approach to disk-usage visualization using nested circles instead of boxes: circular treemaps or pebble treemaps.

On the weekend I set up a page with explanations and screenshots about pebble treemaps.

BenFrantzDale: Don't think about it rationally: Sony Z7, though a reviewer points out: "If you are new to the Sony phone range, you will definitely find it different to your Nokia, "[snip].</plug>
nymia: (Re)using code for a Flash clone: besides Xr and xsvg I'd like to point out aztec, a GPL 3d modeling and animation program containing a nicely written scene graph library and some other things which could be of use for 2d vector graphics animation.
30 Sep 2002 (updated 30 Sep 2002 at 10:46 UTC) »

Life

Three weeks ago a robber attacked me with a hammer. He probably wanted to struck me down and get into my appartment. A couple of days ago I had a nightmare. I awoke by the sound of a hammer hitting my skull. I hadn't remembered that sound. The wounds are healing nicely, though. Of course the police didn't catch him.

I got trouble with my lungs so I'll be taking antibiotics for the next three months.

I've got some very close friends I can talk with about many things like politics, music, or life in general, but nobody in my surrounding is interested in my other interests: information visualization, human computer interaction, and pattern languages. Sometimes I wish my former arrogance back so life on Elba may become less hard.

I've been pretending to be sleeping for a long time. I don't even quite remember what it feels like to be awake. I think it was quite cool. Maybe I should have some lucid dreams again, singing and dancing until I'm back in this place and at this time.

Programming

Having to work alone hurts. I'm not very productive working alone, either. My projects are stalled. Last thing I coded was a cute hack modifying the KDE color scheme control panel which wouldn't get accepted anyway but I might put together a page of things that will never be including a screenshot eventually. Last time I wrote a significant amount of code was after a bottle of good red wine. The next morning was a desaster so I'm not going to do it again anytime soon.

The imperative "show me the code" is pointless, yet not new.

I read halfway through a book on Java and doing some examples was fun, nice libraries. Doing it in Windows was not so cool.

Certs

I think the new diary rating system is annoying, but I realize it's point is about research so usefulness is of little concern. Advogato has become a monological environment, very sad.

I do not like writing anymore.

tor: To me C always feels like a strange mix of high-level and low-level. I often catch myself rewriting things for no good reason such as:
n = 1 + strlen(s); s0 = malloc (n); memcpy(s0, s, n);
And then the head-spinning starts: Should it be inlined, should I use malloc at all, and so on. Doesn't happen to me when using a high-level language :-)
Can the code for your project(s) be downloaded (didn't find a link) ?

I'm pretty new to functional languages so it's just a mental exercise to me for now, expanding my understanding in general (learning, slowly, SML). I think that by using SML and Forth to implement some algorithms I'll become a better programmer in general (highly speculative so far).

As you are using ObjC for the toolkit, have you checked out TOM? TOM is a very balanced compiled, high-level, object-oriented language. The syntax is similar to Objective-C, it has closures and GC. TOM is inspired by Eiffel, Java, and some) I highly recommend taking a look if you havn't done so: TOM language homepage.

Fitz

I wonder if there is going to be support for flyweight nodes (instance vs. copying) like OpenGL display lists ? That would be cool! I'd also like to know what horizontal/vertical sub-pixel positioning resolution will be the default for interactive screen display ? Do you plan to support progressive refinement for slow systems ?

raph: Your last diary entry made me think: about asynchrony, about thinking in general, about speaking, about beeing drunk, and about other things.

Asynchrony

When I printed out the CORBA 1.0 specs (the whole pile, sigh) I was pretty excited at first. Then the roll-back: CORBA makes it significantly easier to use "synchronous" rather then "asynchronous" requests. How stupid! (But it took me some time to realize this) "It pretends that method calls are really local" hits the nail on the head.

Regarding X there are two sources of trouble:

  • Many people don't have a remotely connected X server to test high-latency situations. So they can't test it out or may not even be aware of the problem.
  • Xlib is to blaim, too. It's too opaque. Examples: XDrawRect + XFillRect calls although there is no reason to provide both, no mask for all events when calling XCheckEvents, ... But I don't know why few toolkits decided to support multiple Displays, hmm. (It's actually funny to have your app's windows pop up on different X terminals, mice-handling becomes more difficult, though.)

Whether an operation is asynchronous depends on the user's context a little. (A RT coder may draw the line at a much lower latency then I, as a GUI programmer, would.)
Other cases where fake synchrony (or even fake asynchrony) at work:

  • gethostbyname() (a really ugly one)
  • stat() (the ugly part beeing that it's not obvious)
  • all non-memory i/o read/write ops.
  • some aio implementations are not async? (or only ill-minded rumor ?)
(Then again, I run a PCI+IDE+VIA system, which I couldn't trust in full-duplex, so I alone am to blame)

Some quick thought's: If the underlying operation is asynchronous, the primary interface should expose this asynchrony. If a call may fail, it can provide an error code. Building optional synchronous calls on top allows people to use the library more readily. Providing good documentation educates people (empowerment!), only providing synchronous calls for asynchronous operations dumbs them down. (sorry for the rant)

Community

Maybe allow people to "hide" entries from the "recent log" compiled for them, where they still show up on the main page and for everybody else in the recent log, of course. I'm not sure whether the recent incidents make a stronger move necessary, but it's easy to say as I'm not involved (and I got a mouse with scroll wheel, hehe). There are surely things that could be improved about certification, but I doubt "cert inflation" is the problem. But I'll stop rambling for now :)

life: I got a cold :*(

Writing Code

Surprisingly I started hacking on MindsEye again. It's actually fun to work on. Fixed vertex normals for torus tesselation. Cone still bugs me. I also digged up some old window manager code I wrote some time ago. Maybe the world will see kaiwm eventually, shouldn't hold your breath, though :)

MUA

I've been using kmail (instead of vanilla web mail) for almost three weeks now and I really like it. Hasn't crashed on me so far. I'm still looking for a mail client that supports marking individual sections of messages and includes at least some basic "personal data mining" functionality like mailing list statistics, automatic keyword indexing, automatic message scoring, refining searches, treemap visualization, and so on. Any recommendations?

4 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!