Friday, December 14, 2012

Moving away from Noir

Anthony Grimes (Raynes) reports on the deprecation of Noir for Clojure web apps:

Chris and I discussed this last night, and we decided that it’s time to deprecate Noir and ask that people focus on Compojure instead. The good news is that you don’t have to give much of anything up if you move to Compojure! A while back when I started moving my own sites to Compojure, I took most of the useful libraries that were embedded in Noir and I split them out into a new library that you can use from Compojure! lib-noir is the legacy of Noir. The best thing that came out of it. It has all the useful stateful sessions, flashes, cookies, as well as the other useful libraries. In fact, the latest release of Noir depends on this library so if you’re using it, you’re already secretly using lib-noir!

For new websites, please use Compojure and lib-noir. This is pretty much just as batteries included as Noir itself ever was! You just have to learn how to write routes with Compojure. It’s easy and just as concise as it was in Noir. You don’t have to use ring-jetty-adapter and stuff, just use the lein-ring plugin to start your server.

Related links:

Posted via email from fnclojure

Saturday, October 27, 2012

ClojureScript and Node.js – an experience report
> ClojureScript on Node.js is a (potentially) compelling story for writing scripting apps with Clojure.

Posted via email from fnclojure

Monday, October 22, 2012


A clever use of data literal tags for debugging:

Spyscope A Clojure library designed to make it easy to debug single- and multi-threaded applications.

Usage Add [spyscope “0.1.0”] to your project.clj’s :dependencies.

Posted via email from fnclojure

Wednesday, October 10, 2012

Writing Datomic in Clojure

Rich Hickey introduces Datomic, including architectural and implementation details.

Posted via email from fnclojure

Sunday, October 7, 2012

Zurb Foundation vs. Twitter Bootstrap

Twitter Bootstrap has the mindshare, but Zurb Foundation is another good choice.

Zurb describes it as “an easy to use, powerful, and flexible framework for building prototypes and production code on any kind of device.”

Right from that description you can tell that Zurb is putting a lot of emphasis on the cross-device aspect of its layout grid. Interestingly enough, the word “responsive” doesn’t appear anywhere on the Foundation site (that I can find), but the benefits are definitely similar: design one project that works everywhere.

Posted via email from miner49r

Thursday, September 20, 2012

Rich Hickey talk on Reducers - A Library and Model for Collection Processing

Rich Hickey explains how to bake an Apple pie...

> Rich Hickey discuses Reducers, a library for dealing with collections that are faster than Clojure’s standard lazy ones and providing support for parallelism.

Posted via email from fnclojure

Sunday, September 16, 2012

ClojureScript: 4 Things That Might Worry You, but Shouldn't

If you’re on the fence about giving ClojureScript a shot, I hereby present: 4 things that might worry you, but shouldn’t.

The post discusses:

  • Debugging
  • API Stability
  • Quality
  • Performance Profiling and Tuning

Posted via email from miner49r

Wednesday, September 12, 2012

Java 6 End of Public Updates extended to February 2013

After further consultation and consideration, the Oracle JDK 6 End of Public Updates will be extended through February, 2013. This means that the last publicly available release of Oracle JDK 6 is to be released in February, 2013.

It’s important to highlight that, as we establish a steady two year cadence for major releases, End of Public Update events for major versions will become more frequent. As a reminder, moving forward, Oracle will stop providing public updates of a major JDK version once all of the following criteria have been met:

• Three years after the GA of a major release • One year after the GA of a subsequent major release • Six months after a subsequent major release has been established as the default JRE for end-user desktops on

For more information see the FAQ on OTN.

Posted via email from miner49r

Friday, August 31, 2012

Foundation: The Most Advanced Responsive Front-end Framework from ZURB

ZURB Foundation is an older competitor to Twitter Bootstrap. They recently came out with version 3.

Posted via email from miner49r

Sunday, August 26, 2012

Celebration of John McCarthy's Accomplishments

The passing of John McCarthy, on 24 October 2011, received considerable attention in the media and there is an account of his legacy here. A celebration of his accomplishments was held at Stanford on 25 March 2012, as arranged by a committee consisting of Raj Reddy, Nils Nilsson, Ed Feigenbaum and Les Earnest.

Videos from the proceedings are collected on this web page:

Posted via email from miner49r

Clojure/Datomic creator Rich Hickey on Deconstructing the Database

Rich Hickey, author of Clojure, and designer of Datomic presents a new way to look at database architectures in this talk from JaxConf 2012.

Posted via email from fnclojure

Monday, August 6, 2012

Roman Numerals in Clojure

I saw this post on Roman Numerals in Clojure:

This is the sort of little programming problem that can stop useful work dead in its tracks. Here's my shot at the problem. I think it reads better in that the recursion just deals with the numbers and the Roman numeral strings are mapped latter. It's also a bit more efficient in the way it tests against the Roman "bases" (as I call them). There's no need to retest against a high base once your interim value has gone below that mark. In any case, my version is quite a bit faster than the other solution in my micro-benchmarks.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 
(ns miner.roman
  (:require [clojure.test :refer :all]))

;; inspired by

(def roman-map {1000 "M" 900 "CM" 500 "D" 400 "CD"
                100 "C" 90 "XC" 50 "L" 40 "XL"
                10 "X" 9 "IX" 5 "V" 4 "IV" 1 "I"})

(def roman-bases (sort > (keys roman-map)))

(defn roman-addends [n]
  {:pre [(< 0 n 4000)]}
  (loop [n n bases roman-bases addends []]
    (if (zero? n)
      (let [base (first bases)]
        (if (>= n base)
          (recur (- n base) bases (conj addends base))
          (recur n (rest bases) addends))))))

(defn roman [n]
  (apply str (map roman-map (roman-addends n))))

;; contrib clojure.pprint/cl-format works but is slow
(defn roman-cl [n]
  (clojure.pprint/cl-format nil "~@R" n))

(deftest roman-4k
  (doseq [n (range 1 4000)]
    (is (roman-cl n) (roman n))))

Posted via email from fnclojure

Thursday, August 2, 2012

Rich JavaScript Applications – the Seven Frameworks (Throne of JS, 2012)

Nice summary with links to a bunch of JS app libraries and frameworks:

For many web developers, it’s now taken for granted that such client-side frameworks are the way to build rich web apps. If you’re not using one, you’re either not building an application, or you’re just missing out.

Posted via email from miner49r

Journey Through The JavaScript MVC Jungle

Fortunately there are modern JavaScript frameworks that can assist with bringing structure and organization to our projects, improving how easily maintainable they are in the long-run.

These modern frameworks provide developers an easy path to organizing their code using variations of a pattern known as MVC (Model-View-Controller).

Posted via email from miner49r

Monday, July 30, 2012

An unexpected journey: Announcing a Third Hobbit Movie

Peter Jackson writes:

So, without further ado and on behalf of New Line Cinema, Warner Bros. Pictures, Metro-Goldwyn-Mayer, Wingnut Films, and the entire cast and crew of “The Hobbit” films, I’d like to announce that two films will become three.

It has been an unexpected journey indeed, and in the words of Professor Tolkien himself, “a tale that grew in the telling.”

Posted via email from miner49r

Friday, July 27, 2012

The Clojure Library Ecosystem

Paul Legato writes:

This quick overview will help to orient new Clojure programmers to the current state of the library system, with pointers to resources for further information.

Posted via email from fnclojure

Wednesday, July 25, 2012

OS X 10.8 Mountain Lion

My upgrade to Mountain Lion went smoothly. As always, you should have a complete backup before installing a new OS. Here are a couple of links that should tell you everything you need to know about Mountain Lion:

The Ars Technica review, written by John Siracusa:

Where Lion stumbled, Mountain Lion regroups and forges ahead.

The Macworld Review by Jason Snell:

Like Lion, Mountain Lion offers numerous feature additions that will be familiar to iOS users. This OS X release continues Apple’s philosophy of bringing iOS features “back to the Mac,” and includes iMessage, Reminders, Notes, Notification Center, Twitter integration, Game Center, and AirPlay Mirroring.

Posted via email from miner49r

Tuesday, July 24, 2012

Datomic Free Edition

We’re happy to announce today the release of Datomic Free Edition. This edition is oriented around making Datomic easier to get, and use, for open source and smaller production deployments.

Posted via email from fnclojure

Wednesday, July 11, 2012

Interview with Alan Kay in Dr Dobb's

I like to say that in the old days, if you reinvented the wheel, you would get your wrist slapped for not reading. But nowadays people are reinventing the flat tire.

Posted via email from miner49r

Tuesday, July 10, 2012

Chris Granger - Light Table Playground Levels Up

announce the release of v0.0.7 of the Light Table Playground. This version is a serious upgrade to the Instarepl that brings the ability to manually evaluate things and work in your own projects.

Posted via email from miner49r

Monday, July 9, 2012

PHP: The Right Way

I’m not a PHP guy, but I have to admit it’s popular so maybe there’s something useful about it.

There’s a lot of bad information on the Web (I’m looking at you, W3Schools) that leads new PHP users astray, propagating bad practices and bad code. This must stop. PHP: The Right Way is an easy-to-read, quick reference for PHP best practices, accepted coding standards, and links to authoritative tutorials around the Web.

Posted via email from miner49r

A Primer on Hybrid Apps for iOS

In conclusion, hybrid apps don’t feel quite right on iOS: they’re slower and clumsier, they can suffer from unrecoverable errors, and they just don’t ‘feel’ as good as native apps do. But, they offer several advantages that may, under the right circumstances, be a worthwhile tradeoff.

Posted via email from miner49r

Sunday, July 8, 2012

Big Data needs more than Hadoop

In summary, Hadoop is an incredible tool for large-scale data processing on clusters of commodity hardware. But if you’re trying to process dynamic data sets, ad-hoc analytics or graph data structures, Google’s own actions clearly demonstrate better alternatives to the MapReduce paradigm. Percolator, Dremel and Pregel make an impressive trio and comprise the new canon of big data. I would be shocked if they don’t have a similar impact on IT as Google’s original big three of GFS, GMR, and BigTable have had.

Posted via email from miner49r

Friday, July 6, 2012

Kovas Boguta on Session: A Web REPL

Session is a persistent web repl for Clojure and ClojureScript. Github repo:

Posted via email from miner49r

Saturday, June 30, 2012

iPhone turns 5: Here are the naysayers

Five years ago, everyone knew that the iPhone would never succeed. Smart people used BlackBerries and dreamed of a Zune Phone back then.

“So, I kinda look at that and I say, well, I like our strategy. I like it a lot.” — Steve Balmer, 2007

(By the way, that quote still kinda works for the latest Microsoft announcements.)

Here are some quotes from industry bigwigs after the iPhone announcement:

Posted via email from miner49r

Friday, June 29, 2012

JavaScript Blacklist

JavaScript Blacklist is a simple extension for Safari 5 which blacklists scripts from a configurable list of domains. If a common “utility” script used by sites that you visit is annoying you, this will let you opt out quickly and easily.

Posted via email from miner49r

Thursday, June 28, 2012

Writing Node.js modules in ClojureScript

I love Clojure, and used this opportunity to finally take a look atClojureScript, and specifically using Node.js as a deploy target.

Posted via email from miner49r

SQLite4: The Design Of SQLite4

SQLite4 is a compact, self-contained, zero-adminstration, ACID database engine in a library, just like SQLite3, but with an improved interface and file format.

Posted via email from miner49r

Monday, June 25, 2012

Java 8 lambdas

In the better-late-than-never department, we have lambdas (closures) coming to Java 8. Personally, I’m very happy using Clojure, but it’s nice to know that the Java world is still making progress, albeit very slowly…

Scheduled for release in 2013, Java 8 will include language support for lambda functions. Although the specification is still in flux, lambdas are already implemented in JDK 8 binaries.

Posted via email from miner49r

Chris Granger announces Light Table Playground

the official release of the Light Table Playground! You can find instructions for getting it here:

Posted via email from miner49r

Wednesday, June 13, 2012

Reducers at EuroClojure

Fold will try to do the computation in parallel using fork/join, when the input collection that is asked to apply the reducer to itself supports this and when the reducer supports this. The check for support is done through protocols: for the datastructures: PersistentVector extends CollFold, for the reducers: r/map is defined as a folder, while r/take-while is defined as a reducer (and does not support fold, because partitioning does not make sense for this computation). When parallel fold is not supported, then fold will just do a reduce. See the implementation for details: reducers.clj

A common approach for parallel processing is to use map+reduce. The work is divided into partitions and map is applied to each partition and the intermediate results are combined with reduce. In fold the approach is reduce+combine. The work on the smallest partition is done with a reduce rather than with map. Compare the two approaches by trying to express filter in map+reduce versus reduce+combine. It appeals to the functional programming sensibilities that reduce is a better fit for most operations than map.

Posted via email from fnclojure

Tuesday, June 12, 2012

strange Mac ethernet slow down

I had some trouble with my iMac today. For no apparent reason, my internet connection seemed to slow down. A speed test on reported only 1 Mbps, rather than the 10 Mbps that Comcast usually provides. I did all the usual simple things: reset the router and cable modem, reboot the iMac. No improvement. OK, now on to the Mac voodoo: reset the PRAM (reboot holding cmd-opt-P-R), reset the SMC (unplug everything and hold the power button for 10 seconds), delete and replace the network locations. Still no good. Actually it got worse, my Mac said nothing was connected to the ethernet port. Could be a router problem? Maybe, but the same cable worked fine with a MacBook so the problem had to be with the iMac. A safe boot (holding shift) got me back to only a 1 Mbps connection on my admin account. I googled for more clues. Found a few useful looking web pages, but no definitive answer.

Along the way, I saw someone mention the commands to turn off the ethernet port and turn it back on again:

% sudo ifconfig en0 down

% sudo ifconfig en0 up

That seemed to help. Of course, I did a lot of fiddling so I can't be sure exactly what fixed the problem, but I thought I'd mention ifconfig here just in case someone else runs into a similar problem.

I feel lucky to be back to normal. Now, back to work.

Posted via email from miner49r

Saturday, June 9, 2012

InfoQ: The Design of Datomic

Rich Hickey discusses the design decisions made for Datomic, a database for JVM languages: what problems they were trying to solve with it, the solutions chosen, and their implementations.

Posted via email from fnclojure

Clojure Contrib

As of Clojure 1.3, the Clojure contrib libraries are organized in separate repositories.  Unfortunately, a lot of links point to the old monolithic structure.  Here's the correct link for the current Clojure Contrib:

Posted via email from fnclojure

Friday, June 8, 2012

You’re Not Special

> And then you too will discover the great and curious truth of the human experience is that selflessness is the best thing you can do for yourself. The sweetest joys of life, then, come only with the recognition that you’re not special.
>> Because everyone is.

Posted via email from miner49r

Monday, June 4, 2012

Every Black Hole Contains a New Universe

Our universe may exist inside a black hole. This may sound strange, but it could actually be the best explanation of how the universe began, and what we observe today. It's a theory that has been explored over the past few decades by a small group of physicists including myself. 

Posted via email from miner49r

Thursday, May 31, 2012

25 years of HyperCard — the missing link to the Web

"I missed the mark with HyperCard," Atkinson lamented. "I grew up in a box-centric culture at Apple. If I'd grown up in a network-centric culture, like Sun, HyperCard might have been the first Web browser. My blind spot at Apple prevented me from making HyperCard the first Web browser."

HyperCard may not have been the first Web client, but as the 25th anniversary of its release approaches, I think that it deserves a more prominent place in the history of the Internet.

Posted via email from miner49r

Wednesday, May 30, 2012

Happy 75th Anniversary to the Golden Gate Bridge


The Queen Mary 2 sails beneath the Golden Gate Bridge as it enters the harbor in San Francisco, on February 4, 2007. The ship, currently on an 81-day voyage around the world, is the largest vessel to ever sail into the San Francisco Bay. (Reuters/Robert Galbraith)

Posted via email from miner49r

Saturday, May 26, 2012

How many Apple IDs should your family have?

If your family owns multiple Apple devices and you have several different Apple IDs among you, it can become overwhelming or confusing or just plain maddening to figure out where your content is. It doesn’t have to be that way: To manage your media and app purchases more effectively, you may want to consider having a single family iTunes account.

Posted via email from miner49r

Saturday, May 19, 2012

Functional Relational Programming with Cascalog

Quick survey of Datalog, Cascalog and other Functional Relational ideas:

Posted via email from fnclojure

The story of the ‘secret’ room at Pixar, frequented by Steve Jobs and many other celebrities

It was a nook, really, created by the shape of the building around it and the needs of the air conditioning system when the company’s new headquarters were built. Animator Andrew Gordon discovered it while investigating a human-sized hatch in the back wall of his new office. After finding that the tunnel ended in a ‘lost space’, he decided to start decorating.

Posted via email from miner49r

Thursday, May 17, 2012

50 Years Ago: An inspiration for the iPhone?


Dr. John W. Mauchly, inventor of some of the original room-size electronic computers, poses in Washington, DC, on November 2, 1962 with one the size of a suitcase after addressing a meeting of the American Institute of Industrial Engineers. He now is working on a pocket variety which, he says, may eliminate the housewife's weekly shopping list and the chore of filling it by hand. He predicted everyone will be walking around with his own personalized computer within a decade. (AP Photo/Byron Rollins)

Posted via email from miner49r

Tuesday, May 15, 2012

Tuesday, May 8, 2012

Reducers - A Library and Model for Collection Processing

Rich Hickey writes about:

the beginnings of a new Clojure library for higher-order manipulation of collections, based upon reduce and fold.

Posted via email from fnclojure

Saturday, May 5, 2012

C2: Clojure(Script) data visualization

> C2 is a Clojure and ClojureScript data visualization library heavily inspired by Mike Bostock's Data Driven Documents.

Posted via email from fnclojure

Monday, April 16, 2012

Back To The Future with Datomic - Datablend

I will try to focus on the other innovation it introduces, namely its powerful data model (based upon the concept of Datoms) and its expressive query language (based upon the concept of Datalog). The remainder of this article will describe how to store facts and query them through Datalog expressions and rules.

Posted via email from fnclojure

All The Cheat Sheets An Up To Date Web Designer Needs: CSS3, HTML5 and jQuery

Thursday, April 5, 2012


Smalltalk-like namespace/class/var/function browser for clojure docs and source-code

Posted via email from fnclojure

Wednesday, April 4, 2012

Rich Hickey interview on Datomic

> Rich Hickey explains the ideas behind the Datomic database: why Datalog is used as the query language, the functional programming concepts at its core, the role of time in the DB and much more

video at the link

Posted via email from fnclojure

Monday, April 2, 2012

The power of Keynote [for web design]

I was very surprised to find out that designers were using Keynote for laying out presentations. My surprise turned to alarm when I found out that they were also using it as a design tool to build UI designs for websites and apps. It turns out that I was absolutely wrong. Keynote is an incredibly powerful design tool. 

Posted via email from miner49r

Thursday, March 22, 2012

Tuesday, March 20, 2012

Icon Fonts are Awesome

Some nice effects using icon fonts:

Posted via email from miner49r

Functional Programming For The Rest of Us

This is an old article from 2006 that was on the Hacker News list today.  It doesn't cover Clojure, but the ideas are applicable.

Posted via email from fnclojure

Sunday, March 18, 2012

Sunday, March 11, 2012

new Cisco Linksys Router E1200

My home network was having problems with dropping wireless connections and slow internet performance. I've been living for many years with an old Linksys BEFSR41 router and an old Airport Extreme base station ("Snow" flying saucer). I couldn't figure out what was wrong so I decided that my hardware was probably just getting too old and it was time to upgrade. After looking at the options, I decided to go with a basic Cisco Linksys E1200 wireless router for $50 from Best Buy. It's the low-end box with four 10/100 ethernet ports and wi-fi b/g/n support, but only in the 2.4 GHz band. Originally I had wanted gigabit ethernet and simultaneous dual-band wi-fi, but I couldn't justify paying more than double the price given that my Comcast internet is just 6 mbps. I figure it doesn't make sense to buy more than you need today because the hardware tends to get cheaper and better over time so I can just get a new one next year if I need something better.

My wife is the power shopper in the family so she handled the actual purchase. We bought the router on the Best Buy's website and used the in-store pickup option. The idea is that they'll have your order ready for you so you can get in and out quickly. Nice theory, but the line for customer service takes longer that the normal checkout queue. And when we got to the front of line, the trainee customer service rep couldn't find our order. She had to talk to the boss and eventually wondered off to find the router on the store shelves. So it took a lot of extra time trying to be fast. Lesson learned.

Setup didn't go exactly smoothly. It turns out the Cisco software won't run on the old iMac G5 (PPC) that I keep in the comm closet. That's OK, I'll copy the software to a newer Mac and try that. Now it runs, but at the end of the process it says that it couldn't set up the router. Like a good software developer, I run the process again and naturally get the same result. Why don't they just have a web interface? Well, they do of course, they just don't think that normal people want to see that. Nobody ever accused me of being normal so I manage to get into the web interface on (just like my old Linksys router), and get everything set up. Looks good to my old iMac G5. According to, I'm getting better performance than Comcast promised. Actually, Comcast promised "up to N" so strictly speaking they are in violation of their agreement by giving me more than the "up to" number, but I'm not complaining. (I hate those meaningless "up to" guarantees, but that's a rant for another day.)

For a few minutes, everything looked good, but then I had to test the wi-fi range. I used to keep the Airport station in a centrally located room assuming that would give me the best coverage. Now, the new router is also my wi-fi access point, so it's living in my comm closet, which is near the garage. The old MacBook did OK in the living room and dining room. But after more testing, internet performance gets horribly slow on the wi-fi connections. Same problem with my iPad. I updated the router firmware, reset the Mac's networking, etc. (I even tried the voodoo PRAM reset, CMD-OPT-P-R, to no avail.) I probably spent hours googling and experimenting before I finally decided to set the new router to G-only mode. That worked perfectly, everyone is happy on the hardwire and the wi-fi. My theory is that there's some incompatibilities among the N implementations (my MacBook might have only been "N-draft" when it came out). Maybe Cisco is perfect and Apple was wrong, but as a customer, I just want everything to work together. And to be fair, I was too cheap to buy the latest Airport from Apple.

I wanted that super-fast wi-fi N just because it's cool, but realistically I'm only getting 6 mbps from Comcast, so wi-fi G is plenty fast for me. And that MacBook is getting pretty old, I probably should be upgrading that soon...

Posted via email from miner49r

Saturday, March 10, 2012

Top 10 DTrace scripts for Mac OS X

Since version 10.5 “Leopard”, Mac OS X has had DTrace, a tool used for performance analysis and troubleshooting. It provides data for Apple’s Instruments tool, as well as a collection of command line tools that are implemented as DTrace scripts.

Posted via email from miner49r

Thursday, March 8, 2012

Clojure-Py announcement

> The Clojure-Py team is happy to announce the release of Clojure-Py 0.1.0.
>> Clojure-Py is an implementation of Clojure running atop the Python VM.
> As it currently stands, we have translated over 235 functions from
> clojure.core. This is not a clojure interpreter in python; the
> Clojure-Py compiler compiles clojure code directly to python code.
> Clojure-py functions are python functions. Clojure-py types are python
> types, Clojure-py name spaces are python modules.

Posted via email from fnclojure

How to beat the CAP theorem

Excellent article by Nathan Marz about rethinking data systems:

You can't avoid the CAP theorem, but you can isolate its complexity and prevent it from sabotaging your ability to reason about your systems. The complexity caused by the CAP theorem is a symptom of fundamental problems in how we approach building data systems. Two problems stand out in particular: the use of mutable state in databases and the use of incremental algorithms to update that state. It is the interaction between these problems and the CAP theorem that causes complexity.

In this post I'll show the design of a system that beats the CAP theorem by preventing the complexity it normally causes. But I won't stop there. The CAP theorem is a result about the degree to which data systems can be fault-tolerant to machine failure. Yet there's a form of fault-tolerance that's much more important than machine fault-tolerance: human fault-tolerance. If there's any certainty in software development, it's that developers aren't perfect and bugs will inevitably reach production. Our data systems must be resilient to buggy programs that write bad data, and the system I'm going to show is as human fault-tolerant as you can get.

This post is going to challenge your basic assumptions on how data systems should be built. But by breaking down our current ways of thinking and re-imagining how data systems should be built, what emerges is an architecture more elegant, scalable, and robust than you ever thought possible.

Posted via email from miner49r

Tuesday, March 6, 2012

fogus posts on Datomic

Rich Hickey, Stuart Halloway, and others at Relevance, Inc. have announced Datomic — a new kind of database.

See the videos at the above link.

The product website is:

Behind the scenes, Datomic uses DynamoDB (a NoSQL service from Amazon announced in January).  Here are some links:

Posted via email from fnclojure

Sunday, March 4, 2012

Hacker News mobile web app

Interesting article about building a web app for iOS.  Lots of helpful hints about how to get it to feel right:

Posted via email from miner49r

Monday, February 27, 2012

Connecting to your creation (in ClojureScript)

Very cool video demo of real-time editing of a game.  You can change the code on the fly and the game reacts immediately.  Plus, you can project forward in time, and see how those futures would change with code changes.  Chris Granger does some amazing stuff.

Also, the original talk by Bret Victor is worth watching.

Posted via email from fnclojure

Thursday, February 23, 2012


Like many other Clojure hackers, I sometimes think about what I would call my book about programming in Clojure.  The obvious names are taken: Programming Clojure and Clojure Programming.  The Joy of Clojure is a memorable name (and my favorite book so far, but it leaves out a few things and is already dated.)  And don't forget: Practical Clojure and Clojure in Action.

So I've mulled over a few ideas and finally settled on my favorite.  I hereby claim the title: Functional Clojure. I assume that a blog post is sufficient to keep anyone from stealing my idea.

How to Remove Your Google Search History Before Google's New Privacy Policy Takes Effect

 If you want to keep Google from combining your Web History with the data they have gathered about you in their other products, such as YouTube or Google Plus, you may want to remove all items from your Web History and stop your Web History from being recorded in the future.

Posted via email from miner49r

The Worst Tech Predictions of All Time

David Pogue writing for Scientific American:

My favorites:

 "The Americans have need of the telephone, but we do not. We have plenty of messenger boys."—Sir William Preece, chief engineer, British Post Office, 1876

 "I'd shut [Apple] down and give the money back to the shareholders."—Michael Dell, founder and CEO of Dell, Inc., 1997

Posted via email from miner49r

Wednesday, February 22, 2012

Atea task manager in Clojure

Atea is a minimalistic text file based menu bar time tracker for MacOS (get it here).

Posted via email from miner49r

Sunday, February 19, 2012


Programatic remote control of a web browser from your Clojure code.  This is especially useful for automating tests for a web app.

This library leverages the Selenium-WebDriver Java library to drive real GUI browsers like Firefox, Chrome, Safari and Internet Explorer, providing both a thin wrapper over the WebDriver API as well as higher-level Clojure functions to make interacting with the browser easier.

Posted via email from miner49r

Friday, February 17, 2012

Clojure's Governance and How It Got That Way

A nice bit of early history, and an explanation of how it affects today's Clojure community.

> One consensus that came out of the Clojure/dev meeting was that we need to get better at using our tools, particularly JIRA. We would like to streamline the processes of joining Clojure/dev, screening patches, and creating new contrib libraries. We also need better integration testing between Clojure and applications that use it. Application and library developers can help by running their test suites against pre-release versions of Clojure (alphas, betas, even SNAPSHOTs) and reporting problems early.

Posted via email from miner49r

Thursday, February 16, 2012

box-sizing: border-box

This gives you the box model you want. 

/* apply a natural box layout model to all elements */ * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }

Posted via email from miner49r

First Look: OS X Mountain Lion

Friday, February 3, 2012

Mobile HTML5 talk

Excellent talk from Strange Loop 2011:

> Scott Davis explains how to prepare a website for mobile devices from small tweaks -- smaller screen sizes, portrait/landscape -- to using HTML5’s local storage, application cache, and remote data.

Posted via email from miner49r

Wednesday, January 18, 2012

Down With Gravity's Juggling Revolution

Excellent juggling video by Stanford students:

Posted via email from miner49r

Tuesday, January 17, 2012

ClojureScript One

Video explaining the ClojureScript One demo app. See how ClojureScript works for making web apps, including a demonstration of a ClojureScript REPL for rapid development.

The website for ClojureScript One is here:

This is a great starter example that you can clone and customize for your own app.

Posted via email from miner49r

Tuesday, January 10, 2012

MacGap - Desktop WebKit wrapper for HTML/CSS/JS applications.

The MacGap project aims to provide HTML/JS/CSS developers an Xcode project for developing Native OSX Apps that run in OSX's WebView and take advantage of WebKit technologies. The project also exposes a basic JavaScript API for OS integration, such as display Growl notifications.

Posted via email from miner49r

Cut the Rope | Behind the Scenes

Microsoft’s Internet Explorer team partnered with ZeptoLab (the creators of the game) and the specialists at Pixel Lab to bring Cut the Rope to life in a browser. The end result is an authentic translation of the game for the web, showcasing some of the best that HTML5 has to offer: canvas-rendered graphics, browser-based audio and video, CSS3 styling and the personality of WOFF fonts.

You can play the HTML5 version of Cut the Rope at:

Objective-C to JavaScript

In bringing Cut the Rope to a new platform, we wanted to ensure we preserved the unique physics, motion, and personality of the experience. So early on we decided to approach this game as a “port” from the native iOS version (rather than a rewrite).

Posted via email from miner49r

Monday, January 9, 2012

Who Killed Prolog? « A Programmers Place

Excellent article written in 2010 by Maarten van Emden about the history of Prolog:

and a follow-up:

Lots of interesting comments, too.

The Clojure world seems to be rediscovering Logic Programming. Even if you don't end up falling in love with Prolog, it's worth knowing something about it. Datalog is a subset of Prolog. Erlang is influenced by Prolog.

Posted via email from miner49r

Friday, January 6, 2012

Enfocus for ClojureScript

> Enfocus is a dom manipulation library for ClojureScript. Originally
> inspired by Christophe Grand's clojure based Enlive, it has evolved
> into a cross browser tool for building rich UIs.
>> It supports all of the Enlive based transformations along with many
> more transformations geared towards managing live dom features, such
> as events and effects.
>> Demo Site:
>> GitHub:

Posted via email from miner49r

30 free programming eBooks -

deep-freeze for Clojure serialization

> Deep Freeze is a pure Clojure serializer that stresses performance and compactness. The aim of this project is to become the defacto standard for binary serialization of Clojure data. The interface for the library is extremely easy to use.

Posted via email from miner49r

Monday, January 2, 2012

Using JavaScript libraries in ClojureScript

ClojureScript is also fully capable of interoperation with libraries written in its own host language, JavaScript. Unfortunately, this capability isn't as well-known or frequently used, mostly because ClojureScript leverages the powerful Google Closure Compiler which adds extra complexity to the compilation process.

Posted via email from miner49r

impress.js presentation tool