The fresh and new issue of Software Developer’s Journal out now!
Software Developer’s Journal presents an issue dedicated to Clojure!
A Whirlwind Tour of Datomic Query
by Stuart Halloway
Datomic is a database of flexible, time-based facts, called datoms. Datomic supports queries and joins, with elastic scalability, and ACID transactions. Datomic can leverage highly-available, distributed storage services, and puts declarative power into the hands of application developers. In this article, I will focus on Datomic’s query abilities.
The Root of Polymorphism: The Anti-If Campaign
by Dominikus Herzberg
Clojure supports multimethods – a form of polymorphism that is often hard to get for programmers trained in traditional object-orientation. If you restrict yourself from the use of if forms, you will end up using maps instead. Multimethods are a natural consequence of this approach.
Software Transaction Memory in Clojure
by Stefan Kamphausen
In today’s software industry creation of robust and scalable programs that make efficient use of the current generation of multi-core architectures is one of the main challenges. The predominant technology currently is locking which seems easy at first, but becomes increasingly hard to handle when the program becomes more complex. Dead-locks, live-locks, nested locks, and locks in conjunction with Exceptions lead to frustration with the developers. Software Transactional Memory is one tool to help managing access to shared resources. The idea of transactions is not new: they are a common technology in the realm of databases and in the 1980s have seen some research on transactions on memory.
Dissecting Reducers in Clojure 1.5
by Renzo Borgatti
Reducers are one of the many new features introduced by Clojure 1.5 (still release candidate at the time of this writing). Reducers are just one side of the functionality, the other being the function “fold” and the “foldable” protocol. In this article I’d like to introduce Reducers starting from the problem of designing code that runs in parallel over multiple cores. We’ll work our way backward to show the advantages of using Reducers in that context instead of plain old “map” functions.
Macros in Practice
by Kyle Kingsbury
I argue that defining new syntax should be a language feature: one of Lisp’s strengths is that its syntax is both highly regular but also semantically fluid. Variable definition, iteration, concurrency, and even evaluation rules themselves can be defined as libraries—in a controlled, predictable way. In this article, I’d like to give some pragmatic examples as to why I think this way.
DSL as a value
by Meikel Brandmeyer
DSLs are everywhere. Clojure with its homoiconicity lends itself as an implementation language for internal DSLs. We will explore a modern way of writing DSLs in a Lisp-like language.
Constructing a complete RESTful web service using Liberator.
by Malcolm Sparks
The past few years have seen the arrival of the much heralded ‘programmable web’. While the early web consisted of humans using the Web via their browsers, the commercial viability of ‘cloud’ services together with the growth in smart-phone and tablet apps have placed increasing importance on making services available, behind the scenes, to programs. Today, developers have a myriad of APIs available to them via the Internet – such as persistent storage and backup, e-mail messaging, notifications, analytics, SMS, financial payments, social media integration, authentication and more. Adopting these services can be extremely cost-effective when compared to the equivalent development costs when building this same functionality inside the application.
Bulding a complete CMS using Clojure – introducing Vix
by Filip de Waard
This article introduces Vix and will explain how to use it to run a custom website. Going through the internals of the software will also provide a perspective on Clojure web development in general. As the developer of Vix, this is also my personal story about the development process and the lessons I learned while working on the software. I was relatively new to Clojure and functional programming when I started working on Vix two years ago. Hopefully others will benefit from reading about the mistakes I made while going through the learning curve.
Why Clojure? An Interview with Justin Gehtland, CEO of Relevance
by Alex Warr
What is the strongest business case for Clojure? What innovation or competitive advantage does Clojure offer it’s early adopters? What about a business owner contemplating using Clojure or one of the existing Clojure-based products on the market? Is the technology “ready” for the enterprise? Find answers to those questions and more in an interview with Justin Gehtland.
Tagged with: ACID transactions • Bulding CMS • Clojure • Clojure 1.5 • CMS • Datomic Query • DSL • Justin Gehtland • Liberator • Lisp • Lisp-like language • Macros • Polymorphism • Reducers • Relevance • RESTful • Software Transaction Memory • The Anti-If Campaign • Whirlwind
Comments are closed.