From 96eedb5095935b7a8be5a6ba47d2cbfcc834c79b Mon Sep 17 00:00:00 2001
From: James McDonald
Date: Tue, 9 Jan 2018 20:39:32 +0100
Subject: [PATCH] Import
---
archetypes/default.md | 6 +
config.yaml | 5 +
content/about.md | 10 ++
.../2010-08-22-gah-not-another-bloody-blog.md | 17 +++
content/posts/2011-04-11-norskups.md | 18 +++
...-21-invert-mouse-scroll-wheel-in-debian.md | 39 +++++++
...nux-locale-problems-over-ssh-from-a-mac.md | 42 +++++++
.../posts/2011-10-09-get-off-of-my-icloud.md | 28 +++++
.../posts/2012-01-23-how-to-find-our-flat.md | 67 +++++++++++
.../2012-05-15-diablo-iii-eu-error-33-fix.md | 21 ++++
...12-06-11-hardcoded-gnomeish-composition.md | 39 +++++++
content/posts/2012-11-13-vag-klokke.md | 100 +++++++++++++++++
...port-things-tasks-into-apples-reminders.md | 67 +++++++++++
.../2013-08-03-useful-haskell-learnings.md | 18 +++
...or-bash-or-zsh-to-generate-ssl-requests.md | 52 +++++++++
...ve-hook-for-puppet-control-repo-updates.md | 106 ++++++++++++++++++
content/posts/2017-10-03-swarm-monitoring.md | 33 ++++++
content/stuff.md | 14 +++
.../08/Curriculum-Vitae-James-McDonald.pdf | Bin 0 -> 36987 bytes
.../uploads/2012/01/IMG_0045-1000x288.jpg | Bin 0 -> 56206 bytes
.../uploads/2012/01/IMG_0045-150x150.jpg | Bin 0 -> 4771 bytes
.../uploads/2012/01/IMG_0045-224x300.jpg | Bin 0 -> 11129 bytes
.../uploads/2012/01/IMG_0045-764x1024.jpg | Bin 0 -> 141792 bytes
.../wp-content/uploads/2012/01/IMG_0045.jpg | Bin 0 -> 1965317 bytes
.../uploads/2012/01/IMG_0047-1000x288.jpg | Bin 0 -> 51232 bytes
.../uploads/2012/01/IMG_0047-150x150.jpg | Bin 0 -> 6205 bytes
.../uploads/2012/01/IMG_0047-224x300.jpg | Bin 0 -> 13017 bytes
.../uploads/2012/01/IMG_0047-764x1024.jpg | Bin 0 -> 126172 bytes
.../wp-content/uploads/2012/01/IMG_0047.jpg | Bin 0 -> 1631434 bytes
.../uploads/2012/01/IMG_00471-1000x288.jpg | Bin 0 -> 51232 bytes
.../uploads/2012/01/IMG_00471-150x150.jpg | Bin 0 -> 6205 bytes
.../uploads/2012/01/IMG_00471-224x300.jpg | Bin 0 -> 13017 bytes
.../uploads/2012/01/IMG_00471-764x1024.jpg | Bin 0 -> 126172 bytes
.../wp-content/uploads/2012/01/IMG_00471.jpg | Bin 0 -> 1631434 bytes
.../uploads/2012/01/IMG_0048-1000x288.jpg | Bin 0 -> 69904 bytes
.../uploads/2012/01/IMG_0048-150x150.jpg | Bin 0 -> 6370 bytes
.../uploads/2012/01/IMG_0048-224x300.jpg | Bin 0 -> 15466 bytes
.../uploads/2012/01/IMG_0048-764x1024.jpg | Bin 0 -> 184545 bytes
.../wp-content/uploads/2012/01/IMG_0048.jpg | Bin 0 -> 2286096 bytes
.../uploads/2012/01/IMG_00481-1000x288.jpg | Bin 0 -> 69904 bytes
.../uploads/2012/01/IMG_00481-150x150.jpg | Bin 0 -> 6370 bytes
.../uploads/2012/01/IMG_00481-224x300.jpg | Bin 0 -> 15466 bytes
.../uploads/2012/01/IMG_00481-764x1024.jpg | Bin 0 -> 184545 bytes
.../wp-content/uploads/2012/01/IMG_00481.jpg | Bin 0 -> 2286096 bytes
.../uploads/2012/01/IMG_0049-1000x288.jpg | Bin 0 -> 57166 bytes
.../uploads/2012/01/IMG_0049-150x150.jpg | Bin 0 -> 7056 bytes
.../uploads/2012/01/IMG_0049-224x300.jpg | Bin 0 -> 16392 bytes
.../uploads/2012/01/IMG_0049-764x1024.jpg | Bin 0 -> 153113 bytes
.../wp-content/uploads/2012/01/IMG_0049.jpg | Bin 0 -> 1623541 bytes
.../uploads/2012/01/IMG_0050-1000x288.jpg | Bin 0 -> 66668 bytes
.../uploads/2012/01/IMG_0050-150x150.jpg | Bin 0 -> 7093 bytes
.../uploads/2012/01/IMG_0050-224x300.jpg | Bin 0 -> 16921 bytes
.../uploads/2012/01/IMG_0050-764x1024.jpg | Bin 0 -> 189071 bytes
.../wp-content/uploads/2012/01/IMG_0050.jpg | Bin 0 -> 2127234 bytes
.../uploads/2012/01/IMG_0051-1000x288.jpg | Bin 0 -> 50328 bytes
.../uploads/2012/01/IMG_0051-150x150.jpg | Bin 0 -> 4468 bytes
.../uploads/2012/01/IMG_0051-224x300.jpg | Bin 0 -> 11500 bytes
.../uploads/2012/01/IMG_0051-764x1024.jpg | Bin 0 -> 134352 bytes
.../wp-content/uploads/2012/01/IMG_0051.jpg | Bin 0 -> 1584207 bytes
.../uploads/2012/01/bilde-1000x288.jpg | Bin 0 -> 32645 bytes
.../uploads/2012/01/bilde-150x150.jpg | Bin 0 -> 3723 bytes
.../uploads/2012/01/bilde-224x300.jpg | Bin 0 -> 8946 bytes
.../uploads/2012/01/bilde-764x1024.jpg | Bin 0 -> 99358 bytes
content/wp-content/uploads/2012/01/bilde.jpg | Bin 0 -> 473066 bytes
64 files changed, 682 insertions(+)
create mode 100644 archetypes/default.md
create mode 100644 config.yaml
create mode 100644 content/about.md
create mode 100644 content/posts/2010-08-22-gah-not-another-bloody-blog.md
create mode 100644 content/posts/2011-04-11-norskups.md
create mode 100644 content/posts/2011-07-21-invert-mouse-scroll-wheel-in-debian.md
create mode 100644 content/posts/2011-10-06-linux-locale-problems-over-ssh-from-a-mac.md
create mode 100644 content/posts/2011-10-09-get-off-of-my-icloud.md
create mode 100644 content/posts/2012-01-23-how-to-find-our-flat.md
create mode 100644 content/posts/2012-05-15-diablo-iii-eu-error-33-fix.md
create mode 100644 content/posts/2012-06-11-hardcoded-gnomeish-composition.md
create mode 100644 content/posts/2012-11-13-vag-klokke.md
create mode 100644 content/posts/2012-12-08-import-things-tasks-into-apples-reminders.md
create mode 100644 content/posts/2013-08-03-useful-haskell-learnings.md
create mode 100644 content/posts/2015-07-03-function-for-bash-or-zsh-to-generate-ssl-requests.md
create mode 100644 content/posts/2017-04-05-git-post-receive-hook-for-puppet-control-repo-updates.md
create mode 100644 content/posts/2017-10-03-swarm-monitoring.md
create mode 100644 content/stuff.md
create mode 100644 content/wp-content/uploads/2010/08/Curriculum-Vitae-James-McDonald.pdf
create mode 100644 content/wp-content/uploads/2012/01/IMG_0045-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0045-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0045-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0045-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0045.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0047-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0047-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0047-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0047-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0047.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00471-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00471-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00471-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00471-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00471.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0048-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0048-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0048-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0048-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0048.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00481-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00481-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00481-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00481-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_00481.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0049-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0049-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0049-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0049-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0049.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0050-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0050-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0050-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0050-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0050.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0051-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0051-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0051-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0051-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/IMG_0051.jpg
create mode 100644 content/wp-content/uploads/2012/01/bilde-1000x288.jpg
create mode 100644 content/wp-content/uploads/2012/01/bilde-150x150.jpg
create mode 100644 content/wp-content/uploads/2012/01/bilde-224x300.jpg
create mode 100644 content/wp-content/uploads/2012/01/bilde-764x1024.jpg
create mode 100644 content/wp-content/uploads/2012/01/bilde.jpg
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..f5a9e45
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .TranslationBaseName "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/config.yaml b/config.yaml
new file mode 100644
index 0000000..97481c3
--- /dev/null
+++ b/config.yaml
@@ -0,0 +1,5 @@
+url: https://jamesmcdonald.com
+name: James McDonald
+description: Stuff I wrote about things
+theme: bootstrap4
+disqusShortname: jamesmcdonald
diff --git a/content/about.md b/content/about.md
new file mode 100644
index 0000000..14cb29e
--- /dev/null
+++ b/content/about.md
@@ -0,0 +1,10 @@
+---
+title: About this Site
+author: james
+type: page
+date: 2010-08-22T15:06:56+00:00
+dsq_thread_id:
+ - 438232275
+
+---
+A place where I occasionally write about things if I have the time or inclination.
\ No newline at end of file
diff --git a/content/posts/2010-08-22-gah-not-another-bloody-blog.md b/content/posts/2010-08-22-gah-not-another-bloody-blog.md
new file mode 100644
index 0000000..77a4116
--- /dev/null
+++ b/content/posts/2010-08-22-gah-not-another-bloody-blog.md
@@ -0,0 +1,17 @@
+---
+title: Gah, not another bloody blog
+author: james
+type: post
+date: 2010-08-22T16:08:20+00:00
+url: /2010/08/gah-not-another-bloody-blog/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 438228149
+categories:
+ - Meta
+
+---
+I felt the need for a place to put the occasional rant that’s longer than 140 characters. This may not happen very often, but it’ll happen here if you’re interested in that sort of thing.
\ No newline at end of file
diff --git a/content/posts/2011-04-11-norskups.md b/content/posts/2011-04-11-norskups.md
new file mode 100644
index 0000000..547944b
--- /dev/null
+++ b/content/posts/2011-04-11-norskups.md
@@ -0,0 +1,18 @@
+---
+title: Norskups
+author: james
+type: post
+date: 2011-04-11T19:06:39+00:00
+url: /2011/04/norskups/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 469641387
+categories:
+ - Language
+ - Meta
+
+---
+I would appear to have accidentally stirred up the norsktwitterredet. I’d better write something here in case they look.
\ No newline at end of file
diff --git a/content/posts/2011-07-21-invert-mouse-scroll-wheel-in-debian.md b/content/posts/2011-07-21-invert-mouse-scroll-wheel-in-debian.md
new file mode 100644
index 0000000..aee5c65
--- /dev/null
+++ b/content/posts/2011-07-21-invert-mouse-scroll-wheel-in-debian.md
@@ -0,0 +1,39 @@
+---
+title: Invert mouse scroll wheel in Debian
+author: james
+type: post
+date: 2011-07-21T11:49:01+00:00
+url: /2011/07/invert-mouse-scroll-wheel-in-debian/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 440701348
+categories:
+ - Hacks
+
+---
+I’ve been using the beta of MacOS X Lion for a few weeks now, and after a few days of initial annoyance I’ve grown to really like the inverted sense of the scroll wheel. I recall when I first got one, in fact, and found the direction downright confusing. This seems to have been an easy behaviour to unlearn.
+
+My desktop box at work runs Debian, and I wanted the same behaviour there to stop me getting split-brain and dribbling a lot. There was a time when a quick change in xorg.conf to `ZAxisMapping "5 4"` would do this, but it’s not so the modern age of HIDs and evdevs. After a bit of messing about I figured out how to flip the scroll wheel. This will probably work for Ubuntu too.
+
+ * Open the file `/usr/share/X11/xorg.conf.d/10-evdev.conf`
+ * Look for the section with `MatchIsPointer "on"`. It’s at the top by default.
+ * Add this line:
+
+ `Option "ButtonMapping" "1 2 3 5 4 6 7 8"
+`
+ Add more buttons if you need them for your mouse. The section should look like:
+
+ `
+Section "InputClass"
+ Identifier "evdev pointer catchall"
+ MatchIsPointer "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+ Option "ButtonMapping" "1 2 3 5 4 6 7 8"
+EndSection
+`
+
+ That’s it! Just restart X.
\ No newline at end of file
diff --git a/content/posts/2011-10-06-linux-locale-problems-over-ssh-from-a-mac.md b/content/posts/2011-10-06-linux-locale-problems-over-ssh-from-a-mac.md
new file mode 100644
index 0000000..9eaa61a
--- /dev/null
+++ b/content/posts/2011-10-06-linux-locale-problems-over-ssh-from-a-mac.md
@@ -0,0 +1,42 @@
+---
+title: Linux locale problems over ssh from a Mac
+author: james
+type: post
+date: 2011-10-06T08:07:16+00:00
+url: /2011/10/linux-locale-problems-over-ssh-from-a-mac/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 438230874
+categories:
+ - Debian
+ - Hacks
+ - Ubuntu
+
+---
+Most users of Debian/Ubuntu have at some time seen these annoying messages:
+
+`
+perl: warning: Setting locale failed.
+perl: warning: Please check that your locale settings:
+ LANGUAGE = (unset),
+ LC_ALL = (unset),
+ LC_CTYPE = "UTF-8",
+ LANG = "en_GB.UTF-8"
+ are supported and installed on your system.
+perl: warning: Falling back to the standard locale ("C").
+`
+
+There are a variety of causes – usually locales not being generated properly or incorrect environment variables.
+
+Lately I’ve been getting these a lot of these, but only some of the time. After some messing around I eventually discovered the problem wasn’t on the server itself. The problem only occurs when I’m logged in over SSH from a Mac. The default sshd on Debian **copies LANG and LC_* variables** from the client. The LC_CTYPE variable was set on my Mac, apparently by default, to “UTF-8”. While this seems to work on MacOS X, it’s not a valid value for Linux.
+
+The easiest solution was just to add the following to my ~/.profile on the Mac:
+
+`
+export LC_CTYPE=en_GB.UTF-8
+`
+
+That fixes it, and doesn’t appear to cause harm on the Mac.
\ No newline at end of file
diff --git a/content/posts/2011-10-09-get-off-of-my-icloud.md b/content/posts/2011-10-09-get-off-of-my-icloud.md
new file mode 100644
index 0000000..edcce4e
--- /dev/null
+++ b/content/posts/2011-10-09-get-off-of-my-icloud.md
@@ -0,0 +1,28 @@
+---
+title: Get off of my iCloud
+author: james
+type: post
+date: 2011-10-09T10:06:30+00:00
+url: /2011/10/get-off-of-my-icloud/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 438212576
+categories:
+ - Apple
+ - Tech
+
+---
+Like several people I know, I have two AppleID accounts for personal use. I have one that I set up back when an iPod was my only Apple gadget and they first opened the iTunes Store. This has all my (large number of) iTunes purchases associated with it. I also have a MobileMe account that I set up a while later when I first bought a Mac, which I now largely use for the me.com email address associated with it. So far this has worked nicely. I log in to the iTunes account for iTunes and to the MobileMe account for email, sync etc.
+
+The age of iCloud is rapidly approaching. We MobileMe users have an easy migration path, and until next summer to migrate. The idea with iCloud is that you need log in to only one service for everything. This makes sense: the idea is that you have everything bound to a single identity. You log in to that and you get all your email, calendar, backups, media, apps etc. Shiny. Except…
+
+The MobileMe-iCloud migration FAQ makes it clear that accounts can’t be merged. This is Apple’s historical policy – whatever opinion one has about it, it’s not unexpected. Generally the opinion one has about it is that it’s somewhat lame, especially when the merging of iTunes and MobileMe is the entire \*point\* of iCloud (other than gaining distance from the now-embarrassing MobileMe brand and using the word ‘cloud’ in something).
+
+The trick is that they also don’t make it clear whether you can do a ‘manual’ merge. If I close my MobileMe account, I don’t know whether that will make my email address available to attach to my iCloud account. I’ve just spoken to Apple’s MobileMe support and they don’t know either, though iCloud is still in developer beta so it’s likely they just haven’t been given details at the consumer support level yet. I have previously investigated the possibility of moving my iTunes purchases’ “association” to the MobileMe account. Apparently that can’t be done either.
+
+So now it seems that MobileMe users in this situation might end up having to manually switch between accounts depending on whether they want to send email or watch a movie right now, or sacrifice their existing MobileMe address and pick a new one for iCloud. This is really my main concern: I’ve used that address on so many sites I have lost track, so it’s really not feasible to chase them all down and change them. More to the point, I don’t want to and I shouldn’t have to.
+
+My hope is that there’s a gap in my knowledge and some path will be open to merging or migration. It seems a little unfortunate that when Apple are finally starting up an online service that is free and, hopefully, reliable, they are causing more headaches for the people who paid to support its overpriced, unreliable predecessor.
\ No newline at end of file
diff --git a/content/posts/2012-01-23-how-to-find-our-flat.md b/content/posts/2012-01-23-how-to-find-our-flat.md
new file mode 100644
index 0000000..f7277e0
--- /dev/null
+++ b/content/posts/2012-01-23-how-to-find-our-flat.md
@@ -0,0 +1,67 @@
+---
+title: How to find our flat
+author: james
+type: post
+date: 2012-01-23T19:36:01+00:00
+url: /2012/01/how-to-find-our-flat/
+aktt_notify_twitter:
+ - no
+dsq_thread_id:
+ - 550031315
+categories:
+ - Flat
+
+---
+As our building is a bit of a maze, we thought it would be useful to tell you how to find the flat. There are two exciting ways to get here, but this is the easiest to follow.
+
+First, go to Øvre Storgate 1B. You can find it with Google Maps. Press buzzer 4A. Wait for the nice people to let you in.
+
+[
][1]
+
+You find yourself in a hallway. There is a welcoming door here. Go through the door and turn right.
+
+
+
+[
][2]
+
+There’s a door on the right to the garage. Go through it and turn left.
+
+
+
+[
][3]
+
+Cross the garage. There’s a raised area at the back with a door on the left.
+
+
+
+[
][4]
+
+Go through the door which leads to the bottom of the back stairwell. The complicated bit is now over!
+
+
+
+[
][5]
+
+Climb up 2 flights of stairs.
+
+
+
+[
][6]
+
+Oh no! Another flight of stairs. Nearly there though.
+
+
+
+[
][7]
+
+Woo, you made it! Go through this door 😀
+
+If you’re feeling adventurous, you can try to find the other way on your own. Hint: it starts with the front stairwell. There are bad instructions on the welcoming door!
+
+ [1]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_0045.jpg
+ [2]: https://jamesmcdonald.com/wp-content/uploads/2012/01/bilde.jpg
+ [3]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_0047.jpg
+ [4]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_00481.jpg
+ [5]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_0049.jpg
+ [6]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_0050.jpg
+ [7]: https://jamesmcdonald.com/wp-content/uploads/2012/01/IMG_0051.jpg
\ No newline at end of file
diff --git a/content/posts/2012-05-15-diablo-iii-eu-error-33-fix.md b/content/posts/2012-05-15-diablo-iii-eu-error-33-fix.md
new file mode 100644
index 0000000..aaa3667
--- /dev/null
+++ b/content/posts/2012-05-15-diablo-iii-eu-error-33-fix.md
@@ -0,0 +1,21 @@
+---
+title: Diablo III EU “Error 33” Fix
+author: james
+type: post
+date: 2012-05-15T06:09:22+00:00
+url: /2012/05/diablo-iii-eu-error-33-fix/
+aktt_notify_twitter:
+ - yes
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 689917799
+categories:
+ - Gaming
+
+---
+If you had the Diablo III beta installed, you might come across error 33 “battle.net is down for maintenance” while trying to log in. This is because there is an old registry setting pointing at the US rather than EU login server.
+
+Take a look in HKEY\_CURRENT\_USER\Software\Blizzard Entertainment\Battle.net\D3.
+
+I solved this by deleting the entire ‘Blizzard Entertainment’ key. From orbit, just to be sure. Works like a charm.
\ No newline at end of file
diff --git a/content/posts/2012-06-11-hardcoded-gnomeish-composition.md b/content/posts/2012-06-11-hardcoded-gnomeish-composition.md
new file mode 100644
index 0000000..e99114e
--- /dev/null
+++ b/content/posts/2012-06-11-hardcoded-gnomeish-composition.md
@@ -0,0 +1,39 @@
+---
+title: Hardcoded GNOMEish composition
+author: james
+type: post
+date: 2012-06-11T16:42:20+00:00
+url: /2012/06/hardcoded-gnomeish-composition/
+aktt_notify_twitter:
+ - yes
+al2fb_facebook_link_id:
+ - 658281334_10151014685521335
+al2fb_facebook_link_time:
+ - 2012-06-11T16:42:24+00:00
+al2fb_facebook_link_picture:
+ - post=https://jamesmcdonald.com/?al2fb_image=1
+aktt_tweeted:
+ - 1
+dsq_thread_id:
+ - 3804739886
+categories:
+ - Tech
+
+---
+From Ubuntu docs about the Compose key at https://help.ubuntu.com/community/ComposeKey:
+
+> The compose key sequences used by Gnome are derived from the X compose tables of XFree86 version 4.0 with further modifications to provide a Gnome standard for all locales. They are hard coded into the program in source file gtk+-2.10.7/gtk/gtkimcontextsimple.c
+
+Digging into the current Debian gtk+ source verifies this:
+
+`
+/* This file contains the table of the compose sequences,
+ * static const guint16 gtk_compose_seqs_compact[] = {}
+ * IT is generated from the compose-parse.py script.
+ */
+#include "gtkimcontextsimpleseqs.h"
+`
+
+So they start with the X Input Method layer which has nice unixy text config files (check out /usr/share/X11/locale) and they want to extend it with some extra sequences. What’s the best way to do that? Clearly snarf what’s already there, bolt on your own bits and hardcode the lot into your binary.
+
+Well done, chaps.
\ No newline at end of file
diff --git a/content/posts/2012-11-13-vag-klokke.md b/content/posts/2012-11-13-vag-klokke.md
new file mode 100644
index 0000000..5a08b07
--- /dev/null
+++ b/content/posts/2012-11-13-vag-klokke.md
@@ -0,0 +1,100 @@
+---
+title: Vag klokke
+author: james
+type: post
+date: 2012-11-13T22:02:16+00:00
+url: /2012/11/vag-klokke/
+dsq_thread_id:
+ - 926740377
+categories:
+ - Hacks
+ - Norsk
+
+---
+I localised my awesome fuzzyclock.py script to Norwegian language and, uh, regional time-reading standards. Behold the glory of vagklokke.py! A little terminal in the top right of my screen now proudly proclaims:
+
+`
+Datoen er 2012-11-13
+Klokka er fem på elleve
+`
+
+It was fun to work out how to handle “x på/over halv” without too many horrible range conditions. I haven’t bothered to remove stale things like ‘tjuefem’ from the minute list, because it ain’t broke. Now you, too, can have the power of a clock that isn’t very accurate. Now with added date!
+
+#!/usr/bin/env python
+# vim: set fileencoding=utf8 :
+# Norwegian port of fuzzyclock
+from datetime import datetime, time
+from time import sleep
+import sys
+
+hours = [
+ 'tolv',
+ 'ett',
+ 'to',
+ 'tre',
+ 'fire',
+ 'fem',
+ 'seks',
+ 'sju',
+ 'åtte',
+ 'ni',
+ 'ti',
+ 'elleve',
+]
+
+minutes = [
+ 'null',
+ 'fem',
+ 'ti',
+ 'kvart',
+ 'tjue',
+ 'tjuefem',
+ 'halv'
+]
+
+def fuzzyclock(time=None):
+ if time is None:
+ time = datetime.now()
+ hour = time.hour
+ minute = int(round(time.minute/5.0))
+ if (minute >= 4 and minute < 6) or minute >= 9:
+ past='på'
+ else:
+ past='over'
+
+ if minute >= 4:
+ hour += 1
+ if minute < 9:
+ past = '%s halv' % (past)
+
+ # Adjust the minute to be in the first half of the hour
+ if minute > 6:
+ minute = 12 - minute
+
+ # Handle på/over halv in the same way
+ if minute > 3 and minute < 6:
+ minute = 6-minute
+
+ minute = minutes[minute]
+ hour = hours[hour%12]
+
+ if minute=='null':
+ return "%s" % (hour)
+ if minute=='halv':
+ return "halv %s" % (hour)
+ return "%s %s %s" % (minute, past, hour)
+
+if __name__=='__main__':
+ if len(sys.argv) > 1 and sys.argv[1] == '-t':
+ for x in xrange(0,60,5):
+ print "Klokka er %s" % fuzzyclock(datetime(2012,01,01,9,x,0))
+ else:
+ # By default, print the time every 10 seconds
+ while True:
+ print "Datoen er %s" % datetime.now().date()
+ print "Klokka er %-23s" % (fuzzyclock()),
+ sys.stdout.flush()
+ sleep(10)
+ # Go up a line and CR, if the terminal lets you
+ print "\x1b[1F\r",
+
\ No newline at end of file
diff --git a/content/posts/2012-12-08-import-things-tasks-into-apples-reminders.md b/content/posts/2012-12-08-import-things-tasks-into-apples-reminders.md
new file mode 100644
index 0000000..ae17aa9
--- /dev/null
+++ b/content/posts/2012-12-08-import-things-tasks-into-apples-reminders.md
@@ -0,0 +1,67 @@
+---
+title: Import Things tasks into Apple’s Reminders
+author: james
+type: post
+date: 2012-12-08T13:36:46+00:00
+url: /2012/12/import-things-tasks-into-apples-reminders/
+dsq_thread_id:
+ - 964365161
+categories:
+ - Apple
+ - Hacks
+
+---
+OK, so I was making a list of things to do today, but then I decided that having created them in Things, I wanted to move them to Apple’s Reminders. Don’t ask – I’m a task list fetishist.
+
+A neat trick you can do with Cultured Code’s Things is to select a bunch of tasks and drag them to a text editor, which will create one line per task with any note appended in brackets. Looks sort of like this:
+
+- Make lists of things
+- Procrastinate (Try making scripts to manage lists of things)
+
+
+This is all very well, but there’s no simple way to get that list into Reminders without copying and pasting the relevant bits individually. That sounded boring, so instead I learned enough AppleScript to do it automatically. It probably took more time, but it was definitely more amusing. Anyway, it was that or complete the bunch of tasks I’d just written down.
+
+Here’s the AppleScript code to accomplish this feat.
+
+-- Reminders Importer
+-- James McDonald <james@jamesmcdonald.com>
+
+-- Imports a text file into Reminders as one task per line.
+-- Creates a task list called "Import". Strips off " -" at the start and puts bracketed text into the body (note) of the task. This is the format you get by dragging from Things to a text editor.
+
+tell application "Reminders"
+ if not (list "Import" exists) then
+ make list with properties {name:"Import"}
+ else
+ tell list "Import" to delete reminders
+ end if
+end tell
+
+tell application "Reminders"
+ repeat with l in paragraphs of (read file "Users:james:Documents:tasks.txt")
+ if length of l is not 0 then
+ if l starts with "- " then
+ set l to characters 3 through end of l as text
+ end if
+
+ if l contains "(" then
+ set AppleScript's text item delimiters to "("
+ set b to text item 2 of l
+ set l to text item 1 of l
+ set AppleScript's text item delimiters to ")"
+ set b to text item 1 of b
+ set AppleScript's text item delimiters to ""
+ else
+ set b to "" as text
+ end if
+ tell list "Import"
+ make reminder with properties {name:l, body:b}
+ end tell
+ end if
+ end repeat
+end tell
+
+
+Yes, I know. AppleScript is weird.
+
+So, now that I’ve written the blog post about the script to migrate to one task manager from another the list of tasks I made of things to do this morning, it’s this afternoon. Yay!
\ No newline at end of file
diff --git a/content/posts/2013-08-03-useful-haskell-learnings.md b/content/posts/2013-08-03-useful-haskell-learnings.md
new file mode 100644
index 0000000..f01b466
--- /dev/null
+++ b/content/posts/2013-08-03-useful-haskell-learnings.md
@@ -0,0 +1,18 @@
+---
+title: Useful Haskell Learnings
+author: james
+type: post
+date: 2013-08-03T07:59:36+00:00
+url: /2013/08/useful-haskell-learnings/
+dsq_thread_id:
+ - 3784870289
+categories:
+ - Hacks
+ - Uncategorized
+
+---
+isSexyPerson x = if x == "Oda"
+ then x ++ " is indeed sexy!"
+ else "The sexiness of " ++ x ++ " is unknown."
+
+Most useful.
\ No newline at end of file
diff --git a/content/posts/2015-07-03-function-for-bash-or-zsh-to-generate-ssl-requests.md b/content/posts/2015-07-03-function-for-bash-or-zsh-to-generate-ssl-requests.md
new file mode 100644
index 0000000..beda25f
--- /dev/null
+++ b/content/posts/2015-07-03-function-for-bash-or-zsh-to-generate-ssl-requests.md
@@ -0,0 +1,52 @@
+---
+title: Function for bash or zsh to generate SSL requests and certificates
+author: james
+type: post
+date: 2015-07-03T14:19:10+00:00
+url: /2015/07/function-for-bash-or-zsh-to-generate-ssl-requests/
+categories:
+ - Uncategorized
+
+---
+Rather than memorising annoying OpenSSL options, stick this in your profile, edit the ‘SUBJ’ bit, and you’ll be generating keys with ease.
+
+# Generate an SSL key and a signing request or self-signed certificate
+sslcert() {
+ cn=$1
+
+ # The prefix for the certificate's subject, eg
+ # SUBJ="/C=GB/ST=Edinburgh/L=Edinburgh/O=Widget Co"
+ SUBJ="<<< SET THIS BIT >>>"
+
+ if [ -z "$cn" -o "$cn" = "-h" ]; then
+ echo "usage: $0 <common name> [csr|crt]" >&2
+ echo " csr - generate a certificate signing request (default)" >&2
+ echo " crt - generate a self-signed certificate" >&2
+ return 1
+ fi
+
+ type=${2:-csr}
+
+ name=$(echo $cn | sed -e 's/^\*\./star./')
+ if [ -r $name ]; then
+ echo "$0: $name already exists"
+ return 1
+ fi
+ mkdir $name
+ if [ $? -ne 0 ]; then
+ echo "$0: can't mkdir $name" >&2
+ return 1
+ fi
+ cd $name
+ openssl genrsa -out ${name}.key 4096
+ case $type in
+ csr)
+ openssl req -new -key ${name}.key -out ${name}.csr -sha256 -subj "${SUBJ}/CN=${cn}"
+ ;;
+ crt)
+ openssl req -new -x509 -days 3650 -key ${name}.key -out ${name}.crt -sha256 -subj "${SUBJ}/CN=${cn}"
+ ;;
+ esac
+ cd ..
+}
+
\ No newline at end of file
diff --git a/content/posts/2017-04-05-git-post-receive-hook-for-puppet-control-repo-updates.md b/content/posts/2017-04-05-git-post-receive-hook-for-puppet-control-repo-updates.md
new file mode 100644
index 0000000..db467d3
--- /dev/null
+++ b/content/posts/2017-04-05-git-post-receive-hook-for-puppet-control-repo-updates.md
@@ -0,0 +1,106 @@
+---
+title: Git post-receive hook for Puppet control repo updates
+author: james
+type: post
+date: 2017-04-05T19:24:28+00:00
+url: /2017/04/git-post-receive-hook-for-puppet-control-repo-updates/
+snapFB:
+ - 's:203:"a:1:{i:0;a:4:{s:8:"isPosted";s:1:"1";s:4:"pgID";s:27:"658281334_10154963966061335";s:7:"postURL";s:57:"http://www.facebook.com/658281334/posts/10154963966061335";s:5:"pDate";s:19:"2017-04-05 19:34:18";}}";'
+snapTW:
+ - 's:189:"a:1:{i:0;a:4:{s:8:"isPosted";s:1:"1";s:4:"pgID";s:18:"849709206836056068";s:7:"postURL";s:52:"https://twitter.com/0xfce2/status/849709206836056068";s:5:"pDate";s:19:"2017-04-05 19:43:56";}}";'
+categories:
+ - Hacks
+ - Tech
+
+---
+I made a fairly simple post-receive hook setup to automatically update my [Puppet][1] master when I push changes to my control repo. I keep the repo in gitolite, so I wanted to use a regular git hook rather than web hook magic (or even magicer Puppet Enterprise Code Manager magic).
+
+My control repo itself is based on [the puppetlabs control-repo on github][2]. Essentially the idea is that every branch in the repo becomes a Puppet environment on your master, complete with automatically updated modules based on a Puppetfile. The [r10k][3] tool takes care of the heavy lifting here, and its documentation explains how it works in some detail.
+
+But we don’t have the patience for that! First, install r10k on your Puppet master and configure it to be able to yank your control repo in `/etc/puppetlabs/r10k/r10k.yaml`, something like this:
+
+:cachedir: '/var/cache/r10k'
+
+:sources:
+ :myrepo:
+ remote: 'gitolite3@git.example.com:puppet'
+ basedir: '/etc/puppetlabs/code/environments'
+
+Make sure you have SSH keys relationships set up so that you can pull the repo. Running `r10k deploy environment --verbose info` should let you see what’s going on. Once it works, continue on.
+
+Create an SSH key on your git server as the user that runs git. In my case on Debian, that user is `gitolite3`, but just wherever you have your repo running.
+
+Copy the public key and install it in your puppet master’s `/root/.ssh/authorized_keys`:
+
+command="/usr/local/sbin/puppet-update.sh" ssh-ed25519 AAASOMEKEYMATERIAL gitolite3@git.example.com
+
+What’s this `puppet-update.sh`, I hear you cry? I’m glad you asked:
+
+#!/bin/bash
+
+/usr/local/bin/r10k deploy environment $SSH_ORIGINAL_COMMAND
+
+Pretty straightforward. Obviously you’ll want to point to wherever you have r10k installed, and make sure the script is executable. This setup takes whatever command you try to run over ssh with this key and appends it to `/usr/local/bin/r10k deploy environment`. The security conscious may want to do some other sanity checks too. I did say it was simple!
+
+The meat of the matter is the post-receive hook itself. This should go on your git server, inside the puppet control repo’s hooks directory. In my case this is `~gitolite3/repositories/puppet.git/hooks/post-receive`. It, too, should be executable.
+
+#!/bin/bash
+
+# post-receive hook to trigger r10k over ssh on updates to puppet control repo
+
+# Set SSHTARGET in ~/.config/puppet-update to eg:
+# root@puppet.example.com
+
+# Caveat: If you push a branch deletion and an updated Puppetfile in the same
+# push command, the updates to the Puppetfile will not be deployed. You'll have
+# to run manually or make another change to the Puppetfile.
+
+CONFIGFILE=~/.config/puppet-update
+
+if [ ! -r $CONFIGFILE ]; then
+ echo "$CONFIGFILE doesn't exist, not updating" >&2
+ exit 1
+fi
+
+source $CONFIGFILE
+
+update() {
+ ssh $SSHTARGET -- --verbose info $@
+ if [ $? -ne 0 ]; then
+ echo "WARNING: Update had errors: puppet may not be completely updated" >&2
+ exit 1
+ fi
+}
+
+while read oldref newref refname
+do
+ refname=$(basename $refname)
+ updateargs=
+ if echo ${newref} | egrep -vq '[^0]'
+ then
+ echo "Branch $refname is being deleted, updating all to trigger cleanup"
+ update
+ break
+ fi
+ # If this isn't a new branch and the Puppetfile has been changed, add --puppetfile
+ # The new branch check is needed because diff won't work in that case; new
+ # environments get Puppetfile deployed by r10k automatically (could also use ||)
+ if echo ${oldref} | egrep -q '[^0]' && \
+ git diff --name-only ${oldref}..${newref} | grep -q Puppetfile
+ then
+ updateargs="--puppetfile"
+ fi
+ update ${refname} ${updateargs}
+done
+
+Like the comment says, you’ll want to make a `~/.config/puppet-update` to tell it where your Puppet master lives.
+
+SSHTARGET=root@puppet.example.com
+
+Now, make a commit to one of your branches and push it. You should see r10k working away in the `git push` output. Yay! Pushing any changes to any branches will update those environments. If you add or delete branches, it will deploy new environments or clean up. In a handy bit of time saving, it will only deploy the modules from the Puppetfile if the Puppetfile has actually been changed.
+
+This works rather nicely for me, but I’d be interested to hear how it works for other people, or what changes you made.
+
+ [1]: https://puppet.com/
+ [2]: https://github.com/puppetlabs/control-repo
+ [3]: https://github.com/puppetlabs/r10k
\ No newline at end of file
diff --git a/content/posts/2017-10-03-swarm-monitoring.md b/content/posts/2017-10-03-swarm-monitoring.md
new file mode 100644
index 0000000..eff16fd
--- /dev/null
+++ b/content/posts/2017-10-03-swarm-monitoring.md
@@ -0,0 +1,33 @@
+---
+title: Docker swarm monitoring
+author: james
+type: post
+date: 2017-10-03T08:09:04+00:00
+url: /2017/10/swarm-monitoring/
+snap_isAutoPosted:
+ - 1
+snapEdIT:
+ - 1
+snapFB:
+ - 's:382:"a:1:{i:0;a:11:{s:2:"do";s:1:"1";s:9:"msgFormat";s:22:"New blog post: %TITLE%";s:8:"postType";s:1:"A";s:9:"isAutoImg";s:1:"A";s:8:"imgToUse";s:0:"";s:9:"isAutoURL";s:1:"A";s:8:"urlToUse";s:0:"";s:8:"isPosted";s:1:"1";s:4:"pgID";s:27:"658281334_10155506578631335";s:7:"postURL";s:57:"http://www.facebook.com/658281334/posts/10155506578631335";s:5:"pDate";s:19:"2017-10-03 08:15:31";}}";'
+snapTW:
+ - 's:376:"a:1:{i:0;a:11:{s:2:"do";s:1:"1";s:9:"msgFormat";s:30:"New blog post: %TITLE% - %URL%";s:8:"attchImg";s:1:"0";s:9:"isAutoImg";s:1:"A";s:8:"imgToUse";s:0:"";s:9:"isAutoURL";s:1:"A";s:8:"urlToUse";s:0:"";s:8:"isPosted";s:1:"1";s:4:"pgID";s:18:"915126845124816897";s:7:"postURL";s:52:"https://twitter.com/0xfce2/status/915126845124816897";s:5:"pDate";s:19:"2017-10-03 08:10:16";}}";'
+categories:
+ - Tech
+
+---
+I’ve seen a bunch of posts lately about how to set up Docker swarm monitoring with tools like cAdvisor and node_exporter which advise running them like this:
+
+`docker service create --mode global -p 9100:9100 ...`
+
+That will indeed run one container on each swarm node, but it has a subtle problem. When you connect to host:9100, the ingress network routing will connect you to a _random_ instance each connection (for swarm routing values of random). You will indeed get some metrics returned, but they will be for whichever host you happened to be routed to this time.
+
+You can demonstrate this problem quite simply with something like:
+
+`docker service create --name hello --mode global -p 8080:80 dockercloud/hello-world`
+
+Then just reload the page and you’ll see that the hostname (container ID) changes sometimes. You might see it more readily with curl than a browser.
+
+A simple solution is to just run these containers on each node as normal docker containers outside swarm management. In the setup I’m working on just now, we used the same Puppet automation that provisions the swarm to start the containers.
+
+`docker run -d -p 9100:9100 ...`
\ No newline at end of file
diff --git a/content/stuff.md b/content/stuff.md
new file mode 100644
index 0000000..0a07e16
--- /dev/null
+++ b/content/stuff.md
@@ -0,0 +1,14 @@
+---
+title: Stuff
+author: james
+type: page
+date: 2010-08-22T15:31:32+00:00
+dsq_thread_id:
+ - 438231807
+
+---
+Things you can grab.
+
+My [current CV][1], or at least the most recently updated version thereof.
+
+ [1]: https://jamesmcdonald.com/wp-content/uploads/2010/08/Curriculum-Vitae-James-McDonald.pdf
\ No newline at end of file
diff --git a/content/wp-content/uploads/2010/08/Curriculum-Vitae-James-McDonald.pdf b/content/wp-content/uploads/2010/08/Curriculum-Vitae-James-McDonald.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..357bc005da80c5c2b74e62ff5b0b4959678303d2
GIT binary patch
literal 36987
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℞>_NiK4JNL8d^X0=n;(rIh(Q%3B5<#
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