How to reduce your AWS costs by avoiding unnecessary NAT Gateway usage
In this post we explore how you can pause a Step Function, using Task Tokens, while waiting on an external process to be completed
In this post we explore using React Hooks with Redux.
AppSync and DynamoDB - name a more iconic duo!? I’ll wait…
In this tutorial, we’ll look at how you can leverage AWS CDK v2 to deploy an AppSync GraphQL API behind AWS WAF, using managed rules to protect it against the...
In this post we look at how to trigger virus scanning of files when they are uploaded to S3 utilising AWS CDK and Lambda container images
Spend less time waiting on deployments with CDK hot swaps
5 need to know lessons for any AWS Cloud Development Kit users
In this post, Head of Learning Garth Gilmour, will make predictions for the tech industry in 2022
In this post we see how to set up an OpenSearch domain with a DynamoDB source
High performance teams consistently outperform other teams by a significant factor. But why is this - what is the secret sauce that allows one group of individuals to outshine another?
How can we utilise the const assertion in TypeScript to flip the script and define types from immutable data?
Ever wish you could combine the portability of containers, with the scalability of Lambda functions? Well now you can!
Thoughts on why the OODA loop as applied to agile delivery is flawed or should even be considered harmful.
If you thought the 10X Developer concept was just a myth, think again. In this article Garth Gilmour convinces you otherwise
Developer advocacy is an extremely rewarding job but is it all sunshine and meadows or is there a darker flip side to this role?
Thoughts on the move away from consultancy towards developer empowerment through advocacy and mentoring.
In this 3rd article in our series on using React Hooks with TypeScript, we will show how to enhance 'primitive' hooks into more complex functions, and highlight some of the...
Garth discusses his beliefs that junior developers should be given a safe space of blissful ignorance to play in, and only slowly exposed to the cruel realities of business. What...
Each December, our Head of Learning reflects on emerging trends, and makes some foolish predictions for the year to come. Read on to see that the future holds...
Let’s build a web-based, programming-related advent calendar using AWS Lambda, Python, Google Sheets and CDK. No chocolates I’m afraid, but along the way we’ll learn a bit about Serverless Python
In this follow-up to our introductory article to using React Hooks with TypeScript, we’ll continue to discuss how leveraging types & type safety can make life easier when writing components...
In this post, we delve into using TypeScript with React Hooks to develop in the front-end. Continuing our series of posts on the practical applications of TypeScript, and introducing another...
Ok, ok, I know the title is contentious but don't start with me. I've been locked up for over 9 weeks now due to COVID-19, home schooling my kids, doing...
Typically, we use Domain Specific Languages (DSLs) in configuration scenarios (think Gradle). But we can also use them internally to make our applications easier to understand.
Koin provides a modern DI framework which supports Kotlin idioms and is usable across conventional, mobile and Cloud based applications.
KotlinPoet provides a simple API for generating Kotlin source files. It allows you to automate what would otherwise be tedious and repetitive tasks.
Why date and time is so difficult with older Android versions and the best approach to solve this
A look at how both statically and dynamically typed languages have pros and cons and how we should identify the benefits and choose languages that provide the best of both...
Last week my dear colleague Ryan wrote a blog post in praise of dynamic types. I would ask you not to judge him too harshly for this. It is a...
‘Effective Kotlin' follows in the long line of renowned Effective programming books. But is it a worthy addition to the series?’
Modern programming languages can be categorised in many ways, but the most common approach is to slice them by how they handle Types. Is using strong static typing a prerequisite...
The SOLID principles of software design provide guidelines on how we can make our code more readable, maintainable and extensible. They are universally accepted maxims that all engineers should...
In software, there is a constant tension between sufficiency - the need to say something in as few words as possible - and readability - the need to make things...
A summary of the first meetup from the Kotlin Belfast User Group
As another busy year of training draws to a close it's traditional that I stick my head above the parapet and make some predictions for the New Year. For what...
As an industry, we promote an education in science, technology, engineering and maths as the basis of software development, but in doing so, we risk ignoring the most important skill...
The MVVM design pattern allows us to write code that is much easier to maintain, test, and reason about in Android development. In this post, we will describe how to...
5 Reasons Why Android development is better using Kotlin
When to use defensive checks and assertions in code and when to avoid
How we are revolutionising video and RTP/RTSP streaming on mobile devices
How to use native dependencies with AWS Lambda and Functions as a Service
The third in a series of three, introducing Functional Programming concepts.
The second in a series of posts introducing Functional Programming concepts. This post looks at the closely related concepts of Currying and Partial Application
With the increasing adoption of functional programming there are strange terms slowly moving their way from academic obscurity to mainstream software engineering. Thanks mainly to the React and Redux frameworks,...
Installing stuff is hard. Installing stuff is messy. Installing stuff is time consuming/expensive. As a trainer, I am constantly moving between different technology stacks, running different applications,...
Introduction to using Spring Boot with Dropwizard Metrics
A brief introductory tutorial on how to combine ES6 and Angular 1
An introduction to using ObservableCollection in Rx and C#
How to create continuous delivery pipelines in Jenkins 2.0
A guide to using Ansible to automatically setup your OSX development environment
The importance of listening to your tests as a sanity check on your design
SIMD in Depth - Performance and Cost in C# and C++ (Part 2 of 2)
An introduction to SIMD and parallelism on a Single Core - SIMD with C# (Part 1 of 2)
An overview of the latest features in C# 6.0 and how they will simplify your code
Xamarin - a panacea for cross-platform mobile development?
Reading the tea leaves - predicting what's in store for 2016 and beyond
3 essential things to check before you commit and push your changes to version control
Quick introduction to using RxJava in Java 7 and Java 8
Listen to the people behind the Reactive Trader platform on HanselMinutes and hear them speak at React
Opinion piece on why Java 8's attempt to jump the shark is just that
Java 8 attempts to 'jump the shark' with the introduction of streams, lambdas and 'FP'
Introduction to the Option, Optional and Maybe Types in Scala, Java and C#
Opinion piece on the state of test driven development and unit testing
A first step into using the Lucene text search engine library
Why is simplicity such an elusive quality in many developers code