56,966 blogs · [ { "id": "01a08767-b766-731e-b7da-3c1256bd8f7c", "title": "WordCamp Europe 2026 Takeaways", "url": "https://www.dannyvankooten.com/blog/2026/wordcamp-europe-2026-takeaways/", "published_at": "2026-06-10T12:52:09+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a09e95b1f", "title": "Attending WordCamp Europe 2026 in Krakow", "url": "https://www.dannyvankooten.com/blog/2026/attending-wceu-2026-in-krakow/", "published_at": "2026-05-30T09:55:03+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0a65174a", "title": "Back on WordPress", "url": "https://www.dannyvankooten.com/blog/2026/back-on-wordpress/", "published_at": "2026-05-13T19:42:40+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0af6957d", "title": "Using phpactor as a language server for WordPress development", "url": "https://www.dannyvankooten.com/blog/2026/using-phpactor-with-wordpress/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0bb8e9b5", "title": "Pensioenbeleggen: optimaal jaarruimte benutten?", "url": "https://www.dannyvankooten.com/blog/2025/pensioenbeleggen-hoeveel-jaarruimte-benutten/", "published_at": "2025-10-07T00:00:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0c2c0865", "title": "Using Composer with a specific PHP version on Alpine Linux", "url": "https://www.dannyvankooten.com/blog/2025/composer-php-version-alpine-linux/", "published_at": "2025-09-10T00:00:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0d2326e9", "title": "Benchmarking listing files in a local directory in PHP", "url": "https://www.dannyvankooten.com/blog/2025/benchmarking-scandir-glob-directoryiterator-readdir-php/", "published_at": "2025-09-02T00:00:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0daf8b67", "title": "Building self-hosted and privacy-friendly website analytics. Again.", "url": "https://www.dannyvankooten.com/blog/2025/building-privacy-friendly-website-analytics/", "published_at": "2025-01-16T00:00:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0e37cbd4", "title": "Cycling La Marmotte", "url": "https://www.dannyvankooten.com/blog/2024/cycling-la-marmotte/", "published_at": "2024-07-11T14:11:00+00:00" }, { "id": "01a08767-b767-7317-98a4-8d9a0e4c9098", "title": "Migrating a Doctrine database from SQLite to MySQL", "url": "https://www.dannyvankooten.com/blog/2024/migrating-doctrine-database-sqlite-to-mysql/", "published_at": "2024-06-22T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1932f5d1be", "title": "C++ development setup in 2024", "url": "https://www.dannyvankooten.com/blog/2024/cpp-development-setup/", "published_at": "2024-04-06T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e19330d2384", "title": "Setting up a VPS for static site hosting", "url": "https://www.dannyvankooten.com/blog/2024/static-site-hosting-vps/", "published_at": "2024-02-20T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e19334a5ff2", "title": "sourcehut pages: redirect (sub)domain", "url": "https://www.dannyvankooten.com/blog/2024/sourcehut-pages-domain-redirect/", "published_at": "2024-02-12T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1933f52eaf", "title": "One Billion Rows Challenge in C", "url": "https://www.dannyvankooten.com/blog/2024/1brc/", "published_at": "2024-01-04T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1934633501", "title": "Climate friendly software", "url": "https://www.dannyvankooten.com/blog/2023/climate-friendly-software/", "published_at": "2023-12-13T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1934f37e60", "title": "HTML compression on popular websites", "url": "https://www.dannyvankooten.com/blog/2023/top-websites-not-using-compression/", "published_at": "2023-11-27T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1935d2d7d3", "title": "RFC822 formatted datetimes and CET timezone", "url": "https://www.dannyvankooten.com/blog/2023/rfc822-and-cet/", "published_at": "2023-11-22T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1936143a1e", "title": "Preparing videos for Mastodon using ffmpeg", "url": "https://www.dannyvankooten.com/blog/2023/resize-downsample-video-ffmpeg/", "published_at": "2023-11-02T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1936a18d20", "title": "Speeding up the Koko Analytics dashboard", "url": "https://www.dannyvankooten.com/blog/2023/speeding-up-koko-analytics-dashboard/", "published_at": "2023-10-31T00:00:00+00:00" }, { "id": "01a0c505-cf33-7202-8f59-4e1937259dbd", "title": "Introducing Koko Analytics Pro", "url": "https://www.dannyvankooten.com/blog/2023/koko-analytics-pro/", "published_at": "2023-10-18T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f85f947d8c", "title": "Replacing annotations with PHP attributes – with Rector", "url": "https://www.dannyvankooten.com/blog/2023/rector-annotations-to-attributes/", "published_at": "2023-07-10T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f860653c9b", "title": "Minification and cache directives for the most popular websites of the internet", "url": "https://www.dannyvankooten.com/blog/2022/minifying-top-websites/", "published_at": "2022-11-29T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f860c617e2", "title": "(Re)writing an interpreter in Rust", "url": "https://www.dannyvankooten.com/blog/2022/rewriting-interpreter-rust/", "published_at": "2022-11-17T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f861b3f2a0", "title": "Solving Advent of Code 2020 in under a second", "url": "https://www.dannyvankooten.com/blog/2021/solving-advent-of-code-2020-under-1-second/", "published_at": "2021-04-02T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f8626f87db", "title": "Writing a bytecode interpreter – in C", "url": "https://www.dannyvankooten.com/blog/2020/writing-an-interpreter-compiler/", "published_at": "2020-03-06T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f862f0a6bc", "title": "CO2 emissions on the web", "url": "https://www.dannyvankooten.com/blog/2020/website-carbon-emissions/", "published_at": "2020-02-04T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f86351caf0", "title": "Personal goals for 2020", "url": "https://www.dannyvankooten.com/blog/2019/goals-for-2020/", "published_at": "2019-12-31T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f8640a8e13", "title": "Introducing Koko Analytics", "url": "https://www.dannyvankooten.com/blog/2019/introducing-koko-analytics/", "published_at": "2019-11-07T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f864af8565", "title": "Stepping down from Fathom", "url": "https://www.dannyvankooten.com/blog/2019/stepping-down-fathom-maintainer/", "published_at": "2019-03-18T00:00:00+00:00" }, { "id": "01a0c517-5d9b-71d4-a3a7-71f865427568", "title": "Moving from Go to PHP again", "url": "https://www.dannyvankooten.com/blog/2019/from-go-back-to-php-again/", "published_at": "2019-02-04T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d44f7ad7", "title": "Join me on Mastodon", "url": "https://www.dannyvankooten.com/blog/2018/join-mastodon/", "published_at": "2018-08-14T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d533513c", "title": "Reviving Ana as Fathom: simple & transparent website analytics", "url": "https://www.dannyvankooten.com/blog/2018/reviving-ana-as-fathom/", "published_at": "2018-05-12T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d6223020", "title": "Backtesting 12-month SMA investing strategy with Pandas", "url": "https://www.dannyvankooten.com/blog/2018/backtesting-12-month-sma-investing-strategy-pandas/", "published_at": "2018-01-24T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d6b8b0b1", "title": "Introducing HTML Forms for WordPress", "url": "https://www.dannyvankooten.com/blog/2017/html-forms-wordpress/", "published_at": "2017-11-01T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d6d1c6b6", "title": "Moving from PHP (Laravel) to Go", "url": "https://www.dannyvankooten.com/blog/2017/laravel-to-golang/", "published_at": "2017-04-17T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d758157f", "title": "VATMOSS in practice", "url": "https://www.dannyvankooten.com/blog/2017/vatmoss-in-practice/", "published_at": "2017-04-03T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d7eb237c", "title": "2016: Year in review", "url": "https://www.dannyvankooten.com/blog/2017/2016-year-in-review/", "published_at": "2017-01-15T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d895344a", "title": "Browserpass for Firefox", "url": "https://www.dannyvankooten.com/blog/2016/browserpass-for-firefox/", "published_at": "2016-11-28T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9d975b071", "title": "Browserpass, a Chrome extension for Pass", "url": "https://www.dannyvankooten.com/blog/2016/chrome-extension-for-pass/", "published_at": "2016-11-06T00:00:00+00:00" }, { "id": "01a0c522-6cf7-73e9-8d99-57d9da509ee1", "title": "Celebrating 2 million downloads for Mailchimp for WordPress", "url": "https://www.dannyvankooten.com/blog/2015/celebrating-2-million-downloads-for-mc4wp/", "published_at": "2015-09-09T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f05bce86", "title": "Introducing ibericode", "url": "https://www.dannyvankooten.com/blog/2015/introducing-ibericode/", "published_at": "2015-06-19T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f0cf575e", "title": "CDN URL rewriting plugin for WordPress", "url": "https://www.dannyvankooten.com/blog/2015/using-a-cdn-with-wordpress/", "published_at": "2015-05-22T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f1112fe6", "title": "Interview on NomadList", "url": "https://www.dannyvankooten.com/blog/2015/interview-on-nomadlist/", "published_at": "2015-05-07T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f1fa4016", "title": "Interview on WebWorkTravel", "url": "https://www.dannyvankooten.com/blog/2015/interview-on-webworktravel/", "published_at": "2015-03-13T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f27142f7", "title": "One million downloads for Mailchimp for WordPress", "url": "https://www.dannyvankooten.com/blog/2015/one-million-downloads-mailchimp-wordpress/", "published_at": "2015-02-15T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f328d6fe", "title": "2014: Year in review", "url": "https://www.dannyvankooten.com/blog/2014/2014-year-in-review/", "published_at": "2014-12-27T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f395a84e", "title": "Periodically check WordPress core for (malicious) modifications", "url": "https://www.dannyvankooten.com/blog/2014/periodically-check-wp-core-file-modifications/", "published_at": "2014-10-11T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f3e570da", "title": "Data type inconsistencies in WordPress", "url": "https://www.dannyvankooten.com/blog/2014/data-type-inconsistencies-in-wordpress/", "published_at": "2014-10-02T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f4918461", "title": "Multiple form themes in Mailchimp for WordPress Pro", "url": "https://www.dannyvankooten.com/blog/2014/multiple-form-themes-in-mailchimp-for-wordpress-pro/", "published_at": "2014-08-25T00:00:00+00:00" }, { "id": "01a0c52d-f841-7047-8033-3bc0f4ab78d9", "title": "Version 2.0 of Mailchimp for WordPress", "url": "https://www.dannyvankooten.com/blog/2014/version-2-of-mailchimp-for-wordpress/", "published_at": "2014-04-30T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c2f78e4bb", "title": "Only load Contact Form 7 scripts when needed", "url": "https://www.dannyvankooten.com/blog/2013/only-load-contact-form-7-scripts-when-needed/", "published_at": "2013-12-14T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c2ff85c4d", "title": "100.000 plugin downloads in under 6 months", "url": "https://www.dannyvankooten.com/blog/2013/100-000-plugin-downloads-6-months-mailchimp-wordpress/", "published_at": "2013-12-06T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c30ad1e7e", "title": "Add lightweight social sharing links to WordPress posts", "url": "https://www.dannyvankooten.com/blog/2013/add-plain-html-social-sharing-links-posts/", "published_at": "2013-12-02T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c31739775", "title": "Debounce scroll and resize handlers in JavaScript", "url": "https://www.dannyvankooten.com/blog/2013/delay-scroll-handlers-javascript/", "published_at": "2013-11-14T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c32126c6d", "title": "Automatically add a Mailchimp signup form below every WordPress post", "url": "https://www.dannyvankooten.com/blog/2013/add-mailchimp-sign-up-form-end-of-posts/", "published_at": "2013-10-04T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c330fd796", "title": "Add a Mailchimp opt-in checkbox to Contact Form 7", "url": "https://www.dannyvankooten.com/blog/2013/mailchimp-newsletter-checkbox-contact-form-7/", "published_at": "2013-09-25T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c33c13153", "title": "Add a Mailchimp opt-in checkbox to your checkout form", "url": "https://www.dannyvankooten.com/blog/2013/show-mailchimp-sign-up-checkbox-in-checkout-forms/", "published_at": "2013-09-12T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c3456f524", "title": "Introducing the Mailchimp for WordPress plugin", "url": "https://www.dannyvankooten.com/blog/2013/my-newest-wordpress-plugin-mailchimp-for-wp/", "published_at": "2013-06-28T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c3513ee2b", "title": "AltoRouter, another PHP Routing class.", "url": "https://www.dannyvankooten.com/blog/2012/altorouter-php-routing-class/", "published_at": "2012-07-31T00:00:00+00:00" }, { "id": "01a0c538-8ad5-7072-a133-6d3c3550f2aa", "title": "PHP Routing Class which supports REST routing", "url": "https://www.dannyvankooten.com/blog/2011/php-routing-class-with-rest-routes/", "published_at": "2011-11-30T00:00:00+00:00" }, { "id": "01a0c542-0f6d-712a-9eb4-965f34da9913", "title": "Enabling shortcodes in widgets, quick WordPress tip.", "url": "https://www.dannyvankooten.com/blog/2011/enabling-shortcodes-in-widgets-quick-wordpress-tip/", "published_at": "2011-07-17T00:00:00+00:00" }, { "id": "01a0c542-0f6d-712a-9eb4-965f35b8e7e6", "title": "Configuring Newsletter Sign-Up – the definitive guide", "url": "https://www.dannyvankooten.com/blog/2011/configuring-newsletter-sign-up-the-definitive-guide/", "published_at": "2011-07-03T00:00:00+00:00" }, { "id": "01a0c542-0f6d-712a-9eb4-965f368fb058", "title": "Dynamic custom menus in WordPress", "url": "https://www.dannyvankooten.com/blog/2011/dynamic-custom-menus-wordpress/", "published_at": "2011-06-19T00:00:00+00:00" }, { "id": "01a0c542-0f6d-712a-9eb4-965f36ffd0be", "title": "CodeIgniter Sessions in IE7", "url": "https://www.dannyvankooten.com/blog/2011/codeigniter-sessions-in-ie7/", "published_at": "2011-01-31T00:00:00+00:00" }, { "id": "01a0c542-0f6d-712a-9eb4-965f37317793", "title": "IE fix for HTML 5 elements", "url": "https://www.dannyvankooten.com/blog/2010/ie-fix-for-html-5-elements/", "published_at": "2010-12-29T00:00:00+00:00" } ] posts Claim your blog
Back to Danny van Kooten
Blog · corpus.blog/blogs/dannyvankooten.com/posts

Danny van Kooten

dannyvankooten.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010