Optimizing video and audio workflows for your users Offical WebAssembly logo with FFmpeg written on it The capability to compile an application into web assembly was always intreaging to me. It means we can use tried and tested tools on the web. Now that even mobile devices are more powerful than most servers and we can use that capability for free, there is no reason not to do it. So lets turn it…
Here is how you can run it anyways Logos of MySQL™ and Apple™ M1 | created by author If you try to run the official mysql:5.7 , 5.6 or 5.5 images in a new Mac, you’ll get this message: Oracle does not officially support the old MySQL 5.x versions on ARM. You can see that in their supported platforms overview: Supported Platforms: MySQL Database So what can we do? Run MySQL 8 The newer MySQL 8 is…
A huge advantage of relational databases is transactions and locking. Don’t waste it by not using it Image by author What is even the issue? As you can see, we have two separate requests that both modify the same database field. But since the second has read the entity before the first process has written its change, they both have the same starting information. That means that we lose data and…
The “Tick” Pattern — A Solution for Temporal Problems in State Machines How to automate workflows that wait for external and time conditions without exploding complexity Photo by Campaign Creators on Unsplash So you have to program stuff like: Send a reminder email after one day Process an order after the delivery date has been reached Mark a document as signed based on the status of an external…
When your SQL Database does not cut it anymore. Photo by Marten Newhall on Unsplash The situation: You have a working project and you need to add a fulltext search. But most databases (SQL, Document) do not contain good fuzzy searches, so you need to bring a specialized database (like Elasticsearch) into your project. But how?: The Architecture choices You have multiple ways how you can implement…
Improve PHPUnit Performance by Parallelization Using Liuggio-fastest Finally use your multi-core CPU to run your tests multiple times faster, even with complex test setups. Photo by Ferenc Almasi on Unsplash There are multiple ways how to parallelize PHPUnit tests. Paratest : https://github.com/paratestphp/paratest Fastest : https://github.com/liuggio/fastest Let’s first look at why you want to…
Create a node project that is easily testable and maintainable with minimal setup overhead. Photo by Pankaj Patel on Unsplash After years of more-or-less passively using npm, I now had the situation where I wanted to create my own npm package. Turns out, TypeScript makes it quiet a good experience. What is the goal? use TypeScript from the start high compatibility for you final build package cli…
Photo by Miguel Angel Avila on Unsplash Did you ever listen to music on bluetooth headphones and got a call? Did the quality get a lot worse? What happened to all those fancy bluetooth audio codes that every reviewer is always talking about? Well you are not crazy. Bluetooth has 2 audio profiles: A2DP (Advanced Audio Distribution Profile) This profile can transmit stereo audio and allows for over…
Photo by Markus Spiske on Unsplash First of, use something like the KnpUOAuth2ClientBundle if it serves your need. Having documentation beats the best implementation in any case. That said, if you have to implement a custom OAuth client, it might be a good idea to skip such bundles, since they abstract what is actually happening and are less readable. But read on and decide for yourself. Also,…
There are only 2 types of relations. All other types are usually bugs. Photo by John Schnobrich on Unsplash Owning Relations You can easily identify this relation by these properties: You usually edit the referenced entity in the same form as the current one. The referenced entity must be saved, when the current entity is saved. The referenced entity must be deleted together with the current…