Older blog entries for scjody (starting at number 10)

My Western Digital drive went from intermittantly bad to intermittantly good, so I replaced it with a venerable Quantum 850Mb that has been in almost continuous use for the past 5 years. Sadly, the software I use every day consumes more than 850Mb, and NFS mounting the drive in my server was just too slow, so I bought a new Maxtor 160Gb. This was a completely ridiculous purchase considering that I barely used the 10Gb capacity of the drive that died, but with things like CRPM and the CBDTPA looming, I thought I should get the largest drive I could afford while unrestricted drives are available. So that's in the server and the server's 60Gb drive is in my desktop. The kernel only sees 137Gb of the drive's capacity - apparently I need a new controller to see the entire 160Gb. Sigh.

Work has been interesting lately, with talk of a merger with "a medium sized Montreal computer services firm". I know the name of the firm but it hasn't been released publically. This has led to a good deal of Fear and Uncertainty at work.

I am currently trying to eliminate the need to restart X between users for our software. This is required to disconnect all X clients and generate a new MIT-MAGIC-COOKIE-1 key for the new user. Killing all X clients without restarting is easy, but generating a new key seems to be impossible. The documentation led me to believe that you could delete the key from the .Xauthority file, shared between client and server, then add a new one, but doing so does NOT remove it from the server's access list, which seems to only get read at startup. X11R6 defines a security extension that allows you to generate and remove keys. But generating a key does not add it to the X server's list, and you can't even do so manually, so the XSecurityGenerateAuthorization function seems nothing more than a cumbersome PRNG. Ah, but with the ..RemoveAuthorization function I could generate a few thousand keys before the Xserver starts, dole them out one at a time to users, and revoke old keys when the user logs out, right? Well yes, except that Revoke requires an auth_in identifier for the key that is only available from Generate, which generates keys I can't use! Finally, I thought of a kludge: X has an -audit option that prints a message when clients connect and disconnect. I could watch for "invalid" clients and kill them. Sadly, an exhausive search of the X documentation reveals no way to translate the number -audit prints into something actually useful, like a Window XID. If I am wrong about any of this, please let me know, but after a lot of experimentation it really looks that way.

My USB DAC project is progressing slowly. I need to etch a circuit board for the USB controller since it's surface mount. For practice, I have been trying to etch a 24Cxx EEPROM programmer, but many of the traces end up being too thin. For something as simple as the programmer, I can retouch them with a resist pen, but the USB controller board is too complex for that. Also, PCB is possibly the most user-surly application I have ever used. Very few commands work as documented, and many don't work at all. Several times, I have been reduced to randomly pressing function keys until I select the tool I want to use. If there was a suitable Free vector graphics program I would use that instead, but I haven't been able to find one.

On a sadder note, I haven't worked on the Polegame in so long that it should be declared legally dead. For now.

Apparently my diary page is one of the top Google hits for Radio Shack Hull Quebec. Interesting.

I am now fully annoyed at Western Digital. One of my hard drives has failed, which I thought would be covered by the 3 year warranty. But apparently they mean 3 years from manufacture date, which was in September, and won't replace it. So I registered www.nowarranty.com as a protest site..

zhaoway just mentioned Scheme, which is interesting to me because I'm learning it. I was writing a program for a local programming contest in Scheme, but didn't have time to complete it for the deadline. I would like to finish it this weekend, but maybe I'll do my taxes instead (they owe me money :).

At work, we're selling a 1.0 version of our product, now called HomeBase, which you probably saw on slashdot in January. We're currently extremely close to a 1.1 release. The pop machine at work is 65dB, 1m from the back and 61dB 1m from the front. Even in an office filled with computers, that's loud.

I made it to OCLUG in time for Rasmus's PHP presentation.

Work got a pop machine on Wednesday. So now instead of buying pop at the supermarket next door at 39 cents a can and giving it to us, they buy it from the vending company at 65 cents a can and sell it to us for 25 cents. You do the math :) The problem with the machine is that it is incredibly loud. It has two modes: "quiet" mode, where a fan sound is accompanied by a dull 60Hz "throbbing", and "jet airplane" mode where the above two sounds are combined with a whiny compressor and an even louder fan. I moved desks to get away from it. I can still hear it, but the sounds has dropped to an "ignorable" level.

In other work-related news, Real Networks and Macromedia are bastards. They both offer free as in beer plugins for download on their websites, but to distribute those with our software, they want vast sums of money. An NDA prevents me from disclosing the amounts requested, but it really reminds me of l0pht's demands for advance copies of BO2K. So I'd like to take this opportunity to plug the GPL Flash Library and pray for someone to reverse engineer Real's proprietary protocols.

I actually worked on Polegame on Sunday. At this rate I might still finish porting the game in less time than it took Rob to write it.

chakie: I have found that Tremclad rust paint will stick to pretty well anything. And if you paint the inside of plexiglass, it looks really cool, but not exactly non-glossy :)

I just realized that OCLUG is on right now, and I said I would go. Actual entry to follow later :)

A friend pointed out that I have not written here in almost a year. I decided to do something about that, but I thought it would be neat if I wrote a new entry on the one year anniversary of my previous entry :)

Let's see, I have a job working for OEone, a Linux startup in Hull, Quebec. Hull is adjacent to Ottawa where I live but has better tax breaks for startups. We are developing an "operating environment" for simplified computers mainly intended for home users and Internet access. I wish I had some screenshots I could link to; it's a really nice UI. I'm personally working on the backend infrastructure that supports all this UI, mainly the software updates mechanism. I also work on packaging (RPMs), Makefiles, distributions...

As for the project that I originally posted here about, I haven't found time to work on Polegame since my last entry here. If I ever find time to work on it again, I will likely switch it to SDL over ClanLib since it is a lot closer to the Windows graphics calls I am porting from. Or maybe not. It's unlikely I will find time to work on it soon.

My main problem is that I spend most of my time at work on coding or related activities, so it's generally the last thing I want to do when I get home. Which is too bad since there are many things I would like to work on. Apart from finishing Polegame, I'd like to put some time into getting a really good DVD player: I think that with enough work (and a good external DAC) I could create a system that rivals a high end THX decoder, all with free software. Even some little changes (like being to set a delay on sound going to the rear speakers) would go a long way toward improving things.

I'm sometimes a bit depressed at work, and I can't really figure out why. I mostly like what I'm working on, but I just don't get the feeling that I'm getting anywhere. Oh well, maybe it will pass.

Started work on my guides for the impatient today. First up: email encryption. The guides are intended to give a brief introduction to a topic, but cover everything you need to know to use it effectively. They are not intended "for dummies": if I don't explain a technical detail, it's because I don't think one needs to know it. Note that the PGP guide is a work in progress and is not intended for public consumption yet, but please let me know what you think.

Judas: If you don't hate CVS, you're not trying hard enough :) Subversion seems to be the most promising replacement, but it's not ready yet.

jmason: I agree that recentlog scales poorly. I think that ideally it should present entries in chronological order, starting from your last recentlog view or to an arbitrary date. I currently read diaries chronologically to avoid being confused by backreferences, but I'm wearing out my arrow keys :)

Just finished Zen and the Art of Motorcycle Maintainance. Recommended. Strongly.

Harbinger: Thursday's early morning bike ride ended on an unpleasant note as I rode up the Rideau Canal to discover that a cyclist had fallen into a drained section of the canal at Hartwell's Locks. Pretty serious fall, several meters.. I don't know if they're alright or not, there was a news team there but I haven't seen anything reported..

Unpleasantness: I have so far made a point of not talking about my job search here, but shortly after getting home I discovered a certain company I had interviewed with had decided not to offer me a job. Quite disappointing as I liked the company and position, even if it wasn't free software. But what annoys me the most is that they ignored all my phone messages and emails asking what was going on. During my second interview, they told me that a decision would probably be made within a few days, but after a week of waiting, I started calling them. It took a furthur week before I could get ahold of someone, who told me that they'd sent me a letter, which still hasn't arrived. All our other communications have been email or phone.. why send a letter in this day and age?

On a complete tangent, I've noticed that a significant number of people here live in Ottawa or are moving here: zeevon, Skud, cmacd, dyork.. Anyone else? Show of hands? :) I've only been here for about a month, but it seems nice.

I'm still trying to get a 2.4 kernel running properly. I need 2.4 so I can access my (USB-impaired) friend's Canon S100 (USB only) digital camera. Even 2.4.0-test9 doesn't work with gphoto2, so I tried test10-pre4 (which doesn't compile.. yes with 2.7.2.3) and then test10-pre3, which panics on boot. I don't have the right kind of cable here to connect a serial console, so it looks like a trip to Radio Shack tomorrow if I want to see where it's panicing.

I'm also going the other way, to see what kernel breaks support for my DE205 network card. I started with 2.3.1 and am patching, grepping for ewrk3, and compiling if the driver has changed. I've made it to 2.3.15 and so far it works. In 2.3.45, the driver was marked obsolete with no indication of what replaces it. In 2.3.44, the driver is present but won't compile.

18 Oct 2000 (updated 21 Oct 2000 at 03:38 UTC) »
Hacking: Finished the Gnapster modifications, but before I make a patch I want to see if I can avoid making Gnapster require libxmms. I would imagine this is possible, and would make my patch more likely to be accepted. On Polegame, I modified the timer code (fairly critical to gameflow) to run under Linux.. time.h allows much cleaner code than the Windows stuff I'm porting!

Annoyance: I finally compiled one of the 2.4.0 test kernels (test 9) to get USB support working for my friend's new toy.. Unfortunately my network card (DE205 / Etherworks 3) is no longer supported. Some digging reveals that back in 2.3.45, a bunch of new code was accepted into the driver (ewrk3.c), but at the same time, Config.in was changed so that you never see the option to compile it in. Manually editing .config (wow, just like the old days) allows me to get it in, but it doesn't compile. I have no idea what to do about this.

Movies: Have watched quite a few since last week.. Of these I highly recommend Rouge (red) (of course, see the beginning two movies of the trilogy first:) and Lola Rennt (Run Lola Run). I have been meaning to see Lola for a while, and as it was playing at a local independant theater, I went to see it. Unfortunately, on the way home, I lost my bike computer, so I put up a couple of signs to test peoples' honesty.

Life: My sister was in town last weekend, so we went out for various meals and activities. Unfortunately she sprained her ankle on Friday night so on Saturday we went to the hospital.. It's apparently much better now. Also went to Alia's birthday party on Saturday night.

9 Oct 2000 (updated 9 Oct 2000 at 14:37 UTC) »

Spent the afternoon playing with Gnapster, so that downloaded .mp3's would automatically queue in xmms. That much was fairly easy, but I decided to add an option to Preferences. This was more challenging, given that I've never done any gtk programming. The gtk part isn't working yet.. I'm going to wait until Kevin gets home and ask him what I'm doing wrong :)

Oh yeah that reminds me, it's Thanksgiving weekend in Canada.. and I have nowhere to go :( Not only that, but the guys I'm staying with have both gone home for the weekend. (Home for me is Newfoundland, the other side of the country..)

I finally did some polegame in the evening. Decided to try compiling Gameloop.cpp (which is where all the fun happens). I turned up a whole stack of problems, and am now working on them. One fun thing I discovered: there is another way for the game to end: If the direct draw init fails, DestroyWindow is called. Not sure how to port this. Probably just exit(1). I also commented out a lot of sound initialization code.. I'm going to comment out all sound for now. I'd rather just get the game working first.

After completing Gameloop.cpp, I moved on to Layers.cpp. There, I discovered a rather interesting piece of code:
#define dSCROLLACCELERATION = 1;
[...]
nScrollVelocity +=dSCROLLACCELERATION;

I had to stare at it for a while before I realized what was wrong, but now a larger question: why did it compile correctly under Visual C++?

I finished Layers.cpp and tried to compile the rest of the .cpp's in control/ . The only one left that won't compile is Timer.cpp, and I'll work on that tomorrow. It seems to do a couple of Windows-specific things.

8 Oct 2000 (updated 8 Oct 2000 at 04:40 UTC) »
Yesterday: No coding. Dad was in town on business so we went to MEC then went out for drinks, supper. We went to a pub with a huge selection of international beers, and I had a poisonously strong (~8%) porter followed by a more sedate stout.. Unfortunately, we didn't end up eating until about 21:00, by which time I was ready to eat the table, having not eaten since lunch at 12:30.

Today, spent some time on irc #debian, someone there asked how to get comments from an HTML page, so I wrote a Perl script (it sounded fun and I was bored). Unfortunately it took longer than I expected and he had left when I got it done. But it was a fun script to write.

I finally got down to Polegame late in the evening, and wrote the needed code to quit the game. *cheer* ai.cpp now compiles. So does everything else in the ai subdirectory after a few case and \ to / changes in the includes. Not sure if it will link though. I'm really starting to need Makefiles.. Must find someone with VC++ who can produce a set for me.

1 older entry...

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!