Coding is fun, its also great if you make some profit!
UK developers lead by community expert Alan Parkinson recently formedHindsight Software, a start-up focused on bringing Behaviour Driven Development (BDD) to as wide an audience as possible. With their first product Behave for JIRA, they entered into the Atlassian Codegeist competition judged by Atlassian’s CEO Mike Cannon-Brookes. They scored a big win against a record number of entries in the annual competition.
Hindsight is a start-up company focused on building intelligent testing software that supports agile practices such as acceptance testing. Using the Atlassian Marketplace to enable rapid development of their first tool, Behave for JIRA, they had a platform to quickly deliverer a valuable product to a large number of software teams around the world.
Atlassian competitions such as Codegeist showed Hindsight how easy it was to get started with plug-in development with JIRA and inspired the team to secure funding for their own product development.
Hindsight is passionate about software quality and is in the business of providing tools to help everyone in the software development team focus on quality of the delivered product.
Their first product, Behave for JIRA, brings acceptance testing to the wealth of Atlassian customers around the world and at a lower cost of entry into the market. If successful the company will look to extend this service to the cloud. In the mean time the Atlassian market place allows Hindsight to validate that their innovative solutions are valuable to the market before they make a major infrastructure investment
Behave for JIRA – bringing Acceptance Testing to all your projects
Acceptance tests allow you to express specific needs for your software product in a way that is testable and measurable. It is also invaluable for breaking down the barriers in software development.
Behave for JIRA allows you to easily add acceptance tests to any issue in your projects. Acceptance tests are written in a natural language, eg. English, but in a structured way so that those needs can be matched up to the software that is created to satisfy them. In Behaviour Driven Development an example acceptance test would be:
Given _a specific situation
When _something occurs
Then _you will get a specific outcome
The most commonly used acceptance testing framework is called Cucumber and supports many different software programming languages. Once you have defined you acceptance criteria with JIRA Behave, you can then run those tests with Cucumber to get instant feedback on you software development progress.
As this is a plug-in for JIRA, you can easily make use of all the data your projects and have a simple to use and powerful way to edit and review your test specifications. This includes syntax highlighting editor for quick authoring of requirements & acceptance tests.
Developing products using Atlassian tools
As Hindsight have stakeholders with a vested interest in the success of the company, they make use of the Atlassian tool-set to ensure everyone is up to date with the progress of the software development. Any non-technical people involved in the company can see the sprint burn-down charts and understand the status. It is easy to see what is planned and what the development team have committed to and hold the team to account if they don’t meet the targets they set for themselves.
For the developers, using GreenHopper it was easy to see if things were going to over-run and a decision could be made quickly about re-prioritising the work. As this all fed into a JIRA dashboard for the stakeholders, communication about progress was updated in real time. When two new graduates were on-boarded, it took just two sprints to adjust their capability using GreenHopper to track and review progress.
The development team uses a Scrum-like approach, base on a two week iteration. Using JIRA GreenHopper scrum template made set-up of the project as simple as defining a project name and pressing a few buttons. The team have also used the rapid board to manage their individual responsibilities so they can quickly priorities the features inside the sprint.
Hipchat provides an instant way for the team to to discuss challenges, especially when they are apart. As Hipchat is also plugged into JIRA and their overall build process, any significant changes in the project get broadcast on the Hindsight Hipchat channel. This immediate feedback from build servers, allows the team to quickly fix problems as they happen.
3 most valuable practices
1) Visibility to the business – stakeholders can see our commitments and easily hold us accountable
2) Distributed working is often a necessity and so having our up to date progress accessible anywhere there is an Internet connection is invaluable. Using Distributed Version control also means we can work off line
3) In constant communication using Hipchat which also enables the team to see JIRA notifications on bug reports, issues re-opened tickets and other major events.
Head over to Atlassian to find out about their range of software for software developers and dont forget to checkout the Codegeist competition (ends 16th July 2012). Thank you. @jr0cket
Some conferences are huge, some are very social, some are highly technical. DesignIt, BuildIt was the most creative and moving of experiences I’ve had in a long while. It has really inspired me to add so much more creativity to my coding projects.
There were some amazing speakers at this years DiBi, split into Developer and Design tracks. I took the opportunity to delve into the design track and learnt so much more than I can capture in one blog. So here is the first highlight from what I felt were the most passionate speakers.
With these kinds of tools at hand, there is no reason designers and coders shouldn’t code their own creative works. Althought there is still a big gap between these two disciplines, even at the DiBi conference there was The valley of incomprehension, with most people defining themselves as either designers or developers. Seb encourages us all to be a bit more of a creative coder!
coder + designer == creative coder
Most coders get into it because they want to play games they create. Its much easier to create games than you think. When you get designers and coders working together it improves the communication and helps share skills. Designers discover much more when they learn to code. More importantly, working together helps share ideas; if designers and coders work together they can implement ideas in the easiest possible way.
Developers find the creative process hard, as many are too used to thinking literally. The more developers are part of the creative process, the more appreciation they will gain for it.
Developers should take the time to play with visuals more, start with small ideas and playing with tutorials to learn how to draw with code. By looking at the examples at communities like OpenProcessing it will help inspire coding towards more creative goals and help give software an experience that people have real affinity for.
In the next blog about DiBi12 I’ll cover Dan Ruben (Moo) and Cameron Moll. Both inspired in very different ways.
My favourite talk was definitely the “Cloud… so much more than a tool“ by Patrick Debois. Not only was it an interesting experience report on the realities of using Cloudy technology to build a highly scalable video broadcasting service, it was also the best use of LolCats I have ever seen… ever…
Dan North was a cheeky a rascal as ever, actually making the audience think! At a conference! Oh, the humanity! Colin Humphrey from UK Atlassian partner Carrenza gave an overview of the fantastic build pipeline they create for their customers, along with insight into the business drivers of using such a build pipeline with respect to IaaS, PaaS and SaaS solutions.
I had the pleasure of listening to Ade Oshineye sharing his experiences when developing Google Buzz & Google plus and how understanding how someone is going to use your code is very important when developing a public API, you cant just expect them to know everything you know.
Atlassian also realised the importance of the developer experience as it helps engage with the wider community of developers as well as our own teams, enabling them to start developing amazing plug-ins quickly. The last year has seen some real usability improvements to the Atlassian SDK and our Atlassian Developers website and with JIRA 5.0 we have a stable API that is guaranteed future proof for all future 5.x versions.
Everyone had great fun at the Atlassian party on the Wednesday night and very large Cenral Hall building was bursting at the seams.
Organising the Atlassian party was a nice little challenge as the hall was massive and I had very welcome help from our UK partners: Gareth Wilson (Adaptavist) and Matthew Buckland (Clearvision).
There was a great spread of food, although we did tease people a little by it coming out in stages! There was also a great selection of beers, not just bottled larger. There was everything from Newcastle Brown, John Smiths, Spitfire, a nice range of largers and even some wine at the request of Trisha Gee.
Distributed version control systems such as Git, Mercurial and Bazaar have grown in adoption over the last few years, mainly by the desire of the technical communities to share code in services such as GitHub and Bitbucket. This growing familiarity with DVCS has been seeping into the Enterprise and development teams in organisations large and small are starting to adopt these tools.
The coldest night in London of 2012 so far was the warm up to a symphony of music by a collection of unstoppable Clojure hackers. As it was my first hackday with Overtone there was lots of new things to learn, from setting up the environment to a whole load of interesting music theory.
I cant really cant do justice to how much fun it is working with Overtone. Its like getting your hands on a Stylophone for the first time, just after seeing Rolf Haris demo it on TV! The only difference being you can make much better music with Overtone.
There is something just so ultimately geeky and fun in creating music using a functional programming language like Clojure.
I first tried Overtone at a London Clojurian coding dojo and with the help of the rest of the team we were quickly creating weird and wonderful sounds - although not quite in the same leaguge of
Thanks to some great documentation on the overtone github site it was pretty easy to set up my lubuntu laptop with an audio server, Overtone server and a nice lightweight clojure development environment (emacs, leiningen). I am afraid it will take me a bit longer to absorb music theory!
Setting up the audio for Overtone
In order to get sounds out of your overtone project on Linux, you need to add a few packages.
sudo apt-get install jack-tools ant openjdk-6-jdk fftw3 qjackctl
As you grow your overtone project you may want to switch to a linux kernel set up for real time processing, but to start with this is not necessary. If you do get more involved projects, its probably a good idea to also look at Ubuntu studio which provides a great selection of audio, video and graphics tools.
_Mac OSX already has a suitable sound server, so nothing extra is required. If you are using windows, overtone is supported also (not sure if you need to set anything up though).
Create a new overtone project
An overtone project is just like any other clojure project, with the overtone dependency added.
Create a new clojure project with your build management tool of choice: maven, cake or leiningen. I used leiningen as my tool of choice.
lein new tutorial
Add the Overtone dependencies to the project configuration file tutorial/project.clj
(defproject tutorial "1.0"
:dependencies [[org.clojure/clojure "1.3.0"]
With the overtone dependencies added to the project file, used leiningen to download the jars that make up overtone itself.
Leiningen will download about 16 jar files for overtone 0.6.0 and places them in the project lib folder. This gives you all the libraries you need to start creating things in overtone, including an appropriate version of clojure.
Fire up your environment
Emacs not only has great support for the Clojure language, its a great way to try out your code by evaluating individual functions (s-expressions).
My preferred way to launch emacs is to change directory to the project top level and fire off emacs with the project file
emacs project.clj &
Using the dynamic environment of Clojure, the REPL, is a great time saver for trying out functions as well as running your project code. To fire up a repl inside emacs I use the new emacs 24 approach, running Meta-x (clojure-jack-in) to start up and connect to a repl using the underlying lein project file.
I have set up a keyboard shortcut of C-c C-j to make this even easier.
For my initial experiments I run an overtone server on my laptop, that way I can also play on the train home. You can also use an external overtone server called the SuperCollider (no not the LHC)
In the repl, I fired up the internal server (dont try to fire off both servers in the same repl, it crashed my repl)
in the REPL
/ __ /_ _____ _____/ /_____ ____ ___
/ / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
/ /_/ /| |/ / __/ / / /_/ /_/ / / / / __/
\____/ |___/\___/_/ \__/\____/_/ /_/\___/
Programmable Music. v0.6
Hello jr0cket, may this be the start of a beautiful music hacking session...
# Defining my first instrument
I soon discovered that it does take a little time to build your instruments. Its like any good programming challenge, there are many ways to do things and there are always lots of surprises. Reading the [getting started guide](https://github.com/overtone/overtone/wiki/Getting-Started) helped me with my first instrument.
(definst annoying-tone  (saw 220))
This is a simple and rather annoying tone that uses the saw function to create the sound. To play the sound I simply call its name:
The easiest way to end your experiment in sound quickly is to use the (stop) function.
Quickly testing out your instruments with emacs
Many cool things were done at the hack day and it was great fun to play with the Ableon Novation Lauchpad. Its a midi controller that can be used to help you play your instruments and make it easier to turn overtone into a song maker.
I got as far as creating a few basic instruments and borrowing a few others, such as the one to create Jingle Bells!
Thanks to Phil Potter for having the energy to organise this event, Thoughtworks for supporting us with the venue and everyone there for making it a great day.
To have a whole day focused on overtone really helped me accomplish something and its going to be easier now to keep the learning going. All my experiments are now uploaded to my github account.
Hope you find the time to make music with Clojure and Overtone, you will love it.
It a little soon to be choosing my favouite event of 2012 but MonkiGras London is going to be a hard act to follow.
Monkigras London had such a diverse range of topics, a great line up of speakers, great party games and a host who had so much passion and enthusiasm share. It certainly was the most thrilling of conferences to experience. Here are the parts that stood out the most.
Thousands of developers flocked to Devoxx again this year and everyone I talked to really enjoyed the wide range of talk and the comfy chairs in the venue.
Its hard to do justice to the experience in a blog post, so here are highlights of my favourite Devoxx speakers
Dick Wall and the Java Posse
Have these guys reached legendary status yet? For a number of reasons I think they should - just for being out there and getting people motivated they deserve a medal (or just lots of free beer from Atlassian).
Dick Wall followed up with what seemed to be top attended session of the conference. He talked about slaying legends (ironic considering my last statement) and encouraging people to think for themselves - I know, radical stuff!
The diabolical developer also made an appearance with Trisha Gee and the Java Duchess crew speaking on how not to treat women in IT.
Alex did a great job druming up even more interest in Clojure and gave some facinting insights into the language. His first talk was aimed at getting people started with Clojure and I was great to see different ways of getting Clojure concepts across. I am doing a quick refactor of my Clojure talk for the LJC conference this weekend.
Unfortunatley we didnt get chance to pair up and do some Clojure coding together, too many great conversations got in the way.
Justin Septka - Atlassian
Justin gave a great talk on DVCS and understanding how to get the most out of Git in your own teams. Git is relatively new to most teams and using services like Bitbucket and Github can give developers a lot of power to manage their code effectively.
Lots of advice was given out on how to manage your repos and how to use pull requests to manage feature branching and other aspects of continuous deliver & deployment. Its worth checking out the video on Parleys if you want to know more.
Its great to see speakers getting feedback and there was a huge queue of people lined up to speak to Justin afterwards.
Adaptavist guys fired up some Microsoft Kinect love on all the big tv’s outside the talk theatres. Dan Hardiker went above and beyond the call of duty and dressed up as a very large Java Duke for the afterparty. He seems is a good dancer when dressed up!
Thanks to Stephan and everyone else (too numerous to mention) that help put Devoxx together. I am really looking forward to the next one, whether that be in France or Brazil?
houdini68 Thanks to Stephan and to all the people who turned #devoxx into a success !!! One week in paradise ! See you next year !