Once you have signed a contract, all of the vital decisions are theirs. They hold all the trump cards. The myth of course, is that if they violate the terms of the contract you can sue them. It is a myth because it takes a lot of money to sue an individual successfully and a ton of money to sue a company successfully and that brings me to the second hard truth about companies. No company is ever going to pay you enough money to sue them successfully.
Dave Sim, Address to Pro Con '93.
It's important to read that. Never mind if you aren't in the Comics Industry; what he says applies to any intellectual property (IP) you may create.
But I would feel a lot better about free trade if we had decent schools, and a LOT better if we had schools WORTH $8,000 per pupil per year. Give me $800,000 and 100 randomly selected kids, and I guarantee you I'd give them a better education than they are getting from the school system almost anywhere.
—Jerry Pournelle, on the state of the Educational System.
NOTE: All monetary quotes are in U. S. Dollars.
What could be done with $800,000 per year for 100 students? I've given it some thought and I do believe it can be done and still pay teachers a decent salary. It's a different model from what is currently done and I'm not sure if anyone with a vested interest in the current system will go for it (read: mostly administrators) but it might be possible.
The current problem is overcrowding—with up to 40 students per class, it is difficult to teach, much less maintain control, over the students. The best ratio, 1-to-1, is very cost prohibited, but a decent compromise, twenty students per teacher, is doable and isn't that cost prohibited.
My proposed system breaks down to each student paying $1,000 per year per class. Class size is restructed to at most 20 students. That gives at most $20,000 per class per year to teach. Give $15,000 to the teacher (I know, $15,000/year isn't enough to live on, just give me a moment) leaving $5,000 per class left over for books, materials, maintenance of the facilities (room).
Note, that is per class, which is one hour per day, five days a week for 36 weeks (the yearly schedule I grew up under). For every class a teacher teaches, she receives an additional $15,000/year, with an upper limit of 3 classes per year (for a yearly salary of $45,000/year, which I know a lot of teachers would love to recieve).
With a student taking an average of say, 5 classes per year for $5,000/year (less than the $8,000 now) that means that $3,750 goes for teachers' salaries, leaving $1,250 (per average student) to cover other costs. If a school has 1,000 students, that still leaves (remember, the teachers are already paid) $1,250,000 per year per school to run it.
With this payscale, each teacher will only be responsible for at most 60 students per year, they teach for three hours a day, leaving another five set aside for grading, preparing lessons and additional instruction for those students that may need it.
Also, make it a bit easier for those that want to teach to teach and even if they can only teach one class, they still make $15,000/year, in addition to any other job they may have.
There are still problems with the idea, but none that already don't exist.
I'm still playing around with my silly digital camera, trying to get it focused properly. The problem with the camera is that it's one of these fixed-focus cameras that has gone out of focus.
Well, I shouldn't say it's a fixed-focus—more like a semi-fixed focus camera that you have to tear apart to focus.
The assembly itself consists of two cylinders, one fixed to the CCD mount, the other one slides inside the first. There's a spring/screw combination used to move the inner cylinder (which contains the lenses) relative to the outer cylinder. There is no access to this screw from outside the unit—you have to open the unit up (six small machine screws) to get access to it.
The problem is that the focus assembly is only on one side of the cylinder, not both. And to focus the unit properly you need to have the inner cylinder as far in as possible. There's a lip around the inner cylinder that keeps it from going too far in and therein lies the problem.
Tighten the focus screw down too tight, and the inner cylinder tilts. With only one side being forced down, the other side is still free and because of the lip preventing the inner cylinder from slipping all the way in the outer cylinder, you get this tilt as you tighten the focus screw down.
Did I mention you need the focus screw pretty tight?
So the end result is that part of the picture is out of focus and it's real annoying. Adjust the inner cylinder so that the tilt is gone, and the image is out of focus.
I suppose half is better than none. It's still annoying and I'm still playing around with it. I mean, the camera itself is fine and I'd hate to chuck what was a US$400 camera just because of a cheap plastic assembly.
Unless you are 18 or older, or are offended by images of nude women, I'm afraid you'll just have to skip this amusing ad parody of the Palm Pilot. I can't find an image of the original ads so I have no idea just how risque they were. Most of the links I tried following say the images are in the current issue of Wired but there is no indication of what the current issue of Wired was at the time (indications are April of '99 but hold me to that). I'll resist the urge to rant about linkrot.
So I come across the The Jenni Show, which uses RealVideo as one of the formats. It's intriging enough for me to take the effort to install RealVideo on my system. Or rather my roommate's system, as he has a soundcard and I don't.
So I go to Real Video and oh, there's the latest version, only $29.95. Not sure if I'll actually get $29.95 worth out of the program, but the point is moot: they only cater to Windows. Okay, a token gesture to the Mac, but Windows. Window Windows Windows. Marsha Marsha Marsha!
I do find an older version (version 5! Current is 7. What happened to six?), download it and try it out.
Mind you, this was trying to load up the supplied welcome.rm file that came with the distribution! Grr. But I suppose that's to be expected. But why the non-support of Linux? It's not like they never supported it before, so why the lack of it now? Could it be the current version of RealVideo isn't all that portable? Or could it be something else?
As you probably can tell, I'm not using Windows, nor a Mac. What I am using is Linux with an older window manager. The latest ones are just too … cluttered … for my tastes. Twm is too plain for my tates, while 9wm is way to Spartan for my taste.
I was given a sound card, but I can't install it. Long story dealing with the nasty IBM PC legacy that all current PCs still live with, and what I was given was a multifunction card were the functions I don't need can't be disabled, and it would be difficult to find enough free IRQs on my system.
So the Slashdot crowd are raning about this new operating system called V2 OS. Since one of my many little hobbies is collecting and critiquing homebrew/alternative operating systems, I decided to give this one a try.
It seems that you can only get a binary so I can't comment on the code quality (all 80x86 Assembly code of course) but I did try to boot it. I have a spare 486 that normally runs a network monitor I wrote (one of these days I'll get around to releasing it) but hey, it's a PC and it'll spare me the trouble of rebooting my main system.
V2-OS ...................OK System16 code is now in control. ERROR: Failed to retieve [sic] information on the bootdisk... Creating PartitionList. ERROR: Failed to retieve [sic] information on the bootdisk...
[sic]'s are mine
Can't quite understand why it failed. Linux boots fine from floppy on this system. The only unusual thing about the system (other than it being a Compaq 486) is the lack of a harddrive (I actually use a modified tomsrtbt distribution—it's a nice single disk Linux distribution that makes a very good rescue disk for PCs). Everything else on the system is pretty much vanilla PC.
The last “Fastest Proprietary 80x86 Based Operating System” they featured at least came with source code. A good thing because it's long gone. All the links I have to it are no longer valid. I wonder how long this one will last?
For those of you who are interested in rolling your own operating system, and if you insist on writing it all in Assembly on your typical IBM PCompatible (and the most popular type is your 32-bit multitasking operating system) please, please, do yourself a favor—avoid using CLI and STI as locking primitives. It fails miserably on SMP-based machines (which I predict will become a commoditized item, much like older 486 and early Pentium machines are now, in the next five years).
Better to use the following:
lock_for_here db 0 ; code code code mov al,1 .spin xchg al,[lock_for_here] cmp al,0 jne .spin ; critical code here ... mov byte ptr [lock_for_here],0
This actually has several advantages over using CLI and STI:
- XCHG locks the bus so that the exchange is atomic with respect to other CPUs on the bus.
- XCHG is not a protected mode instruction, unlike CLI and STI—therefore the sequence can even be used in non-priviledged code. While this may seem silly when you're writing a kernel, not every CPU has a duo user/superuser model. The 80x86 line does support four different priviledged modes.
- Interrupts can still be serviced.
- It doesn't hurt that much on a single-CPU system if it's programmed properly. Sure, the worst case is a deadlocked system, but you're careful to avoid deadlocks, right?
Better yet, wrap them up into functions. That case, if you do need to change how to lock critical sections (say if CLI/STI does prove faster for a single CPU system) you can easily change it in one location.
And it makes it just that much easier to port.
The politics are so fierce precisely because the stakes are so low.
—Dr. Arnold J. Mandell
As I'm walking out to my car I notice that it seems to be farther away than normal. Sure enough, taped to the driver's side window is the following note:
Next time you park here, your car will be towed
At least it wasn't one of those self-ahesive stickers the Condo Commandos use around here. I pull the note off and go to pop the trunk when I hear someone yelling at me.
“Is that your car?” It's coming from in front of my car, up somewhere. Sure enough, there's someone from a second floor porch yelling at me. “That's my spot you parked in!”
“I'm sorry!” I yell back.
“You're not allowed to park there. You don't park in handicapped spots, right?”
“I'm sorry! I must have parked in the wrong spot last night,” I said. I hop over to the next spot. “This is my spot. I must have parked here by mistake,” I say, putting the package I was carrying in the trunk and shutting it. The man on the porch was glaring at me. Even at 50' away, I could tell.
There was a second note under the wiper of my car as well. Said the same thing. Gotta love those Condo Commandos.
Now the package I put in the trunk is a new harddrive I picked up from CompUSA yesturday. Tower (the webserver for conman.org) is running a bit low in disk space so I figured I'd put in a new drive to alleviate the problem.
Now tower is a 486SX-33MHz NCR IBM PCompatible that was given to me by a friend (otherwise it would be tossed into the garbage). Not wanting to turn down an otherwise usable machine I took it, increased the memory to a whopping 20M and installed Linux on the just barely 200M harddrive.
Yup. I'm serving up the primary web server, an online bible and friend's site on a machine that most people would otherwise toss into the garbage. It's adequite enough for what I do with it (and for four years another friend ran his company, a web hosting company, off a 486 (okay, so it was twice as fast as my 486, but it worked).
So I went to CompUSA yesturday to find the cheapest harddrive I could find. I don't need that much space.
The cheapest drive I could find (okay, it wasn't the cheapest, but it was the best price per gig) was a huge 17G harddrive for $150.
Sure, I could have probably scrounged around for a drive, but it's cheap enough to get a new one.
But it feels odd installing a 17G drive in a 486. My home system only (only!) has a 3G drive.
Why not put the 17G in my home system, and move the 3G to the webserver? Too much hassle. I had quite a bit of fun installing the 17G drive in the 486. The supplied drive cable wasn't long enough (the two drives sit side by side) but fortunately my host company provided a “just long enough” cable for me to use.
Then it was a matter of getting Linux to recognize the second drive. Enabled it in the BIOS, then had to reconfigure some settings through the BIOS (and here I'm glad the NCR had a BIOS program built in. The Compaq 486 I have here doesn't) to get Linux to see more than 500M (the CMOS had some default values which I upped using the settings from another Linux system with a 17G drive installed).
My only concern with such a huge drive is if the machine goes down uncleanly. My Linux system takes forever to fsck a 3G drive, and it's an AMD 586-166MHz system. Lord only knows how long it'll take a 33MHz 486 to fsck a 17G harddrive. Shudder.
UPDATE: I ran “time mount /dev/hdb1 /mnt” (under Unix, this will time how long a command takes to run) and found that it took 7.08 seconds in the kernel to mount the 17G harddrive under Linux 2.0.36 running on a 486SX-33MHz. Ouch.
I also ran “time fsck -f -y /dev/hdb1” (under Unix, this will check the consistency of the filesystem and make corrections. The -f option forces the program to run, even if the filesystem isn't corrupted) and it took almost 15 minutes to run. That on a clean filesystem. I'd hate to think what it would do on a corrupted system.
I've been following the various Linux IPOs and today I see that VA Linux Systems had their IPO today.. Briefly, it IPOed (can you verb a TLA? Can you verb the word “verb?” Whatever … ) at US$30 and opened at US$299. Inbloodysane.
Andover.Net wasn't nearly as inbloodysane.
Guess what? That's bunk. They haven't infected me. I'm merely using a library function in the way that library functions are meant to be used: they're an API, and you link to them. It is of no consequence whether it's statically linked at link/load-time, dynamically linked at start-up, or accessed at run-time during execution via any one of myriad forms of RPC. It's API only, not material inclusion. APIs aren't viral.
–Tom Christiansen, from an Ask Slashdot forum.
I'm not sure how I come down on this issue. The basic one seems to be that some people feel the GNU GPL is too viral, too restrictive of an Open Source license. Others feel that the Artistic License is too liberal, allowing one to appropriate code and resell it in a proprietary product. And who knows how these things interact.
I had a similar problem when I released my first Open Source package, mod_litbook, which is an Apache module, with its own license. I wrote to the FSF asking about this, but never did hear back from them, because I did want to release it under the GPL, but didn't know how it would work with the Apache License. I went ahead anyway.
Basically, I would like for a license to read (my own comments [appear as such]):
I, Sean Conner, own the copyright to this program [assuming I wrote the program of course] but you are free to fold, spindle or mutilate this program for your own use.
You are free to redistribute your changes as long as your changes also fall under this license. [I don't want to restrict anyone from using the code, improving upon it, and giving back. Or even using for their own uses]
If you wish to incorporate this program or parts thereof into a commercial software package, let's talk. I want a piece of the action. [but let's face it—if you are going to make money off my code, I want my fair share. I gotta eat too you know]
I suppose you could say I want my cake and eat it too, but at heart, the idea that someone can come along, use what I created to make obscene amounts of money of which I don't get anything, does make me pause.
Since I seem to be quoting quite a bit from the Slashdot discussion, just read it.
I'm going to have to work on more details of this if I'm going to to this. The internal anchor names will have to change. Since I'm currently using SSI for this, I just realized it's not going to work. Also, while I have an idea for how I want to store the data, the main problem is one of creating the daily update page.
I like the format for weblogs where a few days worth of entries exist on the main page, but the storing of each day's entry is leading me more towards a journal like layout. If I didn't want to have several days worth of entries on the main page, then there wouldn't be a problem.
Also, doing this weblog/journal experiment is making me wish there was a better way of doing styles than there is currently. It would be nice if all browsers (including Lynx) supported CSS, or XML and XCSS or whatever it's called. I suppose that's what PHP is for. And in that limited case, PHP might be a good compromise. But I still don't like PHP all that much. Can't say why, other than a case of Not Invented Here Syndrome.
Besides, I feel that the work I did on the Electric King James is relavent here—namely a better way of referencing content.
A few years ago I identified why I dislike WEB, and it came down to it failed my “1 am scenario.” Namely, that I'm a maintenance programmer, it's 1 am and I have this bug I have to fix yesturday and I'm staring at this huge mess of a file. It came down to a mixing of What (an interface or data description), why (the documentation) and how (the actual code). Very ugly. I solved that problem (at least for me) by separating all three out (what are the header files, how are the source files, and why is the documentation written).
But a week or two ago, I realized that what I've been trying to achieve with web-based programs can be solved by a similar separation—only in this case, it's not what, how or why, but data, definition and display (or substance, structure and style). HTML is an ad-hoc mixture of definition and display with data. I can't comment on SGML, not knowing it well enough, but XML seems to be a strict data and definition mixture with display being left out (or left to the style sheets). That's okay, but it still makes transclusion difficult. That's not saying it can't be done; it has, to some degree. But if the data and definition were separated, it might make transclusion easier.
Although some might say too easy.
Anyway, the reason I'm going on about the separation of data, definition and display is to help me at least, organize what is amounting to, a large amount of random data. And in a way, my mod_litbook is related. Certainly, the data, definition and display are separated, but it still isn't a generalized solution yet. But I'm getting there. I think I'm on the right track here.
I'm also going to have to deal with META tags and whatnot.
More on V2_OS. I wrote to them yesturday telling them the problems I encountered. I got the following reply:
V2_OS currently assumes a hard disk eventhough it doesn't do anything with it (it only looks at it to find partitions). This is a thing that should be removed…
It is completely harmless to run it on any PC, ant [sic] won't touch your HD's. The only commands you should not use is format and syscopy.
Even the Linux bootloader doesn't check for the existance of a harddrive!
I noticed they had a newer version of the disk image, so I downloaded that and tried it. Same result as two days ago. So I figure, “Hey! I know assembly. This is written in Assemly. I can takle this. I can crack this! Or rather, fix this!”
I can say, yes, it's written in Assembly. Not very good Assembly. Or rather, it looks like it was written by someone under the mistaken notion that the 80x86 line is RISC-like in nature. There are many sequences like:
Jcc somewhere NOP NOP
On several RISC CPUs (like the MIPS) the instruction following a jump of control is executed; it's called the branch delay slot. The author here (and I'm not quite finished with the bootsector!) seems to think the 80x86 has a branch delay slot. Then there is:
MOV AL,[var] INC AL MOV [var],AL CMP AL,somevalue
Grating. Come on … it should be:
INC byte ptr [var] CMP byte ptr [var],somevalue
But there are a lot of sequences where data is loaded into a register, manipulated (simply) and stored back out to memory. Again, this is something common on RISC like CPUs, but the 80x86 line can manipulate memory directly, without having to load into registers.
Now, this thing claims to be the fastest OS for the 80386 and higher. I'd like to see it go against something like QNX.
UPDATE: The code is so convoluted and poorly structured that I'm giving up. It's not at the point where it's worth my time to fool around with this, but if the harddrive check is removed, I'll take a look at it again.
Some restaurants still use spindles. They're the nasty looking sharp metal spike next to the cash register they use to stick the register receipts or checks to store them until closing. To “spindle” refers to this action.
WEB does not refer to the World Wide Web, but instead to a way of writing software developed by Donald Knuth. It allows one to mix source code and documentation into one file, at the same time allowing the programmer to write the program in an arbitrary order. There are two auxillary programs used, one to extract the source code in the order required by the compiler, and another one to product hard copy output (at least, that was the original intent).
Create a new map or globe of the world that shows multinational corporate borders, vectors and free trade zones instead of national boundaries. Map must make it into a grade-school geography textbook, or globes must be sent to several elementary schools nation-wide; either event must be reported upon extensively in the mainstream press.
The MAPS project at ®™art
An intriging project to be sure. Just defining what it means for a corporation to have a “border” will be difficult, much less the other parts of the project. The free trade zones is a bit easier and will probably follow traditional national borders.
But if one is created, I wouldn't mind having a copy. I have R. Buckminster Fuller's Dymaxion Map, and an upside-down map (where Antartica is on top, North America on the bottom).
I was keeping (and probably will for the time being, keep) each day's entry in a single file, with internal links to each part. I went through and fixed them so they're unique across all the files, not just withing a single file.
I also have several goals that aren't easy to realize given the traditional file-based view that traditional websites use.
But as others, as well as I (with my Electric King James Bible), have shown, that doesn't need to be the case.
So for the past few hours I've been re-organizing the pages. I have a directory for the year, a directory for each month, and a directory for each day. Within each daily directory I have a file for each section, as well as any other anciliary materials (such as images and what not). Basically, using the Unix filesystem as a database (shut up Mark). I'll have to come up with a URL scheme to isolate the backend processing here, but that shouldn't be that hard.
Basically, this will be an extention of the work I did for the King James Bible. And what I do here will probably help me work out a method to deal with storing and referencing other materials, like Shakespearean plays.
I hate databases. Have ever since I took the disasterous database course at FAU. But I like working on operating systems.
As Mark likes to point out, a filesystem is just a special case of a database.
To say that I ignore that is an understatement.
Shut up, Mark!
Some more ramblings on Hypertext.
The work I did on the King James Bible was partly a result of wanting to reference a portion of a much larger work. After I was done with that, my eye then turned towards Shakespeare. It'd be nice to say something like:
To be, or not to be,—that is the question:—
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles,
And by opposing end them?—To die,—to sleep,—
No more; and by a sleep to say we end
The heart-ache, and the thousand natural shocks
That flesh is heir to, 'tis a consummation
Devoutly to be wisht. To die,—to sleep;—
Ah, but the problem with Shakespeare, or rather, with the notation used to reference part of his plays, deals with what constitutes a countable line:
Peace, break thee off; look, where it comes again!
In the same figure, like the king that's dead.
Thou art a scholar; speak to it, Horatio.
Looks it not like the king? mark it, Horatio.
Most like:—it harrows me with fear and wonder.
It's basically lines that are spoken that are counted. So line 40 is actually “Pease, break thee off; look, where it comes again!” It's not the line that says MARCELLUS.
Makes for an interesting project.
I'm driving to dinner and in the lane next to me slightly ahead a see a person driving a motocycle without arms. Most surprising until I realize it's all an illusion, helped by the angle and lighting (it was night time, and we're all driving by the orange glow of streetlamps).
I'm still thinking about how I want to organize all this, as well as how to reference everything. One idea for the URL space I came up with is
would retrieve all the (currently written) parts for that day. To reference a particular part, then:
would only retrieve that part (in this case, what you are reading right now). By that logic (and following the logic used by my Electric King James and by now I'm sure your tired of hearing about it) then:
would retrieve the entire month of December, 1999. Most weblogs/journals though, would react differently; something like (using what I have so far, excluding today):
|November, 1999||December, 1999||January, 2000|
(Whew! Did that by hand) But this breaks what I did for the Bible. If you request Genesis, you get the entire book, not:
and so on. You get that at some of the other online Bibles, which is what I wanted to avoid. But in retrieving the entire month, you'll get a large document (so far, it's 38,196 bytes for the entries from the 4th to the 11th).
But I'm leaning towards doing that. If you want it, you'll get it.
Update on Sunday, August 25th, 2002
Originally, I had intended the archive section to appear under something like:
But I never did it that way; yet the links in this entry were originally written with that in mind, and the various web robots where sending requests for the pages, which didn't exist (of course).
So I fixed the links themselves in this entry.
Mark came back from Munich late last night so his girlfriend Shirley, our friend Kelly, and I got together today to welcome him back and hear stories about liter-sized glasses of beer he consumed while in Beerland.
Mark had taken pictures in Munich using his new digital camera from Sony. This one saves the images on 3.5" disks but he was having problems reading them on his home system (there appears to be a memory leak in the Linux floppy driver under certain circumstances—in any case, a few of his disks appeared to be corrupted).
So we then stopped off at Kelly's house (being closer to where we met) to see if we could read in the disks. We popped the disk into a Windows box and sure enough, one of the disks seemed to be corrupted about halfway in.
“Are you sure those X-ray machines at the airports don't cause problems?” Mark would ask.
“I've never had a problem,” Kelly would say.
“Neither have I,” I would say.
It appears that Mark did though. And most of the disks seemed to be corrupted. Kelly went so far as to use his digital camera (also from Sony) to copy each image one at a time to another floppy, which turned into a time consuming process that wasn't finished because the batteries ran out on his camera, and there is no way to get power to the camera except for the batteries (both sets were at that point being recharged).
In checking over today's entries, I just noticed that I mention going to dinner, then a long digression about hypertext, then listening to Mark's Biererzählungen and attempting to retrieve digital photos from some disks, you might get the impression that the order of narrative is out of order.
But it isn't.
Each section is presented in order (more or less, sometimes I'll be writing two sections at once) that I write them during the day.
And the part about dinner was written almost 20 hours ago.
You see my schedule is rather off … I'm a night owl by nature. So my “day” often wraps around the official definition of a “day” so if you see any of these odd passages of time like this, that's why.
The hotshot Aussie pilots “buzzed” the virtual kangaroos in low flight during the simulation. The kangaroos scattered, as predicted, and the visiting Americans nodded appreciatively… then did a double-take as the kangaroos reappeared from behind a hill and launched a barrage of Stinger missiles at the hapless helicopter. (Apparently the programmers had forgotten to remove that part of the infantry coding.)
—Jerry Pournelle, on reusing code.
The LOSAT is a 6 & 1/2 inch dia., 10 ft. long, 150 lb laser beam riding missile with impact energy of 60 mega joules. [Compare that with the 12 MJ muzzle energy of a 120mm/44 cal NATO gun.] A test program is providing a company of them to the 18th Corps. Each launcher has four missiles packed on a Hummer chassis.
There have been a number of LOSAT tests. One, on a M-48 target tank, pushed the hull back 10 feet during impact, ignited a _stripped_ tank hull and exited the engine grill substantially intact. Another, on an empty-of-ammunition T-72, decapitated the turret. These test films are available, though tightly held.
—Some comments about military advances from Jerry Pournelle's site.
Interesting. V2_OS does NOT support multitasking.
This our point of view on this: We will not change the architecture of the kernel to allow it to multitask since this will affect the whole system even when it is not multitasking and that's not the way me ment it.
It could be argued that MS-DOS was the Fastest Proprietary 80x86 Based Operating System around yet no one I know would use it anymore. Okay, besides being a 16-bit clone of an 8-bit OS, it didn't allow multitasking either yet people went to great lengths to include it.
TIP: at least make the operating system reentrant. It doesn't cost that much, reduces bugs, and makes the addition of multitasking that much easier.
It's beginning to look like that those who do not study the history of MS-DOS are condemed to reimpliment it—poorly.
And MS-DOS wasn't all that great to begin with.
I was just given a Toshiba Satellite T1900C laptop. Nice little machine, a bit damaged, but when I turn it on it boots into MS-DOS. It has Windows 3.11 installed. I get the feeling that this is not quite the Pentium I was told it was. No problem since I'm not paying for it anyway.
There is nothing of real interest on the disk. I mean, unless you consider MS-DOS or Windows 3.11 interesting.
I get home, and finally have a system to try out V2_OS on (more later). I also boot Tom's Root Disk, a one disk distribution of Linux that's actually useful (I use it primarily for rescue disks and for my network monitor). I pop that in and apply power.
9.96 Bogomips. A real powerhouse here. 16450 UART (the buggy one). 120M harddrive and oh, only 4M of RAM. Tom's Root disk reports:
UH-OH! No RAM for /usr. Runlevel 4! Bare minimum. Good luck. Remove floppy.
QUIZ TIME! You have no ls. more is gone and even worse, so is cat! Yet you want to check the configuration of the machine (most of which is available in /proc. What can you do?
Well, there is a shell. That's half the battle. cd is built in, so you can at least get to /proc and echo is built in. Why is that important? Because when you type in a wildcard at the command line, it's the shell that expands it, not the command. echo repeats what it's given, so if you do an echo * you see all the files in the current directory. You'll see nothing else but the name, but that's better than nothing.
But still, it would be nice to actually see the contents of some of the files. Let's see what we have to work with here … ah! dd is available!
I can't believe I'm excited about dd. I mean, this pretty much sucks, but that's one of the strengths of Unix, as the proponents say. Warp your mind to use the given tools in ways the authors never indended. Sigh.
So, let's see what we have here …
# cd /proc # echo * 1 13 2 3 4 5 6 7 cmdline cpuinfo devices dma filesystems interrupts ioports kcore kmsg ksyms loadavg locks meminfo modules mounts net pci scsi self stat sys uptime version # dd if=cpuinfo of=/dev/tty processor : 0 cpu : 486 model : 486 SX vendor_id : GenuineIntel stepping : unknown fdiv_bug : no hlt_bug : no f00f_bug : no fpu : no fpu_exception : no cpuid : no wp : yes flags : bogomips : 9.96 0+1 records in 0+1 records out #
and so on from there. Not much, but at least I'm able to move around and poke at stuff.
Well, maybe not.
# mount /dev/hda /mnt # cd /mnt # echo * 386spart.par autoexec.bat command.com dlbspace.bin dos io.sys msdos.sys stacker stacker.ini stacker.log stacvol.dsk ~msstfqf.t # cd dos # echo * attrib.exe chkdsk.exe command.com #
120M. Should have realized that's not enough space for Windows, so everything is packed using Stacker.
And even the QNX Demo Disk refused to install, due to memory constraints.
Since I have a PC capable of running V2_OS, and it has a harddrive that I don't care if it gets trashed, I decided to give it a try.
It does load fairly quickly. And it does appear to be quite slick. And I do like the different screens you can flip through:
- Terminal screen, which gives you a simple monitor.
- Module screen, which would (if there were any) list all the modules loaded into the system.
- Bootup screen, which shows you the boot messages.
- Debug screen, which modules or programs can use to dump diagnostic messages to.
- Crash screen, which gives a register dump in case of a fatal error.
Nothing that any other operating system can't do, but it is nice to see stuff like that.
But for all that, it's still pretty much a rather poor 32-bit clone of MS-DOS.
Mark pointed me to Thix, yet another free Unix clone for 80x86 based machines. This one was written back in '94 or so and it looks like it's self-hosting, which is good. It doesn't support networking, which is bad (but not that bad). It looks like it'll run fine on a small system, which is good. But the installation disk doesn't contain a program to make the filesystem, which is bad (and that's bad).
This makes the current installations of Linux trivially easy by comparrison.
The setup assumes you have Linux already installed on another partition and can run the mktfs program from Linux. Ha ha. That's a good one.
I took a look at the source code to mktfs (good thing this is an Open Source ™ project) to see how the filesystem is laid out and thinking I could write a quick assembly hack to create the filesystem, dump the program to a floppy so that it executes when booted and go from there.
I then got the idea to hack mktfs itself to read/write to an image file. My thought—instead of having it write to a device, just have it act on a file, then dump that image to the harddrive.
Hack hack hack debug debug debug ah good. Compress the image, dump to floppy, move over to the lap top, extract from floppy and decompress onto the appropriate partition, reboot and …
Next up … hack up the TFS version of fsck, run that on the image file, and try again.
Well … something's wrotten in the state of Denmark. It seems the author keeps mixing up if he has his units in blocks or bytes.
Or it could be that it's so crocked up it can't be fixed …
I finally got the Thix filesystem utilities mktfs and tfsck working, although what I changed to make it work I'm not entirely sure since I wasn't keeping that close a track of what I was doing. It seemed to go okay after I went through the mktfs code line by line, seeing the values being calculated and stored in the superblock of its filesystem.
I had created two partitions on the drive in the laptop—an 8M partition for swap (if Thix supports it, I'm still not sure) and the rest (~108M) for the actual filesystem.
Finally I got an 108M (108.0117188 * 1024 * 1024 gives 113,258,496 bytes, so you see I'm using the computer definition of megabyte, not the disks manufacturer's definition) image file created, and a few runs through tfsck fixed it up. Ran gzip over the image, which compressed it down to something like an 11K file. I transfered it to floppy (tar cf /dev/fd0 thxfs.img.gz), sneakered it over to the laptop.
I created a Minix filesystem on the 8M partition (using Tom's Root Disk), extracted the file from the floppy (tar xf /def/fd0) and then extracted the image file to the appropriate partition(gzip -dc thxfs.img.gz | dd of=/dev/hda2).
Several long minutes later, it was done. Booted from the Thix installation disk, it mounted the partition no problem, installed a bunch of stuff, popped the floppy out and rebooted.
Ah, the master boot record must be bad. Okay, this is easy. Let me approach this all wrong and spend an hour or so writing a custom boot sector on a floppy that will then read the partition table from a harddrive and boot from that.
It would have worked too, if it weren't for those pesky kids.
Sorry. I would have worked too, if in fact, a boot sector and kernel were actually part of the partition!
Oops. I should have read the installation instructions better. Especially the part:
Go into the Thix source tree (../thix). Edit the file fs/mount.c and set the root_device to point to the partition you want to install Thix on. That is, uncomment this lines: /* /dev/hda3 */ int root_device = HDC_MAJOR * 0x100 + 4;
and well, it goes on from there. Had I a bit more time, I probably could do it. Heck, had I a bit more time, I probably could have gotten Linux on the thing.
Mark suggested FreeBSD or Slackware. Can't use FreeBSD since I think that requires a math-coprocessor (although I'm sure Mark will correct me if that is not the case) and I unfortunately ran out of time to try Slackware (which probably would work).
I'm out of time, because I'm leaving for Palm Springs in, oh, less than 12 hours now.
You see, I tried installing a (cough) commercial OS (cough) on the laptop someone was kind enough to toss my way. It is one of my favorite operating systems, it installed fine, and with plenty of space left over (even after the GUI was installed) but it still lacked a development system which was kind of the point in the first place. I mean, I had vi, but if all I'm going to do is editing, I might as well take my DataGeneral one laptop (80C88, 464K RAM, two 720K floppies, state of the art in 1984 when it came out).
It's the Gay 90s here in Palm Springs. You're either gay, or 90.
—Donald Conner, my Dad.
I should mention that I'm flying off to visit Dad for the next two weeks. He lives in Palm Springs, California, a desert community were the parents of the retirees in Florida live.
The upshot of that is there will be no updates here for the next two weeks, followed by the sudden appearence of two week's worth of material, most likely non-computer or Internet related.
Maybe it's for the best I didn't have a laptop.
One of those quiet earth shaking moments when you realize that everything eventually passes on. But even though I haven't read a “Peanuts” strip in years, I knew it would always be there. It's been there all my life. And now that I think about it, for most of my parents' life as well.