
- Details
- Written by: Jason Ross
It’s easy enough to choose an item at random from a collection, if they all have the same probability of being chosen. When each of them has its own probability though, things get a little more complicated.
Read more: Choosing An Item At Random Depending Upon Its Odds

- Details
- Written by: Jason Ross
Banks, financial institutions, governments and public companies all want to see the future. Not in a crystal ball and tarot cards kind of way, but in a way that allows them to forecast economic events, share prices, voting patterns, disease spread and so on. They ways they do this vary, and usually involve a lot of expensive hardware and even more expensive people, but many of the underlying methods used are reasonably understandable. They can get a little involved though, so this is the first in a series of articles about them.
I’ll start with the basics, and then get into the more interesting stuff...
Read more: Simulating The Future – Part 1: A Brief Introduction to Markov Chains

- Details
- Written by: Jason Ross
The first two prime numbers articles I wrote (Prime Numbers Part 1 - Introduction and Prime Numbers Part 2 - Generating Primes) were written in a different country, on a different PC (with a CRT monitor!) in an old version of C#, and were uploaded to my website onto a different CMS (The publishing dates on the articles are actually wrong by several years!). It was a long time ago, and many things have changed; it’s probably about time I took another look at the subject.
Read more: Prime Numbers Part 3 – Revisited. Optimized Primes!

- Details
- Written by: Jason Ross
Google will give you this advice when you rely on a web font; by default when a web font is downloading, the browser will display nothing. Once the font has downloaded, the text will appear, but until then any text using that font is invisible. A better behaviour is to display the text immediately using a system font, download the web font, and then reformat the text using the downloaded web font. This allows the viewer to start reading the text immediately, and will minimize the amount of reformatting that the browser has to do. So how do you actually do this?

- Details
- Written by: Jason Ross
Now that it’s been a while since I last made any performance-related changes to my HTML web site (Updating An Old Web Site To HTML5 - Part 3 - Responsive Web Image Layout With srcset And CSS was published in January 2019) I decided to take another look and see what Google thinks of it now. Google Analytics made several suggestions that were common to many of the pages on my site, so I decided to work my way through them one at a time and see what effect they had.

- Details
- Written by: Jason Ross
AWS Lambda is an event-driven, serverless platform allowing you to produce anything from small, simple routines to larger, complex systems that run in an environment with their resources automatically managed by AWS.
You can write lambdas in most languages. The code is run on a Linux platform and can be configured to have access to any of your other AWS resources. Recently I’ve been writing some lambdas in Python, and they have some dependencies on external packages. It’s not immediately obvious how to make this work, so that’s the source of the problems covered by this article.
Read more: Creating An AWS Lambda With Dependencies Using Python
- Details
- Written by: Jason Ross
Using the requests-oauthlib package in Python to obtain an OAuth2 token doesn’t always work. If you’re using the standard back-end example code and calling some APIs then you may receive an error that simply states:
“invalid_client”
The solution to this problem is fairly simple but can be hard to find, so how do you fix it?