« | » Main « | »

Jeff Atwood, in JavaScript and HTML: Forgiveness by Default writes about how a design decision in XML doomed XHTML:

Unfortunately, the Draconians won: when rendering as strict XHTML, any error in your page results in a page that not only doesn't render, but also presents a nasty error message to users.

They may not have realized it at the time, but the Draconians inadvertently destroyed the future of XHTML with this single, irrevocable decision.

The lesson here, it seems to me, is that forgiveness by default is absolutely required for the kind of large-scale, worldwide adoption that the web enjoys.

Getting upset now about the draconian error handling of XML seems kind of quaint.

» read more of: Strictness and correctness... (8 paragraphs)

tagged: » 9 reactions

I point here to John Allspaw's What Happens After You're Scalable: Capacity Planning for LAMP slides, not so much because they teach you a lot about capacity planning, which they might, but because they have a number of pointers off to other projects for monitoring, graphing, deploying, and so forth. I have a feeling I'll need those pointers one day...

tagged:   /   via: Simon Willison» react

Moleskinerie is a blog devoted to all things Moleskine, that is, anything having to do with the beloved line of Moleskine notebooks.

Often, the posts are links to scans of artists' work in their Moleskines. I am perpetually amazed and envious at their abilities to create masterpieces freehand in their little portable sketchbooks. For example, Kris Sowersby's typographic noodlings, and June Parrish Cookson's gentle travelogues.

I carry a Moleskine Cahiers pocket-size notebook because it fits in my pocket (!), but there's no great art going into it, just random notes and ideas...

tagged: , » 4 reactions

I got an interesting email from a guy looking for help with recovering information about deleted documents in a Notes database. This will likely involve some data reconstruction beneath the Notes API layer. If you know what I'm talking about and would like to help, comment here or drop me a line, and I'll put you in touch.

I've been reading a lot about XSS issues these days. It's fascinating to learn about the various vulnerabilities and exploits. Understanding them helps me make my own applications more bullet-proof, and forces a better understanding of the interaction between layers of the computing infrastructure.

A good example is the UTF-7 vulnerability. When I first read this one in the XSS Bestiary, I didn't understand what it meant. How could character sets be a vulnerability? After reading a few explanations, I finally get it. Here's the deal.

» read more of: Xss with utf-7... (21 paragraphs)

My C skills must be getting rusty: I had never heard of this string function: strfry!

There's something hilarious about skit actors cracking up and trying not to. To wit:

tagged: , » 3 reactions

One difficulty with running a web site that sends emails: it's very easy for your generated emails to get caught in spam filters. And the big email providers each have their own techniques for determining what is spam. This can mean that certain providers routinely don't deliver your emails. For example, Tabblo and Hotmail just don't get along that well.

I just saw this on TVGuide.com:

You will probably not be able to complete your registration with the following emails because your provider is blocking the confirmation message from TV Guide.

  • @att.net
  • @mchsi.com
  • @verizon.net

You can get a free email account that works from Hotmail or Yahoo.

Sounds like TVGuide got fed up with trying to appease certain spam filters.

tagged: , » 1 reaction

One problem I find with laptops: the keyboards have been modified to fit into the small space available. Usually this means moving around the "extra" keys so that the letters and numbers can be full size. And usually, one or more of these compromises seems really stupid to me.

For example, my current Toshiba laptop has a bottom row of keys like this:

[Ctrl][Fn][Alt][`~][     Space    ][Ins][Del][Alt]

What!? Ins, but no right Ctrl? Are these people crazy? Who uses Ins any more?

To fix this problem, I found AutoHotkey, one of those single-minded Windows utilities which takes a seemingly small domain and makes the most of it. AutoHotkey remaps keys and key sequences. With it, I could remap the Ins key to mean Ctrl, fixing my keyboard.

I also found that my left thumb was hurting more than my other digits, and that my Alt-Tab habit was aggravating it. I would tuck my left thumb under to the left Alt key, and hit the Tab key with my ring finger. Very quick, but also contorted. With AutoHotkey, I remapped that key combination to not do Alt-Tab, breaking me of the habit. Now I use the right Alt key with my right hand, press the tab key with my left hand, and my discomfort is much reduced.

The AutoHotkey scripting language can do many things, my little script only scratches the surface:

Ins::Ctrl
RAlt & Tab::AltTab
RAlt & CapsLock::ShiftAltTab
LAlt & Tab::MsgBox Boo!

This says:

  • Ins should be treated as Ctrl
  • Right-Alt and Tab should do an Alt-Tab
  • Right-Alt and CapsLock should do a Shift-Alt-Tab (rotate applications backwards)
  • Left-Alt and Tab should put up a message box that says "Boo!"

There's lots more that AutoHotkey can do that I haven't even begun to explore, like sending Windows messages, manipulating windows, and so on. But the few things I need it to do, it does well.

tagged: » 5 reactions

Five Minutes to Kill (Yourself) is a witty Flash game in which you have just received a straw-that-broke-the-camel's-back meeting request, and to avoid going to the meeting, you must kill yourself in the five minutes that remain until it starts.

There's lots of creative ways to get hurt. If you wear the piñata, candy-starved co-workers will beat you. Put the trophy in the microwave, and get nuked. And of course the usual office dangers await you: paper cutters, staplers, shredders, and weasels.

An oldie but goodie: SQL on Rails is a great deadpan send-up of web frameworks everywhere, modelled on Ruby on Rails. The perpetrators do a great job of hyping their obviously flawed technology.

tagged: , » 2 reactions

Kurt Vonnegut has died at 84.

Vonnegut wrote about the human condition, with a bleak but humorous and affectionate outlook on life. His opinions were blunt and harsh, but at the heart of them was an overarching compassion for people and all their foibles and pains. For a sampling, see his wikiquote page.

His statement on our purpose in the world:

We are here to help each other through this thing, whatever it is.

What a great way to direct us toward a purpose while at the same time admitting that we have no idea what the big picture is.

BTW: I like Jessica's Indexed cartoon So it goes. It expresses the sentiment of Vonnegut's fans in a very Vonnegut way.

A very well-done mashup of Monty Python's Knights of the Round Table song with Star Trek visuals:

I had wanted to link to an authoritative copy of this video (it has been uploaded to YouTube a dozen times), but the creators (T. Jonesy and Killa) have no web presence. I think they used to, but took it down for fear of prosecution for copyright infringement.

This video is simply a humorous karaoke, but its heritage is slash fiction, fan-authored fiction about romantic and erotic relationships between same-sex characters in popular culture. The first slash stories involved Kirk and Spock, and the same vidders have created video mashups that hint at these themes, for example, You're So Vain. There are of course other examples out there that are not so subtle.

Perhaps not surprisingly, the entire sub-culture has attracted academic study.

tagged: , » 1 reaction

My current laptop is getting kind of creaky. In addition to depleted batteries and a failing wireless card, it has a bad habit of overheating. When it gets too hot, it simply decides to shut off. Why the BIOS kicks in before the power management, I have no idea, but it's pretty frustrating.

A tool that has definitely helped, though is SpeedFan. In one way, it's simply a free temperature monitor, discreetly displaying your computer's internal temperature in the system tray. But it also has a ton of features for tracking a number of different temperatures, and graphing them over time, and firing alarms for different events, and so on.

Usually I can tell that my computer is in the red zone because the fan will go nuts, and it sounds like the poor machine is trying to lift off. But when I work with headphones on, I can't hear the fan. So I set SpeedFan to pop up a warning alert when the temperature reached 70 Celsius. It's worked great to keep me aware of impending doom, and let me avoid sudden shutdowns.

If you have similar issues with overheating, or you're just a CPU geek that wants to know how hot things are getting, I recommend SpeedFan.

tagged: » 8 reactions

A story in this morning's New York Times about Hewlett-Packard's efforts to print the web: H.P. Tries to Create Printers That Love the Web, including a mention of Tabblo. The reporter didn't quite get what it is that Tabblo software does, but they have the sense of the acquisition correct: make more web content more printable.

tagged: » react

When I need a Python debugger, I use the standard pdb debugger. I'm very low-tech about it: I set breakpoints by adding this line to my source:

import pdb; pdb.set_trace()

It's the only time I use the Python semicolon, and I always use it for this line.

This breaks me into the debugger when the line is executed, and I can step, examine, and so on, from there. The one aid I have is a small .pdbrc file to define a few handy shortcuts for me:

# Ned's .pdbrc

# Print a dictionary, sorted. %1 is the dict, %2 is the prefix for the names.
alias p_ for k in sorted(%1.keys()): print "%s%-15s= %-80.80s" % ("%2",k,repr(%1[k]))

# Print the member variables of a thing.
alias pi p_ %1.__dict__ %1.

# Print the member variables of self.
alias ps pi self

# Print the locals.
alias pl p_ locals() local:

# Next and list, and step and list.
alias nl n;;l
alias sl s;;l

This defines useful commands for printing members of expressions, members of self, and locals. Not a huge step forward, but helpful nonetheless.

There are other Python debuggers, but whenever I try them, I get tangled up in configurations and connections and IDEs. PDB just works, even though it is very basic. Someday I'll find a better one, but for now it serves my needs.

Update: from the comments, a link to a cool way to get more interesting helper functions into the .pdbrc file: have it read an external Python file.

Photos of The Great Sphinx at Giza always show the same vista: The majestic sculpture, staring out on the desert, often with a pyramid or two behind it. They conjure up images of the sandy Sahara, where you can travel for miles before happening upon these enigmatic monuments from the distant past.

Google Maps shows a more complete picture of the environs: The Sphinx looks out on crowded Cairo, about 300 yards away. And to completely contradict the isolated desert image, the Oberoi Mena House Hotel is a luxury resort whose golf course is about 200 yards from the Pyramids (scroll north on the map).

Seeing the Sphinx in its real setting made me wonder about other iconic landmarks. Most seem to be situated as we have come to expect, for example:

  • Stonehenge really is in a rural English setting,
  • The Leaning Tower of Pisa is in a crowded European town, (look how different the ethereal white of the church is from the uniformly tiled roofs all around it),
  • The Taj Mahal is in a wide green area in Agra, though the city crowds into it on the south.

Update: I found some photos from the Sphinx, including the KFC it overlooks.

tagged: » 4 reactions

Today is CSS Naked Day, so I've removed the CSS stylesheets from this site. It's a demonstration of both the power of CSS (look how plain the site looks without it), and its flexibility (see how the pages are still usable).

Looking at these pages without their styles, there's a number of infelicities, but they're good enough, and the styles will be back tomorrow.

Technicality: there are a few style= attributes on these pages still, and the comment form has styles aplenty. Tough.

tagged: , » 4 reactions

When taking pictures with a digital camera, it's easy to be disappointed in the results. I look at a scene, and see one thing, then I look at the photo, and I see something very different. This isn't surprising, because the human eye is equivalent to a 576-megapixel camera. R. N. Clark does an awesome job analyzing the biological and optical factors, and comes to other interesting concusions, such as an ISO rating of 800 at night, and 1 during the day.

On the same day that we announced the HP acquisition, Tabblo launched a new product that got a little lost in the commotion. The Tabblo PhotoCube is our first print-at-home product: it's a five-photo cube that you print yourself, cut out, and fold together. It was a lot of fun to launch.

I did the paper engineering. The challenge was to find a way to construct a cube that wouldn't require tabs and glue, but would hold together well enough to feel satisfying when you're done. My first attempt was an interesting construction, but required a PhD in folding to put together. The final result is simple enough to explain that people seem to have no trouble putting it together. The compromise is that there are only five photos, the bottom of the cube is open.

I like the result. It's free, and it uses your photos, and although it's a physical product, it has an immediacy that ordering books from us doesn't have.

Tabblo: How to Cut and Fold your PhotoCube

The PhotoCube nicely combines Tabblo's emphasis on telling stories with your photos, with the matter transporter nature of paper models on the internet.

Tabblo: Random PhotoCubes

Try it out.

Thinking With Type is a website companion to Ellen Lupton's book of the same name. It's like an online museum exhibit, with interactive displays, and brief explanations of what's going on. It also has fun stuff like little video games, Type Crimes, and a font dating game? It's well-designed, knowledgable, and entertaining.

Ben's birthday cake, from last weekend: Kirby and the Crystal Shards.

Tabblo: Kirby Cake

BTW: this is not our first Kirby cake. Max had one five years ago.

tagged: » react

« | » Main « | »