Older blog entries for dto (starting at number 77)

29 Aug 2001 (updated 29 Aug 2001 at 21:35 UTC) »

Current music: Basement Jaxx. What a strange summer it's been.

I'm just a few days away from moving to Lowell and becoming a teaching assistant and graduate student at University of Massachusetts---there I expect the resources and focus will enable me to complete my music-systems project OCTAL (among a billion other new things.) The next issue I plan to explore in depth is notations for GUI's, like the icon-based event representation seen in editors like Scriva.

I know this is going to be a much more productive environment than my current situation, that sort of limbo in between undergrad and grad school where you don't want to do ANYTHING cause you know you're not having another summer like it until the master's degree is finished :-) Which of course panicked one or two folks on the mailing list who thought the project was dying. I really need to notify people when I go on vacation and/or space out.

UML even has an anime/manga club--I think I will be right at home. So many resources! I walked into a library and found journals covering music systems, digital signal processing, and even a big thing all about the user interfaces of various sequencers. The systems lab is full of audio hardware, and my supervisor loves the idea that I'm working on a GNU project... I'm pretty excited about the future.

I'll be rooming with someone named Shan Jiang, however I wasn't able to get his phone or email (perhaps an international student?) so I guess I will just have to meet him when I move in.

Quick update:

  1. I'm going to live at school in the fall. I have already visited the city of Lowell and the University, and it is looking quite nice, I'll have a lot to do.
  2. I've been working a lot on Octal, stayed up three or four nights just this week to make my "ship date" of end-of-summer...
  3. I am still not finished with Jet Grind Radio! What a fun game...

I learned to read + write five more kana bringing me up to a grand total of ten. I also learned about twenty words: things like memory, pond, red, blue, family and the like. This kana thing is really fun. It's like the fun I always had learning Spanish, but with multiple foreign writing systems to boot! What a challenge.

Next on the list: an actual audio tape or CD-ROM of Japanese instruction material, as well as something to make flash cards. Plus, I need to get a working unicode editor (I've seen VIM editing kana, perhaps...?)

I just heard that voltron has got a summer internship at Ximian! Congratulations anthony on your newfound 3l334 status...

Other things on the list:

  • Skimo/Igloo website work
  • Finishing OCTAL
  • Biking
  • Hooking up the Dreamcast to the network so I can do VMU games

I picked up this Japanese Kana learning book at Borders today, and in the evening I began practicing some of the characters: I learned to read and write the five basic vowels in Hiragana.

It's pretty entertaining. When I finish this section it'll have some vocabulary writing practice to cement the learning of the characters.

I love deciphering alien scripts this way :-)

31 May 2001 (updated 31 May 2001 at 03:35 UTC) »

Some reviews of dreamcast stuff.

Hais VGA Box. This little grey device allows you to connect your Dreamcast to your stereo and a VGA Monitor. I got mine for $15, and it works like a charm.

There is a slight bit of weirdness with the monitor. It seems best to start up the DC first, and then plug the VGA cable in; the other way around seems to confuse the monitor. The manual actually recommends doing this, although the translation made it difficult to figure out. This is only a minor issue and detracts only minimally from the experience (you just have to remember what order will make the box happy.)

So how does it look? Marvelous. The colors are brighter and more saturated, and the lines and edges are much sharper. Dreamcast games look great on VGA. Overall, a great experience for single and perhaps double-player. For multiplayer games nothing will beat a large digital TV set (you can use the Hais box's S-video output on most of them.)

There are minor polygon jaggies issues---but they are much less noticeable on a VGA monitor than on the coarse TV screen, so this is actually an improvement. Textures don't seem to be affected. The only other problem I'm aware of is the lack of a monitor pass-thru, which means you have to either switch the cable manually or buy an A/B box. But for the cheap price I'm not going to complain---last I saw, the pass-thru model was much more expensive.

Note: This is the second VGA box I've bought. The first one was the cooler-looking Naki brand, but the connection was way too tight and I never got it to display any games correctly. It was tested on several monitors, none with any results. I don't know if it's a general problem with the brand or just the particular unit I bought, but I have read about others having the same problem with the Naki. At the local Electronics Boutique both were $15.

"Jet Grind Radio"

An original, addicting, but ultimately frustrating game. In a nutshell, you control a ragtag gang of Neo-Tokyo roller-skate graffiti punks who compete with other gangs for territory. The bulk of the game involves running around areas of the city and painting over rival gangs' markings with your own. Your magnetic skates will attach and slide along almost any railing, cable, air duct, or beam in the game, and there are half-pipes, wall jumps, ramps, rooftops, and various flipping and spinning moves to explore. You get extra points for neat tricks, and especially cool moves will merit an instant replay from a better angle.

The concept is unique and the play mechanics are a blast. Successfully completing a difficult sequence of moves is a real thrill, and the game is so full of things to slide along, jump from, and bounce on that you'll probably play it until 2 AM like I did the night I picked it up.

The main stages are broken up by periodic "showdowns", in which a rival skater will challenge you to reproduce his or her daring moves. Some of these are trivial, and the earlier challenges are designed to teach you how to use the controls. But some of the others are very difficult (and in more than one spot, frustrating.) After completing a showdown, the new character will join your gang, and their strengths will be usable for future missions.

The art direction, character design, music, and choreography are excellent. The diverse GG's (your team) have great character designs, each with his own signature dance style and "catchphrases", whereas the other gangs wear uniforms and participate in goofy group-dance-video cutscenes. The music selections run from scratched-up rap with old-movie vocal samples, to j-punk with bizarre lyrics, to groovy synthesizer-disco. (The game is blessedly free of "Playstation Thrash Metal," and jungle makes only a momentary appearance.) The tunes are great---if you have big speakers hooked up to your VGA-box, turn it up!

Shortly after you begin spraying up a level, the police will arrive, and then eventually a SWAT team or helicopters. You must complete the level while avoiding their bullets, gas grenades, and guided rockets.

This leads to what is essentially the game's glaring flaw: the extreme frustration level caused by the police. All you can do is run away from them. The crazy sheriff moves as fast as you do despite his not having skates, and his aim is very good. The only way to escape him is to jump on a railing or get on top of a building where he can't go---it's almost impossible to simply outrun him on open ground. Furthermore the "homing projectiles" on most levels (rockets, grenades, swat soldiers) come continously while you are outdoors, meaning that if you do not paint the larger murals early on, you won't be able to finish the level because you'll get killed if you try to paint while the helicopters are around. (The construction site is the worst example of this. Do the large murals first.)

In one of the later levels, you come to a circular arena where sliding along a horizontal beam is the only way to escape to the train tracks. If there are any paratroopers or tanks in the area (which happens about ninety seconds from the start) you will be unable to escape, since they will simply knock you off the beam every time you try to slide along it to the exit.

It could be said that this provides a surprising strategy element, since the player is forced to choose very carefully the order in which targets are painted. But you need to attempt each level several times before it's clear how to survive, i.e. it's "strategy by savegame."

Combine this with the already difficult-to-reach spray targets, the strict time limit, sensitive analog controls, and the camera problems common in third-person games, and you are in for at least a few hair-pulling sessions. If you're in a narrow spot the camera will often do a disorienting 180-degree flip, and the hundredth time this made me run straight back into the police chief, I wanted to fling my Dreamcast out the window.

Overall: get it. This is a unique and memorable game whose solid gameplay, beautiful graphics, inventive levels, perky characters, funky music, and groovy dance moves more than compensate for its brevity and difficulty.

Possible things to do with my life:

  • Continue composing music, and begin doing it for video games
  • Continue writing game reviews, and try to get a job doing same
  • Remix "warlords 2600" for dreamcast
  • Try to get a job in game design
  • Write science fiction
  • Get Master's Degree and become a professor
  • Develop the band and become mega international superstars

I realized, My God, it's been a month since I updated my advodiary!

In the interim, I...

  • Graduated from college with a B.S.C.S.
  • Bought a Sega Dreamcast, the eminently-hackable, network-connectable, and ultra-cheap console with the nice game library (Shenmue!)
  • Went to New York City, performed a great show along with Ariane, met some cool British folks, and spent $200 trying to get my car back from the people who towed it. Beware if you go to NYC---the only reason they let people pass through there is that they WILL get money out of you some way, whether it's a $10 sandwich at some Vegan place or placing a very tiny sign at the far end of a block that says exactly what time they start towing people.

This summer's plans are:

  • Play with, and hack, my Dreamcast
  • Ride my bike around
  • Learn Japanese
  • Finish Octal
Ximian Gnome 1.4

Nice release! New Doorman program, new file dialogs, new programs. Nice nice nice. Looks fantastic.

However: lots of things are broken. XMMS stopped working. Web Page view in Nautilus stopped working. RC is broken (though I hear this is temporary.) Oh well, I guess that's progress.

I got invited back to NYC for a May gig. Should be pretty cool, Ariane will come along and do vocals.

Richard Stallman is speaking at Holy Cross on Wednesday. I think I'll bring michal or voltron along to see.

I have an extra day off tomorrow because Aparna cancelled class. So I will use it as a "death march" to finish all the stuff I need to finish if I'm going to see RMS speak on Wednesday, tutor comp. theory on Thursday, visit New York City in 2 weeks, and graduate in a month :-).

9 Apr 2001 (updated 9 Apr 2001 at 01:57 UTC) »
Recent thoughts and a suggestion; to be taken with a grain of salt.

The new GObject standard implements a dynamic object system and runtime library on top of ANSI C. From what I can gather, this is an extension of and "factoring out" of the original GTK+ object/type system.

I've done a fair amount of GTK+ coding in C, and my current (+1 year) project has involved heavy use of object-like conventions applied to the C language. (I am developing a free music system as part of the GNU Project.) I like this stuff. I make no pretensions to caring whether or not a language is "purely" object-oriented, or even whether it is object-oriented at all.

What I do care about is convenience and clarity in programming. There are several big "costs" associated with using GTK+ and similar styles of implementing objects in C:

  • Constantly having to dereference yourself in your own objects: self->foo, self->bar. This alone can make a 10-15 line member function look extremely dense.
  • Long method names. There is just one big namespace, so the name of the class is prefixed to every single method name, every time it is called. Even worse, you have to explicitly call gtk_superclass_operation(foo) even if foo is more specialized. That is, you have to remember which classes the methods are originally declared in when calling, instead of just invoking them on the object.
  • Constant need for casting macros like GTK_ADJUSTMENT(foo), GTK_CONTAINER(foo) and the like. This is made worse by the fact that typically you only use them inside argument lists of calls (i.e. nesting gets ugly.) Unless you declare extra pointers with the right type and cast them earlier on, you have to do this or get compiler problems and risk type errors. Even that is extra lines of code using cast macros; there's no way for clarity to win on this one.

GTK+ and its object system are still easy to use and relatively straightforward. I think it is an excellent user-interface library. But if there is one real criticism to be made of GTK use, it is this: at times the sheer verbosity of the object system makes GTK client code compete head-on with some of the densest Java. In my own programs, at times I feel the benefits I get from using abstract data types and "interfaces" are almost completely canceled out by the amount of time I have to spend typing these macros and class names over and over again and making sure everything matches up.

(For several reasons, I cannot use Glade to speed this up for me.)

Languages are a touchy issue---I hope nobody will take this the wrong way. I make no criticisms of the design of anyone's library or object system. My concerns here are limited strictly to usability at the syntactic level, and are based entirely on my own experiences.

Here is my suggestion for improving the situation. Provide a runtime dynamic object library just as is planned with GObject, but also provide a minimal set of syntax extensions on top of C, so that all three problems mentioned above just disappear.

No time to design and build something new, you say? But someone has already built a small syntax extension to C that fits the above requirements exactly. What's more, the neccessary tools for using this set of extensions are already included with every copy of the GNU C Compiler. This extension is called Objective-C, and it is the native language of both GNU's GNUstep project and Apple Computer's new Cocoa framework for developing OSX applications. The language is currently moving toward standardization using C99 as a base.

The main changes are few and are quickly learned: interface and implementation keywords, as well as a somewhat odd (but very readable) syntax for message passing: [reciever message:arg]. There are other wrinkles, but overall it adds up to a set of extensions that complement C's abilities and provide conveniences, rather than (like C++ does) obsoleting large chunks of the language and providing numerous pitfalls.

I would like to propose that app developers for GNOME and GTK start investigating this. Everything that I have learned so far tells me that Objective-C is exactly the "small step" that I, and possibly others in the world of UNIX applications development, would like to take. I don't want to give up even one bit of C's power, but I'm not afraid of convenience and new tools. I like to use abstract data types and some interfaces, but I don't want a completely new language that throws out what I know. Only the parts you want to write in objc need be written that way---the language is completely compatible with C. There are already objc bindings for GTK+ and GNOME, but they do not appear to be actively maintained. Generating interest in the language and volunteering help (as I am doing) could change the situation and find a real answer to the agonized "C or C++" question for people interested in trying something new.

With reference to GObject, in the immediate future, I believe that we could explore two possibilities:

  • Improve the existing Objective-C bindings for GTK+ and GNOME and keep them up-to-date, so that people can begin developing more applications, and so that the barrier to experimentation for other developers is lower. I am willing to help with the bindings, so I have contacted the people involved.
  • Either that, or somehow make GNU Objective-C compatible with GObject (such that it would use GObject transparently as its runtime library.) I have no idea whether or not this is possible, but it would be great because Obj-C would then simply be "extra syntax support for GObject", and we'd have the happy side-effect of not having to make a new dialect ourselves.

Someone with better knowledge of GObject's design would have to comment on these ideas. Thank you, if you have read this far into my rant :-).


[link to more info on objective c]
[Apple's recent book on Objective-C]

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