igmus logo

jeremiahcode archives
www.igmus.org : jeremiahcode : archive : 2002 :


:: Email, blogs & clarity ::

Raph notes, in the blogging age, we could gain some efficiency in the way our email conveys permissions for public excerpt or attribution. I like this idea, however his solution ("+, "-, "?) bothers me, in that we wish to encode what rather has natural domain in concise, but full language.

I remember an early Negroponte column in Wired complaining about superfluous email traffic ("Thanks!", "Appreciate it.", etc.), and suggesting closing emails with "nrn", i.e. no reply necessary. Of course, he was trying to propagate the opposite concept than Raph, one-way comments guilt-free for the recipient.

Nonetheless, it didn't take, and I think the reason was symbology. Email, like blogs, are centered around language. If a message is worth posting, it likely has simple, persuasive verbiage, even when directed towards propeller heads.

Some years ago, after reading a series of papers by Bertrand Meyer, I asked my mother (a history scholar) to read one discussing some aspect of programming langauges. I was struck by Meyer's clarity, particularly that his use of terminology was essentially limited to that which he constructed from first principles, and even these words never strayed far from common understanding (e.g. routine vs function or method). And Mom got through it with a modest, but broad understanding of the topic. This left an impression on me. Resist jargon.

Raph's expressions would be interesting if the majority of email now used html bodies, and stylized, but idiosyncratic features could be linked to personal glossaries. In that absence, "copyleft permission granted" or "no quoting, please" in one's signature makes for simple and universal communication, rather than devolving into geekcode.

Link | 31 August 2002 | in Ether | Comments (0)

:: Further reading on this article ::

:: Open source term leakage ::

During a press conference Monday, Steven Hatfill, an uncharged "person of interest" in the FBI Anthrax investigation, employed our favorite term. In support of his professed innocence, he publicly asked the FBI to release all evidence to the press as open source. This is a fascinating penetration of the phrase into public discourse, limiting its definition to unrestricted distribution (here, with a plea to be so) and broadening its use to arbitrary information. Dictionary.com still defines open source with code-specific semantics. Webster's has bupkus.

Link | 27 August 2002 | in Ether | Comments (2)

:: Further reading on this article ::

:: Another EJB Datapoint ::

My perspective on Mike Cannon-Brookes' blog thread Is EJB Always Necessary?.

In mid-1999, Imagine Media was set to introduce a broad basket of internet content vehicles, launched from a traditional magazine company (think original Business 2.0, Daily Radar, Maximum PC). They needed something to manage content. Given the choices consisted of Vignette and Vignette (execs were in heavy buy mode), I pitched a lean setup based on commodity hardware, open source and up-and-coming J2EE.

Performance windows and simplicity

Our goal was to deliver dynamic, Amazon-complexity pages every 50ms, with an asymptote somewhere at 500ms. Freshness was important. Within seconds of editors posting, users interacting or partners pushing, pages should be glistening with dew.

We'd need heavy, multi-layered caching and brutally simple components; the latter to withstand the content swings of our gaming sites -- build and slot boxes in quick response. (We never really got to Amazon-complexity, but the mission set our sights high.)

Not a fit

In the month of our research phase, we met much disappointment. What looked like a good wrapper for (essentially) static content, Entity Beans in this 1.0 spec were barely adequate. We'd have to compromise on locking semantics. There were lots of bugs. Worse, Weblogic, a trusted name we could sell upstairs, displayed terrible EJB performance, and this only if we utilized proprietary extensions. (J2EE got sold, in large part, on portability.) Further, we were getting concerned the caching implementation was fairly dumb. And the O-R mapping: schema evolution was going to be an obstacle, yet flexibility was a market necessity for us.

The solution

We reset our design.

  • Simplify: presentation JSPs invoked from servlets, referencing a read-only object cache, per JVM.
  • Objects are high-level, mirroring page components.
  • We build our own veneer to manipulate these objects and pull them out of the database.
  • Lightweight, one-way messages (from staging to production networks) will force invalidation & rebuild.
  • Each object exports a parent/child association set, allowing invalidation to cascade in the graph.
  • Caches, on miss, can peek into peers.

Dev was six weeks to working code. JVMs of that time fell off a performance cliff over 256meg of cache, but it was Good Enough.

That overall design simplicity saved our backsides routinely.

As an aside, having attenuated our requirements to pure servlet engines, a product like Resin offered us a sharp fellow bent on performance, light-speed support, product code we could patch ourselves and trivial replication across the server farm. Oh, and it was cheap.


A year later (2000), my friend made an interesting point. Working for a big five firm, designing Java web applications, he relayed that if you're working for a client who doesn't dally over technology, can purchase big iron to support any infrastructure, and the job market affords you programmers [term used loosely] with 2 years experience, EJBs are a win. At the edges, it's programming by boilerplate.

Nonetheless, for our purposes, we found EJBs an unconvincing model. Trying to do too much, all of it poorly. Latest versions are far more robust, implementations are excellent, but they still seem to tackle a universe of problem domains better handled by specific solutions (ODB, messaging, caching, abstract transactions managers, etc.)

Link | 22 August 2002 | in Coding | Comments (0)

:: Further reading on this article ::

:: Epinions for Hackers ::

Dave Winer posits Google will replace the need for customer opinion sites like epinions. Hullabaloo.

No amount of crawl smarts can supercede good group-edited (collaborative filtered) content. Epinions is brilliant. I wish the hacker community had something similar. I'd like to go see hardware specs paired to customer reviews running Linux and qmail and Oracle on 5 different filesystems, and the fellow experimenting with 16 disk IDE RAID5. We tend to see this pass briefly on disparate mailing lists, but should be aggregated in one spot, for search, comparison and ratings.

Google still makes odd decisions for undiscovered, but primo, content. And, of course, the biggest annoyance for bloggers is that Google is not topical (see "Google gap" -- folks directed to your front page looking for content long since scrolled away).

Link | 18 August 2002 | in Ether | Comments (0)

:: IE6: The Backgrade ::

It's been awhile, but I still get my skivvies in a bunch over these UI impedances.

IE6, for the user, was a pointless upgrade. IE5 worked ok, at least its bugs were forgettable. IE6 upped the ante for angst and has become a classic example of Does Not Scale With Experience, a critical misfeature of infrastructure software components.

A few examples of delay:

  • the image scaler: A good idea, scale images that exceed the current size of the window, with options to revert to original. Daft implementation, a rollover-invoked toolbar, with options to save, clip or revert, has a delay of perhaps 2 seconds before it appears, and this isn't even constant (!). It turns out most activity of this sort is photo pages, let's say 75%, where images are already shrunk, so I'm clicking on the larger image for a reason. With the fuzzy delay for re-expansion, browsing a large photo archive slowly causes arterial damage. Luckily, it can be disabled.
  • http redirects: A delay was introduced when Location-based redirects are received. Common technique for web apps.
  • popup delay: Every additional IE window introduces a cummulative delay in popup window spawn. Worse, this seems to hold a global IE lock -- all activities are suspended. I often fill up the sysbar with windows for reference, testing or articles I'm not done reading. Best demonstrated with Lars' IE browser test. Combine with ubiquitous popup ads: much angst.

IE6 promotes Pavlov behaviors: fear and avoidance in your fingertips.

Does anyone know how to contact the IE team?

Link | 18 August 2002 | in Ether | Comments (0)

:: Hack: Ad Blocking with djbdns ::

A cohort has published his collection of evil, ad-generating domains, for easy blocking. If you have control of local DNS and web servers, redirecting them all to a local page is straightforward. For instance, I send them to a local fakenet web page like this. (Grab Synj's file here.)

Now, our friend's domain list is in Win2K registry format, but I'm using djbdns on a Linux router. I've written adservers-conf to read his file and generate domains in dnscache's servers/ dir for local resolve, and an appendage to your tinydns data file. The script expects adblocker.reg in the local directory. Optional files append and remove, with domains one per line, will modify that input. Each run of adservers-conf cleans its dnscache files, i.e. changes don't accumulate cruft.

The script assumes the following setup on your network. A dnscache resolving addresses for all internal hosts. A tinydns serving (perhaps) local reverse and hostnames. A web server that can support a new ad-blocking IP.


  1. Grab adservers-conf and adblocker.reg.

  2. Ready a IP alias (e.g. in a fakenet, and VirtualHost (if Apache).

  3. Execute adservers-conf on your dnscache system. It writes tinydns data lines to the console, so you must trap them. It's arguments look like,

  4. adservers-conf dnscache-path tinydns-ip web-ip


    adservers-conf /etc/dnscache > tinydns.append

  5. Append tinydns results and make.

  6. Setup your VirtualHost to respond to any URL it receives. I do this with an ErrorDocument directive.
  7. ErrorDocument 404 http://ad.web.server/index.html

  8. Reset dnscache (e.g. svc -t /etc/dnscache).

Update: Use regdump to list adblocker.reg domains.

Link | 18 August 2002 | in Hacks | Comments (0)

:: Further reading on this article ::

:: Enter the Hiptop, yo ::

Danger has built a sweet Java-based server architecture for managing always-on 3G handheld devices. What you carry around is a cache (8MB in the case of the Hiptop -- add water and GSM SIMM card) of data stored back at the ranch, in turn a cache for the net. Desktop data is sync'd round thru the server, as God intended. The instant data portability common to GSM phones (your SIMM card mobilizes your persona) is now available in much larger dimensions.

Dispensing with WAP, arbitrary HTML 4.0 sites can be browsed directly, modulo image downsizing. The Hiptop is considered a "reference design", but that's marketing understatement to sell the server components to service providers: it's a singular device. Reviews (e.g. WSJ personal tech) of the built-in apps claim immaturity -- something I'm sure will be remedied in 12 mos; these guys are smart.

T-Mobile (VoiceStream Internet) is a first provider. $200 post-rebate for the handheld, $40/mo gets you GPRS data, 200 daytime voice, 1000 weekend. WSJ claims this is unlimited data. Prior to release of the Hiptop, VoiceStream seems to say otherwise. We'll see.

Check the January Stanford EE talk for technical background.

Goes live in October.

Update: Several outlets (internetnews, extremetech, pcmag) report October is yet another delayed launchpoint for Danger. A shame, functionality was impressive in January. On the plus side, these reports confirm the rumor of unmetered data pricing -- yet to be substantiated by VoiceStream/T-Mobile itself.

Update: ZDNet review.

Link | 13 August 2002 | in Gear | Comments (0)

:: Further reading on this article ::

:: VoIPs offered again ::

Creative's VoIP Blaster offered again as a refurbished $30 model. No doubt a supply from the attic; get 'em while you can.

I'm stunned by how fast the Perfect Store can react. These were moving at $200, as the Slashdot story crested and Creative emptied their original, unwelcome inventory.

Update: Once again, stock quickly depleted. Over.

Link | 13 August 2002 | in Gear | Comments (0)

:: Further reading on this article ::

sites & logs

· Astronomy POD
· NY Times Cartoons
· ...

Section links
· Hack the Planet
· Web Voice
· Paul Graham articles
· diveintomark
· Joel on Software
· Long Bets
· Raph Levien
· rebelutionary
· Lambda the Ultimate
· Adam Langley
· sweetcode


· Anders Brownworth
· Ed Homich
· J. Dean Brederson

“Interesting. It wasn't made to malfunction.” — me
· (Citizen Wohl)
· (Colophon)
· (Resume)
· jeremiahcode

· glastree
· triggers
· tess
· dlq
· Short Shorts
· (Short Stories)
· (Essays)
· ........
· ........
· ........
· Volleyball
igmus | My personal site. Some visual, aural and prose expository. Circumnavigate the toadstools; they've only got one leg.

Home | Correspond | San Francisco, CA
© Jeremy Wohl