Website move

Get back to “Jump to”

Photo of a truck on a road.

(photo Ikiwaner, CC-BY-SA)

Some regular visitors of the web site may be aware that the page used to run on Jogger.pl platform. Some will also be aware that the service closes shop, an act which forced me to move to another hosting.

In moving the page, I’ve tried to keep old URLs work so even though canonical locations for posts have changed, the old links should result in a correct redirect.

This is also true for feeds butwhile Jogger provided customisation options (RSS and Atom, excerpts only, no HTML and posts count), currently only full-content HTML Atom feeds limited to newest ten entries are provided.

If anything broke for you, please do let me know at mina86@mina86.com.

I have not yet figured out what to do with comments which is why commenting is currently unavailable. Since I want my whole page to be completely static, I’m planning on using a third-party widget. So far I’ve narrowed the choice down to HTML Comment Boxand the new hotness, Spot.IM. Any suggestions are also welcome.

Graph showing drop in response time from 300ms to 60ms

On the bright side, the page now loads five times faster! Jogger.pl took its sweet time when generating responses. A static page and better optimised infrastructure of my current provider allows to drop response time from 300 to 60 ms.

On Unicode

Get back to “Jump to”

There is a lotof misconceptions about Unicode. Most are there because people assume what they know about ASCII or ISO-8859-* is true about Unicode. They are usually harmless but the tend to creep into minds of people who work with text which leads to badly designed software and technical decisions made based on false information.

Without further ado, here’s a few facts about Unicode that might surprise you.

Bash right prompt

Get back to “Jump to”

There are multiple ways to customise Bash prompt. There’s no need to look for long to find plethora of examples with fancy, colourful PS1s. What have been a bit problematic is having text on the right of the input line. In this article I’ll try to address that shortcoming.

Getting text on the right

The typical approach is using PROMPT_COMMANDto output desired content. The variable specifies a shell code Bash executes prior to rendering the primary prompt (i.e. PS1).

The idea is to align text to the right and then using carrier return move the cursor back to the beginning of the line where Bash will start rendering its prompt. Let’s look at an example of showing time in various locations:

__command_rprompt() {
	local times= n=$COLUMNS tz
	for tz in ZRH:Europe/Zurich PIT:US/Eastern \
	          MTV:US/Pacific TOK:Asia/Tokyo; do
		[ $n -gt 40 ] || break
		times="$times ${tz%%:*}\e[30;1m:\e[0;36;1m"
		times="$times$(TZ=${tz#*:} date +%H:%M)\e[0m"
		n=$(( $n - 10 ))
	done
	[ -z "$times" ] || printf "%${n}s$times\\r" ''
}
PROMPT_COMMAND=__command_rprompt
Terminal window presenting right prompt behaviour.

Clearing the line on execution

It has one annoying issue. The right text reminds on screen even after executing a command. Typically this is a matter of aesthetic but it also makes copying and pasting session history more convoluted.

A manual solution is to use redraw-current-linereadline function (e.g. often bound to C-l). It clears the line and prints the prompt and whatever input has been entered thus far. PROMPT_COMMANDis notexecuted so the right text does not reappear.

Lack of automation can be addressed with a tiny bit of readline magic and a ~/.inputrcfile which deserves much more fame than what it usually gets.

Tricky part is bindind C-mand C-jto tworeadline functions, redraw-current-linefollowed by accept-line, which is normally not possible. This limitation can be overcome by binding the key sequences to a different sequence which will be interpreted recursively.

To test that idea it’s enough to execute:

bind '\C-l:redraw-current-line'
bind '\M-\C-j:accept-line'
bind '\C-j:"\C-l\M-\C-j"' '\C-m:"\C-j"'

Making this permanent is as easy as adding the following lines to ~/.inputrc:

$if Bash
    "\C-l": redraw-current-line
    "\e\C-j": accept-line
    "\C-j": "\C-l\e\C-j"
    "\C-m": "\C-l\e\C-j"
$endif

With that, the right prompt will disappear as soon as the shell command is executed. (Note the use of \M-in bind command vs. \ein ~/.inputrcfile).

Mobile is the Future

Get back to “Jump to”

Photo of a smashed mobile phone.

(photo Cory Doctorow, CC-BY-SA)

A few days ago I received an email from Google Wembaster Tools saying no more no less but: ‘Your webpage sucks on mobile devices!’ Or something. Now that I think of it, I could have been worded slightly differently. The gist was the same though.

I never really paid that much attention to how my site looks on phones and tables. I’ve made sure it loaded and looked, but apart from that never spent much time on the issue. I always thought optimising for a small screen would be a lengthy and painful process. How mistaken I was!

In my defence, when I last looked at the problem, state of mobile browsers was different; now there are really just two things to do. First of all, add a viewportmeta tag, e.g.:

<meta name=viewport
      content="width=device-width, initial-scale=1">

and then use min-widthor max-widthCSS media queries. Admittedly the second part may take some time, but if your layout uses simple markup rather than being TABLE-based, reading the excellent article on A List Apart might turn out to be the most time consuming step.

So if you haven’t already, do take a look at whether your website looks reasonably well on small screens. Apparently mobile is the future, or some such.

The ‘bad’ news is that I’ve dropped endless scroll feature. This is because in narrow layout the sidebar moves to the bottom and endless scrolling would make it unreachable since it would run away all the time.

The time has come to stand up for the GPL

Get back to “Jump to”

For people who know me it should come with no surprise that support free software in most forms it can take. I also believe that if someone gives you something at zero price, basic courtesy dictates that you follow wishes of that person. This is why when Software Freedom Conservancystarted a GPL Compliance Project for Linux DevelopersI didn’t hesitate even for a minute to offer little Linux copyright I held to help the effort.

Most importantly though, it is why I fully support Conservancy in taking legal action against VMwarewhich for years has been out of compliance with Linux’s license.

If you care about free software, the GPL or want more projects like OpenWrt, consider donatingto help Christoph Hellwig and the Conservancy with their legal battle against this multi-billion-dollar corporation who for some reason decided to free-ride on other people’s work without respecting their wishes.

If you don’t feel like, or for whatever reason cannot donate, twitting something along the lines of ‘Play by the rules, @VMware. I defend the #GPLwith Christoph &@Conservancy. #DTRTvmwareHelp at https://sfconservancy.org/supporter/’ or otherwise spreading the word will help as well. Oh, and in case you were, like I was, wondering–DTRT stands for ‘do the right thing’.

And if you want to know more:

Miscellaneous tips and tricks

Get back to “Jump to”

Don't you hate it when you need to do something you did in the past, but cannot remember exactly how. What if looking it up takes much more time than it should?

There are couple of things I had to do at least twice in the past, and every time I did, searching up for a correct method was considerably harder than it should. Because of that, here's a bag of notes so I can easy reference if I ever need to do listed things again:

Bose QuietComfort 15 vs. JH Audio 13

Get back to “Jump to”

A few years back I bought Bose QuietComfort 15 headphones. It was around the time I discovered just how noisy things can get at the altitude of around 10 km. QC15s turned out to be a life saver making an unbearable flights slightly more bearable.

A few months ago I decided to risk substantial amount of money and got custom-made JH Audio in-ear monitors (or IEMs), model JH13 Pro — the risk was especially big since, for obvious reasons, they couldn't be resold. Was it worth it?

Map-reduce explained

Get back to “Jump to”

Outside of functional programming context, map-reduce refers to a technique for processing data. Thanks to properties of map and reduce operations, computations which can be expressed using them can be highly parallelised, which allows for faster processing of high volumes of data.

If you've ever wondered how tools such as Apache Hadoop work, you're at the right page. In this article I'll explain what map and reduce are and later also introduce a shuffle phase.

Review of the EU copyright rules

Get back to “Jump to”

This is a public service announcement to inform you, if you are not yet aware, that European Union is asking for input on the review of copyright rules. The deadline for submission of the questionnaire is 5th of February so if you want to give your opinion you should hurry.

Answering 80 questions may not be your idea of fun. Fortunately you don't have to answer all of the questions plus to makes matter easier you can use a simplified web-form at copywrongs.euor read a simple guideby Amelia Andersdotter, a Swedish Pirate Party politician and Member of the European Parliament.

For more news coverage, head to EFFor TorrentFreak.

End of the page, get back to “Jump to”.