Daniels Umanovskis

Occasional notes on technology

A leaky cryptocurrency faucet

Bitcoin private keys Bitcoin wallets, just like those of other cryptocurrencies, are supposed to be highly secure. You, as the owner of a Bitcoin address - or wallet - are the only one in posession of a private key that can be used to transfer Bitcoin from your address. If you lose your private key, there is nothing that can be done. Indeed it seems that many thousand bitcoins have been lost this way.

Bare-metal programming for ARM

I’ve published an ebook about bare-metal programming for an ARM system. It’s intended to be a fairly introductory text, aimed at people already familiar with C who have an interst in getting into low-level embedded development. The ebook lives on Github, and there’s a PDF version as well.

Emailing files to reMarkable paper tablet

The reMarkable e-ink tablet is primarily meant to serve as a replacement for paper notebooks. It makes for a great PDF reader with things like technical manuals or scientific papers. While the tablet offers an outstanding screen and writing experience, the software is somewhat lacking. This post will summarize a setup I implemented to transfer PDF files to my reMarkable by emailing them to myself. Existing transfer options The easiest way to transfer files to the reMarkable is by using the desktop application.

US-International Layout without dead keys

My default keyboard layout is US-International. It’s like the US English layout, and also allows many non-ASCII characters via dead-key combinations. I like the layout because it allows me to type several characters I often need, such as ö or ä, without having to switch to a non-English layout that affects more keys. The US-International layout is problematic, however, when used on a Windows machine together with vim (and some other programs).

Language vs Implementation vs Platform

Introduction Reading through questions on StackOverflow and elsewhere, I often see confusion about an aspect of programming that used to confuse me in no small amount when starting out. I am talking about the confusion between a particular programming language (such as C), an implementation of it (such as GCC) and a platform for which a particular implementation exists (such as Windows, Linux or bare-metal ARM). This writeup is meant to examine why the confusion exists, and to serve as a reasonable explanation that answers can point to.

QCons Dev Console for Unity

This is a short overview of an in-game console for Unity that I have made available on the Unity Asset store - the QCons Developer Console. This post is available here largely to allow anyone to take a look at the documentation without needing to purchase the asset. What it is The QCons Dev Console is a small code asset for Unity that consists of an in-game console intended for quick testing and debugging.

Scale Your Efforts With Scala

At EclipseCon France 2015, I had the pleasure of giving a talk titled Scale Your Efforts With Scala. Here it is: It is not particularly in-depth, but it goes over some of the reasons why my developer team has been increasingly using Scala instead of Java, and shares a few pros and cons from practical experience.

git cd

This post describes a simple but neat trick I used to implement a git cd alias that acts like cd relative to the repository root. You can skip ahead to the last section if you just want the code, or read the rest for some background on why the obvious implementation of this alias doesn’t work. git cd Git allows you to specify your own aliases in your .gitconfig. The basics are quite straightforward.

Managing dotfiles with Git and encryption

For any developer using Unix-like systems, their personal collection of dotfiles is likely to become important as they get customized more and more. Hiding files starting with . on Unix was not originally intended but using such files to store the configuration of various programs has long since been standard. Some time ago, I found myself looking for a way to conveniently manage my dotfiles across several different computers. Putting them in a Git repository seemed the natural choice.