Yesterday around lunchtime an entire subnet at the school went 'dark'. This is not good. The session ('semester' for my friends in the northern hemisphere) starts on Monday. This is the absolute busiest time of year for faculty and staff because we've got a lot of stuff to prepare for next week when the hammer falls.
The curious thing is that the subnet that went 'dark' was only one subnet, and another subnet which traverses the same wire continues to work fine. So only a random smattering of machines was affected. This made it very difficult to even track down what happened because it appeared as a random cluster of machines that suddenly could not route packets. As it turns out they're all related by having an equal third byte of the IP address. What made it even more difficult to troubleshoot is that two of these machines which went dark are the primary DNS servers, so when they vanished, nobody could see anything 'by name' until we patched a couple of machines over to an alternate.
Trying to get anything done by IP number is a minefield, because even if you don't use any hostnames directly, you might accidentally touch a server or service which does - and you're screwed; waiting for it to time out (if you're lucky). Some services just hang until you get tired of looking at the hourglass icon and then you have to go find another already logged-in session somewhere else to work. Can't start any new sessions because they mount home directories, which touch name servers and will hang.
So I'm chugging the morning coffee and heading off to work an hour early this morning to try and recover from this disaster. Spent half the night awake formulating a plan after spending the entire evening determining for certain where the problem was. The problem is a router that's locked in a closet, and only the main campus IT folks have keys. Coincidentally, they made some configuration changes in that closet yesterday. Around lunchtime.
Gentlemen, get over here right now and unlock that door.
Unfortunately it isn't that easy, as there are layers of bureaucracy to contend with. My backup plan is to move two of our absolutely critical machines out of the darkness and into the light. One of them I can unplug and carry away. The other is a virtual machine living on two networks (which can run elsewhere) but I've got to find a wire in another room/building that can talk to both subnets. Oh and a cooperative host with enough disk and memory, that won't mind being loaded up with an alien machine.
Microsoft is making a bid to buy Yahoo!. Surprise, shock... What words could describe my emotion on hearing this?
I can see the motivation and the reasoning behind it. They want to put a stop to Google ("I'd like to buy a noun, please."). Still I believe this is the wrong way to do it. The only way for them to stop Google is to buy Google. Don't laugh. They are ideologically more closely aligned than you might realize. I don't believe that they've thought through the consequences of this decision - or maybe they have but just don't care. It is a culture clash of epic proportions that will result pretty much in the destruction of Yahoo! and all they've ever done - and do nothing to harm Google. I suspect many of the employees will quit outright, and there's not much place for them to go in Silicon Valley except to side with the enemy (Google), the largest employer in the valley that's still adding significant headcount.
But I also believe that this move can't be stopped, so it doesn't really matter what I think about it. I would however like to share with you the exact image that popped into my brain on hearing this.
Sometime later this month "Diary and Other Rantings" (i.e. my weblog) will turn 7 years old, and I'll start my eighth year doing this activity called 'blogging'. Perhaps I'll mark the day, perhaps not. We'll see. Maybe I'll just stop doing it altogether. Maybe not. We'll see.
This all started in early 2001. I was at AOL making lots and lots of money from my Netscape stock options. I had a Netscape employee home page that was visited hundreds of thousands of times a day, but this was slowing. AOL no longer linked to it. I had started running a new server in the spare bedroom in 1998-1999, and later moved it to the garage. It took almost two years to get a working DSL link so that I could actually run a public website off of it. High-speed internet to the home was still an experimental technology. DSL wasn't yet ready for prime time and ISDN had other issues which plagued it. Leased-line required somebody to sell you an end-point on the public net and nobody was doing this, besides being limited to 56k which was now the speed of most modems. Web 'hosting' in those days was mostly for big business and costed big money. I could certainly afford it, but decided to spend my cash on more important things (like buying a music store a year later).
Running a Linux box with an internet link isn't very expensive in the overall scheme of things. So once the DSL was finally working I made a new home page and started improving it.
I think it was Cindy at 'Off the Beaten Path' (now at 'dustingmybrain.com' ) who first introduced me to the concept of a rambling page. Instead of replacing your 'Current Interests' web page every week, you just keep adding to it. Drop in a date. Write what's happening. I started doing this. I was writing HTML in emacs. I called it an online diary. I didn't have titles, categories, RSS feeds, etc. These would come much later. I wasn't writing 'articles', I was just rambling. Why do you need a title for it? That makes it look so structured. The only important thing is the date, so somebody knows when it was that you thought this way. This was important. After several years of living on Netscape time, I firmly believed that one didn't think the same way for very long, and technology was always changing - so information had to have a date.
The other thing that I did was to take a cue from some of the large online news sites, which were the best model available for presenting information that had timestamps. I started writing in reverse chronological order (recent first). This was born of necessity, since nobody wanted to load a large page and scroll to the end to find recent stuff; which was how we did things previously (logfile format).
In fact I maintained this format for a few years until it became unmanageable. Then I looked for ways of automating my monthly (or whenever) process of moving the current entries to an archive page and starting fresh. So after looking to see what programs were available and trying a few of them, I instead wrote a program to do it myself. Over time that evolved from a simple diary 'archiver' to the thing that you see today - a mega social portal that does everything but make coffee. (I miss this incidentally, I had my computer turn on the coffee pot from an online request in the early 1980s using my first homebrew social portal).
I still wonder whether anybody reads these pages. Does anybody care? I don't subscribe to the current notions of SEO and affiliate marketing and trackware and all the other ways to improve one's blog ranking. Most notable these days are the pages and pages of 'widgets' attached to every blog, selling everything from online communities to soap. Why bother? Your only visitors will be other bloggers that are all trying to get you to visit their own blog. They aren't really reading what you have to say, they're too busy 'selling' their own wares. Still even after the RSS fiasco a few months back, I manage to pull in a few thousand humans a week. They come and read a page and leave again. This is the state of the modern internet.
It may be of some interest that I've managed to serve up a few hundred million pages since this all started - mostly to crawlers and robots; however last year activity peaked with about 100,000 daily hits (30,000 human visitors) and we've had six or seven days with over a million hits. I've written close to 1500 articles and there have been about 6600 total articles at one time or another from various feeds - before I was forced to nuke them for legal reasons. Only about 250 comments total, which I attribute to my decision a couple years back to do away with the daily spam cleanup and only allow website members to post comments. [I've since revised this policy.]
The 'community portal' (which I started writing a couple of years ago) doesn't have much community and I don't know if that will ever change. Community folks like big parties and unless you have one, you're late to the party. Bloggers only like communities where they can sell their blog. I don't know how to convince them that a long-running website with several thousand non-blogging human visitors a week is actually a good place to drop a link. Yeah, I could put you on my blogroll, but I read thousands of blogs. It would quickly grow to be unmanageable and you'd be lost in the noise.
But you can add your own link and profile page and whatever - you don't need me to do it. Hint, hint.
Anyway - we'll see if this lasts or whether I just decide that there are better things to do. Write into space everyday and maybe a couple of people will read it. Maybe not.
That's what it's all about.
Don't ask yourself if it is actually relevant or important or whether anybody cares. You might not like to hear the true answer. It's one blog amongst hundreds of millions, all trying to be visited. All thinking they should be relevant to somebody. It's like asking if one star in the entire universe is relevant. Maybe one is relevant to somebody. But the big question looms, is it yours? Unless it's the sun and brings life to this planet, it's likely just another star in the vastness of space.
In fact, nobody really cares whether you blog or not when all is said and done. Well maybe one or two folks. In my case those are the same one or two folks that cared back in 2001. Everybody else is just passing through on their way to somewhere else.
Still every day (sometimes two) I go to my website and ramble about what's on my mind. I tweak the software to make it better. Even knowing that it is all an exercise in futility. Strange.
The school's weather station webpage seems to have stuffed it sometime around Thanksgiving. Today somebody finally noticed and alerted the support staff.
My boss asks "where's the documentation?".
Right. There is none. This system has been in place for ten years or more and fails occasionally. When that happens we go in and fix it.
Start with the webpage that actually displays the data. It's pulling the data from a file that is supposed to be automagically updated. Except we don't believe in magic. The file didn't get updated. Now to find out why.
Since this is a scheduled event, cron has to be involved. Let's have a look at the crontab file. Hmmm. It's pulling the changes from another file that is supposed to be automagically updated. That one hasn't been changing either. What changes that file? It isn't cron. Or is it? That file is symlinked to a file on another computer. Let's go have a look at the other computer. Ah, I see. There's a crontab running there which generates the contents of the update file from a data file via a collection of python scripts. Let's have a look at those.
As I suspected, they are pulling data from yet another file that is automagically updated. Right. It hasn't changed since November either. What changes this file? Time to scan the logs. Nothing.
OK, it's time to start from the other direction. The weather station is connected to a PC in the corner of a lab. Let's have a look there. It's hung and totally unresponsive. OK, maybe that's the problem. I reboot it. Then go back to the webpage. Nope. Nothing has changed.
OK, somehow the data has to get from the weather station computer to the other computer where the python scripts can munge it. Let's have a look at the logs.
The logs say everything is fine, but it isn't fine. Nothing. It's not happening. Well this is interesting. I check connectivity and network connections. They're OK. We've got an IP addess and pings work just fine. A closer look reveals that there's a Windows task scheduler which occasionally FTP's the weather files across the net to the second Unix box. The logs don't show any errors. Hmmm. The files aren't being FTP'd though. They aren't making it. Then I see a notice at the bottom of the screen. Updates were applied some time since the computer was last powered on - six months ago. OK, what updates? Windows firewall. Right. So I have a look, and sure enough the computer's FTP connection has been firewalled because of an automatic update. The FTP's are silently failing - and indicating success. This is pure evil. After several minutes I'm able to get in with an administrator account that can fix the firewall and do so.
Then have another look. Still nothing happening. What could be the problem now? Ah, on reboot FTP is automatically disabled on the weather station software - again without any warnings. The logs again say everything is working and files are being transferred. More evil. What's the use of having log files if they lie to you? I turn on the FTP. Bingo - now the files get through. Now back to the second computer to manually process the files and dump them into the directory where the third computer can pick them up. Then back to the third computer to manually update the processed files.
Yay! It works.
Back to the documentation. How would somebody document stuff like this? There's just too much that can go wrong. I could use up a tree or two writing it all down. This is why we've got systems folks.
If you're a techie and are ever really bored, here's something you can do for amusement...
Assume you're running on some flavour of Windows. First create a virtual machine running Linux.
Now in your virtual machine, let's fire up a CP/M emulator. A machine running in a machine running in a machine.
Now wasn't that fun?
Now let's take it one step further...
In your virtual machine, run a windows emulator. Now run some cygwin tools. Maybe ssh (from within a Bourne shell) out to a Mac and do something there.
So now you've got Mac stuff running under Linuxy stuff running under Windows running under Linux running under Windows.
Like I said, you need to be really bored to do stuff like this. And don't even think about trying to explain to anybody why it's even amusing.
Unless you've been watching closely, this announcement was easy to miss. Sun Microsystems is acquiring MySQL. This has ramifications both good and bad.
This will likely affect a huge number of people who are currently using open source web applications; a majority of which are being stored on MySQL databases. Their future viability is now questionable. It all depends on the license and revenue models Sun chooses to adopt.
I would also try to steer clear of the pending 6.0 release as it is likely to involve significant re-structuring of the code to suit Sun's business requirements. It may be a year or three before it stabilises again. Sun is legendary for introducing layers of bureaucracy into development projects.
While Sun may make public announcements of their intent to continue to provide the product for free [and it should be noted that there was no such announcement in the press release], it is difficult to imagine the corporate bean counters not making a recommendation to derive as much revenue stream as possible from the acquisition.
You can read the announcement here.
Also of potential interest is this (dated) history of MySQL
After a continuing feud between Intel Corp and the One Laptop Per Child organization, Intel finally walked out with a huff.
OLPC has been trying hard to get cheap computers into the world's poorest countries. But in order to keep the price down, these have AMD chips instead of the higher-priced Intel processors, and use open source operating systems rather than the also pricier Windows.
Intel joined the organization a while back, seeing that it was a huge market opportunity. But they used their insider knowledge to get their own Wintel machines into the running for the purchase orders, at almost twice the cost. Then they put their biggest sales reps into the field to make sure that they got all the orders.
OLPC cried foul. Intel responded by leaving the organization (presumably taking their support money with them).
I was recently reflecting on my startup days at Netscape more than a decade ago. What was compelling about what we were trying to accomplish at the time was to make operating systems irrelevant.
Netscape tried to accomplish this by embedding what once were typically operating system functions into a multi-protocol window onto the world (the web browser). It had your text editor, the aforementioned web browser, a window system (aka frames) and a programming language or two (Java and JavaScript) to tie it all together and turn it into a general purpose information and communication appliance. The consensus at the time was that this would make the underlying operating system (*nix, Windows, Apple, OS/2, whatever) irrelevant. If you had this tool on your computer, you could work on any computer, any platform, and be able to do all of your information related tasks.
Needless to say, this grand idea failed. The browser is still around, but the original idea was lost along the way. New browsers don't come with the same tools we tried to provide back then. Java and calendaring in particular are now separate add-ons, as is the email package - available separately.
But does that mean Netscape lost? Well yeah, Netscape did. They're gone. But the concept of operating system irrelevance didn't. As I write this (on a Windows box), I've got windows open to Unix servers, I've got Unix command shells and utilities, I've got typical Unix programming languages and databases and web servers all running in this alien environment. It's actually impressive how far we've come. I'm currently dumping a remote Linux file system to a local (Windows) disk drive using nothing but Unix commands. ssh, tar, bash. These are all running on the Windows box using Cygwin, which comes with a couple hundred native Unix commands. I've got my familiar LAMP (Linux, Apache, MySQL, PHP) web programming environment via XAMPP; which I'm developing with emacs. Remote system monitors running via X (the Unix windowing system) and being displayed on my desktop via Cygwin/X. I've even got my mouse setup with hover-to-focus mode. The only thing that provides solid evidence that I'm not running a Unix operating system is the IE icon on the desktop (which I never use).
And this is all running on Windows.
So the operating system is completely irrelevant. It's just something that sits in the background and allows you to launch programs. Just like we envisioned back in the '90s. OK, not exactly like we envisioned, but I'm quite comfortable with the end result.
Still struggling with device drivers on Windows Vista. The sound card drivers have an update, but I'm skeptical. Several folks reported BSOD when they installed it.
And I've lost any good feelings I had for Debian. Recently I moved my old RedHat installation to a newer PC - one that was only 8 years old rather than 10. All went extremely smooth. On bootup, it found the new motherboard, new network card, mouse, monitor, etc. - and configured all of them. Everything worked fine.
Then I upgraded to Debian. The RedHat was a couple of years old, and I didn't want to mess with building PHP, MySQL, and Apache upgrades as well. Just boot up a newer Linux. Debian is currently one of the more popular Linux flavors - and I especially like the APT package management utility. Need PHP? 'apt-get install php'. You don't need to build and configure it and mess with library dependencies. These are all taken care of. If it needs new libraries, these are installed as well as any libraries that they depend on.
Anyway, now (a couple of weeks later) I put in another newer PC - this time only 4 years old. I was expecting everything to go smoothly like it did last time. But it didn't. Debian doesn't have very good hardware (re-)detection, and they also don't load any other drivers than what is absolutely necessary. So I'm faced with an incomplete operating system that doesn't recognize the monitor or ethernet card. And I can't load in the modules for these devices over the net, because it doesn't recognize the network card. It's a Catch-22.
The only solution now is a re-install. Spend a few weeks getting everything configured and then start over. Right. I've been here before. Way too often...
But if you're one of those folks considering moving away from RedHat/Fedora, beware. It's nice to be able to plop your disks into another box if the one you've got goes bad - and keep running. Debian won't do this.
I've got both a 5.25 and 3.5 floppy drive on my Linux box at home. I bought the 5.25 drive in the mid-80s as part of my first 'clone kit' (cheap IBM-style PC built completely from components made in Asia). Today I finally unplugged it, even though it still works just fine. I can't even recall the last time I actually used it. I believe I made a Linux emergency boot disk back in 2002, but that was on the 3.5 drive.
I tossed all my old 5.25 disks prior to moving overseas. After much more than ten years in non-controlled temp/humidity environments, there wasn't any 'critical data' left to speak of. Ditto for the 3.5's.
So I've got no disks left to read, and 720kbytes is pathetic and slow storage in 2007. If you need a copy of something, just flash it to a USB stick.
It certainly wasn't my first floppy drive (that distinction would go to an old 8 inch CP/M drive which I never used because it was obsolete before I ever finished writing the assembly language driver code); - but it's the longest surviving piece of computer hardware I've got at the moment. Seems a shame to let it go, however what's the point of keeping it running?
This data too shall pass.
If you're looking for a decent mid-range sound card and don't want to spend a fortune, the ESI Juli@ is pretty respectable. I really like the fact that it's about the cheapest card that'll provide balanced line. You do this by flipping the card around. Unbalanced connectors on one side, balanced on the other. It's a pretty neat concept.
Anyway, if you're trying to install one of these suckers on Vista, forget the installation CD. You can just throw it in the trash if you want. Even though the latest driver is for XP/2005, just go to the website and grab the latest. The driver on the install disk is a piece of crap and you'll be wondering why you bought such a sucky card. Can't even get the basic speaker test sounds to come out without about 300% signal distortion, dropouts, odd harmonics, etc. In short, the sound you get is almost totally unrecognizable.
The website driver makes it actually work.
Oh, and to use with Sonar, don't use the WDM channel. Just go with ASIO.
This had me pulling my hair out yesterday, so I thought I'd share the experience with enough key terms that the next person pulling their hair out will find it.
I was installing my CMS software on a work machine. I'll likely be doing additional development on it, and the university is the best place to do this. But that's neither here nor there. My software is designed around 'clean URLs'; which means what you see in the URL bar isn't (usually) littered with code and operating system artifacts. So for instance to post to my weblog, I go to the URL /post/weblog, not something like post.php?op=weblog.
To accomplish this, I use an Apache webserver module called 'mod_rewrite', which takes care of the nitty details of this process. Mod_rewrite is not without its faults, but that's the subject of another article. It does the job. The biggest thing it does is let you leave out the '.php', except I'm letting it do a whole lot more.
Anyway I'll cut to the chase. My software was horribly broken after installing it yesterday. It took hours to figure out why. Something else was trying to provide clean URLs and strip '.php' from places where I actually needed to have it in order for things to work. Well that's not technically correct either. It was actually executing PHP files by URL without the extension. Except that these were 'include files'. They weren't meant to be executed directly. They were meant to be included in something else, and the something else was managed by mod_rewrite. The something else was never getting called.
This was inconceivable. Nothing in any of the system release notes said anything about some magic new clean URL ability. This was on Debian (edge). Apache, PHP, MySQL. I tried all the sites. I googled for everything I could think of. Clean URL debian. Clean url apache. '.php not needed'. mod_rewrite. strip file extension. ForceType. (ForceType also lets you execute files without providing a filename extension). I scoured the last several months of Apache release notes, to no avail.
Finally after several hours I happened upon a little gem of a snippet on an obscure website. 'Turn on Multiviews instead of ForceType'. Debian has multiviews turned on by default, but this is the first I'd heard of it. I had assumed (never do this of course) that it was yet another fancy mod_dir option or something I didn't care about.
No. Multiviews is a slick trick for Apache that takes any pathname, and if it thinks it can find a page to return, it returns it. It uses the basename of the file in the URL and if there's no file, it looks for the filename with an extension. Any extension. Then it sends the file back. So it gives you a clean URL. You type in 'index' and it will send back 'index.htm' or 'index.html' or 'index.php' or 'index.pl' or 'index.shtml'. You get the idea. You can test this on any site that has multiviews turned on by asking for 'index' and see if you actually get a page. Normally you wouldn't.
If the URL is 'post' and there's a file in the directory called 'post.php' it will send that file back even if you don't want it to. So I'll let you research it further if multiviews is what you want. It's actually pretty cool. In my case I had to disable it.
Options -Multiviews in the .htaccess did the trick and made everything work again.
Work has been going well, at least as far as the employment part of it goes. The task list is a freaking nightmare.
I reported a week or so ago about the number of people (279) that had 'root' (administrator) access across the domain due to a programming error by my predecessor. But that's not half of it. Another 240 or so had no access whatsoever (and should have). Yet another 40 or so had non-zero duplicate login ID's ('uids' in Unix-ese). This means that any of them could write over or steal files from the other folks with whom they shared ID's.
This is all due to programming errors by my predecessor. There are just under 2000 accounts, so a little more than one in four were hopelessly screwed up.
I've also had to break in to about 40 machines because my predecessor didn't leave any password information for them and doesn't respond to (phone,email) queries. He's still at the 'Uni' (University) and somehow managed to get promoted to central IT services. Gawdd, I fear for the damage that he can do with even more access to the central infrastructure systems like payroll, purchasing, enrollment databases, etc. Most of the departmental machines (the ones I'm now caring for) have custom built scripts for performing user and system management. Those dealing with system management are as buggy as the ones managing users. It's some of the most horrid looking buggy code I've ever encountered - and I've been encountering buggy code for over half my life.
At least I'm not in danger of running out of things to fix any time soon. I'm amazed some of this stuff worked at all. In fact, most of it didn't - or just worked marginally enough that nobody ever noticed how flucked up it really was.
Oh well. Slowly but surely I'm getting all of this stuff whipped into shape.
I'm putting together a hilarious saga that I ultimately intend to submit to worsethanfailure.com...
Spent the last week analyzing the Unix systems here in the labs to get an idea of what was running on them, and also to do a security audit. First though I had to break into the boxes, as my predecessor didn't leave any system passwords. Turns out this was easy.
First thing I found on one of the systems is that the 'init' process was running under the account 'Katrina' (names have been changed to protect the innocent). Now 'init' is always owned by 'root' (the system admin account). So this means that somebody else on the system has the user id of '0', which is the administrator ID number on Unix.
As it turns out, I can change Katrina's password, since it's all stored in Windows Active Directory and exported to Unix via LDAP. So I did this and logged in as Katrina. Voila - I've got root access. Did this on several boxes to reset the root password.
Now there's no easy way to find a list of accounts, since this is all done in Windows and authentication is FM (freaking magic). So I wrote a little 'C' program to find all this info spread around the university and generate what looks like a standard Unix passwd file, which is something I understand.
Next I ran a little awk script to go through and find out if anybody else had UID '0', or administrator access. I'm glad I did this. Turns out that 279 people have administrator access. (There should be exactly 1). Now we manage accounts here for about 1800 people, so somewhere around 1 in 6 have had elevated system privileges.
These UID's were generated by a software utility my predecessor wrote to add all the Unix attributes to the Windows Directory. This utility has a lot of bugs, and this is only one of them. Duplicate UID's, non-existent home directories that never get created, no-UID (which defaults to 0), etc.
Sigh... Anyway the short story is that I've got a lot of work left to do.
Have you ever encountered a 'stuck' video/audio/data tape - one of those where the tape gets swallowed inside the machine in question? I have. More times than I can count. Oh, and the nearest authorized repair facility is halfway around the world (or worse, gone out of business)? I have - more times than I can count.
So what do you do?
You open up the darn thing and figure out how to extract the tape cartridge, that's what you do. I've also done this - more times than I can count. Usually it involves:
- disassembly of the drive mechanics, which resemble the inside of a Swiss (mechanical) watch - except the gears are plastic
- destruction of the tape cartridge, to get the pieces out of the way so that the mechanics can be further disassembled
- all of the above
Faced with this task yet again, I finally came up with a more clever way to accomplish the task. You see, the drive mechanics are operated by motors, which load and unload the cartridges. In order to operate the mechanism in the absence of motor power (which has obviously failed for some as yet unknown reason or you probably wouldn't be reading this), you usually need to take it completely apart. You can't just spin the plastic gears by hand, because they're all intertwingled and won't budge unless you physically remove the motor and then spin the first gear in the chain.
But what if you didn't need to take it completely apart? Taking Swiss watches apart and putting them back together again (without messing them up completely) is no fun. Trust me on this.
So how can we convince the motor to perform the unload task? There are two of them. One spreads the tape around the spinning head assembly. The other drives the actual tape swallower assembly. Both are usually simple DC motors. And therein lies the solution. We just need a little DC. Take a 9V battery and a few inches of speaker wire. Hold or tape the leads on one end of the speaker wire to the battery. Turn the power off on the device in question. We're going to bypass the built in power (and logic circuitry). That's what got us into this mess.
Now touch the other ends to the leads of the spreader motor. Didn't do anything? That's OK, you've got a 50/50 chance here. Swap the leads around the other way. Voila, the tape spreader starts the unload sequence. Keep them connected until the spreader has done its job and it hits the end - at which point it will stop. That's also why we use a 9V battery. It doesn't have enough torque to over spin the thing since the normal limit switches aren't able to limit us from damage. Don't hold the leads very long or you really could damage something.
Now move the leads over to the swallower motor and touch them there. Again, swap the leads if you get it backward the first time and nothing happens. Yippee! Here comes the tape! Right out the drive door and into your hand. Yay!
Can't figure out which motor is the spreader, and which is the swallower? That's OK too. Just start touching motor leads (briefly) and see what moves. You'll find them soon enough.
Now you've probably still got to figure out why the tape was stuck, but in the meantime you've got your tape back - intact; and the mechanism is unloaded and still in one piece. Chances are pretty high that something about the tape itself or how it was loaded is what made it stuck and things will just start magically working again. If not, oh well. I don't have all the answers. But if you're ever crazy enough or desperate enough to need to do this, you're probably capable of figuring out what to do next.
I went ahead and bought a new laptop anyway. In any scenario I can come up with, I'm going to be a road warrior at least part of the time. And a laptop down under is going to cost twice as much as it does here. So I picked up one of those cute little Toshiba Satellites. Had my eye on it for a long time. The reason I didn't do this before was the length of time it would take to get a development environment setup and working.
But when you get right down to it, it's no different from trying to get a working version of SunOS 20 years ago. I 've got a basic operating system (Vista, yuck!!!!!!!!). But I really don't care about the operating system. Honestly, they all suck. Some just suck more than others. But I just need something/anything that will load and run a handful of tools.
So what tools do I need?
- Firefox
- Thunderbird
- Filezilla
- ssh
- emacs (and my 20 year old .emacs startup file that I can't live without)
- UnxUtils (especially gunzip so I can unpack emacs)
- Xampp (Apache, MySQL, PHP, phpmyadmin, etc.)
- the GIMP
- ... my web development tree
- ... my databases
It isn't a huge list. I managed to get copies of all of them onto the laptop in under 2 hours. The hard part is configuration and customization. But that isn't as important as I thought. I've got time to configure it. Once I've got everything on the above list, I can unplug at any time and configure at my leisure. At the airport, on the beach, in a tree. You get the idea.
And this is a good thing because the time to unplug is fast approaching. Uhm, that would be tomorrow...
My Linux server has been my trusty friend and companion for about the last 12-13 years - with only a couple of down days to replace power supplies and perform system upgrades. A year ago, you would have been reading these pages on that same box. It's seen me through good times and bad. Rich and poor. Oh what times we've had. Any time - day or night; it was always there to greet me. And from there to reach out to the larger world. All of my thoughts and ideas have passed through it at one time or another.
But it's time to turn it off and pack it up to ship away. I've handed off the task of serving up web pages. I've handed off the task of receiving my daily spam. But the Linux box has still remained at the center of my world. It's my development workstation, where I try out all my new ideas and test them before I unleash them on you folks. It's also my gatekeeper, keeping the bad guys out; and the hub around which I built my wired household.
But something else happened in the last ten years. All of my favorite development tools have been rewritten to run on Windows. The whole LAMP stack (minus the 'L' for Linux). Apache, PHP, MySQL. Emacs. The GIMP. Even bash. That's all I need to create webapps. And I've even got awk and sed for when I need to get down and dirty.
So I can do all my web development from a PC running that horrible operating system from Redmond and not miss a beat. Any old laptop will work. At least it's enough to get me by until I can boot everything up again half a world away.
But the sadness slowly drifts over me. It's time to unplug.
Sigh...
Ya know, the more I think about - I believe that the next wave on the web is going to be heuristics. OK, that and pay-per-view. But think about it. This wave has been all about collecting and value-adding zottabytes of data. Folks are starting to harvest all these data collections and finding other ways to add value.
The real value will come from using this info-wealth as training data that our systems can learn from. That's what heuristics is all about... learning. Then this internet could get really freaking smart. People who looked at this page or bought this thing almost always looked at that one or bought this item. You've already seen this on Amazon. We'll need this kind of machine learning to get through the pending info glut. I already mentioned infinite content streams. The web has grown bigger than any of us can ever hope to visit in our lifetimes - even to find the places that interest us. We're going to need help. Things we are interested in will need to know our interests and either find us or migrate to the top of the pile.
But not the junk. There isn't enough time for it. For information based companies, survival will depend on being good at doing this. You can't rely on Google page rank alone. There are way too many people fighting for that pole position. You won't be able to hold it forever.
Let's move this idea to something bigger than Amazon. Take it to the whole web. Let's go to CNN. Ah, we see that you don't care about the presidential primary. Libertarian buddhist males over 45 traditionally tend to lose interest in the event. Would you like some tech news? And nine out of ten people who saw this particular article also liked to see this other one from our Offbeat section. Should we show that to you now?
Now for Google. Paris Hilton. Hmm. We noticed that every time a male in your age group asked for a (female) celebrity search they followed it shortly thereafter with 'naked'. Shall we just cut to the chase and take you there instead? Yesterday it seems that 40 million people downloaded a particular video of her. Is that what you're after?
Then for web 4.0 we'll be able to feed our own data into the mix. Web 3.0 is learning based on populist trends. Web 4.0 is personalized. Grab my entire weblog. All my surfing habits. Use that as training data. You'll know what I'm going to like or where I like to go even before I do. Then we might finally achieve the computing vision we all grew up hoping for. Hello computer. Give me a quick summary of everything in the world that I care about. Yes, I'd like to have breakfast at Frank's Place. Just like on every third Tuesday of the month. A new Indiana Jones movie came out? Great! It's already on my Netflix queue? Thanks.
The down side is that they'll have you pegged. The systems will know what you're going to buy and who from and how much you're willing to spend and when you're going to buy it.
The bright side of this is with negative content. Accuracy goes up as you acquire more training data. It would be hard to beat a heuristic spam filter that has been trained with 30 trillion spam messages. If you don't want to see porn, it could just as easily be removed by a neural net. We certainly have enough data on the net to train it to almost foolproof accuracy today.
Before you scoff, consider that in most cases we already have the data. That's the hard part. The easy part is writing a little function/script to take what we know about you and then (based on that) spit out a probability that a particular piece of content will please you. For some web properties this could be as easy as twenty lines of code. It's the same thing they use to show reports to management. For the rest of us, it could be a page or two - still not a big deal in the larger scheme of things.
I've been playing a bit with creating a 3d tic-tac-toe game for the website. Turns out that it wasn't horrendously difficult to program, but I forgot how easy it is to win. There are a variety of popular handicaps. A popular one is to remove/disable the center square on the second level. This makes it marginally more difficult to win easily. Another popular tweak is to turn it into four-square (4X4X4) which also removes the center spot advantage. I haven't yet decided which tweak to go with, or figure out if I can balance the odds even further.
You can try it out at here, but be advised that I've still got a lot of work to do, and it still has some bugs.
As of this morning you can still win without thinking too hard - but I just made it a bit more challenging. The computer player will now nab the center spot if it's available (though you still have the first move). There is also a 'handicap' mode that removes the center spot from the game.
The computer player is still pretty dumb. It's mostly playing a defensive game, and isn't really doing any strategic planning.
'The computer player is still pretty dumb. It's mostly playing a defensive game, and isn't really doing any strategic planning.'
...Yet. I've figured out some really killer 3d-t-t-t strategies. Now I just have to translate them into something that can be parsed by a machine.
-- Charlie McCarthy

Digg
Delicious
Netscape
Technorati
Certainly the idea that children in underdeveloped and poor countries should learn to use the internet and wireless networks without using Intel or Windows is a bad one...but can someone tell me why?
LOL