(Summaries of a talk at the April 2022 py.amsterdam meetup).
The book “test driven development with python” is available for free onine at https://www.obeythetestinggoat.com/ . The subtitle is test driven development (TDD) for the Web, with Python, Selenium, Django, JavaScript and pals…
It is a quite thick book, but the author is very enthousiastic about programming and the subject of testing, so it actually very readable.
The book consists of three parts:
The basics of test driven development and django. So he starts out with explaining web development with django, just enough for having something real to test.
Web development sine qua non. He’s serious, at the end of part two you’ll actually have deployed a web application. (And you’ll have tested it, of course.)
More advanced topics in testing.
The core idea of test driven development is that you first write a (failing!) test and only then you write the code to get the tests to pass. The first test in the book is whether you have installed django (which you haven’t yet). That sets the tone for the rest of the book :-)
The whole time you’re writing the minimal code needed to get the tests to pass.
Different kind of tests are explained. Functional tests (browser tests in this case, written from the point of view of a user). Unit tests (much finer-grained, written from the point of view of the programmer).
The book is friendly for the reader. Also for a beginner. For instance, it even explains how to read a traceback.
An important concept: refactoring. Either refactoring/changing the code or the tests. Never do them at the same time! And only change code when all the tests are passing. Otherwise you’re like the refactoring cat. A cat jumping into a bath tub and totally panicking: that happens when the code is a mess, without passing tests. It is hard to work in an environment like that. But if you have running tests, it suddenly feels safe to change your code.
The second part even teaches you how to deploy your code to the server in an explicit way (with “fabric”: the appendices have an example with “ansible”). Also in the second part: validating your input.
Part three (“advanced topics”) deals with authentication, for instance. Exploratory code is explained: quick code without tests to explore something. And then of course, adding tests for it and getting it in shape. Also in this part: “mocking”, “continuous integration”, etc.
Everybody can learn something for this book. In a sense, it is a bit of a strange book because it explains a lot of different things. There’s also a bit of a patronizing tone in the book, which took some getting used to. But the author says in the preface that he wrote it for the younger version of himself, so that’s ok.
Katarina works at Memgraph, a little startup.
A graph is a network structure: a set of nodes (“vertices”) and a set of relationships between them (“edges”). Nodes and relations can have properties (key/value pairs).
Relational databases are what everybody uses. Why would you use a graph database? When is it useful? What are the differences?
Graph databases are generally “schemaless”, so you have lots of freedom with your properties.
Graph databases have build-in relations. A relational database isn’t necessarily very good/easy/efficient for many-to-many relations.
The most used language to query graph databases is the cypher query language. This is also used in their memgraph database.
Graph analytics (network analysis) generates insichgs hidden in the relationships of the network structure. Pagerank, shortest path, etc. are examples. Recommendation engines also use it. Supply chain risks and fraud detection are business examples.
Stream processing: you start out with (real time) input data, which goes into the “stream processing engine and the output goes on to another item or to an analytics dashboard or so.
They’re making cqlalchemy, a sort of “sqlalchemy for graph databases”. An python OGM (object graph mapper) for graph databases. The idea is that you can write python code instead of a cypher query.
Also interesting: MAGE, Memgraph Advanced Graph Extensions: an open source repo with graph analytics modules.
I gave a quick lightning talk about managing your laptop. I got a new laptop yesterday and managed to set it up within a day. I got it working quickly by storing my config in git and also having a readme explaining my setup.
Two very handy tools:
https://pypi.org/project/dotfiles/ for managing your “dotfiles”, so the hidden config files in your root directory.
https://pypi.org/project/checkoutmanager/ for listing all your git repositories and cloning them all in one go (or updating them or checking their status).
My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):