Handling the switching between 2 laptops when you're tight on budget.
Hi! My name is Michał Góral, I am software developer (currently at Nokia) and this is my personal website. You can read more about me on a separate page if you’re curious.
You can contact me by e-mail: firstname.lastname@example.org. My PGP key fingerprint is: 0423 DE59 98D1 2C33 E599 CDCF E3DD DA4D C45F 58CB.
List of Blog Posts
It seems that we have a curse of abundance: so many to-do apps and methodologies that we can no longer choose one.
Things start becoming nasty.
Recent release of kpsh adds support for Wayland.
Yesterday early morning there was a blackout.
SDF is a public access UNIX System which I recommend visiting sometimes.
DWM-like master-stack layout for i3 is possible by using i3's IPC mechanism.
Operating System Controls as escape sequences which can be used to change the background of both terminal and programs running in it.
My thoughts about problems with which today's press struggle.
Monochrome colorschemes are good and pleasant for eyes. That's why I created one for Vim.
Here we will learn about so-called double fork technique... More-less.
Przemek's first drawing presenting his whole family.
Obstacles I encountered while testing accessibility of this blog's theme.
I think I fixed RSS feed and now it includes new projects section which I added few days ago.
Even though I almost entirely stopped listening to it, I can't stay silent about recent events in Polish Radio Trójka.
I baked a bread.
Review of Anker SoundCore Bluetooth Speaker.
Formatting is one of these parts of TWC which I disliked the most. This has finally changed with release of TWC 0.9 and complete rewrite of formatting strings syntax.
Every month bots eat my server's traffic, so I blocked them.
I synchronize a lot of things, each of them differently. Let's take a look how to write a simple Bash script which automates and parallels that.
Notes should be pretty too, because why not? Here I'll show you my method of rendering them to HTML.
My take on Zettelkasten methodology.
Every once in a while I learn something new about Vim. This time it's :keepalt command.
I broke RSS, but it should be fixed now.
Using custom Ctags language definition to find tags in free-text notes.
Trying something new for mail provider: a small company from Switzerland called Migadu.
Configuring one of the best SMTP clients on Debian and some caveats which we must remember.
We can use user-level systemd services to run X sessions.
Introduction of new blog theme: Tale.
Xsession is a default way of starting X sessions in Debian, but for some reason it remains a mystery for many people. Here I try to shed some light on it.
Bad news about dotfiles series.
I refreshed my public PGP key.
It's a little late to make a New Year's resolution, but I'll make one nevertheless.
Third and final part series describing my custom system of keeping and deploying dotfiles.
I refreshed my public PGP key.
Second part series describing my custom system of keeping and deploying dotfiles.
First part series describing my custom system of keeping and deploying dotfiles.
Git has capabilities of writing custom credential helpers, which can fill passwords for accessing HTTP repos for us.
Happy Valentines Day!
Presentation of my program to for toggling file comments depending on a list of keywords in a language similar to preprocesor.
Information about migrating blog sources.
With markorapp, a script which I wrote, it's easy to create "singletons" in i3. Singletons are applications which should have only one instance, like a particular terminal.
ADL being treated as a part of class' interface.
Structured Bindings is a new way to decompose values returned from functions. It's similar to some other programming languages and greatly simplifies the code.
Presentation of simple scripts and techniques allowing automatic generation of program's version.
Switching to another static site generator: Hugo.
Changelog is important, but we can simplify our lives and generate it, at least partially.
What is a fork() and what PID it returns?
Writing and using webhooks to automate deployment of web applications.
Several ways to create lists in Python.
How can we live with types which do not implement assignment operator?
I did it! I forced a buggy xrandr to toggle screens and not kill X session!
Migration of blog from Wordpress to static site generator: Jekyll.
Graceful shutdown of PyQt applications might be harder than it looks like. This article presents the problem and a way to resolve it.
How C++ handles dependant names and why we must use typename keyword everywhere.
Name hiding is a surprising feature of C++. Here we'll learn a little more about it.
There is one const usage in C++ which is a little different than the others. Andrei Alexandrescu called it the most important const.
The article about Return Value Optimization - one of the most important features of C++ compilers.
A short summary of C++ comitee meeting in Urbana-Champaign.
A trick which allows us to easily convert from const_iterator to iterator. Please don't do that.
Process substitution in Bash is a powerful technique which allows us to redirect command's output to programs which only accept files.
A short introduction to one of the most breakthrough features of C++11: rvalue references and move semantics.
A short thing about how Python prints its version number.
Introduction to C++ polymorhpism.
I released a new version of SubConvert, a program to convert between various video subtitle formats.
Doom 3 source code has been released.
Second part of unfinished series of interesting Android apps.
A video presenging Droste Effect which is a recursive image.
First part of unfinished series of interesting Android apps.
Another silly Apple patent.
Kupfer is a program launcher written in Python.
What does it mean when we say 'a + b'?
Third and final part of series about using Matlab Engine.
Release of a new version of kernel.
Few quick thoughts about the mobile internet.
It's possible to create a functions in C, similar to printf and scanf, which accept infinite number of arguments.
Second part of series about using Matlab Engine.
First part of series about using Matlab Engine.