Archive for December 2005

van Rossum goes Google?

O’Reilly’s Jeremy Jones is reporting that Guido van Rossum, creator and lead developer of the Python programming language, is now working for Google.

My immediate reaction was “Not Heinemeir Hansson?” (The creator of Ruby on Rails, the much more buzzword-y framework for Web apps).

Seriously though, it’s long been known that Google extensively uses Python (and other, proprietary domain-specific languages and tools) internally. This is one of those practices that signal Google’s sophistication. In most organizations, you’ll find that all work is done with the “production” language ? the language that is used to deliver value to the end-user. More sophisticated organizations recognize that exploration and exploitation often require different toolsets.

Personally, my favorite tool for exploration is Mathematica, which has a unique “notebook” interface that allows you to record your thoughts, embed pictures and media, and develop functionality.

King Kong: Good Movie, But the FX Aren’t The Best

I liked King Kong quite a bit, and I’ll say that the special effects of Kong’s face are the best I’ve ever seen. But in most of the action scenes, I thought the effects were a notch below Lord of the Rings. The dinosaur chase scene I thought was really poor, with no real sense that the actors and dinosaurs were in the same space.

Oh, and Kong can handle three T. Rex but can be brought down by a couple of grappling hooks? Puh-lease.

 

Getting Sacked The Week Before Christmas

CMP, a major trade publisher, laid off a bunch of people in their software development publishing group on Friday, including blindsiding a five-month pregnant editor who’d worked there for more than a decade. Ah, corporate America!

I suspect that at least two well-known but ad-challenged magazines are going to shut down. Stay tuned…

Logic programming with Iterators

Wesner Moise has a fantastic blog post on how iterators and Expressions can be used to implement backtracking:

It turns out that it is possible to implement logic programming in C# natively through the use of iterators.  

grandparent(x, z) :– parent(x, y), parent(y, z). parent(jebbush, gpbush). parent(ghwbush, gwbush). parent(ghwbush, jebbush). 

The above rules in Prolog could be translated into following C# code: http://wesnerm.blogs.com/net undocumented/2005/12/iterators and n.html

 

The Dismal Failure of XSLT

XSLT is used to transform one XML document into another. The canonical example is the transformation of a data-oriented XML document into a XHTML document formatted for reading in a browser. However, the evolution of dynamic Web sites has clearly favored procedural programming to get the data (ASP, PHP, etc.) and CSS as the formatting model. But I, like some others, originally thought that XSLT’s great potential was as the linguage franca for transforming documents in a data-driven world. But here we are,  on the eve of 2006 seven years after I first worked with XSL, and I am looking with utter dismay at a project that (potentially) involves the development of a custom XSLT transform.

The dismay comes from the idea of configuring my system for XSLT debugging, clearing a space beside my keyboard for Michael Kay’s XSLT Programmers Reference (which is the only way to get through a major XSLT job), and plunging into the darkness. Or, I think to myself, Load the DOM, walk the tree, and write the nodes. A part of me finds this thought a betrayal — XSLT solves this problem, darn it, and it’s just a matter of figuring out the templates and then you write nice declarative transforms, as opposed to doing it in code, where you’ll confuse transformation and declaration, mess up your responsibilities, shroud the transform in the fog of infrastructure, etc.

But when I’ve done major XSLT jobs before, I get the sense that I might as well have been delivering PROLOG source code — it works (for now), it has theoretical advantages, if you immerse yourself in it it eventually clicks and makes sense, but… No one ever will. Expertise in XSLT? Hah!

I’m going to talk it over with my client, but I doubt that I will end up doing this in XSLT. It’s a technology that’s failed.

Too Twisted: Text Entry via Tilting Toshiba!

Seb Wills has hooked the accelerometers in the Toshiba M200 to control the Dasher text-input system (in which letters gradually slide from right-to-left and your vertical motion selects them). Fantastic!

One of the most interesting things about the Tablet PC is all the ways we search for alternate input techniques. Personally, I find that SHARK has the highest rate of entry (better than FITALY, better than Dasher, way better than handwriting), but there are aspects of the Java-based input panel that are really frustrating.

For my next DevX article, I’m working on a voice-input correction system that is based on the Tablet PC Input Panel, which is a tremendous piece of UI engineering for correcting hand-writing. My premise is that it’s acceptable to use a mixed-mode editing panel, where a pen / mouse is used to navigate the recognized text and its alternates. I’m having some trouble understanding the SAPI object model — I’m requesting alternates but getting identical outputs, which is strange.

IronPython in Visual Studio CTP available

Microsoft has just released a CTP with the first version of IronPython / Visual Studio integration: http://affiliate.vsipmembers.com/downloads/41/UserFileDownload.ashx

MSBuild tasks for Subversion access

The msbuildtasks project at http://msbuildtasks.tigris.org/ has written tasks for MSBuild that include Subversion commit, update, checkout, etc. Also, they have an FTPUpload that double definitely come in handy. Fantastic!

MSBuild: Determine Available Tasks and Outputs

It can be hard, when using MSBuild, to know what Tasks (aka Targets aka functions) are available, especially when using the built-in .targets files associated with the compilers. So, I wrote a custom Task that iterates over all the other Tasks that are currently loaded and outputs their [Output] properties. To use it, just drop the .DLL so that MSBuild can find it, open your existing MSBuild project file, and add the following:

<UsingTask AssemblyFile=”TasksAndOutputs.dll” TaskName=”TasksAndOutputs”/>
<Target Name=”AfterBuild”>
   <TasksAndOutputs/>
</Target>

And run MSBuild.

Binary and Source-Code Download.

Oh, it’s also a decent-enough sample of extending MSBuild with a custom task.

Saddam “refuses to appear”? WTF?

Okay, totally off-topic, but how can a prisoner refuse to appear at his own trial? And then he gets a two-week delay of the trial? This does not bode well for establishing the supremacy of the rule of law. Talk about “contempt of court.”