• Getting from trapped to untrapped

    I was putting the finishing touches on the blog post I wrote yesterday about enjoying a lifetime with a bit of work and found myself on Jay Austin’s blog reading his recent posts. Aside from the initial pang of jealousy I had about the amount of travel he enjoys, I was struck by a couple of quotes and how closely they aligned the direction I’m taking my life.

  • Enjoying a lifetime with a bit of work

    I watched the minimalism film for the second time last night, and I enjoyed it even more this time around. It certainly won’t be the last time I watch it. There is a minimalist’s travel bag chock-full of incredible quotes and realisations, and inspiring people and real life examples in the film.

  • Docker Compose slow on Docker for Mac and public wifi

    On a recent visit to a Caffé Nero coffee shop, docker-compose commands were running extremely slowly. After an hour or so of restarting Docker, my Mac, and switching back an forth between Docker for Mac and Docker Machine, I just gave up and headed home, pinning the issue on the then-still-beta Docker for Mac.

  • Failing aws cli on Docker container with old date time

    Today I hit an issue which completely stumped me (for a while). Running an aws s3 cp from a Docker container — that had never failed before in the same scenario — was failing every time with ‘A client error (403) occurred when calling the HeadObject operation: Forbidden’. When run from my Mac directly with the same AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY it worked. WTF!

  • Never lose a code snippet again with GistBox

    Today I discovered a tool that is going to save me countless hours looking for old code snippets, scripts and commands. Today I discovered GistBox. If you’re not already familiar with the application, or with GitHub Gists, read on and save yourself a bit of time and frustration.

  • Enable hot-deployment with Tomcat + Eclipse + Ivy

    I occasionally forget how to configure Tomcat and Eclipse so that my code changes hot-swapped into the JVM when running a web application in debug… here’s how:

  • Integrating JOOQ... easy

    Integrating JOOQ into your application is a piece of piss, as I discovered recently when I needed to build some non-ORM/Hibernate database access into some reports. I’m upgrading the reports component of an application I develop and needed to add some performant metrics. I didn’t want to use direct SQL or JDBC, so I decided to see how JOOQ performed… and I was pleasantly surprised at how simple it was to set up and use.

  • Mini journal with Twitter, IFTTT and Evernote

    I’ve often wished I had kept a diary throughout the years. Friends and family will recollect things that have completely vanished from my memory, and I’ll think to myself “If only I had jotted something down about that I could go back to and trigger some of those memories.” But alas, I never manage to maintain a regular journal schedule; only in fits and starts.

  • Cloudbees continuous delivery summit part II

    Today I went to the Accelerating Innovation with Continuous Delivery summit at The Brewery in London, a free one day event hosted by CloudBees. It was a really well organised event with some great speakers, and I’ve got Moleskin full of notes and ideas to take back to the office and try and somehow integrate into our development/delivery processes.

  • Template SoapUI tests with XmlSlurper

    In between urgent bug fixes and planned sprint work I’ve been trying to find time to write an automated test suite with SoapUI to verify some of the things we can’t in unit tests. After writing a few SoapUI tests by copying the same SOAP request between test cases, but slightly modifying the content of one or two elements, I wondered whether it would be easier smarter to reuse a template SOAP request and somehow replace only the element/attribute content that differs between tests.

  • Unit tests: worth their weight in gold

    For the whole of today, and a large chunk of yesterday, I laboured away writing a single unit test. Without context 1.5 days for a single unit test sounds pretty bad, but in my defence, the test involved mocking out numerous services and a deep understanding of the underlying model and a complex part of the system in order to set up the scenario I was trying to test. Because of this complexity, and the possibility of inadvertantly breaking existing functionality and/or business rules, I wanted to make damn sure my changes were sound.

  • Dev manager, read this

    I clipped a link to this article earlier this week, thinking it was one of the best things I’ve read on micro-services and continuous, PaaS and continuous delivery all year. But to be sure, I wanted to revisit it later, hence the clip to Evernote. I’ve just re-read it now, and it is. So many great nuggets of information experience to draw on from people who have been there, done that. It’s the sort of article you just want to stick on your development manager’s desk and with a note saying “this is how we need to be developing, deploying, delivering.”

  • Laptop upgrade part 2

    I’m loving the new Macbook Pro Retina (3.0GHz Dual-core Intel Core i7, 16GB 1600MHz DDR3L SDRAM). It’s a beautiful machine, and so far it has been a joy to use. My first order of business was to setup an environment from which I can work from home, which means VMWare hosting Windows. I’ve dedicated 4GB RAM to it and it runs like a dream, and with three finger swipe and can switch between it and my other OS X workspaces in no time. And it’s nice to see even with Windows running in a virtual machine, I’ve still got 10GB+ of RAM left to play with.

  • Request your GitHub username

    Consistency is a good thing. It’s nice (though increasingly rare) to have the same username on all the sites you use on the web. But unless you’ve got some random mashing of letters and numbers, it’s difficult to ‘nab’ your preferred username.

  • Parallel deployment in Tomcat

    Recently I’ve been looking for the right best way to deploy an application with zero downtime. My search led me to a nifty feature introduced into Tomcat 7 called parallel deployment. Parallel deployment allows you to deploy multiple versions of a web application with the same context path at the same time.

  • Laptop upgrade

    Today I pulled the trigger on the purchase of a new laptop. Shit. I feel a little bit guilty sometimes for spending so big, because I’m pretty tight conservative when it comes to buying stuff (just ask my wife and friends). But as with all purchases this big, I find myself constantly questioning, and then trying to validate the spend… like I’ve got a devil on one shoulder saying “go on, you know you want to” and an angel on the other “you’re current laptop is just fine, you don’t need a new one.” Today, finally, the devil won out.

  • Attracting the best developers

    I was whittling away at my Feedly feed tonight (which has built up in recent weeks, no small thanks to my colicky new baby boy Bodhi) when I reached an article from the Typesafe blog, Q&A with Kevin Webber. One sentence in particular caught my attention:

  • CloudBees cd summit

    I’ve just registered for the CloudBees continuous delivery summit in London on 9th September.

  • Build scripts - don't modify my files!

    One of my pet hates when it comes to development is a build script or an IDE that modifies project/config files so that the project looks like it’s modified in the IDE.

  • Modern Java developer

    I was reading through my Feedly feed a couple of days ago and came across this article, a repost of Zero Turnaround’s 10 Kick Ass Technologies Modern Developers Love. I was pleasantly surprised as I read through the list that I know and frequently use the majority of them:

  • Specifying the location of shiro.ini

    I’ve been working on switching the identity and security management libraries in one of my applications from Seam Security/PicketLink IDM to Shiro backed by Stormpath. Shiro and Stormpath are really quite easy to set up, and there are some good guides out there to help you get up and running. For me, everything was going really well in my local development environment, but when I finally pushed these changes to my hosting provider, Jelastic, I hit an issue…

  • Running Liquibase against an existing database, part 2

    It turns out integrating liquibase into an existing project/database is a lot easier than I originally thought…

  • Deep Work

    I’ve been working through some pretty complicated technical design at work; some of the hardest development stuff I’ve done. Ever. The changes I’ll be making to the are in some complex parts of the system. My understanding of how the code works must be high; my confidence of not breaking it with my changes, even higher. Over the last couple of weeks I’ve had my head down working through the code, the problems I have to solve, and how best to merge two elegantly together. It’s been a hard slog, made up of long periods of time spent with my headphones in, debugging, backtracking, cursing… struggling through a little documented domain… trying to get it.

  • Accessing Stormpath Client when using shiro.ini

    I ran into a problem recently while trying to get access to the com.stormpath.sdk.client.Client instance when it is initialised by Apache Shiro’s shiro.ini configuration. I couldn’t find any help in the Shiro or Stormpath documentation.

  • First Impressions of Ghost

    I’ve stuck with Blogger as my blogging platform for the last few years, mainly because it’s free, but also because it’s tied to my Google account and integrates well with other Google services like Google+ and Adsense. But mainly because it’s free.

  • MD5 Checksums

    Tonight I downloaded and installed JDK8 on my Macbook. I’m keen to get started playing around with the some of new features, in particular Lambdas and the Streams API; I really think these will streamline some of my code without having to incorporate Groovy (or similar) to get similar features, and then having to mess about with different compilers and Maven/Gradle plugins.

  • Dead wood

    Dead wood:

  • Is it time to get off the JSF bandwagon?

    I watched a pertinent video tonight: “Comparing JVM Web Frameworks” by Matt Raible. It was a really interesting presentation, and quite applicable to me at the moment because I’m trying to do decide an a new architecture and web framework for an application I’ve developed… one that currently uses Primefaces.

  • Installing Liquibase Extensions

    Since version 3.1, support for ‘less common’ databases has been removed from the core Liquibase distribution. This is documented Liquibase’s supported databases page. I’m working with a DB2i database, so I needed to work out how to install the liquibase-db2i extension. I couldn’t find any documentation anywhere, but I managed to nut out what was in the end a relatively trivial task…

  • Keeping a Primefaces MenuItem active

    In an application I’m currently writing using Primefaces, I’m using a menu and individual menuItems to navigate to different pages. I wanted to keep the menuItem representing the current page to remain selected. For example, if the current page was /admin/users.xhtml, I wanted something like this:

  • Monitoring energy use with Google Sheets, Forms and Apps Script

    I recently set up a nifty little Google Apps Script app using Sheets and Forms to track our electricity and gas consumption, and our solar generation. As Steve Howard - chief sustainability officer at IKEA - said in his TED talk Let’s go all-in on selling sustainability, “If you’re not measuring things, you don’t care, and you don’t know.” I want to know exactly how much energy we are using so that I can make efficiency adjustments over time, and know exactly how each one performs. How are you supposed to know why your bills are so high, or how to reduce them if you need to, when you don’t know what you’re actually using?

  • JavaOne 2013 - Decompose that WAR! Architecting for Adaptability, Scalability and Deployability

    Last night I watched the JavaOne 2013 session Decompose that WAR! Architecting for Adaptability, Scalability and Deployability. The presenter was Chris Richardson, the author of POJOs in Action, and in the talk he discusses how very large applications bundled into a single war, what he calls monolithic applications, can give you more headaches than the benefits they provide.

  • Running Liquibase against and existing database using LiquibaseServletListener

    I recently took on the task of integrating Liquibase into the project I’m working on at work. I’d played around with Liquibase before on small personal projects, but had never faced applying it to an existing, large and in-production database.

  • Power searching in JIRA

    I was promoted to Java Team Lead earlier this year, a role that comes with the responsibility of doing performance reviews biannually. In my first four months in the position I haven’t really worked closely with my team at all; they’re on completely different projects, and they are all just as busy as I am.

  • Staying Focused on Performance with Evernote and IFTTT

    I’ve always been one of those people who has all the best intentions at the start of a school, university or work year, to get organised, streamlined, and productive. I usually feel optimistic and determined… It’s a clean slate, a fresh new page of a brand new notebook.

  • Tracking solar kWh with Google Spreadsheets & IFTTT

    About a month ago we had solar panels installed. Sixteen panels in total, thirteen split over two sections of the roof and five on the garage, totalling a 4kW system. I hadn’t considered solar when we bought the house, but fortunately we have south-east and south-west facing sides of the house, and after a little research, solar turned out to be the best investment with the money available to invest.

subscribe via RSS