||[Dec. 12th, 2005|02:44 pm]
Time for another update. I'm pretty slack, so I'll just take the time to say "Merry Xmas!", because knowing me I won't post again before the big fella in the red suit arrives.|
Isis and I are trying to go boarding every weekend, and so far we are 4 times in the past 5 weeks. The last couple of times we went to Willamette pass (willamettepass.com), smaller ski field than Mt Hood, but a lot less people and easier for us to get to. I'm pretty happy on Green runs now and Isis has enough board control that she can get down a Green run at a speed she is happy with. Lots of fun! We have one more weekend to practice before we head to Canada and Whistler Mountain for Xmas with Isis' Canadian relatives.
Sigh, nothing too bad, but nothing too good. At least it is nearly Christmas.
Still playing with Lisp. This language really is different. Normally when I pick up a new language, I read some documentation, write a few trivial examples and then throw myself into a project that is somewhat graphical in nature. Not so with Lisp, mostly because I really don't feel like I have enough understanding to create a decent Lisp program. I look at some of the code posted to c.l.l, and my mind boggles.
I am also frustrated that the best Lisp development environment is Emacs + Slime, I like Vim damnit. I've discovered a few techniques that are making me somewhat productive, but I am having to debug printf style for the most part. The good thing is that I am doing very little debugging, I can test snippets of code very easily, run them in the Lisp (SCBL to be exact) image and know that for the most part they work.
To learn Lisp better I am writing a Vim clone. I started using Ltk (a Lisp binding to Tk), and had a passable prototype quickly. It was dog slow though, mostly because of me. Profiling the code showed that huge amounts of time were being spent in low-level SBCL string functions, it took me a while to understand why.
I was repainting the screen at every character press - this is slow, but hey nothing compared to rendering Open GL scenes at 60 fps - the way that the Ltk binding sends commands to Tk is via a text stream pipe to a Tk interpreter, which results in a lot of created strings & a lot of data transfer.
I decided to give up on Ltk rather than optimise the string passing, after all Ltk was never my prefered target front-end, a simple text ncurses interface was.
So back to cl-ncurses. Which promptly blew up on my new SBCL install for reasons unknown. Generally the code in cl-ncurses is fine, but there are some nasties, for example, to access C macros (getyx), the author created a C file with functions that simply wrapped the macros. The C file needs to be compiled by the system's C compiler, which means that cl-ncurses needs to be explicitly aware of different platform specific details such as what compiler to use. Ick.
So I looked at Verrazano, which automatically generates bindings from C/C++ headers. In general this is a good idea, because you can track the latest C headers by just rerunning VZN over them. Contrast this to cl-ncurses that was finished in 2004 and hasn't tracked ncurses changes since.
VZN is very good, not quite there yet, but I learned a lot about Lisp libraries & how to install them by installing VZN's dependancies. It is actually pretty easy, I'll have to write about it.
I also posted an idea to cll about forming CL Janitors (now CL Gardeners), which is a project where a bunch of newbs like me can help CL in general by doing some clean up work.
Got to run, laters!!
Happy New Year.