<?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-7837079861862854343</id><updated>2011-07-08T06:23:42.155-07:00</updated><category term='fragile'/><category term='mlvm'/><category term='dynamic typing'/><category term='tail calls'/><category term='market share'/><category term='jobs'/><category term='introduction.clojure'/><category term='healthcare'/><category term='trend'/><category term='growth'/><category term='jvm'/><category term='boolean'/><category term='industry'/><category term='openjdk'/><title type='text'>Clojure News</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7837079861862854343.post-8561803040700969454</id><published>2011-02-09T10:49:00.000-08:00</published><updated>2011-02-09T13:28:38.120-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='trend'/><category scheme='http://www.blogger.com/atom/ns#' term='growth'/><category scheme='http://www.blogger.com/atom/ns#' term='market share'/><title type='text'>Clojure enters the UK job market</title><content type='html'>&lt;p&gt;According to the &lt;a href="http://www.itjobswatch.co.uk/jobs/uk/clojure.do"&gt;IT Jobs Watch website&lt;/a&gt;, the relatively new Clojure programming language has blasted onto the UK job market scene going from a single job advert a year ago to nine job adverts mentioning Clojure today, continuing to show healthy growth not only in the absolute number of jobs but also in market share (0.015% of all job ads mention Clojure). Remarkably, the most common salary for Clojure jobs is £90,000!&lt;/p&gt;&lt;p&gt;Perhaps Clojure can follow F#'s lead, which recently &lt;a href="http://fsharpnews.blogspot.com/2011/02/f-share-of-uk-job-market-triples-in.html"&gt;tripled its share of the job market in just four months&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7837079861862854343-8561803040700969454?l=clojurenews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/8561803040700969454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clojurenews.blogspot.com/2011/02/clojure-enters-uk-job-market.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/8561803040700969454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/8561803040700969454'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/2011/02/clojure-enters-uk-job-market.html' title='Clojure enters the UK job market'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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-7837079861862854343.post-6094916086188724763</id><published>2010-08-02T15:51:00.000-07:00</published><updated>2010-08-02T15:55:25.548-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='industry'/><category scheme='http://www.blogger.com/atom/ns#' term='healthcare'/><title type='text'>Clojure in Healthcare</title><content type='html'>&lt;p&gt;A software developer in a healthcare company recently wrote the following &lt;a href="http://www.reddit.com/r/programming/comments/cw6ct/why_haskell_isnt_popular_in_the_industry_9_reasons/c0vt1nw"&gt;description&lt;/a&gt; of their use of Clojure from their background with Java:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;It's really easy to integrate into existing infrastructure in a Java shop. You can package libraries in it as jars that can be used from java code, you can build it with the same tools, such as ant and maven, and Eclipse support for it is quite good. Clojure applications can be deployed on app servers like Websphere or Tomcat, so in that regard it hasn't really required any changes to the way we already do things.&lt;/p&gt;&lt;p&gt;As a language it definitely allows for writing much shorter code, and it's easier to unit test, as it encourages writing small functions, the expressiveness of the language has been rather welcome, and the concurrency support in it makes life much easier for us. Overall we find it to be a very solid alternative to using Java for web applications.&lt;/p&gt;&lt;p&gt;The only negative so far has been the syntax, most people are not familiar with Lisp, and not everybody can pick it up easily. So, that certainly presents a problem for some people, but we've got a critical mass of developers interested in it to do a pilot project. So far the project has been going well and it is helping illustrate the benefits of using the language.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Even though we do not use Clojure, we have also noticed an increasing number of people referring to the Clojure language and that can only mean one thing!&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7837079861862854343-6094916086188724763?l=clojurenews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/6094916086188724763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clojurenews.blogspot.com/2010/08/clojure-in-healthcare.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/6094916086188724763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/6094916086188724763'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/2010/08/clojure-in-healthcare.html' title='Clojure in Healthcare'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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-7837079861862854343.post-1210011413893076312</id><published>2009-07-16T22:13:00.000-07:00</published><updated>2009-07-16T22:24:16.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boolean'/><category scheme='http://www.blogger.com/atom/ns#' term='fragile'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic typing'/><title type='text'>Fragile predicates with Java's booleans</title><content type='html'>&lt;p&gt;Interoperability with the JVM is a wonderful thing but it can be the root of some surprises. The following seemingly innocuous Clojure snippet produces a surprising result:&lt;/p&gt;&lt;pre&gt;user=&gt; (if (Boolean. false) "true" "false")&lt;/pre&gt;&lt;pre&gt;"true"&lt;/pre&gt;&lt;p&gt;Specifically, we used a predicate that appears to be false but the true branch of the if expression was taken. This occurs because Clojure uses a boxed representation of booleans that is incompatible with Java's. Combined with Clojures dynamic typing, this causes Java's &lt;span style="font-family:courier new;"&gt;false&lt;/span&gt; to be interpreted as not Clojures &lt;span style="font-family:courier new;"&gt;false&lt;/span&gt; and, therefore, &lt;span style="font-family:courier new;"&gt;true&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;The solution is to box Java booleans in order to obtain a Clojure boolean:&lt;/p&gt;&lt;pre&gt;user=&gt; (if (boolean (Boolean. false)) "true" "false")&lt;/pre&gt;&lt;pre&gt;"false"&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7837079861862854343-1210011413893076312?l=clojurenews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/1210011413893076312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clojurenews.blogspot.com/2009/07/fragile-predicates-with-javas-booleans.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/1210011413893076312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/1210011413893076312'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/2009/07/fragile-predicates-with-javas-booleans.html' title='Fragile predicates with Java&apos;s booleans'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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-7837079861862854343.post-1685422762247338964</id><published>2009-02-08T04:00:00.000-08:00</published><updated>2009-02-08T05:16:48.640-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tail calls'/><category scheme='http://www.blogger.com/atom/ns#' term='mlvm'/><category scheme='http://www.blogger.com/atom/ns#' term='openjdk'/><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>Tail calls on the JVM: work in progress</title><content type='html'>&lt;p&gt;The terms &lt;span style="font-style: italic;"&gt;proper tail recursion&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;tail call elimination&lt;/span&gt; are used to describe the ability for a computation to flow through an arbitrary number of functions via tail calls in a bounded amount of stack space. Consequently, correct implementation of tail call elimination has been regarded as an essential feature for functional programming languages for over two decades. Without it, many functional idioms are prone to causing  stack overflows.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Microsoft's .NET platform is built upon a Common Language Run-time (CLR) that was designed to support a wide variety of programming languages including functional languages and, consequently, the CLR has had tail call elimination for the best part of a decade. There are already &lt;a href="http://fsharpnews.blogspot.com/2009/01/another-commercial-product-written.html"&gt;several commercial products&lt;/a&gt; that depend upon the correct handling of tail calls in the CLR.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Although the JVM has many advantages and is the VM of choice for millions of developers, the lack of support for tail call elimination on the JVM has seriously impeded the development and uptake of functional languages like &lt;a href="http://scalanews.blogspot.com/"&gt;Scala&lt;/a&gt; and &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt; and that has, in turn, greatly reduced the diversity of tools and solutions available on the JVM.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Sun have been &lt;a href="http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm"&gt;making noises&lt;/a&gt; about implementing tail call elimination in the HotSpot virtual machine for years but there had been no visible signs of progress until &lt;a href="http://mail.openjdk.java.net/pipermail/mlvm-dev/2009-January/000331.html"&gt;Arnold Schwaighofer's announcement&lt;/a&gt; on the OpenJDK mailing list a few weeks ago stating that he had successfully implemented tail call elimination on the JVM.&lt;/p&gt;&lt;p&gt;This is very exciting news and represents the single most important step the JVM has ever made toward being a genuine common language run-time. If support for tail call elimination makes it into the JVM then both existing and new functional languages (such as &lt;a href="http://ocamljava.x9c.fr/"&gt;OCamlJava&lt;/a&gt;) will no doubt see vastly more interest as they will be infinitely more suitable for writing production quality code.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7837079861862854343-1685422762247338964?l=clojurenews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/1685422762247338964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clojurenews.blogspot.com/2009/02/tail-calls-on-jvm-work-in-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/1685422762247338964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/1685422762247338964'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/2009/02/tail-calls-on-jvm-work-in-progress.html' title='Tail calls on the JVM: work in progress'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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-7837079861862854343.post-8130845060673821359</id><published>2009-01-30T19:58:00.001-08:00</published><updated>2009-01-30T20:07:22.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='introduction.clojure'/><title type='text'>Welcome to Clojure News</title><content type='html'>&lt;p&gt;Welcome to our new functional programming news blog specifically for the Clojure programming language. Clojure is a dynamic programming language derived from Lisp that targets the JVM. In particular, Clojure takes core features of Lisp such as macros and functional programming and adds extensive state-of-the-art support for parallel and concurrent programming, building upon the JVM's world leading performance.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7837079861862854343-8130845060673821359?l=clojurenews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clojurenews.blogspot.com/feeds/8130845060673821359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clojurenews.blogspot.com/2009/01/welcome-to-clojure-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/8130845060673821359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7837079861862854343/posts/default/8130845060673821359'/><link rel='alternate' type='text/html' href='http://clojurenews.blogspot.com/2009/01/welcome-to-clojure-news.html' title='Welcome to Clojure News'/><author><name>Flying Frog Consultancy Ltd.</name><uri>http://www.blogger.com/profile/11059316496121100950</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></feed>
