Wireshark is a useful tool to that we often use at Captain AI to monitor network traffic on a vessel. It can be useful to see at a very fine grained level what packets are being sent, what’s in them and to whom they were addressed. It’s not even necessarily always packets meant for you, which is why it’s also a tool sometimes employed by techies of a more eh dubious nature.
Having recently almost lost my wit doing a project involving Python’s multiprocessing library for Captain AI, I thought it would be a good way of well eh processing my experience of almost going insane by dedicating some words on it. This will be the first part, where I discuss the difference between concurrency and parallelism, which in Python is implemented as threads vs processes. Making a codebase run truly concurrently is quite challenging, especially where custom communication and synchronisation constructs are required.