Archive for the ‘General’ Category

h1

Reading the FreeBSD Kernel

March 13, 2009

In September, 2005, I had the opportunity to exchange e-mail with Halil Demirezen on the subject of getting to know the FreeBSD kernel. Since the answer seemed of more general interest, I thought I’d posted it on my web site in case it was of interest to anyone else.

From rwatson at FreeBSD.org Tue Sep  6 14:10:10 2005
Date: Tue, 6 Sep 2005 14:10:10 +0100 (BST)
From: Robert Watson <rwatson at FreeBSD dot org>
To: Halil Demirezen < halil at enderunix dot org>
Subject: Re: One dummy question but important for me.
On Tue, 6 Sep 2005, Halil Demirezen wrote:

> It is one little sample of hundred thousands of silly questions. But for
> an individual it is really important one. I have been dealing with
> kernel (/usr/src/sys/) in FreeBSD. However, this is really a big
> challenge. My graduate thesis was a little i386 kernel that boots from
> Floppy Disks (3 1/2). Run in protected mode. A shell little memory
> management and multiprocessed one.
>
> I am coping with FreeBSD kernel to understand and to hack it. Where to
> start? It is really difficult to understand the essentials. I am sure i
> will spend my time on it. But what are the first essentials for a kernel
> developer to be in the developing. I know it is easy for one who started
> developing FreeBSD from the beginning. But as the code grows, It starts
> to be impossible to begin. I tried to start from booting process. But
> the kernel structure got lost in mind. When I try to understand one
> source file, I need to open several to unite the all.

Halil,
Well, the FreeBSD kernel is a huge piece of software — I’ve been working
with it fairly continuously for about 8-10 years now, and only feel like I
really understand a fraction of it.  On the other hand, it turns out that
partial understanding is still good enough to do some useful work :-) .
There are a couple of ways to go about learning about the structure of the
kernel.  If you don’t already have a copy of McKusick and Neville-Neil’s
Design and Implementation of FreeBSD book, you should see if you can get a
copy.  While it’s hardly an introductory guide to the kernel, it does do a
good job of presenting important depth about a lot of important
subsystems.  I find it more useful as reference material than reading
material, but it’s quite helpful.

Another way is to go at it from the perspective of reading source code.
If you’ve skimmed or read the above book, I would recommend using one of a
number of source code browsing web sites to start exploring the kernel.
There are a couple of places you might begin, depending on what you want
to learn.  Here are a few you might try:

http://fxr.watson.org/fxr/ident?i=mi_startup

mi_startup() is the machine-independent system boot function, which occurs
after the low level hardware has been initialized, and is responsible for
kicking off SYSINIT(), the boot time registration mechanism.  Various
kernel components declare code that has to run at boot using SYSINIT()
macros, which are ordered using subsystem ID’s.  You can find a list of
the subsystems and their ordering here:

http://fxr.watson.org/fxr/ident?i=sysinit_sub_id

You may also be interested in the proc0 initialization function — process
0 becomes the kernel process and swapper, and is started by mi_startup()
via sysinit:

http://fxr.watson.org/fxr/ident?i=proc0_init
http://fxr.watson.org/fxr/ident?i=proc0_post

Another important starting point is the process 1 kernel code, which is
the kernel process that runs init(8), which in turn kicks off the start of
user space:

http://fxr.watson.org/fxr/ident?i=create_init
http://fxr.watson.org/fxr/ident?i=start_init
http://fxr.watson.org/fxr/ident?i=kick_init

The start_init() function is run in process 1, which is created by
create_init() run by sysinit in process 0.  Once init is created, it will
be started by kick_init(), also run by process 0 using sysinit.
Prior to mi_startup(), machine-dependent boot code runs.  The details vary
a lot by platform, but the code is pretty much always named “locore”, and
is the entry point for the kernel loaded by the boot loader:

http://fxr.watson.org/fxr/source/i386/i386/locore.s

It generally is responsible for getting the kernel set up to execute,
laying out kernel memory, preparing stacks, and all that.  There’s a book
by Jolice called “Kernel Source Code Secrets” in two volumes, which
describes the early 386BSD kernel.  While the code has changed quite a lot
since then, it can still make useful reading in understanding locore and a
number of other parts of the kernel.

Sysinits are particularly interesting for understanding the boot process
because they rely on kernel linker sets and hook mechanically into both
the boot process and module load process.  Sysinit functions are run in
the order they appear in the enumeration, and you’ll find that many kernel
subsystems register the components using macros wrapped around sysinit.
For example, VFS_SET() is a macro that declares the initializes for
virtual file system implementations, allowing the file systems to register
themselves for use later:

http://fxr.watson.org/fxr/ident?i=VFS_SET

Another perspective from which to view the kernel and explore the source
is from the perspective of the steady state offering services to user
space.  The most useful starting point here is:

http://fxr.watson.org/fxr/source/kern/syscalls.master

This is the master system call definition file, from which other files,
such as init_sysent.c, are generated.  Each system call listed in
syscalls.master is implemented by a function by the same name in the
kernel.  For example, sync() is declared in syscalls.master, and
implemented by a function named sync() in vfs_syscalls.c:

http://fxr.watson.org/fxr/ident?i=sync

So you can investigate code paths taken by particular system calls
starting there.

Of course, system calls aren’t the only way to enter a kernel.  A variety
of traps exist, some leading to the VM system, others to signal handlers,
math emulators, interrupt handlers, and so on.  The low level trap code is
machine-dependent, but will usually be implemented by a function named
trap():

http://fxr.watson.org/fxr/ident?i=trap

It calls into a lot of other things, including the system call vector for
the process, generally derived from syscalls.master or an emulator
variant, the page fault handler, and so on:

http://fxr.watson.org/fxr/ident?i=trap_pfault

On return from a system call (and various other circumstances), userret()
is also interesting:

http://fxr.watson.org/fxr/ident?i=userret

Hopefully this is a useful starting point for browsing?
Robert N M Watson

h1

Microsoft, TCP/IP, Open Source, and Licensing

February 11, 2009

A Wall Street Journal article titled Microsoft Uses Open-Source Code Despite Denying Use of Such Software recently caused a ruckus on the Web.

The article stated that Microsoft was running FreeBSD on some of the servers used by Hotmail, its free Web email service. It also claimed that “software connected with the FreeBSD open-source operating system is used in several places deep inside several versions of Microsoft’s Windows software, such as in the `TCP/IP’ section that arranges all connections to the Internet.”

I worked at Microsoft for ten years, most of it on the core Windows NT/2000 (hereafter referred to as NT) networking code. As such I briefly dealt with the Hotmail team, mostly to hear them complain about the lameness of the telnet daemon in NT (a valid point). I do know that when Microsoft bought Hotmail, the email system was entirely running on FreeBSD, and Microsoft immediately set about trying to migrate it to NT, and it took many years to do so. Now it seems that the transition is not complete. Well, what are you gonna do.On the other hand, I know a lot about the TCP/IP stack that is running on NT. Here is a short history of it (some of this may also be told in the book How the Web Was Won, but I haven’t read it):

The original plan for NT was that a few members of the core NT team (which numbered about 15 developers) would write all the networking code. However, in 1990 a small team was started up in the LAN Manager group at Microsoft to do some of that NT networking work. Eventually that team moved over to be a part of NT (this coincided with the IBM-OS/2 “divorce”, if anyone is interested).

Microsoft’s networking software at the time ran over a network protocol called Netbeui, but it was decided that TCP/IP was gaining in importance, and should be included in NT. In addition, the user-mode API associated with Netbeui, which was called Netbios, was too Netbeui-specific and couldn’t be adapted to allow user-mode access to TCP/IP. As a result, the decision was made:

1) To put a TCP/IP stack in NT

2) To adapt the sockets user-mode API for NT

#1 was solved by licensing code from a company called Spider Systems. However, Spider’s TCP/IP stack was written to run within an environment called STREAMS, which was a wrapper that specified how the various parts of the stack would communicate with each other (TCP/IP is really several pieces of code — two of which are TCP and IP — layered on top of each other. Most network protocols are like that, which is why they are referred to as “stacks”). As a result, STREAMS also had to be ported to NT.

#2 involved the creation of the winsock API, which persists today.

It was recognized that using Spider’s stack was a temporary measure, because nobody really wanted a stack that depended on STREAMS and its associated overhead. So, a short time after this, work was begun on a new version of TCP/IP, written entirely by Microsoft.

Along with Spider’s stack came versions of various TCP/IP-related utility programs, such as ftp, rcp and rsh. Those were ported from BSD sockets to winsock (not a huge change) and bundled with NT.

Now, some of Spider’s code (possibly all of it) was based on the TCP/IP stack in the BSD flavors of Unix. These are open source, but distributed under the BSD license, not the GPL that Linux is released under. Whereas the GPL states that any software derived from GPL’ed software must also be released under the GPL, the BSD license basically says, “here’s the source, you can do whatever you want, just give credit to the original author.”

Eventually the new, from scratch TCP/IP stack was done and shipped with NT 3.5 (the second version, despite the number) in late 1994. The same stack was also included with Windows 95.

However, it looks like some of those Unix utilities were never rewritten. If you look at the executables, you can still see the copyright notice from the regents of the University of California (BSD is short for Berkeley Software Distrubution, Berkeley being a branch of the University of California, for some reason referred to as “Berkeley” on the East Coast and “California” on the West Coast…and “Berkeley” is one of those words that starts to look real funny if you stare at it too long – but I digress).

Keep in mind there is no reason to rewrite that code. If your ftp client works fine (no comments from the peanut gallery!) then why change it? Microsoft has other fish to fry. And the software was licensed perfectly legally, since the inclusion of the copyright notice satisfied the BSD license.

I won’t even swear on a stack of bibles that the “new” TCP/IP now shipping in NT/2000/XP and Windows 95/98/Me is completely free of the old code from Spider. Since I don’t work there I don’t have access to the source code. Certainly some parts of TCP (the checksum calculation comes to mind) are the same everywhere and once someone has written an optimized version, why rewrite it? And once again, this would be perfectly legitimate for Microsoft to do under the license.

But it is certainly misleading of the Wall Street Journal to say that BSD code is used “deep inside” the NT networking code, unless they mean the STREAMS wrapper itself, which I believe is still there in case someone wants to write a transport using it (I think there is an OSI TP4 STREAMS transport lurking somewhere out there, if anyone cares – but I just checked, nobody does). But the TCP/IP in NT certainly doesn’t use STREAMS.

And implying that the TCP/IP stack uses BSD code is also false. As I said above there may be small vestiges of it in there, although I doubt it. Anyway the FreeBSD programmers who reported all this to the Wall Street Journal can’t see the NT TCP/IP source either, so they can’t have been referring to that.

But whatever! It isn’t the first time Microsoft has been maligned by the press, and it won’t be the last.

However, this history does illustrate Microsoft’s view of the GPL. As you may recall, Microsoft VP Craig Mundie recently claimed thatthe GPL is anti-competitive, un-American, flea-infested, locust-plagued, etc. This followed up on similar claims by another VP, Jim Allchin, so it appears that this is the angle Microsoft has chosen to attack Linux.

On the face of it, Microsoft complaining about the source license used by Linux is like the event horizon calling the kettle black. Microsoft has no source license at all to speak of (for the general public anyway)! Anyway when did the source license of a piece of software become an issue for the average Joe who wants to buy it? As a former Microserf, I’ll be the first to admit that Mundie’s arguments make no sense for the industry in general.

Still from Microsoft’s point of view, the source license of software does matter, because Microsoft might want to license the code. As it did in the case of the TCP/IP code it got from Spider, which was under the BSD license. If Spider’s code had been under the GPL, Microsoft couldn’t have used it. In other cases, Microsoft has licensed software from companies that were not open source at all, but Microsoft was able to negotiate a private license for its own use.

Again I’m not defending Microsoft’s viewpoint. For any given piece of code, there may be five companies in the world that want to license it, 500 programmers who want to modify it, and 5 million users that want to use it. So the GPL is a good thing in general. Microsoft’s main goal with the anti-GPL rhetoric is to discredit Linux, not to make it easier for it to license third-party software.

Still you can see how Microsoft’s stance, from its own weird, warped perspective, almost makes some little iota of sense.

Courtesy: http://www.kuro5hin.org/?op=displaystory;sid=2001/6/19/05641/7357

h1

more about oneha|f

August 15, 2008

come and join, if you are a person interested in malware research, love systems programming, hit your head in asm instructions, and what so ever related to depth of systems programming …

 

malware research is an interesting area … we will learn about extreme programming concepts, nice techniques, and depth about computer networks and computer itself …

 

the main reason to create this group is to unite people in this arena … please no spammers, no script kiddies, no junkies … you can only join through people who are already in the group …

 

the group is highly moderated … the reason is … we don’t want to allow some one to come and sniff our messages, ask for tutorials, look for exploit codes … please don’t bug us .. we are already busy ! …

 

 

you can reach this group at http://groups.google.com/group/onehalf

 

and the web blog is at http://oneh.wordpress.com

h1

malware research group

August 15, 2008

I have opened a new group called ” oneha|f “

a place for people to do malware research, malware code analysis, behaviour analysis, discuss about defending malwares, incident response and much more …

focus will be more on code analysis, reverse engineering, assembly, worm techniques and what not …

h1

Independence day

August 15, 2008

happy Independence day

h1

Return of the ’70s Weirdos

June 28, 2008

Return of the ’70s Weirdos

Courtesy Microsoft
That photo of 11 weirdos in ’70s clothes you may have seen on the Internet really is the original Microsoft team, snapped Dec. 7, 1978, on the eve of the company’s move from Albuquerque, N.M., to Seattle. Almost 30 years later, a few weeks before Bill Gates’s departure from Microsoft, the group (looking better) reconvened.

Bob Greenberg (center of old photo, in red sweater), then a programmer and now a tech and financial consultant, had won a photo portrait in a contest and used it to commemorate the soon-to-be disrupted group. The picture was shot in a shopping mall.

“The photo really does capture a moment of time and the spirit we had in the office,” says cofounder Paul Allen (bottom right), now a media and sports mogul. Signing up for a little company in the then unknown field of PC software was a crazy leap of faith. “I could have had an office and a title from a respectable company—but I thought this would take off,” says programmer Gordon Letwin (second row, right). He stuck around Microsoft until taking leave in 1993. Bob O’Rear (second row left, above Gates), the most experienced of the group (he’d been a NASA engineer, now he’s a cattle rancher), concurs—sort of. “My concept of success for us was that someday we’d have 40 people or so.”

Present for the reunion was office manager Miriam Lubow (center of new picture), who missed the original sitting due to a snowstorm. (When Lubow, now retired, first met Gates, she couldn’t believe that disheveled kid was the president.) Absent for the reshoot was Bob Wallace (top center), who died in 2002; after leaving Microsoft in 1983, he pioneered the idea of shareware.

Though the meeting could have been tense—some in the group have many millions of dollars, others … not so much—it was joyous from the first. Steve Wood (top left), whose wife, Marla (third from left, bottom), was also an employee (he is now chairman of a telecom company; she does volunteer work), says that the photo isn’t their legacy: “Our legacy is what we did.”

h1

Good bye bill

June 28, 2008
Good bye bill
Watch videos about the life and work of Bill Gates and Microsoft's future
good bye bill gates !!!!!
you are a true inspiration in my life :)
h1

Bill Gates Chews Out Microsoft Over XP

June 27, 2008

With Bill Gates saying good-bye to Microsoft this week, we’re realizing more by the day how much we’ll miss the guy. And when reading through the many interviews floating around this week, we came across this jewel from 2003. A leaked memo from Microsoft, it’s several pages of Gates just laying into his design and programming staff for—among other issues—his personal experience when trying to install Windows Moviemaker. And it’s a very fulfilling read if you’ve ever been frustrated by a Microsoft product.

 

From: Bill Gates
Sent: Wednesday, January 15, 2003 10:05 AM
To: Jim Allchin
Cc: Chris Jones (WINDOWS); Bharat Shah (NT); Joe Peterson; Will Poole; Brian Valentine; Anoop Gupta (RESEARCH)
Subject: Windows Usability Systematic degradation flame

I am quite disappointed at how Windows Usability has been going backwards and the program management groups don’t drive usability issues.

Let me give you my experience from yesterday.

I decided to download (Moviemaker) and buy the Digital Plus pack … so I went to Microsoft.com. They have a download place so I went there.

The first 5 times I used the site it timed out while trying to bring up the download page. Then after an 8 second delay I got it to come up.

This site is so slow it is unusable.

It wasn’t in the top 5 so I expanded the other 45.

These 45 names are totally confusing. These names make stuff like: C:\Documents and Settings\billg\My Documents\My Pictures seem clear.

They are not filtered by the system … and so many of the things are strange.

I tried scoping to Media stuff. Still no moviemaker. I typed in movie. Nothing. I typed in movie maker. Nothing.

So I gave up and sent mail to Amir saying – where is this Moviemaker download? Does it exist?

So they told me that using the download page to download something was not something they anticipated.

They told me to go to the main page search button and type movie maker (not moviemaker!).

I tried that. The site was pathetically slow but after 6 seconds of waiting up it came.

I thought for sure now I would see a button to just go do the download.

In fact it is more like a puzzle that you get to solve. It told me to go to Windows Update and do a bunch of incantations.

This struck me as completely odd. Why should I have to go somewhere else and do a scan to download moviemaker?

So I went to Windows update. Windows Update decides I need to download a bunch of controls. (Not) just once but multiple times where I get to see weird dialog boxes.

Doesn’t Windows update know some key to talk to Windows?

Then I did the scan. This took quite some time and I was told it was critical for me to download 17megs of stuff.

This is after I was told we were doing delta patches to things but instead just to get 6 things that are labeled in the SCARIEST possible way I had to download 17meg.

So I did the download. That part was fast. Then it wanted to do an install. This took 6 minutes and the machine was so slow I couldn’t use it for anything else during this time.

What the heck is going on during those 6 minutes? That is crazy. This is after the download was finished.

Then it told me to reboot my machine. Why should I do that? I reboot every night — why should I reboot at that time?

So I did the reboot because it INSISTED on it. Of course that meant completely getting rid of all my Outlook state.

So I got back up and running and went to Windows Updale again. I forgot why I was in Windows Update at all since all I wanted was to get Moviemaker.

So I went back to Microsoft.com and looked at the instructions. I have to click on a folder called WindowsXP. Why should I do that? Windows Update knows I am on Windows XP.

What does it mean to have to click on that folder? So I get a bunch of confusing stuff but sure enough one of them is Moviemaker.

So I do the download. The download is fast but the Install takes many minutes. Amazing how slow this thing is.

At some point I get told I need to go get Windows Media Series 9 to download.

So I decide I will go do that. This time I get dialogs saying things like “Open” or “Save”. No guidance in the instructions which to do. I have no clue which to do.

The download is fast and the install takes 7 minutes for this thing.

So now I think I am going to have Moviemaker. I go to my add/remove programs place to make sure it is there.

It is not there.

What is there? The following garbage is there. Microsoft Autoupdate Exclusive test package, Microsoft Autoupdate Reboot test package, Microsoft Autoupdate testpackage1. Microsoft AUtoupdate testpackage2, Microsoft Autoupdate Test package3.

Someone decided to trash the one part of Windows that was usable? The file system is no longer usable. The registry is not usable. This program listing was one sane place but now it is all crapped up.

But that is just the start of the crap. Later I have listed things like Windows XP Hotfix see Q329048 for more information. What is Q329048? Why are these series of patches listed here? Some of the patches just things like Q810655 instead of saying see Q329048 for more information.

What an absolute mess.

Moviemaker is just not there at all.

So I give up on Moviemaker and decide to download the Digital Plus Package.

I get told I need to go enter a bunch of information about myself.

I enter it all in and because it decides I have mistyped something I have to try again. Of course it has cleared out most of what I typed.

I try (typing) the right stuff in 5 times and it just keeps clearing things out for me to type them in again.

So after more than an hour of craziness and making my programs list garbage and being scared and seeing that Microsoft.com is a terrible website I haven’t run Moviemaker and I haven’t got the plus package.

The lack of attention to usability represented by these experiences blows my mind. I thought we had reached a low with Windows Network places or the messages I get when I try to use 802.11. (don’t you just love that root certificate message?)

When I really get to use the stuff I am sure I will have more feedback.

When Seattle Pi recently asked Gates about the email, he replied, “There’s not a day that I don’t send a piece of e-mail … like that piece of e-mail. That’s my job.” There was no mention as to whether or not Gates had time to take names.

h1

A Brief History of Slashdot Part 1, Chips & Dips

May 12, 2008

As part of our 10 year anniversary celebration, I’ve decided to post a story here telling the tale of the transition from Chips & Dips to Slashdot back in 1997. For those of you who are new here (cough), CnD was the precursor to Slashdot, hosted on my personal homepage on the CompSci cluster of Hope College. Along with a number of random Linux related webpages, themes for window managers, random bits of code I wrote, this page was read by a great number of folks, mostly from the IRC scene. Hit the link below to read the tale of its transformation into an Internet superstar (and maybe later I’ll write the the sequel where I talk of the transformation into sellout mega corporate evil and eventually irrelevant blemish on the history of the net ;) And don’t forget to check for a Slashdot 10 year anniversary party in your area.

In the summer of 1997 I was contacted by a stranger out of the blue with a kind of random offer. During the previous school year Nate Oostendorp (who now works with SourceForge, Inc. while working on his Masters) had coded a Space Invaders clone. He wrote a Java sprite library, and I wrote the game and illustrated the alien armada. This guy had an old DEC Alpha Multia 166, and a client that wanted to remake the game with popcorn instead of aliens. So I drew the popcorn up, replaced the gifs, and he mailed me my first non x86 box since the 286 I got in middle school. (Later Sun sent me legal threats forcing me to take the game offline since it was called Java Invaders, and clearly this was an evil crime against the universe. My hatred for Java has never died since that moment.)

I immediately installed Red Hat on it. I was working at an ad agency called The Image Group at the time as a webmaster. I coded whatever needed doing and handled various admin tasks to keep their clients happy. At the time they needed full control over email addresses on the domains they built. Since they shared their mailserver with their ISP, there were frequent name collisions — if the client wanted bob@theirdomain.com but there already was a bob on the system, they couldn’t do it. They agreed to let me move my little Alpha onto their network to host their email… and I could use it to fart around with on my personal hobbies.

I named the box Ariel. It sat under my desk. I learned enough Perl to write a stupid simple CMS to replace the functionality of Chips & Dips, which up until that point was just a text file. Dave DeMaagd wrote a simple comment system. Since we both had a long history with BBSes, it seemed obvious to us that there needed to be a discussion system. There were no user accounts — you entered whatever name you wanted each time you posted. If you left it blank, it auto-filled the space with the name ‘Anonymous Coward’, a title that stuck and spread throughout the net.

The original system was written in Perl because I wanted to learn more Perl. All the data storage was flat text files. (We lost most of the original stories during a data import a year or so later) The files were named like 0000001.shtml and so forth and were all rendered at time of page request. Best of all, since the system was written as a CGI, the whole script needed to be compiled every time there was a page request. It was months before I ported the whole thing to use MySQL and mod_Perl.

I registered the domain name Slashdot.org as a joke. It was ‘org’ because I didn’t want a .com — those were so common. I always thought org would be cooler, and besides, I had no commercial plans in mind. (Years later this bit me on the ass since someone else registered the .com. Doh!) The URL was meant to be unpronounceable by anyone — a joke ultimately that has backfired on me countless times when I’m called and asked what the URL is to the damn thing. Jeff ‘Hemos’ Bates (now a VP of something or other with SourceForge, Inc.) was in the living room when I was registering the domain name. We all wanted email addresses with a unique domain name that wasn’t attached to our school, so he chipped in on the registration fee.

When it came time to design the website’s look, I took elements from a theme we had designed at The Image Group — Paul Hart and I spent hours on it — that was supposed to be the new website for the company, but it was passed on for another look. I still liked it, so I redesigned it more to my personal aesthetics (choosing #006666 as the dominant green replacing an earth tone green) and putting drop shadows all over everything (a habit I still haven’t broken, and for which I am still mocked). Within days, most of the design elements you see on Slashdot were in place… the curves, the greens, the polls, the vertical list of stories so common in 2007, and, of course, discussions on each story.

And Slashdot was born. At first it had just a few thousand daily readers migrating over from Chips & Dips, but in a matter of weeks it had grown so fast that we started really having fun with it. One night we put up a poll asking how many shots Kurt ‘The Pope’ DeMaagd should drink. (Kurt later became our defacto HR man when we formed Blockstackers… today he is a professor at MSU.) But that night, Slashdot readers told him to take a dozen shots of alcohol — he failed, but he tried.

I remember around the same time just watching ‘tail -f’ on the access_log. My world was rocked over and over again as I watched the domain names… mit.com! ibm.com! redhat.com! Hell, even microsoft.com kept scrolling through the log. I knew we had something… people from around the world, from the highest institutions in the land, from the biggest companies in the tech sector and to the most influential in the Linux world were all reading Slashdot. In fact, they were posting comments… as were a lot of people. It became commonplace to see hundreds of comments on stories, and the so-called ‘Slashdot Effect’ slowly grew into our lexicon as site after site buckled under our links.

In those days the content was a lot more personal then it is today. Stories would frequently refer to alcohol-related activities. I’d constantly mention that I had to leave to go to class so there wouldn’t be more stories posted for a few hours. And when a professor in my pottery class assigned homework of to mass produce and sell some pottery as a lesson in being a commercial artist, I posted it, and ended up getting over 100 requests to buy my shitty mugs (all glazed teal ;) In the end I never did sell them — I fulfilled the assignment locally. I think I still have one of those mugs left but I’m not sure- over the years my mediocre ceramics have been filtered out of a home increasingly tastefully decorated by my wife.

I continued to go to class and work my part time job. Ariel soon had loads so great that the machine was unusable during the day. And occasionally I would accidentally kick it and knock out a cable, bringing the machine offline. Soon after it saturated the office T1, I started realizing that there was no way I was going to be able to do this as “Just” a hobby. Essentially, every second of my life was consumed without time for a break. I’d go to class — and often just work on Slashdot in the back row. (This was the first year we had computers at our desks in the CS dept at Hope.) My classwork suffered. On the upside, I became far more proficient at webwork, which really helped the part time job. I’d go home and code, post stories, reply to email until 2-3 a.m. and repeat it the next day. It was going to eventually be a full time job, requiring revenue and infrastructure that didn’t exist back then. But I guess that’s another story.