Past meetings

Past Meetings‎ > ‎

Discussion meeting (May 2012)


* Attending
Joe
Ravi
Leo
Paul T
Paul
Ariel
Doug H
Richard
Ali

This time out, the Lisp user group had fewer old guys (as a percentage, and as an absolute value) than the Linux user group. I was surprised.

* Notes

** FFIs
   Leo shows off a trivial example of Erlang FFI using the basic port protocol
   Common Lisp can do the exact same thing (which is unsurprising, given what the Erlang "FFI" is)
   `open-pipe`; opens a posix process and grabs `stdin` - This is in [lispworks](http://www.lispworks.com/documentation/lw61/LW/html/lw-1411.htm#marker-1030245)
   SBCL also has something like this in the form of `sb-ext:run-program`

** Let Over Lambda writer in the house
   http://letoverlambda.com/
   Spiritual successor to On Lisp
   Tries to take macros into the practical realm

** Paul T
   On github. VSH and Grash (visual sh, graph shell - self-compiling, diagrammatic shell ~800loc). https://github.com/guitarvydas

** Special forms in lisp
   27 special forms
   How many can you eliminate? (Plenty, but if you go too far you get Scheme http://isithackday.com/html5-rimshot/)

** Essentials of Programming Languages
   http://www.cs.indiana.edu/eopl/ (Friedman is associated with this, of course)

** Maxima (no, not Macsyma http://en.wikipedia.org/wiki/Macsyma, though they are related)
   http://en.wikipedia.org/wiki/Maxima_(software)
   Matlab-style math program
   Once you've derived an equation, there's an option to compile it to Common Lisp

** Old Mathematical Programs
   "Most of them were written in Fortran, and no one's bothered to port them to C"
   "No, they've ported them to C, but Fortran had such harsh constraints in the compiler that the compiled code is much faster, so no one bothers to use the C version"

** Compiler Macro vs regular macro  
*** Compiler Macro
    It's at the compilers discretion whether to apply it
*** Macro
    Always expanded if it's evaluated
*** For Example
    Format strings being compiled
    http://www.lispworks.com/documentation/HyperSpec/Body/m_format.htm#formatter
    You still need to keep the interpreted version around in case of an apply, but the compiled version is faster
*** Let Over Lambda - optimizing keyword arguments
    Ariel and Doug discussing how effectively keyword parsing overhead can be avoided
    Very! (Except when you apply the keyword function to a set of arguments, at which point there's no opportunity to apply compiler optimizations)
    "Compilers do lots of things"

** Feasibility of Unicode processing in Common Lisp
   Unicode is much more than just another character set; it's a character set plus a bunch of additional metadata about character context/accents/ligatures
   Because part of the language spec is that a string is a vector (you need to be able to get the nth character in constant time), unicode support is non-trivial
  
*** Unicode Characters! Holy Fuck!
    Ok, so a character is represented by the base character in addition to (for example) accent information
    There is a canonical order to that additional information, but it's variable per letter
    An unaccented character is actually smaller in memory than an accented character, which means that when dealing with Unicode a single
      character can be a pretty wide range of actual sizes in memory.
    It gets even worse when dealing with (for example) regexes, because while there is a canonical order to the metadata, it can vary subtly across platforms
      (there is apparently also a decent chance of running into raw forms where the metadata might be in the wrong order)

** Erlang Bit Syntax
   It's good! http://www.erlang.org/documentation/doc-5.6/doc/programming_examples/bit_syntax.html
   One of the good ideas put forth in a Joe Armstrong talk about the history of Erlang (history first, reflection in the second half) http://vimeo.com/12307912

** Clojure in Clojure
   How close is it?
   Not very; they've gotten as far as Clojurescript https://github.com/clojure/clojurescript
   Clojurescript is written in Clojure (I'm assuming anyone reading this knows what Clojure is)
   Clojurescript is supposed to be good for commandline work (since it's very small and fast)
   Ali is using an instance of the JVM in client/server mode to communicate with a front end of Clojure https://github.com/honr/clove  

** cmsg (sendmsg is the system call)
** IBM comissioned project to compile to performant C code
** NACL by DJ Bernstein (DJB http://cr.yp.to/)
   http://nacl.cace-project.eu/
   It's a DSL for cryptographic code that avoids side channel attacks by restricting indexing using secret key values
   "Code generation is pretty awesome"
** Joe's Natural Language Processing project (NEO)
   Still no details (patents will shortly be filed)
   Technology that competes with [Swype](http://www.swype.com/) and [Siri](http://www.apple.com/iphone/features/siri-faq.html) for user input
   "Pretty ambitious, but I'm lucky enough to stumble upon some areas that researchers completely missed..." in speech recognition/natural language processing
   Initially, this is going to be a B2C company providing an implememtation and some applications of the technique
   The plan is to then start targetting the enterprise market with APIs
   It doesn't necessarily need training. The math isn't necessarily difficult, it's a fundamentally different approach
   Mentioned: http://www.openfst.org/twiki/bin/view/FST/WebHome and http://cmusphinx.sourceforge.net/

** Hawkins with HTMs
   http://www.numenta.com/
   Apparently they have a thing open right now called Grok Beta

** Conversation branches (my fault, sorry)
*** Ravi, Leo, Ali
    Talking about comparisons between neural networks and HTMs
*** Rest
    Talking about arbitrary searching algorithms and going back to the NEO project

** Joe
   "I don't want to support artificial intelligence, I want to support humanistic intelligence"
   Worked for Innovation Foundation, trying to commercialize various AI programs, but they were very limited and theoretical
   Also, lots of bureaucracy

** Back to Machine learning/brain science
   Gifford Gazzaniga lectures http://www.ed.ac.uk/about/video/lecture-series/gifford-lectures
   The research he's doing points to there being an interpreter
   (asked whether this is comparable to a cartesian theatre; dualism. Didn't get a clear answer, but not about to derail conversation)

** End of meeting
   Everyone was surprised that 8:00 rolled around so fast, some ended up heading to a nearby Korean restaurant.
  

*** Highlights
    Toronto Amateur Radio Club is doing some cool stuff shortly (I hope this is the right URL) http://www.torarc.ca/
    textsecure; an automatically encrypting SMS Android app that keeps track of your contacts' public keys https://github.com/whispersystems/textsecure
   
    Also, no one mentioned it, but I'm going to abuse my privilege as note-taker to point out
      that next Tuesday week Jim Van Meggelen is talking about Asterisk http://www.asterisk.org/ at the
      Linux User Group http://gtalug.org/wiki/Main_Page
  
  
* Link Digest
** Projects/repos
   https://github.com/guitarvydas - Paul T is finally on GitHub
   http://maxima.sourceforge.net/ - Maxima official site
   https://github.com/clojure/clojurescript - clojurescript git repo
   https://github.com/honr/clove - Ali's project providing a bridge between a running JVM and a Clojure repl
   http://nacl.cace-project.eu/ - network cryptography DSL project
   http://www.openfst.org/twiki/bin/view/FST/WebHome - OpenFST project
   http://cmusphinx.sourceforge.net/ - CMU Sphinx (voice recognition engine) project
   https://github.com/whispersystems/textsecure - automatically encrypting SMS Android

** Books
   http://letoverlambda.com/ - Let Over Lambda book site
   http://www.cs.indiana.edu/eopl/ - Essentials of Programming Languages book

** Talks
   http://vimeo.com/12307912 - Joe Armstrong on the history and lessons of Erlang
   http://www.ed.ac.uk/about/video/lecture-series/gifford-lectures - things we know about the brain

** Other
   http://www.erlang.org/documentation/doc-5.6/doc/programming_examples/bit_syntax.html - Erlang bit syntax documentation
   http://cr.yp.to/ - DJ Bernstein's website
   http://www.numenta.com/ - Hawkins' latest; Hierarchical Temporal Memory originator
   http://www.torarc.ca/ - Toronto Amateur Radio Club
   http://gtalug.org/wiki/Main_Page - Greater Toronto Area Linux User Group

Comments