Mathspp Blog

programming β Articles that include code in some form

Structural pattern matching tutorial | Pydon't π

Structural pattern matching is coming in Python 3.10 and this article explores how to use it to write Pythonic code, showing the best use cases for the match statement.

Neural networks fundamentals with Python β backpropagation

The third article of this short series concerns itself with the implementation of the backpropagation algorithm, the usual choice of algorithm used to enable a neural network to learn.

Neural networks fundamentals with Python β network & loss

In the second article of this short series we will create a class for a generic neural network and we will also see how to assess the quality of the output of a network, essentially preparing ourselves to implement the backpropagation algorithm.

Neural networks fundamentals with Python β intro

This is the first article in a series to implement a neural network from scratch. We will set things up in terms of software to install, knowledge we need, and some code to serve as backbone for the remainder of the series.

Chaining comparison operators | Pydon't π

Learn the ins and outs of comparison operator chaining, and especially the cases you should avoid.

Deep unpacking | Pydon't π

Deep unpacking (or nested unpacking) provides a more powerful way for you to write assignments in your code. Deep unpacking can be used to improve the readability of your code and help protect you against unexpected bugs. Learning about deep unpacking will also be very important in order to make the most out of the structural matching feature that is to be introduced in Python 3.10.

Watch out for recursion | Pydon't π

Recursion is a technique that you should have in your programming arsenal, but that doesn't mean you should always use recursion when writing Python code. Sometimes you should convert the recursion to another programming style or come up with a different algorithm altogether.

Truthy, Falsy, and bool | Pydon't π

All Python objects can be used in expressions that should return a boolean value, like in an if or while statement. Python's built-in objects are usually Falsy (interpreted as False) when they are βemptyβ or have βno valueβ and otherwise they are Truthy (interpreted as True). You can define this behaviour explicitly for your own objects if you define the __bool__ dunder method.

str and repr | Pydon't π

Python's str and repr built-in methods are similar, but not the same. Use str to print nice-looking strings for end users and use repr for debugging purposes. Similarly, in your classes you should implement the __str__ and __repr__ dunder methods with these two use cases in mind.

Assignment expressions and the walrus operator := | Pydon't π

The walrus operator := can be really helpful, but if you use it in convoluted ways it will make your code worse instead of better. Use := to flatten a sequence of nested ifs or to reuse partial computations.

EAFP and LBYL coding styles | Pydon't π

In Python, if you are doing something that may throw an error, there are many cases in which it is better to "apologise than to ask for permission". This means you should prefer using a try block to catch the error, instead of an if statement to prevent the error.

Unpacking with starred assignments | Pydon't π

How should you unpack a list or a tuple into the first element and then the rest? Or into the last element and everything else? Pydon't unpack with slices, prefer starred assignment instead.

Pydon't disrespect the Zen of Python π

The "Zen of Python" is the set of guidelines that show up in your screen if you import this. If you have never read them before, read them now and again from time to time. If you are looking to write Pythonic code, write code that abides by the Zen of Python.

Pydon't Manifesto π

"Pydon'ts" are short, to-the-point, meaningful Python programming tips. Pydon'ts will help you write more Pythonic code.

Implementing an interpreter in 14 lines of Python.

In this blog post I'll show you how you can write a full interpreter for the brainf*ck programming language in just 14 lines of Python. Be prepared, however, to see some unconventional Python code!

Let's build a simple interpreter for APL - part 3 - the array model

In this blog post we will go over some significant changes, from implementing APL's array model to introducing dyadic operators!

My two cents on the 2020 APL competition

The 2020 APL programming competition was tough! In this post I share a couple of thoughts and my solutions.

YAMLUtils: automating boring stuff with Python

If there's one thing I like about Python is how I can use it to automate boring tasks for me. Today I used it to help me manage my own blog!

Studying the "24 Game"

The 24 Game is a well-known maths game that is played with kids in school to help them master the four basic arithmetic operations. In this blog post we will study the game in depth.

Let's build a simple interpreter for APL - part 2

Today is the day! Today is the day we take our APL programs and interpret them, so that something like Γ· 1 2 3 -β¨ 1.1 2.2 3.3 can output 10 5 3.33333333.