Tags

Emacs

Setting up Emacs for OCaml Development

4 minute read

I’ve promised you articles about OCaml and here they come! The first order of business when learning a new programming language is to setup Emacs for effecti...

Commercial Emacs

1 minute read

Talking never moves anything in Emacs, never did, never will. 2021 Maintainer of GNU Emacs, who then proceeded to keep talking.

Who Needs Modern Emacs?

2 minute read

The tools we use have a profound (and devious) influence on our thinking habits, and, therefore, on our thinking abilities. — Edsger W. Dijkstra

Building Emacs from Source with pgtk

5 minute read

Yesterday the pure GTK (a.k.a. pgtk) feature branch was finally merged in Emacs’s master. In a recent article I mentioned I was super excited about it, becau...

Magit for VS Code

less than 1 minute read

Today I’ve learned about edamagit, a super faithful port of Magit for VS Code. It looks pretty similar to Magit and even has the same keybindings as Magit (e...

Why Emacs: Redux

6 minute read

redux adjective brought back; resurgent: the Victorian era redux.

CIDER 0.9

3 minute read

CIDER 0.9 (a.k.a. “EuroCIDER”) is finally out and it’s our best release yet! (shocker, right?) It took a lot more time than I originally anticipated, but at ...

A CIDER Unsession at Clojure/conj

less than 1 minute read

I’ll be talking about the evolution of CIDER at the conj, but I won’t be able to show much (in terms of features) during my talk. Luckily, however, beside th...

The Road to CIDER 0.8

less than 1 minute read

I’m planning to release the long overdue CIDER 0.8 at clojure/conj 2014. I’ll be giving a talk there that will be mostly about CIDER, so this seems like a pr...

CIDER 0.7

7 minute read

CIDER 0.7 is finally out and it’s an epic release! It’s without a doubt the most important release since the inception of the project about two years ago and...

WikEmacs lives on under new stewardship

less than 1 minute read

Several months passed since I stated my intent to shutdown WikEmacs. While I still consider the project a failed experiment and stand by everything I wrote i...

RuboCop

less than 1 minute read

After I launched the Ruby Style Guide I often received requests to create a tool enforcing the rules in the guide automatically.

Emacs Redux

less than 1 minute read

I’ve recently launched a new blog dedicated to Emacs - Emacs Redux.

The WikEmacs Experiment is Over!

1 minute read

Less than an year ago amid a lot of turmoil I’ve started an alternative to EmacsWiki. The project took off to a great start, but quickly lost traction and no...

Emacs Tip #8: Manipulating Word Case

less than 1 minute read

One operation that we have to do fairly often when editing text is manipulating the case of words. The most popular case manipulations are probably capitaliz...

guru-mode

1 minute read

Getting started with Emacs is hard. That’s a fact of life and you shouldn’t believe anyone telling you otherwise.

Emacs Support for the Slim Template Language

less than 1 minute read

I’m mostly a Ruby on Rails developer these days and as such I’m pretty fond of the Slim template language. I’ve always hated HTML + ERB, since that evil duo ...

A True Emacs Knight

less than 1 minute read

Here’s one true Emacs Knight (courtesy of my friend Gergana Stancheva).

MELPA - homebrew (Emacs Edition)

2 minute read

A few weeks ago I wrote an article about the state of package management in Emacs. In that article I pointed out that on the side of package.el too much was ...

WikEmacs: The Other Emacs Wiki

2 minute read

I’d like to apologize to everyone insulted by my previous posts. Contrary to popular belief I acknowledge EmacsWiki’s contribution to the Emacs community. Ob...

Emacs Tip #4: Repeat Last Command

less than 1 minute read

Some times you’d want to quickly repeat an Emacs command several times and most of the time it won’t have a convenient keybinding you can use to do this. Ent...

Solarized for Emacs

less than 1 minute read

I’ve created a new port of the Solarized color theme for Emacs 24. While there is another existing port of the theme I’ve decided to into a separate directio...

Emacs Tip #3: Whitespace Cleanup

1 minute read

Good developers are very careful about the proper use of whitespace in their files - there should be no empty lines at the beginning of a file, no empty line...

Emacs Tip #2: Open File in External Program

less than 1 minute read

Sometimes it’s useful to be able to open the file you’re editing in Emacs in an external program. For instance - you might be editing some HTML file and you ...

A new Zenburn theme for Emacs

1 minute read

Zenburn is a popular colour theme for vim, developed by Jani Nurminen. It’s my personal belief (and probably that of many of its users I presume) that it’s o...

Emacs Dev Kit

1 minute read

During the past few months I’ve been working on a project to convert my vast Emacs configuration into something generally useful and self-contained that coul...

Accessing the menu bar in Emacs

less than 1 minute read

Have you ever been wondering how to access the Emacs menu bar, when using Emacs in console mode? The answer is easy - press F10 or type M-x menu-bar-open(bot...

Emacs Configuration On GitHub

less than 1 minute read

When you have applications, whose configuration is as complex as that of Emacs it’s always a good idea to store that configuration under version control so y...

Back to Top ↑

Ruby

Bad Ruby: Hash Value Omission

4 minute read

Ruby 3.1 was recently released and it features one major syntax addition - you can now omit values in hash literals and keyword arguments in certain cases.1 ...

Inspecting the Contents of a Ruby Gem

2 minute read

From time to time you’ll need to inspect the contents of a locally installed Ruby gem. For instance - I needed to check the contents of my Jekyll theme (mini...

Going Rogue

less than 1 minute read

For many years I’ve enjoyed listening to programming podcasts - it’s the perfect way to make a commute a bit more fun and educational.1 RubyRogues was always...

RuboCop Logo

less than 1 minute read

Meet RuboCop’s brand new official logo!

A list of deprecated stuff in Ruby

3 minute read

As APIs evolve it’s inevitable that portions of them will be deprecated. Generally it’s fairly easy to find out what’s deprecated, but for several reasons th...

Using Ruby’s each_with_object

1 minute read

Sometimes we’d like to build a new collection object from the elements of another collection. One trivial example would be element occurrence counting, whic...

Regexp anchors in Ruby

1 minute read

Some Rubyists, when faced with the task of matching against the beginning or the end of a string, are prone to using ^ and $ in their regular expressions. Mo...

Using Ruby’s gsub with a hash

less than 1 minute read

Recently we discussed how you can use String#gsub with a block. Today we’ll examine another somewhat unknown feature of the gsub method - the ability to supp...

Lambdas/Procs in Case Expressions

1 minute read

Most Rubyists know they can use literals, classes, ranges and regular expressions in the when branches of a case expression:

Using Ruby’s gsub with a block

1 minute read

String#gsub is one of the most used Ruby methods in the wild. Just about every Ruby programmer knows about the method and uses it fairly regularly.

Announcing the Powerpack library

1 minute read

Powerpack is a small Ruby library containing (at this point) a few extensions to some core Ruby classes. I guess that in a way one can say it’s something lik...

RuboCop 0.9 is now patrolling the streets!

2 minute read

RuboCop 0.9 is finally out! This was one of our most ambitious releases - over a month of work, ~250 commits, lots of new cops and features and a lot less bu...

RuboCop 0.6.0 released

less than 1 minute read

RuboCop 0.6.0 was just released! It’s RuboCop’s biggest and most ambitious release yet!1 Here are the highlights: Fun fact - the entire rele...

RuboCop

less than 1 minute read

After I launched the Ruby Style Guide I often received requests to create a tool enforcing the rules in the guide automatically.

Setting up fallback locale(s) in Rails 3

less than 1 minute read

I18n(internationalization) and l10n(localization) are topics that are covered superbly by the Rails Guides. The one thing that’s left out is the setup of fal...

Ruby Tip #2: Get a List of All Rake Tasks

1 minute read

Many people are having trouble remembering all the rake tasks defined in a particular project’s Rakefile (especially if they hadn’t authored it). This is qui...

Back to Top ↑

Meta

Bluesky

1 minute read

Remember me trying out Mastodon a while ago? Well, it didn’t stick. For various reasons.

2023: The Year in Review

5 minute read

Life can only be understood backwards; but it must be lived forwards. – Søren Kierkegaard

A Bad Year for Blogging

1 minute read

Last year (2022) I celebrated a rather unexpected all time blogging record. As it often happens in such cases, however, there was a massive drop in my bloggi...

2022: The Year in Review

4 minute read

Another year is behind us and it’s time for the obligatory “year in review” blog post. I’ve been feeling a bit lazy, that’s why I’m getting to writing it a b...

Bozhidar is on Mastodon

1 minute read

Twitter these days is all about drama related to… Twitter (Elon Musk). That really pains me, given that as long as it has existed Twitter has been the only s...

Topic-specific RSS Feeds

less than 1 minute read

Someone complained earlier today that my Pixel 6A article was picked up by Planet Emacslife. While I wasn’t involved in adding my blog there and I never prom...

An Unexpected Blogging Record

1 minute read

Today I’ve noticed that I’ve written 36 articles to date here, which beats my previous annual record of 34 articles from 2011. I definitely didn’t see this c...

A Note About “Guest” Posts

1 minute read

Pretty often I receive emails like this one:1 Today I got three of those, which inspired me to write this short article. ↩

Back in Action

2 minute read

May you live in interesting times. – an old Chinese curse

Email Mania

4 minute read

I love email! Shocker, right? Especially in this day and age, that are dominated by social media and instant messengers. I’ve got my reasons for this and I’v...

Thinking & Writing

less than 1 minute read

If you’re thinking without writing, you only think you’re thinking. – Leslie Lamport

The War in Ukraine

4 minute read

That’s one article I’ve really struggled to write. For the past 2 weeks I’ve been totally consumed by the horrible war in Ukraine. For many years I believed ...

Titanium Edition

4 minute read

Lately I’ve been thinking a lot about music and the role it played in my life over the years. I think I’ve been pretty passionate about music ever since I di...

Reader’s Block

2 minute read

Today I finished reading a book for the first time in a couple of months. As a matter of fact - I barely did any reading in the past couple of months. That r...

My Writing Process

2 minute read

While working on my year in review article for 2021 I once again realized that my writing process is very similar to my programming process.1 Simply put - it...

Experimenting with Link Posts Permalink

1 minute read

17 years ago the famous blogger John Gruber, of Daring Fireball fame, introduced the concept of a “link log”/”linkblog”:1 I’ve always thought...

No Hello Permalink

1 minute read

I’ve always hated filler chat/email messages like “Hello! How are you doing?”, so I’m very glad we have sites like nohello.net where we can point people who ...

Advent of Code 2021

less than 1 minute read

I love programming puzzles, even if I’ve never been particularly good at solving them. For me they were always a good way to gain some practice with a new pr...

Small Improvements to the Blog

1 minute read

After switching (think) to Minimal Mistakes I’ve been doing some small improvements to the site’s structure and content. I thought it might be a good idea to...

.net Forever

2 minute read

Let’s talk a bit about .net. No, not Microsoft’s .NET, but the other .net - one of the original top-level internet domains. Given how popular .com has become...

A Note About Recruiters

9 minute read

Yesterday I got yet another completely absurd cold email from an incompetent technical recruiter:

Blog Comments are Dead

1 minute read

Here’s one random observation - (almost) nobody comments directly on blog posts these days. It seems that all the conversations happen somewhere else - Reddi...

Getting in Touch

1 minute read

From time to time people ask me what’s the best way to get in touch with me, as there are way too many options.

HEY

1 minute read

That’s going to be one really short post. I just wanted to share with you that I’ve been using HEY (a new e-mail service from Basecamp) for the past few mon...

Meta Redux

2 minute read

This site was my first attempt to write. I failed miserably and I produced some pretty crappy content, but I also learned a lot in the process.

Going Rogue

less than 1 minute read

For many years I’ve enjoyed listening to programming podcasts - it’s the perfect way to make a commute a bit more fun and educational.1 RubyRogues was always...

Back in Black

1 minute read

Back in black, I hit the sack I’ve been too long, I’m glad to be back Yes, I’m let loose From the noose That’s kept me hanging about I’ve been lookin...

Looking Back on 2013

2 minute read

2013 was a good year for me in many aspects. I’ll share here some of the programming-related achievements of mine over the year that made me somewhat proud o...

Long Time, No See

less than 1 minute read

It’s been quite a while since my last blog post. There hasn’t been much action on the open-source projects I happen to maintain either. The reason for this i...

Every blog has its first post…

less than 1 minute read

Every Generation Has A Legend. Every Journey Has A First Step. Every Saga Has A Beginning. Star Wars Episode I: The Phantom Menace, Trailer

Back to Top ↑

Tips

Git Tip: Find the Top Contributors

1 minute read

From time to time it’s useful to know who are main authors of some piece of a project. Admittedly most of the time I want to check who are the top contribut...

OCaml Tips: Implementing a range Function

3 minute read

Lots of programming languages have some built-in range functionality, that’s typically used to generate a list/array of integer numbers. Here are a couple of...

Oh My Zsh: Fun with Take

1 minute read

Today I’ve noticed that Oh My Zsh provides one really useful command (implemented as a shell function) - take. I guess with a name like this it’s not immedia...

Reload Zsh Configuration

1 minute read

I’ve been using Zsh on-and-off for a very long time (15+ years), but I still occasionally learn something new about it.1 Yesterday I was setting up oh-my-zsh...

OCaml Tips: Multiple Let Bindings

1 minute read

One thing that was a bit weird for me in OCaml early on was how to introduce multiple let bindings (e.g. in the body of a function definition). Think somethi...

Display Git Configuration

1 minute read

From time to time I tend to forget what’s my effective Git configuration, so I have to check it somehow. Most of the time I’d simply do the following:1 ...

Inspecting the Contents of a Ruby Gem

2 minute read

From time to time you’ll need to inspect the contents of a locally installed Ruby gem. For instance - I needed to check the contents of my Jekyll theme (mini...

If I Could Turn Back (Git) Time

less than 1 minute read

If only there was an easy way to find the first commit in a Git repository… A bit of Googling unveils some pretty hard to remember incantations like:

Emacs Tip #8: Manipulating Word Case

less than 1 minute read

One operation that we have to do fairly often when editing text is manipulating the case of words. The most popular case manipulations are probably capitaliz...

Ruby Tip #2: Get a List of All Rake Tasks

1 minute read

Many people are having trouble remembering all the rake tasks defined in a particular project’s Rakefile (especially if they hadn’t authored it). This is qui...

Emacs Tip #4: Repeat Last Command

less than 1 minute read

Some times you’d want to quickly repeat an Emacs command several times and most of the time it won’t have a convenient keybinding you can use to do this. Ent...

Back to Top ↑

Linux

Rename Multiple Files in Linux

2 minute read

From time to time we need to rename a bunch of files according to some pattern. One simple example that comes to mind is that recently I noticed that some a...

Running Xerox Phaser 3117 under Fedora 15

less than 1 minute read

I’ve been a GNU/Linux user for quite some time now and a Fedora user for just as long. The first distribution that I ever used was Fedora 2 and even though I...

Enabling 3D support for Nouveau in Fedora 13

less than 1 minute read

Most of you probably have heard that Fedora 13 will feature experimental 3D support for the Nouveau open source driver for Nvidia cards. This support, howeve...

Accessing the menu bar in Emacs

less than 1 minute read

Have you ever been wondering how to access the Emacs menu bar, when using Emacs in console mode? The answer is easy - press F10 or type M-x menu-bar-open(bot...

Using Xerox Phaser 3117 on Fedora

less than 1 minute read

The driver selected by default by Fedora 11 is not appropriate for Xerox Phaser 3117 - it will not print with it. However there is a very easy solution to th...

A nice zsh prompt

1 minute read

Recently I switched to zsh, after being a bash user for almost 5 years. I was in love with everything in zsh from day one, except one thing – the default pro...

Back to Top ↑

Clojure

Clojure Tricks: Number to Digits

1 minute read

If you’re into programming puzzles you probably know that there’s a whole class of problems about doing something (e.g. some calculations) with the digits of...

Clojure Tricks: Zipping Things Together

1 minute read

Many programming languages have a function for combining the elements of multiple collections (e.g. arrays or lists) together. Typically this function is nam...

Clojure Tricks: Replace in String

1 minute read

Today I saw a clever bit of Clojure code involving clojure.string/replace, that reminded me how powerful the Clojure standard library is. I guess pretty much...

Advent of Code 2021

less than 1 minute read

I love programming puzzles, even if I’ve never been particularly good at solving them. For me they were always a good way to gain some practice with a new pr...

CIDER 0.9

3 minute read

CIDER 0.9 (a.k.a. “EuroCIDER”) is finally out and it’s our best release yet! (shocker, right?) It took a lot more time than I originally anticipated, but at ...

A CIDER Unsession at Clojure/conj

less than 1 minute read

I’ll be talking about the evolution of CIDER at the conj, but I won’t be able to show much (in terms of features) during my talk. Luckily, however, beside th...

The Road to CIDER 0.8

less than 1 minute read

I’m planning to release the long overdue CIDER 0.8 at clojure/conj 2014. I’ll be giving a talk there that will be mostly about CIDER, so this seems like a pr...

SICP Distilled

1 minute read

SICP Distilled is one of the most interesting Kickstarter projects I’ve seen in a while.

CIDER 0.7

7 minute read

CIDER 0.7 is finally out and it’s an epic release! It’s without a doubt the most important release since the inception of the project about two years ago and...

Just juxt it!

1 minute read

juxt is one remarkably useful core Clojure function, that doesn’t seem to be widely used (or understood for that matter), but is part of the arsenal of every...

drop-nth in Clojure

less than 1 minute read

For some reason the standard Clojure library doesn’t have a drop-nth function (although it has take-nth). Luckily implementing it is trivial:

Back to Top ↑

Style

Back to Top ↑

Java

Changing the look & feel in NetBeans 6.8

less than 1 minute read

Recently I’ve been trying to switch my work environment theme to something with lower contrast (namely the excellent Zenburn theme). Swing applications, howe...

How to center a JDialog over a JFrame in Swing

less than 1 minute read

I always thought that the fact that JDialogs accepted a parent frame as a constructor argument was the thing, that would make the dialog’s position relative ...

Mofidy JVM parameters for JBoss AS

less than 1 minute read

Most people have been in a situation requiring them to change one or more of the parameters passed to the JVM on top of which JBoss AS is running. For instan...

Java type indicators in Eclipse

less than 1 minute read

One of the things that I don’t like about the default Eclipse settings for Java development is that in the package explorer all Java files appear in the same...

A switch on String idiom for Java

less than 1 minute read

I’ve always been frustrated with the inability to write a switch on String in Java. However the enum type introduced in Java 5.0 somewhat diminishes the iss...

Back to Top ↑

Jekyll

Topic-specific RSS Feeds

less than 1 minute read

Someone complained earlier today that my Pixel 6A article was picked up by Planet Emacslife. While I wasn’t involved in adding my blog there and I never prom...

Changes to GitHub Pages

1 minute read

Today I’ve noticed that updates to my site resulted in GitHub Pages deployment errors, even though everything was working fine locally with jekyll --serve an...

Experimenting with Link Posts Permalink

1 minute read

17 years ago the famous blogger John Gruber, of Daring Fireball fame, introduced the concept of a “link log”/”linkblog”:1 I’ve always thought...

Atom Feeds in Jekyll: Redux

3 minute read

It’s been over a decade since I’ve started using Jekyll and I’m still struggling with setting up Atom feeds there. Perhaps this happens mostly, because I rar...

Switching to Minimal Mistakes

1 minute read

Today I’ve switched the blog’s theme from Hydeout to Minimal Mistakes. I did so for several reasons:

Farewell Disqus

less than 1 minute read

Just wanted to let you know that for various reasons I’ve migrated the comments of (think) from Disqus to Hyvor Talk. I’ve described the process in a dedicat...

Migrating from Octopress to Jekyll

2 minute read

After dreading the migration of this site from Octopress 2 to Jekyll for years, I finally found the will to do it today. The process was actually very straig...

Octopress 3.0

less than 1 minute read

Can’t wait for Octopress 3.0 to be released! Octopress 2 is killing me and I was seriously considering going back to a plain Jekyll blog, before I saw 3.0 is...

Add an Atom feed to a Jekyll blog

1 minute read

As you know I’ve recently migrated my blog from WordPress to Jekyll. One of the things I had to do was add an Atom feed (RSS sucks). It was quite the easy ta...

Moving from WordPress to Jekyll

1 minute read

This is my first post after a very long hiatus partially induced by a migration of my blog from WordPress to Jekyll, which I started half an year ago and nev...

Back to Top ↑

OCaml

OCaml Adds List.take and List.drop

1 minute read

One of my small issues with OCaml is that the standard library is quite spartan. Sometimes it misses functions that are quite common in other (similar) langu...

Learning OCaml: Quoted String Literals

3 minute read

While learning OCaml I’ve noticed one curious feature - it has two types of string literals. The first type are the common and quite familiar “double-quoted ...

How are OCaml Programmers Called?

1 minute read

Ruby programmers are commonly called Rubyists. Python programmers are often called Pythonistas. Lisp programmers are widely known as Lispers. Clojure program...

Reading Files in OCaml

4 minute read

One thing I’ve noticed on my journey to learn OCaml was that reading (text) files wasn’t as straightforward as with many other programming languages. To give...

OCaml Tips: Implementing a range Function

3 minute read

Lots of programming languages have some built-in range functionality, that’s typically used to generate a list/array of integer numbers. Here are a couple of...

Zipping Collections in OCaml

2 minute read

Many programming languages have a function for combining the elements of multiple collections (e.g. arrays or lists) together. Typically this function is nam...

OCaml Tips: Multiple Let Bindings

1 minute read

One thing that was a bit weird for me in OCaml early on was how to introduce multiple let bindings (e.g. in the body of a function definition). Think somethi...

Setting up Emacs for OCaml Development

4 minute read

I’ve promised you articles about OCaml and here they come! The first order of business when learning a new programming language is to setup Emacs for effecti...

Learning OCaml

3 minute read

Live as if you were to die tomorrow. Learn as if you were to live forever. – Mahatma Gandhi

Back to Top ↑

Hardware

Back to Android: My Take on the Pixel 6A

7 minute read

A couple of weeks ago I made a spectacular and quite unexpected return to Android, after a long period of being exclusively in Apple’s mobile devices ecosyst...

New Laptop: Lenovo Yoga Slim 7

8 minute read

A couple of weeks ago I got myself a new laptop to replace my old MacBook 12-inch from 2017. As my followers might remember I was planning to buy either an ...

The MacBook: Redux

4 minute read

I wonder how many people remember the 12-inch MacBook that Apple introduced to much fanfare in 2015. It was supposed to be the future of computing, a super t...

Running Xerox Phaser 3117 under Fedora 15

less than 1 minute read

I’ve been a GNU/Linux user for quite some time now and a Fedora user for just as long. The first distribution that I ever used was Fedora 2 and even though I...

Enabling 3D support for Nouveau in Fedora 13

less than 1 minute read

Most of you probably have heard that Fedora 13 will feature experimental 3D support for the Nouveau open source driver for Nvidia cards. This support, howeve...

Using Xerox Phaser 3117 on Fedora

less than 1 minute read

The driver selected by default by Fedora 11 is not appropriate for Xerox Phaser 3117 - it will not print with it. However there is a very easy solution to th...

Das Keyboard

2 minute read

Every professional developer knows how important to the development process the keyboard is, so it is only natural to be on the look for some quality piece o...

Back to Top ↑

Rails

Setting up fallback locale(s) in Rails 3

less than 1 minute read

I18n(internationalization) and l10n(localization) are topics that are covered superbly by the Rails Guides. The one thing that’s left out is the setup of fal...

Emacs Support for the Slim Template Language

less than 1 minute read

I’m mostly a Ruby on Rails developer these days and as such I’m pretty fond of the Slim template language. I’ve always hated HTML + ERB, since that evil duo ...

Back to Top ↑

Tutorials

Atom Feeds in Jekyll: Redux

3 minute read

It’s been over a decade since I’ve started using Jekyll and I’m still struggling with setting up Atom feeds there. Perhaps this happens mostly, because I rar...

Basic Git Setup

2 minute read

Every time I change my computer or my operating system1, one of the first things I have to do is to configure Git. This article simply covers the basic Git s...

Rename Multiple Files in Linux

2 minute read

From time to time we need to rename a bunch of files according to some pattern. One simple example that comes to mind is that recently I noticed that some a...

Migrating from Octopress to Jekyll

2 minute read

After dreading the migration of this site from Octopress 2 to Jekyll for years, I finally found the will to do it today. The process was actually very straig...

Add an Atom feed to a Jekyll blog

1 minute read

As you know I’ve recently migrated my blog from WordPress to Jekyll. One of the things I had to do was add an Atom feed (RSS sucks). It was quite the easy ta...

Back to Top ↑

Email

Fastmail: Year Two

1 minute read

Here’s a small follow-up to my usage of Fastmail that started in 2021. In a nutshell - little has changed since my previous update. Fastmail is still my favo...

Dealing with Unwanted Email

2 minute read

It’s no secret that I love email. One of the great things about email addresses is that they are public and that everyone can get in touch with you this way....

Fastmail: Year One

2 minute read

A little bit over a year ago I switched from Gmail to Fastmail for my personal email. Looking back, I couldn’t be happier with my decision. The more I’ve use...

Email Mania

4 minute read

I love email! Shocker, right? Especially in this day and age, that are dominated by social media and instant messengers. I’ve got my reasons for this and I’v...

Farewell, G Suite legacy free edition

2 minute read

Today I saw the news that Google are pulling on the plug on the G Suite legacy free edition (a.k.a. Google Apps for custom domains). If you don’t recall the ...

HEY

1 minute read

That’s going to be one really short post. I just wanted to share with you that I’ve been using HEY (a new e-mail service from Basecamp) for the past few mon...

Back to Top ↑

Git

Git Tip: Find the Top Contributors

1 minute read

From time to time it’s useful to know who are main authors of some piece of a project. Admittedly most of the time I want to check who are the top contribut...

Display Git Configuration

1 minute read

From time to time I tend to forget what’s my effective Git configuration, so I have to check it somehow. Most of the time I’d simply do the following:1 ...

Basic Git Setup

2 minute read

Every time I change my computer or my operating system1, one of the first things I have to do is to configure Git. This article simply covers the basic Git s...

If I Could Turn Back (Git) Time

less than 1 minute read

If only there was an easy way to find the first commit in a Git repository… A bit of Googling unveils some pretty hard to remember incantations like:

Deleting Remote Git Branches

less than 1 minute read

This post is mostly a note to myself, since I constantly forget how to delete remote Git branches.

Emacs Configuration On GitHub

less than 1 minute read

When you have applications, whose configuration is as complex as that of Emacs it’s always a good idea to store that configuration under version control so y...

Back to Top ↑

Fedora

Running Xerox Phaser 3117 under Fedora 15

less than 1 minute read

I’ve been a GNU/Linux user for quite some time now and a Fedora user for just as long. The first distribution that I ever used was Fedora 2 and even though I...

Enabling 3D support for Nouveau in Fedora 13

less than 1 minute read

Most of you probably have heard that Fedora 13 will feature experimental 3D support for the Nouveau open source driver for Nvidia cards. This support, howeve...

Using Xerox Phaser 3117 on Fedora

less than 1 minute read

The driver selected by default by Fedora 11 is not appropriate for Xerox Phaser 3117 - it will not print with it. However there is a very easy solution to th...

Back to Top ↑

Windows

New Laptop: Lenovo Yoga Slim 7

8 minute read

A couple of weeks ago I got myself a new laptop to replace my old MacBook 12-inch from 2017. As my followers might remember I was planning to buy either an ...

Back to Top ↑

RuboCop

RuboCop Logo

less than 1 minute read

Meet RuboCop’s brand new official logo!

RuboCop 0.9 is now patrolling the streets!

2 minute read

RuboCop 0.9 is finally out! This was one of our most ambitious releases - over a month of work, ~250 commits, lots of new cops and features and a lot less bu...

RuboCop 0.6.0 released

less than 1 minute read

RuboCop 0.6.0 was just released! It’s RuboCop’s biggest and most ambitious release yet!1 Here are the highlights: Fun fact - the entire rele...

Back to Top ↑

Z Shell

Rename Multiple Files in Linux

2 minute read

From time to time we need to rename a bunch of files according to some pattern. One simple example that comes to mind is that recently I noticed that some a...

A nice zsh prompt

1 minute read

Recently I switched to zsh, after being a bash user for almost 5 years. I was in love with everything in zsh from day one, except one thing – the default pro...

Back to Top ↑

Career

Long Time, No See

less than 1 minute read

It’s been quite a while since my last blog post. There hasn’t been much action on the open-source projects I happen to maintain either. The reason for this i...

My professional CV in LaTeX

less than 1 minute read

After a long period of planning I finally migrated my professional CV from Word to LaTeX last weekend. Since I live in the European Union I used the europecv...

Back to Top ↑

Rant

Back to Top ↑

Octopress

Migrating from Octopress to Jekyll

2 minute read

After dreading the migration of this site from Octopress 2 to Jekyll for years, I finally found the will to do it today. The process was actually very straig...

Octopress 3.0

less than 1 minute read

Can’t wait for Octopress 3.0 to be released! Octopress 2 is killing me and I was seriously considering going back to a plain Jekyll blog, before I saw 3.0 is...

Back to Top ↑

OS X

Back to Top ↑

Ubuntu

Back to Top ↑

WSL

New Laptop: Lenovo Yoga Slim 7

8 minute read

A couple of weeks ago I got myself a new laptop to replace my old MacBook 12-inch from 2017. As my followers might remember I was planning to buy either an ...

Building Emacs from Source with pgtk

5 minute read

Yesterday the pure GTK (a.k.a. pgtk) feature branch was finally merged in Emacs’s master. In a recent article I mentioned I was super excited about it, becau...

Back to Top ↑

Year in Review

2023: The Year in Review

5 minute read

Life can only be understood backwards; but it must be lived forwards. – Søren Kierkegaard

2022: The Year in Review

4 minute read

Another year is behind us and it’s time for the obligatory “year in review” blog post. I’ve been feeling a bit lazy, that’s why I’m getting to writing it a b...

Back to Top ↑

Fastmail

Fastmail: Year Two

1 minute read

Here’s a small follow-up to my usage of Fastmail that started in 2021. In a nutshell - little has changed since my previous update. Fastmail is still my favo...

Fastmail: Year One

2 minute read

A little bit over a year ago I switched from Gmail to Fastmail for my personal email. Looking back, I couldn’t be happier with my decision. The more I’ve use...

Farewell, G Suite legacy free edition

2 minute read

Today I saw the news that Google are pulling on the plug on the G Suite legacy free edition (a.k.a. Google Apps for custom domains). If you don’t recall the ...

Back to Top ↑

Trick

Clojure Tricks: Number to Digits

1 minute read

If you’re into programming puzzles you probably know that there’s a whole class of problems about doing something (e.g. some calculations) with the digits of...

Clojure Tricks: Zipping Things Together

1 minute read

Many programming languages have a function for combining the elements of multiple collections (e.g. arrays or lists) together. Typically this function is nam...

Clojure Tricks: Replace in String

1 minute read

Today I saw a clever bit of Clojure code involving clojure.string/replace, that reminded me how powerful the Clojure standard library is. I guess pretty much...

Back to Top ↑

Swing

How to center a JDialog over a JFrame in Swing

less than 1 minute read

I always thought that the fact that JDialogs accepted a parent frame as a constructor argument was the thing, that would make the dialog’s position relative ...

Back to Top ↑

Atom

Atom Feeds in Jekyll: Redux

3 minute read

It’s been over a decade since I’ve started using Jekyll and I’m still struggling with setting up Atom feeds there. Perhaps this happens mostly, because I rar...

Add an Atom feed to a Jekyll blog

1 minute read

As you know I’ve recently migrated my blog from WordPress to Jekyll. One of the things I had to do was add an Atom feed (RSS sucks). It was quite the easy ta...

Back to Top ↑

Scala

Back to Top ↑

Gadgets

Back to Android: My Take on the Pixel 6A

7 minute read

A couple of weeks ago I made a spectacular and quite unexpected return to Android, after a long period of being exclusively in Apple’s mobile devices ecosyst...

Back to Top ↑

Programming

Back to Top ↑

Python

Back to Top ↑

Debian

Back to Top ↑

Rake

Ruby Tip #2: Get a List of All Rake Tasks

1 minute read

Many people are having trouble remembering all the rake tasks defined in a particular project’s Rakefile (especially if they hadn’t authored it). This is qui...

Back to Top ↑

Android

Back to Android: My Take on the Pixel 6A

7 minute read

A couple of weeks ago I made a spectacular and quite unexpected return to Android, after a long period of being exclusively in Apple’s mobile devices ecosyst...

Back to Top ↑

CIDER

CIDER 0.9

3 minute read

CIDER 0.9 (a.k.a. “EuroCIDER”) is finally out and it’s our best release yet! (shocker, right?) It took a lot more time than I originally anticipated, but at ...

A CIDER Unsession at Clojure/conj

less than 1 minute read

I’ll be talking about the evolution of CIDER at the conj, but I won’t be able to show much (in terms of features) during my talk. Luckily, however, beside th...

Back to Top ↑

Hyvor Talk

Farewell Disqus

less than 1 minute read

Just wanted to let you know that for various reasons I’ve migrated the comments of (think) from Disqus to Hyvor Talk. I’ve described the process in a dedicat...

Back to Top ↑

Blogging

Blog Comments are Dead

1 minute read

Here’s one random observation - (almost) nobody comments directly on blog posts these days. It seems that all the conversations happen somewhere else - Reddi...

Back to Top ↑

Tutorial

Resetting CircleCI Checkout SSH Keys

1 minute read

Lately I’ve been having some weird problems with CircleCI and some of my OSS projects (most recently CIDER) - the SSH checkout keys that CircleCI uses to fet...

Back to Top ↑

Zsh

Oh My Zsh: Fun with Take

1 minute read

Today I’ve noticed that Oh My Zsh provides one really useful command (implemented as a shell function) - take. I guess with a name like this it’s not immedia...

Reload Zsh Configuration

1 minute read

I’ve been using Zsh on-and-off for a very long time (15+ years), but I still occasionally learn something new about it.1 Yesterday I was setting up oh-my-zsh...

Back to Top ↑

Mastodon

Revisiting Mastodon

1 minute read

After my recent article on Bluesky something rather unexpected happened. I noticed a link to an interesting post on Mastodon and when I signed in to check it...

Bozhidar is on Mastodon

1 minute read

Twitter these days is all about drama related to… Twitter (Elon Musk). That really pains me, given that as long as it has existed Twitter has been the only s...

Back to Top ↑

Learning OCaml

Learning OCaml: Quoted String Literals

3 minute read

While learning OCaml I’ve noticed one curious feature - it has two types of string literals. The first type are the common and quite familiar “double-quoted ...

Back to Top ↑

Keyboards

Das Keyboard

2 minute read

Every professional developer knows how important to the development process the keyboard is, so it is only natural to be on the look for some quality piece o...

Back to Top ↑

Design Patterns

Back to Top ↑

IntelliJ

Back to Top ↑

Eclipse

Java type indicators in Eclipse

less than 1 minute read

One of the things that I don’t like about the default Eclipse settings for Java development is that in the package explorer all Java files appear in the same...

Back to Top ↑

JBoss

Mofidy JVM parameters for JBoss AS

less than 1 minute read

Most people have been in a situation requiring them to change one or more of the parameters passed to the JVM on top of which JBoss AS is running. For instan...

Back to Top ↑

NetBeans

Changing the look & feel in NetBeans 6.8

less than 1 minute read

Recently I’ve been trying to switch my work environment theme to something with lower contrast (namely the excellent Zenburn theme). Swing applications, howe...

Back to Top ↑

LaTeX

My professional CV in LaTeX

less than 1 minute read

After a long period of planning I finally migrated my professional CV from Word to LaTeX last weekend. Since I live in the European Union I used the europecv...

Back to Top ↑

Kindle

Back to Top ↑

Common Lisp

Parsing numbers from string in Common Lisp

1 minute read

One task that often recurs in programming is the need to parse a string representation a number(or several numbers) and convert it to its numeric value. Pars...

Back to Top ↑

Groovy

Back to Top ↑

Books

Back to Top ↑

Django

Back to Top ↑

Heroku

Back to Top ↑

ActiveAdmin

Back to Top ↑

RailsAdmin

Back to Top ↑

iOS

Back to Top ↑

Projectile

Back to Top ↑

Podcasts

Going Rogue

less than 1 minute read

For many years I’ve enjoyed listening to programming podcasts - it’s the perfect way to make a commute a bit more fun and educational.1 RubyRogues was always...

Back to Top ↑

HEY

HEY

1 minute read

That’s going to be one really short post. I just wanted to share with you that I’ve been using HEY (a new e-mail service from Basecamp) for the past few mon...

Back to Top ↑

Disqus

Farewell Disqus

less than 1 minute read

Just wanted to let you know that for various reasons I’ve migrated the comments of (think) from Disqus to Hyvor Talk. I’ve described the process in a dedicat...

Back to Top ↑

Apple

The MacBook: Redux

4 minute read

I wonder how many people remember the 12-inch MacBook that Apple introduced to much fanfare in 2015. It was supposed to be the future of computing, a super t...

Back to Top ↑

MacBook

The MacBook: Redux

4 minute read

I wonder how many people remember the 12-inch MacBook that Apple introduced to much fanfare in 2015. It was supposed to be the future of computing, a super t...

Back to Top ↑

Recruitment

A Note About Recruiters

9 minute read

Yesterday I got yet another completely absurd cold email from an incompetent technical recruiter:

Back to Top ↑

Firefox

Firefox is the Only Alternative

7 minute read

Supposedly today we have a lot of browsers to choose from - Google Chrome, Safari, Microsoft Edge, Firefox, Brave, Opera, Vivaldi, etc. Having choices is a g...

Back to Top ↑

Browsers

Firefox is the Only Alternative

7 minute read

Supposedly today we have a lot of browsers to choose from - Google Chrome, Safari, Microsoft Edge, Firefox, Brave, Opera, Vivaldi, etc. Having choices is a g...

Back to Top ↑

Advent of Code

Advent of Code 2021

less than 1 minute read

I love programming puzzles, even if I’ve never been particularly good at solving them. For me they were always a good way to gain some practice with a new pr...

Back to Top ↑

Communication

No Hello Permalink

1 minute read

I’ve always hated filler chat/email messages like “Hello! How are you doing?”, so I’m very glad we have sites like nohello.net where we can point people who ...

Back to Top ↑

Magit

Magit for VS Code

less than 1 minute read

Today I’ve learned about edamagit, a super faithful port of Magit for VS Code. It looks pretty similar to Magit and even has the same keybindings as Magit (e...

Back to Top ↑

VS Code

Magit for VS Code

less than 1 minute read

Today I’ve learned about edamagit, a super faithful port of Magit for VS Code. It looks pretty similar to Magit and even has the same keybindings as Magit (e...

Back to Top ↑

GitHub Pages

Changes to GitHub Pages

1 minute read

Today I’ve noticed that updates to my site resulted in GitHub Pages deployment errors, even though everything was working fine locally with jekyll --serve an...

Back to Top ↑

Perl

Perl Turns 34 Permalink

1 minute read

On Dec 18th, 2021, Perl turned 34!1 Here’s how it all started: Depending on what you consider the birthday, that is. The first Perl commit wa...

Back to Top ↑

Laptops

New Laptop: Lenovo Yoga Slim 7

8 minute read

A couple of weeks ago I got myself a new laptop to replace my old MacBook 12-inch from 2017. As my followers might remember I was planning to buy either an ...

Back to Top ↑

Lisp

Back to Top ↑

Interactive Programming

Back to Top ↑

Language Design

Bad Ruby: Hash Value Omission

4 minute read

Ruby 3.1 was recently released and it features one major syntax addition - you can now omit values in hash literals and keyword arguments in certain cases.1 ...

Back to Top ↑

Code Style

Bad Ruby: Hash Value Omission

4 minute read

Ruby 3.1 was recently released and it features one major syntax addition - you can now omit values in hash literals and keyword arguments in certain cases.1 ...

Back to Top ↑

Google

Farewell, G Suite legacy free edition

2 minute read

Today I saw the news that Google are pulling on the plug on the G Suite legacy free edition (a.k.a. Google Apps for custom domains). If you don’t recall the ...

Back to Top ↑

Wordle

Cheating at Wordle Like a Hacker

1 minute read

These day almost everyone on Twitter seems to be playing the word game Wordle, including me. You’ve probably seen many people around you sharing images like ...

Back to Top ↑

Music

Titanium Edition

4 minute read

Lately I’ve been thinking a lot about music and the role it played in my life over the years. I think I’ve been pretty passionate about music ever since I di...

Back to Top ↑

Crypto

The Case Against Crypto Permalink

4 minute read

Bitcoin reminds me of what Oscar Wilde said about fox hunting. He said it was the pursuit of the uneatable by the unspeakable. – Charlie Munger

Back to Top ↑

Editors

Zed Editor

1 minute read

Yesterday the demise of Atom was a very hot topic for many programmers.1 One thing I noticed in the comments here and there was that the original team behind...

Back to Top ↑

Haskell

Back to Top ↑

CircleCI

Resetting CircleCI Checkout SSH Keys

1 minute read

Lately I’ve been having some weird problems with CircleCI and some of my OSS projects (most recently CIDER) - the SSH checkout keys that CircleCI uses to fet...

Back to Top ↑

GitHub

Resetting CircleCI Checkout SSH Keys

1 minute read

Lately I’ve been having some weird problems with CircleCI and some of my OSS projects (most recently CIDER) - the SSH checkout keys that CircleCI uses to fet...

Back to Top ↑

Bundler

Back to Top ↑

Social Media

Bluesky

1 minute read

Remember me trying out Mastodon a while ago? Well, it didn’t stick. For various reasons.

Back to Top ↑

Bluesky

Bluesky

1 minute read

Remember me trying out Mastodon a while ago? Well, it didn’t stick. For various reasons.

Back to Top ↑

Fediverse

Revisiting Mastodon

1 minute read

After my recent article on Bluesky something rather unexpected happened. I noticed a link to an interesting post on Mastodon and when I signed in to check it...

Back to Top ↑

AsciiDoc

AsciiDoc Language Specification

3 minute read

I’m an avid fan of AsciiDoc and I’ve been using it for years to write documentation for some of my OSS projects (e.g. CIDER and Projectile). I try to keep tr...

Back to Top ↑