In order to test out fully interactive program development (as noted previously), I've been learning Common Lisp. I assumed that it would take a while to catch up on nearly four decades of Common Lisp's progress and... I was not wrong about that. On the plus side, given the long timeline, there are a lot of resources available. On the flip side, they're not always up to date.
Regardless, here are the resources that I've found most helpful over the last couple of weeks. My intention is to keep this list up to date as I go.
In descending order of how much time I've spent studying them (i.e. in completely arbitrary order):
- Practical Common Lisp by Peter Seibel
- Successful Lisp by David B. Lamkins
- Loving Common Lisp, or the Savvy Programmer's Secret Weapon by Mark Watson
- Various topics: Common Lisp Cookbook
- Debugging: Debugging Lisp (series)
- Packaging/libraries: Source Code Organization
- The LOOP macro: Tutorial for the Common Lisp Loop Macro
- JSON libraries: Review of CL JSON libraries
That's great, but what have you been doing?
That's mostly a topic for a future post. Briefly: my first project has been building a service that hosts webhooks which implement Battlesnake clients. Surely there's no more noble endeavour than programming games!
Battlesnake is a competitive programming game where snakes move around a grid collecting food and trying not to collide with each other or the walls. Each snake is implemented as a webhook which is given 500 milliseconds to respond with the direction it would like to move. It's a simple concept, but that just leaves lots of room for optimization. As an aside, the global leaderboard is a little bit pointless in that it can't take into account hardware, so for all I know my little netbook is competing with a rack of servers, but I'm still having fun.
Hopefully I'll have more to say about Battlesnake and Common Lisp soon!