Codingame - Spring Challenge

Last week CodinGame.com hosted a Spring Challenge, it's a 10-day bot programming competition that I gave a try and wanted to share my thoughts. The contest is held yearly and this time about ~8000 people participated with at least a single submission. The idea revolves around creating an AI for a game - in this particular case the goal is trivial: protect your base and outlive your opponent. Players start at opposite corner of the map and control a team of 3 heroes while monsters randomly spawn at the edges and regularly attack bases, if a monster reaches one's base it deals damage. Heroe…
Read more...

Service based systems - writing tests to ensure quality and avoid staleness

Testing is at the core of all complex software systems that exhibit any sense of quality - and works well for developers sanity. It's the main tool that helps us convince ourselves that what we created will probably work correctly before actually running it in production. There are tons and tons of books and information out there about software testing, this falls into a slightly more specific niche that is back-end services testing, potentially in a distributed environment. It's unlikely to be of much use for GUIs, desktop software, safety critical systems, developer tools nor very large…
Read more...

Wire formats - comparison & benchmarking

Every time we want to send data from one system to another over network, or to a file, we have to somehow represent it in bytes, this is achieved by data encoding. It's a translation of in-memory objects to byte sequences and vice versa. This article will present several formats by comparing their performance and considering basic ease of use. Alongside benchmarking the goal is to find a suitable serialization method for my distributed system communication, it should be reasonably fast and must seamlessly integrate between multiple subsystems written in Java, Python and Rust. Given that a…
Read more...

Do you want to create a blog?

Do you want to write an article or two? Sounds great, but one will inevitably face the main problem - where to start? Turns out there are many ways to start, fortunately most of them seem to have relatively obvious trade-offs. Basic requirements Fom the very start I knew that this must be simple, not only because of my poor web skills but also because I didn't really want to spend much time on the technical side. I had only a few requirements that can be summed up as: Low-effort, mostly works out of the box Must be local friendly, I really want to have the content on my disk Usable wit…
Read more...