Christmas and Celestia 1.4.0
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
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 @ 23:53 | link
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
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 @ 23:57 | link
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
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 @ 23:51 | link
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 @ 23:59 | link
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 @ 23:56 | link
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
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 @ 01:24 | link
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:
- 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
- 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 @ 23:45 | link
copyright ©2004-2012 pat suwalski