Hello? "Hello, this is Jack," said a heavily accented voice, "This is the second call about the slow performance and possible virus problems of your Windows PC."
I don't have one of those, is what I thought, but what I said was, Ok, yeah, I have had a lot of problems lately. "Well sir I am calling to assist you with those problems, is the PC on right now?" Yeah, sure. "Ok, sir, can you please go to your PC."
Ok, I'm at my PC. "Now in the LOWER, LEFT corner of the screen, do you see a Windows button?" Windows button? What's that? "It looks like a flag." What color flag? "It is a flag in the corner." Which corner? What color is it?
Jack is starting to sigh. "In the LOWER, LEFT corner." I don't see a button anywhere. "It is in the corner sir." OH! I see the button!
Jack gets happier. "Now do you see Computer or My Computer in the menu that pops up?" I don't see any menu. "You have to click the Windows button." Where is that? More sighs. "In the lower left corner." OH! Ok, I clicked it! "Do you see Computer or My Computer in the menu?" I can't see YOUR computer! I'm at my house! "No, do you see COMPUTER, or do you see MY COMPUTER?" I can't see your computer, that doesn't make any sense!
Jack sighs some more. "What do you see for menus?" OH! I see Computer there! "Ok, can you right-click on Computer, and..." I closed the menu. Sigh, sigh. "Can you open the menu again and right-click on..." Where am I supposed to write it?
I can't stop laughing any more, so I interrupt Jack and ask him how dumb he thinks I am. "VERY DUMB!" He is pretty mad. Jack, who are you calling from, who do you represent? "I am calling from Afghanistan!" And what company are you calling from? "I am Mozilla Firefox!" And what are you trying to do? "I am trying to HACK YOUR COMPUTER!" I just laugh and wish him good luck, and he says "Go to hell, you bastard!" and hangs up.
Subject: ECLM 2013 - two days left to register
Date: Mon, 13 May 2013 19:17:26 +0200
From: Edi Weitz
Ladies and Gentlemen,
This is our last call - there are two days left to register for this year's ECLM in case you haven't done so already:
We have more than 50 registrations so far, but we wouldn't mind seeing another dozen or two...
Arthur & Edi.
I greatly enjoyed my last visit to ECLM and I can't recommend it highly enough if you want to meet people with interesting Common Lisp projects and ideas.
A bunch of people have forked it on github to add more and more functionality, and I think jscl will just keep getting cooler. Good job, David Vázquez and contributors!
Today I was running some analysis on about 9,000 files, basically mapping a function over each to warm up a cache. Something like this:
* (map nil 'analyze-file *9000-files*) time passes
I had no idea how well it was progressing, and whether I'd need to take a snack break or let it run overnight. So I interrupted it and wrote a quick and dirty REPL utility function:
(defun :dot-every (count fun) (let ((i 0)) (lambda (&rest args) (when (< count (incf i)) (setf i 0) (write-char #\. *trace-output*) (force-output *trace-output*)) (apply fun args))))
It prints out one dot per COUNT invocations of the function it returns, giving some indication of progress. Sensible values for COUNT depend on the volume of function calls.
For this problem, I called it with a COUNT of 100:
* (map nil (:dot-every 100 'analyze-file) *9000-files*) ............etc
The cached analyses printed out a ton of dots quickly, and the uncached analyses started printing dots at a slow but steady pace, and I could tell that it would be done in a few minutes instead of a few hours.
So now I'm going to use this to wrap up any function I have to call a ton of times and I want to get a sense of how it's progressing.
Rob Warnock has posted neat stuff for many years, both in comp.lang.lisp and comp.lang.scheme. After creating the Erik Naggum archive, Rob was next on my list of authors to archive. It took me a few years, but here it is: the Rob Warnock Lisp Usenet archive. It has 3,265 articles from comp.lang.lisp and comp.lang.scheme from 1995 to 2009, indexed and searchable. I hope it helps you find as many useful articles as I have over the years.
Here are a few articles I've saved and shared over the years:
- The crucial role of the readtable
- Emacs is NOT required to hack Lisp
- The historical context of Baker's META
- Designing an OS for the PDP-8 (and part 2)
(In case you're curious, I used a library called usenet-legend to create the archive and make it searchable. I also have some unreleased code that provides a thin layer of web interface on top of usenet-legend.)
Well, it has been more than 20 years with Lisp in earnest... I'm sitting on a gold mine of great code that I haveYou can read the rest of his message on the lisp-hug archive. His github page is here.
used over the entire period, and still use daily in my work. But it seems the Lisp community is a bit short on
libraries of code. No point sitting on all this stuff till I die...
One of the (many) great things I have found with Lisp is that Code Rot (I always called this Bit-Rot, but I
realize that I'm wrongly attributing when I do that) is almost a non-problem, compared to just about every
other language system that I have used in my 40+ year career. I'm still using a large body of code that I wrote
nearly 15-20 years ago and has never needed any maintenance.
My code generally grows organically to supply solutions to problems I am facing in my own work. I generally
don't write libraries for others to use. And that will show through in a lot of what I share with the world.
C'est la vie...
The upshot in terms of Lisp evangelism has been quite good, BTW. MostRead the full post here.
of the students have only been exposed to Java and scripting languages
so far and there are always some who express an immediate interest in
learning more about CL.
Amazon Glacier came out a few months ago. Glacier is a system for storing data very cheaply, only $0.01 per gigabyte per month. It also has a high level of redundancy and reliability. The drawback, compared to S3, is that you can't access it on demand. It was added as a new API, and I looked into writing a CL library for it, but never found the time.
A few days ago Amazon announced integration between S3 and Glacier. Objects in S3 can be automatically transitioned to Glacier storage after a period of time. It's very similar to the automatic object expiration support already present in the S3 API.
Since I already have an S3 library, I updated it to support the new Glacier features.
The lifecycle-rule function has been revamped to support a new action argument, :transition. Instead of deleting the object when the rule is applied, it is transitioned to Glacier storage.
New functions restore-object and object-restoration-status let you initiate a Glacier object restoration and query the status of that restoration.
Here's an example:
(zs3:create-bucket "storage.xach.com") (setf (zs3:bucket-lifecycle "storage.xach.com") (zs3:lifecycle-rule :action :transition :prefix "glacier/" :days 7))
Any object uploaded to the "storage.xach.com" with a prefix matching "glacier/" will be automatically transitioned to Glacier storage after 7 days. You can also use a :days option of 0, which means "transition as soon as possible." I tried that, and "as soon as possible" can mean hours. Apparently the process that does the transition does not run all the time.
After the object has transitioned, you can't retrieve it with functions like get-file:
(zs3:get-file "storage.xach.com" "glacier/archive.tgz" "/tmp/archive.tgz") Error: "InvalidObjectState: The operation is not valid for the object's storage class"
The object has to be restored first. Restoring an object works like this:
(zs3:restore-object "storage.xach.com" "glacier/archive.tgz" :days 1)
The "days" argument refers to the number of days the object is available for download before it automatically reverts back to Glacier storage.
Restoring an object can take several hours. To check on object's restoration status, you can do this:
(zs3:object-restoration-status "storage.xach.com" "glacier/archive.tgz") => "ongoing-request=\"true\""
The next release of Quicklisp will have this ZS3 update. To get it early, you can check it out from github or download it from my website. Enjoy!
From: Ruben Garcia Martin
Subject: Vagrantfile for Common Lisp
For those of you who use Vagrant boxes for development, I have published a configuration to set up a minimal Common Lisp environment quickly here:
Please feel free to use & comment.
mocl allows you to create applications for iOS, Android, and other mobile platforms using highly expressive Common Lisp code. mocl makes this possible by compiling your Common Lisp code to platform-portable, efficient C code.There aren't a lot of details but I'm looking forward to more information when it's available.
From: Anton Vodonosov Subject: library reports Date: Sun, 14 Oct 2012 01:17:51 +0400 Hello. Another usage of the results collected by cl-test-grid is separate reports for every library in Quicklisp. The results include build status for the library ASDF systems and test-suite results (if the test suite has test-grid adapter) on every lisp implementation we have tested. The reports may be found at http://common-lisp.net/project/cl-test-grid/library/<library name>.html Index of all the reports: http://common-lisp.net/project/cl-test-grid/library/ PS Xach, could you announce this on planet lisp?Also:
Just published reports with October data (so far we collected results of 7 CL compilers, in various compiler version/OS combinations it is around 27 compiler kinds). The most interesting report for you must be this one: http://common-lisp.net/project/cl-test-grid/quicklisp-diff.html It displays the all the tests which have different outcome on September and October Quicklisps. - Anton
From: Anton Vodonosov <email@example.com> Subject: Re: combining load failures with dependencies information to priorities fixes Xach, could you please arrange the following clarification to be forwarded to Planet Lisp? It's necessary in particular to restore/confirm good names of ECL and Closer to MOP? When I posted the first message in this thread and CC'ed Xach, I wanted to present the results cl-test-grid may provide, but I forgot that the results deal with failures, and without proper explanation it may cast shadow of bad impression onto someone's hard work. In this case ECL and Closer to MOP were mentioned in context of large table of failures. First of all. The absolute minority of the compile-load failures presented in the report are bugs in ECL (if any). The failures may be classified by their cause into: - CL implementation bugs - library bugs - library intentionally supports only limited set of CL implementations - absence of certain foreign library on the test system. By priority for the lisp implementation maintainer: 1. CL implementation bugs are of course of interest for the maintainer. Here I want to say how they are handled in ECL. Of course, ECL can not be bug free, especially taken into account that in the recent years it saw major changes (fully rewritten Lisp-to-C compiler, newly introduced bytecode compiler, refactoring of multi-threading infrastructure, performance improvements and lot of other improvements). But when critical bugs are found, they are usually fixed very quickly. This demonstrates the great level of control Juan Jose has on the ECL code base. 2. Bugs in basic widely used libraries as alexandria; portability layers like closer-mop, usocket, bordeaux-threads; important libraries as hunchentoot or drakma. This is not the area of direct "responsibility" for the CL implementation developer who didn't started the project and didn't make a commitment to support it. I put "responsibility" into quotes because very often we deal with open source projects, which are provided AS IS. No-one is obliged to provide support. The applies also to the library author. Of course, CL implementation developer might be interested to support such important libraries to achieve wider adoption of his CL implementation. The library author is also usually interested. And the users of the library, who want to develop applications on the given CL implementation are also interested to see the library fixed on this CL implementation. So, this is an area where interest of various parties overlaps and we may hope the issue will be fixed (depending the time available for these parties and presence of necessary knowledge). Speaking particularly about Closer to MOP on ECL. ECL has improved MOP support recently, but the API changes are not backward compatible. According to the Pascal's comment in his blog, now Closer to MOP will need a lot less code to support ECL. But migration to the new API will take some development time. 3. Compile/load failures which do not need to be fixed. For a library developer it is often the only possible or at least the most reasonable solution to support limited set of CL implementations, because supporting and testing on every CL requires more time than available. If there is a library named "my-html-utils" which is only used by "my-web-application" and the library author works with one particular CL implementation, there is no need to bother neither the library author, nor other community members with requests to port the library onto other CL implementations. What we can do is to collect and provide information about what works where, and the author will decide himself. Or maybe the first user, who whats to employ the library on a different implementation will port it. I assume that the failures in the category 3 might constitute the majority of all the failures. 4. Absence of foreign library on the test system. I plan to adjust cl-test-grid agent in the future so that CFFI errors will be recognized and stored as a special status, so that we will be able to exclude them from report + maybe collect the list of foreign libraries used by whole Quicklisp. But it's not the highest priority, the reports in the current form allow to make lot of useful conclusions. That's it. I hope it clarifies any doubts about the quality of work done by ECL and Closer to MOP developers. And also on my intentions. I don't call the developers to spend even more of their time. Other way around. We should anticipate the fact that developers time is very limited. If we all be realistic and stay within limits of possible the results will be more satisfying. I hope that presence of information will allow to save developers energy by helping them to choose areas where the efforts will give maximum outcome; to decide also what may be avoided. The load failures + dependencies report was build for ECL first because it was Juan Jose's proposal to combine them together to prioritize problems. I've just published similar reports for some other CL implementations I have: http://common-lisp.net/project/cl-test-grid/abcl-load-failures.html http://common-lisp.net/project/cl-test-grid/acl-load-failures.html http://common-lisp.net/project/cl-test-grid/ccl-load-failures.html http://common-lisp.net/project/cl-test-grid/cmucl-load-failures.html http://common-lisp.net/project/cl-test-grid/sbcl-load-failures.html http://common-lisp.net/project/cl-test-grid/ecl-load-failures.html Best regards, - Anton