attendees: Paul Tarvydas Vish Singh Aleksandar Matijaca Leo Zovic Doug Hoyte
discussion topics: - Doug talked about the state machine compiler he's using (I think it was http://www.complang.org/ragel/) - compiles to C code - he uses it to build state machines for parsing HTTP streams - Let Over Lambda did something similar, with finding a substring within a chunked stream - easy to make mistakes in such code, so better to use a DSL - does Clojure make full use of all CPU cores? I think so, but there was some debate here. - some discussion on JIT compilation - Alex described how shared-memory concurrency can be implemented using in-memory databases - Antiweb uses Berkeley DB in a similar way - Y2K problem, fixing it using automated tools - more programming war stories (fascinating for me, definitely helps in appreciating modern technology) - discussion of articles: "Crash-Only Software" and "A Benchmark for Multi-Core Machines" - using Clojure within Java projects - obstacles to the use of Lisp professionally in Toronto? - jaded attitudes towards the language due to many people's experiences with early Lisps (interpreted, slow) - fixation on the idea that it's an AI language, even though nowadays you can do just about anything with it - (my own attitude: Lisp needs better branding.. Clojure is helping us in that respect) - Land of Lisp book, game programming
Vish: Thanks for writing up the minutes.
On 10-10-07 11:54 PM, Vish Singh wrote:
- Doug talked about the state machine compiler he's using (I think it
was http://www.complang.org/ragel/)
- compiles to C code
- he uses it to build state machines for parsing HTTP streams
Yes that is it. Ragel is awesome.
In a project I'm working on I use Ragel a lot. My project doesn't have a parser for HTTP per se but it has one for /\r?\n\r?\n/ which is all you need for an HTTP 1.0 message terminator:
machine http10_message;
...
main := ( extend* $inc_count ('\r'? '\n' '\r'? '\n') @found_separator );
HTTP is only one of the message formats it parses.
I also like using Ragel for parsing command line arguments and such.
- Alex described how shared-memory concurrency can be implemented
using in-memory databases
- Antiweb uses Berkeley DB in a similar way
http://hoytech.com/transactional-programming.html
Doug