Social media preview images for static website

How to dynamically generate Open Graph images with Ruby and add them into a nanoc static site generator pipeline.

Semantic search in Rails

Search by meaning instead of literal keywords in Rails using OpenAI, pgvector and neighbor gem.

LastPass slows down your browser

A Chrome extension for a popular password manager significantly slows down every page load. What does it do? Who knows. But their privacy policy is not great so it might be time to find an alternative.

Suggesting email address using string similarity algorithm

By using inexact string matching techniques and string similarity metrics you can get more customers and increase your revenue. In this article we will improve customers' onboarding experience by fixing typos in their sign up emails.

The Great Computer Experiment: Ruby Edition

In this article I'll put 4 machines and 5 different operating systems through a true test. What am I trying to achieve? I don't know. But I intend to share my experience with you.

Progressive web application as a share option in Android

With the new Web Share Target API you can register your progressive web application as a share intent on Android devices. This is supported on mobile Chrome from version 71.

Tips for getting a programming job abroad

A few years ago I moved across the globe to search for a programming job in a country where I had no connections in. I'd like to share a few tips with you that will make it easier if you decide to do the same.

Garbage collection in C#

Garbage collection is part of almost every modern programming language. It enhances programmer's productivity by automating the application memory management. This article explains the basic concepts of tracing and generational mark and sweep garbage collection and dives into details of CLR and C# implementation.

Automate your macOS development machine setup

There is a few powerful tools that you can use to set up your development environment on macOS when doing a clean install.

Progressive Web Applications

I had a chance to play with Progressive Web Applications over the past few days and I built a small prototype in Rails. This article tries to give you the answer if it is a good fit your needs or you should stick with classic mobile development.

Using tags to browse ruby and gem source with Vim

Using tags brings your Vim closer towards a fully capable IDE and makes code browsing and navigation easier. This setup allows you to jump into not just the project code but you also inside your gem and ruby source.

Git auto-completion on Mac

Using tab to speed up your git workflow with auto-completion is a must for every developer that likes to live in the terminal.

Summing up records in large CSV with ack

UNIX tools are handy when it comes to processing large structured files full of data. This time we are going to use a simple awk command to sum up numbers in a CSV column.

Maintaining work ticket

Part of being a great developer is to make sure that everyone from your team can take over your work at any time and maintaining a work ticket is one of the prerequisites of that.

How to write work assignments for developers

Communication with developers might seem hard and threatening, but it doesn't have to be. You don't have to shout *scrum* three times while turning in circles before a meeting. You don't have to choose the right colour of post-it notes that matches the current moon phase and goes well with your kanban board. And you don't even have to sacrifice five sharpies to the Agile Gods to speak the developers' language.

Refactoring techniques: replace if with dictionary mapping

A simple technique for refactoring long if statements into a hash when they represent configuration of some kind.

Select files based on CSV with Powershell

A simple script can save you hours of manual labour so it is worth to get some knowledge of scripting languages that are available to you.

Inspecting a source of a Chrome extension

How to view the source of a Chrome extension on Windows machine to check whether it doesn't do anything harmful.

Improve battery life on Linux

There is a small tool for every notebook users running Linux on their machines that improves their battery life.

Offline dictionary for terminal

These two small tools for your terminal are very handy for people using a second language that find themselves often without or on an unreliable internet connection. One is an offline dictionary and the other provides spelling suggestions similar to the Google ones.

Fast and light-weight Linux browser

Chrome and Firefox are not the best browsers on a resource limited machine with Linux, so I was looking for a decent light-weight alternative, found Midori and been happy with it so far.


On the importance of focus in a daily work of a software developer and 3 things that will stand in the way of achieving perfect concentration.

How to check single reponsibility principle

Most of you know that object should have just one responsibility in a good object oriented design, but do you know how to validate it?

Size of Postgresql database on Ubuntu

How to get a size of Postgre database on Ubuntu server via terminal.

Create record if it does not exist in ActiveRecord

A sleek and concise way to retrieve or create a record if it doesn't exist based on passed parameters with ActiveRecord in Ruby on Rails.

Whiteboard for task management

The role of a physical whiteboard for managing task in an agile team. Is it really worth the effort?

Keep Ubuntu virtual machine up to date

If you are too lazy to keep your VM up to date with all the security patches and software updates seek no more.

Forward SSH keys for Capistrano deploys

You don't need to setup SSH keys for your remote server just to access your git repository with Capistrano.

Upload files to Azure Storage with Azure CLI on Mac

This article shows you how to upload files into Azure Blob storage on OS X with Azure CLI tool.

Running ExUnit tests when file changes

3 different approaches of running Elixir tests automatically when a test or source file changes.

Resize images in blob storage with Azure Webjobs

Generate thumbnails and resize images in the Azure Blob Storage with Azure Webjobs on Azure Websites using ImageProcessor.

Increase request length in Phoenix to upload large files

Easy way how to upload files bigger than 8MB in Phoenix framework.

Elixir undefined function xmerl

How to solve undefined xmerl function issue on Ubuntu machine for Elixir calls to Erlang.

Adding Ecto model in Phoenix throws path/3 undefined

Read the output of the generator before starting to panicking that something went wrong while creating a new model in Phoenix framework with Elixir.

Elixir Ecto database create failed on SQL_ASCII

An UTF8 SQL_ASCII incompatibility issue with default postgresql configuration and ecto default settings on OS X is pretty simple to overcome.

Uploading file to Azure Blob storage from Elixir

How to publish blobs into Azure Storage account from Elixir with Erlang erlazure library.

How to host static website with SSL for free

Using Github pages and CloudFlare to host your static website on HTTPS with git publishing support.

Full text search on static website

How to implement a client side search in a single page manner with a search index provided as a JSON. This tutorial uses a static website generator nanoc to create the JSON, lunr.js for performing the client side search and history.js to use URL parameters without a need to refresh the location.

SVG as a submit button

How to use an inline SVG image as a submit button for a form. This technique is also available for any other form of images.

Run shell command and save its output in ruby

How to run unix shell command from ruby program and save its output into variable.

Full text search in rails with pg_search

Adding a search functionality to your rails application is straightforward. If you are using postgresql you can make use of pg_search gem which adds simple scopes to models for you to query.

How to speed up your rspec workflow

Running tests with rails might get slow, but there are tools that can speed up your testing workflow. Spring reduces the initial rails loading time and guard keeps an eye on files and run tests when they change.

Facebook and Twitter link preview

How to create awesome open graph and twitter card link previews for your website.

Create e-book from website with ruby

How to scrape websites and create e-books out of them with ruby and Sigil.

Using monit to keep your rails app alive

Making your services more robust makes your rails application much more reliable.

Improve user experience when using Turbolinks

How to improve user experience when using turbolinks by adding a simple progress bar.

Add keyboard shortcut to Chrome extension

Adding custom keyboard shortcuts to invoke Chrome extension is super easy.

Display SQL in Rails console

Viewing the SQL of Active Record calls is very usefull especially for development. You can display it in your console for every call to database you make.

Side projects

Having a side project is a great thing and I'll tell you why you should have one and how to get into it.

Enumerator with index

How to get a map item with index in the block? Combine enumerator and with_index methods on a collection.

Respond to different formats in Rails controller

How to act as a web service and share the logic inside controller and respond to different formats.

Fix washed colours with Dell U2414H

How to fix a problem when Dell U2414H is connected with HDMI and the colours are not quite right.

Auto backup and restore PostgreSQL

A simple way how to backup and restore your production postgresql database.

Set default user and key for SSH connection

How to set a default user and SSH key for specific SSH connection without the need to type it every time.

How to maintain programmer's health

A guide to become a healthy programmer without any back pain and repetitive strained injuries. The ancient secrets of the most agile office rats has been revealed today.

Manage windows on OS X

Moving from one operating system to another can be a bit painful and you will miss some of the features from the previous one. This article shows you, how to organise, move and resize windows with keyboard shortcuts on OS X with a fantastic app called Spectacle.

Create a game in javascript with kiwi.js

10 steps walk through on creating a simple 2D game in javascript with canvas using a kiwi.js framework.

How to check collection for items

Difference between any? exists? when testing for an item presence in collections and associations.

Debug Rails with byebug

Answers the question how to debug a Ruby or Rails application

Remember current session in Vim

A simple tip to save and restore the current session in Vim

When to use self in ActiveRecord models

A simple article about using self identifier in Rails ActiveRecord models

Legacy software development with LINQPad

A funny story from another Wellington .NET User Group meetup

Future of C#

Ivan Towlson brought news about the future of C# straight from the BUILD to Wellington.

Improvements in Bonobo Git Server 3.0 and 3.1

There is a lot of new major improvements in Bonobo Git Server for Windows version 3.0 and 3.1

Font Awesome in ASP.NET MVC WebGrid

Adding Font Awesome icons to places where it is hard to add custom HTML.

Using bower in ASP.NET MVC

Simple guide for installing a front-end library manager bower with ASP.NET MVC.

Avoiding duplicity in Razor with helpers

How to avoid duplicates in Razor views in ASP.NET MVC

Add Git Changes to Bash in Ubuntu

This is the description

Managing front-end libraries with Bower in Rails

A guide to install javascript and stylesheet libraries to your rails project with bower.

What's new in Bonobo Git Server 2.1

Bonobo Git Server for Windows version 2.1 has been released with lots of new useful features.

When should I use exception?

A short article about throwing exceptions in C# with guidelines.

Dynamic Dispatch in C#

Describes how to achieve (multiple) dynamic dispatch in C# with dynamic keyword, visitor pattern and dictionary.

Empty EventArgs

Arithmetic Overflow in C#

What an arithmetic overflows is, how you can handle it in C# and what the best practices are.

Insert Multiple Items in One Line with MSSQL 2008

Microsoft SQL Server 2008 and higher allows you to insert multiple records in just one line INSERT.

Registered Servers in SQL Server Management Studio

Registered Servers window inside SQL Server Management Studio is useful for running queries on multiple servers at once and for grouping them in logical groups.

Phonegap CordovaActivity Problem

How to solve the following error -- No Java files found which extend CordovaActivity -- when using the new version of Phonegap for Android.

Solution Explorer in SQL Server Management Studio

SQL Server Management Studio is built on top of Visual Studio and that means that there are some useful features already available in it. One of them is the Solution Explorer.

Colored Status Bar in SQL Server Management Studio

This is the description

Adding Line Numbers to SQL Server Management Studio

How to add line numbers to query editor in Microsoft SQL Server Management Studio.

Collection Asserts with NUnit

Improve your tests with the use of CollectionAssert from NUnit framework.

Test Cases with NUnit

Using NUnit test cases to simplify your test suites.

Extension Methods with Null Object

Don't forget that extension methods are just a syntactic sugar for calling a static methods.

Add Git Changes to Bash in Ubuntu

How to display git changes and status in Ubuntu bash (or any other) - similar to posh-git from Powershell.

What to do with an old disk after SSD upgrade?

So, you upgraded your PC with an SSD drive and you put an old magnetic drive to a closet? I'll tell you what you can do with it.

Var Wars

Descendants vs. Elements in Linq to XML

What is the main differences between Descendants() and Elements() methods in Linq to XML.

Careful with Serialization

You should always specify invariant culture when serializing and deserializing data with the use of ToString method.

Why You Should Be Able to Work from Home

Few reasons why programmers should work from home on regular basis.

ASP.NET MVC Basic and Windows Authentication Side by Side

This is the description

ASP.NET MVC Forms and Basic Authentication Side by Side

How to have forms and basic authentication in one application.

Butterick's Practical Typography Review

Butterick's Practical Typography is a fantastic book about typography from Mathew Butterick.

Confession of a Public Speaker Review

Review of a book by Scott Berkun called Confession of a Public Speaker.

Show Current File in Solution Explorer

When lost in solution explorer press this magical shortcut.

Custom Fonts for All Browsers with Font Face

This article describes how to embed custom font face to your website in a way that should work on every major browser.

Introduction to Informative Speech

Informative Speech is the most useful types of speeches. There is always an opportunity for performing this speech - work, school, research. This article shares the basics with you.

The Most Important Skill of Programmer

What is the most important skill for a programmer.

How to Improve Speech Delivery

This blog post is aimed to help you with better landing of your presentations. Following techniques helps you to deliver a clear and concise speech.

Defeat Public Speaking Apprehension

Public speaking apprehension or anxiety is one the most common reasons people avoid public speaking as much as they can. This article focuses on simple techniques how to overcome the fear of public speaking.

Access Total Commander Path with Shortcut

How to access Total Commander address-path bar in a browser like way.

Better Structure of Impromptu Speech

This blog post helps you with the structuring your impromptu speech.

Visualize Directory Size with Total Commander

How to visualize directory content within Total Commander.

Impromptu Speech

Introduction to an impromptu speech. Shows and how to focus on delivering a speech clearly and in an engaging way. Describes the basic structure of the speech.

Introduction to Public Speaking

This article introduces public speaking and its importance to your normal life. It gives you an overview on rhetorics and few simple speech concepts.

Pro Tip - Faster XAML Files Opening with Visual Studio

How to open XAML files in Visual Studio with lightning speed.

Pro Tip - Show File in Solution Explorer with Resharper

When lost in the large solution you can navigate to the current file with the simple shortcut.

Remember Username and Password with Bonobo Git Server

You can remember username and password for your git repository with the new version of Bonobo Git Server.

Pro Tip - Navigate Between Class Members with Resharper

With Resharper you can navigate easily between class members.

Blogging with Nanoc

This is the fourth part of the series about nanoc. It shows how nanoc can be used to create a simple blogging engine.

Pro Tip - Change Vim Color Theme

Tips for programming professionals and power users. This one shows how to change color schemes in vim.

Merge Files with Git Merge Tool

This article shows you how you can merge branches in git with git merge and how to use git mergetool for conflict resolution.

Compare Files with Git Diff Tool

This is post shows how to set up difftool in git and how to use it to compare files from git command line.

Nanoc Project Structure

This the third part of the series about nanoc. It describes how the project structure looks like and how the things are put together.

Creating Simple Site with Nanoc

This is article describes how to statically generate simple web site. It's the second part of the series about creating HTML with nanoc.

Introduction to Static Site Generation with Nanoc

This is the first part of the series about static html content generation with nanoc. It describes how to create simple page and shows some basic facts about nanoc.

CSS on Steroids - Introduction to LESS/SASS

This article is an introduction to LESS and SASS based on presentation from Czech Windows User Group called CSS on Steroids.

C# Naming and Layout Guidelines

On the notion of C# naming and layout guidelines to support communication and understanding in the team.

Basic Authorization Attribute in ASP.NET MVC

Describes how to use basic authorization effectively in ASP.NET MVC.

Composing Converters Together in WPF

How to create composing converter in WPF.

How to Design Maintainable Web Page

Describes how to create basic css and html structure for your web site.

Object Oriented Programming - Inheritance

Notes about inheritance in object oriented programming.

Retrieve Computer Uptime in C#

How to retrieve computer uptime in C#.

PostgreSQL Autoincrement

Shows how to apply autoincrement in PostgreSQL.

MSSQL Select From Union

Shows how to create SELECT FROM UNION construct in Microsoft SQL Server.

MSSQL Default Values

Describes how to set default values for a columns in Microsoft SQL Server.