Common Lisp - My Favorite Tool
(use arrow keys or PgUp/PgDown to move slides)
Recent graduate, Python/Djangoist by day, Lisper by night
- 25, started programming four and a half years ago
- Cut my teeth on Scheme+SICP in '08
- No 'real' programming (larger than 100 LoC) until ~09/09
- All my serious coding was in CL for the following ~2 years
What I've learned: Experience is everything in this business.
Please stop me for questions whenever.
Why Common Lisp?
As opposed to (Scheme, Clojure, Dylan, etc...)
Don't want to get too into this, Save it for beers ;)
But: It's *NOT* all about Macros
- John Fremlin - Lisp Features
- Conditions, Usable Globals, Powerful Closures, CLOS
- Bad things too: Seq Fns, CLOS was late, Historical Cruft
Most importantly: Easiest way I've found to maintain flow.
EMACS + SLIME! ;; (sorry)
Added ogg+flac support in my fork
Huh, playback isn't progressing through the queue
TRACE ALL THE FUNCALLABLE THINGS! ;; (within-reason-p)
Oh, I changed the class hierarchy. (call-next-method)...
MOVE ALL THE SUPERS!
;; see: mixalot commit, shuffletron commit
Check, Untrace, /me bows, \o/ #lisp
A minor hack: romreader
- A lib for parsing ROMs for console emulators
- Only supports NES at the moment
- A good, simple project. ~130 LoC excluding whitespace, comments
And now... SOME CODE!
Enter romreader ...
Tada! And we're all still alive...
Any questions? Feel like walking through parse-header? Feel like disassembling it?
A few other hacks...
- cl-6502: Current project: 6502 emulator in lisp
(was burned out last month, need to pick it back up)
- cl-scrobbler: a library for scrobbling to last.fm.
boring REST with cute (hideous?) macrology
- paktahn: An AUR helper (pkg-mgmt tool) for archlinux
- clockwork: a simple email+sms reminder web app
made with weblocks (also a blog series)
- coleslaw: lisp blogware (needs work)
- cl-opencv: bindings to Intel's computer vision lib
- trivial-raw-io: raw serial/terminal I/O (termios) for unices
Q & A
Ask questions, berate me, challenge me, demand to see code, etc
More resources for those interested...
- Friendly coworkers!
- Excellent books - PCL, CLtL, and the HyperSpec!
- Excellent implentations: Clozure CL, SBCL, and clisp
- Lovely package manager - Zach Beane's Quicklisp
- Great folks in freenode's #lisp. Just don't ask why you should learn it!
- Insane editor integration - SLIME for Emacs, Slimv for Vim.