Sorting images For years, I've been taking hundreds of pictures. The folder is too big, I have no idea what's inside. So let's do some automation to figure it out.
Migrating from Hugo to Ghost I migrated this blog from Hugo to Ghost, here's a quick write up of how I did that. May be useful in the future.
Debugging timeouts on Heroku In August 2018, I wrote about the challenges of moving from AWS to Heroku. A new challenge has presented itself on the same website since then: a large number of request timeouts at unpredictable times during the day.
Errors in PHP-driven websites Over the past 3 years, I feel like I've seen a lot of interesting errors cases happen as a full-stack web developer, focusing on PHP-driven backends. Pretty much any error that I think would not happen to me ended up happening anyway.
Pagination performance in Symfony Recently, I was tasked with improving the performance of a CRM's search capabilities with SQL, that is, without going through the setup of ElasticSearch or Algolia.
Moving from AWS to Heroku A few months ago, I migrated an enterprise website from AWS to Heroku, to reduce the maintenance burden of AWS EC2 instances and make the website more reliable. Here's how that went and what I learned from it.
The duality of /bin/sh A few weeks ago, I ran a shell script on an Ubuntu server and it didn't produce the same result as on my laptop. The reason for its behavior surprised me.
Fearless composer updates Most PHP projects eventually pull in open source libraries from Composer. They make complex topics easier. But updating Composer dependencies in PHP projects all the while avoiding regressions can be daunting.
Memory management with Symfony commands Making changes to large databases in Symfony projects usually requires a command. Keeping it free of "Out of memory" errors takes some work. Let's have a look at some of the things we can do to keep memory usage under control.
Learning about data science This week, I took Coursera's crash course on data science from Johns Hopkins University. From the use of statistics to the structure of a data science project, here's what I learned.
Endianness and the coin toss Computers can be little or big endian. Wondering what endianness is all about, where it originated from and its impacts on code performance? I was too.
Rooster's "30 Days Of Tests" Rooster is a simple password manager for geeks. After 2 years of development, its feature set is complete and it's time to add automated tests to the mix. I'm doing that 1 test a day, over 30 days.
Dotfiles backup and restore As software engineers, we spent time improving our tools, which leads to increased output and better software. It is important to backup this work so that it doesn't go to waste.
Arch Linux, Luks and the Thinkpad W541 Setting up the Thinkpad W541 with Arch Linux and full-disk encryption was a bit daunting. So I wrote down some notes during the process. Here they are.
x86-64 assembly from scratch I've worked mostly on web development projects and I want to learn about languages that are closer to the metal. So, this week, I'm taking the deep dive into x86-64 assembly.
Elf from scratch This week, I'm learning about ELF, the binary file format for Linux, BSD and others. As we will see, it is full of interesting information and will serve as a good introduction to assembly programming.