Blogging about development

Dec 07, 2025

Add seasonal joy to your site with generative AI

We all know that feeling - visiting a website during the holidays and seeing a little festive touch that makes you smile. Maybe it’s snowflakes falling on the hero image, pumpkins appearing in October, or hearts floating around on Valentine’s Day. These small details create emotional connections with users and show that there’s a human touch behind the pixels. But here’s the problem: creating seasonal variations of your website’s imagery is tedious. You either need to hire a designer every t...

Nov 19, 2024

Focus on less to achieve more

In the world of software development, it’s easy to get caught up in the race to add more features. We often think that more features mean better software. However, this isn’t always true - more often it is actually the opposite. When building software, there’s a strong temptation to keep adding features. With AI this is now even stronger because it is so, so easy to add new stuff. It seems logical that more features mean more functionality, which should make users happier, right? Allow us to...

Jul 17, 2024

Why reviewing your own PRs is good

We’ve all been there - you’ve written what you think is perfect code, only to have your co-workers point out a glaring mistake. It’s not a great feeling, but it’s part of the job. However, there’s a way to minimize these instances and make the development process smoother for everyone involved: reviewing your own pull requests. I’ve found that when I review my own PRs in the GitHub UI, I approach the code with a fresh perspective. Issues that I missed while writing the code suddenly become o...

Jul 09, 2024

Upgrading ShoutSMS from Rails 4 to Rails 7.1

Our ShoutSMS project has been cruising smoothly for the past 20 years. It has been running on Rails 4 without a glitch, but today I decided to upgrade it to the latest Rails version. The process went surprisingly smoothly. I have to admit, the ShoutSMS service isn’t too complex in features, and the number of third-party gems is quite limited. I started by creating a new Rails 7.1 application to use as a base. I then compared files and folders at a top level, especially remembering to copy t...

Jul 09, 2024

A collection of small JS utility functions

This is a compilation of nearly 300 compact JavaScript utility functions, designed to streamline common programming tasks and enhance code efficiency. If you don’t want to use libraries such as lodash or underscore (but I urge you to do) then this list might come in handy. It contains very simple functions such as isEmpty, isEven and isOdd to more specialized array and object manipulations, this collection offers a wide range of practical tools for JavaScript developers. These bite-sized fun...

Apr 27, 2024

Getting back into Rails 7 from Rails 2.3 😱

I’ve decided to revisit Rails after more than a decade of not using it. I have always loved it and created many applications when I was a Ruby on Rails consultant around 15 years ago. I have over 25 RoR applications I could try to migrate from an old Rails version to the new one. However, after a couple of quick attempts, I decided it’s not worth it because so much has changed, and it’s hard to determine the best migration path. Instead, I just set up a clean new Rails 7 app and transferred ...

Nov 13, 2021

Prefer ObsoletedUser over NewUser for breaking changes

When updating a variable or type, it is a better practice to rename the old one to ObsoletedX and keep the active one as X. This approach enhances clarity, simplifies transitions and refactoring, minimizes errors, and improves overall code readability and maintainability. Adopting this naming convention is a small but powerful step towards writing cleaner, more maintainable code. In the ever-evolving landscape of software development, updates and refactoring are routine. However, the manner ...

May 30, 2014

Tip: Include email in notification message when sending confirmation mails

If you are a web developer and needs to handle user registration the you probably are sending out confirmation emails to users to ensure they’ve entered a valid email. Lots of web sites (and apps) are showing a message saying “We’ve send you a confirmation mail. Please check your mailbox”. Tip of the day is this - make sure to include the actual email in that notification message. In case a user actually entered a wrong email he will notice immediately and doesn’t need to refresh his email ...

Oct 27, 2013

Tweak AppCode font aliasing on your mac

If you can’t use your beloved Monaco font in AppCode because it has gained weight and simply looks too bold, you might want to trim your anti-aliasing settings. Try running this in your terminal $ defaults write com.jetbrains.AppCode.plist AppleFontSmoothing -int 1 You might tweak it even more by using different values for -int 1 e.g. 0, 2 or 3. I’m not changing the system wide font smoothing setting, but only the one for AppCode.

Aug 15, 2013

Immediately flush IIS log for real time tail to avoid 60 second buffer delay

I wanted to tail my IIS log in realtime to avoid having to wait 60 seconds as is the default on IIS 7. I found out that I could run the command > netsh http flush logbuffer This is great but I wanted to do a tail so this short script does the trick for you (I assume you have cygwin installed if you’re on Windows) Run command every second in the background and flush output (the “Ok.” message) $ while true; do netsh http flush logbuffer > /dev/null; sleep 1; done & Then you’re ...