Older blog entries for jmg (starting at number 74)

Code

Been a while since I've written in my diary. Guess I just haven't had much to write about.

Last week I got a bit bored and decided to improve upon ffsrecov. As of yesterday, I released a new version of ffsrecov, version 0.5. The source is freely available. I originally wrote it for FreeBSD, but it will probably compile under other *BSD's w/o problems. I also recently got it compiled under Solaris, but I haven't tested it with any file systems.

The new version adds a lot of new support, like support for >2gig file systems (previously I mmap'ed the FS), using raw devices to extract files (if you have read permissions to the root raw device, you can grab the password database off it), among other things. For a more detailed list of changes/improvements, check out the FreeBSD port commit message which I detailed most of the improvements.

Over the weekend I started working on my B-Tree code, hoping to provide some more performance improvements to it. My last generation of B-Tree code would spend about 50% of it's time moving keys and nodes around as it inserted and deleted keys. It is also very apparent from the benchmarks of my B-Tree code, that main memory should be treated as secondary storage. Due to cache size granularity, you can find the proper node size where B-Tree code performs best. Increase or decrease the node size from this, and you won't get optimal performance.

Hmm, I think I should write a paper on B-Trees with all the work that I've been doing with them.

Life

Saturday was dwhite's birthday. So we went up to SF with a few other people to celebrate it. I was late getting notice about the movie because I went for lunch and didn't bring my cell because it needed charging. I did manage to get over to his place in Mountain View from San Jose (Burbank district) in 11 minutes. We headed up to Metreon to see the Mexican, and then after that headed over to Cha Cha Cha's in the Mission. Always expect a couple hour wait trying to get seated there. Had some good food and then headed down the street to Doc's Clock. I ended up being the designated driver for Doug, and we didn't get back to his place till 4am.

Long night, but the next morning I did get to see Clockwork Orange. That movie was quite interesting. I really didn't feel like I was watching an old 1971 film. Maybe it was because they remastered it for DVD and it looked nice and new. Definately want to read the book now that I've seen the movie. I'm sure the book will be much more interesting and have a lot more philosophical statements to make. It'll be a while, as the book I'm reading now I pretty long, and I'm only on page 200 of about 600 right now.

    Whee!

Boy, that was an entertaining procedure. I recently upgraded my BIOS on an old K6/225 (FIC PA-2007), but after the upgrade, the machine would just sit there and beep at me. So I did some research trying to find free flash EEPROM burners or something else that I could use to flash a new bios. Then it dawned on me. I have other FICA motherboards, so why don't I boot up another machine, pull that BIOS chip, put in the broken one and flash that one. Yeh, it was a crazy idea, esspecially considering that I don't have another PA-2007 motherboard. So I booted up my PA-2005, pulled the old bios, and put in the broken bios for the PA-2007. Now the flash program was complaining that I'm flashing it with an old bios. So, I decided to upgrade to the latest release code for the BIOS (1.13CD13 instead of 1.09CD12) and then the flash program took that, and flashed the bios. Put the new bios in the other motherboard, and walla! The machine boots now!

I'm glad that's over now. So, if you need to flash a new bios, just use another machihne if you have too. Though who knows what could of happened to the machine.

I'm finally in the last stages in the battle against Strep throat. Damn, that was hard. I haven't felt this bad in a long time. Massive stuffed sinuses, swollen throat making it hard to swallow. Because of the stuffed head, I had to breath through the mouth which isn't fun, but I managed. One I started taking the meds Sunday at 7pm, It wasn't till thursday that I really started feeling better, and today, as long as I stay on Ibuprofen and Sudafed I'm pretty damn close to 100%, breathing through my nose, being able to swallow whatever, etc. Ahh, nothing to drive you crazy than like being locked away with yourself for company for a week. Sure I did make it on on Sunday to see the doctors. Monday did some back grocery shopping. Relased you hadn't done to well and had to go back again both on Thursday and Friday. Of course at least I claim I wasn't thinking clearly as I was sick. Heheh.

zarq:
Check out Richard Steven's APUE (Advanced Programming in the Unix Environment) which contains documentation on this pretty deciently. He has it written in a generic enough matter that you it covers all the major platforms and stuff. If you're doing Unix programming, you must have a copy of this book.

I'm having a problem of mucas being discharged down my throat w/o realizing it. Made me want to over load the discharge method and raise an event to notify me to blow my nose. :)

That's right, I was going to grab some food before I headed off back to bed! :)

Well, just got back from the Hospital. It's offical, I have Strep throat. Good thing I caught it now and before it advanced to rhematic fever which just wouldn't be anymore fun. So, starting on the antibotics, and of course not going to work tomorrow. Should still be contagious for the next 24 hours. Gotta hole up at home, and maybe watch a few more movies while I'm here, assuming I have the strength. Hey and maybe even read more of my physics text book! :)

Better go get some food and take the first of the antibotics.

P.S. I did write a more expansive diary entery a few hours ago, but this one will supercede it in the recient diary entires list.

I finished reading Ray Bradbury's Fahrenheit 451 (ISBN: 0345342968) on Thursday I believe it was. Definately interesting. I had started this book shortly before Christmas, but I had misplaced it. So that's why I read it so quickly. That and it's a short book. It's funny, in the afterword (or coda) he says: "Only six weeks ago, I discovered that, over the years, some cubby-hole editors at Ballantine Books, fearful of contaminating the young, had, bit by bit, censored some 75 separate sections from the novel." Funny that a novel about sensorship was sensored itself. Was thinking I wasn't going to be able to include the MARC record, but here you go:

001 4768383
003 CU-UC
005 20010211081127.3
008 870928c19871953nyu            00 0 eng d
020    $a 0345342968
035    $9 4768383
040    $a VVX $c VVX $d CLU
100 1  $a Bradbury, Ray, $d 1920-
245 10 $a Fahrenheit 451 : $b Fahrenheit 451 -- the temperature at which bookpap
er catches fire, and burns ... / $c Ray Bradbury.
260    $a New York : $b Ballantine Books, $c 1987, c1953.
300    $a 179 p. ; $c 18 cm.
500    $a "A Del Rey book."
500    $a With an Author's afterword.
546    $a English

The past two days have not been fun. I've come down with something and finally made an appointment for today to have it looked at. Haven't been able to get any sleep the past two nights as my nose is so runny that I can't find a decient possition to sleep in. It was so bad Saturday morning that I was thinking of going to the Emergancy room, but found that some IBprofin reduced the swelling in the back of my throat making it more managable. Sometimes it's nice being sick, but when you can't sleep, being sick just sucks.

Oh, does anyone have a flashrom burning in the bay area? I reciently tried to upgrade my FIC PA-2007 motherboard with a beta bios, and now the machine doesn't even like a ISA VGA card it in. You turn it one, and it just beeps at you. :( Need to burn the old BIOS back into the chip. (or test with another bios that is not beta).

alisdair and ajv:
In the day-n-age of dynamic web content, why pregenerate them? I wrote a cgi script a while back that will generate thumbnails (and downsized versions) of my images when requested. I of course store the resulting image in a database so I don't have to regenerate them every time. Plus it autogenerates indexes for the images too. ls *.jpg > somename.indx and I have an index. As for that, why not use jpeg + pnmutils? djpeg | pnmscale -xysize 175 175 | cjpeg -optimize? That's what Unix was designed for, putting commands together to build a bigger project.

Hmmm, realized that I'm really hungry right now. Off to find some food.

RyanMuldoon:
I agree filesystem versioning is nice, but take a look at VMS, it had this. There are a lot of cavets with this, like the fact that you have to delete old versions to free up disk space, etc. and how many times have you saved a file just because of habit? If it was an optional on, then it might be useful. Though with NetApp snapshots and snapshots supported under SoftUpdates, you aren't to far from supporting file system versioning.

A friend of mine mentioned that you might want to check out BeOS for filesystem metadata. Sounds like you can have "virtual folders" that contain queries of the meta-data. So you can have a folder of all of your mp3's or other such things. I haven't ever used BeOS myself, but probably something to checkout.

Last night I finished another book ISBN 0062585274. The MARC record:

005 19950629160347.0
035    $a (FCLAZ)AJC5084FS00003/01/199506/29/199523409Bpam a D0FS
008 940314s1994    cau           000 1 eng
010    $a    94011765
020    $a 0062585274 : $c $13.00 ($18.00 Can.)
035    $a (Source)ONIFS193-     7
035    $a (OCoLC)30075186
040    $a DLC $c DLC
049    $a FDAA ksp
050 00 $a PS3552.E7942 $b R56 1994
082 00 $a 813/.54 $2 20
100 1  $a Besher, Alexander.
245 10 $a Rim : $b a novel of virtual reality / $c Alexander Besher.
260    $a ÑSan Franciscoã : $b HarperCollins West, $c c1994.
300    $a x, 357 p. ; $c 18 cm.
650  0 $a Imaginary wars and battles $x Fiction.
650  0 $a Virtual reality $x Fiction.
655  7 $a Science fiction.
655  7 $a War stories.

Hmmm, that's interesting. They consider it a "War stories." book. There wasn't any true battles in this book, it would be more of a spy novel than anything. Oh well. This book is really a bit confusing and ends very abruptly. You get to like 20 pages left in the book and feel there should be at least another 75 or so, but he ends up finishing the book like he was on a dead line or something. Heck, the book ended so quickly that I couldn't even really tell you how it ended (except the good guys won of course). I will be going back to read the end of it sometime.

RyanMuldoon:
You might want to take a look at the extend attributes work that is ongoing in <project>FreeBSD</project>. I'm not the best person to contact about it, but rwatson will know most about this (at least I'm pretty sure it's rwatson). They plan on using extended attributes to store info like ACL's, plus possibly mime-type info. Shouldn't be hard to extend that to HTTP headers to be sent along with file too. No more anoying .meta files.

Well, my Python dbwrap project I started a few days ago is coming along nicely. I have it pretty functional. It wraps a DB-API 2.0 compliant driver into a dictionary like structure. So, it might look like: b[(pgdb, ':operations']['users'][('uid', 'jmg')]['registered'] = 'now' which will then set the column registered to now (assuming DateTime field where uid = 'jmg' in the table users. This makes it a bit easier to use a DB in your app instead of having to constantly write your own select/update/insert queries. I probably should reduce the number of times I do select queries, but I want to make sure I don't skip anything.

I am thinking about making the getdict function return a immutable dictionary (raise an error on __setitem__) so you don't assume that when you set this dictionary you can set it. Now that I think about it, why do I even need to support the getdict function? :) Wish I could release a binary only copy (yeh, I know about py[co] files) so people can't see how bad the code looks. I've also only tested with with pgdb (PyGreSQL) which interfaces to PostgreSQL v6.5. I might have issues with other db apis. I also don't test which parameter passing the API supports, but that's because the parameter passing the pgdb supports is kinda broken (or maybe it's because it's more designed for Python v2.0).

Oh well, enough for now. How anoying, there isn't a project tag.

Religion: Well, I'm not an atheist, but atheists should have an issue with Advogato. There is no way to say someone doesn't exist. The default certification of an observer means that they exist, therefore everyone on Advogato believes that God and Satan exist because everyone at least has them certified as observer. Oh well. :)

mwh:
Thanks for the email, but there definately needs to be more expansion of the docs on PyTypeObject declarations. Also, listobject.c doesn't show where/how/when PyList_New gets called. Right now I'm assuming that I create a module with a routine that does the instantiation of the type, which would make sense, but as you have found out, the docs in this area (at least the offical docs) are non-existant. Glad that you are going to work on the docs, and if you'd like a newbie to review them, send 'em my way! :)

Still need to decide what I want to use to develope a dynamic web site I want to create. Debating if I want to go with fly (which I happen to know the people who developed it, and I hold the mime-type for them), or create my own in python. Probably should go and see about installing Postgres (oh, that's right, I already have it installed, just not doing anything with it) and playing around with it. fly should be really fast as it was written in lex/yacc/C. The fun of db work.

mwh:
From my experiences, there is nothing more anoying than a bug report that says something is broken (when it's obvious, esspecially documentation) w/o any help. When the documentation is in as much disarray as Defining New Object Types there really isn't that much I can do about it. Either a bug report should already be there, or the group that is working on the documentation should already know about it. It has improved, but still, isn't usable unless you already know what's going on. As for reading the source code, that's what I do. But there always a point when the need/want to do a project isn't great enough to go through reading all the source code looking for good examples of what you want to do.

Also, if PyClass_* is internal, why is it publicly defined? And if it's private, then how are you suppose to create an object to pass back for maintaining a connection such as the state for a Z39.50 connection w/o using a class? Defining a new type seems a bit extreme, and defining a whole module wouldn't work as you don't instanciate that for each connection. So how else am I suppose to do that w/o using PyClass_*? Again, it really sounds like I should just do a blind wrapper around the functions and do all the glue code in Python. It'll be easier, and don't have to worry about as many coding bugs.

As for bitching to Advogato, don't forget that this is a diary entry. It's what happens to be on my mind when I'm writing the diary, and be frustrating for me.

29 Jan 2001 (updated 29 Jan 2001 at 07:04 UTC) »

Well, just started to try and write a Z39.50 Python module and forgot how poor some of Python's documentation is. It completely doesn't document any of the PyClass calls, and the documentation for 2.0 is exactly the same in parts. Guess no one felt it worth the time to spend even five minutes improving the Python/C API documentation. Now I remeber why it's easier to write most of the code in Python, and only keep a small C kernel as an interface to the calls, instead of wasting your time making the module perform deciently.

Now, do I spend the time to make this module or not?

Well, I finally finished reading Dante Alighieri's Inferno (ISBN: 0691018960) today. Personally I preferred Larry Niven/Jerry Pournelle's (ISBN: 0671670557) version of it. It pretty much contains all that is in Dante's version without destroying it too much, and of course it's a tad bit easier to read. Though I would like to be able to read the original Italian text, but I don't think I'll be learning Italian anytime soon to do it.

Started reading Rim by Alexander Besher (ISBN: 0062585274) and so for it looks like a good book. It's kinda hard to understand exactly if you're in a virtual world or the real one. They also throw out strange terms that you have no way of knowing what exactly they are. Hope that it gets explained soon, but so for I'm less than impressed.

Guess I should head off to the local bar and grab a beer. It really does feel about that time.

Bloody hell, repeate after me, read the recent diary entries before posting your entry.

voltron:
Do they happen to web cast their station? Sounds not to different from KWVA which is University of Oregon's college radio station.

AlanShutko:
Yeh, I was thinking that it wouldn't be too hard to partse the web page that they have at LOC and if I had to imput them, that's what I'd do. Now I haven't taken a look at the DTD's that are suppose to be now used for XML version of MARC and I would think that they have most of that defined in the DTD's, but I'm not that familar with XML really.

technik: Check out PicoBSD based on FreeBSD. I know that they have done various work on making a small system bootable. Not sure if they've relaxed the requirements now that you have do large images on CD's, but I do remeber them talking about doing something similar.

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