Echo JS, brid.js, ql.io

05 Dec 2011 | By Alex Young | Tags modules libraries social parsing

Echo JS

Echo JS (GitHub: antirez / lamernews) is a social news site that focuses on JavaScript. I’ve already found some interesting libraries through it, and I basically read about JavaScript every day so it gets my vote.

It’s built with “Lamer News” which is a Ruby-based Hacker News implementation. Can’t someone write them a slick real-time Node version with the cutting edge server-side and client-side libraries that we all know and love?

If you prefer Twitter for consuming news, there’s also @echojs. It’s currently getting around five posts a day which seems promising. Judging by the Twitter account, Echo JS was launched on December 1st, so hopefully posts will increase in regularity rather than petering out.

brid.js

I’m not sure what to make of brid.js (License: MIT, Demo: brid.js demo). It’s a small Lisp implementation that uses JSON instead of S-expressions. On one hand, it’s a fun and interesting project, and on the other it seems like affront against nature.

This is a Hello World example in brid.js:

["println", ["quote", "hello world"]]

Adding numbers looks closer to Lisp:

["+", 1, 1]
// Lisp: (+ 1 1)

Lisp’s parenthesized syntax is analogous to the JSON representation, but the quoting required to create valid JSON is a little bit hard to get the hang of.

If you’re interested in parsing in JavaScript, then you might enjoy looking at the source. We’ve covered Jison on DailyJS before, but context-free grammar isn’t the only way to build parsers, and hand-coded parsers like this are just as useful to learn from.

ql.io

ql.io (GitHub: ql-io / ql.io, License: Apache 2.0) from eBay is a “declarative, evented, data-retrieval and aggregation gateway for HTTP APIs”. It has a DSL inspired by JSON and SQL for declaring API calls and their interdependencies.

The code itself is built on Node, and is comprised of several packages:

  • ql.io-engine: This is the core ql.io engine
  • ql.io-ecv: Checks servers are responding with JSON
  • ql.io-mon: Statistics on the ql.io runtime
  • ql.io-uri-template: A small URI template processor
  • ql.io-app: An app template for building sites using ql.io
  • ql.io-compiler: A PEG.js-based parser with a compiler (ql.peg contains the main grammar)
  • ql.io-console: Provides the HTTP interface for ql.io
  • ql.io-mutable-uri A utility for manipulating URIs

This is a diverse and complicated project, employing some interesting techniques. I’m particularly intrigued by the use of PEGs (parsing expression grammar) over context-free grammar, as Jison seems like the easiest way to write parsers in JavaScript at the moment. PEG.js (GitHub: dmajda / pegjs, npm: pegjs) is available for Node and browsers.

Announcing ql.io at the eBay Tech Blog has more details on the design and architecture of the project.


blog comments powered by Disqus