Pavol Rusnak #cypherpunk #hacker #openhw #privacy #bitcoin #newmediaart

Let's build a Freedom Node

Recently, I decided to support some of the open-source distributed projects such as Tor, IPFS and Bitcoin.

One way of supporting them would be to send some money as a donation, but because I am a hacker with a good Internet connection I decided to build a computer node that will directly contribute to their networks and make them bigger and more robust.

I call it a “Freedom Node”.


I evaluated lot of options and ended up buying the following components from my local computer hardware supplier:

item model price
Barebone PC by Gigabyte GB-BXBT-1900 $139.99
8 GB RAM by Kingston KVR16LS11/8 $35.38
240 GB SSD by Crucial CT240BX200SSD1 $64.99

I have decided to go for a solid-state drive option, but you can replace the suggested hard drive with a cheaper rotating disk (option A) or even bigger more expensive solid-state disk (option B):

item model price
A) 750 GB HDD by Western Digital WD7500BPKX $58.99
B) 480 GB SSD by Crucial CT480BX200SSD1 $129.99

The cheapest option is around $235, while the most expensive is around $305.

And this is how it looks! Nice, isn’t it?


It is really small and quiet and it fits anywhere in your appartment or office, so you will completely forget about it.


Now for the software part. I am going to use CentOS, because I am used to RPM distributions, but the process should be similar if you use Debian or Ubuntu.

  • Let’s download CentOS from and copy the ISO to a USB flash drive.

  • Follow the installation instructions and install the system.

  • Add EPEL (Extra Packages) repository by running:

yum install epel-release
  • Add Ringing Liberty Bitcoin repository by running:
yum install
  • Install Tor, Bitcoin and Go language:
yum install tor bitcoin-server golang

(If you want to use Bitcoin XT instead of Bitcoin Core just use bitcoinxt-server package instead of bitcoin-server in the line above.)

  • Edit the Tor configuration file /etc/tor/torrc and uncomment the following lines (the first line opens the relay port, the second one enables the directory service, the third one disables the exit node):
ORPort 9001
DirPort 9030
ExitPolicy reject *:*

Also fill in the details on lines with Nickname and ContactInfo.

If you are more adventurous you might skip uncommenting the ExitPolicy reject line, but I recommend reading something about running an Exit Node first.

  • Edit the Bitcoin configuration file /etc/bitcoin/bitcoin.conf and change RPC password to something random:
  • Add the following files to your ~/.bashrc file and relogin:
export GOPATH=$HOME/.go
  • Install IPFS and make a symlink to /usr/bin:
go get -u
ln -s /root/.go/bin/ipfs /usr/bin/ipfs
  • Initialize IPFS node:
ipfs init
  • Create IPFS systemd service file /usr/lib/systemd/system/ipfs.service and put the following contents in it:
Description=IPFS daemon

ExecStart=/usr/bin/ipfs daemon

  • Run and enable start at boot for all three services using the following commands:
systemctl enable bitcoin
systemctl start bitcoin

systemctl enable tor
systemctl start tor

systemctl enable ipfs
systemctl start ipfs
  • Enjoy and big THANK YOU for your important contribution to these networks!

32C3 Highlights

These are my highlights from 32C3 (32nd Chaos Communication Congress):

The exhaust emissions scandal (“Dieselgate”)


How the Great Firewall discovers hidden circumvention servers


Thunderstrike 2




Rowhammer.js: Root privileges for web apps?


Let’s Encrypt – What launching a free CA looks like


Logjam: Diffie-Hellman, discrete logs, the NSA, and you


Tor onion services: more useful than you think


Computational Meta-Psychology


Say hi to your new boss: How algorithms might soon control our lives


Ten years after ‘We Lost The War’


Sin in the time of Technology


LÖVE (Love2D) on Android

Almost two years ago I blogged about my Global Game Jam entry called Hexoboros. This year’s approacing GGJ reminded me that I wanted to port this game to Android. Back then it turned out to be quite hard and results were not very satisfying.

I knew that SDL 2.0 was released in August 2013 bringing Android support out of the box. What I didn’t know was that LÖVE 0.9.0 was released in December as well, building on top of SDL2. I was pretty excited, because I felt that LÖVE on Android will became a real thing soon.

And I was right. Martin Felis is working on love-android-sdl2 repo, which combines all these efforts into one easy to build Android package.

After fixing some minor issues in Martin’s and mine code I ended up with this result:


Great! Now I’m convinced that I’ll be using LÖVE again during Global Game Jam this year.

Some notes:

  • love-android-sdl2 loads LÖVE resources from /sdcard/lovegame/ directory (this is useful for debugging)
  • if you zip your LÖVE resources to a file named and add this file to assets directory of Android project, you end up with APK that bundles LÖVE with your game (this is great for deploying final game)
  • never force fixed resolution in your LÖVE code; rather update your code so it works with any given resolution and aspect ratio (i.e. don’t hardcode sizes and positions of rendered objects)
  • you can test you got that right by putting t.window.resizable = true in your conf.lua and using something like this in your main.lua code:
function love.resize(w, h)
  width, height = w, h
  scale = height / 1024

function love.load()
  love.resize(love.window.getWidth(), love.window.getHeight())

Idea Factory - Pack My Stuff

This post is a part of Idea Factory series.

Last two years I travelled a lot to various Open Source related conferences. After few of them I already got quite a good idea what to pack and what not, depending on the length and the destination of the trip. But from time to time I forgot something and that later turned out to be a huge mistake.

The idea is to create a mobile application where you can define several lists of things you need to pack, for example: “3 days in Europe (summer)”, “a week in the USA (winter)”, “Christmas with Family” and so on. You open the application while packing packing your stuff at home and it will show you the list of things you need to pack. Everytime you put an item into your suitcase, you check the corresponding checkbox in the list. When the list is fully checked you know you didn’t miss anything. Simple, isn’t it?! :) You do the same process on the last day of your trip, so you can make sure you don’t forgot anything at the hotel.

Idea Factory - Mycelium Animated Photos

This post is a part of Idea Factory series.

One evening I found really nice work by Ryan Alexander where images are created by simulating a life of mycelium. I was wondering how it was done and I came up with my own Processing sketch that creates something similar (although not as quite nice as the original work).

The principle is simple: you take an image and convert it to grayscale. The brighter (or darker) is the pixel, the more food you put on that particular position. Then you run several autonomous agents that feed from this food, move randomly, die if they are starving and multiply if they are well enough. The original photos and the mycelium growing process can be seen here:


The idea is to create a mobile phone application that is able to take a photo from a camera (and/or open a gallery photo) and runs the described process on it. The final result or animated GIF of the process could be then uploaded to the Internet and shared among your friends.