Posts about Clojure
In a world where microservices abound and the need to move faster without compromising quality is high, how do you pick the right technology? In this post we will discuss Clojure - a modern Lisp for the JVM - and how its focus on functional programming and concurrency can help you achieve that goal.
core.async is powerful but can be long-winded. Macros are terse but hard to test. Metadata is informative but not well known. Let's see if we can combine all three to make something elegant.
In part 4 of this series we added the Bitbucket UI to our add-on. Although there's more tweaks we'll do in later installments, for now we have enough to do an initial test against Bitbucket. In this post we'll show how to do this running from our development machine, and how to build and run a standalone deployment image of our add-on.
In case you missed it, last year we launched our Bitbucket Docker Hub integration as part of the Docker Hub 2.0 launch. We are now pleased to announce the next version of this add-on is now available. If you already have it installed you'll get it automatically. If you haven't already installed it see below for instructions on adding it to your account. Carry on reading for more information on this release.
In part 3 of this series we added REST and JSON capabilities to our add-on. However most Atlassian Connect add-ons will want to add some user-interface elements to the Bitbucket repository too, usually by working with data from the repository. To get this data, the add-on will need to talk to Bitbucket directly. In this installment, we'll look at a couple of ways to do this, including how to authenticate using the handshake information we received in the previous blog post.
In part 2 of this series we built upon the foundations we created in part 1 to generate a Connect descriptor. That descriptor specifies, among other things, the API that Bitbucket should call on key events in our repository and add-on lifecycle. In this installment we're going to look at how to specify and serve this API, and how to convert JSON sent to us by Bitbucket into Clojure data-structures.
In part 1 of this series we did the fundamental work of building a Twelve Factor HTTP-stack from the ground using Leiningen, Ring, Compojure, and Immutant. However, that was just the foundations, and now we're ready to start adding the necessary tooling to produce a full Atlassian Connect for Bitbucket application. This will include templating and introduce how to specify and authenticate our Connect add-on via its descriptor.
One the most exciting things about the Atlassian Connect add-on framework, for me at least, is that it removes the need to create add-ons in the language of the hosting application. With the recent release of Bitbucket support for Connect we now have the ability to not-only extend Bitbucket in any way we see fit, but to also do it in whatever language or framework we desire. This opens us up to developing for Atlassian products in Haskell, Scala, Node.js, or anything else that supports the basic protocols of the web.
In case you missed it, last month we launched our Bitbucket Docker Hub integration as part of the Docker Hub 2.0 launch. We are now pleased to announce the next version of this add-on is now available. If you already have it installed you'll get it automatically. If you haven't already installed it see below for instructions on adding it to your account. Carry on reading for more information on this release.
As part of the Docker Hub 2.0 launch we're pleased to announce integration of Docker Hub into Atlassian Bitbucket. This brings your Docker workflow together with Bitbucket to save you time and allow you to see source code stats along side your Docker repo in one place.