- Details
- Written by: Jason Ross
I'm the only software developer in my family, so obviously I get the best laptop! Well actually that's a lie, I tend to use whichever fancy laptop my employer provides me with for work, and for my personal projects I inherit whichever of the kids' laptops has been most recently replaced.
My latest acquisition is an Acer Aspire E5-532, with 8Gb RAM and a 500Gb hard drive. It originally had a 1Tb hard drive but that died, presumably after being carried around school for several years by my son, so that needed to be replaced. Anyway, it's an improvement over the Toshiba I'm writing this on, so I decided to install Ubuntu on the new (well, ex-PS4 - don't ask!) disk.
This, is my story...

- Details
- Written by: Jason Ross
Many languages have the concept of "generators", structures which can be used to produce, or generate, objects of another type. Normally these objects are returned one after another as some sort of iterable collection.
If all of that sounds a little too vague, let's make it more specific: In Python, a generator is a function or object that returns a series of values.

- Details
- Written by: Jason Ross
Have you ever written or used a system that runs perfectly when you test it on your machine, keeps running well through test, but then starts to slow down rapidly when it has to process more data in production?
Does adding more customers cause your system to slow down disproportionately?
When the company CEO stands up at meetings and says “We have x new customers!”, do you smile on the outside, because it's a good thing, but you're also thinking “This is going to cause so many problems!”
If you find yourself asking “Why has this code started to slow down so much?” you're in the right place.
- Details
- Written by: Jason Ross
Iteration is the process of repeatedly executing the same piece of code, usually on different data. This data can be taken from a collection, file, stream or any other source. A source that allows this is called “iterable”, and the object that allows code to iterate across the collection or source is called an “iterator”.
It all seems straightforward so far; let’s take a closer look.

- Details
- Written by: Jason Ross
We're supplied with data every day, but how do we know whether it's accurate, adjusted, inaccurate, or just made up?
Imagine you're the person that your family and friends turn to whenever they encounter figures, because "you know about this stuff". How do you help them? What if your manager asks you to check whether some data is credible or not? What about the figures the media publish? Is there a way to tell who to trust?
Thankfully there are plenty of ways to get an idea of how credible data is, but one that's fairly easy to start with is one that was discovered in the late 19th century, and formalized in the 20th: Benford's Law.
Read more: Are those numbers realistic or fake? Try using Benford's Law

- Details
- Written by: Jason Ross
What Is Poetry?
Poetry is a package and dependency manager for Python. It’s a replacement for the default dependency manager, pip, as well as the packaging tools. It has a lot of advantages, makes things much simpler and it's definitely worth using.
- Details
- Written by: Jason Ross
Picture the scene: you’re in charge of a development team at a start-up, and you’re using AWS to provide your infrastructure so that you can expand your capacity as your company grows. Everything is going well until the CFO wanders over and asks you what’s going on with the AWS bill. You assume the CFO is overreacting, so just to keep the them happy you check over the bill, and discover it’s gone pretty quickly from “reasonable” to “tragic”. How did that happen? And how can you fix it, before people start looking at you as a handy cost saving?