<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13073795</id><updated>2011-12-08T13:41:51.681-05:00</updated><title type='text'>Scheming</title><subtitle type='html'>Programming notes and ideas from an astrophysicist.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13073795.post-4076945638443554564</id><published>2010-06-04T18:30:00.003-04:00</published><updated>2010-06-04T18:50:15.570-04:00</updated><title type='text'>Loop-Unrolling Macros in Clojure</title><summary type='text'>I've been fooling around with clojure a bit lately.  Something fun: a dotimes-like macro, but it completely unrolls your loop at compile time:

(defmacro dotimes-unroll
  "Just like dotimes, but completely unrolls the given loop.  The
number of iterations must read as a number."
  [[i n] &amp; body]
  (assert (number? n))
  (if (= n 0)
    `nil
    `(let [~i ~(- n 1)]
       (dotimes-unroll [~i ~(- n</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/4076945638443554564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=4076945638443554564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/4076945638443554564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/4076945638443554564'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2010/06/loop-unrolling-macros-in-clojure.html' title='Loop-Unrolling Macros in Clojure'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-6996313905495751756</id><published>2010-03-04T17:47:00.003-05:00</published><updated>2010-03-04T17:48:55.049-05:00</updated><title type='text'>Distribution for the Ratio of Two Uniform Deviates</title><summary type='text'>Weird: the distribution for the ratio of two uniform deviates is constant for ratios smaller than 1, and falls like r^2 for larger ratios.  p(r) = 1/2 if r &lt; 1, and 1/(2r^2) if r &gt;= 1 when r = a/b, where a,b ~ U(0, A).  What's up with that?</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/6996313905495751756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=6996313905495751756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/6996313905495751756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/6996313905495751756'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2010/03/distribution-for-ratio-of-two-uniform.html' title='Distribution for the Ratio of Two Uniform Deviates'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-5386985936402879726</id><published>2010-01-09T22:36:00.002-05:00</published><updated>2010-01-09T22:45:58.317-05:00</updated><title type='text'>Another Library: 1-D Root Finding in Ocaml</title><summary type='text'>...and here's another library for 1-D root finding (non-linear equation solving) in OCaml.  Get it with git clone git://github.com/farr/ocaml-solve.git  I'm particularly proud of this one for two reasons:

All the algorithms, even the ones requiring derivatives, use bracketing.  If a step in the algorithm would fall outside the brackets for the root, the algorithms perform a bisection step </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/5386985936402879726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=5386985936402879726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/5386985936402879726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/5386985936402879726'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2010/01/another-library-1-d-root-finding-in.html' title='Another Library: 1-D Root Finding in Ocaml'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-7288421401576986221</id><published>2010-01-09T18:12:00.003-05:00</published><updated>2010-01-09T18:19:02.945-05:00</updated><title type='text'>Polynomials in OCaml</title><summary type='text'>I just posted some code on GitHub to manipulate polynomials in one variable in OCaml.  It's pretty simplistic, and only works for polynomials whose coefficients are floating-point real numbers (so beware of roundoff error!), but I have found it to be useful in many quick-and-dirty situations.  To grab it, use git clone git://github.com/farr/ocaml-poly.git</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/7288421401576986221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=7288421401576986221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7288421401576986221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7288421401576986221'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2010/01/polynomials-in-ocaml.html' title='Polynomials in OCaml'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-8301065184748317387</id><published>2009-01-08T13:13:00.005-05:00</published><updated>2009-01-08T13:39:34.230-05:00</updated><title type='text'>Profiling Using MzScheme and Errortrace</title><summary type='text'>
Lately I've needed to do some profiling in PLT Scheme, and the usual process in DrScheme hasn't been working for me.  If you don't know, here's the usual process:


Language --&gt; Choose Language
Show Details
Debugging and Profiling
Run Program
View --&gt; Show Profile


Robby suggested using the errortrace library directly from mzscheme.  It worked perfectly.  Here's how you can duplicate my success</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/8301065184748317387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=8301065184748317387' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8301065184748317387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8301065184748317387'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2009/01/profiling-using-mzscheme-and-errortrace.html' title='Profiling Using MzScheme and Errortrace'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-476723535552975986</id><published>2008-12-03T13:05:00.002-05:00</published><updated>2008-12-03T13:36:18.632-05:00</updated><title type='text'>Interpolation in OCaml</title><summary type='text'>
I just wrote some code to do polynomial interpolation in O'Caml.  The full darcs repository is at http://web.mit.edu/farr/www/onumerics/; here's the guts of the code.  Eventually (depending on my time and level of continued interest), this may turn into a more general O'Caml numerical library.  As usual, it's released under the GPL.



(*  interp.ml: Interpolation.   
    Copyright (C) 2008 Will</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/476723535552975986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=476723535552975986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/476723535552975986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/476723535552975986'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2008/12/interpolation-in-ocaml.html' title='Interpolation in OCaml'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-1889820356957950661</id><published>2008-06-11T20:20:00.001-04:00</published><updated>2008-06-11T20:30:29.307-04:00</updated><title type='text'>Very Basic Matrix Library for PLT Scheme</title><summary type='text'>
I just uploaded to PLaneT a very simple matrix library.  The library provides a matrix datastructure, iterators over matrices and vectors, algebraic operations on matrices, and matrix-vector and matrix-matrix products.  There is also an initial module import language which provides all of scheme except the +, -, * and / operations, which instead are generalized for all reasonable combinations of</summary><link rel='related' href='http://planet.plt-scheme.org/display.ss?package=simple-matrix.plt&amp;owner=wmfarr' title='Very Basic Matrix Library for PLT Scheme'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/1889820356957950661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=1889820356957950661' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/1889820356957950661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/1889820356957950661'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2008/06/very-basic-matrix-library-for-plt.html' title='Very Basic Matrix Library for PLT Scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-7113548786602642271</id><published>2007-09-07T16:10:00.000-04:00</published><updated>2007-09-07T16:17:17.053-04:00</updated><title type='text'>Quick Note on Continuations to comp.lang.scheme</title><summary type='text'>I just posted a quick note on continuations to c.l.s.  I'm afraid it's pretty basic, and doesn't really do the topic justice, but maybe the original poster will find it helpful.  I'm noting it here because no ever seems to explain continuations the way I did in my note (at least, I haven't seen any explanations like this), which uses "return points" to illustrate what continuations do.  I don't </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/7113548786602642271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=7113548786602642271' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7113548786602642271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7113548786602642271'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/09/quick-note-on-continuations-to.html' title='Quick Note on Continuations to comp.lang.scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-5587722085445157098</id><published>2007-08-15T10:57:00.000-04:00</published><updated>2007-08-15T11:25:58.505-04:00</updated><title type='text'>One More Reason to Love Module Systems and Hygiene</title><summary type='text'>
I just released an Automatic Differentiation PlaneT Package, and am now converting my numerical relativity code to use it.  The package exports procedures like +, -, =, etc, which are modified from the standard ones so it can compute derivatives of numerical procedures which use them.  Of course, these modified procedures are slower than their standard cousins.  


My numerical relativity code </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/5587722085445157098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=5587722085445157098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/5587722085445157098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/5587722085445157098'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/08/one-more-reason-to-love-module-systems.html' title='One More Reason to Love Module Systems and Hygiene'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-6024787776683439268</id><published>2007-08-15T10:38:00.000-04:00</published><updated>2007-08-15T10:44:36.373-04:00</updated><title type='text'>Automatic Differentiation PlaneT Package Released</title><summary type='text'>I just released a PlaneT Package which, when used as a PLT Scheme module's initial language import, allows to compute derivatives of functions written in the module exactly.  (I've written about the technique here and in the posts which follow.)  I'm going to use this code to compute some derivatives of gravitational actions in code which would be extremely complicated to do by hand.  Enjoy!</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/6024787776683439268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=6024787776683439268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/6024787776683439268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/6024787776683439268'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/08/automatic-differentiation-planet.html' title='Automatic Differentiation PlaneT Package Released'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-103765734370970180</id><published>2007-08-08T09:13:00.000-04:00</published><updated>2007-08-08T14:20:19.069-04:00</updated><title type='text'>Persistency and Lazy Memoization in a Pairing Heap</title><summary type='text'>
I just released a pairing heap PlaneT package.  Because the datastructure is both persistent and has amortized space bounds, it requires a neat trick to implement, which I will discuss below.  


A pairing heap is an adaptive datastructure for a collection of objects which supports the following operations [edit: You can also read about an alternative implementation here in the Scheme Cookbook.</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/103765734370970180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=103765734370970180' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/103765734370970180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/103765734370970180'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/08/persistency-and-lazy-memoization-in.html' title='Persistency and Lazy Memoization in a Pairing Heap'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-3952756668076088325</id><published>2007-08-06T13:10:00.000-04:00</published><updated>2007-08-06T13:19:05.928-04:00</updated><title type='text'>I Just Voted "Yes" on R6RS</title><summary type='text'>
Yep, I did.  I'm including my explanation below, because I think that R6RS has come under a lot of fire lately.  (By the way, for those who say, "why doesn't the standard come with a small base, and then lots of libraries attached to it?", it does!  &lt;snark&gt;Try reading it, why don't you.&lt;/snark&gt;)  


Even if you don't agree with my choice, don't forget to vote if you signed up (just one of many </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/3952756668076088325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=3952756668076088325' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3952756668076088325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3952756668076088325'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/08/i-just-voted-yes-on-r6rs.html' title='I Just Voted &quot;Yes&quot; on R6RS'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-8976018431559447605</id><published>2007-07-23T16:32:00.000-04:00</published><updated>2007-07-23T16:43:55.471-04:00</updated><title type='text'>A Question (and an Answer, sort of) About Scheme FFIs</title><summary type='text'>
Recently, I received the following email from Raoul Duke:

hi,

I'm trying to learn up on what Scheme has the easiest FFI for talking
to C (more ideally C++, but I assume nobody really does that). I've
been reading up and it seems like PLT isn't bad. I came across your
blog - might you have any opinions or recommendations about PLT vs.
Chicken vs. Bigloo vs. Gambit vs. etc.?

many thanks!


</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/8976018431559447605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=8976018431559447605' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8976018431559447605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8976018431559447605'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/07/question-and-answer-sort-of-about.html' title='A Question (and an Answer, sort of) About Scheme FFIs'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-8266563929520562072</id><published>2007-06-17T13:10:00.000-04:00</published><updated>2007-06-17T13:47:51.116-04:00</updated><title type='text'>N-Body Utilities Coming Real Soon Now (TM)</title><summary type='text'>
It's been a while since I posted here, but never fear: I've been busy.  I've been working on an updated set of N-Body utilities for another paper examining the efficiency of our algorithm (see astro-ph/0611416, to be published in ApJ 663 (2007) 1420) relative to drift-kick-drift leapfrog in a treecode.  I've got code up and running, and am beginning simulations to compare the two algorithms.  </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/8266563929520562072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=8266563929520562072' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8266563929520562072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8266563929520562072'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/06/n-body-utilities-coming-real-soon-now.html' title='N-Body Utilities Coming Real Soon Now (TM)'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-7478897337051628509</id><published>2007-04-29T14:55:00.000-04:00</published><updated>2007-04-29T15:07:34.841-04:00</updated><title type='text'>Pure Scheme Code for SO(3,1)</title><summary type='text'>
Jens Axel Soegaard wrote a comment on my last post asking for the Scheme code for comparison, so here it is.  Note that the code provides a (moderately efficient, but conses too much) matrix inversion routine in pure Scheme (you want to look at the matrix module, for matrix-inverse)---some people may find that useful independently.  Sorry it's so long, but there's a lot of background stuff to </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/7478897337051628509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=7478897337051628509' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7478897337051628509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7478897337051628509'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/04/pure-scheme-code-for-so31.html' title='Pure Scheme Code for SO(3,1)'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-8049371825198039291</id><published>2007-04-28T21:16:00.000-04:00</published><updated>2007-04-28T22:00:43.835-04:00</updated><title type='text'>Why Use the FFI for Simple Numerical Operations in MzScheme?</title><summary type='text'>
Brad Lucier (of Numerical Partial Differential Equations in Scheme fame) posted a comment on my last post announcing the code for numerical manipulation of Lorentz group elements which reads:

I'm surprised that you decided to use the C FFI to manipulate 4x4 matrices; they are so small that it would seem better just to use mzscheme's numerical facilities which are getting better all the time.


</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/8049371825198039291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=8049371825198039291' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8049371825198039291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/8049371825198039291'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/04/why-use-ffi-for-simple-numerical.html' title='Why Use the FFI for Simple Numerical Operations in MzScheme?'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-3155075701129653292</id><published>2007-04-28T18:03:00.000-04:00</published><updated>2007-04-28T18:16:29.691-04:00</updated><title type='text'>SO(3,1) (Lorentz Group) Manipulations from PLT Scheme</title><summary type='text'>
I just released a PlaneT package which manipulates elements of the Lorentz group (here).  Get it using 

(require (planet "SO31.ss" ("wmfarr" "SO31.plt" 1 0)))

At the moment, it only runs on Mac OS 10.3 or 10.4, ppc, because it uses some C code I wrote (for efficiency), and I haven't had the patience to understand all the hoops I need to jump through to get PLT Scheme to compile this to a </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/3155075701129653292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=3155075701129653292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3155075701129653292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3155075701129653292'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/04/so31-lorentz-group-manipulations-from.html' title='SO(3,1) (Lorentz Group) Manipulations from PLT Scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-3770323352515977061</id><published>2007-04-26T14:45:00.000-04:00</published><updated>2007-04-26T14:54:46.051-04:00</updated><title type='text'>Linear Algebra in PLT Scheme</title><summary type='text'>
Last night, I posted a library which uses BLAS and LAPACK from within PLT Scheme to perform simple numerical linear algebra.  


In doing so, I've learned a lot about the FFI for PLT Scheme.  The conclusion: it's great!  In particular, the "custom _fun types", discussed here are tremendously helpful!  Particularly when interfacing to Fortran libraries, where every argument to a function must be </summary><link rel='related' href='http://planet.plt-scheme.org/display.ss?package=plt-linalg.plt&amp;owner=wmfarr' title='Linear Algebra in PLT Scheme'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/3770323352515977061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=3770323352515977061' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3770323352515977061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3770323352515977061'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/04/linear-algebra-in-plt-scheme.html' title='Linear Algebra in PLT Scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-3546178275744009323</id><published>2007-04-09T11:50:00.000-04:00</published><updated>2007-04-09T11:53:54.552-04:00</updated><title type='text'>Pearls Before Breakfast</title><summary type='text'>Nothing to do with Scheme, but a really neat article here in the Washington Post.  I'm really busy now, but I'm glad I took the time out to read this article.  Found via the fascinating blog of Terrence Tao.</summary><link rel='related' href='http://www.washingtonpost.com/wp-dyn/content/article/2007/04/04/AR2007040401721.html' title='Pearls Before Breakfast'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/3546178275744009323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=3546178275744009323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3546178275744009323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/3546178275744009323'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/04/pearls-before-breakfast.html' title='Pearls Before Breakfast'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-7910404160942422918</id><published>2007-03-03T20:31:00.000-05:00</published><updated>2007-03-03T20:32:36.457-05:00</updated><title type='text'>Eager Comprehensions for Arrays</title><summary type='text'>I just submitted a package to PlaneT for eager comprehensions (SRFI-42) for arrays (SRFI-25).  It's a pretty short module, so I've also pasted it below.


#| array-ec.ss: SRFI-42 comprehensions for SRFI-25 arrays.
Copyright (C) 2007 Will M. Farr 

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/7910404160942422918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=7910404160942422918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7910404160942422918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/7910404160942422918'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/03/eager-comprehensions-for-arrays.html' title='Eager Comprehensions for Arrays'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-1098453380609079334</id><published>2007-02-18T22:20:00.000-05:00</published><updated>2007-02-18T22:30:52.052-05:00</updated><title type='text'>Barnes-Hut Tree Code Submitted to PlaneT</title><summary type='text'>I've just submitted some new code to PlaneT which implements Barnes-Hut Trees in PLT Scheme.  It's surprisingly (to me) fast, creating a 100K-body tree in about 30 seconds on my old PowerBook G4 800 Mhz.

This is just another step in my code clean-up in preparation for comparing our algorithm to the standard leapfrog algorithm of cosmological codes.</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/1098453380609079334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=1098453380609079334' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/1098453380609079334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/1098453380609079334'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/02/barnes-hut-tree-code-submitted-to.html' title='Barnes-Hut Tree Code Submitted to PlaneT'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-156894999273378862</id><published>2007-02-18T03:07:00.000-05:00</published><updated>2007-02-18T03:23:50.259-05:00</updated><title type='text'>N-Body Simulation Initial Conditions</title><summary type='text'>I just packaged up some code for PlaneT which creates gravitational N-body initial conditions.  I assume it'll appear in the next few days.  It's not very extensive as of yet (only does cold and hot constant spatial density spherical distributions and the venerable Plummer model), but that's really all I've needed over the past year or so to test my algorithms.

The paper is undergoing its final </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/156894999273378862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=156894999273378862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/156894999273378862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/156894999273378862'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2007/02/n-body-simulation-initial-conditions.html' title='N-Body Simulation Initial Conditions'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116362804799877627</id><published>2006-11-15T17:00:00.000-05:00</published><updated>2006-11-15T17:00:48.656-05:00</updated><title type='text'>The Paper is Out!</title><summary type='text'>
It's out!  The paper of the century---get your copy before they're sold out at the newsstand.  (If you're into N-body simulation methods, that is.)  


Seriously: I'm very glad to have it out the door.  The ball is now in ApJ's court, and I can get back to focusing on my thesis (for which I just submitted a title: "Numerical Relativity from a Gauge Theory Perspective").  


Section 6.2.1 uses </summary><link rel='related' href='http://arxiv.org/abs/astro-ph/0611416' title='The Paper is Out!'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116362804799877627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116362804799877627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116362804799877627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116362804799877627'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/11/paper-is-out.html' title='The Paper is Out!'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116295024986004309</id><published>2006-11-07T20:36:00.000-05:00</published><updated>2006-11-07T20:44:10.386-05:00</updated><title type='text'>SRFI-42 Comprehensions for SRFI-4 Vectors</title><summary type='text'>
I spend quite a bit of time working with SRFI-4 homogeneous numeric vectors.  Below is some code which adds some SRFI-4-vector generators and comprehensions to SRFI-42's Eager Comprehensions.  I am impressed at the modularity in SRFI-42!



#|
Derived (almost verbatim) from the code for vector comprehensions in the SRFI-42 reference implementation.  The copyright on that code is:

Copyright (C) </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116295024986004309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116295024986004309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116295024986004309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116295024986004309'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/11/srfi-42-comprehensions-for-srfi-4.html' title='SRFI-42 Comprehensions for SRFI-4 Vectors'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116171018074570042</id><published>2006-10-24T13:16:00.000-04:00</published><updated>2006-10-24T13:17:35.096-04:00</updated><title type='text'>Updated Scheme Code for Derivatives</title><summary type='text'>
I've updated my functional differential geometry code to use the same techniques I've been writing about these past few days in OCaml for computing derivatives.  It should (haven't rigorously tested this) improve the performance of computing structure constants (which involve the commutator of two tangent vectors in the group, and therefore taking second derivatives, and therefore multiple tags </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116171018074570042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116171018074570042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116171018074570042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116171018074570042'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/10/updated-scheme-code-for-derivatives.html' title='Updated &lt;em&gt;Scheme&lt;/em&gt; Code for Derivatives'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116163253255082933</id><published>2006-10-23T15:41:00.000-04:00</published><updated>2006-10-23T15:42:25.716-04:00</updated><title type='text'>Better Jacobians in Computing Derivatives</title><summary type='text'>
And another fix to the code computing derivatives: before I was trying to compute the Jacobian of functions with only one call to the function:

let jacobian f args = 
    let n = Array.length args in 
    let tags = Array.init n (fun _ -&gt; new_tag ()) in 
    let dargs = Array.mapi (fun i arg -&gt; D(tags.(i), arg, one)) args in 
    let result = f dargs in 
    Array.init n 
      (fun i -&gt; 
</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116163253255082933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116163253255082933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116163253255082933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116163253255082933'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/10/better-jacobians-in-computing.html' title='Better Jacobians in Computing Derivatives'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116128067018229812</id><published>2006-10-19T13:46:00.000-04:00</published><updated>2006-10-19T13:57:50.206-04:00</updated><title type='text'>Correction to Automatic Differentiation Code</title><summary type='text'>
I've uncovered a *large* inefficiency in the OCaml code I posted for Automatic Differentiation.  The problem is that I don't take any care to avoid duplication of tags in a nested D(tag, x, dx) expression.  That's not a problem in a computation with only one tag, but if you're trying to take the jacobian of some multi-dimensional function, you have derivatives wrt each of the arguments floating </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116128067018229812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116128067018229812' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116128067018229812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116128067018229812'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/10/correction-to-automatic.html' title='Correction to Automatic Differentiation Code'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-116103032215450540</id><published>2006-10-16T16:07:00.000-04:00</published><updated>2006-10-16T16:50:36.316-04:00</updated><title type='text'>``Automatic Differentiation'' in OCaml</title><summary type='text'>
Below I've posted an OCaml functor which lifts an input module of mathematical functions (+,-,*,/,sin,cos,...) to equivalent functions which also support computing derivatives without any truncation error (i.e. (d sin) is (exactly) the function cos).  This technique is commonly called automatic differentiation in C++ (where it is accomplished at compile time through template metaprogramming), </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/116103032215450540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=116103032215450540' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116103032215450540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/116103032215450540'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/10/automatic-differentiation-in-ocaml.html' title='``Automatic Differentiation&apos;&apos; in OCaml'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115679982949488958</id><published>2006-08-28T17:08:00.000-04:00</published><updated>2006-08-28T22:42:28.200-04:00</updated><title type='text'>Working Toward Gauge-Covariant Derivatives</title><summary type='text'>I've posted the latest version of my functional differential geometry code (darcs pull http://web.mit.edu/farr/www/SchemeCode/ should get it for you).  I now have code for arbitrary linear representations of lie groups.  I'm working up to implementing the gauge covariant derivative (a generalization of the covariant derivative of GR to arbitrary symmetry operations).  Unfortunately, the code is </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115679982949488958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115679982949488958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115679982949488958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115679982949488958'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/08/working-toward-gauge-covariant.html' title='Working Toward Gauge-Covariant Derivatives'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115628535431698778</id><published>2006-08-22T18:00:00.000-04:00</published><updated>2006-08-22T18:22:34.383-04:00</updated><title type='text'>Adventures in OCaml Land: Barnes-Hut Trees</title><summary type='text'>I'm presently working on a simple cosmological gravitational n-body code (if you don't know a "gravitational n-body code" is, you can get a really great introduction to gravitational simulation here).  The simplest way to evaluate the forces on a body (the fundamental part of calculating its trajectory in an n-body simulation) is to iterate over all other bodies summing the standard Newtonian </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115628535431698778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115628535431698778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115628535431698778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115628535431698778'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/08/adventures-in-ocaml-land-barnes-hut.html' title='Adventures in OCaml Land: Barnes-Hut Trees'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115592794153115812</id><published>2006-08-18T14:50:00.000-04:00</published><updated>2006-08-18T15:05:41.556-04:00</updated><title type='text'>One More Example of Python Generators in Scheme</title><summary type='text'>I've had some spare time at work these past few days waiting for modestly long-running data analysis procedures to complete.  Unfortunately, this spare time comes in ~5 min chunks, so it's not really worth a serious context switch into other work-related stuff.  So, I've been doing a lot of little things---like web browsing about Python generators in scheme.  I'm unable to resist posting my own </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115592794153115812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115592794153115812' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115592794153115812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115592794153115812'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/08/one-more-example-of-python-generators.html' title='One More Example of Python Generators in Scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115454380748266955</id><published>2006-08-02T14:34:00.000-04:00</published><updated>2006-08-02T14:36:47.493-04:00</updated><title type='text'>SRFI-11 For Bigloo</title><summary type='text'>Tired of using multiple-value-bind all the time in Bigloo, I've packaged up SRFI-11 for Bigloo.  You can find it here.  It even builds the _e library target for the interpreter's new library-load command.  Enjoy your let-values.</summary><link rel='related' href='http://web.mit.edu/farr/www/srfi-11/' title='SRFI-11 For Bigloo'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115454380748266955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115454380748266955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115454380748266955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115454380748266955'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/08/srfi-11-for-bigloo.html' title='SRFI-11 For Bigloo'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115257635726207161</id><published>2006-07-10T19:55:00.000-04:00</published><updated>2006-07-10T20:38:16.600-04:00</updated><title type='text'>Yet Another Sudoku Solver</title><summary type='text'>While flying home from vacation, I composed the following Sudoku solver.  It seems to solve all the puzzles I throw at it, but definitely is not the most efficient algorithm possible.  Basically it applies the Sudoku constraints (no repeat numbers in a row, column, or 3x3 block) to the puzzle (represented as a vector of vectors, with lists for elements which may have more than one possible number</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115257635726207161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115257635726207161' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115257635726207161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115257635726207161'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/07/yet-another-sudoku-solver.html' title='Yet Another Sudoku Solver'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115214986282294958</id><published>2006-07-05T21:30:00.000-04:00</published><updated>2006-07-05T21:37:42.836-04:00</updated><title type='text'>Defining your own Lie Group</title><summary type='text'>Today I was asked how to define your own Lie Group using my functional differential geometry software (see this post and subsequent posts).  Basically, you have to provide five things:


Chi : G -&gt; R^n.  This is the coordinate function on the group manifold.
Chi^-1 : R^n -&gt; G.  The inverse of Chi.
e \in G.  The identity element.
inverse: G -&gt; G.  The inverse function (on the group manifold: g -&gt; </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115214986282294958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115214986282294958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115214986282294958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115214986282294958'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/07/defining-your-own-lie-group.html' title='Defining your own Lie Group'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115138246714030199</id><published>2006-06-27T00:20:00.000-04:00</published><updated>2006-06-27T15:55:28.130-04:00</updated><title type='text'>Figured it Out</title><summary type='text'>The bit at the end of the last post where I was worried about the commutator (lie bracket in the lie algebra of vector fields, not vectors at the identity) of two left-invariant vector fields not being itself left-invariant was just a mistake.  I shouldn't expect [extend(d/dtheta), extend(d/dphi)] = d/dpsi, but rather [extend(d/dtheta), extend(d/dphi)] = extend(d/dpsi)!  If you do that, then it </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115138246714030199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115138246714030199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115138246714030199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115138246714030199'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/06/figured-it-out.html' title='Figured it Out'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115133360183616278</id><published>2006-06-26T10:50:00.000-04:00</published><updated>2006-06-27T16:01:47.253-04:00</updated><title type='text'>Lie Groups Mostly Working</title><summary type='text'>It's working!  (Mostly.)  See:


;; Welcome to DrScheme, version 350.1-svn21jun2006.
;; Language: Swindle.

;; Require some modules 
(require "lie-group-SO3.ss")
(require "lie-groups.ss")
(require "manifolds.ss")
(require "tuples.ss")
;;

;;; Compute the structure constants for SO3 in the 
;;; x,y,z coordinate system.  Exactly what you 
;;; would expect.
(structure-constants SO3 SO3-</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115133360183616278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115133360183616278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115133360183616278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115133360183616278'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/06/lie-groups-mostly-working.html' title='Lie Groups Mostly Working'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115120367602056720</id><published>2006-06-24T22:22:00.000-04:00</published><updated>2006-06-25T01:31:41.146-04:00</updated><title type='text'>Functional Differential Geometry in PLT Scheme</title><summary type='text'>I've been working a bit lately with Gerry Sussman and Jack Wisdom to extend their software for functional differential geometry to handle Lie Groups (which, after all, are just manifolds).  My thesis will probably have to do with treating General Relativity as an SO(3,1) gauge theory, so I'm particularly interested in the Special Orthogonal Lie Groups.  (Jack, as a solar-system dynamicist, is </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115120367602056720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115120367602056720' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115120367602056720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115120367602056720'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/06/functional-differential-geometry-in.html' title='Functional Differential Geometry in PLT Scheme'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-115083641428795344</id><published>2006-06-20T16:41:00.000-04:00</published><updated>2006-06-20T16:48:18.110-04:00</updated><title type='text'>SRFI-78 for Bigloo</title><summary type='text'>I've just posted an implementation of SRFI-78: Lightweight Testing for Bigloo.  You can get it here.  It leaves out the check-ec form because there's no implementation of SRFI-42 for Bigloo yet, but otherwise it's complete.  The framework is very lightweight---it took about 10 minutes to port.

I want the framework so that I can test my new SRFI-4 implementation for Bigloo before I post it, so </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/115083641428795344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=115083641428795344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115083641428795344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/115083641428795344'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/06/srfi-78-for-bigloo.html' title='SRFI-78 for Bigloo'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-114982368811813780</id><published>2006-06-08T23:09:00.000-04:00</published><updated>2006-06-08T23:28:08.146-04:00</updated><title type='text'>Fun With Streams</title><summary type='text'>Or: a bit of Haskell in PLT Scheme. 

In a one-off version of the n-body integrator I've been working on (seemingly in perpetuity, but probably finishing soon with a couple of papers), I had occasion to iterate a function to convergence.  (i.e. to compute (f (f (f ... (f x)))) until the result converges.)  Well, it's pretty easy to write:

(define (iter-to-convergence f)
 (lambda (x)
   (let loop</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/114982368811813780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=114982368811813780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/114982368811813780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/114982368811813780'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/06/fun-with-streams.html' title='Fun With Streams'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-114180451055225617</id><published>2006-03-08T02:35:00.000-05:00</published><updated>2006-03-08T02:55:10.566-05:00</updated><title type='text'>Tidbits</title><summary type='text'>My god!  It's been about a month since I last posted (about PLT Scheme's new JIT).  Just to prime the pump (hopefully more to follow more quickly):


There's a very interesting discussion on the Ocaml mailing list about Software Transactional Memory for concurrent programming.  In particular, see the referenced papers here and here.  The basic idea is to wrap up all accesses to shared memory in a</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/114180451055225617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=114180451055225617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/114180451055225617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/114180451055225617'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/03/tidbits.html' title='Tidbits'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-113881171901101786</id><published>2006-02-01T11:32:00.000-05:00</published><updated>2006-02-02T08:57:27.696-05:00</updated><title type='text'>PLT Gets JIT</title><summary type='text'>According to this message to the PLT Scheme mailing list, PLT Scheme just got a JIT compiler.  It only works on the non-3m (i.e. Boehm conservative collector) version of PLT Scheme, but it seems to provide some speedups.  Subsequent messages suggest that they're working on a "proper" JIT compiler targeting LLVM which should provide even more speed.  Very nice!


Update: I've been using the JIT </summary><link rel='related' href='http://list.cs.brown.edu/pipermail/plt-scheme/2006-January/011364.html' title='PLT Gets JIT'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/113881171901101786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=113881171901101786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113881171901101786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113881171901101786'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2006/02/plt-gets-jit.html' title='PLT Gets JIT'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-113450592007068633</id><published>2005-12-13T15:04:00.000-05:00</published><updated>2005-12-13T15:32:00.086-05:00</updated><title type='text'>Bitten By the Hygiene Bug</title><summary type='text'>I've noticed that I haven't posted here for a while---been really busy working on the code for the paper on n-body integrators.  I'm finally running some real "experiments" (the numerical kind), and am discovering the joy of tight binary orbits in the middle of a star cluster (hint: lots of small steps for the binary = lots of roundoff error over cluster timescales).  Hopefully I've got that </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/113450592007068633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=113450592007068633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113450592007068633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113450592007068633'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/12/bitten-by-hygiene-bug.html' title='Bitten By the Hygiene Bug'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-113266573098851887</id><published>2005-11-22T08:19:00.000-05:00</published><updated>2005-11-22T10:37:24.563-05:00</updated><title type='text'>Bigloo 2.7a Released</title><summary type='text'>In case you hadn't noticed: Bigloo 2.7a was released yesterday (or maybe over the weekend).  You can get my OS X package for it if you don't like to compile things yourself.</summary><link rel='related' href='http://www-sop.inria.fr/mimosa/fp/Bigloo/' title='Bigloo 2.7a Released'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/113266573098851887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=113266573098851887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113266573098851887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/113266573098851887'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/11/bigloo-27a-released.html' title='Bigloo 2.7a Released'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112983000319638715</id><published>2005-10-20T13:26:00.000-04:00</published><updated>2005-10-20T13:40:03.203-04:00</updated><title type='text'>Continuations in Unfriendly Environments</title><summary type='text'>I'm sure many people already have seen the paper (and probably attended the conference), but have a look at this paper from Greg Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi, and Matthias Felleisen!  It describes a technique that can be used to implement continuations in unfriendly environments where stack inspection is not available (i.e. portable ANSI C, JVM, .NET, etc.)  The </summary><link rel='related' href='http://www.cs.brown.edu/~sk/Publications/Papers/Published/pcmkf-cont-from-gen-stack-insp/' title='Continuations in Unfriendly Environments'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112983000319638715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112983000319638715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112983000319638715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112983000319638715'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/10/continuations-in-unfriendly.html' title='Continuations in Unfriendly Environments'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112953155799993644</id><published>2005-10-17T02:37:00.000-04:00</published><updated>2005-10-17T02:45:58.006-04:00</updated><title type='text'>Exciting and Depressing</title><summary type='text'>Ever have something happen that's terribly exciting, as long as you don't think about it too much?  I just had a mental breakthrough with my integrators: I realized a way to think about what's going on that makes everything perfectly clear.  Then I implemented this in about 174 lines of Bigloo code.  "That's great!" you say.  I agree completely.  Unfortunately, if I can't quite remain lost in the</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112953155799993644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112953155799993644' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112953155799993644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112953155799993644'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/10/exciting-and-depressing.html' title='Exciting and Depressing'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112917898020510702</id><published>2005-10-13T00:45:00.000-04:00</published><updated>2005-10-13T00:49:59.156-04:00</updated><title type='text'>Shared State in PLT Scheme's Swindle</title><summary type='text'>I just spent about six hours debugging a version of my integrator that runs in PLT Scheme (got tired of not having the class creation options available at runtime in Bigloo) because of a shared state problem.  If you define a Swindle class with the slot option :initvalue &lt;value&gt; then &lt;value&gt; is only evaluated once; every object of this class shares the same value.  Not good if you want to have </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112917898020510702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112917898020510702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112917898020510702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112917898020510702'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/10/shared-state-in-plt-schemes-swindle.html' title='Shared State in PLT Scheme&apos;s Swindle'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112810218233165870</id><published>2005-09-30T13:39:00.000-04:00</published><updated>2005-09-30T13:43:02.336-04:00</updated><title type='text'>SRFI-32 for Bigloo</title><summary type='text'>I needed some fast vector sorting routines for my n-body integrator.  To that end, I've packaged up the withdrawn SRFI 32 for Bigloo.  The SRFI is technically withdrawn, but even half of a half-standard is better than none (and this way I don't have to delve into sorting myself---I'm sure Olin Shivers is way better at that than I am).</summary><link rel='related' href='http://web.mit.edu/farr/www/srfi-32/srfi-32.html' title='SRFI-32 for Bigloo'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112810218233165870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112810218233165870' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112810218233165870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112810218233165870'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/srfi-32-for-bigloo.html' title='SRFI-32 for Bigloo'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112802737560306909</id><published>2005-09-29T16:52:00.000-04:00</published><updated>2005-09-29T16:59:35.913-04:00</updated><title type='text'>Wolfram Tones</title><summary type='text'>Here's an idea sure to appeal to nerds everywhere (including me): cellphone ring tones generated by cellular automata.  Though it's a bit hard to stomach how much Wolfram exaggerates his contributions to the science of complexity and the study of cellular automata and related computational algorithms, it's still an interesting idea.  Discovered through this New York Times article.  

In addition </summary><link rel='related' href='http://tones.wolfram.com/' title='Wolfram Tones'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112802737560306909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112802737560306909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112802737560306909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112802737560306909'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/wolfram-tones.html' title='Wolfram Tones'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112801999805440719</id><published>2005-09-29T14:36:00.000-04:00</published><updated>2005-09-29T14:53:19.973-04:00</updated><title type='text'>Srfi-4 Vectors in Bigloo</title><summary type='text'>I just thought I'd drop a quick note about srfi-4-like vectors in Bigloo.  For those who don't know, srfi-4 specifies an interface for homogeneous numeric vector types.  For those of us who do numerical computing, this is a big win---boxing a double, for example, every time you reference or store into a vector is just impossibly inefficient if you want to get anything numerical done.  But, Bigloo</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112801999805440719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112801999805440719' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112801999805440719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112801999805440719'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/srfi-4-vectors-in-bigloo.html' title='Srfi-4 Vectors in Bigloo'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112758714052024174</id><published>2005-09-24T14:30:00.000-04:00</published><updated>2005-09-24T14:39:00.526-04:00</updated><title type='text'>Economic Integration</title><summary type='text'>Check this out (from an article in the New York Times):

A school board election will take place in October. While the board has continued to endorse economic integration, some supporters worry that that could change one day.

"It's not easy and it can be very contentious in the community," said Walter C. Sherlin, who retired two years ago as an associate superintendent. "Is it worth doing? Look </summary><link rel='related' href='http://nytimes.com/2005/09/25/education/25raleigh.html' title='&lt;b&gt;Economic&lt;/b&gt; Integration'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112758714052024174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112758714052024174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112758714052024174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112758714052024174'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/economic-integration.html' title='&lt;b&gt;Economic&lt;/b&gt; Integration'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112757801652405689</id><published>2005-09-24T12:01:00.000-04:00</published><updated>2005-09-24T12:06:56.533-04:00</updated><title type='text'>Unemployment</title><summary type='text'>Just read an interesting paragraph in an essay about the internet bubble:

The prospect of technological leverage will of course raise the specter of unemployment. I'm surprised people still worry about this. After centuries of supposedly job-killing innovations, the number of jobs is within ten percent of the number of people who want them. This can't be a coincidence. There must be some kind of</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112757801652405689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112757801652405689' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112757801652405689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112757801652405689'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/unemployment.html' title='Unemployment'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112739582988442662</id><published>2005-09-22T09:25:00.000-04:00</published><updated>2005-09-22T09:30:29.890-04:00</updated><title type='text'>The Flu</title><summary type='text'>Not that I have it (or usually get it, being young and in good shape).  However, this article in the New York Times today points out that vaccines are "apparently ineffective" in preventing the flu for elderly people:


The fact that the vaccine study showed that inoculations have had only a modest effect in the elderly is particularly worrisome, because this is a group that tends to suffer high </summary><link rel='related' href='http://www.nytimes.com/2005/09/22/health/22flu.html' title='The Flu'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112739582988442662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112739582988442662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112739582988442662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112739582988442662'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/flu.html' title='The Flu'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112727291081627188</id><published>2005-09-20T23:15:00.001-04:00</published><updated>2005-09-20T23:21:50.816-04:00</updated><title type='text'>Bigloo Finalization Library</title><summary type='text'>I've just posted a library which allows finalization of Bigloo objects before they're reclaimed by the GC.  You can view the documentation and download the library here.  


Manuel provided the hint to look at doc/README.finalizer, but I didn't like the way finalization was done in the example there, and it seemed a bit out of date.  So, I wrapped up my own finalization library.  I worry that I </summary><link rel='related' href='http://web.mit.edu/farr/www/finalize/finalize.html' title='Bigloo Finalization Library'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112727291081627188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112727291081627188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112727291081627188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112727291081627188'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/bigloo-finalization-library_20.html' title='Bigloo Finalization Library'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112723748648917403</id><published>2005-09-20T13:22:00.002-04:00</published><updated>2005-09-20T13:33:04.763-04:00</updated><title type='text'>Bigloo 2.7a Beta Mac OS X Package</title><summary type='text'>I've just posted a Mac OS X installer for the latest (Sept 20) beta of Bigloo.  You can read more about it here.  It's been quite a lot of work to compile Bigloo properly on OS X (which you can read about on the Bigloo mailing list), and Manuel has been a huge help.  Many of these things are happening automatically now, but I figured that, since I've already put in the effort, I might as well </summary><link rel='related' href='http://web.mit.edu/farr/www/bigloo-pkg/bigloo.html' title='Bigloo 2.7a Beta Mac OS X Package'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112723748648917403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112723748648917403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112723748648917403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112723748648917403'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/bigloo-27a-beta-mac-os-x-p_112723748648917403.html' title='Bigloo 2.7a Beta Mac OS X Package'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112667446885916808</id><published>2005-09-14T00:53:00.000-04:00</published><updated>2005-09-14T01:07:48.893-04:00</updated><title type='text'>Bigloo Internals, More Dynamic Linking and Shark...</title><summary type='text'>without much Scheme-y stuff in sight.


Over the past few days Manuel Serrano has been helping me improve the speed of my n-body integrator by changing the behavior of Bigloo's threading when run in single-threaded mode on OS X.  There is a function in runtime/Clib/cthread.c called denv_get which, I assume, gets some representation of the current dynamic environment.  Since the cthread.c </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112667446885916808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112667446885916808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112667446885916808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112667446885916808'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/bigloo-internals-more-dynamic-linking.html' title='Bigloo Internals, More Dynamic Linking and Shark...'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112613127228212567</id><published>2005-09-07T18:07:00.000-04:00</published><updated>2005-09-07T18:14:32.313-04:00</updated><title type='text'>Hybrid Cars and Pork</title><summary type='text'>In today's New York Times:

"I would like to get more hybrids out of our system because I do think it's something that is here to stay," William Clay Ford Jr., chairman and chief executive of Ford Motor, told reporters in Detroit on Aug. 23. Last fall, Ford introduced a hybrid version of its Escape sport utility vehicle, the first of several hybrids planned.

At the same time, the energy bill </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112613127228212567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112613127228212567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112613127228212567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112613127228212567'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/hybrid-cars-and-pork.html' title='Hybrid Cars and Pork'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112606607167086991</id><published>2005-09-06T23:37:00.000-04:00</published><updated>2005-09-07T12:47:56.046-04:00</updated><title type='text'>Bigloo Tracing</title><summary type='text'>I just saw that I'm being syndicated at planet scheme.  Looks like it hasn't quite made it to planet lisp-like number of contributors (or probably readers).  But, in honor of the nevertheless auspicious occasion I plan to say something scheme-y after the past few days of political posts (which, by the way, have probably alienated my one reader---sorry dude, but I call it the way I see it :) ).
</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112606607167086991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112606607167086991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112606607167086991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112606607167086991'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/bigloo-tracing.html' title='Bigloo Tracing'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112598302977716215</id><published>2005-09-06T00:49:00.000-04:00</published><updated>2005-09-06T01:03:49.800-04:00</updated><title type='text'>What are they doing?</title><summary type='text'>Yet more incompetence from our lovely executive branch: FEMA ignores an offer of help from Chicago. 

Even before the storm hit the Gulf Coast on Monday, he [Chicago Mayor Daly] said, the city's Office of Emergency Management and Communications had contacted emergency response agencies in Illinois and Washington.

In the event of a disaster, the city offered to send 44 Chicago Fire Department </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112598302977716215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112598302977716215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112598302977716215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112598302977716215'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/what-are-they-doing.html' title='What are they doing?'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112593173849166803</id><published>2005-09-05T10:43:00.000-04:00</published><updated>2005-09-05T10:49:51.963-04:00</updated><title type='text'>Labor Day</title><summary type='text'>From a NY Times Op-Ed:

...But because the French work 35 hours a week, Americans sneer, forgetting that in many years French workers have a higher productivity rate than their American counterparts - proof that you can work better by working less.

Americans also forget that going to work every day is often more a chore than a pleasure. You seem more and more disillusioned about work: only a </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112593173849166803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112593173849166803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112593173849166803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112593173849166803'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/labor-day.html' title='Labor Day'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112585244417161419</id><published>2005-09-04T12:20:00.000-04:00</published><updated>2005-09-04T17:09:12.086-04:00</updated><title type='text'>Science and Politics in the NY Times Magazine</title><summary type='text'>There's an interesting article in the New York Times Magazine today about politics and science.  The article discusses possible reasons for why most (nearly all?) scientists think the Bush administration has done an abysmal job listening to and properly reacting to scientific developments and studies.  It's probably a good factual review of several instances where science was suppressed/changed </summary><link rel='related' href='http://www.nytimes.com/2005/09/04/magazine/04SCIENCE.html' title='Science and Politics in the NY Times Magazine'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112585244417161419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112585244417161419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112585244417161419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112585244417161419'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/science-and-politics-in-ny-times.html' title='Science and Politics in the NY Times Magazine'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112581887069947409</id><published>2005-09-04T03:18:00.000-04:00</published><updated>2005-09-04T03:27:50.706-04:00</updated><title type='text'>Google Helper for Mac</title><summary type='text'>Google Mail Helper is available for the Mac!  I'm now using it, but I'm wracked with guilt over my desertion of the wonderful soul who created Gee.  Poor Lloyd---and because it never rains but when it pours, Lloyd looks to have lost a bunch of photos in a Linux drive crash.  Bummer.


I guess people may still use Gee for other Atom feeds, but mail helper has much better features for Gmail (not </summary><link rel='related' href='http://toolbar.google.com/gmail-helper/' title='Google Helper for Mac'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112581887069947409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112581887069947409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112581887069947409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112581887069947409'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/google-helper-for-mac.html' title='Google Helper for Mac'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112581549064863476</id><published>2005-09-04T02:13:00.000-04:00</published><updated>2005-09-04T02:31:30.653-04:00</updated><title type='text'>Chlorine Tidbits</title><summary type='text'>Some sites regarding chlorine exposure in swimmers are interesting, since I just got back into swimming.  The information is somewhat sketchy on the web (and most sites are trying to sell you something---as in http://www.karinya.com/chlorine.htm), but there are some seemingly-authoritative pages.  This review points out that there isn't a very good understanding of the effects of chlorine and </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112581549064863476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112581549064863476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112581549064863476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112581549064863476'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/chlorine-tidbits.html' title='Chlorine Tidbits'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112564135886369036</id><published>2005-09-02T01:50:00.000-04:00</published><updated>2005-09-02T02:09:18.876-04:00</updated><title type='text'>Sean Carroll's Blog</title><summary type='text'>I just discovered Sean Carroll's Blog (he blogs along with several other physicists at cosmicvariance).  Great stuff!  I particularly enjoyed the political cartoons #1 and #2.  Of course, the physics is neat, too.  


I haven't hung out much with Sean (just a bit when I was visiting Chicago as a prospective grad student), but now I can follow him vicariously and wonder what Chicago would have </summary><link rel='related' href='http://cosmicvariance.com' title='Sean Carroll&apos;s Blog'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112564135886369036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112564135886369036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112564135886369036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112564135886369036'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/09/sean-carrolls-blog.html' title='Sean Carroll&apos;s Blog'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112551108947744847</id><published>2005-08-31T13:52:00.000-04:00</published><updated>2005-08-31T13:58:09.483-04:00</updated><title type='text'>bdepend Problems Solved</title><summary type='text'>I just figured out why I was having problems with module initialization.  I also solved a long-standing mystery in my own mind: what the hell are those .mco files that Bigloo produces all the time?  In fact, .mco files are module checksums---reproduced (I assume) every time the interface to a module changes.  So, bdepend does, in fact, know about dependencies on (import ...) modules; it just uses</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112551108947744847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112551108947744847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112551108947744847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112551108947744847'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/bdepend-problems-solved.html' title='bdepend Problems Solved'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112448641283017647</id><published>2005-08-19T17:17:00.000-04:00</published><updated>2005-08-19T17:20:12.840-04:00</updated><title type='text'>Bigloo GC and SIGINT</title><summary type='text'>I've noticed in my work with Bigloo that sometimes when a process running from the REPL is sent SIGINT (C-c), the GC hangs in the function GC_lock.  I don't know if it's related to dynamic-load-ing on OS X, or whether this is a general problem, and the GC is not very resistant to SIGINT.  I suppose it could also be my optimization options on the compiled C code (I'm optimizing pretty heavily for </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112448641283017647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112448641283017647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112448641283017647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112448641283017647'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/bigloo-gc-and-sigint.html' title='Bigloo GC and SIGINT'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112421559296049482</id><published>2005-08-16T13:59:00.000-04:00</published><updated>2005-08-19T17:22:11.000-04:00</updated><title type='text'>Inconsistent Module Initialization</title><summary type='text'>I've been getting a lot of errors like the following lately from Bigloo:

*** ERROR:body:Inconsistent module initialization
Module `body' is inconsistently initialized by module `__nbody'.
At least of the two modules must be recompiled (see also -unsafev option).

and I think I finally realized what the problem is.  I have a bunch of modules which are all separately compiled, and then put </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112421559296049482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112421559296049482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112421559296049482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112421559296049482'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/inconsistent-module-initialization.html' title='Inconsistent Module Initialization'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112409083044465458</id><published>2005-08-15T02:59:00.000-04:00</published><updated>2005-08-15T03:44:22.423-04:00</updated><title type='text'>Perserverance: 1 Static Linking: 0</title><summary type='text'>Finally!  I've figured out how to make dynamic linking of module files work with bigloo on Mac OS X!  Details follow (though I should warn you that this is a total hack right now).


There are two steps involved: 1. Alter the bigloo compilation process so it builds the proper dynamic libraries and 2. Make sure that the executable bigloo is linked against the dynamic libraries, and not the static </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112409083044465458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112409083044465458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112409083044465458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112409083044465458'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/perserverance-1-static-linking-0.html' title='Perserverance: 1 Static Linking: 0'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112363278941489313</id><published>2005-08-09T20:02:00.000-04:00</published><updated>2005-08-09T20:13:09.420-04:00</updated><title type='text'>Latest in the Quest for Speed</title><summary type='text'>I found an interesting post which claims that Chicken is a bit faster than Gambit on floating-point code.  There's a paper by Brad Lucier which talks about using Gambit to make a PDE solver, which would seem to refute this (Chicken doesn't achieve C speeds on numerics), but I suspect that his sparse matrix-vector multiply was memory-bound, so the speed of the code didn't matter too much.


In any</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112363278941489313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112363278941489313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112363278941489313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112363278941489313'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/latest-in-quest-for-speed.html' title='Latest in the Quest for Speed'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112360080288104226</id><published>2005-08-09T11:04:00.000-04:00</published><updated>2005-08-09T11:20:02.886-04:00</updated><title type='text'>Gambit Isn't Fast Without (declare (unsafe))</title><summary type='text'>Gambit, nice as it is about loading compiled code into an REPL, isn't fast numerically unless you compile using (declare (unsafe)).  (At least it wasn't in my recent quick tests of some floating-point code.)  Bigloo is much better at eliminating type checks and producing fast numerical code, even in safe mode.  So, I guess it's back to Bigloo, because I don't want to have to worry about blowing </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112360080288104226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112360080288104226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112360080288104226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112360080288104226'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/gambit-isnt-fast-without-declare.html' title='Gambit Isn&apos;t Fast Without (declare (unsafe))'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112346926592965192</id><published>2005-08-07T22:40:00.000-04:00</published><updated>2005-08-07T22:47:45.936-04:00</updated><title type='text'>Gambit-C</title><summary type='text'>I've just discovered a new scheme implementation which may be even better than Bigloo for my needs: Gambit-C.  Gambit runs on Mac OS X, and compiles to C, just like Bigloo.  However the compilation strategy is a bit different.  Bigloo aims for roughly idiomatic C code (and relies on the C compiler for many optimizations), while Gambit really uses C as a portable assembly language (and therefore </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112346926592965192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112346926592965192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112346926592965192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112346926592965192'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/gambit-c.html' title='Gambit-C'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112317799898994431</id><published>2005-08-04T13:51:00.000-04:00</published><updated>2005-08-04T13:53:19.000-04:00</updated><title type='text'>More Bigloo Macros</title><summary type='text'>Regarding my previous post about Bigloo Macros and the REPL, I have realized that it's vital to export the macro-expander function from the module in which the macro is defined.  Not doing this prevents recognizing the expander when (eval '(define-expander ....)) is evaluated.  (Maybe this was obvious to everyone else, but I didn't realize it for a while.)</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112317799898994431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112317799898994431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112317799898994431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112317799898994431'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/08/more-bigloo-macros.html' title='More Bigloo Macros'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-112020624570164725</id><published>2005-07-01T04:19:00.000-04:00</published><updated>2005-07-01T04:24:05.706-04:00</updated><title type='text'>MzScheme and GSL Random Numbers</title><summary type='text'>I just used the foreign interface to PLT Scheme to wrap up the GSL random number generators.  I've posted the code here; it hasn't been extensively tested, but I think it'll work OK.  


As an aside, I really, really like the foreign interface to PLT Scheme---it's by far the best one I've ever dealt with.  This paper explains the rationale.  Definitely The Right Way to do it.</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/112020624570164725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=112020624570164725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112020624570164725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/112020624570164725'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/07/mzscheme-and-gsl-random-numbers.html' title='MzScheme and GSL Random Numbers'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111967343105699424</id><published>2005-06-25T00:17:00.000-04:00</published><updated>2005-06-25T00:48:04.886-04:00</updated><title type='text'>Bigloo, Macros and the REPL</title><summary type='text'>I've just spent quite a while trying to make Bigloo do what I want with macros.  What I want:


 To be able to write macros within a module which I can use while compiling code in that module or other modules which import the macro-module. 
 To be able to write macros which are imported into an repl which incorporates the module in which they are written. 


Doing this has required a bit of </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111967343105699424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111967343105699424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111967343105699424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111967343105699424'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/06/bigloo-macros-and-repl.html' title='Bigloo, Macros and the REPL'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111957982658540808</id><published>2005-06-23T22:16:00.000-04:00</published><updated>2005-06-23T22:35:55.456-04:00</updated><title type='text'>Making Scheme behave like Fortran 95</title><summary type='text'>I just coded up a macro which makes Bigloo scheme behave more like Fortran 95 with respect to vectors.  Usage:


(with-vectors (a b c)
   (a &lt;- (+ b c)))
(with-vectors (a b c)
   (&lt;- (+ a b c)))
(with-vectors (a b c)
   (a &lt;- (+ b 2))
   (print "I can insert statements, too.")
   (c &lt;- (+ a b)))



The second form above returns a fresh vector whose elements are the sums of the corresponding </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111957982658540808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111957982658540808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111957982658540808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111957982658540808'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/06/making-scheme-behave-like-fortran-95.html' title='Making Scheme behave like Fortran 95'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111949213955976718</id><published>2005-06-22T19:23:00.000-04:00</published><updated>2005-06-22T22:02:19.586-04:00</updated><title type='text'>Typed Vectors in Bigloo</title><summary type='text'>I learned at the beginning of the month how to make a typed vector (also called monomorphic, I think) in Bigloo scheme.  I had known that Bigloo would automatically unbox vectors of doubles or integers if it could infer the type of them, but you can't guarantee this.  This kept me from using Bigloo for my numerical projects---it's essential that such vectors be unboxed, and I didn't want to leave</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111949213955976718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111949213955976718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111949213955976718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111949213955976718'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/06/typed-vectors-in-bigloo.html' title='Typed Vectors in Bigloo'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111763704792501334</id><published>2005-06-01T10:36:00.000-04:00</published><updated>2005-06-01T10:44:07.936-04:00</updated><title type='text'>All the President's Men...</title><summary type='text'>I still remember reading All the President's Men when I was maybe in middle school.  My parents were coming of age during that era, and reading the book made me feel like I was equally involved in the scandal.  Learning yesterday that Deep Throat has finally come forward brought all that to mind again.  I hope someone writes a book about him---it sounds like he is maybe a bit conflicted about his</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111763704792501334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111763704792501334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111763704792501334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111763704792501334'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/06/all-presidents-men.html' title='All the President&apos;s Men...'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111751627379313998</id><published>2005-05-31T01:02:00.000-04:00</published><updated>2005-05-31T01:11:13.803-04:00</updated><title type='text'>Almost beaten to the punch!</title><summary type='text'>The shark-profile package has only been out for a few days, and I've been scooped!  I'm glad that someone with more stamina and skill than I have has fixed the interrupt/floating-point interaction for SBCL on OS X.  I've been using SB-SPROF a bit tonight, and it seems to be stable now.  In consolation, I suppose there may still be people who wish to use shark instead of SB-SPROF, and I got </summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111751627379313998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111751627379313998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111751627379313998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111751627379313998'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/05/almost-beaten-to-punch.html' title='Almost beaten to the punch!'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111717993780563094</id><published>2005-05-27T03:32:00.000-04:00</published><updated>2005-05-27T03:45:52.263-04:00</updated><title type='text'>Profiling lisp with SBCL and Mac OS X</title><summary type='text'>I just posted some code for profiling with shark (part of the CHUD toolkit on Mac OS X) and SBCL.  I've been writing some fancy n-body integrators using common lisp for a research project, and wanted to profile the code.  SBCL comes with a profiler (sb-sprof), but it doesn't work well---at all---on Mac OS X (see the reply to this message of mine for a description of the problem).  So, I cooked up</summary><link rel='related' href='http://web.mit.edu/farr/www/shark-profile/doc/html/index.html' title='Profiling lisp with SBCL and Mac OS X'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111717993780563094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111717993780563094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111717993780563094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111717993780563094'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/05/profiling-lisp-with-sbcl-and-mac-os-x.html' title='Profiling lisp with SBCL and Mac OS X'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111677671759156505</id><published>2005-05-22T11:39:00.000-04:00</published><updated>2005-05-22T11:45:17.596-04:00</updated><title type='text'>Go New York Times!</title><summary type='text'>Check this out:

While the proposal to close the case was ultimately rejected by senior officials, documents show that the inquiry was at a virtual standstill when an article in The New York Times on March 4, 2003, reported that at least one of the prisoner's deaths had been ruled a homicide, contradicting the military's earlier assertions that both had died of natural causes. Activity in the </summary><link rel='related' href='http://www.nytimes.com/2005/05/22/international/asia/22abuse.html?ex=1274414400&amp;en=35951e72c65a2185&amp;ei=5088&amp;partner=rssnyt&amp;emc=rss' title='Go New York Times!'/><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111677671759156505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111677671759156505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111677671759156505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111677671759156505'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/05/go-new-york-times.html' title='Go New York Times!'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13073795.post-111669580859773909</id><published>2005-05-21T16:54:00.000-04:00</published><updated>2005-05-21T16:54:49.426-04:00</updated><title type='text'>First Post</title><summary type='text'>I've finally broken down and started a blog.  Typically for me, it came impulsively as I was searching for information on the best way to rip books on tape (CD) in iTunes, and stumbled on http://aldoblog.com/blog/471.  Since we're flying to California, Oregon and then the Netherlands this summer, we've got some 30 hours of time on planes, and thought we'd get some books on tape for Rachel's iPod.</summary><link rel='replies' type='application/atom+xml' href='http://wmfarr.blogspot.com/feeds/111669580859773909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13073795&amp;postID=111669580859773909' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111669580859773909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13073795/posts/default/111669580859773909'/><link rel='alternate' type='text/html' href='http://wmfarr.blogspot.com/2005/05/first-post.html' title='First Post'/><author><name>Will Farr</name><uri>http://www.blogger.com/profile/11756898910041903896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
