AboutSenior Software Engineer at Rapid7. I make data go brrrrr.
SkillsJava, AWS, Data Ingestion, Kafka, Kubernetes
LocationBelfast, Northern Ireland
Joined devRant on 8/24/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
“Stop trying to name it and name it”
Kevlin Henney adapting Morpheus’ iconic “stop trying to hit me and hit me” with regard to choosing names for classes/functions/vars. Too often we pussyfoot around with computer sciency sounding words instead of just calling it exactly what it is.12
Yesterday I got my first promotion that was based on merit and not because I graduated or moved company 🍻
TL;DR I have to bump a Redis cluster from t3.medium to m6g.large just to get enough network bandwidth even though I have no need of the extra memory.
Debugged an interesting issue today.
I am adding Elasticache to a project to reduce strain on the single node postgres DB.
Deployed a Redis replication group with 2 shards, with multi-AZ replication for resilience.
Everything was going well. We arent caching that much atm so was barely using 100Mb of memory.
Suddenly, when our US region comes online, latency skyrockets and the logs are full of Jedis timeout errors.
Still no issue with memory or node CPU.
The cause? Arbitrary network bandwidth throttling by AWS. The app currently processes about 3,000 requests per second so we were exceeding Amazons random ass allowances which arent documented anywhere.1
Not a rejection per se, but a company I applied to just stopped emailing me after trying to arrange a day for me to come to the office and meet the team, following an informal phone interview. They dragged their heels while I was on leave and by the time they got back to me I was back at work and had limited time. They basically just ghosted me after that.
RDS Proxy is quickly becoming my least favourite AWS offering.
I ranted about it a while back because I had to abandon it for a project because it doesn’t support clusters very well (it only proxys to the primary node).
Well I tried to use it again for a different project with only a single RW instance. Surely it will be ideal?
Nope. It doesn’t support Postgres 13. Only goes up to 12.
What the hell Amazon?
pgbouncer it is I guess.
I’ve had some bad experiences in my career so far, but I wouldn’t go back and change any of it.
I believe I am the engineer I am now because of all the experiences I have had.
Embrace your bad experiences and awful projects, because you gain a greater appreciation for the right way to build things when you’ve witnessed the wrong way first hand.3
The CloudWatch API is an awkward piece of shit.
No convenient way to just ask for the latest value of a metric. Gotta supply a time window and hope metrics were actually reported within that window.
Oh and make sure your timestamps are in ISO 8601 or the request will fail (but the SDK does zero validation so a unit test won’t catch it of course).
Oh and you have to assign an arbitrary ID to each metric query in your request even if you don’t care about mapping the results back to the queries. And the regex for the ID is just fussy enough to be mildly irritating.1
Don’t commit your terraform state to github please, especially if it contains over 20 API keys for various services, and database master passwords.
Not speaking from experience of having to do some frantic rebasing of someones PR *eye twitch*6
working from office for the first time since Covid started.
so many little things I didnt even realise I missed, like an ethernet cable straight into the corp network so I dont have to connect to a VPN just to run a Jenkins build.4
Just use the variable on the line after the promise, it will be populated then…
From a “tech lead”1
mvn clean install: all tests pass
run all tests in IntelliJ: the same 6 tests fail every time
run those 6 tests in IntelliJ: they pass
Shameless blog plug, but it does count as a rant 😅
Seriously folks, stop calling everything a service.
On a past project, every sprint planning was the most unproductive meeting. We were expected to fix all open bugs each sprint, so there was literally nothing to plan. How do you prioritize when the goal is “do everything”? 😂
I guess you could say that my speciality is cloud at scale. I’d say it chose me more than I chose it.
Looking back on it though, I think what I like about my speciality is the unique challenges it brings.
Every speciality has its own set of challenges, like tight resource limits in embedded, or client-server synchronisation in native/mobile.
The challenge of cloud at scale is throughput. Designing systems that can support 100K users making a bazillion requests a second, or a data pipeline firing events that you need to process in near real time without dropping a single one.
The real challenge of course is doing all this within a sensible budget. We have virtually infinite compute but we dont have infinite dollars to spend on it.
Its a fun problem to solve.3
Amazon what the hell.
You provide a cool RDS proxy which can be used to manage connection pooling which is especially useful for concurrent Lambda invocations.
But if you have an Aurora cluster and a read-intensive workload it is basically useless because it only sends traffic to the writer instance.
WTF?! Literally the one use case we have is the one thing it doesn’t do. AAARRRGGHHHH2
sister in law: *gets new laptop*
“I’m not putting that on, I don’t need it”
me: *visible confusion*15
Wondering about how I should continue with my blog.
One the one hand, Ive always liked the video format Uncle Bob uses, and I think Id actually find it easier to talk about my ideas rather than write about it.
On the other hand, I know a lot of people prefer a written article they can read at their own pace.
Thinking I might try a hybrid of some sort, like record a vlog and then write the article afterwards, using the video for reference since I already got the words out.2
Worked on a team where every single sprint planning was a useless meeting because we were expected to deliver everything in the backlog every sprint. So what are we really planning?5
Don’t put pressure on yourself to understand everything. No single person understands it all, that’s why there’s a bunch of us.6
Kong API Gateway in Kubernetes is a load of balls. Spent half a day trying to stabilise the deployment after I bumped its pod resource requests.1
Just a quick rant to express my distaste that the AWS ALB ingress controller for Kubernetes doesnt expose any useful metrics. I just wanna know the target response latency is that too much to ask?1
I ran a big long-running terraform apply and somehow thought it would still work if I locked my laptop.
When I went back the next day (I know lol) terraform was hanging, had to force stop which screwed up the remote tfstate.
Had to spend a whole day manually deleting about 70 AWS resources that terraform created but had no knowledge of because of the corrupted state.9
Blog: Never ever try to turn a rushed demo build into a live product.
Decided to start a software engineering blog after several years of procrastinating.
Just published my first post. Feedback is welcome :)7