Moving Around

I finally decided to rent a vps at I had forgotten how fun it was to have your own server. Anyway, I’m mainly writing this post to see that all the pieces are functional. It is a bit embarrassing to see how long it has been since I last posted. Lots of tinctures and bitters ago.

Cherry Bitters Base

Not sure why I stalled mixing the separate ingredients, but I finally did manage to mix up a couple of base bitters.

Mix 1

  • Rainier cherries: 285 mL
  • Bitter blend + spices: 115 mL
  • Milk thistle seed + Black walnut leaf: 115 mL
  • Limoncello: 90 mL
  • oak chips

Mix 2

  • Bing cherries: 285 mL
  • Bitter blend + spices 115 mL
  • Milk thistle seed + Black walnut leaf: 115 mL
  • Limoncello: 50 mL
  • oak chips


computer. Seattle now has a computer anonymous group. Come join us for refreshing beverages and computer. Last week we met at Outlander Brewery & Pub in Fremont. About a dozen people met up over the course of the evening and ‘computer’ was mentioned every so often alongside ‘bacon,’ ‘bitters,’ ‘beer,’ ‘archives.’ More words were spoken, but even archives only capture part of the whole. The next meeting will be on November 18th, place still to be decided.

Concatenating PDFs

$ gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile='/somedir/output.pdf' `ls -rt`  

Things for dorks like me to note: 1. gs runs from your current working directory, so you have to be inside the directory you are ls-ing. 2. probably best to write the OutputFile to a different directory than the one you are in so as not to cause problems.

Why would I want to concatenate a bunch of pdfs?
So I could print them out double-sided to alleviate my guilt over printing them out in the first place.

Sinister Ducks

Yesterday, it occurred to me that my actions could be construed as ‘bad rubber duck.’ Instead of helping to solve a problem by silently listening without judgement, I sparked a problem-finding and solving obsession in our programmer, El Jefe.

I just started a Coursera course on Data Science and one of the first assignments involves coding a python solution to analyzing the mood of tweets. My code, though working, ran very slowly, so I asked our programmer to tell me why. Long and short so I can get back to the duck part, my code was running slowly mainly because I was creating a list out of all the tweets then comparing it to a dictionary of mood-weighted words. – get_tweets(file) – get_mood(file) – match_stuff(tweet, mood)

Get rid of the making a list out of the tweets file and the code went from 35seconds to 3seconds to run. Why? readlines() is faster than list append()

Ok. Back to evil ducks. Because I realized I had created a round of obsession with El Jefe and had therefore been a bad rubber duck, the ‘March of the sinister ducks’ song got stuck in my head. I first heard the song over 25 years ago, when my college roommate put it on a mixed tape for me. Looking it up, I was pleased to find that the song was written and performed by comic book writer, Alan Moore. How cool is that! Translucia Baboons. Excellent. Thank you for posting that Neil Gaiman.

266533 Miles Later

266533 miles later, we trade in the ‘97 Honda Civic hatchback. It was the first new car we purchased. I’m a bit sad — I remember when she was new and eating up the road with a barely audible growl. As of yesterday we have a grey Honda Fit to park in the driveway of our house in pseudo-suburbia. If a baby appears on our doorstep, I’m not answering.

I had to let the Yakima towers and crossbars go too, since I couldn’t get the cores to unlock even after I sprayed it with WD-40. That’ll show me for not taking them off annually as was recommended. I only found that out later as I was looking up how other people had manged to get the racks off with jammed cores. Where do the red straws that come with WD-40 cans always disappear to anyway?


Password Managers

I have too many passwords to track. My sysadmin tells me “If you have to memorize long, complicated passwords, you are doing it wrong.” And many of the sysadmins I talk to tell me they memorize the important ones and just rely on email password recovery for the rest-all the stuff you don’t care about. And of course other sysadmins will disagree because of the insecurity of email. Or some will keep a list in their wallet since people generally know pretty quickly after the fact, that their wallet is missing.

Whatever. I chose to go the password manager route, so I use OpenSSL and KeePassX. KeePassX for practicality and ease of use, and OpenSSL for backup of the KeePassX datastore as well as emergency remote text access if needed — KeePassX does not have a commandline interface (CI). I am also not bold enough to keep the KeePassX database stored on any of the convenient cloud services like Dropbox so syncing can be a problem.

This is not the best solution. I would prefer a password manager that had a CI so I could just ssh and get my passwords when I need them. I would probably still keep a cheesy OpenSSL encyrpted file for backup, but it would not be the only way to get remote access to the file.

I still like the OpenSSL method.

openssl aes-256-cbc -a -salt -in stuff.txt -out stuff.encrypted


openssl aes-256-cbc -d -a -in stuff.encrypted -out stuff.woohoo

So the sysadmin mentions this password manager a couple weeks ago and I’ve finally had a chance to look at it. Pass – the standard Unix password manager. This stores passwords in GPG encrypted files and is accessible through simple CI commands. The man page is also complete and understandable (if you are not a doit like me). Quick and dirty

$ pass init [your-gpg-id] # see gnupg note below if you have not used gnupg before.
$ pass # lists the datastore in a pretty tree structure.  
$ pass -c Versioning/ # copies the password to clipboard. Exp. 45s  
$ pass insert Email/ # add another password.  
$ pass generate Server/user@somehost  

and so on.

Stuff you may need to know.

You might want to install gnupg or gnupg2 if your system doesn’t have it already. Fedora 18 installs gnupg2 by default. (Update: stick with gpg, bc gpg2 causes problems with cache-ttl in gpg-agent, that make using Pass annoying.) Once installed generate your gpg key

$ gpg2 --gen-key  

Follow all the prompts. It’s sort of fun to make randomness. I hate that gpg and pgp look so similar to me.
It is good to note that after you make the pgp keypair you can refer to the public key either by the key itself, the name you associated with it or the email you associated with it. This was what was messing me up with the instructions for pass, even after I had created the gpg-id. I issued the following:

$ pass init Versioning/ # Wrong 

the .password-store/ would create successfully, but then I would try to add a new password by issuing a

$ pass insert somethingelse  

which would error out with a

gpg: [stdin]: encryption failed: No public key  

This confused me until I realized that in the example

$ pass init   

‘Jason@zx2c4’ was referring to his gpg-id and not just creating the password-store by adding an email address. See what I get for just going by the examples at the bottom of the man page and not looking at blah blah blah stuff at the top of the man page first?

If you want to delve more into how and why you should use PGP, good citizen Peter E. Murray wrote an articulate post about it on his blog. In the above case, I am only using PGP for encryption, Peter talks about using PGP for authentication of identity and the good of the world.

Dandelions and False Dandelions

Dandelions in everclear I finally got around to starting a quart of dandelion tincture yesterday. I should have done this about a month ago since most of the dandelions have started going to seed. Whatever. I debated about just using the roots or just using the flowers (petioles and all), but eventually I went with chopping up the whole plant except for the puffballs, and covering it with Everclear.

Taraxacum officinale vs. Hypochoeris radicata — I think they are running neck and neck trying to inherit our yard. Lots of ways to tell them apart but I usually go with tall/short, smooth leaf/hairy leaf, yellow/bright yellow, ball puffs/weird, closed-in puffs. I should probably look up better ways to tell them apart. Guess it doesn’t really matter since I used the flowers from both. I only used the leaves and roots of the dandelions though, since I was too lazy to want to deal with the prickly leaves of the false dandelion.
Dandelion puffs

Dandelion falsies are just like real dandelions. So I have been told.

Bitters Recipe

Jamie Boudreaux’s recipe
All Everclear

12 oz dried cherries or
4oz dried cherries to 750mL PGA (4 weeks) – 3 bottles
4oz lemon peel to 750mL PGA (3 weeks)
1T wormwood + 1T bitter blend to 750mL PGA (1 week)
1oz milk thistle seed + 1T black walnut leaf to 750mL Everclear or high proof rye (3 weeks)
2t clove + 4 star anise + 1 cinnamon stick + 1 tsp allspice + 1 tsp vanilla to high proof bourbon (3 weeks)

strain, blend.
Am white oak soak 2 months.

7 bottles of 750mL spirits.

Cherry Bitters Ingredients List

Here’s the general ingredients list. I am not sure what quantities yet. I’ll probably tincture/extract each individually then add them together afterwards. I really want to barrel the final mixture, but I think toasted cubes would be more efficient.

  • allspice
  • apple skin
  • barberry root bark
  • birch leaf
  • black peppercorns
  • black walnut leaf
  • burdock root
  • cardamom
  • cassia wood
  • chamomile
  • cherries (Montmorency) – mid-June
  • cinnamon
  • citrus: lemon, orange, grapefruit peels
  • cloves
  • coriander
  • dandelion leaf and bark
  • fennel pollen
  • fennel seed
  • fringe tree bark
  • gentian
  • hibiscus flowers
  • juniper berries
  • lavender
  • milk thistle seed
  • rose petals
  • star anise
  • wormwood