« | » Main « | »

"We're working a lot more quickly than a traditional software company. It would have taken them three years to get to the point of reverse-engineering their own code. We've done it in only one!"

tagged: , , » react

In yesterday's post about AmphetaDesk's customizability, I closed with a glib jab at Perl. This (I think) offended some, and I should explain.

AmphetaDesk is well-written, and for all I know is a milestone in Perl coding. Others have thought so. I have read some of the code, and I have to say, it is very well documented, the comments even including jokes to keep the reader entertained. It is clear that the author knows what he is doing.

But for me, Perl remains an opaque language. To take one example, this appears early on in AmphetaDesk.pm:

# turn on autoflushing for AmphetaDesk.log
select(LOG); $|++; select(STDOUT);

This just turns me off, and more to my original point, is difficult for me to read and understand (although AmphetaDesk is way ahead of the pack by providing a helpful comment). I've used Perl before, and what it does well it does very well. I don't mind diving into it to get something done. For example, I added some features to Webtrax. I may yet be tempted to try to hack AmphetaDesk. But there will be more friction for me with Perl than with another interpreted language (though clearly much less than a compiled language). That's all I meant.

tagged: » react

Since I've been trying AmphetaDesk, I've been visiting lots of sites trying to subscribe to their RSS feeds. AmphetaDesk provides a bookmarklet that tries to find the RSS feed for a page and if it can, subscribes you to it. It isn't as persistent as Mark Pilgrim's Ultra-liberal RSS locator, but it tries to locate <link> tags on the current page. Now, many sites don't provide RSS at all, but many that do still can't be auto-subscribed in this way.

If you provide an RSS feed of your page, do these things:

  1. Provide a <link rel='alternate' type='application/rss+xml' href='...' /> tag to help auto-subscribers find it.
  2. Make sure the href attribute in that tag is an absolute URL.
  3. Make sure your web server provides an appropriate MIME type for that file.

(I couldn't auto-subscribe to my own site because of #2!)

I agree with Mark Pilgrim's philosophy that the locator should be as clever and persistent (liberal) as possible. But I also believe that providers should remove as many barriers to subscription as possible, by being as careful and strictly conformant (conservative) as possible.

There's a pithy classic quote about this very principle, and I can't find it now (d'oh).

On the other hand, Rob Fahrni and Brian Cantoni were brought together by an invalid RSS feed. Who says web technology can't bridge the gap between people?

tagged: » react

While looking for Python scripts to produce HTML pages for displaying photos, I came across the Python Photo Gallery. It seemed like the perfect thing in the Google listing. Appearances can be deceiving...

tagged: , » react

In response to my post about webservers as applications, Morbus Iff, author of AmphetaDesk emailed me with another advantage of local webservers as applications. Morbus (if that is his real name!) pointed out that if the code is written in an interpreted language, then patches and hacks are very simple. This isn't strictly an advantage of a local webserver (since a traditionally-constructed GUI application could be easily patched as well), but given that the webserver app has a GUI built in HTML, it is much easier for others to hack.

For example, AmphetaDesk is written in Perl, and a number of enhancements have cropped up:

These are more than just simple skins over the existing code. The first two are radically different UIs for the underlying RSS engine.

For me personally, the promise of being able to change the underlying application is a two-edged sword. Because I'm tempted to make changes, but who's got the time and focus to successfully carry it through, especially in (shiver) Perl?

» react

¶   ongoing: Enterprise Software Wreckage

¶   Reflective Surface: The evolution of programming languages

¶   Strategies for learning new languages

tagged: » react

The Perry-Castañeda Library Map Collection has a great collection of detailed maps of Iraq (as well as the rest of the world).

tagged: , ,   /   via: Rebecca's Pocket» react

Last night at dinner, this old topic came up (tomato is really a fruit, corn is really a grain), and we told our son that it was indeed true, but we couldn't tell him why. What's the actual definition of fruit, grain, and vegetable? Linda has the answer: grains are seeds, fruit is anything that carries seeds, and vegetables are everything else.

Want more fruit and seed knowledge? Try Fruit and Seed Anatomy. Of course, as you get into the real details, things get complicated. As with any attempt to classify nature, the actual diversity conflicts with our desire for straightforward categories.

For example, Fruit Types and Classification of Fruits says both, "what constitutes a fruit is straightforward" and, "a few 'vegetables' are difficult; broccoli and cauliflower are inflorescence buds".

And remember the simple taxonomy of kingdom, phylum, class, order, etc? At the top were the plant kingdom and the animal kingdom, with animals divided into vertebrates and invertebrates? The Tree of Life says you're wrong.

tagged: » react

I happened upon Soapbox from Hiveware today. It's a new blogging tool, but that's not what interested me. I was interested instead in its unusual construction: it's a desktop app, installed on your own machine, but it works by running a web server locally, serving HTML as the user interface. Essentially, it's a web service, running completely on your own desktop.

I've seen this paradigm before (the RSS aggregator AmphetaDesk works this way), and wondered about it. At first blush, it seems like nothing more a clever way to allow web-enabled developers to build desktop apps: by running the web server locally, all those web development skills become desktop development skills. But web applications are hard: you spend a lot of effort working against the stateless grain of web servers, and HTML is not great for things like drag-and-drop and multi-paned interfaces.

But thinking about it, I realized there could actually be more important reasons to build apps this way. After all, HTML is the most widely-deployed cross-platform GUI toolkit there is, even if it is not the richest for supporting complex user interactions. Nothing can touch it for cosmetic polish (CSS makes for great skinning). And if what you are building touches on the web, then your UI is already fully web-enabled.

Are there other reasons to work this way? Is there something beyond the power of HTML that I'm missing about the benefits of web-hosted apps that make them compelling even for local deployment?

tagged: » react

¶   Meanwhile, at Home, Greed Prevails. Disgraceful! CEO receives handsome termination after being fired for doing a bad job.

¶   Lego Milhouse

¶   Cool URIs don't change. TBL (five years ago) on the need for URIs to remain consistent.

¶   Wiki: Perl Design Patterns. I hardly use Perl at all, but this might help when I do.

tagged: , , » react

Jot

Monday 24 March 2003

I needed a way to unobtrusively jot XML elements into a file (to keep track of the quick links for this blog, if you must know). So I wrote a wxPython app to do it. It sits in the systray, and cheerfully collects data to be stashed in the XML.

Go try Jot.

tagged: » react

For our second March birthday, we had a superhero party, with an emblem cake:

Superman birthday cake

I'm still trying to get good reds, and it was tough putting two colors in a specific pattern.

tagged: , » react

I wrote my first useful wxPython application over the weekend, and here's my number one helpful tip for those of you out there who are trying to get started with wxPython.

Maybe there's something about my installation that isn't right, but when there was an error in my code, I saw a little stderr window pop up, and then disappear before I could read what it said. Very frustrating. Here's what I finally figured out to fix it.

Instead of the usual main loop:

app = MyApp()
app.MainLoop()

Use this instead:

try:
    app = MyApp()
    app.MainLoop()
except:
    import sys, traceback
    xc = traceback.format_exception(*sys.exc_info())
    wxMessageBox(''.join(xc))

Now errors in executing the main loop will be displayed in a message box, where (imagine this) you can read them!

¶   E-mail reveals real leaders

¶   This synechdoche of totem personality is a dangerous analytic framework

¶   xrefer, a comprehensive reference site

tagged: » react

Accessify.com has a nice page of favelets, that is, handy-dandy JavaScript packaged as bookmarks that can be used to analyze web pages dynamically.

For example, try this: Show and label divs with classes.

tagged: ,   /   via: Simon Willison» react

I liked this comic: The best damn cat food any cat ever imagined. That's all.

tagged: » react

Amid other stories of intolerance for dissenting views (TSA inspector calls passenger "anti-American", Man arrested for "peace" t-shirt) comes news of this year's latest closed-minded decision by the organizers of the Boston St. Patrick's day parade: Veterans differ on antiwar protest. Seems the "support our veterans"-themed parade felt that the group Veterans For Peace would be inappropriate.

Latest update: Antiwar group draws reaction at Southie parade The Boston Police allowed the group to march after the parade. They were met with mixed reactions, including people shouting "traitor!" at them.

The Boston St. Patrick's Day parade has never been a model of open-mindedness and inclusion (in the past, they were famous for preventing openly-gay marchers, going to court to establish themselves as a private organization so they could legally block them). I hardly expect different from them. But it feels to me like this sort of attitude is becoming more common, and less challenged by the mainstream. I wish that our various leaders would devote some press conference time to decrying the true anti-American attitudes displayed in these stories: the crushing of dissent.

I'll close with a quote widely mis-attributed to Voltaire:

I disagree with what you say, but will defend to the death your right to say it.

tagged: , » react

Yesterday was Pi Day (3/14). An Indian co-worker points out there is no Pi Day in India (because the date is written 14/3). Although I'm a day late, I'm also a math geek, so I have to mark the day somehow.

Here's a page about pi. Also found in my pi day researches: the Inverse Symbolic Calculator. Enter a number with at least five decimal places, and it will give you symbolic expressions that evaluate to that number (7.387968 gives "root of polynomial -7+9*x+3*x^2-7*x^4+9*x^8", among other answers). I can't imagine a use for this, but it's one of those offbeat reference sources that only the web can provide.

tagged: » react

I currently use Phoenix as my browser. To tell you the truth, the reason I switched was that I got fed up with IE losing track of all the bookmark icons (you know, favicon.ico files). It seemed an especially cruel irony, since IE invented the things, and they claimed their "OS integration" would provide me with tons of benefits.

I love favicon.ico icons, because anything that distinguishes different sites helps me to keep them all straight. (As I've mentioned before, I don't like RSS because it homogenizes sites).

» read more of: What's so tough about favicon.ico?... (4 paragraphs)

tagged: » react

Ole Eichhorn has written a thoughtful essay called The Tyranny of Email, which is partly about email, but mostly about the tyranny of distractions. I'm not sure I agree that you need a three-hour window to be productive, but I definitely agree that it takes real work to stay focused. I like his use of the word "warp-off" to describe escaping to a fun or easy task.

tagged: ,   /   via: Scripting News» react

Boring3D

Thursday 13 March 2003

Boring3D is a showcase site for Jimmy Maidens, and an oddball site it is. He features a 3D picture per day, which doesn't sound so unusual, except that they are all offbeat surrealistic somethings, not quite cartoons, maybe dream vignettes. I don't know what to call them. I do know that I liked looking at them.

tagged: ,   /   via: Idle Type» react

Ghostword

Wednesday 12 March 2003

I didn't mean this to become a PDF software shopping site, but in reaction to pdf995, a reader sent me a pointer to GhostWord, free PDF generation software that piggybacks on top of GhostScript, the open-source PostScript interpreter. I haven't used GhostWord, but I thought I would pass it along.

tagged: » react

pdf995

Tuesday 11 March 2003

I looked into pdf995 today. It's software that (a) creates PDF files, and (b) costs $9.95. The price in the URL is the software equivalent of dollar stores (you know, where everything costs $1). Has the commoditization of software come this far?

(I haven't actually used pdf995, so I don't know how well it works.)

tagged: , » react

I've posted the code for stripped down (Mini) version of Nat's World, the picture environment game I wrote for my son Nat. It was the subject of a Python Success Story. Enjoy.

Nat's World cursors

tagged: » react

Two unrelated links, at opposite ends of computing's temporal spectrum:

From tiddly-pom comes a site about one of the first computers, the EDSAC. A simulator is provided, with instructions, and programs to run (including Conway's Game of Life). It's hard to imagine using a computer this primitive, but imagine how jazzed they must have been that the thing worked at all, and it was a great leap ahead of what came before it (paper and pencil, mostly).

Indirectly from Dan Bricklin comes Open Croquet, a wild-assed experiment about a potential user interface, with 3D navigation among programs and computers. The whole thing is built in Squeak, a dialect of Smalltalk, and has a number of software luminaries working on it (David A. Smith, Andreas Raab, David Reed, and Alan Kay). It's easy to say "it'll never make it onto everyone's desktop", but who knows? I'm sure people said that about other things Alan Kay has come up with, like windowed GUIs.

March is a big birthday month for us. Yesterday was my son's Matrix-themed birthday party, and we made him this cake:

Matrix birthday cake

It's not as elaborate as previous cakes, but the kids liked it.

Yesterday's one-year birthday of this blog passed without much fanfare (unlike other blogs). Of the 227 entries I made in the year, these are the highlights for me:

tagged: » react

I found this 59-year-old dime in my pocket:

1944 dime

In all my life, I've never seen a dime other than the usual FDR dime. Now, in the 21st century, a Mercury-head dime just shows up in some change. This dime has been kicking around since World War II, and has passed through who knows how many hands? Remarkable.

tagged: » 19 reactions

Sam Ruby has whipped up a proto-aggregator pragmatically named wx3pa (for wxPython 3-paned aggregator). I'm not linking to it so you'll use it (because it is really raw). I'm linking to it as an example of the cumulative power of many people writing many small chunks of code that can be built upon by others.

Python provides the language and basic infrastructure, wxPython provides the UI toolbox. Mark Pilgrim provided the RSS parser, and Sam only had to write 107 lines of code to pull it all together. Granted, it doesn't do much yet, but it is a full-fledged GUI application that reads and aggregates RSS feeds.

tagged:   /   via: Simon Willison» react

Alan Green writes about the overuse (in Java at least) of the term 'Manager' in class names: Naming Java Classes Without a 'Manager'. I agree. There are habits we fall into when writing code that eventually obscure our intent, and let us avoid thinking critically. Using a catch-all term like 'Manager' is one of them. Besides, 'Wrangler' is so much more colorful!

tagged:   /   via: The Fishbowl» react

Driving to work the other day, I passed a truck with the company's motto on the side: "Redefining Asparagus". I thought, "it's still a vegetable, right?"

tagged: , » react

Tim Bray, one of the editors of the XML standard, has a weblog called Ongoing. It's interesting, educated, informed, intelligent stuff.

tagged:   /   via: Scripting News» react

Like many bloggers, I'm reacting to Jeremy Zawodny's 10 Habits of Highly Annoying Bloggers, trying to improve my blogging karma. In my case, by creating an About Me page.

Having crossed off habit 5, by my own estimation I am now guilty only of habits 1 (no comments enabled here), and maybe 10 (I don't have TrackBack). Both are due to the fact that I hand-rolled this site from raw XML and Python. Maybe someday...

tagged:   /   via: Ben Poole» react

Geegaw has a new twist on the old words-made-from-hex-letters game: RGB colors made from words made from hex letters.

In a typical over-doing vein, I wrote a Python script to munge a large word list, and come up with an 805-word list of hex words, as well as a list of 136 hex color words.

tagged:   /   via: Everything Burns» react

« | » Main « | »