
Description:
Zach Beane's Blog - LiveJournal.com
Contents:
Skidder with logs
From my dad's farm. A forester is working the woods over the hill.
ZS3 updates
I updated ZS3, my CL library for interacting with Amazon S3, with a few new features.
First, there's support for S3's new multi-object deletion system. In the past, S3 required one API call per object to delete stuff. Now you can delete up to 1000 objects with a single call, and ZS3's existing delete-objects function has been updated to use the new interface and will automatically split up the objects to be deleted into groups of 1000 as needed.
Multi-object deletion can be a big deal, since each API call costs money.
Second, there's support for the "reduced redundancy" storage class. Reduced redundancy storage is less durable than standard storage, and it comes with a corresponding reduction in cost. You can choose reduced redundancy when using put-object or related functions, or set the storage class after the fact with set-storage-class.
Third, there's support for automatic object expiration, aka bucket lifecycle configuration. With bucket lifecycle rules you can specify that objects with names that match a certain prefix expire after a certain period of time. You can change a bucket's lifecycle configuration with bucket-lifecycle and related functions.
Automatic expiration of objects is another way to save money on API calls. If objects are deleted automatically, you don't need to use any API calls at all to get rid of them.
Please let me know if there's an S3 feature you really want to see in ZS3. I feel like I'm on a roll and would love to add some more stuff that people need.
Finding SBCL sources
You can get SBCL binaries from www.sbcl.org and that works pretty nicely. However, if you use M-. in slime to jump to the definition of a SBCL-defined function (e.g. sb-ext:run-program or cl:car), you might get something like this:
Error: failed to find the WRITE-DATE of /Users/jwise/proj/sbcl/clean/1.0.54/sbcl-1.0.54-x86-64-darwin/src/code/list.lisp: No such file or directory
That's because the sources are located based on the definition of the SYS logical host, and that host can get carried over from the environment used to bundle up the binary release.
One longtime solution is to download the sources and set up your own logical pathname translations for the SYS logical host. As of 1.0.53, you can now do this:
(sb-ext:set-sbcl-source-location "/path/to/sbcl/source/")
That takes care of establishing a mapping to the SBCL sources for you, and after that M-. will work as expected.
Clozure CL in the Mac App Store
From Matt Emerson on the Clozure CL mailing list:
Several people have wondered whether CCL or CCL-developed applications would meet Apple's requirements for being distributed via the Mac App Store.
There's only one way to test that...you have to submit an app to the store. So I did. It was accepted.
http://itunes.apple.com/us/app/clozure-cl/id489900618?ls=1&mt=12
Cool!
l1sp.org source code now available
You knew about l1sp.org, right? The redirect site I made a few years ago to make it easy to share links to Common Lisp documentation? Well, I just released its source code on github. Enjoy!
Peter Seibel's "manifest" screencast
Peter gives an introduction to his "manifest" online documentation browser.
Blue eyes
Amsterdam Quicklisp talk script
I'm told the audio on my Amsterdam talk is pretty bad. Here's the script on which I based my talk. It's incomplete, and differs
from the talk I delivered in many ways. I offer it as-is with the
hope that it is interesting even if it's not a word-for-word
transcript.
My ECLM 2011 Quicklisp talk: video & slides
The video for my talk at ECLM 2011 is now available. I put up the slides here. The slides aren't in the bullet-bullet-bullet style so I'm afraid they don't stand alone, but maybe together with the video they make sense.
Closed Source
Minecraft sometimes has a yellow tagline that says "Closed Source!" Erik (age 6) asked me about it. "What's source?" It's the instructions to the computer that tell it how the game works. "Why is it closed?" They want to be able to make it so they can sell it and that people can't make changes and sell it themselves. "So we can't figure out how the game works?" Nope. "Not even on our own computer?" Nope. "They're mean! That's the BORINGEST!"
CCL on Android
From Gary Byers on
the Clozure
CL mailing list:
Early in the year, I got CCL running (for at least some value of
"running") on Android. It was of somewhat limited utility (there are
only so many times that you can call (FACT 1000) on your phone before
the thrill wears off), but anything of greater utility - something
that could be used to develop Android applications - would have to
start somewhere. I haven't had too much time to work on it since, and
when I tried building it from current trunk sources a month or two ago
I found that bitrot had set in. Once in a great while, someone asked
about the (fairly old) binaries that were in svn, and the Android port
was mentioned in passing in the iOS discussion a few weeks ago.
The bitrot seems to have been relatively minor, and I was able to get
it working (for some value of "working" ...) again today and updated
the binaries in svn. If anyone has interest, some spare time, and a
suitable Android device, I can explain how to install and run those
binaries and how to build them from source; since (AFAIK) I'm the only
person who's ever run it, I'm curious as to whether or not it works
for anyone else.
This is still a sort of spare-time project for me, but I think that
it's potentially interesting and would like to put more spare time
into it than I have over the last several months. If anyone's still
interested, read on ...
Read the whole
message here. The
thread
has some followup.
Common Lisp github projects
There's a nifty page on GitHub that shows recently created Common Lisp repos. Unfortunately, it doesn't have a feed, so I wrote a little CL program that pulls down the page with Drakma, processes it with Closure HTML, and writes out an Atom feed file with HTML-TEMPLATE. I turned it into an executable with buildapp to run it from cron. So now you can add the feed to your favorite feed reader and keep track of potentially interesting new CL projects.
Feed URL: http://planet.lisp.org/github.atom
Enjoy!
INTERNATIONAL LISP CONFERENCE 2012
+--------------------------------------------------------------------+
| |
| INTERNATIONAL LISP CONFERENCE 2012 |
| |
| http://www.international-lisp-conference.org |
| |
| Campus Plaza Kyoto, Kyoto, Japan - October 21-24, 2012 |
| |
+--------------------------------------------------------------------+
Sponsored by The Association of Lisp Users
General Information:
The Association of Lisp Users is pleased to announce the 2012
International Lisp Conference will be held in Kyoto, Japan at
Campus Plaza Kyoto from October 21st to 24th, 2012.
This year's program consists of tutorials at beginners' and
advanced levels, prominent invited speakers from the Lisp
communities, an excellent technical session, tours of
Jidai-Matsuri: festival enjoyed by people of all ages,
participating in its historical reenactment parade dressed in
authentic costumes representing various periods, and characters
in Japanese feudal history.
Schedule:
Sunday, October 21st
- Registration
- Tutorials
Monday, October 22nd
- Invited presentations
- Excursion (Jidai-Matsuri)
Tuesday, October 23rd
- Presentations of accepted papers
Wednesday, October 24th
- Presentations of accepted papers
- Annual meeting of the Association of Lisp Users
- Conference banquet
Conference Registration:
Conference registration is now on work.
Organizing Committee:
General Chair: KURODA Hisao (Mathematical Systems Inc. / ALU)
Members: Daniel Herring (ALU)
CHIBA Masaomi
SANO Masatoshi
Program Chair: Hiroshi Okuno (Kyoto Univ.)
PC members:
Alex Fukunaga (Tyokyo Univ.)
Antonio Leitao (INESC-ID)
Joe Marshall (MIT)
Scott Mckay (ITA software)
Kent Pitman (nhplace.com)
Duane Rettig (Franz Inc.)
Didier Verna (EPITA)
Takuo Watanabe (Tokyo Institute of Technology)
Edi Weitz (weitz.de)
Taiichi Yuasa (Kyoto Univ.)
Local chair: Tetsuya Ogata (Kyoto Univ.)
Mailing Lists:
General conference announcements are made on a very occasional
basis to the low-volume mailing list ilc12-announce.
http://www.alu.org/mailman/listinfo/ilc12-announce
If you're thinking of participating in ILC 2012, you should
either join this list or take an occasional look at the archives.
http://www.alu.org/pipermail/ilc12-announce
Ambienome
John Croisant is working on a neat Common Lisp project, Ambienome.
Sinister plots
I have been monitoring a message system for a while. I have 1000 data samples, each sample has a timestamp and a message count at that point in time. The count is ever-increasing. Can you recommend a tool to produce an interesting, pretty graph that shows activity over time? I'm familiar with gnuplot but don't like the output or the user interface much.
Planet Lisp meta-news
I've added several new blogs to Planet Lisp. Vsevolod Dyomkin, Pixel, Jorge Tavares, and Quicklisp news.
I hesitated to add the Quicklisp blog, because I really prefer blogs written from a personal perspective and not product announcement blogs. I hope you find the addition more informative than irritating.
I also removed several blogs that have not been updated with Lisp-tagged content in more than a year: François-René Rideau, Peter Seibel, Dmitry Kalyanov, Kevin Reid, and Simon Leinen. (If Peter blogs about the toot project I'll have to add him back in...)
Implementation updates galore
In the past few weeks, three CL implementations have been updated.
ABCL 1.0.0 is now available. There aren't a ton of major changes from 0.27.0, but there is a psychological change. ABCL is ready to use and you should try it out.
CMUCL 20c is now available. It's been about a year since the last release.
SBCL 1.0.53 is now available. SBCL releases every month so you might not find this too exciting. However, if you find 63-bit fixnums exciting, you might 1.0.53 exciting, because it can provide them to you.
Star charts with Lisp
Juan Reyero recently shared a link to his
new project, greaterskies.com. He
used CL to process a database of star information and wrote a CL
PostScript generator to produce PDF star charts on the fly for a given point in space and time. There isn't a lot
of technical detail available yet, but I really enjoyed
the
background story
at his
blog.
November Quicklisp updates
There are a few big Quicklisp updates this month. Read all about them
here.
I'm also conducting
a short Quicklisp
survey. Feedback is most appreciated!
RIP John McCarthy

Common Lisp, slime, and vim
I don't use vim, but if you do, and you want to hack Common Lisp
with some of the nice features Emacs users get with slime, check out
Tamas Kovacs's Slimv tutorial:
Enjoy, vim nerds!
SBCL now supports compressed cores
SBCL 1.0.52 just came out and includes support for compressed
cores thanks to Paul Khuong.
Compressed cores don't reduce memory usage, and they cost some
startup time, but they can significantly reduce the on-disk
footprint of cores or executables with embedded cores. If that's a
tradeoff you want to make, it's now pretty easily available.
To enable it, you have to build SBCL with
the :sb-core-compress feature added. My
customize-target-features.lisp looks like this:
(lambda (list) (list* :sb-core-compression list))
After that, you can pass a :compression option to sb-ext:save-lisp-and-die to produce a compressed core.
A quick test on my Linux/AMD64 system showed a 43MB vanilla core
was reduced to about 9MB.
I plan to add support for compressed cores
to buildapp very soon.
A year of Quicklisp
A year ago today I announced Quicklisp on this blog, freely available for anyone to try. Even though much work remains to be done, I'm very happy with how things have gone so far. I'm looking forward to many more years of helping CL productivity with Quicklisp!
Apple's biggest mistake
Sometimes I love browsing through old issues of Wired. It went out
on a limb almost all the time with concrete predictions and
diagnoses. Here's one I just stumbled across today.
They Coulda Been a Contender, Jim Carlton in Wired, November 1997, starts out like this:
Once upon a time, Apple Computer was the undisputed king of the
computer industry, the leader in nearly all areas of technology and
innovation. The time, actually, was not so long ago, but it sure seems
like it now.
In the span of just 10 years, Apple has fallen from that lofty
pedestal to a position of near irrelevance in the industry it helped
create. Where once it commanded nearly one-fifth of the world's
personal computer sales, its share has dwindled to less than 4
percent. Where once its enormous profits were the envy of the entire
industry, the company is now struggling to reverse a tide of red ink
that has swollen to more than US$1.6 billion over the past two years.
The question is constantly asked in business circles: How could a
company with such great technology have fallen so far and so fast? As
I outline in my book, Apple: The Inside Story of Intrigue, Egomania,
and Business Blunders, the company's fundamental problem was its
dearth of effective leadership almost from the outset.
Steve Jobs is back in the limelight while Apple searches for a new
CEO, but whoever that person is, they will still be haunted by the
mistakes of their predecessors.
The biggest of those mistakes was Apple's refusal to license its
Macintosh software to the rest of the industry...
Emphasis mine.
Resource access and ASDF
In olden times, I would sometimes make CL applications that referenced resources adjacent to the source code, e.g. template files, font files, images, and things like that. To get a pathname for those resources, I would do something like this:
(defvar *font-pathname*
(merge-pathnames #p"font.ttf" *load-truename*))) Then ASDF2 arrived, and with its default policy of storing FASL files separated from source files, the above construct broke. *load-truename* wound up being something like /Users/xach/.cache/common-lisp/foo/bar/app/funk.fasl instead of /Users/xach/src/app/funk.fasl, and font.ttf wasn't anywhere nearby.
I initially switched my defvar forms to use something like this instead:
(defvar *font-pathname*
(asdf:system-relative-pathname 'app #p"font.ttf")) That works ok. I don't like embedding ASDF references in my source code, though, so for now I'm switching to something like this in my app.asd file:
(defpackage #:app-config (:export #:*base-directory*))
(defparameter app-config:*base-directory*
(make-pathname :name nil :type nil :defaults *load-truename*) And in the source:
(defvar *font-pathname*
(merge-pathnames #p"font.ttf" app-config:*base-directory*)) That way at least I won't have to update the application source code when I replace ASDF with something else!
Home
|
|