GraalVM native image multistage Docker builds
GraalVM native image can be used to create tiny Docker images as described here.
Posted by
Christopher Batey
on
May 28, 2020 ·
Tiny docker images for Java with GraalVM native image
Building small Docker images when using Java is hard. Even with Alpine and a cut...
Posted by
Christopher Batey
on
May 28, 2020 ·
CPU Shares in Kubernetes
In this article we’ll explain how cpu_shares are used when setting Kubernetes requests and limits....
Posted by
Christopher Batey
on
May 28, 2020 ·
CPU Shares for Docker containers
In this article we’ll explain CPU shares, so you can understand how to set them...
Posted by
Christopher Batey
on
May 28, 2020 ·
CPU Quota for Docker and Kubernetes
In this article we’ll explain CPU quota and period, so you can understand how to...
Posted by
Christopher Batey
on
May 28, 2020 ·
The JVM in Docker 2018
Threeish years ago I worked with JVMs inside Docker running in Kubernetes. I discussed some...
Posted by
Christopher Batey
on
November 17, 2018 ·
Functional Scala for everyone
This is the start of a set of blog posts to encourage and educate developers...
Posted by
Christopher Batey
on
July 08, 2017 ·
Function composition over layers
In mainstream OO you often come across a layered or hexagonal architectures with layers such...
Posted by
Christopher Batey
on
July 08, 2017 ·
Dealing with failures
If you haven’t read the first article in the series I suggest you do so...
Posted by
Christopher Batey
on
July 08, 2017 ·
Flame graphs and perf-top for JVMs inside Docker containers
To learn about flame graphs and perf with Java see Brendon Gregg’s post and a...
Posted by
Christopher Batey
on
November 04, 2016 ·
Using perf to spy on a docker container's system calls
I’m a developer and now accidental platform person who now manages a lot of servers...
Posted by
Christopher Batey
on
November 01, 2016 ·
You can't average percentiles
One of the first things I check when looking at a new dashboard is for...
Posted by
Christopher Batey
on
September 11, 2016 ·
Cassandra User Defined Aggregates
I previously posted about Cassandra UDFs. It is worth reading that post before carrying on...
Posted by
Christopher Batey
on
April 14, 2016 ·
Cassandra SSTable attached secondary index
Cassandra 2.1 has secondary indexes, Casandra 3.0 introduced Materialized views. Now Cassandra 3.4 has a...
Posted by
Christopher Batey
on
April 13, 2016 ·
Cassandra User Defined Types
User defined types were introduced in Cassandra 2.1.
Posted by
Christopher Batey
on
April 11, 2016 ·
Cassandra User Defined Functions
As of version 2.2 Cassandra supports user defined functions. I wrote about these a while...
Posted by
Christopher Batey
on
April 11, 2016 ·
Cassandra ThreadPool statistics
Cassandra uses a lot of thread pools under the covers. You can get information about...
Posted by
Christopher Batey
on
April 08, 2016 ·
Cassandra metrics
Cassandra exposes a lot of metrics. Lets have alook at them in a very rough...
Posted by
Christopher Batey
on
April 08, 2016 ·
Cassandra ColumnFamily metrics
Last time we looked at Cassandra’s ClientRequest metrics. However they only take you so far...
Posted by
Christopher Batey
on
April 08, 2016 ·
Cassandra ClientRequest metrics
Cassandra records a set of ClientRequest metrics that record min, max, mean as well as...
Posted by
Christopher Batey
on
April 06, 2016 ·
Essential shell tools
I spent far too much of my life on a computer using the default terminal...
Posted by
Christopher Batey
on
March 11, 2016 ·
A collection of tech talks I think we should all watch
An incomplete list of talks that I enjoyed. I'll add more and summaries at some...
Posted by
Christopher Batey
on
August 05, 2015 ·
Stubbed Cassandra 0.9.1: 2.2 support, query variables and verifification of batches and PS preparations
Version 0.9.1 has a few nice features and has reduced a lot of technical debt....
Posted by
Christopher Batey
on
July 31, 2015 ·
Cassandra 3.0 materialised views in action (pre-release)
Disclaimer: C* 3.0 is not released yet and all these examples are from a branch...
Posted by
Christopher Batey
on
July 07, 2015 ·
A few more Cassandra aggregates...
My last post was on UDAs in C* 2.2 beta. C*2.2 is now at RC1...
Posted by
Christopher Batey
on
July 03, 2015 ·
Cassandra Aggregates - min, max, avg, group by
Disclaimer: all this was against 2.2-beta so the syntax may have changed.
Posted by
Christopher Batey
on
May 28, 2015 ·
Building well tested applications with SpringBoot / Gradle / Cucumber / Gatling
I am a huge test first advocate. Since seeing Martin Thompson speak I am now...
Posted by
Christopher Batey
on
May 10, 2015 ·
Strata workshop: Getting started with Cassandra
Downloading and installing Cassandra:
Posted by
Christopher Batey
on
May 04, 2015 ·
Cassandra anti-patterns webinar: Video and Q&A
Last week I gave a webinar on avoiding anti-patterns in Cassandra. It was good fun...
Posted by
Christopher Batey
on
March 27, 2015 ·
Using Gradle as a poor man's Cassandra schema management tool
I work across a desktop and two laptops so reproducible builds mean a lot to...
Posted by
Christopher Batey
on
March 17, 2015 ·
Pushing metrics to Graphite from a Spring Boot Cassandra application
If you're going down the microservice rabbit whole using frameworks like Spring Boot and Dropwizard...
Posted by
Christopher Batey
on
March 16, 2015 ·
Cassandra schema migrations made easy with Apache Spark
By far the most common question I get asked when talking about Cassandra is once...
Posted by
Christopher Batey
on
March 13, 2015 ·
Cassandra anti-pattern: Logged batches
I've previously blogged about other anti-patterns:
Distributed joins
Unlogged batches
Posted by
Christopher Batey
on
March 12, 2015 ·
A simple MySql to Cassandra migration with Spark
I previously blogged about a Cassandra anti-pattern: Distributed joins. This commonly happens when people move...
Posted by
Christopher Batey
on
February 18, 2015 ·
Cassandra anti-pattern: Misuse of unlogged batches
This is my second post in a series about Cassandra anti-patterns, here's the first on...
Posted by
Christopher Batey
on
February 09, 2015 ·
Testing Cassandra applications: Stubbed Cassandra 0.6.0 released
Stubbed Cassandra (Scassandra) is an open source test double for Cassandra. Martin Fowler has a...
Posted by
Christopher Batey
on
February 03, 2015 ·
Unit testing Kafka applications
I recently started working with Kafka. The first thing I do when start with a...
Posted by
Christopher Batey
on
February 03, 2015 ·
Cassandra anti-pattern: Distributed joins / multi-partition queries
There’s a reason when you shard a relational databases you are then prevented from doing...
Posted by
Christopher Batey
on
February 02, 2015 ·
Spark + Cassandra: The basics + connecting to Cassandra from spark-shell
A lot of people are getting excited about Apache Spark. The release of the open...
Posted by
Christopher Batey
on
January 26, 2015 ·
Spark 1.2 with Cassandra 2.1: Setting up a SparkSQL + Cassandra environment
In my previous post on Cassandra and Spark I showed how to get a development...
Posted by
Christopher Batey
on
January 21, 2015 ·
Wiremock: Now with extension points (open source == awesome)
I have been using Wiremock as my preferred HTTP test double for some time now....
Posted by
Christopher Batey
on
January 06, 2015 ·
Getting started: Cassandra + Spark with Vagrant
I play with a lot of different technologies and I like to keep my work...
Posted by
Christopher Batey
on
December 22, 2014 ·
Streaming large payloads over HTTP from Cassandra with a small Heap: Java Driver + RX-Java
Cassandra's normal use case is vast number of small read and write operations distributed equally...
Posted by
Christopher Batey
on
December 08, 2014 ·
Cassandra summit EU - British Gas, i20 water, testing Cassandra and paging!
Yesterday was the EU Cassandra Summit in London, 1000 crazy Cassandra lovers. I've only just...
Posted by
Christopher Batey
on
December 05, 2014 ·
Talking about Cassandra at the LJC open conference 2014
The LJC conference is a yearly event for Java/JVM developers in London to get together...
Posted by
Christopher Batey
on
December 01, 2014 ·
Talking at @skillsmatter for the LJC about fault tolerant microservices
Had a great time giving a talk on building fault tolerant micro services at skills...
Posted by
Christopher Batey
on
November 07, 2014 ·
Building fault tolerant services: Do you handle timeouts correctly?
One of the simplest sounding requirements that you might get as a software engineer is...
Posted by
Christopher Batey
on
October 21, 2014 ·
Using Hystrix with Dropwizard
I've previously blogged about Hystrix/Tenacity and Breakerbox. The full code and outline of the example...
Posted by
Christopher Batey
on
August 23, 2014 ·
Stubbed Cassandra at Skills Matter
Yesterday I gave a talk on how to test Cassandra applications using Stubbed Cassandra at...
Posted by
Christopher Batey
on
August 21, 2014 ·
RabbitMQ and Highly Available Queues
RabbiqMQ is a AMQP broker with an interesting set of HA abilities. Do a little...
Posted by
Christopher Batey
on
August 07, 2014 ·
Getting started with Hystrix and Tenacity to build fault tolerant applications
Applications are becoming increasingly distributed. Micro service architecture is the new rage. This means that...
Posted by
Christopher Batey
on
August 04, 2014 ·
Rabbit MQ vs Apache QPID - picking your AMQP broker
Two of the top AMQP brokers are RabbitMQ and QPID. Which one is for you?...
Posted by
Christopher Batey
on
July 31, 2014 ·
Installing Cassandra and Spark with Ansible
I am currently doing a proof of concept with Spark and Cassandra. I quickly need...
Posted by
Christopher Batey
on
July 10, 2014 ·
Behaviour driven testing with Cucumber-JVM and Stubbed Cassandra
So you're tasked with building a service that facades your company's legacy user management system....
Posted by
Christopher Batey
on
June 15, 2014 ·
The modern developer: Understanding TCP
A couple of years ago I am not sure when interviewing candidates that I would...
Posted by
Christopher Batey
on
June 15, 2014 ·
Overriding Spring Boot HTTP status codes for health pages
One thing I found a little baffling when I started using spring boot was that...
Posted by
Christopher Batey
on
June 13, 2014 ·
Using Stubbed Cassandra's new JUnit rule
In my first post about unit testing Java applications that use Cassandra you had to...
Posted by
Christopher Batey
on
June 07, 2014 ·
Unit testing Java Cassandra applications
I often get asked what is the best method for unit and and integration testing...
Posted by
Christopher Batey
on
June 04, 2014 ·
Introducing Scassandra: Testing Cassandra with ease
Scassandra (Stubbed Cassandra) is a new open source tool for testing applications that interact with...
Posted by
Christopher Batey
on
May 24, 2014 ·
Using Stubbed Cassandra: Unit testing Java applications
My first article on Scassandra introduced what it is and why I've made it. This...
Posted by
Christopher Batey
on
May 24, 2014 ·
Testing your RESTful services with Groovy, Spock and HTTPBuilder
I like to test the HTTP portion of the RESTful web services I build in...
Posted by
Christopher Batey
on
February 14, 2014 ·
Akka: Testing messages sent to an actor's parent
I've blogged previously about testing messages sent back to the sender and to a child...
Posted by
Christopher Batey
on
February 11, 2014 ·
Testing Scala Futures with ScalaTest 2.0
Recently I was writing integration tests for a library that returned futures. I wanted simple...
Posted by
Christopher Batey
on
February 06, 2014 ·
Akka: Testing messages sent to child actors
I previously blogged about testing messages sent back to the sender. Another common scenario is...
Posted by
Christopher Batey
on
February 05, 2014 ·
Akka: Testing that an actor sends a message back to the sender
A common pattern when using actors is for actor A to send a message to...
Posted by
Christopher Batey
on
January 14, 2014 ·
Installing Cassandra 2.0 on Ubuntu
Update your apt source list with the following:sudo vim /etc/apt/sources.list #Add at the bottomdeb http://www.apache.org/dist/cassandra/debian...
Posted by
Christopher Batey
on
October 02, 2013 ·
Using Cassandra on Mac OSX
I posted some time ago about installing Cassandra on Mac OSX. Admittedly I generally use...
Posted by
Christopher Batey
on
October 01, 2013 ·
Cassandra: Datastax Java driver retry policy
The Datastax Java Driver for Cassandra exposes its strategy for retrying via the following interface:...
Posted by
Christopher Batey
on
October 01, 2013 ·
Talk: Introduction to Cassandra, CQL, and the Datstax Java Driver
Presenter: Johnny Miller Who is he? Datastax Solutions Architect Where? Skills matter exchange in London I went...
Posted by
Christopher Batey
on
September 25, 2013 ·
Scala, MongoDB and Casbah: Dealing with Arrays
Get hold of a collection object using something like this: scala> val collection = MongoClient()("test")("messages")...
Posted by
Christopher Batey
on
September 22, 2013 ·
Scala and MongoDB: Getting started with Casbah
The officially supported Scala driver for Mongo is Casbah. Cashbah is a thin wrapper around...
Posted by
Christopher Batey
on
September 20, 2013 ·
Git + Tig: Viewing Git history from command line
Git is great. The output from git log is not!One of my favourite tools to...
Posted by
Christopher Batey
on
September 14, 2013 ·
Scala: What logging library to use?
Having investigated a few options I have decided on SLF4J + Logback + Grizzled. The...
Posted by
Christopher Batey
on
September 14, 2013 ·
Scala: SBT OutOfMemoryError: PermGen space
When starting out with Scala/SBT I very quickly ran into perm gen issues followed by...
Posted by
Christopher Batey
on
September 01, 2013 ·
Book Review: Driving Technical Change: Why People on Your Team Don't Act on Good Ideas, and How to Convince Them They Should
http://www.amazon.co.uk/Driving-Technical-Change-People-Convince/dp/1934356603 Author: Terrence Ryan http://terrenceryan.com/about/ Before reading a technical book I tend to look at...
Posted by
Christopher Batey
on
August 31, 2013 ·
Groovy MockFor: mocking multiple invocations of the same method with different arguments
Coming at Groovy from a Java background it wasn't long before I wanted to see...
Posted by
Christopher Batey
on
August 18, 2013 ·
Gradle, Groovy and Java
I've been moving my projects from Maven to Gradle and it has given me my...
Posted by
Christopher Batey
on
August 16, 2013 ·
I don't fix bugs any more
One part of being a software engineer that I used to enjoy was the satisfaction...
Posted by
Christopher Batey
on
August 15, 2013 ·
I can go on holiday whenever I like: how pairing with regular swaps make my life easier
I'm extremely keen and enthusiastic. When I'm working, if there is someone who knows more...
Posted by
Christopher Batey
on
August 15, 2013 ·
Cassandra vs MongoDB: Replication
What is replication?Most databases offer some way to recover data in the event of hardware...
Posted by
Christopher Batey
on
August 08, 2013 ·
Cassandra vs MongoDB: The basics
Cassandra and MongoDB are two of the more popular NoSQL databases. I've been using Cassandra...
Posted by
Christopher Batey
on
July 29, 2013 ·
Uncle Bob: Automated acceptance tests
Yesterday I went to see Uncle Bob at the Skills Matter Exchange in London. Having...
Posted by
Christopher Batey
on
July 09, 2013 ·
Mocking Iterable objects generically with Mockito
I often find my self having to mock iterable objects. At times I've created a...
Posted by
Christopher Batey
on
June 01, 2013 ·
Time series based queries in Cassandra 1.2+ and CQL3
Cassandra is fantastic for storing large amounts of data, and as of 1.2/CQL3 working with...
Posted by
Christopher Batey
on
May 25, 2013 ·
Installing Cassandra on Mac OS X
I've recently posted some more tips on using Cassandra on Mac OSX: Cassandra on Mac If...
Posted by
Christopher Batey
on
May 24, 2013 ·
Functional Programming for the Object-Oriented Programmer: Exercise 1 & 2
The first section of this book introduces you to Clojure - mainly how the read...
Posted by
Christopher Batey
on
April 05, 2013 ·
Getting started with Clojure
The LJC book club is moving on to the book Functional Programming for the Object...
Posted by
Christopher Batey
on
April 04, 2013 ·
From Spring to Guice
For the past two and a half years I have worked primarily on standalone Java...
Posted by
Christopher Batey
on
February 20, 2013 ·