Following my now dated "Reddit Clone" tutorial, I've made a revised version which demonstrates how easy it is to build interactive websites using Moustache, Enlive and ClojureQL.
After 2.5 years ClojureQL got shredded and rebuilt in less than 3 weeks, today Im releasing 1.0 public beta! In this post I'll show you the basics of how ClojureQL lets you compose your queries using powerful abstractions in a short screencast.
With almost 2.5 years in the making, ClojureQL has taken its time coming into maturity. Recently Ive taken some drastic measures and trimmed the scope in order to get to the elusive 1.0.
The Clojure community is one of the friendliest and most helpful communities around - Part of our charme comes from how whole heartedly we embrace new-comers and Uncle Bob is not going to be the exception. Normally I don't give out free consulting but for a fellow Clojurian, I'll make an exception so here's a lession in idiomatic Clojure for Uncle Bob.
So since everybody seems to be equally interested in Clojure and productivity (good!), I just wanted to share my notes on the black berry which helps speed me up.
This blogpost/screencast walks through some of the aspects involved with baking a website like Best In Class, looking at the source code and demoing the backend.
Im very eager to return to blogging about Clojure, but right now I have a loose productivity end which I need to take care of. In this post you will get a few producitivity tips as well as my configs for Emacs, Awesome and Wanderlust.
The week before last I had an opportunity to sit down with an impressive pack of developers. We were gathered to study Clojure in depth, but as the days passed many other interesting topics were covered. In this short post I'll recount some of the lessons and also share a productivity booster.
Spring cleaning is complete and the driving code behind bestinclass.dk is now being released as opensource. With it you can generate a static site, import a wordpress blog, emit feeds (atom) and much much more.
Best In Class has just been overhauled. From a slowly cooked PHP/Wordpress solution, to the hip blazing 250% faster Clojure driven version. In this post I'll outline the major strategies used in this rewrite.
This is the small tale of a turtle living on the bleeding edge. I'm not the first guy to talk about Protocols in Clojure, but I certainly wont be the last either, here we go...
Earlier today a blog post came up which was written by the Head of Development at a certain German company. He reviewed some meaningful similarities between Clojure and Scala, then finally concluded that the differences were actually only relating to syntax. This is exciting, so lets have a look!
I have personally built and deployed Clojure applications within the Health Care industry, the Energy Sector and latest within Finance and while Clojure has been received with much enthusiasm, I just dont think it's right that I should have all the fun.
Yes you read that right. Did you think Fluid Dynamic sims were reserved for the C++ crowd? In this blogpost I'll take a stab at this CPU intensive exercise wielding both Criterium, JVisualVM Profiler and a former Epic Games Engine developer and show how Functional Fluid Dynamic simulations are very possible using Clojure.
This post serves as an overview for the available IDEs for Clojure development at present. I won't go into incredible detail with all of the editors, but I hope to touch on every one. So whether you like Emacs, Vim, Eclipse, IntelliJ or Netbeans there should be something here for you who's thinking about Clojure.
Time is scarce these days - and with no prospect of any extraordinary reduction in the number of tasks I need to work on my level of productivity. Here are some thoughts on getting more out of Emacs.
Several times on this blog, I've dealt with issues where some kind of benchmarking was required. The method, implementation, environment all play a role and has subsequently been the object of much discussion. In this post let's see if we can agree on some way of benchmarking.
Last night I did very small superficial comparison, of 3 ways of getting the first fibonnaci number consisting of 1000 digits. This attracted a lot of attention from Rubists, Haskaloonies and Clojurians alike, here I'll share their contributions.
These days Microsoft is often being hammered in both the news and in Open Source communities across the globe, so on behalf of the Clojure community I would like to submit a small tribute to the man at the wheel, Steve Ballmer.
About 1 week ago I wrote a small Reddit Clone in about 90 lines of Clojure. The amount interest and feedback was unexpectedly high so I've decided to extend the example to a whopping 160 lines as well as echo some of the chatter.
Today I had a lot of fun reading about a for-constructs on steroids. The author of that post explores the possibilities which come with the built-in pattern matching in Scalas for-construct, so I'll do the same with Clojure.
Recently I had the good pleasure of reading this blog post, which demonstrates how to build a Reddit Clone in 100 lines of Common Lisp. I thought it might be interesting to see a port to Clojure, contrasting a couple of idioms and core functions of both languages.
Nobody who's connected to the rest of the world, either via TV or the Internet is unaware of Global Warming - This phenomenon which threatens to destroy us all if we don't collectively assume responsibility for the globe. Here's my contribution to a solution in 98 lines of heavy computational Clojure!
With Hadoop installed on our lean mean Arch machine, we're ready to fire up the first computations. Hadoop opens a world of fun with the promise of some heavy lifting and in order to feed the beast I've written a Reddit-scraper in just 30 lines of Clojure.
Since we've had so much fun with multiple cores running at once, how about upping the game to play with multiple servers? Hadoop is a framework for distributed computing, which lets us process jobs on multiple servers at once giving more power *grunt*. In this first post I'll run through how to set up your first Hadoop server running in a VirtualBox using Arch.
Last night I published a screencast and in response to a comment I uploaded the htmlized source-code used in the screencast. The highlighting wasn't working for me, so I put Emacs and Enlive to work!
The software we write constantly increases in complexity as more and more is demanded of our software. For most of us, we are no longer chasing down memory leaks, but with the arrival of multi-core systems comes a new set of challenges.
Pull up a chair and watch as I install Swank, SLIME and Clojure on a clean Ubuntu. After my last screencast I received several comments, where people really wanted to get started developing with Clojure but did not know how. This post aims to resolve that problem.
Ever heard the expression 'you cant talk yourself out of this one?', well can I screencast my way out of it? I've compiled a little 12 minute screencast where I demonstrate some interactive webdevelopment while showing off Emacs.
A while ago Paul Graham released his own Lisp implementation called Arc. It was not exact well received, so Paul Graham responded to some of the criticism on his blog and even proposed a challenge, which served to demonstrate the power of Arc - Challenge accepted.
I visisted Rosetta Code in my comparison between Clojure and Python and now I've decided to go back. There are many tasks which are not yet implemented in Clojure, so what are we going to do about that? Here you'll see 2 very easy solutions and 2 that are a little more complicated.
Recently I had the good pleasure of reading a blogpost which demonstrated a fun exercise in both Ruby and Scala, namely scraping newsgroups. I had a look at both solutions and decided to roll one in Clojure as well, examining the differences between the famous Ruby, the Juggernaut Scala and the elegant Clojure.
ClojureQL is now coming dangerously close to version 1.0. Despite its young age, its already been adopted several interesting places, among others in the Danish Health Care industry. Before we ship version 1.0, I want to walk through some of the features and design decisions as well as encourage comments, criticisms and patches.
(logo: SQL in parenthesis)
With the Manifesto firmly established lets then turn our attention to the mental aspects involved. The ability to write beautiful code requires more than just understanding the components and qualities thereof. Lets go down through the corridors of thought, comparing ourselves to the code we produce.
In times past much has been said about beautiful code. Covering the topics of quality, correctness and expressiveness - more needs to be said. Opinions differ, so how can we judge what quality is and is not? I'll try to outline some indicators which help pinpoint where on the spectrum your code lies and how to write beautiful code.
Brians Brain has been served in two versions on my blog, the traditional heavy functional variant and the hip blazing transient. These have both been scrutinized, torn apart and rebuilt, copied and commented on across the internet. In this post I'll comment on a few of the discussions.
In my last post I tried to outline some of the contrasts between the popular Python and Clojure. A repeated comment from the Python community was 'Why dont you let the code speak for itself, go to Rosetta'....So I did and this is what I found.
This is an interesting time to review programming languages! On the one hand I see a general tendency that companies and individuals are leaving the old (un)safe paths and are embracing 'newer' technologies and on the other we see some of these new-comers now moving into maturity. Python has been with us since the late 1980's and this articles take a peek at how Python has handled stepping into the new millennium.
In this post I'll show you how to make a beautiful Swing application with all the Mac-trimmings, a functional webscraper which gracefully overlooks malformed html and finally how to have some exploratory fun with Clojure, REPL style!
The sequel to 'Brians functional brain'! I'll take you through a rewrite of the functional Brian's Brain simulator where I employ transients to thoroughly optimize our computational model and type-hints/double buffering to bring render times down! By adding 10 lines we more than double performance! Please don't read this, before having read the preceding post.
If you've always wanted to implement a purely functional 2D rendered cellular automaton which runs in parallel on all your cores, this post is for you! I'll walk you through how to render a 2d model of Brians brain in just 67 lines of Clojure.
In my last post I set out to solve a classic concurrency problem called 'The sleeping barber' and contrasted an STM solution with an Actor based solution. It occurred to me afterwards, that the interest in concurrency is quite huge these days (and for good reason), so I've decided to walk through the deadlock/livelock/starvation trap called The dining philosophers.
Just kidding! My last post sparked overwhelming interest from various online programming communities, some healthy debates (thankfully) and even convinced me to join the fun.
First off I know that the guys behind the O'Reilley book on Scala will correct the example for the next revision of the book Programming Scala and the interesting part is that I know they're looking at one of the methods described in the comments here on my blog as their guideline - Go commentators!
The time for ignoring concurrency has almost passed. If you read my last post you'll know that I'm looking at Scala Vs Clojure and a big part of both of these languages is their support for concurrency. Scala uses an Erlang inspired actor model, which is a distributed approach to concurrency. Clojure on the other hand leans on it's STM, a non-distributed approach - Lets put them in the ring together!
Of the new languages that are emerging these days, no two are as interesting as Scala and Clojure. Both claim to be functional and geared for concurrency, one is a Lisp the other a Curly braces language. On paper, they stack fairly well against each other, so let's investigate how well they are suited for business.
Today we have many interesting ways to approach webdevelopment. I've heard people say "I love PHP because its so productive, I get tons of code hammered down in a matter of hours" - And while thats a nice experience for new programmers it can tend to slur the facts a little bit. Let me try to contrast Clojures (+ Compojures + ClojureQLs) properties with PHPs.
All use of resources for the sole purpose of pleasing an unforgiving and inflexible compiler and/or ritual