Home » Archives for Shaun Abram

Author Archives: Shaun Abram

Service Mesh: Istio and AWS App Mesh

java-interview-questions-answers

One of the big announcements at AWS re:Invent this week was the AWS App Mesh. Before talking about it though, let’s look at what the heck a mesh is anyway… What is a service mesh? A service mesh is an infrastructure layer for microservice architectures. It handles communication concerns between services, making that communication more visible (or “observable”) and manageable. More ...

Read More »

Top 5 announcements from AWS re:Invent 2018

java-interview-questions-answers

AWS re:Invent has just completed. It was a huge event with 50,000+ attendees across 7 of the biggest hotels in Vegas, and many new service announcements. Serverless continue to get lots of attention with new lambda enhancements and better container support. The “hybrid” model of using your own datacenter in conjunction with a cloud provider has been fully embraced by AWS ...

Read More »

Test Doubles: mocks, dummies and stubs

Most classes have collaborators. When unit testing, you usually want to avoid using real implementations of those collaborators to avoid test brittleness and binding/coupling, and instead use Test Doubles: Mocks, Stubs and Doubles. This article references two existing articles on the subject: Mocks Aren’t Stubs, by Martin Fowler and The Little Mocker, by “Uncle” Bob Martin. I recommend them both. Terminology I am going to ...

Read More »

An introduction to REST

REST, or Representational State Transfer is an architectural style, or more simply, a set of constraints. We will look at the constraints REST imposes for web apps, but some highlights are:               Uniform interfaces: all resources are identified by URIs (think: links) It relies on a stateless, client-server, cacheable communications protocol (think: HTTP). Interaction with resources is ...

Read More »

AssertJ > Fest > Hamcrest

I have previously blogged about Hamcrest, and using its assertThat methods in preference to JUnit’s Assert. However, I quickly after discovered FEST Assertions, and happily switched to it. It provides the same improved test readability and improves failure messages as Hamcrest, but has the extra benefit of enabling IDE auto completion, rather than having to search through package and class docs to find the right matcher. Unfortunately, Fest seems to ...

Read More »

Microservices

A microservice is a small, focussed piece of software that can be developed, deployed and upgraded independently. Commonly, it exposes it functionality via a synchronous protocol such as HTTP/REST. That is my understanding of microservices, at least. There is no hard definition of what they are, but they currently seem to be the cool kid on the block, attracting increasing attention ...

Read More »

Keyboard shortcuts in IntelliJ

I attended a talk by Hadi Hariri at JavaOne last week. He introduced a whole bunch of IntelliJ keyboard shortcuts I was not aware of. Very useful talk. I have listed some of the most useful ones below. Cmd-1: Move focus to the Project window While there, type any class name (including using Camel Case e.g. HW to find HelloWorld), ...

Read More »

Live Templates in IntelliJ

As described here, IntelliJ’s live templates let you easily insert predefined code fragments into your source code. I have posted some of my most used templates below, a link to my complete list of template files on GitHub (as a reference for myself when I setup new IntelliJ environments) and the steps I took to add the IntelliJ settings file ...

Read More »

How to add an IntelliJ project to GitHub

Although the GitHub docs contains good info on how to add an existing GitHub project to your local machine, how to add an existing (unversioned) project from your local machine to GitHub was a little less clear to me. Here are the steps I use. From IntelliJ Select ‘VCS’ menu -> Import in Version Control -> Share project on GitHub. ...

Read More »