Older blog entries for aaronl (starting at number 41)

I didn't code today. But I did go to an awesome party. That's all I can say while keeping this post rated G (with due disrespect to the MPAA).

I've been forgetting to post for a few days in a row now. I'll post all of these diary entries in one.

22 Jun 2000
I tried fixing a bad drawing bug. I tried very hard. I wasn't able to. So I went and worked on my .emacs file. The new version doesn't read the "desktop" file if it is only being reloaded, and the customizations for scheme and comint are bettter. It's available at the usual place, but now also on FTP. The idea is that I could take advantage of EFS so that at school or at a foreign computer I can type M-x load-file RET /anonymous@vitelus.com:/pub/dot.emacs RET. This works beautifuly and will drastically change the emacs behavior :).

21 Jun 2000
I stayed up late working on a job ( :( ). Once I was done with that work I was really lazy and played a lot of XEvil and listened to MP3's. Not much to report. Except that I fixed a few bugs in AbiWord like #919 (on UNIX) during the day.

20 Jun 2000
Went on a really cool run that made me feel totally out of shape. The main work that I accomplished this day was that I did a major hack to fix a bug in AbiWord where toggling Bold on/off or changing the font while nothing was selected would cause the file to be marked "dirty", but no acutal changes would appear in the file because no text was there to assume those new properties. I fixed this by doing some rather unorthodox fiddling with the save version counter, and implementing a flag to know when to keep it in sync.

19 Jun 2000
I finally fixed that Postscript printing bug. It wasn't easy. It took 2 days and a night. Basically most accented characters were unbound and therefore not included in the widths array. I hacked the code to make a unicode-indexed width array and use that. Gnome-print's sources were helpful with figuring this out, and since I had to make a large mapping table that a comment in the gnome-print source said was a TODO, I sent it off to their mailing list. I certainly hope my work prevents someone else from spending 45 minutes hacking together such a table.

I woke up this morning to find out that I had won the $299 AbiWord patch prize! Thanks to all the people at SourceGear who made it possible for me to have so much fun working on AbiWord. According to the wee kly news, I tried to lose the prize by reversing an old consensus. I'd better calm down with these contraversial changes :/.

One of the only problems of the week from AbiWord that is still not completed is the Printing accented characters on UNIX challenge. I made some significant progress in debuging the code today. It has been very confusing since I know that gnome-print works with accented characters, and when I dropped in its parseAFM implementation the problem still existed. The conclusion that I am forced to draw is that either something is wrong with our font metrics files or that AbiWord doesn't use the widths tables correctly. Right now I am persuing the first theory. From the code of gnome-print, I've observed some differences between how it calculates character widths and how AbiWord does. They're pretty minor differences but I'm slowly checking them all out. However, it is possible that this is a bug in parseAFM that weirdly enough is affecting AbiWord but non gnome-print. If anyone knows any other GPL-compatible implementations of parseAFM, I want to try them! The misprinting of accented characters is a big problem that hits me whenever I print out French homework and I like to fix problems that affect me a lot more than those that don't. I also have a strong hatred towards all of the anti-WYSIWYG bugs - I'm not a big fan of WYSIWYG, especially Page Layout mode, but when it claims to be WYSIWYG and is not, I'm not very happy. The most infamous of these bugs is #514. It is another one that affects me a lot because I use tabs for outlines and this bug has forced me to manually break lines early to prevent disasterous print results. Maybe I will tackle this if/when I resolve the PostScript accents problem.

Cool thing of the day:Vapour. I always thought that OS's would always have the same design. Today I talked to the author of this slick, operating system that's in development on EFNet #lisp. I found his design for this operating system amazing. Essensially, rather than a trusted kernel in memory, there is a trusted compiler in memory. You feed LISP sources into the compiler, and it produces a native binary in the linear address space of the computer's RAM. Since LISP has no pointers, it cannot arbitrarily touch memory. There are a few mallicious things that could be done with LISP but I imagine that the compiler will be very strict about these. Everything runs in supervisor space since the compiler only lets things that wouldn't crash the computer run anyway. These binaries that the compiler produces are not really excecutable binaries, but there is one binary per function that any process can use. I use the word "process" losely, as processes on Vapour are more like threads running off the operating system. All functions are stored in memory and unused ones are swapped out, making the disk a giant swap partition. The OS will be completely self-hosting, and will be writen in its own native langauage (a dialect of Scheme). Of course, device drivers will need more permission than normal functions, and this will be handled by a form of superuser (this is my understanding but I may be wrong).

You may ask why this design would be any better than a monolythic kernel. Aside from being a very interesting architecture where all code can be shared and the system can guarentee that processes are safe to run, the author claims that such a system would cause a massive speed boost of about 8x in I/O, and there would be better IPC. Also, if you like LISP, this OS would turn your PC into the ultimate LISP machine.

I'm really looking forward to seeing how this project turns out. I was told "Give us 6 months to get the compiler self-hosting. That's the hard part." Once this becomes bootable for interested hackers, I'll have to give this a whirl. Right now the compiler r

I forgot to post yesterday. Yesterday I resurected my normal mode patch from about a year ago. It's a major hack and it's not working. I also tried resurecting the tabs dialog in AbiWord. I don't understand how it's supposed to work.

Today, I spent from the time I woke up until dinner working on the Normal mode patch. The radical hacks I made are completely crazy and didn't help at all because I didn't and don't understand the cause of the problems. The hacks are best exemplified up by this comment:

// m_hackPP is a pretty gruesome hack. The idea is that we want whoever
// is trying to find out about attributes and properties to hear our
// our version of them - for example, the way margins are displayed on
// the screen rather than in the document. This is the kind of stuff
// that is necessary for non-WYSIWYG display like Normal mode. We could
// write into **ppAP the margins that we display, but since ppAP is a
// handle to the actual properties and attributes for the document,
// it would actually change the margins in the document. That's bad.
// So, we have m_hackPP which is a PP_AttrProp that is a copy of the one
// representing the attributes and properties of the document but with
// the margins and etc. changed. The reason why we can't just create a
// new PP_AttrProp everytime getAttrProp is called is because the caller
// believes it is getting a pointer to the document's PP_AttrProp and it
// wouldn't dare free that. So, we have to keep one in the view that all
// callers can share. I hope there are never any situations when they
// should be different. I told you it was gruesome.

All that hackishness for nothing. From 10PM to 4AM I worked on making dependencies work in AbiWord's crazy build system, which currently requires you to make clean whenever you change a header file. They still don't work. They still are not close to working. Understandably, I am in a bad mood because I just restled with make for hours. I want to convert the build system switched to autoconf even though I hate autoconf too.

Just spent 2 hours on IRC tracking down a horrible bug. As usual it's all my fault.

mishan asked in his diary entry why so many people bash perl. The answer is because perl sucks :). You probably should read the definative guide to why perl sucks.

Now for the rant. There is so much magic in perl that it is an extremely complicated language. To read perl code, you need to learn the meaning of any character, expression, regular expression code, and construct. As a result, perl code is generally unreadable to anyone but the perl expert. By contrast, languages like C and Lisp have simple, consistant syntaxes that are built on by libraries rather than syntastic features.

My other main gripe about perl is the craziness of escaping characters. In a regular expession, or just out in a string, so many characters have special meanings and need to be escaped. You need to memorize exactly which characters need to be escaped, and escaping every non-alphanumeric character makes strings be unreadable very often.

Scoping is pretty messed up, but I have not used perl extensively enough to give a detailed report on scoping in it.

Perl also has many other disadvantages in the implementation, such as code being interpreted every time a script is excecuted. In this post, I am focusing on the language itself.

Had fun trying to work some ham satelites. Listened to the beacon of RS-15, the beacon of RS-13, and caught RS-15 again in another orbit (it takes RS-15 2 hours to orbit the Earth). I listened on 10 meters, and during the latter two I keyed on the 2 meter uplink band. Didn't hear anything either time - I need to find something better than a vertical car-mount antenna for transmitting. Perhaps tomorrow I will build a loop skywire. I already have a 2 meter beam but that is directional, of course, and with 15 minute passes it will be a big pain to keep the beam oriented. My recieving antenna sucks too. It was a 20 meter dipole that I was using to receive 10 meters, and it didn't work very well. The beacons were so weak on my receiver that they were not easy to hear. I didn't hear any QSO's on the satelites, although I did seem to hear a bit of CW occasionally. With better antennas and perhaps a 50 watt amplifier on the 2 meter transmitter, I should be set up to do some real contacts over a satelite. I'm glad that the uplink is on 2 meters, because while my 2 meter rig has a lot less output power, I'm not sure my technician plus class license allows operation on some of the frequencies the satelites use. I will also need to brush up on my CW as I haven't used it forever (since I discovered IRC :)).

If you're into satelites or want to get into them, check out heavens-above. This site is a very convenient method of getting the times of the next satelite passes.

Over all a productive day, with a few fixes to AbiWord of minor bugs. The latter part of the day I dabbled in E-related topics, trying futilly to hack Esound to not suck and then playing with EFM. I had fun making cool neon-cursive titles on my desktop, but it caused my computer to get extremely lagged and slow. I need a faster computer with more ram.

Also, showed CodeToad EFM. He seems to like it but his hardware is completely underpowered for something like EFM.

<aaronl> i just toured a 36,000 square foot house with a t1, 16 fireplaces, a home theater, centralized audio, two libraries, two swimming pools, a full sized guesthouse, a parking lot, a zen garden, a rose garden, a racketball court, ancient stained-glass windows from europe, ancient entryway from europe, fossils in the limestone that it is made out of, trails and forest, two historic french temples, a tenis court, a view of san fransiso, historic pieces of art, thousands of antique books, and bathrooms made out of onyx and other semiprecious materials <washort> aaronl: normal people wouldn't have noticed the t1 first. <aaronl> washort: he has 4 LCD monitors <aaronl> did i forget the star trek chairs that wrap around your body?

Same old top ruler stuff. More bugs, more fixes.

32 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!