Upcoming Auckland Neo4j Events

So, I return to New Zealand. Spend most of a year hiding in a cabin and then fail to organise any events. And now they’ve all come at once:

  • James Rowlands is doing a talk on Neo4j for Python Devs at the Auckland Python Meetup. Tomorrow, February 19. James organised this, I’m appearing for moral support.
  • Neo Technology is a sponsor for CITCON Auckland 2014, and I’ll be giving away a few paper copies of the Graph Databases book.
  • We’re kicking off the Graph Database Auckland meetup on March 3.
  • The second Graph Database Auckland meetup features our Chief Scientist Jim Webber, on April 3. He’ll be showing off the awesome new features of Neo4j 2.0.
  • Jim is keynoting Codemania the next day. You will laugh. I guarantee it.

Happy 2014

2013 was busy.  It’s hard to work remotely with people who are literally on the other side of the planet.  Remote helps explain why: there’s no overlap, apart from what overlap I make myself.

To make things more busy, we ended up buying a new Build Doctor HQ and moving from the country to the suburbs.  Moving from a cabin back to the spare room has it’s comforts.  Like plumbing.  There’s a lot of work to do on the HQ, but it’s nice to have a new long term project.

This blog is a long term project, too.  The last couple of years have seen it slide as I worked on other things and moved country.  It’s no longer sponsored, and pursuing sponsorship doesn’t work when I haven’t been posting.  I almost ported to Ghost, but decided that I’d take the simplest option of moving it to wordpress.com and letting the content speak for itself.

A benefit of the move is saying goodbye to the  www in the blog URL, which fixes a mistake made in 2007.  That and never having to do another plugin update.

Now I just need to find something to write about.

Happy 2014.  Have a happy and productive year, wherever you are.


News, August 12

  • Resharper 8 is out, making Visual Studio usable [link]
  • Also YouTrack 5, I’ve never had the pleasure of that particular issue manager [link]
  • I’d love to go to FutureStack, New Relic’s user conference [link]
  • Heroku have announced a lab of their pipeline support.  At Neo we have several apps deployed on Heroku, so I road tested it this morning.  Does what it says on the tin, and shows what commit went where.  There’s a challenge for some of the addon providers who offer a similar service.  [link]

The Benefits of Fail-Safe Application Deployments

(A guest post by Dan Gordon of Electric Cloud)

Enterprises are building, testing, and deploying software faster and more frequently now than at any point in the past. Faced with unprecedented demands, many of these software development organizations are realizing their rollout processes are haphazard, at best. These improvised procedures lead directly to heightened numbers of costly, time-consuming errors that degrade their business agility. Production deployments remain the last mile hurdle in the agile world due to the disconnect between the Dev and Ops teams.

Fortunately, there is a well-regarded, proven collection of best practices and supporting technologies that can go a long way towards making the software deployment process more streamlined, safer and more robust. These fail-safe software deployment techniques deliver an impressive array of business and technological advantages.

  • Design for manufacturability – Transform your software design and implementation procedures into a more mechanized, repeatable series of steps. This help make test results from earlier phases in the delivery cycle relevant for later stages, and lets you perform consistent test in many scenarios over time.
  • Leverage the power of automaton for your software delivery process – Eliminate the unrefined, often manual deployment processes that plaque so many software development organizations. Comprehensive automation technology can have a meaningful impact on productivity and accuracy, just as it has for many other sophisticated businesses practices.
  • Design with failure in mind – The bottom line is failures will occur despite your best efforts, so prepare for inevitable breakdowns. Determine what is an acceptable failure, and by acceptable, we mean a failure that doesn’t need to halt the entire deployment process. Define success and failure thresholds by tier, and allow for partial deployments to complete successfully.
  • Test early and test often – Build a consistent deployment model and test it throughout the entire software deployment lifecycle. Your software deployment platform should reside at the heart of your testing efforts. Taking this approach uncovers any issues well before a crisis develops and lets you evolve the process so your production deployments are smooth and fail-safe.
  • Zero in on defects efficiently – Identifying and correction defects tends to be laborious and inadequate, but fortunately, specialized automation solutions are great for isolating and resolving these problems. This makes troubleshooting complex deployments much more efficient, and results in faster time-to-market.

These techniques can make your software deployment experience faster, smoother and more reliable. By transforming complex software delivery processes into fail-safe production deployments, you will benefit from increased DevOps collaboration, reduced cost and a higher quality of delivered software.

Dan Gordon is a Product Manager at Electric Cloud. Dan brings over 20 years of experience in the IT software industry. At Electric Cloud, Dan is responsible for product strategy, product marketing, tactical alignment and execution with product development, sales and pre-sales enablement and support. Previously, Dan was a product manager and systems architect for the enterprise IT automation software business within HP Software. Dan has also held managing and systems engineering roles at Opsware and Sun Microsystems. Dan holds a bachelor of science in information and computer science from the University of California, Irvine. 

News, 17 July 2013

Happy summer, Northern Hemisphere dwellers.  There’s a break in the rain at Build Doctor South HQ, have some news:

  • IBM acquired UrbanCode.  I guess Build Forge wasn’t addressing the DevOps market the way UrbanCode had.  Top marks to Maciej, Eric, and the guys for a) building multi-stage CI in 2006, and b) pivoting and responding to DevOps.  One consequence of the deal is, they are no longer blog sponsor for The Build Doctor.  Thanks for your support over the years, guys! [Link]
  • Team City 8 is out, and it’s more affordable.  It looks like they focussed on making it a load more usable and faster.  [Link]
  • Sonatype just launched Nexus Pro CLM edition, which allows you to set per-environment policies for artifact promotion.  They are still banging the security drum.  It makes me wonder about the viability of an attack via the M2 repository.  In other news, would you like to use my new meta logging library that delegates to every other logger in the world? It doesn’t phone home, honest. [Link]
  • Electric Deploy now integrates with PTC Integrity.  I have to admit that I’d never heard of the latter tool. [Link]
  • Atlassian have release Bamboo 5, with better support for Release Candiates, deploy jobs,  and features (authorization and communication) about those.  Looks useful.  I’m going to investigate further.  [Link]
  • Speaking of Bamboo, there’s a security advisory, get your upgrades in. [Link]
  • Sauce Labs have announced multi user accounts, and a round of funding – congratulations!  [Link]
  • CloudBees have a new LTS release of Jenkins, with an emphasis on availablity, including the ability to restart aborted builds [Link]

Conference appearances, 2013

My blogging break has been so long, I feel like a vampire emerging from the grave in a Hammer Horror film.

I’m interrupting my relentless working day to announce that I’ll be at:

Back to flogging Ruby code.

Update: for various reasons, both the struck out appearances are cancelled.  Back to flogging ruby code.  (I do actually use flog).

News, February 19

  • Bamboo 4.4 includes loads of performance tuning, and virtual private cloud support for build agents.
  • If you haven’t upgraded Go and Mingle this year, go and do it right now.  Go has had 2 vulnerabilities via Rails, so go make sure.
  • James Turnbull of Puppet Labs just released his book on logstash.  I don’t think he sleeps much. [link]
  • DevOps Down Under is on July 12, 2013 in Sydney.  I hope to be there. The call for proposals is out. [link]
  • DevOpsDays Auckland is on March 8. I will be there. [link]
  • Congrats to Luke and the crew at Puppet Labs on a massive investment from Vmware. [link]
  • Amazon continue to reduce price and make badass instances. Long may they continue.
  • Kohsuke is doing a useful webinar today: [link]
  • Urbancode (who sponsor this blog) are doing a webinar on how to avoid evil DevOps teams [link]
  • RubyMine 5 got released, with Puppet support.  Now you can raise more feature requests.
  • We’re still looking for someone to work on our Cloud team. [link]

Work with me at our funded Silicon Valley startup

We’re looking for someone to help extend and run our Cloud platform.

This is a role in a small team with lots of autonomy: we want to build an awesome cloud service to match our awesome product.  We’re funded, we’re selling our product like hotcakes and  we want you.  Link below.

Cloud DevOps Engineer



Writing a Neo4j Puppet module for fun and profit

I haven’t had a chance to do any code in public recently.  Skewer and XFD have had to take a back seat to the day job, where I’ve been working on our Heroku Add-on.  We recognised that a PaaS won’t work for everyone, so I was asked to take a look at deploying Neo4j on EC2.

The original plan was to make an AMI that people evaluating Neo4j could instantiate on EC2.  I didn’t want to create a machine by hand and then build an image from that machine: it seems more repeatable to have a process where you bootstrap the OS using VeeWee and then use Puppet or Chef to finish the job.  In the end I decided to start with Puppet and Ubuntu and see how far I got.

I started by fixing our Neo Technology Debian repository so we could get signed packages.  That had benefits on its own – our release process is simpler now.  Then I wrote a Puppet module to install the packages on Ubuntu and apply some configuration changes on top to make it usable (for example, Neo4j doesn’t listen on all interfaces by default).  The README suggests that you download and run a wrapper script that will fetch the module, the dependencies, and then run them.  It’s looking decent.

We strongly suggest that people use the Oracle JDK, so I had to come up with a way to get that installed, without distributing the JDK myself.  Also, I felt it was important that the user signal their acceptance of the terms and conditions of the Java end user license, so I found a way to do that.  Also, doing anything on the cloud without authentication is foolish, so made it possible for the user to pass a username and password to use at runtime.  It’s looking useful.

Then I put myself in the position of someone who wants to install Neo4j, but isn’t familiar with the territory of EC2 and Ubuntu servers.  It wasn’t enough.  So I wrapped the entire thing in CloudFormation to create the AWS resources that the user needs, bootstrap the Puppet module, and pass down the parameters.  Now we’re getting somewhere.

The finished product is at https://github.com/neo4j-contrib/neo4j-puppet.  Feedback welcome.  I’m not sure I need to bother with an AMI.

I’m thinking about:

  • Making it compliant with Puppet Forge
  • Supporting other Linux distributions
  • Making it easier to get SSL going (though there’s no getting around the fact that the end user will need a cert, I guess)
  • Supporting multiple regions on AWS


News, January 14

  • Ancient Configuration Management community, cmcrossroads has relaunched, by it’s new owners TechWell.  It’ll be interesting to see how this works out.  Configuration Management is one of the disciplines that’s been folded into DevOps – but will we lose something in the cooking? [link]
  • Rubymine Enoki will be officially released soon, with some very basic Puppet support – syntax highlighting, and a basic first pass at validation.  Keep those bug reports coming!
  • Go is affected by the Ruby security bug.  Go install the patch, right now. [link]
  • There are Puppet Camps in SF, Sydney and Ghent this January.    Sydney’s a mere 1337 miles away (auspicious number) from Build Doctor HQ, but I’m unlikely to make that one. [link]
  • UrbanCode (who sponsor this blog) just releases uRelease 4.0, giving more orchestration goodness. [link]