Older blog entries for chipx86 (starting at number 48)

GNUpdate

Lots of bug fixes today. I managed to speed up the database considerably and reduce the size at the same time by changing the data structure used to store lists of files. I went from a B+Tree to linked lists. There are still some things I can do to speed things up, and I will soon, after I get some projects done for clients tomorrow.

w6rhc.org

I'll soon be hosting the site for the local ham radio club. The current site is at http://www.w6rhc.org/. I won't be doing the layout or anything, just hosting the website and the e-mail. I wrote a nice little script, Makefile, and host files for managing multiple virtual domains in an easier manner. Now people I host can simply update their own host file, which has a simple format for creating e-mail addresses, and the Makefile will be called every half hour. I trust the people I'm hosting, so it's not a big deal, and I can specify who gets this feature and who doesn't.

Family

Uncle Gary is in town! He's not here often enough, imho. I wish my cousins came with him, but they're busy doing their own stuff. Unfortunately, he's only here until Monday though.

I'm falling asleep, so I'm wrapping this up before I completely lose my train of thought and fall asleep at the keyboard.

GNUpdate

Ahh, what a great feeling. I managed to get the GNUpdate database to work again. The corruption was caused by a combination of many different logic errors. Along the way, I also found many other bugs that I then fixed, so it worked out for the best. Tomorrow, I'm going to see if there are any memory leaks I can free up, and find ways to improve the insertion speed.

Yes, I know it's Valentines day to most people. Unfortunately, to me, it's just Thursday.

Honor Roll

I attended an Honor Roll for one of my brothers. I'm really proud of him. He's doing pretty well in school. We got to go to Asian Buffet beforehand. Mmmm... Sushi :) The only downside of the whole thing was returning to that evil school. I have bad memories of that place.

School

I'm approximately 10 chapters of Economics away from being finished with High School :) I'll be glad to be done with all of that. It should free up quite a bit of time, as I would then only have to concentrate on college and my projects and my business. I'll probably pick a weekend soon and get most of those chapters out of the way. Being out of high school means that I'll have to start paying for tuition and books at college, since the high school took care of that previously. Oh well, I think I'll manage.

GNUpdate

Many more bugs were fixed today. I haven't committed them yet, but I'll get around to it tomorrow after I fix a few more and get rid of the debug statements. Unfortunately, the database still doesn't work. I can't figure out where it's going wrong. Maybe I'll get it licked tomorrow, when I'm not so tired.

While I'm thinking about it... if any software developers, translators, or bored people are looking for some work to do, I'm in need of the following:

  1. Debian package/database module developers
  2. Libcomprex zip, tar, ar, etc. module developers
  3. Porters and packagers to port GNUpdate libs to distributions and OSes besides Red Hat Linux and Debian.
  4. Translators. I'd eventually like to get the website in other languages, and I'd also like to translate the text in gpkg and other apps/libs. If anybody is up for the task, let me know.
  5. Idea people. Sometimes I just need ideas to fly around the mailing lists.

If you're interested in helping out in any of the above for the GNUpdate project, please e-mail me. Also feel free to join the listservs.

Sorry if that sounded like spam in a way, but I know there are some smart people out there, hopefully with spare time to help out a project :)

And now, my favorite part of the day. Bed time.

10 Feb 2002 (updated 10 Feb 2002 at 10:08 UTC) »

GNUpdate

As I tried to sleep in bed last night, I suddenly realized something. I have a design problem in the database.

The B+Tree in the index files all point to offsets to hash tables in the main data file. The main data file also has a B+Tree pointing to every package hash table. The problem is when that hash table outgrows its block. Like all other blocks, it will just move into a new space, and update all the children blocks and the parent block so that they are pointing to the new block. But what about the offsets in the index files? This is a much more difficult issue.

I figure I have two possible solutions that I can think of:

  1. I can expand the block header. Currently, it contains 9 bytes worth of information: Block type, flags, data size, and parent offset. I could expand this, and make the header a variable width. After the block type, flags, and data size, it could contain multiple fields containing the offset of each block pointing to this block. It would also contain a number associated with the various index files. It would require one extra read per block, and would increase the size of each block, but would work. I'd like to avoid it, though, as I don't really want to have to update that many files and expand the block header on each file that much.

    Pros: Multiple blocks could point to any block, in any file, any number of times. Not sure how useful that'd be, though.

    Cons: Blocks in multiple files would need to be read in and updated any time one of these blocks moved.

  2. A new block could be added to the data file. It would be a package header block, and would just hold an offset to the hashtable. Since it would be a fixed size (16 bytes), it would never need to move, and offsets in other files would therefore not have to be changed.

    Pros: Other files would never have to be updated when a block moved. Moving a block requires only that this package header be updated.

    Cons: It requires extra seeking in a file, but no more than normal, and less than method number one.

Hmmm, as I typed those out, I'm starting to like method #2 a lot more. If anybody has any other solutions, please let me know ;) Otherwise, I'll implement this solution in a day or two, after I fix some other bugs and get all this homework out of the way.

GNUpdate

I've been doing Yet Another Restructure of the database. This one, however, is an API restructure. It will remove a lot of code duplication, and basically allow me to plug in support for other data structures in the database in the future. Since each block of data now has the same header, I can store stuff such as the flags, parent offset, and data size. With this method, I am able to read in the entire block of data at a time and just retrieve the values from a buffer in memory. Much more efficient :)

Google

I'm planning on entering Google's programming contest. I downloaded some of the sample data files, and the ripper sourcecode. It's pretty basic, and I wish they provided a way of searching those results with a Google interface. Having the code to that part as well would allow us to be more creative, I would think. Still trying to think of some good uses... I have a few, but I'm not sure which is doable, and which is actually worth spending time on.

QuickBooks

A short while ago, somebody read a post of mine involving QuickBooks. He contacted me, and I did some work for him. Extra money sure helps :) Anyhow, he contacted me again, and it seems I'll be doing a bit more work.

My Quantum app is coming along nicely. It looks very professional, and now has support for routes management and invoicing. I haven't used Visual Basic for anything real in years, so it's very fun to play with it with all the newer improvements. And yes, I'm using Visual Basic. It's not a bad tool, and it is sometimes the right tool for the job.

Me

School has been a bit better, but I had to drop my Assembly class... Which is a real shame, because I wanted to take that class. I was just missing too much by not going to lecture every day. I do feel less stressed without it, though. The Japanese class is still tough, and the English class generates a lot of homework every night, but I'll make it.

I think I'll go play ArmageTron for awhile before I get to work on the Japanese homework due tomorrow. It's too bad it doesn't run on Linux without crashes, on this computer. In Windows, I get about 60 fps, but in Linux I'm getting 120-150 fps. I kind of figure this has to be a bug of some kind, but it does feel faster than it did in Windows... Maybe I'll play around with it a bit more and see if I can get it working correctly. I suspect it's just some library problems.

Life, the Universe, and Everything

Why is it that nobody listens to me? I tell my brothers for months not to put disks into their computers that have been in this specific set of computers. They do it anyway. Well, one of their computers lost everything today. Surprise, surprise. I told him that I'm not helping to fix it, so he has to do it himself. They were warned.

It upsets me enough that they even have computers. I've bought almost everything I own. Sure I've had some things bought for me for Christmas or my birthday I enjoy, like a DVD player, but considering that two of my brothers have $600 computers that were bought just because they needed/wanted one for school and games really bugs me. The other one got a computer from my grandparents, because he does well in school. That still bugs me too, but not as much, since they have given me some big things too (not that big, but that's ok).

I'm not saying I wish my parents would give me $600 things out of the blue. Well, that wouldn't hurt, but I'm not greedy. I just wish my brothers wouldn't get them. It's not like they did some big thing to deserve them, either.

Oh, and my teacher never faxed over the assignment that is due tomorrow, so I'm pretty much screwed. I also have a ton to do for other classes, but at the moment, I'm not sure if I'm even going to bother.

Life's a bitch, then you die.

GNUpdate

Got the database size down a bit more. Now my DB is at 19MB. It'll go back up as I add more (I think I said that already though). Not sure how much work I'll be doing on it in the next week...

Me

Ever feel like your life is a big event, a lot of people are watching, and they're voting on the best way to mess with you? I was sick on Wednesday, so I didn't attend my English class. I get a call from the teacher the next morning saying that I need to contact some student in my class to get the handouts. Sure, no problem. I'll just get my PDA and.. oh no! My PDA chose that moment to die on me!

So of course I no longer have any of the phone numbers for students in my class. I call up the teacher and leave a message.. Nothing. I call again the next day... Nothing. I finally got a call back the following day (today), I got the name of the book containing the chapter I had to read (which is what the handouts contained). Unfortunately, I've been unable to locate a single copy of it anywhere that I can get before Monday.

Hopefully my teacher will get my latest message on her answering machine and fax over a copy.. If not, well, screw it. I tried, and it seems I'm having unnecessarily difficult problems in every class this semester. It's getting beyond frustrating. I'm burning out badly... I need a very long vacation from school, but it's not even the third week yet. *sigh*

GNUpdate

I rewrote some of the hashtable code today. I wish I had used hashtables for this part of the database from the beginning. I didn't use them because of laziness. However, since implementing them (and rewriting them today), my database size has dropped from 70MB to 22MB.

I'm working on further optimizations, and then I'll do some restructuring of the blocks API. After that, I just need to add the rest of the data to the database, and add the rest of the index files. I can't wait until this is done :)

PDA

My Visor Edge had a really bad problem today, like every other PDA I've ever owned. It made a really high-pitched noise, which wouldn't go away until I did a reset. I couldn't even turn the device on! Doing a reset stopped the noise, but erased a lot of important data. I'm VERY pissed. Handspring is great at replacing these, but if you can't rely on a PDA, what's the point? I'm going to get my $400 back one way or another. If I have to pester the company until the day they shut down, I will. I can't afford to just lose $400.

This week is as bad as last week.. ugh..

Me

Just when I thought I'd have a good day for a change (the last week has been a nightmare), I get sick. I've been sick in bed for 10 hours today. My plans had been to go do some work at a local donut shop, work on GNUpdate, work on Quantum, and do some work on a website for a guy. Unfortunately, none of that ended up happening.

Now I've got school tomorrow, but I'm not sure if I'll even be able to end up going. If I do go, I'll probably end up throwing up in class, and I haven't been able to do any of my homework. If I don't go, I'll be a day behind. However, I'll be able to get my homework done, and I can always call somebody up in class. I'll probably stay home... Maybe I can recover enough to be able to actually do something, or eat something.

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