Contact Info

(for those who care)

Instant Gratification   

Sun, 30 Jan 2005

Genious, I am.

However ultimately we made the decision that the non-XML syntax (or you could say more SQL like syntax) of XQuery was going to attract more developers in the long run, in the same way the developers on the whole find XPath an easier file-path like syntax to write.


The next time you are tempted to write a programming language in XML (or add conditionals, loops, etc. to an XML specification), give in to the dark side and pick a decent programming language instead. Possible exceptions to this rule are if you’ve implemented n+1 programming languages already, at least one of which must be in use by one million or more people. Because then maybe you’ll know what you’re doing. Otherwise, just give up.

Remember, XML is just fancy syntax over plain-text (most everything is anyway), and unless you’re qualified to write a programming language anyway it’ll just turn out mediocre.

…and in other examples of genious, Baseball star’s wife makes ultimate threat, and Man peed way out of avalanche.

14:48 CST | category / entries
permanent link | comments?

Fri, 28 Jan 2005


A variety of things. Today I had the opportunity to read two poems to Bety. One is by Sara Teasdale, probably my favorite poet.

The Look

Strephon Kissed me in the Spring,
Robin in the fall
But Colin only looked at me
And never kissed at all.

Strephon’s kiss was lost in jest,
Robin’s lost in play,
But the kiss in Colin’s eyes
Haunts me night and day.

— Sara Teasdale


…and a fun one:

Celia Celia

When I am sad and weary,
When I think all hope has gone,
When I walk along High Holborn
I think of you with nothing on.

— Adrian Mitchell

The story of Sara Teasdale is pretty sad. I actually own a very old copy of Strange Victory … it’s emotionally very tough to read sometimes, although I haven’t actually more than cracked the covers of my copy. Haven’t had a lot of time to read poetry lately.

At work, I’ve been scheming on how to get an automation tool that’s simple enough for non-programmers, maintainable, and at the same time, useful. Recommendations welcome. So far experiments with a JS-based recorder of browser-actions went well. It lets me record actions at a browser level, rather than protocol level. All hail Greasemonkey, which is going to encourage me to learn mozilla extensions. So far my recorder is dumping to a wiki for centralized data store, and I put together some auto-script-writing-wizard stuff that uses the uber-l33t XmlHttp stuff to fetch data.

Currently I use XmlHttp to fetch a list of pages at startup, and then per each action, fetch the corresponding page (action) in question and grep it for parameter tags. Those parameter tags (actually python def funcName( p1="val1" ):) are then presented to the user via popups, etc. as an assistant (like VisualStudio auto-complete?) in generating more complex scripts. Probably will have to move away from JS prompt() calls and towards a floating <div> that toggles and is dynamically populated with elements, values, etc. (this is especially for the case of multiple parameters on a single action).

Pretty cool being able to conditionally fetch information, parse it either server-side or client-side and do fancy JS / DOM manipulations to make it do what you want to do. I forsee a bright future in this type of work, just so long as it’s testable (should be, since you can treat your XmlHttp requests as requests/responses to be handled appropriately. MockXmlHttp.send(), anyone?).

This might convince me to work with the JSON people for PHP, since that’s how I’m using 90% of my latest dynamic javascript.

Which brings me to my third point of miscellany: XML.

The reason stuff like JSON (a light-weight JavaScript Object Notation) even exists is becuase… well, a variety of things. First, why does XML exist? It’s for the structured representation of tree-like data in a language-neutral, human-readable format. Well and good, but you read all the time about the lisp people and S-expressions. The other thing that XML brings to the table is XPath/XQuery. XPath is like SQL for tree-like data. This will eventually be amazingly useful, but only when it gets to be as popular as SQL (note to kiddos: learn XPath).

For now though, XML is a common standard, but it’s really more of an impedence mismatch. XML isn’t native to PHP, and it isn’t native to JavaScript, and it isn’t native to Python, and it isn’t native to Java and it isn’t native to anything. Yay. Also, nobody knows XPath well enough to give a damn about some work that they’ll save (writing a couple of foreach loops is easy enough in any language except Java). The closest thing I’ve seen to native support is the perl lib EasyXML (I guess it got converted to XML::Simple nowadays), where once you’ve loaded the XML object, it gets treated as a first-class perl citizen. Yay. But for now, the whole point is that most developers want access to the first-class citizen, not XPath, and that means that JSON is the path of least-resistance for getting information out to a browser (no dependent libraries). Hopefully it will die a quiet death as more languages get native XML support, but for now it seems pretty useful.

And a final closing funny: “Better to have a nickname than an adjective.” (said by “Big” Dave to “Magpie” ;^)

23:56 CST | category / entries
permanent link | comments?

Thu, 27 Jan 2005

Internet Mail 2000

Tim Bray writes about private RSS feeds which are remarkably similar to DJB’s writings on Internet Mail 2000. I was really excited about IM2000 before, but I didn’t really realize that RSS was taking us there one step at a time.

IM2000 is a project to design a new Internet mail infrastructure around the following concept: Mail storage is the sender’s responsibility.

Each message is stored under the sender’s disk quota at the sender’s ISP. ISPs accept messages only from authorized local users.

The sender’s ISP, rather than the receiver’s ISP, is the always-online post office from which the receiver picks up the message.

The message isn’t copied to a separate outgoing mail queue. The sender’s archive is the outgoing mail queue.

The message isn’t copied to the receiver’s ISP. All the receiver needs is a brief notification that a message is available.

After downloading a message from the sender’s ISP, the receiver can efficiently confirm success. The sender’s ISP can periodically retransmit notifications until it sees confirmation. The sender can check for confirmation. There’s no need for bounces.

Recipients can check on occasion for new messages in archives that interest them. There’s no need for mailing-list subscriptions.

The neat thing about IM2000 is that it “kills” spam. By leaving the message on a remote, required-to-be-always-on server until the user picks it up, it means zombie bots don’t really work as spam generators, and the person sending the mail (sending the mail notification message) must be responsible for “owning” that message until it is delivered. Basically putting mail transmission costs on the sender more-so than the receiver.

Let’s presume the worst possible spam attack on an IM2000 system. 1,000,000 bots, of which 80% of them are online all at the same time, each sending 1,000,000 notification messages to addresses harvested from the internet. Ouch. Anyway, since the message is traceable to an origin (no matter what that origin is), we are in a slightly better situation than before. It would be a fairly simple process to say: “Trash any messages that come from places without a reverse DNS to a legitimate domain name”. That means you can still run your own ~mail server~, but you have to buy a domain name for it (not too big of a deal) and keep it online all the time. Or contract with a hosting company to run your private mail-outgoing queues.

Then suppose that spammers buy domain names for each of their bots on a botnet (unlikely, I would hope). Costs have been raised, and then it might be possible to say: “We are suspicious of email notifications if your mail-server DNS isn’t at least 3 months old”.

Furthermore firewall at the ISP-level port 25 inbound (probably won’t end up being port 25, but just an example). Since “delivery” requires that a random PC on the internet connect to a random other PC on the internet, and we’ve stated that we’re willing to firewall customer PC’s from inbound requests, we’re doing pretty well. Would firewalling port 25 outbound have the same effect right now? I don’t know but I don’t think so. Firewalling 25 outbound means that your customers can’t send spam, but not that your customers can’t receive spam from compromised hosts in China, etc. (sorry, China. :^) Really it boils down to accountability by some single system for owning the delivery of a message.

08:38 CST | category / entries / links
permanent link | comments?

Fri, 21 Jan 2005

“The Long Tail” and computer stuff


rames@kristal:~$ uptime
22:03  up 21 days,  1:49, 3 users, load averages: 0.84 0.61 0.72

… my Powebook 12” is sweetness. :^) $500 is a great price for the Mac Mini’s, too. I’m currently debating on getting a Network Attached Storage (NAS) drive for home (example), but why spend $200-300 on just a hard drive when I could spend $500 and get a whole ‘nother computer? Another possibility is to work on getting a Myth-Box going and use that as the network drive. What turns me off from that is I’ve never quite managed to get a home-built PC as quiet as I’d like for 24x7 living-room operation. Speccing out the Mac Mini with some “extra stuff” (wireless, upgraded HD, etc) brings the price from $500 to $800 — not too bad, but expensive enough to look harder at a cheaper specialized network drive (prices on those range from ~$150 - $300 depending on size, features, etc).

Followed a link from Gary’s blog talking about the economic ramifications of on-demand everything, called “The Long Tail”. The simplest definition is as follows:

“The Long Tail is the realization that the sum of many small markets is worth as much, if not more, than a few large markets.” (source)

…and the following quote from the original Wired article.

An even more striking example is the plight of Bollywood in America. Each year, India’s film industry puts out more than 800 feature films. There are an estimated 1.7 million Indians in the US. Yet the top-rated (according to Amazon’s Internet Movie Database) Hindi-language film, Lagaan: Once Upon a Time in India, opened on just two screens, and it was one of only a handful of Indian films to get any US distribution at all. In the tyranny of physical space, an audience too thinly spread is the same as no audience at all.


My experience with this has to do with my preference for reading classic books rather than paying $8.99 for new paperbacks. With so much older stuff available for so cheap (half-price, project gutenberg, etc), why pay full price for new content when you’re not sure how good it’s going to be? I feel like I’m at the very tip of the “old-book iceburg”, focusing on the more popular books because that’s what I can find, and that’s what I know about.

Speaking on the tyranny of physical space (is that like the opposite of the four freedoms? :^), I’ve been ripping all my CD’s as soon as I buy them. Not recently since I don’t trust ripping on my Mac yet (I rip to OGG using abcde on my linux box), but I now have 2427, 7.4 days, 16.20 GB of music registered with iTunes on my laptop, not including another 5.2 GB of Soundtracks and Various Artists (I hate the way iTunes handles Artists in Various Artists … giving each individual artist top-level artists entries when they only have one song in them, maybe I need to twiddle with the “compilation” bits?) Anyway, back to The Tyranny of Physical Space, 21GB of CD’s turns out to be a lot of cubic feet worth of CD’s. I would never carry that much with me everywhere I go, back and forth to work every day, but digitizing them and sticking them on my laptop (or making them password protected / net-accessible) has freed me to listen to my music almost anywhere I want.

Same with photos / digital photos. I ~hate~ (not really) physical cameras and photos, mostly because I never spend the $10-20 to develop 36 prints from film. And when I do, I always get a photo CD to go along with it. Now that photo printers are comparable quality of photo prints, digital photos make even more sense since I can “make it physical” anytime I want or need to, and keep all the advantages of a digital archive of data rather than a physical archive.

…which explains why I’m looking at NAS drives. The long tail of my own media. :^)

08:42 CST | category / entries
permanent link | comments?

Mon, 17 Jan 2005

HDTV Experience

Got the HD-3000 card in the mail a few days ago. Took me an evening to get it and everything set up on my linux box. Turns out my box is a little slow for HD decoding (it’s a AMD1.5ghz) but I did get MythTV up and running and watched some of the signal for a bit. Since I was messing around with TV cards, I apt-get install‘ed EffecTV which turned out to be a really fun program.

MythTV is worthy. It’s well architected, split into two parts (mythtv-backend, mythtv-frontend) which can even be run on two different servers (ie: the honking “grabber-box” and a svelte “by the TV box”). X-Boxes are common to use as front-ends over a network to the central capture box, and because it’s all open source it’s very flexible with what you can do (multiple frontends per one backend, web-scheduled recording, burn DVD’s, VCD’s, scp the video files, etc). If you’ve got more time than money, it’s definitely the way to go.

Figure ~$500+ for a decent box (~$300 for a shuttle small-form factor PC, $50 for a regular capture card, ~$200 for an HDTV card, $100-200 for a hard-drive). Programming / Guide information is available from the kind people at Zap2it for the opensource community. Eventually it would turn to a pay service ($5-15 / month? … content is king!), but for the time being it’s available for free. You can also repurpose any old hardware you have lying around. I’ve got an older 60gb IDE drive, the two capture cards, would really just need the containing box and processor (most of the small form-factor PC’s already have built-in video and TV-out).

Unfortunately I’m a little short on time and money right now so most of this will have to wait until after wedding, furniture purchases, etc.

21:49 CST | category / entries
permanent link | comments?

Sun, 09 Jan 2005

Beware the Broadcast Flag

Reading slashdot today reminded me that I needed to snag an HDTV card before they are required to be feature-crippled with Digital Restrictions Management (DRM). I’ve got an older Hauppauge WinTV/Radio card which was pretty cool, I enjoyed watching some TV, DVD’s through there, recording some stuff from the radio. Nowadays, the FCC is working with all the “Big Corporations” to require built-in restrictions on devices for watching HDTV.

See more ...

10:53 CST | category / entries
permanent link | comments?

Thu, 06 Jan 2005

Zap! If Pac-Man were converted to Quake 3 Arena.

…a 2D vector graphics multiplayer team action strategy game that plays like a cross between Robotron and Tribes with the graphical blend of Asteroids and Pac-Man.


It’s nifty! Plays a lot like SubSpace. They’ve got a coupon available to make it $14.95, and if I hadn’t just bought a bunch of mac games (for $3.99 ea. @ MicroCenter!) this one would be on the short list.

Zap needs improvements, though:

See more ...

01:00 CST | category / entries / links
permanent link | comments?

Mon, 03 Jan 2005

Story Driven Video Games

There’s been some talk lately about decreasing emphasis on graphics in video games and concentrating more on “the other stuff” like character development, story, etc. I agree. The difference between Quakes #1, 2, 3 and the original Half-Life had much much less to do with the backing technology or graphics, but instead with the incredible plot that Half-Life had. The technology in both was “good enough” which is vitally imporant, but Half-Life nailed the atmosphere and told a story that the player could care about.

See more ...

12:18 CST | category / entries
permanent link | comments?

Like what you just read? Subscribe to a syndicated feed of my weblog, brought to you by the wonders of RSS.

Thanks for Visiting!