I’m going to be presenting at Couchbase [UK] 2013 . I’ll be giving a talk on Couchbase at Betfair and our experiences with NoSQL. Come have a look, it’ll be fun!
I stumbled across a conference yesterday via twitter. I say stumbled across because it was the least tweeted technology/information conference I have ever come across. From over 160 delegates, vendors and conference organisers there were less than 20 tweets by the middle of the last day and only 1 delegate was actively tweeting with the official hashtag (and a big hat tip to that gentleman since his tweets were how it popped up on my radar). Given how simple it is to do and how effective it can be at driving interest it was almost like they wanted to avoid attention.
Then thing is they obviously weren’t trying to hide themselves away. They had a hashtag and an official account that tweeted upcoming speakers in the previous weeks, the opening night of the conference and a piece of media coverage on one of the keynote talks. Unfortunately that was almost the sum of their activity. From what I could glean it seemed like a fascinating conference but I had no idea; I didn’t go and could only see a single piece presentation.
So what should conferences do here?
Simple: you use your social media presence to entertain, educate and inform your audience. How you use each particular channel is up to you but facebook, twitter, blog posts and slideshare are all givens. Advertise your conference on facebook, live tweet breaking news on twitter and drive interested people towards the presentations on slideshare and indepth analyses on blogs.
This is hardly ground breaking stuff.
Each time I’ve spoken at conferences either I’ve put my presentation on slideshare or the conference organisers have done it for me. Even better is when conferences record the keynote presentations and get them on youtube for all to see. If you want to recoup costs there is nothing stopping you from being able to sell a DVD of all talks separately but holding on tightly to all the content is just bad business as you waste a perfect marketing opportunity. By all means charge for premium content but if you just have a look around at any of the top conferences in this space like Velocity you will see how it should be done.
If you are going to all the trouble of creating a conference or summit it seems plain contrary not to use all the tools that are out there. Your conference benefits, your speakers and attendees benefit and your audience for next year say “I’m going there next year”.
The Velocity EU conference is over for this year and what an amazing time. It’s my third Velocity Conference and it just keeps getting better.
There were brilliant talks everywhere. Newer speakers like Andrew Brockhurst (BBC), Dave Nolan and Mark Jennings (Lonely Planet), Mike Krieger (Instagram), Brian Whitman (EchoNest) alongside veterans like Theo Schlossnagle (OmniTI), Artur Bergman (Fastly), Tim Morrow (Betfair), Steve Souders (Google), Mike Rembetsy, Patrick McDonnell and John Allspaw (Etsy.com) and everyone with a compelling message. Even I finally got up on stage and did a talk along with Abe (slides here) where hopefully I didn’t embarrass myself too much. It’s not a joke that hanging out in the hallway really is a fourth track. Along with the Operations and two Performance tracks, with so many smart people the clever kind of rubs off on you as you wander around in search of coffee. You are so much better just for having been there.
The fear of public speaking regularly comes in at number 1 in a top 10 of people’s biggest fears. It’s generally agreed that the idea of standing up in front of a group of people to give a talk is terrifying so you won’t judge me too harshly when I say that I was lightly cacking my pants when I went to the London Java Community Open Conference last week since I planned to be up on stage to give my first ever talk.
Unlike normal conferences where you have a schedule of speakers in advance, in an Open Conference anyone can put their name down for a talk. I decided that is something is worth doing then it’s worth doing twice by entering two talks: one 30 mins talk detailing my current team’s work as we rebuild a high volume website in Java (peaks of 30,000 executions in a minute and 88,000 http requests per SECOND! – slides) and one lightning talk of 5 minutes only to compare threads and actors for concurrency (slides).
Supplied with enough coffee and pastries to gird my loins, I put my name in for both and went in for the main kickoff session from Martijn Verburg and Ben Evans. As soon as that had finished I darted out to look at the schedule and saw what every first time speaker wants to see- I was first up!
Joking aside, this is perfect since you don’t end up sitting waiting for your turn and I bolted to my meeting room and got set up as quickly as I could. That I could welcome everyone in made me feel in control but with less than 5 minutes to go I only had way fewer people that I had hoped. Let’s face it, as a first time speaker you want to steer between the Scylla and Charybdis of too few and too many attendees. There’s no way I want to give my talk to the entire conference but likewise, I’d feel a little foolish giving it to only a couple of people.
Thankfully, the last couple of minutes before the start time saw the room fill up and I gave my talk to a full room of about 25 people. It may have been a bit of a cheat but the majority of this talk was based on the one given by Tim Morrow at Velocity EU so not only did I know the topic well but I had seen it been given by an experienced (and good!) speaker already. As soon as I got passed the first slide any nervousness had evaporated and I was off and running. I’d practised it a few times so timing the talk was not hard and the presenter view on powerpoint rocks since it gives you both the running time and your progress through your deck of slides. I was a little nervous about question time but since this was a case study on my own work I was on pretty safe ground.
My second talk was after lunch which meant that I had to sweat through that and the 3 speakers before me. That and the fact that this one was going to be to the full Five minute talks are simultaneously easy and hard – your time is too short to get into too much detail so you can focus on the area in hand (i.e. the bits you know!) but you have to have a perversely good understanding to explain your topic in only 5 minutes since you only have time for salient points. I was way more nervous for my lightning talk but again the waiting was far worse than actually standing up there and talking. Again, the questions were the hard bit and someone asked a great question that I didn’t know the answer to – “will Akka support Java in the future?”. What was cool was that the best way to answer this was to join up to the Akka user mailing list (something I have been meaning to do but never have) and ask and it doesn’t get much better when the Tech Lead and the CTO of the company behind Akka answer (“Abso-friggin-lutely, wouldn’t want it any other way.” according to the Tech Lead).
So how did it feel to finally give a talk? I felt far more involved that I ever had before. Yes people come up and talk to you afterwards and you end up chatting with other speakers whether you like it or not (and you do!) but the effort you put into your talk means that you are naturally interested in what everyone else is talking about and whether it affects your topic. The whole subject of the conference seems far more related to your own interests. It might be because you are interested enough in that topic to want to give a talk on part of it but I think that giving something back in this fashion creates an emotional bond that dispels any sense of imposter syndrome and just lets you enjoy the conference more. You don’t have to find a justification for just being there and you also learn far more.
So if you are thinking about giving a talk, all I can say is get stuck in and give it a go.
I’m flying out to Velocity EU tomorrow and I can’t wait. There are too many sessions to cover all of them but hopefully I’ll be able to report back on a few.
There is a kick-ass line up (no real surprise given that this is one of the best conferences in the world) including Josh Bixby, Steve Souders and my mate Tim Morrow. Now I’ve had a sneak peek at Tim’s and it covers some of the journey as Betfair.com create a new world class web experience that combines blinding performance with improved customer features in a package that fits the business model.
It’s going to be great!
How to get the most out of the grails app
Many people make decision based on delusions that you will scale up to Facebook sizes. Making decisions based on those requirements is ridiculous.
Profile then optimise. Where can things be slow – DB/BusinessLogic/Network/UI
Spring Insight – free with STS. gives a broad range of metrics
Google Speed Tracer
Reduce the number of DB queries
use appropriate fetch mode
don’t fetch the data you don’t need
Add appropriate indexes
Don’t be afraid to change the model
Aternative Data store – e.g. NoSQL for example but how do you know the sweetspot
The key us referential integrity and simple models
Spring caching abstraction
Go Asynchnoous – Spring Events, Executor, Messaing JMS/AMQP
Fall back to Java for Performance – especially for numerically intensive operations
Groovy++ @Typed(TypePolicy.MIXED) for speed increase
View rendering in GSPs
Reduce number of requests
Expires Headers on static resources
Spring Cache with Views
Zipped Static resources
Grails in Action
This was the lecture I was most interested in. Given the interest in NoSQL, as well as the FUD and general handwaving from the industry on this topic I really wanted to see what SpringSource were making of it.
2 part lecture : motivation to why and then examples
Until recently, we have stored everything in RDBMS. This is sub-optimal for objects but especially or trees or graphs or networks. The last couple of years has seen th rise of NoSQL is the umbrella term for the desire
So which do I use? And if I do have a shortlist, how do I interact with them. Well there’s some Spring for that! The Spring Data Project – aims to provides a familiar and constant Spring based programming model while not over-abstracting custom traits of the specific store. The last point is emphasised because an overly flat abstraction means that you would lose the things that make each implementation special.
The First point is just the usage of familiar spring idioms like Templates and Repositores. Riak and Redis are quite well supported. MongoDB and CouchDB is quite well supported.Haddop and Neo4J are also supported. JDBC and JPA is aso supported since this project is about Data, not just NoSQL.
The examples for this talk are based on MongoDB. JSON based with nested KV pairs with consistency within the document.
The building blocks of Spring Data: Spring Core (DI, AOP, Namespaces, JMX, JDBC), Templates for each implementation for resource management (connections) and exception handling – also some convenience methods for simple queries, Mapping support via annotations to map the domain model to the store. Repositories layer – finder methods and query methods like in Spring Roo.
Examples are all on github. – org.springframework.data.mongodb.examples.music
In the mongo example, the domain model is decorated with @Document annotation and the index member decorated with @Id
A kv pair is a field and it’s value. By default the mapping are with the member name but these can be overridden. @DBRef allows you to connect to a separate collection in another DB. Multiple constructors can be filtered with @PersistenceConstructor
To use it you just need to declare the implementation namespace and then create a template. Like RestTemplate, the templates are underpinned by the equivalent *Operations Interface.
Repositories for CredRespoitory for finder methods. NBoth names and locations (co-ordinates) which auto-creates the repositories which give you a lot of power for simple queries like findOne(Id) find<Member><Property>[<Keywords>].
THe auto-gen stuff is done at context startup so you don’t have to wait until runtime for it to fail.
What about complex queries where you don’t want ugly names. Annotations of course! You can have queries in the annotations
SPring Data supports pagination out of the box. All you need is Pageable argument where the PageRquest is the implementation. Declare the result type as Page andd you get Context like isLast and getTotalPages.
QueryDSL open source project?
Cross storage persistence is also possible with a nice annotation model that makes it pretty seemless.
Tough lecture after lunch, Josh covered the Spring Integration project. Based on Gregor Hophe’s book, it has a lot of similarities with the Apache Camel Project. I wanted to take more notes but my laptop started shedding battery life and I really wanted it for the next lecture.
I did want to ask why someone should use this project rather than Apache Camel but it seemed a negative question and I didn’t want to ask one of those.