Understanding Eventsourcing - Book Review
Thanks to Bastian Waidelich I noticed that there’s a pretty fresh and new book on Event-Sourcing and Event Modeling written by Martin Dilger: The book is available on Leanpub and also as printed edition from Amazon. About the content After having built a first application following the Event-Sourcing approach already (see https://spenden.srk-luzern.ch/ to see it live), that part of the book was not bringing me too much to learn. It was more of a repetition and good to follow and read up again to better memorize some details.
Traefik Configuration for Docker Compose Setups
Recently I played around with letting multiple smaller applications run, containerized, and published via Traefik as the central Gateway and SSL handler. Initial setup was simple - but adding more applications and separating the applications and their backend services into separate docker networks caused problems. The problem I ran into an error that was initially hard to get a grip on, because it was sometimes there, sometimes not a restart via docker-compose up changed the situation all the time (even without changes to the docker-compose.yml config file) the log-output I saw was inexistent or not helpful the error that was output when accessing the application through Traefik was just a “504 Gateway Timeout” after reaching the timeout the Traefik Dashboard showed all services, routers, everything - and everything as “healthy” without problems While trying several things to solve this issue, I two times thought I’d have solved it - then restarted the containers just to find out I was wrong and the problem was back.
A misleading error message in DB migrations
A few days ago we ran into the following error messages during deployment of a Flow 7.x based application where the deployment failed while executing the database migrations: An exception occurred while executing 'ALTER TABLE vendor_package_domain_model_something ADD CONSTRAINT FK_BD82590B2B219D70 FOREIGN KEY (entry) REFERENCES vendor_package_domain_model_something_else (persistence_object_identifier)': SQLSTATE[HY000]: General error: 1005 Can't create table `package`. `vendor_package_domain_model_something` (errno: 150 "Foreign key constraint is incorrectly formed") It took a while to understand that the migration itself was not the problem and fully OK. After using two tons of Google foo and the search in Neos’ Slack, we discovered that the error message is completely misleading and the source of the issue is coming from a completely different source!
Migrating from Kirby to Hugo
Despite working with the PHP based content management systems TYPO3 and Neos on a daily base for over 15 years, about 10 years ago when I last “relaunched” my personal website, I decided to use a different approach. Back then I decided to use Kirby that has evolved a lot since then. I never really upgraded Kirby and rarely wrote any blog posts anyway. Fast forward to end of 2022 I wanted to do some more with my website again and looked into a new static site generator so I can build the site locally or in a Gitlab CI build pipeline and just publish the resulting static files from there on. The team from the TYPO3 Camp Switzerland just started to use Hugo for their event site and while I looked at their git repository I just started playing around with Hugo. Having Hugo up and running that quickly was motivating and well, I just tried how far I can get with it.
How to list all .ch domain names
Intro Starting from January 1st 2021, SWITCH started to publish the .ch zone with all *.ch domain names as one of a few TLD operators. With this, each and everyone can have a look into all avilable and active domain names within the .ch zone that have a DNS delegation set. Details and limitations are listed on the open data page at SWITCH. Fetch the whole .ch zonefile I followed the example command that Markus Ritzmann tweeted:
Setting up ddev for Flow based projects
Intro Since years, this is one of the topics that comes back every now and then - and until now it was always a choice out of many ways that all had their good sides but also their drawbacks. Until now, I used several things to develop PHP based projects: local on Mac, with MAMP local on Mac, within a Vagrant-Box local on Mac, with Homebrew-based installations of Nginx, PHP-FPM and MySQL on a shared Development-Server But now I learned about ddev and how it solves many of the issues the above solutions had. I’ve now tested it for a few days and for now this seems to be a very cool solution:
Ways to add cache-breaking for static assets in TYPO3 Neos
Updated 2015-04-01, added solutions E, F and G Updated 2017-02-22, updated solution D The problem Given you work on a project and continuously deploy new versions of the site, you’ll probably also deliver fresh static assets like CSS and JS files. We noticed that our changes (including bugfixes) were not recognized by the browser of the user/customer… The reason was mostly, that the CSS/JS files were cached locally by the browser from an earlier visit.
Adding a lightbox effect to your content in TYPO3 Neos
The problem Neos was designed to provide a small but stable base for content management needs. This implies, that certain functionality or features are not provided by the creators of Neos upfront - but can be implemented as needed by everyone that needs it. For us, this meant that the well known “enable click-enlarge” checkbox from TYPO3 CMS just doesn’t exist in Neos - and also no lightbox effect is implemented on content images right away.
Never touch /etc/hosts again for all your development work
The problem When I develop locally on my MacBook, I use Vagrant a lot. In there I run an Ubuntu based VM with my preferred configuration with PHP-FPM and Nginx, all managed by Puppet. Included within that box is dnsmasq which handles DNS queries from within the box and it’s configured to resolve to the VM’s IP own IP address for all *.dev, *.lo and *.prod queries - and regularly lookup everything else.
My personal Technology Radar for 2015
Inspired by Dimitri Pisarev’s technology radar for 2014/2015 I thought about the topics and technologies that might cross my way this year. And so I started to collect some things that I want to have a look at this year: TYPO3 Neos based projects Key-Value-Stores (probably with Redis) Message-Queues (probably with RabbitMQ) Put something “in the cloud” (probably with Amazon AWS) Automate Development-Setups You might wonder why I publish this and why I put together this list at all… I think it’s a good way to make sure you don’t just blindly follow each and every “trend” and loose yourself in details. With this list at hand, it’s easier to prioritize and select, what topic shall get what amount of time and what exactly to do with the product/technology.