Home Recipes About Login
Make your own booze!

Rhubarb Wine

Have you ever drank wine from a shrub from your garden? Me either, so I'm in the process of fixing that.

A week ago it got unseasonably cold and I decided to go all in and harvest while I still could, before the ice and snow turned the rhubarb into mush. I ended up with around 10 pounds of rhubarb stalks which I washed and chopped. Next, I dumped them into a stockpot and filled it with just enough water to cover. Turn the heat to med-high and cook until soft, but not totally disintegrated. I then poured the entire mixture into a fruit sieve a few times until I was sure that I had extracted all of the sour juices.

Then I took the juice, and stirred in around 6 pounds of white sugar along with yeast nutrient, some tannin, acid blend and potassium metabisulfite and let it sit in a brew bucket for a few days, just covered with a towel, in order to let the metabisulfite kill the wild yeast.

Today, I tore open the sachet of Lalvin EC-1118 yeast, purchased from my local brew shop and poured it into a glass of a little warm water along with some sugar. While the yeast was waking up, I racked the must into a newly sanitized bucket, then poured the by-now-foaming yeast onto the top of it and sealed the air-locked lid down on top. I'm newly returned to the hobby, so I no longer have a hydrometer, which is used to calculate the expected alcohol yield. I'll have to go grab one before my next experiment.

Bill of Materials

  • ~10# of chopped rhubarb
  • ~6# of white granular sugar
  • 2 tsp yeast nutrient
  • 1 tsp wine tannin
  • ~1/4 tsp acid blend
  • 1/8 tsp K Metabisulfite
  • Lalvin EC-1118 yeast
Now a fully CRUD app

For those poor souls not in the know: CRUD just means that I can

  • C reate
  • R ead
  • U pdate
  • D elete

articles fully within my browser. I can login, write one of these silly posts, post it, realize that I screwed up the spelling somewhere, and go back in and fix it. All within the browser!

I know it sounds pretty basic bitch (And it is) but I no longer have to remote into the server and run a couple commands to post an update, I just type into this little textbox, press submit and it's all good to go.


Why isn't this working?

I'm gonna try to describe the moving parts of this blog.

It's not entirely oldskool, but I didn't want to write all the posts in html, then upload them to the server. So, I decided to use flask to generate html and route requests and sqlite to store page content. The inbuilt werkzeug webserver isn't much good for anything other than development work, so I use uWSGI to run the flask app, all behind an nginx reverse-proxy, deployed as a systemD service, running somewhere up in the sky. All-in-all, it's a pretty standard setup (As far as I know).

I also use git to store version history, up until now, mostly because everyone said that I should. It's been helpful a few times in the past to check older versions, as well as storing copy of my projects on github/gitlab. All of my projects have been solo work, and I know that where git really shines is to enable distrubuted teams of people to work on the same source, so while it's been useful, it hasn't been truly essential. However, I read that github has the ability to send webhooks upon events happening in a repo. Webhooks are just a POST request sent to a url you specify, describing the event.

I had the idea that I could use a webhook request to trigger my server to download the latest version of the project and deploy it. I added a route to the app, which monitors requests and verifies that they're from github, enabled the hook setting on github, inputting the route I specified as well as a randomly generated secret.

Setting up the hook was pretty straightforward and easy to implement, but the part that really tripped me up was sudo. The script needed to pull down the latest version of the project, then reload the systemD service. In order to reload the service, sudo is required. Throw both commands in a shell script, right? Wrong: the pull command would fail, saying it lacked the required ssh key. I could hop into a shell and pull with no problems, so what gives? Turns out that calling a script with sudo means that root is the one running the script, and root didn't have the required keys. Once I figured that out, I moved the pull command into a separate command that wasn't called with root.

Now I realized I had another problem: how to run the reload script as root, without having to type in the password? After a bit of searching, I found a helpful AskUbuntu post that described how to enable running a script that requires root access, without a password. In short, run

sudo visudo

which will open a file that configures the sudo command. In the file itself, I added the line:

username  ALL=(ALL) NOPASSWD:/path/to/

to the bottom, where username is the username and /path/to/ points to the reload script. Be sure that you don't call sudo inside the script, otherwise you'll have the same issue I had, where I got the following errors:

pam_unix(sudo:auth): conversation failed

pam_unix(sudo:auth): auth could not identify password for [username]

So, be sure to not include sudo inside the script itself.

As you can see, I'm new to being a sysadmin. I'm learning as I go, which I really enjoy and is satisfying.

Anyhow, that's enough for this post, have a great day!

My Chunk of the World is on fire!

I live in Northern Colorado and I'm covered in ash, breathing smoke. There's a three week old 34,000 acre wildfire just Northwest of me that's almost entirely uncontained. Last I checked, it was ~5% contained, which can be chalked up to geological features more than human effort. It's been hot, dry and windy lately, causing the size of the fire to jump 10,000 acres in size in a single day. My town is enveloped in smoke and I woke up this morning to my garden evenly dusted with ash from a blaze that's far away.

We're projected to get some cold weather, with around 6-12" of snow(!) on Tuesday, which we're all hoping will help extinguish the wildfire.

Welcome to 4chin!


This is my inaugural blog post. This is my little corner of the internet, where I'll post about whatever I'm thinking about, doing, or interests me. I'm a hobby dev, so at least part of this project is an attempt to play around with web dev.

I made this page because I'm a bit concerned about the overwhelming power of the big social networks. While I don't particularly fear being censored or attacked by a social network company, I want a space that's mine to control. I have no illusions about anyone actually reading this page, so if nothing else, it'll serve as an easy way for me to read my collection of recipes on my phone or tablet or whatever, and a place for me to shout into the void.

I'm a little bit of a luddite, I suppose, in my choice of design for this page. It doesn't use javascript; aside from server logs, I don't track visitors; I don't and probably won't run ads; I won't try any psychological tricks on you to get more of your attention that I really ought to have; there isn't and probably won't be a comment section which you can fight. In short, a bit like the old-school web. This has the advantage in that pageloads are fast, without a lot of wizardry behind the scenes trying to eke out the last little bit of performance.

Anyways, I've probably rambled on long enough. Welcome to my blog!