Michael Fogus's Blog, page 19
December 13, 2011
Announcing core.cache v0.5.0
core.cache is a new Clojure contrib library providing the following features: An underlying CacheProtocol used as the base abstraction for implementing new synchronous caches A defcache macro for hooking your CacheProtocol implementations into the Clojure associative data capabilities. Immutable implementations of some basic caching strategies First-in-first-out (FIFOCache) Least-recently-used (LRUCache) Least-used (LUCache) Time-to-live (TTLCache) Naive cache [...]
Published on December 13, 2011 09:58
November 15, 2011
The Macronomicon Slides
Below you will find the slide deck for my Clojure Conj 2011 talk The Macronomicon. The Macronomicon View more presentations from Fogus A few points about this talk: The video of the talk will eventually be released through ConFreaks. These slides are available for download from SlideShare and from the complete Clojure Conj slide collection. [...]
Published on November 15, 2011 08:29
November 3, 2011
In the Shadow of John McCarthy
John McCarthy was a genius of the highest order. Much is known about his contribution to Lisp as its inventor, but he was also the mind behind much of early AI research, the progenitor of much of computer chess, and the initiator of time-sharing. As a Lisp advocate I have many thanks due to John [...]
Published on November 03, 2011 13:51
October 27, 2011
Joy of Clojure: The Movie
Made with Gource and ffmpeg and Github. Direct link :F
Published on October 27, 2011 08:30
October 18, 2011
Programming language development: the past 5 years
I recently compiled a list of Perlis Languages that were meant to illustrate varying paradigms not typically found in mainstream programming languages. Those languages were meant to stretch your mind and are not necessarily representative of the state of the art in language design and implementation. In this post I will provide a list of [...]
Published on October 18, 2011 18:19
October 14, 2011
Why Clojure doesn't need invokedynamic, but it might be nice
this is the third entry in an n-part series explaining the compilation techniques of Clojure.1 There was an interesting discussion about invokedynamic on the Clojure mailing list focused on the need for and potential benefits of invokedynamic. Granted this topic is often quite technical, so I suppose that it's understandable that confusion and disagreement would [...]
Published on October 14, 2011 11:39
October 2, 2011
The Elite Programming Language Fallacy
There are no programming languages that will make you "elite". In fact, there are no "elite" programming languages. "Elite" is as loaded a term as there could possibly be, but I would like to use (abuse?) it for the purpose of this post. I hope you will bear with me as I attempt to make [...]
Published on October 02, 2011 19:16
September 23, 2011
ClojureScript watchers and validators
Thanks to some nice work by Bobby Calderwood ClojureScript now has Atom validators and watchers. Some commentary below: Setting a validator Placing a validator on an Atom is as easy as: (def A (atom 0 (fn [key a old-val new-val] (== 0 new-val)))) @A ;=> 0 (swap! A inc) ;; AssertionError @A ;=> 0 As [...]
Published on September 23, 2011 07:51
September 17, 2011
The Devil's Programming Glossary: Rubris
Ru·bris Noun /ˈroōbris/ Excessive pride in one's programming language or framework. (in Greek tragedy) the eternal drive to reinvent the wheel as a hexagonal protuberance. RELATED TO: ru·bris·tic /ˈroōbristik/ adjective SYNONYMS: va·node·ty /vannōdtē/ noun
Published on September 17, 2011 21:04
September 8, 2011
10 Technical Papers Every Programmer Should Read (At Least Twice)
this is the second entry in a series on programmer enrichment Inspired by a fabulous post by Michael Feathers along a similar vein, I've composed this post as a sequel to the original. That is, while I agree almost wholly with Mr. Feather's1 choices, I tend to think that his choices are design-oriented2 and/or philosophical. [...]
Published on September 08, 2011 09:40