Monthly Archives: May 2020

Radial Charts

Why

I wanted to plot the data that is tightly connected to a time of a day as a circular chart, resembling the clock face – for no particular reason other than checking out how it looks.

Another thing I wanted to do was to play with some relatively modern JS framework.

And then I also got a bit a of a spare time on my hands.

What

So as a result, here’s a code that fetches CSV data from Graphite metrics (or any other CSV file) and displays it on a radial chart (aka Radar chart). It’s crude and unoptimised and inefficient, but it serves the goal of visual representation (see examples section below): https://github.com/hydralien/Radial-Charts

It’s mostly an amCharts showcase – amCharts are amazing, I love them dearly. Check them out if you’re not familiar, there’s seemingly nothing you can’t do with them: https://www.amcharts.com/demos/

Additionally, it also uses Github Actions (https://help.github.com/en/actions) as a CI mechanism – so on every push a build is pushed to a branch and then deployed as Github pages using https://github.com/marketplace/actions/github-pages-action#%EF%B8%8F-publish_branch (there’s many action plugins, this one was just the first one that worked).

Examples

Surprisingly, there’s npt that many public datasets with high-granularity daily data available on the Internet, but here’s at least one:
Bike rentals in NYC, January 1st 2020 vs July 1st 2019 (from https://s3.amazonaws.com/tripdata/index.html):

Bike rentals

Shortcomings

  • it’s not a working tool or a developing project – it’s a fun thing built for no reason
  • it loads a ton of unnecessary libraries, becasue how amCharts library for Vue.js is structured, and also because it’s not optimised for anything
  • <many other things>

Mandelbrot set

I was always fascinated by the Mandelbrot set pictures and always wanted to create a representation myself, but never really got to do it – till a few days ago when I stumbled over an article boiling the code down to a very simple sequence (https://slicker.me/fractals/excel.htm) – so I just took it and made parameters adjustable. Also used it as an exercise in Vue.js, as it was another thing I wanted to try but never did.

It’s a very-very crude solution, but it was a good exercise: http://hydralien.net/mandelbrood.html?pixelSize=4&divisor=50&cxStart=-2&cyStart=-2&boundary=200&precision=0.4&pixelIterations=30

Also the code is here (well, it’s also in the html file, but FTR): https://github.com/hydralien/mandelbrood

Permanently adding SSH private key to OSX keychain

It’s been bugging me for quite a while, but never enough to go and find a solution – until now.

Shamelessly re-posting a perfect guidance from https://apple.stackexchange.com/questions/48502/how-can-i-permanently-add-my-ssh-private-key-to-keychain-so-it-is-automatically:

On OSX, the native ssh-add client has a special argument to save the private key’s passphrase in the OSX keychain, which means that your normal login will unlock it for use with ssh. On OSX Sierra and later, you also need to configure SSH to always use the keychain (see Step 2 below).

Alternatively you can use a key without a passphrase, but if you prefer the security that’s certainly acceptable with this workflow.

Step 1 – Store the key in the keychain

Just do this once:

ssh-add -K ~/.ssh/[your-private-key]

Enter your key passphrase, and you won’t be asked for it again.

(If you’re on a pre-Sierra version of OSX, you’re done, Step 2 is not required.)

Step 2 – Configure SSH to always use the keychain

It seems that OSX Sierra removed the convenient behavior of persisting your keys between logins, and the update to ssh no longer uses the keychain by default. Because of this, you will get prompted to enter the passphrase for a key after you upgrade, and again after each restart.

The solution is fairly simple, and is outlined in this github thread comment. Here’s how you set it up:

  1. Ensure you’ve completed Step 1 above to store the key in the keychain.
  2. If you haven’t already, create an ~/.ssh/config file. In other words, in the .ssh directory in your home dir, make a file called config.
  3. In that .ssh/config file, add the following lines:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa Change ~/.ssh/id_rsa to the actual filename of your private key. If you have other private keys in your ~.ssh directory, also add an IdentityFile line for each of them. For example, I have one additional line that reads IdentityFile ~/.ssh/id_ed25519 for a 2nd private key.The UseKeychain yes is the key part, which tells SSH to look in your OSX keychain for the key passphrase.
  4. That’s it! Next time you load any ssh connection, it will try the private keys you’ve specified, and it will look for their passphrase in the OSX keychain. No passphrase typing required.