The blog

Where I irregularly write about web development.

  1. Only run GitHub Actions when certain files have changed
  2. How to use Laravel Sanctum for SPA authentication
  3. How to use map, filter, and reduce in JavaScript
  4. Blurring the lines between front-end and back-end development
  5. How to use Proxy objects in TypeScript
  6. How to manage staging and production environments in Netlify
  7. The smallest PHP version switcher
  8. Deploying your PHP application to an Amazon Auto Scaling Group with Deployer
  9. Statically analyze your Laravel 9 application with PHPStan
  10. How to set CORS headers on your S3 bucket
  11. How to rename your "master" branch to "main"
  12. Making TypeScript's Partial type work for nested objects
  13. Performing A/B tests on static websites using Cloudfront and Lambda@Edge
  14. How to ensure only a single model has a certain value in Laravel?
  15. Validating a multi-column unique key in Laravel Nova
  16. Programmatically switch dark mode in MacOS
  17. Case Study: Serverless architecture for The Ocean Cleanup
  18. Redirect www to non-www using CloudFront and Lambda@Edge
  19. How to use JavaScript getters and setters
  20. Introducing Hansel, runner of handlers and enhancers
  21. Npx is cool... but why not use a relative $PATH?
  22. Challenges with doing recursion in PHP
  23. Auto-deploy with Travis CI
  24. Git feature branches
  25. CSS Trick: Remove borders from linked images
  26. Testing IE6 on Mac using VirtualBox
  27. Disable fancy errors in CakePHP
  28. Move current selection to new folder with Applescript
  29. Quick PHP Tip: passing by reference creates array keys
  30. Quick PHP Tip: close your connection between stream_get_contents calls
  31. Book review: The Pragmatic Programmer
  32. Eliminate articles when ordering in MySQL
  33. Hello Amsterdam!
  34. Guessing font availability with Javascript
  35. Making the most of Javascript namespacing
  36. Generate unique slugs in CakePHP
  37. Focus onload but keep Backspace intact
  38. Dynamically added form elements lose their margins
  39. How to send multiple values through one form button
  40. CSS Tricks episode 1: 100% width in a variable width container
  41. Adobe releases Dreamweaver CS4 Beta
  42. Subcookies V2
  43. Help the UN World Food Program to end world hunger
  44. Finally moved, but not without hiccups
  45. Formatting CSS, how not to do it
  46. Dutch Internet Works is looking for freelance web designers
  47. Movin'
  48. Microsoft Internet Explorer 8 introduces version targeting
  49. Bye bye freelancing
  50. My CSS Wishlist
  51. Pure CSS Text Resizer
  52. Javascript Periodical Executer
  53. Be careful when fetching width!
  54. Books that made me think
  55. WhatPHP is now live
  56. Another way to reduce the number of images used in your CSS
  57. Javascript function return values
  58. Peter-Paul Koch presents the Dutch Guild Of Front-Enders
  59. Subcookies, the PHP version
  60. Take your cookies to the next level with Subcookies
  61. Installing PHPEclipse on Ubuntu Feisty Fawn
  62. Why Opera 9 might become my new favourite browser
  63. Animated lists: Graceful degradation using CSS 3
  64. Where do elements go?
  65. Use less DIV, use more HTML - Part Deux
  66. Use less DIV, use more HTML
  67. Original new CAPTCHA
  68. Broken comments
  69. A quick note on unobtrusive Javascript
  70. Pretty form controls with CSS
  71. Why use semantic class names?
  72. Simplify function arguments
  73. New Dutch accessibility law
  74. Stop your page from shifting!
  75. Fighting spam using MySQL and PHP
  76. Merry Christmas everyone!
  77. Vfields: Variable length input fields
  78. Whatstyle is renewed!
  79. Altering JavascriptFlashGateway
  80. Web 2.0 sucks
  81. Actionscript Animation Classes
  82. Displaying search results with PHP
  83. Nested lists bug
  84. Image popups that fit
  85. Styling quotations
  86. School and the web
  87. Picking units