You can now find all of these posts and all new posts at hornbeck.posterous.com

Dr Craig Venter – one of the world’s most famous and controversial biologists – said his U.S. researchers have overcome one of the last big hurdles to making a synthetic organism
Read more: here
Reading this actually scared me a little. It’s something I’ve been reading about for years but knowing that we are within months of creating what will become self replicating organisms really shakes me up a little. I’m guessing it’s similar to what you would feel to find out that aliens really existed or if the existence of g-d was truly proven.
I’ve tried to find time to read this week but it hasn’t worked out to well. Here is the slightly changed list for this week

As the summer comes to a close, I think back on the traveling that my family has done this summer. While we have not traveled nearly as much as we normally do since we had a new child, we did make two trips to Missouri and a few other small trips around Oklahoma and Texas. The main thing that pops up in my mind about us traveling is how much tech we carry with us. I would expect myself to have a lot since I’m a technophile but not my wife, she hates changing tech and used her last laptop until I forced her to upgrade. My children also travel with a large amount of gadgets. Let’s look at what each of us carried with us for our last trip to Missouri.
Dad(me): 15″ Macbook Pro, Amazon Kindle 2, iPhone 3GS, 60GB iPod, evdo card
Mom(my wife): 15″ Macbook Pro, Canon Rebel xti, 750GB external drive, iPhone 3GS, numerous sd cards, full case of blank cds
Oldest child(age 11): Macbook Air(ssd), iPod Nano, generic cell phone, digital camera, Nintendo DS + games
Middle child(age 5): Nintendo DS + games
Youngest child(age 3 months): electric nose sucker thing
To carry all of this around we drive a Honda Pilot that has 8 seats, a luggage rack on top and a nice DVD player inside to keep our kids entertained if they get bored with their other crap. Note that we do not use a GPS(I think about getting one but honestly don’t care enough).
I have to wonder if other families travel with this much tech or even more maybe. What gadgets do you take on vacation with you?
Been a crazy couple of weeks with a lot of training. Been reading some new stuff but here’s the list
After seeing a tweet from Chris Wanstrath today about node.js I figured I would take a look and see what it’s about.
Node.js is a “purely evented” framework for Google’s V8 javascript engine that gives you the ability to write client/server apps in a message passing, non-blocking, concurrent way. In the description they say,
“Node is similar in design to systems like Ruby’s Event Machine or Python’s Twisted. Node takes the event model a bit further. For example, in other systems there is always a blocking call to start the event-loop. Typically one defines behavior through callbacks at the beginning of a script and at the end starts a server through a call like EventMachine::run(). In Node it works differently. By default Node enters the event loop after executing the input script. Node exits the event loop when there are no more callbacks to perform. Like in traditional browser javascript, the event loop is hidden from the user.”
“no function in Node directly performs I/O. Because nothing blocks, less-than-expert programmers are able to develop fast systems.”
“But what about multiple-processor concurrency? Threads are necessary to scale programs to multi-core computers. The name Node should give some hint at how it is envisioned being used. Processes are necessary to scale to multi-core computers, not memory-sharing threads. The fundamentals of scalable systems are fast networking and non-blocking design—the rest is message passing. In the future, I’d like Node to be able to spawn new processes (probably using the Web Workers API), but this is something that fits well into the current design.”
Node.js is the first javascript library that really makes me want to dive in and work with javascript for more than just trivial ajax effects on a web page. They seem to be on the right path for developing a solid solution for people that don’t want to learn functional/concurrent languages but still want some of that power.
There are already people building adapters to a few of my favorite “nosql” based key/value and document stores,
If you want to get involved or find out more information check out their google group and their docs. Not sure that I will use it anytime soon but I will definitely keep my eye on it for the future.

I love my Kindle. It’s something that I use all the time and even though I think the recent events surrounding the Kindle were handled poorly by Amazon, I don’t think it’s enough to stop me from using it anytime soon. Having the ability to keep a large amount of books with me at all times is very useful. Normally I have four to five books going at once so carrying the Kindle is a lot easier on my back than carrying four to five large books with me. I thought it may be interesting to list out the ten books from my home page each Sunday and see if anyone has any comments on what I’m reading or suggestions for similar books. So here they are, the top ten books on my Kindle in the order that they appear on the device.

While I’ve used Lisp for years off and on I never really grabbed onto the difference between Lisp-1 and Lisp-2. I think this is mainly because I have used Common Lisp which is a Lisp-2 and I have only toyed with Scheme which is a Lisp-1, so I never really thought about the differences. However, Clojure is a Lisp-1 so I figured it was about time to read up on it. After spending some time reading about it I figured it may be nice to document it here so that others may be able to understand it as well.
Lisp-1 and Lisp-2 refers to the different ways that namespaces for functions and variables are handled between the two. Common Lisp uses a separate namespace for functions and variables while Scheme uses the same namespace for both.
According to Richard P. Gabriel in his paper on the subject, the two are defined as follows
Lisp-1 has a single namespace that serves a dual role as the function namespace and value namespace; that is, its function namespace and value namespace are not distinct. In Lisp-1, the functional position of a form and the argument positions of forms are evaluated according to the same rules.
Lisp-2 has distinct function and value namespaces. In Lisp-2, the rules for evaluation in the functional position of a form are distinct from those for evaluation in the argument positions of the form. Common Lisp is a Lisp-2 dialect.
Knowing now the difference between the two, what does it really mean? The main difference for someone programming between the two is how you use functions inside of other functions and how you name your variables.
From the Wikipedia page on Common Lisp comes the example
(sort (list 5 2 6 3 1 4) #’>)
In this example the function “>” has to use the special form of “#’” in front to show that it is a function and not a value. This is similar to using (quote) or “‘” in front of a list to show that it is not to be evaluated.
In a Lisp-1, the sort would have been written
(sort (list 5 2 6 3 1 4) >)
Herein lies most of the debate between which is the better choice. While in this example it’s easy to see that “>” is a function with or without using “#’”, sometimes it’s not the case. Let’s look at another example, this time from the paper already mentioned by Richard P. Gabriel
(DEFUN PRINT-SQUARES (LIST)
(DOLIST (ELEMENT LIST)
(PRINT (LIST ELEMENT (EXPT ELEMENT 2)))))
In Lisp-2 this function will work just fine with ELEMENT being bound to the value of LIST in the DOLIST call and the final LIST is a function that will combine the element with the exponent of the element into a new list and print it to the terminal.
In Lisp-1 you would need to write the function as such
(DEFUN PRINT-SQUARES (LST)
(DOLIST (ELEMENT LST)
(PRINT (LIST ELEMENT (EXPT ELEMENT 2)))))
Using LST as the variable instead of LIST since you cannot use a variable with the same name as a function. Since I never really put much thought into it before and was just used to the way that Common Lisp did things, none of this ever bothered me. Now that I’m seeing the difference and knowing the reasoning behind each one I think I like the Lisp-1 approach a little better. I don’t like having the same name mean two different things within my entire codebase let alone two separate meanings within my same function. Maybe that comes from my experience with Erlang or just the way my brain works but it seems a lot cleaner to me. I liked this quote from Michael Arntzenius on the Arc Forum,
“The lisp-1 versus lisp-2 issue is an old one, as you note. I prefer lisp-1’s, because they are conceptually cleaner – they don’t make an arbitrary distinction between where to find values of a certain kind (functions) and where to find values of another kind (everything else). It reduces cognitive load not to have to think about “okay, is this going to be found in the function namespace or in the other-values namespace?”.”



