Tech
In August 2017 a typosquatting attack was discovered in the npm repository with the intention of stealing developers' credentials. This post explains the attack and my efforts to search for similar active attacks.
Cloud
I describe setting up feature branch deployments with Gitlab's Review Apps and AWS Elastic Beanstalk. This gives a fairly straightforward means of setting up automated deployment of PR branches, but I discuss some issues I encountered along the way.
Tech
I found splitting JavaScript applications into separate packages within a single source tree difficult, until I found a tool called Lerna.
Tech
In this blog post I'll be exploring Lexical Scope in JavaScript and answering the question "What is Closure?"
Tech
JVM Roundabout is a meetup in London where all things related to JVM are discussed. The February edition of the meetup focused on microservices. I had to be there!
Testing
Women often possess traits, skills and experiences that lend themselves to critical and sometimes overlooked aspects to being a great tester. This article will explore why and how these predispositions are necessary attributes to excelling in the field of testing.
Testing
I have written about something that I found very interesting, Cognitive intelligence. My blog will contain information about cognitive intelligence,the benefits of testing with cognitive tools, what sectors currently use this, available platforms and finally if cognitive intelligence will take over a tester’s role.
Tech
When is it time to make something a generic re-usable class? And how do you manage the additional complexity of a generic solution? A potential solution lies in an incremental approach.
Tech
Machine learning (ML) has become an increasingly popular field of Computer Science. In the past few years I've found myself working with ML to categorise large sets of data, and Scikit Learn for Python has proved itself to be exceptionally good for the task. This post walks through a simple example of Scikit Learn to categorise handwritten digits.
UX Design
Last week, designers from across the globe gathered for the annual Interaction conference. Here are some of my thoughts and takeaways from the event.
Tech
Conflicts sometimes arise when merging two npm-shrinkwrap.json files from different source control branches. Git might be able to solve some of these - but should you let it, and what should you do if it can't?
Cloud
With an objective of building some docker images on cloud CI infrastructure I introduce one build-template sledgehammer I've been using recently, multi-stage docker builds running in docker-in-docker host container, with examples of AWS CodeBuild and Gitlab CI, and musing on other options.
Testing
Taking the time upfront to consider the focus of your testing can pay dividends. It shouldn’t just be a priority to test early to decrease the cost of fixing issues, it should also be a priority to test in the right way from the start, to ensure we are meeting the needs of our users.
Tech
In highly-visual, rapidly-updating, multi-window, buzzword-laden apps performance is a big concern. With WebWorkers, SharedWorkers and ServiceWorkers we have a number of options for moving complex scripting tasks off the critical path. However, rendering can be more of a dark art. In this post I'll dig into how one browser (Chromium) uses renderer processes and how you can use this knowledge to your advantage.
Tech
Java Optional has been around for a while now. It is a pity that this language feature is not used more often by developers. This is a simple demonstration of how to use it correctly.
Delivery
A discussion of how companies develop rules in line with the values they hold, and how to deal with situations where those rules obstruct you from your job.
Data Engineering
In this quick look at the R language and tools I'll look briefly at the syntax of the language and have a go at creating a few charts with a data set.
Tech
First introduced to me as “upside-down recursion”, dynamic programming is a technique used to write efficient algorithms to solve a wide range of problems, often replacing recursive approaches. Having met many examples in the past few years, this post explores three applications I’ve seen for the benefit of those new to the technique.