# Gone Fishing

This weekend I explored the Fish Shell (a modern interactive Unix shell). I've been dabbling with it for a while, particularly enjoying its interactive features: command suggestions, the TAB-completion menu, the fact that it Just Works™ out of the box, and understands commands and options by groking their man-pages.

I've wanted to port a few of my bash functions which I've been missing: my ssh-pass to load SSH keys onto the Agent's keyring with passphrase supplied by pass, and an alias to get my 1password passphrase from pass as well. Also some directory navigation shortcuts that I've used since my university days. I figured these would be a good introduction to how fish's scripting works, and I was right

# Minecraft Jamin'

A bit over two years ago I wrote a post about hacking minecraft with Python. During my holiday break this year I decided to revisit this, and have a bit more of a go with it. Some things have changed, including the Minecraft Bukkit Server that I used then (CanaryMod) being abandoned, and some new enhanced modules that let you run Minecraft PI Python code on a non-PI machine, with Python 3! So let's dig in.

# Help with Accelerologger

One of the Huon kids over at Bob's Drone Blog has a really cool Scientific Investigation Awards project - an Accelerometer data logger, or "Accelerologger" (I like the name too!). He's stuck with a small coding bug and has asked for help. I think I see the problem. Wisely, Bob's disabled comments without a login (see my Computing Rule 5), so I'm adding notes here on my own blog.

# Upgrading Nikola: some pitfalls and how I climbed out of them

After some hacking of my dotfiles and python settings, I lost my nikola virtual environment (I think it broke after a brew update or something. The hacking's only partly recorded in the issues on GitHub).

But that's no biggie, just make a new one and re-install, right? Well, not quite. The re-install gives you the latest Nikola (great!) and that means I have to review and update my conf.py (okay...) and figure out runtime errors like this:

[src:?][mjl@milo:~/hax/net/blog/milosophical.me]
[07:27](nikola)\$ nikola version
Traceback (most recent call last):
File "/Users/mjl/lib/nikola/bin/nikola", line 11, in <module>
sys.exit(main())
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/__main__.py", line 171, in main
_ = DN.run(oargs)
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/__main__.py", line 339, in run
self.nikola.init_plugins()
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/nikola.py", line 1077, in init_plugins
self._activate_plugins_of_category("SignalHandler")
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/nikola.py", line 1233, in _activate_plugins_of_category
plugin_info.plugin_object.set_site(self)
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/plugins/misc/taxonomies_classifier.py", line 328, in set_site
self._register_path_handlers(taxonomy)
File "/Users/mjl/lib/nikola/lib/python3.6/site-packages/nikola/plugins/misc/taxonomies_classifier.py", line 316, in _register_path_handlers
doc = taxonomy.path_handler_docstrings[name]
KeyError: 'page_index_folder_index'


(well, pooh).

I decided a while back that I wasn't going to meta-blog (otherwise most of my posts would be about blogging!), but I think in this case, Rule 4 will come to the rescue. Anyway at least you know this story has a happy ending, or else I wouldn't be able to add this new_post!

# Hacking Minecraft with Python

I'm having a play with Minecraft and Python, using the mcpipy library, a Minecraft server called CannaryMod, and a plugin-in for that called RaspberryJuice.

You can do all this out-of-the-box with Raspbian on a RaspberryPi, but I wanted to set up my home computers also. Here's a quick run-down of the steps I followed.

# Fixing Java CA Certificates on openSUSE

Recently switched back to openSUSE after a brief stint with Ubuntu. I guess you need to try other things out to know how good you have it, eh?  Anyway, I'm playing with Leiningen and Quil, but for some reason or other, I could not get Leiningen to self-install, because of an exception:

java.security.KeyStoreException: problem accessing trust storejava.io.IOException: Invalid keystore format

It turns out that the java keystore is somehow corrupt on OpenJDK / openSUSE 12.3. Not sure who's at fault, but here's how to fix it.

# DNS Caching in Ubuntu Desktop

In a previous blog entry I described setting up a caching-only DNS server to speed up hostname resolution on Debian systems.  I've recently been playing with Ubuntu and noticed that this hack is not working.

# Java virtual memory limits again

I think I can finally put this old walnut to bed, having just updated it with some observations made by guru's of Stack Overflow. Hooray, only took me four years :-P

# Windows 7 logon background hack

This is common knowledge, yet strangely every time I rebuild my work PC (which is too often! Gah!) I try and Google the location of Registry keys and folders and always, always get a bum-steer. So here, have another (bum-steer?) version of this hack on the Net.