<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Renaissance Programmer</title><link>https://renprog.com/</link><description>Where programming and fermentation meet.</description><atom:link href="https://renprog.com/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2019 &lt;a href="mailto:mattox@beckman-park.net"&gt;Mattox Beckman&lt;/a&gt; </copyright><lastBuildDate>Tue, 21 May 2019 01:10:39 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Brew 2: Strawberry Cider</title><link>https://renprog.com/posts/brew-2-strawberry-cider/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;p&gt;
Costco sells an apple juice that is perfect for making cider.  We used 6 gallons
of this and a bit over two pounds of strabwerries with Nottingham yeast.
&lt;/p&gt;

&lt;div id="outline-container-org120db16" class="outline-2"&gt;
&lt;h2 id="org120db16"&gt;Recipe:&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org120db16"&gt;
&lt;/div&gt;
&lt;div id="outline-container-org8f60d48" class="outline-3"&gt;
&lt;h3 id="org8f60d48"&gt;Sugars&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org8f60d48"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;6 lbs Costco cider.&lt;/li&gt;
&lt;li&gt;916 g Strawberries&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgd396e8d" class="outline-3"&gt;
&lt;h3 id="orgd396e8d"&gt;Yeast&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orgd396e8d"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;One package Nottingham&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orga67a892" class="outline-2"&gt;
&lt;h2 id="orga67a892"&gt;Log&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orga67a892"&gt;
&lt;p&gt;
&lt;b&gt;&lt;b&gt;Brew date: 2019-05-20&lt;/b&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Added halved strawberries to a mesh bag and added them to the fermenter.&lt;/li&gt;
&lt;li&gt;Added 6 gallons of apple cider.&lt;/li&gt;
&lt;li&gt;Added Nottinham yeast.&lt;/li&gt;
&lt;li&gt;Pitching temperature: 64 F&lt;/li&gt;
&lt;li&gt;Original Gravity: 13.5 Brix / 1.0547 S.G.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>brews</category><category>cider</category><guid>https://renprog.com/posts/brew-2-strawberry-cider/</guid><pubDate>Tue, 21 May 2019 01:00:35 GMT</pubDate></item><item><title>Brew 2: ESB</title><link>https://renprog.com/posts/brew-2-esb/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;p&gt;
The last brew made a very light beer, suitable for 소맥 but not very satisfying.
The main problem seems to have been that I used the top plate in the grain pipe
during the mash, and that ended up compressing the grains too much.  As a result,
the water would not flow through it very well.  The resulting beer is something
like 3% ABV.
&lt;/p&gt;


&lt;p&gt;
Today's brew is a Lakefront ESB from Northern Brewer.  We'll try the robobrew again
and see how it goes this time.
&lt;/p&gt;

&lt;div id="outline-container-sec-1" class="outline-2"&gt;
&lt;h2 id="sec-1"&gt;The Recipe:&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-1"&gt;
&lt;/div&gt;&lt;div id="outline-container-sec-1-1" class="outline-3"&gt;
&lt;h3 id="sec-1-1"&gt;Grains&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-1"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Briess Organic 2-Row       (9.25 lbs / 4.1950113 kg)
&lt;/li&gt;
&lt;li&gt;Briess Organic Caramel 60L (0.75 lbs / 0.34013605 kg)
&lt;/li&gt;
&lt;li&gt;Briess Organic Caramel 20L (0.5 lbs / 0.22675737 kg)
&lt;/li&gt;
&lt;li&gt;Total weight: 4.7 kg
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I'm slowly converting my brewing to metric units, but the kit was in English units,
appropriate for an ESB.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-1-2" class="outline-3"&gt;
&lt;h3 id="sec-1-2"&gt;Hops&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-2"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;1.25 oz Cascade (90 min)
&lt;/li&gt;
&lt;li&gt;.5 oz Cascade (30 min)
&lt;/li&gt;
&lt;li&gt;.5 oz Cascade (15 min)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-1-3" class="outline-3"&gt;
&lt;h3 id="sec-1-3"&gt;Yeast&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-3"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;One package S-05
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-2" class="outline-2"&gt;
&lt;h2 id="sec-2"&gt;Mash Schedule&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-2"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Sacc rest: 67 C for 60 minutes (15 L)
&lt;/li&gt;
&lt;li&gt;Mashout: 77 C for 10 minutes
&lt;/li&gt;
&lt;li&gt;Sparge: A bunch of water from 55 C to 75 C.  See notes.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I found some formulas to determine mashing water.
I wanted to collect 5.5 gallons of wort for my fermenter, and various parts
of the internet suggested 5 liters would be lost to the boil and trub.
&lt;/p&gt;

&lt;p&gt;
Here's a table with all the values.
&lt;/p&gt;

&lt;table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;


&lt;colgroup&gt;
&lt;col class="left"&gt;

&lt;col class="right"&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="left"&gt;Measurement&lt;/th&gt;
&lt;th scope="col" class="right"&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="left"&gt;Grains Lbs&lt;/td&gt;
&lt;td class="right"&gt;10.5&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;Grains Kgs&lt;/td&gt;
&lt;td class="right"&gt;4.7619048&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;Target Volume L&lt;/td&gt;
&lt;td class="right"&gt;25&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;Boil and Trub Loss L&lt;/td&gt;
&lt;td class="right"&gt;5&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;Mash Volume&lt;/td&gt;
&lt;td class="right"&gt;16.357143&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;Sparge Volume&lt;/td&gt;
&lt;td class="right"&gt;17.452381&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-sec-3" class="outline-2"&gt;
&lt;h2 id="sec-3"&gt;Process&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-3"&gt;
&lt;p&gt;
The first thing was to crush the grain.  It occured to me that I could crush the grain
directly into the grain pipe.  So I set it up this way:
&lt;/p&gt;


&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="https://beckman.piwigo.com/_datas/1/6/p/16pi6ld52m/i/uploads/1/6/p/16pi6ld52m//2018/12/20/20181220002311-7827b217-me.jpg" alt="20181220002311-7827b217-me.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 1:&lt;/span&gt; Crushing the Grain&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
It worked very well.  I think next time I will use more water in the mash; it took a while to mix everything together.
But I didn't have to get a bucket dirty, and since the base of the grain crusher covered the pipe completely I didn't
have to worry about dust getting everywhere.
&lt;/p&gt;

&lt;p&gt;
Here's the result after adding the carrying handle:
&lt;/p&gt;


&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="https://beckman.piwigo.com/_datas/1/6/p/16pi6ld52m/i/uploads/1/6/p/16pi6ld52m//2018/12/20/20181220002338-374f42c0-me.jpg" alt="20181220002338-374f42c0-me.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 2:&lt;/span&gt; Grain is crushed&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
Another experiment today was brewing inside.  Here are two pictures of the setup, one with the pipe resting on top,
and one with the pipe inserted.
&lt;/p&gt;


&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="https://beckman.piwigo.com/_datas/1/6/p/16pi6ld52m/i/uploads/1/6/p/16pi6ld52m//2018/12/20/20181220002257-65682fcb-me.jpg" alt="20181220002257-65682fcb-me.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 3:&lt;/span&gt; Setup 1&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
After inserting the pipe and stirring the grains, I could use the recirculating pump to keep the liquid moving.
&lt;/p&gt;


&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="https://beckman.piwigo.com/_datas/1/6/p/16pi6ld52m/i/uploads/1/6/p/16pi6ld52m//2018/12/20/20181220002304-0a395062-me.jpg" alt="20181220002304-0a395062-me.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 4:&lt;/span&gt; Setup 2&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;
The next experiment was to use the counterflow chiller instead of the provided immersion chiller.  I used a pump to make
sure the liquid could get into the fermenter.
&lt;/p&gt;


&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="https://beckman.piwigo.com/_datas/1/6/p/16pi6ld52m/i/uploads/1/6/p/16pi6ld52m//2018/12/20/20181220002422-62e4844e-me.jpg" alt="20181220002422-62e4844e-me.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 5:&lt;/span&gt; The Chill&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
This brew went much better than the last one.  I added some DME, maybe about a cup, to top off the gravity points, and was
able to hit my target O.G. 
&lt;/p&gt;

&lt;p&gt;
The one mistake I made was it didn't occur to me to check the wort temperature before I added the yeast.  It was still
about 100 F!  It doesn't seem to have hurt the yeast, fermentation started quickly.  I guess I can pretend it's a Belgian
ESB if there are esters as a result. :)
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-4" class="outline-2"&gt;
&lt;h2 id="sec-4"&gt;Log&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-4"&gt;
&lt;/div&gt;&lt;div id="outline-container-sec-4-1" class="outline-3"&gt;
&lt;h3 id="sec-4-1"&gt;Brew date: 2018-12-15&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-4-1"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Liquid in fermenter: 5.5 Gallons
&lt;/li&gt;
&lt;li&gt;O.G. 1.050
&lt;/li&gt;
&lt;li&gt;Pitching temperature: 100 F (!)
&lt;/li&gt;
&lt;li&gt;Time to onset of fermentation: 2 hours
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>brews</category><category>esb</category><guid>https://renprog.com/posts/brew-2-esb/</guid><pubDate>Wed, 19 Dec 2018 19:53:23 GMT</pubDate></item><item><title>Use Variables for Frequent Targets</title><link>https://renprog.com/posts/use-variables-for-frequent-targets/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;div id="outline-container-sec-1" class="outline-2"&gt;
&lt;h2 id="sec-1"&gt;Use variable names in your shell&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-1"&gt;
&lt;p&gt;
Tired of typing in that long directory name?
&lt;/p&gt;

&lt;p&gt;
Sometimes when I am developing something I will end up
working in two separate directories that are not that
related.  For example, I may be writing slides in my
&lt;code&gt;~/class/cs421/periods/course-introduction/slides/&lt;/code&gt;
directory, and when they are done I want to put the
PDF in &lt;code&gt;~/web/cs421/slides/&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
You can save a lot of typing by creating some 
variables for it.  So instead of
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;% cd ~/class/cs421/periods/course-introduction/slides/
% make slides.pdf
% cp slides.pdf ~/web/cs421/slides/introduction.pdf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
you could have something like…
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;% slides=~/class/cs421/periods/course-introduction/slides/
% web=~/web/cs421/slides/
% cd $slides
% make slides.pdf
% cp slides.pdf $web/introduction.pdf
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
If you are going to use them a lot, you can put them in your startup file.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-2" class="outline-2"&gt;
&lt;h2 id="sec-2"&gt;Use subshell tab completion&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-2"&gt;
&lt;p&gt;
Another similiar trick is to use tab completion.  I'm using &lt;code&gt;zsh&lt;/code&gt;, which
will run sub-shells if you hit tab.  Suppose you are in that &lt;code&gt;$slides&lt;/code&gt;
directory as before, and you want to access the directory
&lt;code&gt;~/class/cs421/periods/recursion/slides&lt;/code&gt;.  Yeah, you could use &lt;code&gt;../..&lt;/code&gt; 
but that can get tedious.  But you could also type
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
and hit &lt;code&gt;&amp;lt;TAB&amp;gt;&lt;/code&gt; instead of &lt;code&gt;&amp;lt;ENTER&amp;gt;&lt;/code&gt;.  This will run the &lt;code&gt;pwd&lt;/code&gt; command
and paste it into your command line, leaving you with
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/class/cs421/periods/course-introduction/slides/
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
You can then just edit the line to get what you want.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-3" class="outline-2"&gt;
&lt;h2 id="sec-3"&gt;Trick three — use &lt;code&gt;zsh&lt;/code&gt; extension to &lt;code&gt;cd&lt;/code&gt;.&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-3"&gt;
&lt;p&gt;
If you give &lt;code&gt;cd&lt;/code&gt; two targets in &lt;code&gt;zsh&lt;/code&gt;, it will treat that as a search
and replace command for your current directory name.  So
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; course-introduction recursion
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
will do the same directory switch as above.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>cli</category><category>hacks</category><guid>https://renprog.com/posts/use-variables-for-frequent-targets/</guid><pubDate>Wed, 10 Oct 2018 05:00:00 GMT</pubDate></item><item><title>Using Org-mode for Task Management, Part 1</title><link>https://renprog.com/posts/org-mode-task-management-part-1/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;p&gt;
I have long been a fan of task management systems. When I was a student, I used
Day Timer products a lot, and as the web came of age I tried many services:
Remember the Milk, Nozbe, IQTell (may it rest in peace), and so on. As
convenient as they were (usually) I found they all suffered from a combination
of problems. Most were not flexible enough to keep the data I wanted. Most made
entering tasks slower than it should be (something that someone proficient in an
editor would notice). Some sites closed down; IQTell, in particular, closed
after I had spent a month getting everything tweaked the way I wanted it.
&lt;/p&gt;

&lt;p&gt;
I finally fell back on the one system I knew I could always rely on, would never
close, and would be organized exactly the way I wanted: &lt;a href="https://orgmode.org/manual/"&gt;Org Mode&lt;/a&gt;. I
have been using Org Mode for my task management system for a bit over a year now, so I'm
documenting here how I have it set up. I will assume you are familiar with Org
Mode already. If not, take a peek at &lt;a href="http://doc.norang.ca/org-mode.html"&gt;Org Mode - Organize Your Life in Plain Text&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
This will be a series of posts.  For today I will go over the file structure I use:
if you are already familiar with &lt;a href="https://orgmode.org/manual/"&gt;org-mode&lt;/a&gt; you will be able to replicate
much of what I do.
&lt;/p&gt;

&lt;div id="outline-container-sec-1" class="outline-2"&gt;
&lt;h2 id="sec-1"&gt;Files&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-1"&gt;
&lt;p&gt;
One of the first decisions you will need to make when you set up your org files
is whether to have a bunch of files, one for each context, or One File to Rule them All.
Having tried both, I found I preferred to have separate files.  I have a "main" file called
&lt;code&gt;gtd.org&lt;/code&gt;, which I will talk about later, and one file for every context.  For example,
there is &lt;code&gt;cs225.org&lt;/code&gt; and &lt;code&gt;cs421.org&lt;/code&gt; for two of the classes I teach.  There is &lt;code&gt;ielite.org&lt;/code&gt;
for a research group I am a part of.  I have a subdirectory &lt;code&gt;students/&lt;/code&gt; where every student
working on a project with me has their own file.
&lt;/p&gt;

&lt;p&gt;
My main reasons for splitting the files by context are to prevent needing a top level header
for everything (or else mixing unrelated projects and tasks together), and to keep the file
sizes managable.
&lt;/p&gt;

&lt;p&gt;
My file headers contain the &lt;code&gt;TODO&lt;/code&gt; tags, a directive to have log drawers, and an agenda
format string.  The last item is the file tag.  Here is the header for CS 225.
&lt;/p&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;#+SEQ_TODO: TODO(t) NEXT(n) STARTED(s) WAITING(w) DELEGATED(e) APPT(a) MAYBE(m) | DONE(d) CANCELLED(c) DEFERRED(f)
#+STARTUP: logdrawer
#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort){:} %CLOCKSUM
#+FILETAGS: CS225
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Each file has a subset of these top level headers:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Tasks
&lt;/li&gt;
&lt;li&gt;Projects
&lt;/li&gt;
&lt;li&gt;Someday/Maybe
&lt;/li&gt;
&lt;li&gt;Reference
&lt;/li&gt;
&lt;li&gt;Meetings
&lt;/li&gt;
&lt;li&gt;Appointments
&lt;/li&gt;
&lt;li&gt;Archived Tasks
&lt;/li&gt;
&lt;li&gt;Archived Meetings
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
## Meetings
&lt;/p&gt;

&lt;p&gt;
I want to be able to keep track of meetings I go to, and especially
meetings I am in charge of.  For this, every agenda file has a top
level header &lt;code&gt;* Meetings&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Each meeting has this structure:
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;** &amp;lt;2018-09-11 Tue 10:00-11:00&amp;gt; Admin Meeting
*** Tasks
*** Agenda
*** Notes
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
The headline is level 2, contains a date stamp in the header itself.
This causes it to appear in the agenda, and the agenda view automatically
knows to remove the date when it displays the meeting.
&lt;/p&gt;


&lt;p&gt;
If I am in charge of the meeting I will fill out the agenda, and have a task
to email the agenda the day before.  Tasks that arise during the meeting
as a result of decisions get filed under the respective file-level task
or project headings.  The tasks here are only tasks directly related to
running the meeting itself.
&lt;/p&gt;

&lt;p&gt;
The reason I do this is because of a super convenient function
&lt;code&gt;org-clone-subtree-with-time-shift&lt;/code&gt; with default keybinding &lt;code&gt;C-c C-x c&lt;/code&gt;. Set
up the first meeting with the proper date stamps for the meeting and any tasks
that will recur (like sending the agenda) and then duplicate it, shifting the
dates into the future as you do so.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-2" class="outline-2"&gt;
&lt;h2 id="sec-2"&gt;Appointments&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-2"&gt;
&lt;p&gt;
An appointment is very much like a meeting, except that I don't expect to
need to take notes or organize it.  I use this for office hours.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-3" class="outline-2"&gt;
&lt;h2 id="sec-3"&gt;Tasks&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-3"&gt;
&lt;p&gt;
This heading is for all tasks that do not belong to a project.  I use
the &lt;code&gt;SCHEDULED&lt;/code&gt; property to set a start date, and a &lt;code&gt;DEADLINE&lt;/code&gt; for real
deadlines.  One thing I do differently than classic GTD is put a start
date on all tasks (unless they are in someday/waiting).  I learned this
from the Manage Your Workday Now book written by &lt;a href="https://www.michaellinenberger.com/"&gt;Michael Linenburger&lt;/a&gt;
I also like to have an effort property.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-4" class="outline-2"&gt;
&lt;h2 id="sec-4"&gt;Projects&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-4"&gt;
&lt;p&gt;
A project is just a list of tasks, but I insist that there be one task
marked &lt;code&gt;NEXT&lt;/code&gt; instead of &lt;code&gt;TODO&lt;/code&gt;.  There can be a header in the project
for reference information if need be.
&lt;/p&gt;

&lt;p&gt;
I'll talk more about task and project processing in a future article.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-5" class="outline-2"&gt;
&lt;h2 id="sec-5"&gt;Archives&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-5"&gt;
&lt;p&gt;
I do not like the way Org archives things in a separate file, so I am
trying to keep a headline for archived tasks and archived projects.
This may end up getting to bloated, but I haven't used this very long
yet.  Time will tell.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-6" class="outline-2"&gt;
&lt;h2 id="sec-6"&gt;Next Actions!&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-6"&gt;
&lt;p&gt;
There will be followup articles about other aspects of this.
Currently I plan to write about the actual task workflow
and the emacs lisp code I use with it.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>emacs</category><category>gtd</category><category>orgmode</category><guid>https://renprog.com/posts/org-mode-task-management-part-1/</guid><pubDate>Tue, 25 Sep 2018 05:00:00 GMT</pubDate></item><item><title>Brew 1: Kama Citra Session IPA</title><link>https://renprog.com/posts/brew-1-kama-citra/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;p&gt;
It's been a long time since I've made the time to brew beer; over a
year, in fact.  So it's time to start again.  I'm going to reset
my "brew counter", so this is brew number 1.
&lt;/p&gt;

&lt;p&gt;
This is a kit beer, from &lt;a href="https://morebeer.com"&gt;MoreBeer&lt;/a&gt;, called &lt;b&gt;Kama Citra&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
I brewed it in a Robobrew v3 (the first time using it!), and I'll write more
about that later.
&lt;/p&gt;

&lt;div id="outline-container-sec-1" class="outline-2"&gt;
&lt;h2 id="sec-1"&gt;Recipe:&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-1"&gt;
&lt;/div&gt;&lt;div id="outline-container-sec-1-1" class="outline-3"&gt;
&lt;h3 id="sec-1-1"&gt;Grains&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-1"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;9 lbs Rahr 2-Row
&lt;/li&gt;
&lt;li&gt;1 lb Caramel 40
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-1-2" class="outline-3"&gt;
&lt;h3 id="sec-1-2"&gt;Hops&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-2"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;0.5 oz Centennial (60 min)
&lt;/li&gt;
&lt;li&gt;1 oz Cascade (20 min)
&lt;/li&gt;
&lt;li&gt;1 oz Cascade (10 min)
&lt;/li&gt;
&lt;li&gt;2 oz Citra (flamout + 10 minutes)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-1-3" class="outline-3"&gt;
&lt;h3 id="sec-1-3"&gt;Dry Hops&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-3"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;1 oz Citra
&lt;/li&gt;
&lt;li&gt;1 oz Cascade
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-1-4" class="outline-3"&gt;
&lt;h3 id="sec-1-4"&gt;Yeast&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-1-4"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;One package Nottingham
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-2" class="outline-2"&gt;
&lt;h2 id="sec-2"&gt;Mash Schedule&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-2"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Sacc rest: 66 C for 60 minutes (15 L)
&lt;/li&gt;
&lt;li&gt;Mashout: 75 C for 10 minutes
&lt;/li&gt;
&lt;li&gt;Sparge: A bunch of water from 55 C to 75 C.  See notes.
&lt;/li&gt;

&lt;li&gt;Cooling: immersion chiller with ice bath recirculation
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-3" class="outline-2"&gt;
&lt;h2 id="sec-3"&gt;Log&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-3"&gt;
&lt;p&gt;
&lt;b&gt;&lt;b&gt;Brew date: 2018-09-22&lt;/b&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Liquid in fermenter: 18 L.
&lt;/li&gt;
&lt;li&gt;O.G. 1.035  (!) (Target was 1.050)
&lt;/li&gt;
&lt;li&gt;Pitching temperature: 20 C
&lt;/li&gt;
&lt;li&gt;Time to onset of fermentation: 2 hours
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-4" class="outline-2"&gt;
&lt;h2 id="sec-4"&gt;Notes&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-4"&gt;
&lt;p&gt;
This was the first time using the Robobrew, and not everything went smoothly.
(Over all, I really like the Robobrew though!) The mash out took a very long
time; I'm not sure if it's because I used two plates for the bottom of the malt
pipe, or if the malt was ground to finely.  The sparge took well over an hour.
I'll have to do some research to see what other people have done with this.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>brews</category><category>ipa</category><guid>https://renprog.com/posts/brew-1-kama-citra/</guid><pubDate>Sat, 22 Sep 2018 05:00:00 GMT</pubDate></item><item><title>Using SQLite Instead of CSV</title><link>https://renprog.com/posts/using-sqlite-instead-of-csv/</link><dc:creator>Mattox Beckman</dc:creator><description>&lt;p&gt;
I hate CSV files.  They seem like a simple and easy way to store data
when you first get started, but they quickly become unwieldy. 
If you have more data than fits in 80 characters per row, or if you need
to quote some of the data elements, or if you need to feed your CSV file
to other programs you start to lose whatever advantages you thought
you were getting in the first place.
&lt;/p&gt;

&lt;p&gt;
There are programs that let you do SQL like queries on a CSV file, but
if you are going to go that route, why not go the whole way?
&lt;/p&gt;

&lt;p&gt;
So I've decided to try an experiment.  Instead of using CSV or flat text
files to store data, I'm going to use &lt;a href="https://www.sqlite.org/index.html"&gt;&lt;code&gt;sqlite3&lt;/code&gt;&lt;/a&gt; for a while and see
what happens.  I'll keep a directory &lt;code&gt;~/data&lt;/code&gt; in which I'll keep the
data files.
&lt;/p&gt;

&lt;p&gt;
So next time I need to make a list of TAs?  Into a database.  I imagine
that I'll write a few scripts to make common things easy, but I don't know
what they are yet.  Check back in a few weeks or so.
&lt;/p&gt;</description><category>cli</category><category>sqlite</category><guid>https://renprog.com/posts/using-sqlite-instead-of-csv/</guid><pubDate>Fri, 21 Sep 2018 19:40:00 GMT</pubDate></item></channel></rss>