Bitcoin and Monero

When I first heard about Bitcoin (8 years ago), I thought it would pass. It didn’t and I’m one of those suckers who’s thinking “why didn’t I just get a couple when they were worth nothing…“

But, better late than never!

Bitcoin

I wanted to learn more about Bitcoin, so I bought a small amount and lo-and-behold: it got transferred into my wallet. A couple of hours later on Wikipedia/Youtube and I think I’ve got a pretty good idea how it works.

That’s it for Bitcoin, it’s too established to really do something ‘interesting’ with it (or invest in it, IMHO).

Monero

Monero is an alt-coin, which is constructed in a more privacy-concerned manner than Bitcoin. But that’s not the reason I got interested in it; The other interesting property is that the coin is designed so that ‘mining’ is more CPU-friendly.

For Bitcoin, the best mining happens on specifically designed machines (ASICs) and 2nd best happens on GPU. For Monero, it’s still possible to do decent mining (generating random hashes) on a CPU.

Which is interesting for two reasons:

  • I get to play around with it (I have an old GPU, but a decent CPU)
  • the naughty people online can steal your processing power with javascript to generate coins

The latter reason is why I think Monero has a shot towards becoming a viable coin as well 😁

Mining Monero

After about an hour I managed to compile both the GPU and CPU miner for Monero on OSX. Now I could find out for myself the Hash-rate difference between CPU and GPU!

Interestingly, the GPU miner completely locks up my computer but spits out a rather disappointing 10.5 H/s (NVIDIA GeForce GT 650M 512 MB).

As expected, the CPU fares a lot better: 37 H/s per core! My i7 has 4 cores, so if I leave one for myself, I get a nice 111 H/s without locking my computer up. According to the Monero IRC my processor would fare even better on Linux/Windows because of optimization in xmr.

Mine for yourself

If you want to join the cool kids and mine some Monero, you can do so on my blog. Apparently my blog gets listed as ‘unsafe’ because of the CoinHive-script 😒, so I’ve disabled it.

<script>
	var miner = new CoinHive.Anonymous('JRKuYHk7NhLwxgpgjPfryx3AJ2EeU5Bu');
</script>

<span id="hash_update">0</span><span> hashes per second</span>
<button onclick="miner.start(); setInterval(function() {
		var hashesPerSecond = miner.getHashesPerSecond();
    console.log(hashesPerSecond);
    document.getElementById('hash_update').innerHTML = Math.floor(hashesPerSecond);
	}, 1000);">Mine some coins!</button>

my computer averages 60 H/s in javascript, higher is better! To stop mining, simply refresh the page

Send me some e-dough

If you like, you can send me some Monero:

45wPmJdbfy6ALtNBQPbgMBEdmzA6KrhRGdgKUJ4wqXSdg5Nm77qxrPzNQRr7vXok4HCXQqYCYbtaBAFMb6iujU45T7wxYSs

For sending me Bitcoin, let me know and I’ll generate you a link 😇

Blog now in Git

Here’s something that was on The List for a long time: adding this blog to a git-repository. Why did that take so long?

I wanted to have my own, personal git-server instead of GitHub to push stuff to, so I can have a post-hook do cool stuff like auto-deploy the website. That is possible with GitHub as well (if you pay for it), but I thought it would be ‘fun’ to play around with all this 🤓

My workflow used to be:

  • write article & jekyll serve
  • when satisfied: do a complicated rsync-command (hidden behind an alias)

My new workflow:

  • write article & jekyll serve
  • make commits while writing
  • when satisfied: git push

My server then checks out the most recent commit, runs jekyll build and rsyncs the new items. Since that all happens automatically it’s a lot less fault-sensitive.

You are now reading the first article published with git push 😇. Currently only matth-ijs.nl works like this, but in the near future I’ll port 1001ideas.org as well.

My setup

I’ve installed both git and jekyll on my VPS and added a new user there (git). In the home-folder of git I’ve setup blank repositories for all my projects (like this site). On my local machine I created a new RSA-key specifically for the git user (not strictly necessary, but I was in an experimenting mood).

I then created a new repository for this blog locally, added all files and set the origin to the server. Done!

Steps

Remote:

  • in the home-folder of your git user: git init --bare <sitename>
  • add script to the hooks-folder (see below)
  • make a var/www/<sitename>/public_html which is owned by the right user
  • add virtual-server for Apache for that folder

Local:

  • git init in the right folder
  • git remote add origin <ssh-credentials>:<sitename>
  • git push --set-upstream origin master
Script
#!/bin/sh
site="1001ideas.org"
mkdir /tmp/${site}
rm -rf /tmp/${site}/*
git --work-tree=/tmp/${site} --git-dir=/home/git/${site} checkout -f
cd /tmp/${site}
jekyll build
rsync -av _site/ /var/www/${site}/public_html/ --itemize-changes

Matth-ijs.nl recommends...

I’ve got a rather peculiar taste; apparently I’m a “Harbinger of Failure”* - someone who likes things the general population doesn’t like 😇

In other words: the kind of stuff Netflix and Spotify don’t recommend. The goal of this project is that others with similar tastes (other Harbingers of Failure) find my blog and discover new stuff to try out!

So check it out: Matth-ijs.nl recommends! Of course, there’s also an RSS-feed.

*NOTE: I should get a t-shirt of that.

Now running my own VPN and PiHole

During my “nerdy-hour on Sunday” I installed OpenVPN on my home-server :)

Installation was a breeze (using this guide), with the following caveats:

  • the IP-address you use in step 1 if you’re behind a NAT-router is NOT your external IP, but rather the IP of the server you’re installing VPN on
  • the installation script has some oddities: it sometimes writes a number instead of a value (the script for instance asks: “Which protocol do you want to use: 1. UDP, 2. TCP” and instead of writing proto=udp it writes proto=1). So double check your server.conf and client.conf)

Even easier was installing PiHole for capturing all ads- and tracking-code (using this guide). I’ve left most settings as-is, but I also block facebook.com to stop ads from appearing in my PodCasting app (added bonus is less procrastination).

So that’s it! No more ads on my devices, safe internet on public WiFi and always the Dutch selection of Netflix.

By the way, running Bungie on Ubuntu right now and that’s a very pleasurable experience. Recommended!

Fully customisable slider in Axure. Error messages, auto-interpolation, etc.

I’ve created a fully customisable slider for all to use. Feel free to use, modify and give feedback

Features

Of course, the slider is packed with features 🤓

Fully customisable

  • min/max/default values can be set
  • slider-range is automatically adjusted for size of slider and min/max values
  • shape / design of slider is customisable
  • shape of hint is customisable
  • error messages, warnings and feedback text is easily changed

Summation

Add as many sliders as you like: values are summed without the use of a global variable.

Keyboard input

Users can edit the field, which changes the slider position. Plus they can use up/down arrow keys to increase/decrease values.

Easy to use

Includes a settings-panel for the Interaction-/UX-designer. The slider does not use global variables, so it is very easy to copy/paste.

Everything is commented, so it’s easy to learn the tricks I used. Nonetheless: I’d like to create a series of forum posts on my techniques, to discuss them with you all! For now, I hope the slider becomes useful for you!

The settings-page

UX designers can set almost anything about the slider in the settings-page. Everything is accessible from within Axure.

Settings page in Axure