Reading article about primitives vs wrapper objects in Java. Nice to see some graphs and real evidence rather than just gut-feel.
http://vanillajava.blogspot.com/2011/07/low-gc-in-java-use-primitives-instead.html
Reading article about primitives vs wrapper objects in Java. Nice to see some graphs and real evidence rather than just gut-feel.
http://vanillajava.blogspot.com/2011/07/low-gc-in-java-use-primitives-instead.html
Way I tend to create a topic branch in git-scm for a specific issue:
git checkout -b # create a local branch
# Do some stuff. We decide that its worth pursuing, so lets add the branch to the remote repo
git push origin [branch-name] # push the local branch to the remote repo
git branch --set-upstream [branch-name] origin/[branch-name] # make branch track remote
# Carry on working in the branch
The first workshop I attended at Velocity was run by Rib Pedde, Todd Willey, and Matt Ray, and discussed the Openstack project. This was less of a workshop, and more of a talk in three parts. Interesting, none-the-less. Openstack is a virtualisation platform which has gained quite a lot of momentum in the last year.
http://velocityconf.com/velocity2011/public/schedule/detail/19970
The majority of the session provided an overview of the different components of OpenStack as they stand today and a look at the project’s road map. It seems that a lot has happened to this project over the last couple of months and they seem to have quite an interesting set of features coming in the next couple of months.
NodeJS seemed to be a passing theme in a number of the talks at the conference, including:
I attended Tim Caswell’s and Bryan Cantrill’s sessions, both of which were great introductions to Node.js hipe
Tim Caswell’s (creationix on twitter/github) workshop was a great demo of Node’s scalability. He spun up a webserver on a private wlan and got the whole room to start pinging various demo apps.
A few things discussed:
Running JavaScript on client and server can avoid the issue of doubling your effort… You don’t cross the boundary all the time if pieces of modular functionality can be run either client side or server side. There’s an opportunity to run more in the server during the period that the Browser’s busy downloading content or engaged in pre-render tasks. Once the app is fully up, you can then progressively do more in the client by shipping the same scripts over the wire. Non blocking IO. Using buffers and memcpy to avoid string builder overhead Some discussion on tooling: node-inspector, DTrace, node -debug, and v8 graphical debug all sound interesting.
Bryan Cantrill’s talk was, in a single word, energetic. Unsurprisingly we saw a lot of DTrace and we heard about a Node.js app he’d build to monitor net traffic during a hackday. I think that Cantrill’s talk can be summarised as Node being the union of the popularity of JavaScript, non-blocking IO, and the Unix APIs (or, as Cantrill puts it “the APIs God intended”).
In summary, there seems to be a lot of hype around Node. And it seems that it’s the mix of JavaScript, Closures, and Non-blocking IO that are capturing the mood. Also because JavaScript never had any IO in the core language, you don’t have to drop the bits of the language that don’t fit the Node.js model (e.g. if you’re using twisted you’re only wanting to use a subset of python). I’ll definitely be playing with it to understand more.
Of course, the backbone of Node is the V8 JavaScript engine, and the theme of JavaScript tuning was definitely strong at Velocity. Another interesting keynote was Douglas Crockford on JavaScript. He was talking about the JavaScript benchmarks and how a lack of good benchmarks had resulted in the wrong kind of optimisations. Recently Crockford created a benchmark by running jslint over jslint. He argued that this provided a much better benchmark as it touched more widely-used patterns (such as closures and prototypal inheritance) than the more common “how fast does this loop execute” tests often found in benchmarks. He also shared some interesting stats on performance gains that the V8 team had been able to make using his benchmark.
I’m bound to forget this little cryptic command to delete branch foo.
git push origin :refs/tags/foo
One of the pre-conference workshops was an excellent session by John Rauser from Amazon. I’ve never been hugely confident at my abilities to do estimation, forecasting, capacity planning etc. It’s a really difficult thing.
I’d heard that Rauser was an excellent speaker, so I attended his workshop on statistics. For anyone interested, Rauser also did a shorter keynote later in the conference, which you can catch on YouTube. A big theme from these discussions was understanding the reduction that your statistical reporting makes. Averages, variances, etc are all summary statistics – but how often to we really think of them as lossy formats?
My main takeaways from both of his talk were to try and understand the lossiness of summary stats. I particularly liked his summary statistics of Moby Dick. Another major theme in his talks was to make time to do deep dives into log data, even if it only means you know how to when something really goes wrong.
It’s a week now since I came back from O’Reilly’s Velocity conference in San Jose so I’ve had a chance to let some of the thoughts settle in my mind. I attended both the main conference and the workshops the day before.
Attending a large tech conference is a great way of getting up to speed with the latest technical themes and meet some great people. Velocity’s three days long, but tacked on the end was DevopsDays – a more informal meet-up of people interested in bringing the traditionally separate roles of development and operations together. Devops was also an important theme at Velocity. Or, as Theo Schlossnagle said in his Velocity keynote on careers… it’s really about *ops. Whatever technology you build, that software’s delivering a service, and whatever that service, it must operate. Or to put it from another way Theo was saying that we should treat ‘operability like security’.
For the last couple of months, I’ve been working within the platform team at Talis. We’re a small team, but have a lot we want to build and manage. Trying to organise ourselves in a devops is something really important to the way we work. Personally, I’ve never felt comfortable with the traditional ‘throw it over the wall’ relationship between software and operations teams. I’ve worked in a number of different kinds of teams before, usually I’ve tried to be a developer who works closely with ops, but I’ve definitely fallen into the us and them trap from time to time. Like agile, devops is not a magic formula, but I definitely feel much more comfortable with everyone being part of the same team.
I’ve decided to blog some of my thoughts/notes from the conference: the posts should start to appear very soon.
Ran into some issues with httpclient not accepting SSL certs for an Amazon S3 url. Wanted to temporarily turn off httpclient’s certificate verification. This how-to was really helpful.
http://javaskeleton.blogspot.com/2010/07/avoiding-peer-not-authenticated-with.html