Category: Software Development
-
Stop being caught off guard: the art of setting software limits
Are you a software developer building scalable web services serving hundreds, thousands, or millions of users?
-
Take the guessing game out of your metrics: publish counters with zero values
I remember designing a large-scale distributed system as an AWS software engineer. Amazon’s philosophy that “you build it, you own it” means that engineers must, at all times, understand how their underlying systems work. You’re expected to describe the behavior of your system and answer questions based on just a glance at your dashboards. Is…
-
CloudWatch Metrics: Stop averaging,start percentiling
AWS CloudWatch is a corner service used by almost all AWS Service teams for monitoring and scaling software systems. Though it is a foundational software service that most businesses could benefit from, CloudWatch’s features are unintuitive and therefore often overlooked. Out of the box, CloudWatch offers users the ability to plot both standard infrastructure and…
-
Dirt cheap, reliable cloud infrastructure: How to deploy a Python worker using Digital Ocean’s serverless app platform for $5.00 per month in less than 5 minutes
In this blog post, you’ll learn how to deploy Python based worker using Digital Ocean’s Cloud App Platform for only $5.00 per month — all in less than 5 minutes. Deploying a long running process Imagine you’re building an designing a distributed system and as part of that software architecture, you have a Linux process…
-
“Is my service up and running?” Canaries to the rescue
You launched your service and rapidly onboarding customers. You’re moving fast, repeatedly deploying one new feature after another. But with the uptick in releases, bugs are creeping in and you’re finding yourself having to troubleshoot, rollback, squash bugs, and then redeploy changes. Moving fast but breaking things. What can you do to quickly detect issues…
-
Why all developers should learn how to perform basic network troubleshooting
Regardless of whether you work on the front-end or back-end, I think all developers should gain some proficiency in network troubleshooting. This is especially true if you find yourself gravitating towards lower level systems programming. The ability to troubleshoot the network and systems separates good developers from great developers. Great developers understand not just code…
-
Why all developers should learn how to perform basic network troubleshooting
(Also published on Hackernoon.com and Dev.to) Regardless of whether you work on the front-end or back-end, I think all developers should gain some proficiency in network troubleshooting. This is especially true if you find yourself gravitating towards lower level systems programming. The ability to troubleshoot the network and systems separates good developers from great developers.…
-
Software craftsmanship: convey intent in your error codes
ENOTSUP stands for “Error – not supported” and it is one of the many error codes defined in the error header file. I recently learned about this specific error code when reviewing a pull request that my colleague had submitted. His code review contained an outline — a skeleton — of how we envisioned laying…
-
Let’s get lower than Python
Like a huge swath of other millennial, I dibbled and dabbled in building websites —writing in html, css, and javascript—during my youth, but these days, I primarily code (as a living) in favorite programming language: Python. I once considered Python as one of the lower level programming languages (to a certain degree, it is) but as a I…
-
AWS Lambda part 2 – packaging and deploying
I received positive feedback on my AWS Lambda presentation in London. This post discusses how to package and deploy your lambda function. I’m sure there are other ways but I wanted something simple. This allows me to maintain separate enviroments (i.e “dev”, “production”). Makefile I use Make to create a package (i.e “sample-app.zip”). The dependencies…
-
Monitoring background processes with SumoLogic
This post discusses one way we monitor our background process – which is different than how we monitor our web services. It’s difficult when you can’t send a request/poll the service. I wanted something more than checking if the process is alive. One solution we came up with is is using syslog with a log…
-
SpeedCurve Library: Travis CI + coverage + tox
I’m writing a python library (speedcurve.py). At work, we’re using SpeedCurve to track our web performance. SpeedCurve’schangelog reveals can trigger a deployment (and a series of tests). I’m replacing our curl+ansible commands with this. I plan on integrating this with slack as well. This project is heavily influenced by github3.py. I’ve been contributing frequently (plan…
-
Implementing Licenses API for github3.py
I came across this license issue while searching on GitHub. So, I thought I’d give it a shot. I pinged sigmavirus24 in #github3.py seeing if this was a feature I could implement. He gave the thumbs up and I was off. Testing manually first Before any implementation, I always like to get a better understanding…
-
Contributing to github3.py
I’ve always been scared of open sourcing, despite wanting to get involved for a long time? Why? For a long time, I’ve programmed in isolation. But, I did enjoy it. Unfortunately, this leaves little (to none) opportunity for feedback and critism. Afraid of rejection? Afraid of not appearing as smart as I think I am…
-
Mocking boto exception
I was getting so frustrated. I knew how to raise the exception with side_effect=. But, how do you mock the exception? try: connection = connect_to_sqs except BotoServerError as m: if m.error_code == “AlreadyExistsException” To get it to work, I inherited the exception class – BotoServerError from boto.exceptions import BotoServerError class MockBotoServerError(BotoServerError): def __init__(self, error_code) self.error_code…