Quantcast

Remembering GeoCities and KickTam

After fifteen years, GeoCities is shutting down for good today. The Internet Archive has been working with Yahoo to make sure that the Wayback Machine has a complete, final snapshot of GeoCities before it goes offline.

The Archive Team, another archivist group run by Jason Scott of textfiles.com, is also archiving GeoCities. Jason created an under construction animated gif gallery to show the important cultural artifacts that we are going to lose with the GeoCities closure. I was browsing the gallery and found this little guy:

sesenshi-moonkawaii_construction

That penguin looks a lot like Tux, the linux penguin, but he’s actually the old-school mascot of QuickTime. I think his name was KickTam, which was how someone’s kid pronounced QuickTime. I forget the details.

KickTam isn’t used by Apple marketing, but you can sometimes find him hanging out with the QuickTime developers. He’s seen less and less everyday, and I was surprised to stumble upon him wearing a hard hat.

I think the only place that Apple still has KickTam up on apple.com is on the Letters from the Ice Floe page. Icefloe were tech notes that were useful to developers. I remember pointing people to Icefloe #19 every once in a while, and was surprised to see it is ten years old now. It seems the last Icefloe was written in 2001, and I imagine these will slip off apple.com soon, and KickTam will be gone from the net forever.

The Front Page

3_fullposter

I just ordered this poster showing the covers of major newspapers after election day. $20. Makes a good holiday gift!

Why gcc has a free Objective C frontend

Apple compiles OS X and almost all of its software with gcc. I still find it hard to believe that such a secretive company builds almost all of its software products using gcc, the compiler that anchors the Free Software movement.

Apple’s uses Objective C because NeXT used Objective C. When Steve Jobs was at NeXT, he didn’t want to place their objc gcc frontend under the GPL, but ended up having to. Here is an excerpt of an email from Stallman:

I say this based on discussions I had with our lawyer long ago.  The
issue first arose when NeXT proposed to distribute a modified GCC in
two parts and let the user link them.  Jobs asked me whether this was
lawful.  It seemed to me at the time that it was, following reasoning
like what you are using; but since the result was very undesirable for
free software, I said I would have to ask the lawyer.
 
What the lawyer said surprised me; he said that judges would consider
such schemes to be "subterfuges" and would be very harsh toward
them.  He said a judge would ask whether it is "really" one program,
rather than how it is labeled.
 
So I went back to Jobs and said we believed his plan was not allowed
by the GPL.
 
The direct result of this is that we now have an Objective C front
end.  They had wanted to distribute the Objective C parser as a
separate proprietary package to link with the GCC back end, but since
I didn't agree this was allowed, they made it free.

So that’s why. Via this email thread between Richard Stallman and Bruno Haible about why Common Lisp is under the GPL. Via reddit.

Apple’s move to the GNU Toolchain has been very good for developers (remember MrC and MPW?), but it sure took a long time to get here. Yesterday I remotely debugged an iPhone app using gdb. Spending time in a debugger isn’t usually a very pleasant, but I surprisingly happy when gdb stopped at my first breakpoint…

Pumpkins for Obama!

This site even has stencils so you can make your own! I think it’s time for a TR pumpkin carving party! :-)

Pics from the GitDown

We went to a ridiculous event put on by the GitHib crew. It was like dorkbot but with version control instead of electrons.

The 2008 VP Debate Drunky Bingo Game

No one should have to watch the debates sober.

Be sure to print out some Drinky Bingo Boards before the hurting begins.

Update:

THE ROBOT BURNS TONIGHT!

What’s making me happy today: Free Software License Upheld in US Court

The Court of Appeals for the Federal Circuit has ruled that the Artistic License is enforceable! Happy day! The 16-page opinion is a good read.

From Lawrence Lessig:

So for non-lawgeeks, this won’t seem important. But trust me, this is huge.
[snip]
In non-technical terms, the Court has held that free licenses such as the CC licenses set conditions (rather than covenants) on the use of copyrighted work. When you violate the condition, the license disappears, meaning you’re simply a copyright infringer. This is the theory of the GPL and all CC licenses. Put precisely, whether or not they are also contracts, they are copyright licenses which expire if you fail to abide by the terms of the license.

Important clarity and certainty by a critically important US Court.

via reddit

Update:

orig photo by Sam Ogden

Speaking of Games…

This is a dumb one but totally sucks me in because I suffer from OCD. (hehe, it’s embedded below so you can play right now…in fact, I’m gonna play *just one* game right now…*just one* and then I’m closing the browser, I promise :)

Gobby: Open-Source, Cross-Platform Collaborative Text Editing!

Shag and I were collaboratively hacking on a new radio station for the archive, and we needed a collaborative text editor. SubEthaEdit is great, but Mac-only. Shag found Gobby, which is a like an open-source SubEtha that works great on Linux.

If you haven’t used a collaborative editor before, multiple authors can work on the same files, and everyone sees each others edits in real time, differentiated by background color. Gobby has syntax highlighting, integrated chat, over-the-wire encryption, and is a pretty solid text editor too. We love it! Here are some ideas we had for future patches:

  • indent-region
  • sound cue upon message receipt
  • auto-indent
  • birds-eye view of the file to watch changes go in
  • function dropdown

As soon as we get indent-region and function dropdowns patched in, I’ll switch my main unix editor from KDevelop to Gobby.

On Software Development

PaulR said this at lunch and we all lost it:

Software isn’t finished until the last user is dead.

Original source unknown…

Using git For Large Scale Digital Archiving: An Outline

Here are some notes on how one might re-architect Internet Archive infrastructure to meet some additional goals:

  • easy to set up and replicate
  • provide versioning and transactions
  • handle more media types well
  • better ingest/locate/read apis
  • better search

The current architecture looks like this:
iaarch.png

The diagram is simplified a lot. There are currently about 1800 nodes in the cluster, most of which are storage nodes (low power 1U nodes with 4 1TB hard drives). The deriver nodes are used for crunching things like pdfs and h.264s, and there are about 300 of those. There are 5 www frontends, hidden behind a couple load balancers, and database server has at least one read-only secondary.

What I like about the current infrastructure:

  • Easy to add more storage. Some other archival solutions do not scale well, since they insist all hard drives be connected to the same machine. This starts to break down at the petabox scale.
  • Easy to add more bandwidth. Currently IA is pushing 5+Gbps of outbound bandwidth. Every storage node runs an Apache server, which lessens load on the homenode, which is a problem with other archival systems.
  • Database hits are not required to locate an item on the cluster. When an item is requested through the Locator service, a multicast is sent, and machines that have the item will respond. The lessens load to the DB server, which is important when getting thousands of web requests per second.

What I find interesting about the current infrastructure:
  • RAID is not used. Items are backed up on to a secondary machine when added to the archive.
  • This is mostly due to “RAID is hard to get right” and cost
  • This means there are two machines (and two apaches) ready to serve the same content.
  • One machine can be taken down for repair while the content is still online.
  • I would like to see use of either RAID or maybe RAID_Z

An idea on how to re-architect things using git as a storage backend to provide versioning and transactions
  • git is the version control system used for the linux kernel.
  • git is a totally new way to operate on data. Read this if you are a non-believer.
  • We could keep the infrastructure mostly the same as IA, but store items as git repositories. This would not be a large architecture change.
  • git would become a supported access protocol, in addition to http, ftp, and rsync. Backups could be simple a git pull. We could git clone the entire cluster.
  • We would get versioning!

Changes needed to repo.git to make it useful in an archive cluster:
  • Change reguser.cgi to tie into the existing user database (talk to dbserver)
  • Change regprog.cgi to work in a cluster environment. Repositories are inited in /{0-4}/items/id/id.git on a primary node (talk to catalog/homenode)
  • Use post-commit hook to queue backup and derive tasks (talk to catalog)
  • Change gitweb to show custom view of movie, audio, texts (book), and photo collections. Software collections would show standard gitweb view.

I don’t think this would take too long to implement, but I’m lacking co-conspirators these days.. Maybe when shag makes it to SF we will have to knock something out :)

Ruby 1.9 gains block-level scope

I was watching this Google TechTalk that Yukihiro Matsumoto gave on Ruby and learned that Ruby 1.9 had block-level scope.. cool!

Apparently, block scope is some sort of thing with me:

Remove Leopard Dock’s Obnoxious Mirror Effect

Apple seems to be trading in productivity for flash … here is how to disable the “reflecting mirror” effect from the Dock in Leopard:

defaults write com.apple.dock no-glass -boolean YES

Then send kill -1 to the Dock process.

Link to the blog I found this on

Page-Turner Coffee

Peliom sends in this observation about Philz:

I got the “fire alarm” coffee from philz this AM


sooooo good!


certain coffees I call “page turners” becaues I take a sip and then I have to take another sip, and on and on


just like a book I can’t put down


CC by-nc Photo by Scott Beale/Laughing Squid

WiiMe

wiime1.jpg
They sent me 9 consecutive text messages this morning, alternating between “Wiis are in stock at Amazon! Grab one!” and “No Wiis available :-( they were up for 8 seconds.

I’d pretty much given up until the 9th msg came through and I got one! yay! I can’t believe that it’s been a year already and it’s *STILL* so hard to get a Wii on Amazon. Yes, I know it’s possible to get one at a store if you live in Missouri (or just not in the Bay Area)…or if you wait in line at Best Buy at the crack of dawn, but I really didn’t want to do that (cause I’m lazy). I just wanted to get one online for the office and WiiMe came through!

Memories of Programming the Mac, Pre-OSX

Last night, I had a dream about programming the Mac back in the old days, before OS X. The more I think about it, the more I think I’m still dreaming. Did this stuff really happen? I remember:

  • MPW, the Macintosh Programmers Workshop. The old mac didn’t have a console, or even run.exe. We had MPW, which gave us a commandline of sorts. We could access cvs using MPW. It is still being distributed by Apple.
  • MacsBug. The low-level debugger. Its hard to believe this is all we had. We loved it. DebugStr() was the poor Mac Programmer’s console. My SE/30 (and all Macs) had a “Programmer’s Key” that would invoke MacsBug. If you didn’t have MacsBug installed, the built-in MicroBug would come up instead. Apple still distributes MacsBug. Fortunately, I’ll never need it again.
  • Vague memories of Projector, which was Apple’s version control thing, and Jasik Debugger (The Debugger)
  • MrC. This was Apple’s C compiler. We used MPW to compile our code with MrC. Even if we used Metrowerks to initially write the code, MrC was what we used to compile the engineering builds. Back in the the day, the shipping versions were actually compiled by a *third* compiler, from Motorola, which ran on an AIX box or something.
  • Metrowerks CodeWarrior. I loved CodeWarrior. It was blazingly fast. It has a source-level debugger, which often ignored my breakpoints. It had a great IDE. It had a great Editor. The project files had a .µ extension, no joke. I bought my first copy of CodeWarrior in 1995, at the student rate, using the proceeds of my first real programming job (which is where I met peliom). CodeWarrior still brings back warm memories.
  • BBEdit. I’ve been using BBEdit since forever. It doesn’t suck. It makes me happy, in a security blanket kind of way.
  • Pascal. The Mac Toolbox interface was originally Pascal. Pascal was *the* way to write mac apps way back when. I tried to learn Pascal before I learned C, but never got anywhere.
  • Think C and Think Pascal. Compilers sold by Symantec. I learned C programming using Think C on a SE/30.
  • EvenBetterBusError. I don’t remember BusError, or BetterBusError, but EvenBetterBusError sticks in my mind. I don’t remember what it did, or why I needed it, but I think it was a System Extension.
  • System Extensions. Marching across the screen on boot up. Little friends there to make your life better. The thing people noticed when booting OS X for the first time was that their little friends were all gone.
  • Inside Macintosh. This was the Mac API documentation, originally in Pascal. A giant set of bound volumes, or available in electronic form. I think they were in HelpViewer or DocView format or something..
  • Pascal strings. You still needed them for DebugStr and window titles and such. c2pstr() was often used.
  • PlayMPEGInWindow(). I don’t remember if this was the exact function name, but peliom and I were trying to display MPEG video, and when we tried to see how QuickTime programmers did it, we found this function, and it cracked us up. So easy! When peliom and I both ended up working at Apple, we ended up working directly with the guy that wrote PlayMPEGInWindow(). Small world.
  • System7 Pack. SpeedyFinder7. Greg’s Buttons. These were crazy programs that modified the system in crazy ways.
  • Talking Moose.
  • Hypercard. A programming environment that was way too easy to use. Kids could write awesome, fully-functional programs. It was obviously too powerful, and had to be killed off. One day I found out the guy who worked across the hall was the guy that wrote the HyperCard parser. I was in awe.
  • MoreMasters(). You had to call this several times at app startup to allocate master pointers. Really.
  • WaitNextEvent(). You had to call it in your stupid event loop. If you didn’t, no other apps would get scheduled on the CPU.
  • The MultiFinder. WTF? Finder->Special->Set Startup->Start Up System with MULTIFINDER!!!
  • The Chooser. Background Printing. AppleTalk. I never understood the Chooser.
  • RAM Cache. Built right into the System 6 Control Panel.
  • Command-I Get Info. Increase the Application memory size.
  • Option+”About this Mac”. You can see the sun setting over the hills in Cupertino. When I worked at the lab with peliom, we made a video streaming app, and I rendered a 3D version of this scene using Bryce for our About Box. I wish I still had that around somewhere. When I got to Apple, I saw this same view out of my office every day.

That’s all for now. I’ll leave by thanking all those responsible for gcc and gdb. And UNIX. Thank you.

Only One More Year of Email!

Prof. Knuth on email:

I have been a happy man ever since January 1, 1990, when I no longer had an email address. I’d used email since about 1975, and it seems to me that 15 years of email is plenty for one lifetime

I’ve been using email since 1993, and I am so done with it. One more year, and then I can pull a Knuth.(via)

Ruby is SERIOUS BUSINESS!

Tim Bray is MAD that RubyConf was on a weekend. _why agrees:

People, Ruby isn’t a game. It isn’t a hobby. It’s certainly not a very good food source and it’s not an article of clothing. You can’t just put Ruby in the wash with a load of whites. Nice try, but no. No. Jeez, grow a brain. Ruby isn’t a tambourine you can bang loudly in my ear. I’m trying to use my iPhone here, guy.

And Ruby is not some bachelor’s party with a foxy lady in a sherlock holmes hat. Hardly: Ruby is all dads. Put a petticoat on, woman. Pop those balloons. We’re all getting paid here and we’re all having kids here. Get with the program.

Ruby is serious business. Real business and totally bankable. Fact: You cannot do it late at night. The office is closed during those hours. You should be in bed like all the other dads. Now, have a nightcap and go put your PJs on, we’ve got to wake up early tomorrow, it’s pancake day.

I love why. Read the whole thing, it’s spot on.

Let me see… I think I can pencil you in between Ubuntu installs.

I did two things last week: sleep, and install Ubuntu. That’s all I did. Acutally, I didn’t really sleep very much, because I was busy installing Ubuntu about 54,000 times. Here, I made a chart:

Liveblogging an Ubuntu 7.10 installation

Photo_102.jpg

Bob, Shag and I are trying to move our book scanning hardware to Ubuntu 7.10 – the Gutsy Gibbon. It’s a ridiculous process, and our hardware is crap. Here are some notes:

  • chai:20 (4:20) – Started up the installer app on the live cd. Unfortuantely the screen rez is 800×600, so we can’t see the important back/next/ok buttons on the bottom of the installer panel. What kind of installer requires greater than 800×600 screen rez?
  • chai:23 – Somehow, by logging the Live CD user out and fucking with the screen rez, we got the screen to display a larger screen res, but we can’t see the entire desktop on our screen. Moving the mouse around seems to pan the desktop, which would kinda work, if we could see the mouse cursor.
  • chai:25 – We are asked for the timezone, and San Francisco isn’t one of the available options. Los Angeles is. However, we opt to move to La Paz.
  • chai:30 – It is now officially time for chai.
  • chai:40 – We have found that starting a lot of xeyes processes lets us estimate where the invisible mouse cursor should be. There are fifty eyeballs on our screen
  • chai:45 – Bob starts playing minesweeper
  • chai:48 – Someone figures out that this version of xeyes lets us resize the window, so there is a GIANT EYEBALL staring at me
  • chai:50 – Installation done, rebooting!
  • Mouse works after reboot! Now to try and scan books!

Photo_101.jpg

Photo_10.jpg

“The System” … 2007



After 9 months of putting it off, I’m creating new folders and filing everything I have in my “To Be Filed” inbox …. I don’t know what happened but … 9 months … geez.

Here’s a little tip when real life presents a bulk-insert task like this … when you’re trying to find something it really helps to have the papers sorted chronologically. On the other hand you know that you will probably never look at these statements and receipts again … this is a good case for using Lazy Evaluation. I just dump everything in the proper category (e.g. Bank Statements, 2007) and then don’t order them chronologically until I actually have to find something like a specific charge on an old credit card statement.

Link to some interesting GTD stuff

Four Posts About Copyright

Copyright issues are so technical and complex that it makes talking about copyright in a public forum very hard. Who wants to listen to me talk about “changes to traditional contours of copyright protection”? Nobody! Not even me, and I *love* listening to myself talk!

Well, here are four posts about copyright that hopefully won’t bore you to death.

1. Rick Falkvinge and the Pirate Party of Sweden

IMG_0389.JPG

I got to hear Rick speak when he came to visit the Internet Archive, and he blew me away. Due to lobbying by the (mostly US-based) entertainment industry, broader copyright protection laws are enacted around the world every year. These expanding copyright laws threaten privacy and other civil liberties. In response to this, Rick founded the Piratpartiet in Sweden. They are now the 10th largest political party in Sweden, and are starting to influence real policy change. Rick does a great job about explaining problems with complex copyright laws to the general public. Check out his Google tech talk:

2. Antigua, Online Gambling, the WTO, and Hollywood
The WTO has ruled that the US ban on offshore internet gambling is illegal. The US disagrees, and refuses to lift the ban. Antigua argues that the ban has cost the country $3.4 billion in damages, and has asked the WTO for permission to violate copyright law and distribute US movies and music as a form of compensation.

3. SQLite, the public domain, Germany, and submarine patents
sqlite is an awesome, free, open-source filesystem-based database engine that is in the public domain, which means anyone can use it for any purpose they want. Almost every large technology company embeds sqlite into one of their products.

In Germany, the public domain doesn’t exist as it does in the US. In Germany, authors can’t dedicate a work into the public domain, and thus can’t contribute to sqlite!

Also, due to patent concerns, sqlite uses 17-year old technology, exclusively.. Crazy stuff!

4. A big victory: Golan v. Gonzales

Remember when Kahle vs Gonzales was heard in the 9th Circuit? Well, that went poorly. However, in the case of Golan v. Gonzales, the 10th Circuit has voted unanimously that First Amendment review clause in Eldred has been triggered, and the case has been remanded to the district court. This bodes well for a Supreme Court review of Kahle vs. Gonzales as well.

Massively Asymmetrical Bandwidth

Results of the Speakeasy bandwidth test, 60Mbit down/1Mbit up:
picture6.png
Can you imagine how different the net would be if everyone had this kind of bandwidth at home, and it was symmetric? I think the market for desktop apps would collapse overnight, and owners licensers of broadcast spectrum would pass laws to cripple YouTube bitrates.

A non-profit story

One of the perks of working as a programmer for a non-profit is that you get to collaborate with some top-notch hackers. The other day, I needed to find out the return values of the rm command, so of course I type ‘man rm’ on the Ubuntu command line. The manual page for rm didn’t list the return values, but it did list the authors. One of the names in the Authors section seemed vaugley familiar. “Hmmmm…”, I thought, “isn’t that the guy upstairs?” We ran upstairs and caught him off guard. “Um… that was a long time ago…” he told us. We suggested that he add a return values section to the man page, and then ran back downstairs, giggling like schoolkids. He probably thought we were nuts :)

Older Posts »