Archive for July 2003

Monday, July 21, 2003

AdSense Down

Google’s AdSense is down right now.

Types: The Next Generation

Benjamin Pierce has written some slides about developments in type theory. He includes lots of references and timelines, and notes that research is being transferred to industry faster than before.


Here’s a new Cortland cartoon from Matt Johnson.

On Firing an Employee


Last Monday, I fired an employee for the first time in my life.

It was the worst morning of my life, and the weekend before that Monday was horrible as well.


Unsanity’s Rosyna Keller is working on a haxie in the spirit of MenuFonts and TypeTamer. Unlike FontSight, it will work with Carbon applications.

DropDMG 2.1.1

DropDMG IconDropDMG 2.1.1 is out. This is just a little maintenance update, with the following changes:

Writing Better Code

Bruce Eckel:

Sunday, July 20, 2003

Perl Articles

Linux Magazine has some great articles about Perl 6 and Parrot.

Two Online Python Books

Thursday, July 17, 2003

OSCON 2003

O’Reilly has news of everyone’s favorite scripting languages. The state of the onion is…just fine. Guido doesn’t say why he thinks CPython will be faster than Parrot/Python. Parrot is supposed to be fast, and the existing CPython is slow compared to other similar languages. So I don’t know whether he thinks there’s something intrinsically slow about Python, whether he’s just pessimistic about Parrot for some unknown reason, or whether he’s going to dramatically speed up CPython. Well, the competition should do everyone good. Finally, Matz was funny and insightful, as usual, in his talk about linguistic determination and programming language design: “While you program to solve your problem, I program your brain to work better.”


James Dempsey has a new song (via Bill Bumgarner).

The Leap to Language

The New York Times has an article about the evolution of language (via Kai von Fintel).


Nat Irons prices out various combinations of displays. Despite being more versatile, smaller displays offer more pixels per buck. Unfortunately, you need a silly adapter to use two Apple displays at the same time, and there are issues with using a PCI card to drive the second monitor, if you don’t have an AGP card that can drive two displays.

Jon Stewart Interview

Bill Moyers interviews The Daily Show’s Jon Stewart:

I think we don’t make things up. We just distill it to, hopefully, its most humorous nugget. And in that sense it seems faked and skewed just because we don’t have to be subjective or pretend to be objective.


But the other news networks, you know, they have this idea that they’re being objective. But news has never been objective. It’s always…what does every newscast start with? “Our top stories tonight.” That’s a list. That’s an object…that’s a subjective…some editor made a decision.…So why not take advantage of that and actually analyze what you do think is important.


Baseline (via Jerry Kindall):

McDonald’s planned to spend $1 billion over five years to tie all its operons in to a real-time digital network. Eventually, executives in company headquarters would have been able to see how soda dispensers and frying machines in every store were performing, at any moment. After just two years, though, the fast food giant threw in the towel.

Didn’t the fact that the project was called “Innovate” raise any red flags?

Slices of Life

Davy Rothbart’s Found is something like a reality magazine, but that rather than tell a story through editing, he shows the source material—little hand-written slips of paper—whole and lets readers draw their own conclusions (via the Boston Globe).

Dijkstra Blog

Salon (via Michael Swaine):

On his proto-blog archive, the words and spirit of the late computer scientist Edsger Dijkstra live on, inspiring new generations of geeks.

Languages and IDEs

Not surprisingly, Jef Raskin sparks an interesting discussion without really proposing a solution.

Do It Right the First Time

Neal Stephenson (paraphrased by Ehud Lamm):

A good writer (and a good programmer) does not work by distilling good ideas from a large pool of bad and good ones, but by producing few if any bad ideas in the first place. It is important to give ideas time to mature [in the subconsciousness] so only good ideas percolate to the conscious level.

That’s the only way I know how to write prose. I tend to think about things in the background and then type out an almost-final draft. However, in all levels of school, I was told that it was important to get a rough draft down on paper as soon as possible, even if it was, well, rough. It could always be revised from there. The problem is that it’s much easier to revise in your head than on paper (or in a word processor). The ideas on the paper have inertia. They lock you into a trajectory. I spot some of the bad ideas and excise them, but I think my brain suppress new good ideas because there’s no way to seamlessly incorporate them into the draft.

The great advantage of the pen is that it is slow. Ideas, in his view, come faster than we can “serialize” them on the paper or at the keyboard. Therefore, the ideas are stored in an “accumulation buffer” in the brain. When in the buffer, the ideas interact and purify. If we empty the buffer too soon, we don’t give the ideas enough time to mature and we get a half-baked prose. There is a virtue in slow typing or in hand-writing. Needless to say, Neil is not a fan of a PowerPoint. He contends that writing on a blackboard gives a teacher and a student so important time to think.

+1 for chalk.

Stephenson’s comments were from his USENIX keynote, so how does this apply to programming? (I guess we are meant to put aside the obvious differences between the life cycle of a program and that of a novel.) On the surface, Stephenson’s ideas seem to be at odds with XP. Discovering design through refactoring and test-driven development is essentially a hill climbing strategy. For certain kinds of problems, it works great. But for others, it really pays to think carefully about your starting point. The Right design can make all the details fall into place.

Conclusion: to paraphrase Asimov’s Hardin, don’t let a methodology prevent you from doing what’s right.

Friday, July 11, 2003

A Conversation with Jim Gray

Dave Patterson interviews Jim Gray about the future of storage (via Tim Bray). Highly recommended.

DP So disks are not random access any more?

JG That’s one of the things that more or less everybody is gravitng toward. The idea of a log-structured file system is much more attractive. There are many other architectural changes that we’ll have to consider in disks with huge capacity and limited bandwidth.

JG The Internet plans to be running at gigabit speeds, but if you experiment with your desktop now, I think you’ll find that it runs at a megabyte a second or less.…That translates to 40 gigabytes per hour and a terabyte per day. I tend to write a terabyte in about 8 to 10 hours locally. I can send it via UPS anywhere in the U.S. That turns out to be about seven megabytes per second.

DP Wouldn’t it be a lot less hassle to use the Internet?

JG It’s cheaper to send the machine. The phone bill, at the rate Microsoft pays, is about $1 per gigabyte sent and about $1 per gigabyte received—about $2,000 per terabyte. It’s the same hassle for me whether I send it via the Internet or an overnight package with a computer. I have to copy the files to a server in any case. The extra step is putting the SneakerNet in a cardboard box and slapping a UPS label on it. I have gotten fairly good at that.

JG What I mean by that is [a disk is] going to have a gigahertz or better processor in it. And it will have a lot of RAM. And they will be able to run almost any piece of software that you can think of today. It could run Oracle or Exchange or any other app you can think of.

In that world, all the stuff about interfaces of SCSI and IDE and so on disappears. It’s IP.

Further reading: The Design and Implementation of a Log-Structured File System.

Wednesday, July 9, 2003


The non-beta release of Safari draws text too small. You can make it revert to the beta behavior of using a minimum font size, and Dave Hyatt is also working on what sounds like a better solution for a future version of Safari.

Independent Web Publishing

As John Gruber’s Daring Fireball nears its first anniversary, there’s still nothing like it on the Mac Web. And thanks to Google’s AdSense, Gruber may be able to spend more time on it in the future. AdSense manages to make everyone win: Google makes money and extends its brand, advertisers get quality visitors, small publishers get some compensation for their work, and readers get to keep reading quality sites. AdSense’s targeting is pretty good, although I’ve not yet seen an ad that I was genuinely interested in. AdSense only knows about pages, not about me, so it’s not up to the level of Amazon’s recommendations.

AdSense effectively works as a micropayment system, but instead paying with small amounts of money, you pay with small bits of your attention.

There’s no encryption. No accounts. Just eye balls and clicks. It remains to be seen whether the ad revenue will drop as people discover that they can send micropayments to their favorite sites by clicking. And I worry that bloggers may stop putting whole posts in their RSS feeds, meaning more double-clicks into Safari to see the ads. But for now, AdSense seems to be working well.

Write something controversial, and you tend to get linked to from other sources.

There’s no denying that controversy drives impressions and links. I don’t link to every good article on Daring Fireball. A mainstream journalist writes a stupid article, and Daring Fireball refutes it. The refutation is common sense, albeit well presented. That’s not too interesting unless I know people who were taken in by the original article.

This brings in readers, readers who may well disagree vehemently with your premise, but readers nonetheless. More readers equals more impressions; more impressions equals more money.…Any traffic is good traffic when you’re charging advertisers per impression.

This is true enough, but is the situation really that different for click-based advertising? Or for independents compared to corporons? The rumors sites of yesteryear were independents, yet they were clearly set up to generate ad impressions. And surely more traffic means more clicks.

Running exclusively AdSense ads keeps Daring Fireball looking clean. The ads get more attention and, presumably, more clicks. Adding more ads might be a net win in terms of revenue, and therefore good for readers as well. I like Daring Fireball’s clean design, and I like that lengthy articles are presented on a single page, but these are bonuses, not reasons to read it in the first place. I’d put up with more ads if it meant more articles (of the same quality).

I expect that some sites will begin showing AdSense ads where there were no ads before, but sites using other types of advertising will probably continue to do so. ATPM will run pop-under ads for the forseeable future because, as good as AdSense is, we can’t turn down the income that pop-unders provide. You might consider them a tax for using a free Microsoft browser, since the other major browsers have pop-up blockers. The AdSense ads look better and pay better than the skyscrapers we had been running, so that’s a win all around. For the remaining banner ads, we’ll continue to filter out the “You may already be a winner!” ads and the ones with excessive animation. These annoy everyone and probably scare people away. But the banners will stay because they help pay the bills.

Tuesday, July 8, 2003

Adobe Premiere

Lee Bennett:

The reason I’m laughing is not so much that TidBITS and/or Adobe would tout platform migration as a solution, but because it is not possible (unless the capability was added to Premiere Pro) to convert Premiere projects from one platform to another—at least not easily.

Saturday, July 5, 2003

Dynamically Overriding Mac OS X

Jonathan Rentzsch posted his MacHack paper and slides about code injection and overriding.

Wednesday, July 2, 2003

ATPM 9.07

The July issue of ATPM is out.

CPS and Tail Calls

Dan Sugalski:

In a traditional calling scheme, where stuff goes onto and off of a stack, implementing tail calls can be a bit of a pain. Not a huge pain, mind, but a bit of one, as you have to screw around with the stack some, which is often awkward, painful, or just annoying. I hate complex stack manipulation. Fooey. However… If, rather than using a stack calling system you use a CPS system instead, almost all of the pain goes away, which is always nice.

The Truth About TV Advertising


I’m an Internet advertising sales person, and you know what’s the hardest thing to sell? Reporting. Data. Trackability of the advertising medium.

Writing Code Is Stupid

Ian Wij:

Why bother with objects and components at all? The purpose of objects is to provide encapsulation and implemention reuse. With code generation, we reuse the requirement or design and not the code. It doesn’t matter if code gets duplicated and spread about because a human won’t be maintaining it. Objects and components are a human artefact for versioning and managing work among developers. They exist to help us humans deal with software complexity. Let’s use computers to deal with software complexity instead.

Perl 6 Design Philosophy

Randal, Sugalski, and Tötsch:

At the heart of every language is a core set of ideals that give the language its direction and purpose. If you really want to understand the choices that language designers make—why they choose one feature over another or one way of expressing a feature over another—the best place to start is with the reasoning behind the choices

This might be compared to the Zen of Python.

Casady & Greene

Eric Blair and John Gruber note the passing of a Mac icon. Casady & Greene made great products, earning six out of six Excellent rngs from ATPM:

They also published classic games such as Glider and Crystal Quest, which is the second Mac game I remember playing (after Brickles).

Amazon Blog


This is a cheap place. Wait, did I say cheap? I mean frugal. No Herman-Miller Aeron chairs here. It's nice to work for a company that saves pennies so they add up on the bottom line. The office furniture is utilitarian. I'm sure there is a fancy executive table somewhere, but the conference rooms, training rooms, etc. just have plain tables.

Preferences Frameworks

Matt Gemmell:

[SS_PrefsController] (and its associated protocol) makes it absurdly easy to implement multiple-paned Preferences windows in your applications, with views dynamically loaded from one or more external bundles. Once you’ve set up the bundles for your preference panes (easy in itself), it’s basically just two lines of code to implement a full-featured Preferences window like those in iChat, Mail, Safari and many other applications.

M. Uli Kusterer:

[UKPrefsPanel is] a simple delegate class that makes it easy to create a simple Preferences window. Put your different preference panes in a tabless NSTabView, connect that to an instance of UKPrefsPanel, and you automatically get a toolbar with icons for each tab pane that switch between the tabs.