Replace broken disk in RAID1 with mdadm

I have a server at home for providing LAN and working as a backup proxy server. It is using RAID1 (software RAID by mdadm) configuration with two disks. Last week the second disk died and started making annoying sound (bad bearing tells my hearing).

Switching was easy once I got a disk with identical size. A bigger disk would have been ok, the excess disk space just would have been left unused. But with a smaller disk, I would have had to first copy data from the last active disk to a new smaller disk and then build a new RAID1 array and finally copy data back. Luckily I didn't have to go that route.

Read more…


Solving software challenges - Synopsys Pesti Challenge 2016

I like mysteries and puzzles. They provide solid, exciting and interesting base for movies, books and recreational activities. And, at least in the software industry, they can be used in recruitment prescreening and/or candidate selection. This was also the case in Synopsys Pesti Challenge 2016, which I stumbled upon when reading backlogs Geek Collision's IRC channel. The challenge was part of the Pesti Career Day, a networking event aimed at the students of University of Oulu.

Spoiler alert!

Detailed solutions ahead!

Read more…



Website re-powered by Nikola

I switched the engine behind http://tjjr.fi, to a simple but featureful static site generator, Nikola. Previously, my website was generated with a simple homebrew script which basically just glued together Jinja2, Docutils and rsync. It was really simple and worked well in my modest usage scenarios: only handful of pages, irregular updates, no commenting, no galleries and no archives. But now requirements have changed since I'm planning to start blogging regularly.

Below you can find a list of (highly subjective) reasons why I chose Nikola. And because of its highly subjective nature, this post must not be considered as a testimony of Nikola's superiority over its rivals. Chances are that it might not be the best tool for you. This post is only about why Nikola works for me.

Read more…





Stipe: Text Input Method for Dual-Joystick Game Controllers

This thesis was submitted to University of Jyväskylä, Faculty of Information Technology, as a partial fulfillment of the requirements for the degree of Master of Science.

The thesis is written in Finnish, but the abstract and the title is published also in English.

Abstract

Currently, text input methods for game consoles are mainly virtual selection keyboards. Unfortunately, they are slow and unpleasant to use. Gesture-based methods show promises of significant improvements, but still, they might not be fast enough to satisfy the requirements of modern text entry tasks. In this study, a new gesture-based text input method for dual-joystick game controllers is introduced. It's called Stipe. Stipe was implemented as a Linux keyboard driver which interprets joystick gestures as keyboard events. Also a long-term usability study was conducted for evaluating the typing speed potential of Stipe. Subjects used Stipe for as long as 44 hours. They reached over 40 wpm typing speed. The results of the usability study show, that Stipe has quite high typing speed potential, but mastering a fluent Stiping skill is comparatively slow process.

Keywords

text input, text entry, game controller, gamepad, joystick, thumbstick, analog stick, gesture, unistroke, recognition

The full version of the thesis is available at Jyväskylä University Digital Archive.


Software Transactional Memory

This short paper was submitted to University of Jyväskylä, Faculty of Information Technology, as a partial fulfillment of the requirements for the functional programming course (Funktio-ohjelmointi 2).

The paper is written in Finnish, but the abstract and the title is published also in English.

Abstract

Thread synchronization with locks is cumbersome and error-prone. Furthermore, lock-based implementations are not modular. While multicore processors keep penetrating user markets, programmers have to find better methods to harness the benefits and manage the complexity of multithreading in applications. In this paper, I'll give a glance at one solution for these new challenges, namely Software Transactional Memory.

Full version (in Finnish)