Pat's Log
Sun, 25 Dec 2005

Christmas and Celestia 1.4.0
20051224 Ah, Christmas: that time of year where we spend money on others to get them stuff we think they need while they do the same in return and invariably no one gets what they want. Except this year. I got exactly I was hoping to get and then more.

First of all, I got people things that I thought would be useful but not consumable, personal but also shareable. So, I got the Muppets Season One DVD set for my sister, the Settlers of Catan board game for my brother, a nice stainless-steel salt shaker and pepper grinder set for my mother, and a Kill-A-Watt power meter for my father. All of these things can be used by the whole family, and the first two are especially fun for everyone.

In return, I got Sensodyne toothpaste from my sister (hey, she's eight!), a bottle of scotch from my brother (interesting, since he's thirteen), and a wonderful 153-piece socket set from my parents.

I haven't felt this good about gift exchange in quite a while, probably because for the first time in several years, I neither gave nor received junk. More importantly, the mood was good, everyone happy. We watched a number of Muppets episodes, played Settlers, and generally had a good evening.

All of this fun is somewhat offset by the release of Celestia 1.4.0. The last few days have been stressful. First, ensuring synchronization of four people in multiple timezones the week before Christmas proved futile, and even led to a few false releases. Perhaps this is not surprising, given that there has not been a release for 16 months. But I was adamant that 1.4.0 be a Christmas present for our thousands of users. Without the need for details, it can be said that the release was definitely bumpy, but still a positive first experience for me. The Christmas release also let me be witty and poetic with the release eMail:

Just in time for testing new video cards that magically appeared under people's Christmas trees, a new release of Celestia is sure to please.

I am so looking forward to the week off.

[] | posted @ 04:53 | link
Tue, 20 Dec 2005

Working Around ATI's Bugs
I'm celebrating. After months of living with a bug in ATI's drivers triggered by Celestia's OpenGL 2.0 render path, I've finally found a work-around. Not having the source or any way to debug GLSL that is compiled and then executed by the ATI binary, the only option was to fiddle with the GLSL code. After several iterations of setting the texture red, green, or blue based on an if statement that could confirm the state of a value, I was no closer to getting it. Also, when the problematic line:

gl_FragColor = color * diff + color.a * spec;
... was broken into two lines...
gl_FragColor = color * diff gl_FragColor += color.a * spec;
... and still crashed. But when either of the lines was run on its own (changing '+=' to '='), it ran just fine. The solution in the end came as a complete accident. The line became:
gl_FragColor = color * diff + float(color.a) * spec;
BINGO. This worked. Which is strange, since color is a vec4 is a (float, float, float, float), as defined in the GLSL Specification:

vec4: a four component floating-point vector

Definitely a bug in the ATI binary. The GLSL compiler was not catching it, because the code was right. However, whatever was executing the compiler's output was certainly misinterpreting. For now, I'm celebrating. But eventually, I'll raise a little hell.

[] | posted @ 04:57 | link
Mon, 19 Dec 2005

GLSL and Silly Brothers
This weekend started without any plans whatsoever. Still, ever-so-suprisingly, the time managed to fill up.

Shortly before the weekend, I wrote a one-line plugin to this blog that handles code sections and quotes better. Before, I had been using a combination of UL and BLOCKQUOTE tags. Now, I wrote a regular expression that parses a bb-code-like syntax for the relevant blocks and substitues them with something easily stylable. I also modified all the entries to follow that. Over Christmas, I hope to redo the stylesheet altogether. The current one is a lame modification of the default Blosxom look. I can do better.

My brother did something silly on Friday. He was to call my grandparents in Poland and tell them what he would like from them for Christmas. He spent 15 minutes talking. My mom called back later to see if they got the gist of it. They said he never called. Adam spent 15 minutes talking to a complete stranger thinking it was his grandmother. Apparently, the woman just kept telling him to talk louder. Wrong grandma. Oh, well!

With no other plans for the weekend, I figured tackling a known ATI crasher in Celestia would be a good thing. gdb shows that the crash is deep within the binary ATI drivers, only occurs when in the vicinity of Earth, and only with the OpenGL 2.0 render path. While a long shot, the goal was to analyze and poke at the GLSL code until it stopped crashing. Eventually, I tracked it back to a vec4's alpha element, which worked great if I explicitly set it to something less than 1.0 before using it. I guess it's being set to a bad value somewhere. I sent in the bug, hopefully someone more knowledgable can actually figure it out.

Finally, I took care of my Christmas shopping all in one blow. I'm happy with the types of things I got my family. Useful, not garbage, not terribly overdone. From the heart. I wrapped them up and put them under the tree. People can shake and try to figure out what they are at their leisure: being the bastard I am, I didn't put the "To" labels on them!

[] | posted @ 04:51 | link
Wed, 14 Dec 2005

Linus Flipped Out
Linus Torvalds flipped out at Gnome today. What started as one little post accumulated, as it seems these things always do, to something that hit Slashdot and all the other high-readership sites.

It came from nowhere: a discussion was started on OSDL's Desktop Architects mailing list, where a member posted a question about features that are (not) implemented GNOME's print dialog. Then Torvalds went off on tangents about "fucking idiot" users and GNOME's window manager. It became a flame about the meaning of the word "usability" (I think!).

Kamil summed it up very nicely:

linus: you pansy-ass mofo's. i don't use gnome because i don't like using software that was written by guys with little dicks.

gnome devs: i think you're missing the point here. this discussion isn't about big penises. it's about making a penis that will fit all holes.

A rather humourous Slashdot comment:

Torvalds farts. Slashdot reports.

So the zealots had a day in the park. In the meantime, all the GNOME and KDE developers seemed to be laughing about this. Unfortunately, this affects my opinion of Linus negatively, especially considering how absolutely unfriendly the kernel is to non-developers.

[] | posted @ 04:59 | link
Mon, 12 Dec 2005

Blog Comment
I've never been inclined to have blog with a commenting system. In many ways, I think that such a system encourages silly and meaningless comments. When people want to comment on something they see here, they send me an eMail. I've gotten some very good comments over the time this thing has existed, including one just last week:

Subject: Hi, your blog is amazing....

Hi , was taking a break from writing a lab report on IC opamp fabrication, and googled onto your blog. Thought I'd drop you an email coz i was totally impressd by it. I'm doing an engineering degree, electronics. You've definitely given me loads to think about.

Good luck in future.


That message about encouraging Joe really ended up encouraging me.

[] | posted @ 04:56 | link
Sun, 11 Dec 2005

Casserole Entry
It's been an interesting week. Work felt productive. I got a new LCD screen, which makes me enjoy it a whole lot more. Additionally, a new batch of rack equipment came in, and setting that up always excites me.

I spent some time this week getting my new Celestia/GTK to work under Windows. I tried at first creating a Visual Studio project, but gave up after about two hours of messing around adding library paths and so on. The interface is not intuitive, the options are well-hidden, though the help system is quite thorough. The debugger is also handier than I anticipated.

Switching to the command-line and writing a NMAKEfile for my new section of the tree took far less time and did everything I wanted. A few minutes in the handy debugger caught a couple of things that running under Linux never did, namely a number of char arrays that were too small for their contents. In the end, the program works nicely, looking and feeling just like it does under Linux:


Speaking of compiling, here's a funny GCC error message encountered while fixing up some Xandros software for 64 bits:

ISO C++ says that `QCharRef QString::operator[](int)' and `operator[]' are ambiguous even though the worst conversion from the former is better than the worst conversion for the latter.

It took a few cross-eyed iterations to get the jist of what that means...

What spare time there was this week was spent reading about autopackage. The developer's guide and tutorial on their site covers interesting issues around binary relocation and portability.

I spent some time today producing an autopackage for Celestia. While I don't intend to check the modified code into CVS, providing an autopackage is not a bad thing. The current revision still needs some work; it would be good to make it load Lua if present, and possibly link small libraries like gtkglext in statically. Then, the only external dependencies would be libGL and GTK+ itself. Most computers running linux should have both.

I took my little sister to see Harry Potter and the Goblet of Fire this afternoon. I liked it more than the last one (new director, and it shows), though I really miss Richard Harris as Dumbledore. The movies just aren't the same without him. But I was surprised to see the new Doctor Who as the bad guy!

[] | posted @ 06:24 | link
Tue, 06 Dec 2005

Two-and-a-Half Weeks
20051205 The Celestia GTK+ front-end was in need of rewrite. He is a completely true quote by Celestia developer Fridger Schrempp:

Comparing the GNOME and notably the KDE flavors to the GTK version for Linux, I think it is fair to insist that the difference is still /VERY/ large. It is simply much more "than just a little bit of work" to get the gtk version to the same standards.

So, I took the challenge that was laid before me.

Having started the re-write three Thursdays ago, and having spent on average five hours per day working on it, it is safe to say that I was happy to check it into CVS this evening.

Here is the basic ChangeLog:

Major Changes:

  • Split source into multiple files
  • Performance: removed repeated calls to resync preferences
  • Redesigned the interface to use GtkActions and GtkUIManager
  • Added preference saving to file
  • Commented heavily

Minor Changes:

  • New about dialog
  • Made non-modal: GoTo, View Options, Tour Guide, Browsers, EclipseFinder
  • Changed a few calls to standard C to allow for Windows building
  • Star Browser now uses greek letters in names
  • Added tab-completion support on overlay entry
  • Replaced deprecated GtkOptionMenu with GtkComboBox in Set Time window
  • New GTK save/open dialog
  • Moved the License dialog from Help menu to new About box
  • Added "Copy" and "Open" URL functions
  • Galaxy Brightness preferences saved
  • Updated GConf schema/settings
  • Added command line options
  • Fixed automake bug where GConf schema would always install

Essentially a complete re-write. Now, on to other projects?

[] | posted @ 04:45 | link

copyright ©2004-2016 pat suwalski