27 Sep 2004:Misc. Sun BlogsEric Schrock and Stephen Hahn (both Sun engineers) have some excellent articles about Operating System design.
Eric discusses with Greg KH about RAS of OSes; Stephen has some comments about authorisation.
Both point out the difference in attitude between Linux and Solaris. Transcript here. The US, of course, claim that it was legal.
Hitler was convinced that his illegal invasions were justified, also. What, exactly, seperates the two leaders?
12 Sep 2004: ICT in SchoolsApparently "ICT" is a Big Thing in education at the moment... in so far as it extends to learning how to use Microsoft software. See nerds for the inspiration of this text. Well, that, and an Open University programme shown last night, which delighted in showing young children (8-10 years old) who take Windows XP laptops home with them - apparently straight from the cardboard box - no antivirus subscription, no firewall software, just "here's a laptop".
I learned about computers whilst I was in school - partly because my family could afford to buy me a computer
(which, in those days, meant Sinclair Spectrum, then a BBC Model B) - which could be programmed. The computer
magazines of the day included pages of source-code listings for games, which I'd spend hours typing into
my computer, so I could play the game. It was obvious how to cheat - want 5 lives instead of 3? Change
When I graduated to playing ASM-written games on the BBC, it was trivial (with BASIC as the built-in language) to hack the ASM to make similar changes; I nearly finished documenting the "Elite" savefile until I got to Elite status without cheating - after that, it seemed pointless. Now, I'd quite like to have the time to go back and complete that challenge. Actually, I'd quite like to have the time to start as Commander Jameson with C100 and become Elite again - it remains an excellent game. (The fact that my existing (paid-for) media is probably unreadable, but equally likely to be available (technically illegally) on the internet is the subject for another rant.)
The point is, that I learned about computers, not by playing the games that some of my fellow-students also played, but by playing *with* the games. Changing a BASIC program you'd typed in (or even *LOADed from a tape) wasn't a major challenge - it's not exactly hacking, is it? Hacking an ASM-written commercial game had a bit more of a challenge to it - especially as they used tricks like loading a bit of BASIC into one part of memory, only to load some ASM elsewhere, which loaded more BASIC, which loaded more ASM, which actaully loaded the game. Tracking down all of these, then writing code to track down all the "ACC=3" lines which might be the line which specifies how many lives you have... having worked that out, finding the lines which decrement that register, so you can NUL that line and get infinite lives... surely this is what childhood computer-learning is about?
If we want kids to learn about computers, not just how to become Microsoft droids, we need to give them the tools to play with the software they use.
The easiest (and most legal, and - as it happens - cheapest) way to do this is to give them Free Software - this could still include the MS Windows license which has already been paid for with the laptops the kids are given, but giving them software like The Open CD, and tools like DJGPP, if not a Linux system and the entire GNU toolset.
At least give them access to the Knoppix LiveCD to let them have a chance to learn about how computers really can be *USED*, not just how to become yet another Microsoft junkie.
Whatever the official Education system gives my daughters, they will be taught this stuff at home... whether or not they choose to learn it, is up to them. I learned a lot about banking from my father, who was a banker. I didn't go into that profession, but I still appreciate what he taught me. Nobody told me about economics in school; it seems that nobody is teaching the next generation about computers, other than how to use software written by others.
He's American, and certainly not keen on the American public school system... I'm British, and see many parallels with my 1980s school life. He sees suburban schooling as a way of keeping awkward teenagers out of the way of adults who work in industrialised, specialist worlds, who have no need of the old-style apprentices - before "teenager" was a word, teenagers didn't seem to be a "problem".
He compares school life with "ladies who lunch" - nothing *real* to do, just gossip about each other, and play each other against the social hierarcy.
"Misrule breeds rebellion; this is not a new idea. And yet the authorities still for the most part act as if drugs were themselves the cause of the problem. The real problem is the emptiness of school life. We won't see solutions till adults realize that."Makes me think again about the whole school system - I thought I'd done that and ended it, but I have 2 young children who will be joining it for themselves before very long... He summarises:
If life seems awful to kids, it's neither because hormones are turning you all into monsters (as your parents believe), nor because life actually is awful (as you believe). It's because the adults, who no longer have any economic use for you, have abandoned you to spend years cooped up together with nothing real to do. Any society of that type is awful to live in. You don't have to look any further to explain why teenage kids are unhappy."Makes me think again about how I want my children to be educated... I will, naturally, offer them what I know, but that is likely to center around disabusing them of the "Computers == Microsoft; Writing and sharing your own software is not even a possibility" myth which appears so prevalent amongst the more progressive(!) UK schools. The less progressive ones, which don't even get onto late-night Open University programmes, presumably are still using BBC Micros. At least those students still have access to source code, I suppose.
03 Sep 2004: Windows - Network Operating System?I've been working with Windows today. First time in ages.
Trying to build a simple package which works with *nix/dos/etc - no real OS dependencies in the software itself, it (with a few tweaks - snprintf, etc) works on Windows. But working with Windows itself is a pain. I sit in front of my laptop, and talk to various machines. I talk to the Windows box via VNC. Not exactly ssh, but it's a local LAN (I'm working from home), so it's "good enough". So I download the software I need (djgpp and its friends) - they come in .zip format, so I copy them to the Windows machine, use VNC to run WinZip, click away to extract the archives into the right places. How, exactly, is this easier than "wget (url); tar xzvf (filename)"? It takes me about 3 times as long to get and install a package this way, than from the command line.
Then I find that I need to update my source - edit it (via VNC) under Windows, make it work. Now I need to transfer the update to my central (Linux) box - PuTTY is great for this, but of course, it's now in Microsoft's CRLF format, so I run "dos2unix" on the Linux box (of course, Windows doesn't have any such feature, let alone vim's ability to read/write either format).
I may be in the minority here, but Windows' reliance on WinZip to package tarballs (though it can't cope with many files in Sun's Explorer utility, which grabs several standard UNIX files - apparently MS can't cope with files like "?.out" - presumably an implementation detail because they mark deleted files as starting with "?") is a real PITA - I know there are command-line options, but these have less features than WinZip, and still can't work around FAT's limitations.
Maybe if I saw Microsoft as my only development platform, I wouldn't see these failures, but in trying to make UNIX software available for Microsoft users (you'll have guessed, I've not written any Win32 specifics into the code which runs on Solaris, Linux, BSD, Windows - it's a command-line driven utility), Microsoft's development platform is pitiful when compared to *nix.
It would be true to say that an application written for Win32 with Windows IDEs in mind would be difficult to port to *nix; however, that's not a true comparison, because this app was explicitly written to require only basic POSIX standards known to work on UNIX, Linux, Windows. The problems I had weren't really down to the code (a few tweaks were required, but nothing major) - it was the difficulty of safely moving files between the machines, and investigating the files.
At one point, I wanted to see what static strings were in the created .exe file - Windows doesn't seem to have such a feature (I'm sure that if I paid MS for some additional development software, that I'd get this, but that would mean retargetting the code away from gcc) - so I had to copy the .exe to a Linux box to run "strings my.exe" against the file.
I'm quite convinced that I am in the minority, in that I see Unix/Linux as the main platform, and Windows/DOS as an additional platform with minor tweaks required (no snprintf? I have to provide my own? really?! What happened to Trusted Computing?), but Windows creates major barriers against me bothering to write software for it, as compared to *nix, where I find that porting the code between flavours of Unix is equally trivial, but at least I know the file format is the same, and that I can send foo.tar.gz to a remote machine and extract it with "tar xzvf foo.tar.gz".