Josh Ghent
-
Just launched, PlanPacer - The easiest way to add payment plans to your app using Stripe
I launched a new microsaas - PlanPacer! PlanPacer offers payment plans for Stripe. Allowing you to create flexible installment payments and boost your conversion rates. Now the elevator pitch is out the way, here is some more information about why and how I built it - as well as some musings on the advantages…
Published
-
Book Notes - The Mezzanine
Nicholson Baker’s The Mezzanine is ostensibly about nothing. An account of a man who purchases shoelaces and milk during his lunch break. That’s it. But within that hour, Baker stretches the mundane into something strangely majestic. A 120-page meditation on escalators, office supplies, bathroom etiquette…
Published
-
Event Driven Architecture Rules of Thumb
Event driven architectures are a fantastic mechanism for powering decoupled services. But they depend on the contract - the actual data points within each event. As with these sorts of things, there is always an "it depends" of what data should go within events. Therefore, this guide is not prescriptive…
Published
-
ClickOps and IaC - which are Pets and Cattle?
Ancient history tells us that a peoples known as the "sysadmins" or "web masters" used to manually configure servers via the archaic command line. These people literally SSH'ed into machines and ran commands on them. Utter animals. And these peoples then needed to baby the servers. Nursing them as a…
Published
-
Learning to Type Fast
Typing is the conduit by which thoughts flow via the keyboard to the computer. Doing this quickly can massively improve not only your productivity but your flow. Remember when you had a phone that looked like this? Remember how slow it was? It took ages to write something - 'wic iz y we rote lyk this…
Published
-
Allgood - Instant healthcheck webpage and API for JS/TS projects
Over the weekend, I shipped a new open source project - allgood. It's an npm module designed to instantly add a /healthcheck page to your app. Out the box it supports Express, Fastify and Hono. It could be adapted to use Next as well (although I haven't tested this). After you set it up, you get a page…
Published
-
Vendor Lock-in is an Imaginary Problem
Vendor lock-in is often cited as a reason to chose on-premise hosting, or to be mindful of "avoiding" it when using the cloud (whatever that means). Whilst there are some compelling arguments to mitigate risks associated with vendor lock-in, I'd argue that this is a completely imaginary problem. 1. You're…
Published
-
DynamoDB Considered Harmful
I think DynamoDB is quite a useful database. But, I'm here to tell you should pretty much never use it whether in a greenfield project or a mature product. Let me explain why. 1. It's inflexibility will slow you down. Initially, DynamoDB's speed and schema-less nature can make development fast. Although…
Published
-
An engineers guide to the Solutions Architecture role
For the past couple of years, I've worked as a solutions architect. Originally I stumbled into the role after being offered a contract, but found I'd been doing something akin to it for years. Coming from an engineering background (rather than business), I found I had to make lots of changes with how…
Published
-
Should I learn to code if AI will replace me?
In the past few years, AI has gone from a nerdy pipe dream to reality. Its use has become commonplace amongst professionals and enthusiasts alike. Some are using it to create art, write tweets or improve their appearance. Although it was predicted that self-driving cars and menial work would be automated…
Published
-
Components of a Great Architecture Diagram
Info - key, author, legend, version history Flow diagrams VPC and markings Services wrapped up Understand the different scopes - overarching be more general "image service" but a more indepth diagram would include the components or even the classes of that service etc. Organise it from right to left…
Published
-
Set your time zone manually when in the Canary Islands
On a recent vacation to the Canary Islands, I decided to book a romantic evening at a sea side restaurant for my wife and I. Dutifully, with plenty of time to spare, we leisurely strolled along the beach and arrived at this restaurant. But, on first glance it was quite empty. Too empty for a restaurant…
Published
-
AWS Summit 2024
I was fortunate this year to attend the AWS Summit at London's ExCeL. In this post I wanted to outline what the event was like (for a first timer), what I learned and other tips I found. What it was like The conference itself is enormous. Over 25,000 people all flocked to the ExCeL in London to worship…
Published
-
Markdown for Slides
Working in tech, if you wanted to "share your knowledge" chances are you used Powerpoint to create a presentation. It's been around forever so can run on anything and, on the surface, is simple to use. But, Powerpoint sucks. It really does. The interface is incredibly cluttered, the snap to grid system…
Published
-
Cool Links from Around the Web
Despite web search providing an interface to a wealth of human knowledge, one thing that it can't crack is finding cool stuff. And that's mainly because cool is relative and hard to quantify. I've stumbled across a bunch of cool sites across the web that you might not have heard of. If you have suggestions…
Published
-
Common phrases that probably aren't true
There are a litany of common phrases that are found on lots of packaging and in marketing materials. The problem is, that most of them aren't true. This is a collection of phrases I've come across that just aren't true and why you should be skeptical of them. "Sustainably sourced" - sustainable doesn't…
Published
-
Tips for Battling Alert Fatigue
When your first outage happens, alerting and monitoring becomes top priority. You don't want to be woken up at 3am again. So you add alerting. Lots and lots of alerting. But soon enough, the alerts start returning false positives and everyone gets used to the alerts. They become background noise. Alert…
Published
-
What people mean when they say - we do TDD
Test-driven development is that - test-driven. Not test passenger. This means that tests come first. What people usually mean when they say “We do TDD” is that they believe that all the code shipped has tests against it. Rarely in my experience is this actually true. [^1] When the common understanding…
Published
-
11ty or Bust
It’s been four years since I last did any major work to my site. But over those years, things have got a little chaotic. Personal websites are usually fairly low down on peoples priority lists. Test coverage, clean code and the like all get thrown out the window in favour of tinkering and writing new…
Published
-
Lambda Warming is an Antipattern
At a certain stage during most monolith to microservice migrations, teams that choose to migrate to Lambda often encounter a classic problem: cold starts. Searching this issue on Google (or DuckDuckGo for those conscious of privacy) yields thousands of results. Strategies abound, from reducing cold start…
Published
-
How to buy a car
Recently, I purchased a new-to-me (used) car. Unfortunately, after I purchased it there was something wrong with it. It wasn't a costly repair but annoying nonetheless. And there are a lot of horror stories of buying used cars. So, I decided to put together a checklist (for myself mostly) that I can…
Published
-
Business Version 2
I have been working as a software engineer for 8 years. Over the past 2 years, I've been freelancing for startups, enterprises and everything in between. The next stage of my business is pivoting away from pure freelancing work to a more complete offering of products and services. TL;DR I launched a…
Published
-
TIL - How to send an SQS message from a Lambda inside a VPC
Sending a message to SQS from a Lambda inside a VPC should be trivial. Unfortunately, this is AWS so they like to make it as complex as possible. Here is the process to follow if you're stuck: Setup The lambda function was in a subnet on the VPC Create a new VPC endpoint with a Full Access policy in…
Published
-
Pull Request Environments in GitHub Actions (with SST, AWS and Cloudflare pages)
Pull request environments are a useful tool to have in your CI/CD pipeline. They allow you to preview your changes in a production-like environment before merging them into the main branch. You can send these environments to stakeholders, QA teams and even customers to request early feedback. Recently…
Published
-
How Part Time has helped me in life
Part time working has been the best career move I've ever made. This change was natural and made a lot of sense. But, I understand it's hard to fathom for many people. Do I just sit around? Do I actually get anything done? I wanted to expand on how I'm working now and why I believe it will be the next…
Published
-
Why are software companies so obsessed with doing anything but work?
Recently, my favourite time building software I've ever had has been developing Loginllama. It's so abundantly simple. Just NextJS pushed to Vercel. I don't write fancy commit messages - just "x". And then deploy straight to production. Creating a new product❌ No development environment❌ No local development…
Published
-
Lifehacks
Inspired by https://guzey.com/lifehacks/ Last updated: 2023-06-09 you'll get far more benefit from reading books than anything on the web Be cautious of people who overcomplicate things be requirements led ask good questions time spend configuring a system (productivity, software, computer) is time wasted…
Published
-
Setup a Repo in Github
I end up creating quite a few repos in Github for customer projects. And I always end up having to remember how to best set them up. In line with the whole "blog-umentation" thing, I thought it would be best to write it down for myself. This setup lends itself to a "modular monolith" setup but can be…
Published
-
SQS, SNS, Eventbridge, DynamoDB - Chosing the right queue system in AWS
AWS has so many different queuing services. SNS Eventbridge SQS Amazon MQ DynamoDB - a database but also can trigger lambda's so it's kind of a queue! For newcomers to AWS, having so many solutions for a seemingly simple problem can be overwhelming. Here is a breakdown of each queuing service and when…
Published
-
Raising £1000 for MSF
TL;DR I'm raising money for Medicins Sans Frontiers by running my first half marathon. You can donate here I love running. It's such a simple exercise. All you need is some good shoes, good music and, ideally, good weather. I love that I can run literally anywhere I am in the world and see new things…
Published
-
Whimsical Software
Software takes itself too seriously. It's time to have some fun. For far too long, software has been designed and created around one single metric - revenue. And often, increasing revenue creates negative behaviour for us - the humans. Designs are created to maximize clicks and to be more addictive than…
Published
-
Devblog - LoginLlama 001
I'm starting work on a new SaaS! I want to document my process because I used to love devlogs on tumblr and tigsource. I am creating an API-as-a-Service that monitors suspicious login attempts. At the moment there is a couple of solutions in this space. But they fall down in a few areas Bad pricing Bad…
Published
-
Rules of Thumb for creating API's
Building good software often starts by having good principles upon which to design it upon. But, principles are high level and so often don't allow for much practical application. On the other hand, rules, although more specific and practical, are used by many as something to bash others over the head…
Published
-
Simple sites
I saw a tweet the other day from Dan Rowden that hit on a class of software I really love. Simple, small, minimalist tools are in ascension. And I like it. Check also:https://t.co/objPWGsriuhttps://t.co/U2i8tW9Qq3https://t.co/GYt5FPPEbbhttps://t.co/snSoIs6UPY https://t.co/CLXFQGqMOW — Dan Rowden ⚡️ …
Published
-
You can't fix engineering culture with communication
It always bothers me that people say that "communication" is the problem in engineering organisations. We have near-constant access to each other via Email, Slack, JIRA and even GitHub PR comments. Saying "communication" blindly is like telling a potentially Olympic runner to "run". That might be part…
Published
-
The Cobra Effect and Software
We like to focus on inputs, not outputs. Inputs are simple. Sugar for baking, metal for factories and petrol for cars. Software is no different. But by focusing on inputs, we often encourage the dreaded cobra effect. Basically, we incentivize bad behaviour. For example, let's say we have metrics for…
Published
-
Five Things I Wish I learnt sooner
I have been a software engineer for the best part of a decade (yikes, I'm old now?). And in that time, I have learnt a great deal about software development - languages, frameworks, architecture and much more. But, since becoming a freelancer, I have learned how to make my work more successful and less…
Published
-
Favourite Subreddits
Most of Reddit is a trash fire, but there are some brilliant pockets of communities. Here is my list of subreddits I occasionally browse. /r/writingprompts /r/culinaryplating /r/itookapicture /r/sysadmin /r/homelab /r/f30
Published
-
Albums I listened to in 2022
In the past couple of years, I started tracking albums I listened to and what I rated them. The motivation was to be able to re-discover music in coming years and to satisfy my tendency to record data about little things. Here is my list of albums I listened to in 2022. Note that a lot of the albums…
Published
-
Onebag
In 2020, my wife and I decluttered 10 carloads of stuff from our home. Since then, we've vowed not to devote our lives to things. We want to focus on travelling more, spending less and generally have more freedom. This ethos of "less" carried over into our travel setup as well. And we've now done a few…
Published
-
Ten Software Architecture Rules of Thumb
I love a good rule of thumb. They are instantly understandable and based on the practice rather than the theory of a particular topic. Through my learnings as a software architect, I have often created these rules of thumb to apply the patterns to other systems. There is always a bottleneck. Even in…
Published
-
Book notes - The Seven Deaths of Evelyn Hardcastle
🧠 Thoughts The Seven Deaths of Evelyn Hardcastle first grabbed my attention when my friend quoted the opening paragraph. I forget everything between footsteps. "Anna!" I finish shouting, snapping my mouth shut in surprise. My mind has gone blank. I don't know who Anna is or why I'm calling her name…
Published
-
Five books
I love books. Books are portals to worlds that others have created. Books are expert knowledge distilled into the everyday. Books can make you cry having been written thousands of years ago. They are true magic. It was natural therefore that, like with Pokemon, I wanted to "catch 'em all'". So I purchase…
Published
-
Book notes - Project Hail Mary
Project Hail Mary is the 3rd major novel to be released by Andy Weir, most well known for The Martian. It chronicles an astronaut afflicted by amnesia attempting to save the earth. You know, the normal every day activities. Project Hail Mary has been my favourite book of 2022 and I've been recommending…
Published
-
What it takes to become a lead developer
"Lead Developer" - now that would look good on a business card. Most developers I have worked with have all been striving after this title. But, many see the word "Lead" and stop reading there. Based on this, the idea is conjured up that a lead developer will command their team, revolutionize the technology…
Published
-
No Calendar
I used to plan everything - individual tasks, lunch breaks, exercise. My favourite phrase in the house was, "have you put it on the calendar?" Now, I don't care. Why? Planning took time. Every week I would religiously put in my time blocks and appointments; this was good for gauging how much (or little…
Published
-
Common objections to CI/CD and why they are wrong
Continuous integration and delivery is something many of us take for granted. In reality, the vast majority of businesses are still using manual testing and deployments. If you’re inside one of those businesses then doubtless, CI/CD has been suggested - but never implemented. The reasons vary but here…
Published
-
Get rid of your retrospective meetings
The end of the sprint rolls around - you know the drill. Pile into a room with the rest of the tech team for 2 hours and discuss how the sprint. The goal of this is to action any improvements that could be made. But that's rarely what happens. What happens is: People rant and don't offer solutions. Teams…
Published
-
Creating my own personal Instagram
This website is my own little corner of the internet. Historically though, this site, has been a bit "distant", a more professional reflection of my own self. Its purpose has been to share documentation on things I have done, and allow people to reach me on other platforms. This site is only a small…
Published
-
How to fix 'Public key authentication failed' for Azure DevOps
If you're using DevOps and tried to clone down a repository with a Mac you might have stumbled across this error. Cloning into 'example-repo'... remote: Public key authentication failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository…
Published
-
Blog Roll
This page will be updated periodically. It is a list of websites that I enjoy reading. The list is in no particular order. Jamie Tanna Carol Gilabert Katy DeCorah Patrick Collison Zach Leatherman Martin Fowler HighScalability Jess Frazelle Julia Evans Troy Hunt Max Bock Semaphore Charity RachelByTheBay…
Published
-
Making the case for CI/CD
If you browse developer forums, continuous integration and continuous delivery will not be new concepts to you. We all love the utopian ideas of being able to open a pull request and commanding an army of robots to do your bidding and get the application tested and shipped. Unfortunately, the reality…
Published
-
Question your Rate limits
If you are building a system with an API, there is a good chance it has a rate limit or you stay awake at night afraid of a DDoS attack. Rate limits are a method to reduce network traffic by putting a cap on the number of times an action (like calling an API endpoint) can be performed in a certain time…
Published
-
Site Upgrades - Gatsby V4 and Webmentions
I was fed up. I was writing a post for my site the other day and was reminded of the fact that I couldn't run the site locally. It was time to fix that, once and for all. I was going to take on the task of lifting my site from the stringed together mess and add some new features along the way. Here's…
Published
-
The Culture of Estimations
In business, moving fast is everything. Sales depend on them, marketing wants to advertise for them and the CEO want's to award themselves a large paycheck without any quarrels. But, it's the software engineers who have to design, build and test the features. And because software is an inherently creative…
Published
-
My journey with carpal tunnel
About 5 years ago, I went through a time when I doubted I could continue programming. I had carpel tunnel syndrome. A repetitive strain injury where the tendon going over the wrist at the base of your hand compresses the median nerve. This compression causes your hands to feel numb, aching in the forearm…
Published
-
Deeply Remove a Key from an Object
Recently I had the problem of removing a specific key from an object. Normally I would use omit from the Lodash or Ramda library. But, there was a catch - I also needed to remove the key from nested structures within the object. Here is a code snippet of how I solved it in NodeJS with Lodash. I'm sure…
Published
-
Creating legacy code is ok
"Legacy code". Words that will strike fear into the hearts of most developers. We hate to work on legacy code, it's complicated, untested and often larger than the observable universe. Worse still, we shudder at the thought that any of our code would be considered "legacy". And so, as developers, we…
Published
-
Questions for Developers to ask at interviews
Interviews are for both the interviewer and interviewee. Largely though, they are designed to ask questions to the interviewee. Recently, I've had a few interviews and was searching for questions to ask the company I was applying to. I realised that there are lots of lists of questions for interviewers…
Published
-
Bookshelf
I believe reading and travel are the best ways to expose yourself to new ideas. Travelling can be expensive. So, largely I "travel" (through time and space) through the books I read. Here is a semi-complete list of the books I own. I have lent many to friends and family and donated others. I prefer to…
Published
-
There is always more
Life can often seem like we don't have enough hours in the day. The media glorifies many who work 80+ hours a week. And there is an attitude that if you're not launching a startup and earning 5k MRR, then you're not doing it right. I wrestle with the thought that I'm not doing "enough". I should be building…
Published
-
Advancing from a Mid-Level to Senior Developer
"Senior" developer is a coveted title amongst software engineers. Many you work with will be promoted seemingly overnight, despite you thinking you're a better engineer. While you stay firmly as a mid-level developer. This is the situation I found myself in. I was curious about what would make me a senior…
Published
-
Quarterly planning for life
Most People Overestimate What They Can Do in One Year - Bill Gates By now, as we enter the fourth month of the year, many of us will have abandoned our New Years' resolutions or lost sight of our goals. I did this for many, many years. I would start January, hopeful that this year was going to be different…
Published
-
Should I split my monolith into microservices?
Likely you have clicked on this article to find the answer to the aforementioned question. The quick answer is - it depends. Rephrase your question Before I explain why try to rephrase your question. What problem are you trying to solve by splitting up your monolith? Answering this will help you to clarify…
Published
-
How to make changes as a Junior Developer
When you start your software development career, you come into a new job with excitement filling your eyes. Think of the cutting edge technologies you will use, collaborating with other amazing engineers and building a fantastic product. Sadly, it doesn't always go like this. It rarely does. And that's…
Published
-
Be friendly and don't ignore Recruiters
Increasingly, I've noticed an increased level of resistance to recruiters among engineers. There has always been a love/hate relationship between the two parties. From the beginning of my career, I always heard "recruiters are bad". And, to be honest, I accepted that as truth for the longest time. But…
Published
-
Mistakes I made as a self-taught developer
Learning to become a software developer is not a trivial task. There is a plethora of guides, tutorials and courses to take. And of course, there is the question of self-teaching or going to university. But no matter, which path you chose you will always make mistakes. I made a tonne of mistakes. And…
Published
-
Building Collaboration with Remote Teams
TL;DR: Provide the tools, empower people to use them and embrace remote work for what it is - remote. Steve Jobs designed Apple Headquarters to maximise the length of time it would take people to get to the bathroom. He did this to increase collaboration stemming from running into others in the corridor…
Published
-
Facing the Legacy Code Monster
I start new jobs like a spelunking caver, exploring all the systems, code and pipelines. I time myself to see how long I can ask questions about a system before I get a dreaded response: "Oh, that's a critical system that handles our core business. A developer wrote it years ago, who has since left.…
Published
-
How to Ship Software Faster
Remember when software came on a physical medium like discs, USB sticks or punch cards? Me either. Software release lifecycles used to be lengthy - years-long in most cases. As software flourished on the web, we grew accustomed to "moving fast and breaking things". This approach has a lot of drawbacks…
Published
-
Cache Auth0 M2M Tokens
Auth0 is an easy to integrate service that handles all your applications authentication needs. But, if you've worked with it before, you'll know it's downfalls. One of them Machine-to-Machine (M2M) tokens; used to authenticate between your services. But the limits are restrictive for serverless infrastructures…
Published
-
How You Work
Learning how you work best is a superpower. Imagine, creating and seeking environments where you succeed best. Likely you remember times where you got into a flow state and produced magic, but you can't pinpoint why. I was in this position and so took some time to figure out how I work best. Product…
Published
-
Maybe don't hire
Increasingly, I've become sceptical of businesses looking to "rapidly scale" their technical teams. All businesses seem to get a certain amount in their backlog, or an urgent request from a large would-be customer, or just too much money and decided that the only solution is to hire at a tremendous scale…
Published
-
Software Beauty
Design is a funny word. Some people think design means how it looks. But of course, if you dig deeper, it's really how it works. Those famous words spoken by Steve Jobs, was the cornerstone of Apples great success in building beautiful products. But these words can be applied, not just to hardware, but…
Published
-
Continuous Delivery to ECS with Terraform
Continuous delivery is something that we're all striving for. I was doing the same, but there was a snag: My terraform code and API code were in separate projects I wanted to make updates to the API code and have it build and update the ECS service I didn't want to manage the container definition separately…
Published
-
Web Performance for Developers on a Deadline
Web performance is a vital part of your business to ensure customers keep returning. One retailer found that by reducing their page load by 65%, they saw a 63% increase in organic traffic. Google is also beginning to use the "core web vitals" to rank your page in search results. Despite this, it can…
Published
-
How to Run Sequelize Migrations in Azure Pipelines
Database migrations are the concept of managing your database schema via reversible, version controlled files. A program is then used to run these "migrations" and keep track of which ones have been run on your database. Migrations are immutable, meaning if you want to change a column name, type or anything…
Published
-
How to Improve Your Typing Speed
Recently, I've started practising my typing each day - for around 5-10 minutes. So far, according to 10fastfingers, I've increased my typing speed from 70WPM to 80WPM. Not much, but I can feel myself getting more "familiar" with the keyboard. In this post, I wanted to dig into why I've started this daily…
Published
-
Super Fast React/Node App Testing with GitHub Actions
A seldom thought of component of performance is that of continuous integration performance. Here at York Press, we are big users of both Azure Pipelines and GitHub Actions. Due to us hosting our Azure pipeline runners, "job minute" restrictions were never a concern from a billing perspective. Although…
Published
-
Solve Your Problems. Not Others.
What is your business? What is your product? What is your core mission? These are questions I ask myself and my clients, continuously. They help delve into what the customers are paying for, and in turn, what your staff are paid for. In the world of flowing VC money, it's often never questioned what…
Published
-
SpellcheckCI
Making sure you have correct spelling on your blog posts is vital to keep readers attention. Unfortunately, it's a laborious process and sometimes things fall through the cracks. Being the nerd I am, I decided I needed a shell script to solve this problem. Thankfully, someone has created an open source…
Published
-
Setting up LightHouse CI for React in GitHub Actions
At York Press, we noticed that our pages were gaining weight. In some cases, pages were loading over 1MB of resources before showing for the customer. This was unacceptable considering the modal broadband speed is around 1MB/s. So, we decided we needed stricter checks. This would ensure that pages are…
Published
-
So, You've Messed Up
So you've messed up... big time. You've dropped the production database, pushed a broken update to production, throttled the API and literally set the internet on fire. Cold sweat gathers on your brow, you stare longingly at your alcoholic beverage of choice and you perhaps start to update your resume…
Published
-
Shutdown Routine
In the current pandemic, it's even more challenging to switch off from work. With many working from home, it can seem impossible to "leave" work in a physical and mental sense. I introduced a shutdown routine to help combat this. It's a practise touted by many "productivity guru's", which made me sceptical…
Published
-
Resumé Red Flags
After looking through tonnes of resumés, they all begin to blend into one. But, I wanted to share some red flags I see that are unique to software developers. It's a mine field to prepare an eye catching, yet informative CV. According to the undercover recruiter, hiring managers spend 5-7 seconds looking…
Published
-
My Advice on Become a Software Developer
Whilst running the MidlandsJS meetup, I've been asked a number of times how to "get into" software development and the industry at large. So that I can clarify my own thoughts (and update them), here is my advice. But, here are two points of advice that I preface my practical advice with: Don't take…
Published
-
Cut to the Chase
Scheduling time with friends and family is even more critical nowadays. But I’ve noticed a trend that goes something like this: “We should get together some time” “Yeah when is good for you” “I’m easy, when works for you” “I’m easy too, could we do a weekday afternoon” “Urrmm, I can’t do Tuesday and…
Published
-
Redesigning my Site - Accessibility, Privacy and 100 PSI Scores
So, things look a little different around here. I took the time to overhaul the previous design of my site into something more simple. But why? This post is meta but bear with me. The three reasons are as follows: Accessibility Performance Privacy Accessibility After hearing a talk by Jadene Aderonmu…
Published
-
Downloading your Favorite YouTube Playlist Automatically
In light of Youtube-DL being taken down from GitHub, I decided to give it a go with a use case I happened to have. Lately, I've been listening to lots of concerts/festival sets that are not available for traditional purchase. Although I have listened to them on youtube, I didn't want to have the web…
Published
-
Using RDS Snapshots
Recently, I had a case where I needed to gain access to an RDS Instance that I had long since deleted. To add insult to injury, the Bastion host to gain access to the Database server had also been deleted and it's VPC, Security Groups and all the other architecture components! Yikes. Fortunately, I had…
Published
-
Improving Koru's API Performance
If you don't know already - I love performance. It solves a genuine frustration for users and provides meaty problems to sink your teeth into. Koru's API performance was a little lacking since we had added a lot of features, rewritten large swaths of code and generally not thought about it, since our…
Published
-
Writing Useful Error Messages
Server-side developers often overlook the fact that they are not immune to considering user experience in the design of their systems. Part of this is consideration around error messages. As I spoke about in my article about crafting quality health checks, people don't get angry when something doesn't…
Published
-
Building Awesome Application Health Checks
For many, having a health check in your application may be somewhat of an afterthought. Maybe your application does have a health check, but you've got no idea if it actually works. I didn't give it much of a thought until I truly understood that one of the key pillars of good development is monitoring…
Published
-
ATS Resiliency
As with all modern enterprise SaaS platforms, Koru has a mechanism to send data about a candidates results back to a clients ATS (Application Tracking system) or CRM (Customer Relationship Management) system. Since Koru was event driven and the traffic is not consistent, the decision (which pre-dates…
Published
-
Rebuilding a Monolith
It's no secret that microservices are the hotness right now (I won't say new at this point because they're fairly well established). But you only have to Google the phrase "Why not to use Microservices" to see a treasure trove of articles about why to be sceptical of this pattern. As with all things…
Published
-
Re-architecting our PDF Generation
When I joined the Koru team, one of the biggest issues with our pipeline was the PDF generation system. We have PDF's in the first place as a nice report that customers get about each of their candidates that takes an assessment on our system. These PDF's are saved to S3 and then we send the customer…
Published
-
Preserving Links whilst Migrating Domains with S3
Domain migrations can be fairly simple things, change the CNAME and bobs your uncle. Difficulties arise when you have two different website systems and existing paths that you want to preserve and the site is run statically with no web server. The latter was the situation we found ourselves in. The Problem…
Published
-
Why Backwards Compatibility is Critical
Backwards compatibility is not something I see discussed much in tech circles. It's all new-new-new, fast-fast-fast. Piling features on top of one another and tightly coupling releases between services. Previously Facebook, the 4th most popular site on the internet no less, had the mantra of "move fast…
Published
-
Sharpening the Saw
Sharpening the saw is Habit 7 in the cringe inducing book entitled "7 Habits of Highly Effective People". This post isn't yet another book review but rather the work we do to make the rest of my work, better, faster and more consistently. The label Covey gave to this work was "sharpening the saw". It…
Published
-
Lightning Fast ZSH Performance
As part of my work to "sharpen the saw", I decided to spend some time improving the performance of various components in my setup. The first target of my attention was ZSH. Why? I open new shell instances constantly and try to live in the terminal as much as possible (including for writing this blog…
Published
-
Personal Infrastructure
After seeing the amazing posts by both Stephan Wolfram and Jess Frazelle, I wanted to chime in on my "personal infrastructure". I've always found stories about how people work, their little scripts and hacks they use and the machines they operate on, to be incredibly compelling - usesthis is a great…
Published
-
How to use Private GitHub Packages on TravisCI
The Problem: It's fairly well documented how to use private NPM packages in a project that uses TravisCI, but what about the GitHub Package Registry? This was the issue I was facing. I was googling all over the net and finally landed on a solution to solve this problem. In practise, TravisCI just boots…
Published
-
How to Create a Pinned Gist Bot in 10 minutes with GitHub Actions
Recently I stumbled upon an awesome page I hadn't seen before awesome pinned gists. The premise of the list is small apps that run GitHub actions on a schedule to update a gist that is then pinned to your profile. There are ones for monitoring your Wakatime, your last tweet or even your Strava Metrics…
Published
-
Managing Application Secrets for Terraform across Teams
TL;DR Terraform stack is deployed via Travis using a script (below) Secrets are shared by storing an encrypted tar file in Git The tar is decrypted by TravisCI and another other team member using secret keys stored elsewhere Variable files and generated dynamically based on the .env Ok, that's a bit…
Published
-
Monitoring Git Leaks in Travis
Recently, we've wanted to add Gitleaks scanning into our repos to keep on top of any potential security issues. I checked out a number of tools such as detect-secrets and trufflehog but eventually I decided to use Gitleaks as the format was fairly CI friendly. There is already a CI version of Gitleaks…
Published
-
Signal vs Noise - Staying Up to Date
Technology is so fast paced that to stay up to date, you need to be learning on a daily basis. However, the internet is so awash with vast swaths of information of varying accuracy and importance that it's difficult to filter the signal from the noise and only consume that which will be of lasting importance…
Published
-
Pentest Aftermath
Recently, Koru had a penetration test done by an independent third party. The actual test took place a little before I had joined but the results only came in afterwards. Having never read through a pentest report, I was curious to see what they would find and more importantly how. Having been listening…
Published
-
Resiliency
At my previous post at CloudCall, I was responsible for the SMS/IM backend. Whilst it was being developed, we made the classic mistake of not worrying about resiliency or testing since we were so stacked with features and had a manual QA department to act as a big bug dragnet. Once things settled down…
Published
-
Gatsby or Bust!
Recently, I moved my website from a static HTML file on GitHub pages (yes actually static) and my blog from Medium. I decided to combine them both and move over to a Gatsby website. Why? I have been wanting to move my blog from Medium for a long time. Since the platform was built, they have struggled…
Published
-
A Guide to Leaving Your Job
Recently, I handed my notice in to my previous job at CloudCall after receiving an new offer at Capp&Co. I won't go into why I chose to leave, but handing my notice in did leave me with the challenge of how to uncouple myself as a Developer from the services that I managed. Jamie Tanna has suggested…
Published
-
Lessons from Battling with Elasticsearch
This is a story of changing requirements being impeded by architecture and software. It’s an age-old adage but I thought it was worth telling this story as a lesson in foresight and blame. The bug goes as follows, CloudCall developed an instant messaging and SMS application that plugged into their existing…
Published
-
Using Grafana for Monitoring you NodeJS Apps
This guide assumes you already have a basic NodeJS API and a Graphite instance configured. Graphs are a great way to monitor your services, and as an added bonus — they look cool. I always looked at companies with giant flat screen monitors with pages of various graphs and thought that was all way over…
Published
-
Why does NTP Exist?
NTP is one of the most essential and complex systems that never gets spoken about. But why? And what even are they? And why do we need them? If you’re like me, you might have known about NTP servers and known they were important to keep clocks in sync. But don’t computers have clocks already? It was…
Published
-
Starting with Why as a Software Developer
Developers are like jackdaws — “oh shiny!” As you progress as a software developer, you should begin to build an innate sense of when something should be done a certain way, perhaps to future proof it in some way or make it more resilient. It’s an odd feeling, but you just get a sense for something.…
Published
-
Architecting the Next Generation of Communication
With the shift to mobile and the statistics of the “younger” generation (hi there) not using phone calls as a means of communication, there is a constant push towards reaching people in a platform agnostic way — via email, LinkedIn, twitter DM, you name it. The challenge arises when you need to create…
Published
-
Resiliency By Design
Resiliency by design in your products architecture is a challenging problem that is rarely tested. Building robust platforms are becoming increasingly important as large server providers such as AWS start to show their cracks in addition to good old fashion human error (we had an engineer take down a…
Published
-
How to Run a Successful Tech Meetup — even if you’re forgetful
A picture taken from the November 2018 LeicesterJS meetup LeicesterJS is born out of the rise of Javascript now being the de facto programming language for a majority of developers. Additionally, we aimed to bring together a tech community in Leicester. I have been running LeicesterJS now for over 4…
Published
-
I don’t know what to say…
The issue raised for the event-stream breach. It’s a grizzly flame war that I would not recommend reading I’m a little late to the party here but after having a couple of conversations at work and with others I wanted to document my thoughts on the recent security issues around the event stream npm package…
Published
-
10 Things I wish I knew before giving my First Tech Talk
Giving the talk — credit https://twitter.com/JamieTanna/status/1029428095223320576 Glossophobia or fear of public speaking is cited as being amongst mankind’s top 10 fears. It related to our inherent fear of failure. Although I have never been afraid of speaking publicly, for even the most experienced…
Published
-
Networking at Tech Meetups
Tech meetups and talks are a great way to get to know fellow developers in your locality. But it can be challenging if you are introverted by your nature. Although you may not be introverted, some find it challenging to approach people when they first attended a meetup. Networking is a core part of why…
Published
-
Tracking Goals in Todoist
“There is always an app for that” is a phrase I heard repeatedly when I was looking at something to keep tabs on my goals, both short and long-term. But you know what, I don’t want an app! I began to consider using Todoist, my task management app for doing this. After all, it’s one of my most used applications…
Published
-
Lessons from Open Source
Contributing to open source is often touted as a great way to be recognized in the software development community, with many heralding their Github profiles as a resumé of sorts. Additionally, open source software developers find their programming abilities enhanced and motivations for their day-jobs…
Published
-
The Art of Good Code Review
Code review is a critical part of any software development process. In theory, it is designed to broaden system knowledge amongst the team and ensure that the code is maintainable and easy to read. Perfecting code reviews can be somewhat of an art, it requires a balance of being picky and not sweating…
Published
-
Principles of Performance
Photo by Cara Fuller on Unsplash On the web, speed is everything. But you knew that right? Rather than throwing percentages and statistics at you about site retention rates, let’s take a look at some key principles to bear in mind when looking to improve your app or website’s performance. These are principles…
Published
-
LinkedIn For Developers
“Oh, not another recruiter!” – my co-worker said, lazily chucking their phone down. “They just spam!”. This is an all too common phrase I hear from developers. I disagree with this sentiment because recruiters can get you good jobs and negotiate on your behalf – it’s in their best interest to do so.…
Published
-
Solve 90% of Google Pagespeed Insights Issues in 30 Minutes
Source: https://unsplash.com/photos/fxAo3DiMICI Performance is a critical factor in site retention rates. Time is money, and there is a laundry list of examples that prove people expect near-instant loading and will navigate off a web page if it does not load in under 3 seconds. Although the Google Page…
Published
-
📱 Zen iPhone
Photo credit: https://unsplash.com/photos/Dl6jeyfihLk Ever since the smartphone arrived in our hands, people everywhere have been utterly entranced by them. Spending never more than a moment without being bathed in white digital light. I consider myself in that crowd. But recently I have been more inclined…
Published
-
Understanding PHP hatred
Pictured: The PHP developer in their natural state of silent contempt It’s an age-old joke to hate on PHP. But why do people dislike it so much? After all, PHP powers 80% of the web (a large majority of that is credited to Wordpress, but still). In this article I break down the main gripes of PHP development…
Published
-
What Tracking My Expenses for a Year Taught Me About Personal Finance
2017 was the year I tracked my finances. I started doing this because I wanted to remove the mystery of where my money was going. I wasn’t overspending per se, but found it challenging to know exactly what I had spent across credit cards, debit cards, cash, etc. Although there are a lot of personal expense…
Published
-
Beginners Database Design Primer
Your boss has just got off the phone with a client who wants a bespoke social network site targeting a niche market. And they want you to head up the project. You’ve never built a social network. Your mind goes to Facebook, Twitter, and Instagram. They’re built by thousands of people with genius level…
Published
-
How to Attend Your First Programming Meetup
Attending your first programming meetup can leave you a little apprehensive. I felt the same! So, I thought it may be useful to break down my first meetup experience and how you can start attending meetups yourself. First meetup #nottsjs pic.twitter.com/2IQ0vImjxW— Josh Ghent (@joshghent) June 13, 2017…
Published
-
Bulletproof Node — Security Best Practises
Make your Node app like this guy System breaches are now commonplace. Stories of IoT devices being compromised, entire countries credit history leaking online as well as thousands of other systems compromised, hacked, infiltrated and destroyed. Now it may seem that from all these stories, that any attempts…
Published
-
How to Learn a Programming Language in Record Time
Note: This article is aimed primarily at beginners who perhaps know a single language but are looking to start learning another. When picking up a new programming language your first port of call might be the documentation, maybe it’s reading through some code on a project you admire or perhaps you learn…
Published
-
What programming language should I learn: or Why it doesn’t matter
Searching ‘What programming language should I learn’ will return you over 7 million results. The first one says Javascript, the next PHP, another extols the virtues of Java and statically typed languages. What even is a statically typed language you might ask? I just want to make apps for my phone! This…
Published