Using Jing With A Catalog

Jing is a utility to validate XML files using a Relax NG schema. Among the other options available, it's the one I prefer because it's so light and quiet: if there are no errors, it writes no output. This is how everything should work. No error == silence. It's also fast and exhaustive: if there are errors, it tries to identify each error instead of "giving up" after a few errors, like many other tools do.

When trying to validate XML files, it's often the case that these files have a DTD declaration; but if the DTD cannot be found the XML parser generates an error.

The problem of finding DTDs is, of course, solved with catalogs. But Jing does not seem to have an option to use catalogs, according to its homepage as linked to above.

So until now I was stuck with using Jing for files that didn't have a DTD declaration (or to somehow make the DTD findable without a catalog, which is a task in itself). I found this quite strange, though, so I started digging to check that I wasn't missing something obvious.

As it turns out, you can use Jing with catalogs since December 2008:

  • use the most recent build of jing, from Google Code
  • make sure resolver.jar is sitting next to jing.jar (download it from the catalog link above)
  • use the -C option (capital C) followed by the name of the catalog (in OASIS format) when invoking jing

and voilà!

Thu, 28 Jul 2011 • permalink

First Paris Hackers Meetup

Yesterday night was the first Paris Hackers meetup, just above the famous Drouant restaurant, home to the Goncourt Academy for those interested in French literature.

I went to Drouant once, last year, and didn't much like it; I found it pretentious and flavorless. Is there a point in telling you this? Not really, no.

Fortunately, yesterday had nothing to do with contemporary French literature: we were in for beer, pizza, and serious hacker talk!

For a first installment where almost nobody knew anybody, it all went really well; our host, Sylvain, CTO of startup Joshfire drafted an agenda with input from the crowd, and we ended up following it. If all meetings went like this I would go to more of them.

Here's a summary of what we talked about.

Upcoming conferences

The first discussion was about upcoming conferences in Paris; here's a list:

  • EuroSciPy, a European conference for scientists using Python: Aug. 25-28
  •, a French conference for all things python: Sept. 17-18 (the name "PyCon" is probably a pun on a famous French alcoholic beverage, le Picon)
  • OSDC, Open Source Developers' Conference: Sept. 23-24
  • Paris Web, a French conference in French for people who "make the web" (or do they?): Oct. 13-15
  • TWiST, This Week in Startups: next conference in October I think
  • Startup Weekend, a kind of hackaton which focuses on building a web or mobile application which could form the basis of a credible business over the course of a weekend (their words, not mine); there's an event a week somewhere in the world; next time in France is in Nantes, 30th of September
  • JUG Summer Camp, a Java conf in La Rochelle: Sept 16
  • Chaos Computer Club Berlin (in German), a hack fest that takes place in a former military base in Berlin: Aug. 10-14
  • Paris.js, a community of all things Javascript: July 27 (sold out) and every last Wenesday of each month

Top 10

We discussed the top ten stories on HN at the time of the meeting. This was surprisingly fun and enjoyable. Something that most of us do in silence behind our desk was suddenly an interactive, "real" experience.

I think most people come to HN (and stay there) for the quality of the discussion: the thoughtfulness and knowledge of the commenters, the general civility and literacy. (Just like, for example, the main selling point of stackoverflow is that it's a technical forum for literate people).

But, even if a little less thoughtful than the written version, live conversation among like-minded people is great.

Buzzwords decoding

During the break, people wrote on the board buzzwords they wanted to hear about; then these subjects were picked up by those who knew something about it.

  • node.js: Javascript on the server; the API has been changing but appears to be stabilizing
  • Haskell: a functional language that cares about purity
  • Clojure: a LISP dialect for the JVM; hence, a LISP with direct access to the immense Java library
  • funding vocabulary: why would anyone but "family, friends and fools" (FFF) give a bunch of kids tons of money? Turns out to be a really good idea sometimes (other times, not so much)
  • CouchDB: a non-relational database engine that stores serialized JSON objects with a simple key-value approach, and that can be queried over HTTP
  • other fascinating subjects: heroku, lolcats (yes, lolcats) and Google+ ('nuf said)


  • WebGL: a library based on OpenGL to generate interactive graphics on modern browsers, with native-like performance; amazing demo here by Nicolas (this Nicolas, not this one)
  • Patternify, a CSS pattern generator which produces base64-encoded images that can be added as such in you rCSS
  • Topixtream ("Topics Stream"), a new service to share and discover news, currently in private beta
  • glint (I think), a service by Stupeflix to change one's Facebook wall into a video stream
  • Joshfire: a Javascript framework that helps JS developers publish interactive apps easily on multiple devices (browsers, mobile, TV, etc.)

Next Steps

  • meet again! in September maybe?
  • more demos, prepared in advance (short and punchy)
  • go visit other HN groups: London, maybe SF?
  • meet girls??!?
  • have Paul Graham visit us in Paris! (would be really cool)
Fri, 22 Jul 2011 • permalink