Today I attended the GeekOut UK conference, the first time (that I’m aware of) that it
has been run in this country. Thanks to Simon Maple and the team who made it happen. It was hosted at the Shoreditch Villiage Hall, home of many small tech conferences.
First up was
Martijn Veyburg who talked around code in
IDEs and how it hasn’t changed much. He asked whether IDEs could focus on things other
thank plain text representations, and linked to presentations such as
Editing ASTs and videos such as
this one. (Granted, most IDEs
are textual — but in years gone past some IDEs did present code in non-textual form,
but they gave way almost exclusively to command line tools like Ant that expected the
files to be textual to be processed.) He also hoped that it would be possible for the
IDEs to represent different kinds of techniques - from
concurrent algorithms to
reactive pipelines visualised as well
as queueing systems like chronicle queue.
All in, an inspiring talk for what we might do in the future but optimistic none the less.
Eclipse users might find looking at
Code Recommenders might provide a
guided view as to providing collaborative understanding of what code is popular.
Next up was Josh Long, who presented on
Spring Boot as a runtime that could
quickly host network services in an embedded fashion without needing a standalone
web app server to host the content. More interesting for me was the introduction to
start.spring.io which has a web page that acts
like a maven archetype but in a way that can download a generated project infrastructure
as a zip. Although having this functionality as a web page is neither repeatable or
reliable, getting an initial project bootstrapped (with a collection of ‘click here to
add Spring Foo’ dependencies) makes it a lot easier to get going.
Finally Josh introduced the metrics gathering (using Codahale metrics) built into
Spring Boot Actuator - this adds a collection of metrics which can be used to add
both JVM health information and also measuring the number of requests a particular set of
URLs receives. More information is available at
the actuator service guides.
The third session was presented by
Aslak Knutsen who talked about
JBoss Arquillian. He demoed the ability to write
tests creating shrinkwrap archives — like the JAR or WAR archives in a build process
would - but at runtime, similar to creating a Zip using
java.util.zip and friends.
The goal is to be able to spin up a partial webapp (e.g.) to install into a container
such as a Jetty or Tomcat runtime to perform in-container testing but without requiring
the entire server to be republished. There’s more information on the
as well as a more general guide to
tests with Arquillian. Unfortunately, I think this is an example of the
omega problem again though.
With that, Simon Maple took us up to lunch
with an interactive demonstration of both
XRebel. JRebel provides
automated code deploys by having an agent attached to a Java process during development,
and wrapping the classes with methods that can delegate to internal representations
of the classes in a way that they can be redeployed without taking down a server. He
gave several excellent demos including being able to do refactorings that would not otherwise be possible. In addition JRebel has support for watching well-known-files
(like a spring context file) and being able to perform a diff on the contents and take
corrective action to be able to change the state of the system. Several plug-ins are
available for systems that are able to be hot redeployed in this way, and an SDK is
available which can be used to write plug-ins for systems that are either proprietary
or otherwise not supported in JRebel out-of-the-box.
The XRebel tool looks interesting
as well; again, it has a Java agent that can be bootstrapped into the runtime. The
XRebel plugin amends web pages to inject an HTML menu on each page, and run-time
monitoring to look for things like the size of the HTTP storage session (useful for
poorly architected web apps that have massive sessions for no good reason) as well
as monitoring the number and length of SQL statements that are executed. When demo’ing
it against the sample JavaEE PetStore application, Simon demonstrated how XRebel was able
to identify a memory leak leading to growth of the session size as well as several
inefficient SQL queries. Support for rest services and NoSQL databases is currently
available with more planned in future.
After lunch, Simon Ritter came up and talked
about Java 8. Most of this is the goodness that already exists; streams, lambdas,
method references, effectively final, default and functional interfaces etc. For those
that haven’t upgraded to Java8 yet it was a good whistle-stop tour of what would be
good; for me, I discovered the existence of
classes that I hadn’t come across in my Java8 travels so far.
After Simon came Holly Cummins,
who works on the Liberty Profile and loves to automate things. Lots of good stories
- Do it once; do it a second time and take notes; do it a third time and automate
- Treat your servers like cattle, not pets
- If you care about it, automate it
- Automate because you care that it’s done right
- Automate because it’s fun
She also proposed thinking about when it’s not good to automate (and linked to
- Who can maintain/manage the automation
- Will it be robust
- How much will it cost
- What is the completion criteria
- Is it still worth it and does it save time
- It’s dumb to automate dumb things
- Automation allows you to do dumb things at a greater speed
- Code formatting is the most controversial thing that you can automate
(I interviewed one of Holly’s colleagues, Erin Schnabel, on the
of the Liberty profile at InfoQ recently.)
Next up was Trisha Gee talking about
how to build a killer web app using AngularJS and MongoDB. Though I’ve seen her talk
before I was mesmerised by the way she fluently went through the application and came
up with the implementation. If you’ve not seen it before, there’s a previous version
of the presentation from Goto Chicago and the
source code for Cafelito is
available on GitHub. The
Morphia drive for MongoDB
(which provides persistence of JSON documents and provides bindings to Java classes,
much like Hibernate does for SQL databases) seems like something worth paying
After Trisha was Chris Kelly on GitHub. I didn’t think this was the best GitHub
presentation I’d seen (but then, I’ve seen a lot of them) but I did find out some
that I didn’t know before; for example,
y will expand the URL to its canonical
form (i.e. replace
master with the appropriate commit hash) and
l can be used
to select either a single line or a range of lines (e.g. 10-15). This will append #L10-15 to the URL, such as
I also found
t will allow you to search for a file name in a repository; unfortunately
it doesn’t work with extensions (GitHub currently uses . as a separator, so it’s not
seen in searches) and
w will allow you to switch branches/tags. Both of these are
great if you’re trying to debug what is happening in an open-source environment where
you have source in GitHub.
Finally Sven Peters finished off the day
with coding culture at Atlassian. A
slightly different version of the presentation is available at his site, but was an inspirational overview of
how you can build effective teams by becoming a DOmocracy and shipping code quickly.
They even have a quarterly company-wide ship-it day, which is a competition to show
off what you can do in 24h.
I think he summarised the whole thing with “Just say no to crappy code”.
All in all, GeekOut UK was great fun, with a good balance of speakers and presenters.
It was also great being a single day; sometimes it’s a lot easier to get a day pass to
attend a conference rather than a full week. The fact that it’s much reduced means that
a lot of conference cruft - keynotes, finding out where all the talks are - became
moot. I’ll definitely be there next time it runs.