Open-source Bundling

Cast your mind back to the halcyon days of the late ’90s. Windows 95/98. Internet Explorer 4. Before you laugh, consider that IE4 included some pretty cutting-edge technology for the time: Dynamic HTML, TLS 1.0, single sign-on, streaming media, and “Channels” before RSS. IE4 even pioneered — unsuccessfully — the idea of “web browser as… Continue reading Open-source Bundling

Command-Line Intransigence

In the early days of Clojure, I was skeptical of Clojure-specific build tools like Lancet, Leiningen, and Cake. Why would Clojure, a part of the Java ecosystem, need its own build tool when there were already so many Java-based tools? At the time, I thought Maven was the last word in build tooling. Early Leiningen… Continue reading Command-Line Intransigence

Dependency Management First-Aid Kit

This article attempts to unravel some of the mysteries of dependency management with Maven and Maven-based tools. Help, something’s missing! Say you have a project named “my-new-project” which declares a dependency on version 3 of the “awesome-sauce” library by the corporation. You add the dependency to your pom.xml, project.clj, or whatever configuration file your… Continue reading Dependency Management First-Aid Kit

Generating Clojure from an Ontology

I’ve been fascinated with RDF for years, but I always end up frustrated when I try to use it. How do you read/write/manipulate RDF data in code? Sure, there are lots of libraries, but they all represent RDF data as its primitive structures: statements, resources, literals, etc. Working with data through these APIs feels like… Continue reading Generating Clojure from an Ontology

It’s About the Platform

I’ve said It’s About the Libraries, and indeed, one of the major selling points of Clojure is that it can call Java libraries directly. But there’s more to it than that.  Libraries are just one benefit to building Clojure on top of Java, or, more accurately, on top of Java the platform. Look around you,… Continue reading It’s About the Platform

Stop Your Java SAX Parser from Downloading DTDs

Back in February, in a slightly plaintive post, the W3 sysadmins asked that people stop hammering their servers with requests for XHTML DTDs. Everyone said yes, this is a stupid problem that wouldn’t have happened if a) the XML spec were less dumb, or b) XML libraries were less dumb. After that post, I spent… Continue reading Stop Your Java SAX Parser from Downloading DTDs

Calling Java Constructors with this()

The things I don’t know about Java… could fill a book. Here’s a new one, from the Hadoop sources: public ArrayWritable(Class valueClass) { // … } public ArrayWritable(Class valueClass, Writable[] values) { this(valueClass); this.values = values; } The second constructor uses the syntax this(arg) to call a different constructor, then follows with initialization code of… Continue reading Calling Java Constructors with this()

Not So Slow

Perhaps I was premature worrying about how slow Ruby is. John Wiseman was benchmarking Montezuma, his Common Lisp port of Ferret/Lucene, and found out in the process that Ferret is 10 times faster than Java Lucene! As he says, Ferret gets help from about 65,000 lines of C code. I’ve heard this before, perhaps not… Continue reading Not So Slow

Who Needs Data Structures?

Ran across an interesting remark in a discussion of Microsoft hiring interviews: If I remember, a lot of MIT people back in the 70s broke the computer world into the Lisp and non-Lisp data typers. The Lisp folk took a casual attitude towards data structures – just shove them in a list, put them on… Continue reading Who Needs Data Structures?