These are the stories that have been posted to the unClog blog.
Thanks to Dan Muller, Andy Cristina and Attila Lendvai, ASDF-Install should now play more nicely on Windows systems. The change log has the details but here is the summary:
Summarizing: On Windows we will now use *GNU-TAR-PROGRAM* and
*SHELL-SEARCH-PATHS* just like on UNIX. We still assume Cygwin and
still run cygpath on the tar arguments. We no longer use
*CYGWIN-BASH-PROGRAM*, but we still honor *CYGWIN-BIN-DIRECTORY*. Are
these changes 100% backwards compatible? No, some failure cases will
fail differently. But out-of-the-box success, using Cygwin, and
without customization, is more likely.
Because of the magnitude of these changes, I’ve setup an unstable darcs repository. You can get these using
darcs get http://common-lisp.net/project/asdf-install/asdf-install-unstable
there is also a tarball at
http://common-lisp.net/project/asdf-install/asdf-install-unstable/asdf-install.tar.gz
the tarball is signed with my GPG key.
Please enjoy and let me know if anything seems amiss (let me here is it all works for you too so that I can move these changes into the stable repository…).
Thanks,
I recently listened to Rich Hickey’s LispNYC talk on Clojure. WoW. I’m going to let the talk and some other blogger’s comments stand in for anything I might try to add but I will say that this is fun and inspiring to hear. I’m excited for Clojure, for JVM / .NET targeting, for Lisp and for the computer geekiness in all of us.
- Stewart Sierra heard the talk in person and has a great overview on his weblog.
- Debasish Ghosh also reacts very positively and has some nice additional things to say.
So if you have an MP3 player and a few hours to spend, do yourself a favor ad start listening!
Tamas Papp suggested that bind should be able to handle arrays nicely. For example:
(bind ((#(a b) #(1 2)))
(+ a b))
==> 3
I liked the idea and also wanted to see how extensible I had managed to make bind so I added some tests and this method:
(defmethod bind-generate-bindings
((kind array) variable-form value-form
body declarations remaining-bindings)
(let ((array-size (array-total-size variable-form))
(gvalue (gensym "value")))
`((let* ((,gvalue ,value-form)
,@(loop for i below array-size
for var = (row-major-aref variable-form i)
unless (eq var nil) collect
`(,var (row-major-aref ,gvalue ,i))))
,@(bind-macro-helper
remaining-bindings declarations body)))))
A binding is a pair of variable-form and value-form. Skipping some details, the bind-generate-bindings method gets called and dispatches on the kind of binding. In this case, we need to pull apart the array and generate a let* method to hold each inner variable. The (unless (eq var nil) ...) form lets us easily skip over bits of the array (think of using nil in loop destructuring). In practice, a use of it might be
(bind ((#2a((a nil)
(nil b)) my-array))
(format t "~%Sum of the diagonal is: ~a" (+ a b)))
I think it’s handy. Thanks Tamas (and let me know if you have any more ideas!).
He has a point:
By policy, LISP has never really catered to mere mortals.
And, of course, mere mortals have never really forgiven LISP for not catering to them.
Though, to be fair to Lisp, I don’t think it’s the language that doesn’t cater to mortals; it’s the culture. When you think about it, it’s amazing how culture perseveres. It’s like the persistence of the self as all of its atoms are replaced.
The quote from yesterday’s post comes from a longer essay / talk from Larry Wall. It’s an interesting piece that limns many of the dimensions on which languages differ. It full of Wall’s quirky humor and chunky with provoking asides. My favorite analogy is:
So basically, multiple dispatch is like democracy. It’s the worst way to do late binding, except for all the others.
But I really do think that’s true, and likely to become truer as time goes on. I’m spending a lot of time on this multiple dispatch issue because I think programming in the large is mutating away from the command-and-control model implicit in single dispatch. I think the field of computation as a whole is moving more toward the kinds of decisions that are better made by swarms of insects or schools of fish, where no single individual is in control, but the swarm as a whole has emergent behaviors that are somehow much smarter than any of the individual components.
Enjoy.
From John McKee at TechRepublic
For a well-rounded, and fully satisfying life; I suggest you learn this simply truth. Recognize that you are a complex, well trained, feeling, and yet thoughtful individual. Learn to use your life skills in both your personal and your professional life and become more genuine.
Yes!
In the video podcasts category, I’ve been enjoying Mahalo Daily and GeekBrief TV. After all, who wouldn’t enjoy “Shiny Happy Tech News”?
The “blasts from the past” winner is from Mesh Forum 2005 where Jamais Cascio spoke about the Participatory Panopticon (great title, just try saying it 10-times fast (it it it it it it it it it it. ha.). To summarize: personal digital recorders (cell phones, etc) are becoming ubiquitous to the point where everything we do will be recorded by the crowd and by ourselves. This will mean that surveillance will be overwhelmed by sousveillance (seeing from below) with both good and bad effect. PIMs will be replaced by PMAs (Personal Memory Assistants). Memory will change.
Cascio covers many of the obvious and some of the more subtle effects this may all have. What concerns me is that memory has evolved to be flakey and malleable for a reason — perhaps those reasons no longer hold… — and it’s not at all clear how we’re going to adapt as individuals or a species to permanent records (cf. the wonderful Mistakes Were Made (but not by me) by Carole Tavris and Eliot Aronson.)
Johanna Rothman gives Andy Hunt a nice interview over at Pragmatic Programmers. Rothman wrote Manage It a “reality-based guide for modern projects. You’ll learn how to recognize your project’s potholes and ruts, and determine the best way to fix problems—without causing more problems.” I tend to be a bit skeptical of books about Management (or anything else!) but she sounds like someone who has both been there and learned something from what she experienced. Once I finish a few of the other books I’ve got on my desk, I think I’ll buy it.
Finally, some interesting bits and pieces
Jamais Cascio and Howard Greenstein - Breaking Old Networks
Mostly about the good and not so good about Mashups. Nothing too profound here, move along.
Manuel Lima (from VisualComplexity.com) - Mapping Complex Networks
Manuel gives a talk that would be profoundly better if the podcast included the visuals (I’m sure that they are out [there somewhere][there]!). He discusses lots of visualization techniques and interaction ideas and says “I don’t know if you’ve seen this” too many times (seriously, it gets irritating and then it gets funny). Worth skimming (if you could).
Finally, there’s an Salon.com interview with Alice Waters (of Chez Panisse fame). Waters is advocating for a return to the simple, the local, and the slow when it comes to food. To value richness and diversity over speed and commodity. I think she’s right but I’m not sure I’m willing to make the changes in my own life and habits so ultimately I’m not sure how hopeful I am by her inspired example.
Keep on listening.
If you have 15-minutes, please stop and see Amy Smith’s TED talk about finding cleaner burning cooking fuel and reaching out to meet the problems of the developing world. She is amazing. I’m so glad that people do this stuff. It’s work and a life full of hope and passion!
(update, I get great comments! I’ve added several options that others pointed out to me. Thanks.)
MacPorts is a “lets bring the rest of *nix to OS X” project. It’s great and very slick but I can never remember how to use it. There’s probably a nifty GUI but I figured if I wrote down a few notes, they might stick…
updating Macports itself
sudo port -v selfupdate
installing (e.g., clisp so that I claim that this is an at least slightly Lisp related post!)
sudo port -v install clisp
listing upgradable ports
port outdated
upgrading upgradable ports
sudo nice port upgrade outdated
searching for a port named gold
port search gold
getting infomation on clisp
port info clisp
There are lots of other commands and they’re all covered in the man pages. As I said, it’s cool.
Oh, by the way, Happy New Year! 2008: now we’re all powers of 2.
iTunes University is so cool. Here’s one reason why!
NY Times
Walter H. G. Lewin, 71, a physics professor, has long had a cult following at M.I.T. And he has now emerged as an international Internet guru, thanks to the global classroom the institute created to spread knowledge through cyberspace.