- Jul 3, 2025
      This post is a personal reflection on how I've integrated AI into my day-to-day work as a software engineer, what I've learned from it, and how I see it shaping the way we work.
- May 23, 2023
      This article explores how we implement Application Layer Encryption in Ruby on Rails applications to protect customer-sensitive data with Asherah.
- Sep 12, 2022
      This blog post explores how we optimized the GoDaddy Email Batch API by using Rails bulk inserts with MySQL and how to calculate the auto-incrementing IDs for records, given MySQL does not support a RETURNING clause.
- Jan 10, 2022
      In the past couple of years at GoDaddy, we have been on our journey to the cloud migrating our web services to AWS. In this blog post, I share what we learned about deploying Puma web server to AWS by migrating our email delivery service written in Ruby to AWS.
- Oct 15, 2018
      In some of our Ruby on Rails applications, we have migrated from using OS based cron to distributed cron using Sidekiq Scheduler. We will discuss the motivation for this change and the benefits from it.
- Sep 11, 2018
      In our email marketing products, we changed our bloom filter implementation by using a custom Redis and an in-memory bloom filter written in Ruby. We will go through iterations at solving a real problem and writing a custom bloom filter from scratch.
- Feb 27, 2018
      Config strategy for running Rails app in different environments and deploy targets.
- Oct 22, 2017
      In a previous blog posts I wrote about the problem of overusing exceptions, and in this one we'll look at some exception handling and testing practices.
- Jun 11, 2017
      How to debug Rails views in production.
- Feb 21, 2017
      Speed up your CI builds by using an in-memory database with tmpfs.
- Jan 20, 2017
      Custom auto-reconnect in Rails applications when using ActiveRecord connections.
- Dec 14, 2016
      Figuring out missing fonts for Hebrew, Arabic, Chinese, Korean and Japanese for wkHTMLtoPDF.
- Nov 20, 2016
      How to customize and host Firepoker tool for estimating work on projects.
- Oct 25, 2016
      Another great experience being part of Global Day of Coderetreat 2016 event in Skopje. Awesome to see how it evolved over the years and still continuing.
- Oct 12, 2016
      We'll be celebrating Global Day of Coderetreat 2016 in Skopje again. Join us for an exciting day practicing software design.
- Oct 5, 2016
      Auto-increment counter is not persisted on disk with InnoDB engine. That can lead to some surprising bugs like what this story is about.
- Sep 20, 2016
      My notes from EuRuKo 2016 conference in Sofia, Bulgaria.
- Sep 20, 2016
      Custom database cleaner for cleaning multiple databases in Rails applications when using dynamic ActiveRecord connections.
- Aug 30, 2016
      Octoshark is an ActiveRecord connection manager that provides connection switching mechanisms for scenarios involving master-slave, sharding or multi-tenant architecture.
- Mar 29, 2016
      Processing large CSV files with Ruby in an optimized way for memory consumption and speed performance.
- Mar 23, 2016
      Overview of email authentication protocols: SPF, Sender-ID, Domain Keys, DKIM and DMARC.
- Mar 20, 2016
      Strategies for processing and testing bounces, feedback loops (FBLs) and List-Unsubscribe requests in an email delivery system.
- Feb 9, 2016
      Slidox is a markdown to PDF and HTML conversion tool useful for building presentations and other documents.
- Feb 7, 2016
      It's all about commitment and persistence.
- Dec 19, 2015
      Validating an email address is an interesting and complex problem.
- Nov 18, 2015
      Things to consider when deploying Ruby on Rails applications.
- Nov 18, 2015
      Building a news aggregator using Machine Learning and Ruby.
- Nov 18, 2015
      Redis storage and what kind of problems it helps solve.
- Nov 18, 2015
      Setting up a remote pair-programming with Screen.
- Nov 14, 2015
      Photos and slides from Global Day of Coderetreat 2015.
- Nov 8, 2015
      Call for registration for Global Day of Coderetreat 2015 in Skopje, Macedonia.
- Oct 17, 2015
      The extreme programming philosophy of building software by playing to win.
- Oct 11, 2015
      How to replace your OS’ default DNS resolver with a RubyDNS powered one and test email delivery.
- May 30, 2015
      Debugging stuck Ruby processes using gdb, strace and nrdebug.
- Mar 7, 2015
      Playing with Ruby and standard streads and redirection on command line.
- Mar 1, 2015
      Never use exceptions to control flow.
- Feb 28, 2015
      Tracing Ruby code execution with TracePoint.
- Nov 10, 2014
      Call for registration for Global Day of Coderetreat 2014 in Skopje, Macedonia.
- Sep 2, 2014
      Compiling and installing ScrenCloud tool on Ubuntu with screenshot editing support.
- Sep 1, 2014
      Compiling, installing and configuring Guake multi terminal for GNOME Desktop on Ubuntu.
- Aug 2, 2014
      Convert markdown to HTML and syntax highlighting the Github way.
- Jul 13, 2014
      Share your dotfiles and make them reusable after reinstalling operating systems.
- Jun 1, 2014
      Why I switched from Linode to DigitalOcean.
- Mar 30, 2014
      Presentation on how to build a Ruby gem.
- Mar 23, 2014
      Compilation of few advanced Vim tips.
- Nov 27, 2013
      Registration details and photos for Global Day of Coderetreat 2013 in Skopje, Macedonia.
- Jun 30, 2013
      My notes from EuRuKo 2013 conference in Athens, Greece.
- Apr 4, 2013
      Overview of few important principles introduced by the Eiffel programming language.
- Jan 28, 2013
      Testing IO with Ruby in a simple and custom way.
- Jan 13, 2013
      Pasting text from Vim after suspending it (hiding it in terminal by pressing ctrl+z).
- Dec 27, 2012
      Simple application deploys via Git using the Gitploy tool.
- Dec 16, 2012
      Summary and notes for Global Day of Coderetreat 2012 in Skopje, Macedonia.
- Jul 23, 2012
      Sending private message on Facebook using Facebook Chat API.
- Jul 17, 2012
      Some things I have been doing in the past half year.
- Jan 15, 2012
      Taking responsibility for your career and doing things for yourself.
- Dec 18, 2011
      My notes from The Five Dysfunctions of a Team: A Leadership Fable book.
- Dec 4, 2011
      Summary and notes for Global Day of Coderetreat 2011 in Skopje, Macedonia.
- Nov 12, 2011
      Understanding Agile values and priciples is easy, but implementing Agile is a different story.
- Oct 30, 2011
      Create your own Vimfiles to have more control over your Vim editor.
- Oct 23, 2011
      Notes from my development setup.
- Sep 1, 2011
      Rubygems issue with too many connection resets.
- May 14, 2011
      Open-sourcing PopraviMK Titanium mobile and web applications.
- Apr 10, 2011
      PopraviMK presentation from e-society conference in Skopje.
- Mar 31, 2011
      Writing jQuery plugins for displaying recent tweets from Twitter and recent tracks from Last.fm.
- Mar 26, 2011
      Inspiring eXtreme programming wisdom.
- Mar 23, 2011
      Some changes on my blog including UI redesign.
- Jan 23, 2011
      Making RVM and Passenger work together for Rails 2 and Rails 3 applications.
- Jan 22, 2011
      Serving static assets, stylesheet and javascript files in development in Rails 3 applications.
- Jan 22, 2011
      The confusing error for missing mysql2 gem in Rails 3 application is actually a database.yml config issue.
- Jan 13, 2011
      Generating routes for a specific controller in Ruby on Rails application with rake routes task.
- Jan 9, 2011
      Overview of Titanium Mobile 1.5.
- Jan 7, 2011
      What does __FILE__ and __LINE__ arguments mean with Ruby's class_eval.
- Oct 13, 2010
      Installing Titanium Mobile and Android SDK on Ubuntu.
- Oct 12, 2010
      Winning the Grand Prix on Vip Android challenge with PopraviMK mobile and web application.
- Sep 23, 2010
      Changes on my professional plan, got a new job at Siyelo.
- Apr 3, 2010
      Using Amazon S3 for uploads in Ruby on Rails applications.
- Feb 28, 2010
      Setting up Vim editor for Ruby on Rails development.
- Feb 4, 2010
      Totally random Javascript development tips.
- Jan 24, 2010
      Implementing Singleton Pattern with Ruby in few ways.
- Nov 11, 2009
      Fixing premature end of script headers in Apache with Phussion Passenger
- Oct 27, 2009
      Announcing Macedonian Ruby User Group (MKRUG) and ruby.mk website.
- Oct 11, 2009
      Fixing Ruby: stack level too deep by changing system limits with ulimit.
- Jul 28, 2009
      Simple overview of the Pomodoro Technique for being more productive.
- Jul 15, 2009
      Timeboxing time to prevent spending time procrastinating on unimportant stuff.
- Jul 7, 2009
      Overriding Git history and permanently removing files and folders from Git repository.
- Jun 13, 2009
      Introducing my blog.