summaryrefslogtreecommitdiffstats
path: root/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt')
-rw-r--r--2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt1261
1 files changed, 1261 insertions, 0 deletions
diff --git a/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt b/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt
new file mode 100644
index 00000000..9cfd3030
--- /dev/null
+++ b/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt
@@ -0,0 +1,1261 @@
+WEBVTT captioned by sachac
+
+NOTE Introduction
+
+00:00:00.000 --> 00:00:03.999
+Hi, this is Dave O'Toole, and today
+
+00:00:04.000 --> 00:00:07.799
+I'll be giving a presentation on tracking health data
+
+00:00:07.800 --> 00:00:12.759
+with Emacs, Org Mode, and Gnuplot.
+
+00:00:12.760 --> 00:00:16.079
+So Gnuplot is the well-known scientific
+
+00:00:16.080 --> 00:00:19.039
+and mathematical plotting application.
+
+00:00:19.040 --> 00:00:24.639
+You feed it text files full of names, dates, numbers,
+
+00:00:24.640 --> 00:00:27.199
+data points, and you get out a nice graph.
+
+00:00:27.200 --> 00:00:31.119
+You can spit out SVG. You can spit out PNG graphics.
+
+00:00:31.120 --> 00:00:33.639
+In this case, we're using an SVG.
+
+NOTE How to take daily health journal items
+
+00:00:33.640 --> 00:00:36.839
+What I'm going to show you today
+
+00:00:36.840 --> 00:00:39.839
+is how to take daily health journal items:
+
+00:00:39.840 --> 00:00:42.119
+in other words, things like I exercised
+
+00:00:42.120 --> 00:00:44.319
+such and such number of minutes today,
+
+00:00:44.320 --> 00:00:47.399
+I got X hours of sleep last night,
+
+00:00:47.400 --> 00:00:51.479
+I used such and such number of pieces of nicotine gum,
+
+00:00:51.480 --> 00:00:54.559
+say five pieces. So let's see,
+
+00:00:54.560 --> 00:00:58.439
+we've got this whole picture here, all right,
+
+00:00:58.440 --> 00:00:59.359
+and I've tracked here...
+
+00:00:59.360 --> 00:01:02.319
+This is a month of data from my life.
+
+00:01:02.320 --> 00:01:05.159
+This is... I'm not showing all the variables,
+
+00:01:05.160 --> 00:01:08.519
+but this is what I felt comfortable sharing
+
+00:01:08.520 --> 00:01:14.239
+in order to help people who might have a need to track,
+
+00:01:14.240 --> 00:01:15.919
+either because of a chronic condition,
+
+00:01:15.920 --> 00:01:18.599
+or just because of a health improvement goal
+
+00:01:18.600 --> 00:01:20.959
+or what have you, people who might need to
+
+00:01:20.960 --> 00:01:23.319
+track health data in a way
+
+00:01:23.320 --> 00:01:24.959
+that's a little bit more robust
+
+00:01:24.960 --> 00:01:26.599
+than just one or two variables
+
+00:01:26.600 --> 00:01:29.839
+and just weight or just blood pressure.
+
+00:01:29.840 --> 00:01:33.079
+So in this case, I've got exercise,
+
+00:01:33.080 --> 00:01:36.399
+I've got the number of hours of sleep,
+
+00:01:36.400 --> 00:01:38.559
+the number of doses of nicotine,
+
+00:01:38.560 --> 00:01:40.799
+(that's the yellow line here),
+
+00:01:40.800 --> 00:01:44.199
+and this is referring to nicotine gum.
+
+00:01:44.240 --> 00:01:45.559
+What we're going to be talking about
+
+00:01:45.560 --> 00:01:47.839
+is looking at connections, the idea
+
+00:01:47.840 --> 00:01:49.879
+that plotting your data can actually
+
+00:01:49.880 --> 00:01:52.119
+help you figure out what's going on.
+
+00:01:52.120 --> 00:01:53.079
+This is just one month.
+
+00:01:53.080 --> 00:01:55.439
+I've been doing this for a couple of months now,
+
+00:01:55.440 --> 00:01:57.559
+but I felt comfortable showing one month
+
+00:01:57.560 --> 00:01:59.439
+with a limited subset of the variables.
+
+NOTE How to set up your org templates
+
+00:01:59.440 --> 00:02:02.239
+What I'm going to be doing in this presentation
+
+00:02:02.240 --> 00:02:05.279
+is showing you how to set up your org templates
+
+00:02:05.280 --> 00:02:08.799
+so that you can, you know, hit a hotkey
+
+00:02:08.800 --> 00:02:11.839
+to capture today's data with an org template--
+
+00:02:11.840 --> 00:02:14.199
+or in this case yesterday's. Usually I'm saying, okay,
+
+00:02:14.200 --> 00:02:15.639
+yesterday this happened,
+
+00:02:15.640 --> 00:02:17.479
+because you don't know until the day's over
+
+00:02:17.480 --> 00:02:19.719
+how many pieces of nicotine gum you ate
+
+00:02:19.720 --> 00:02:21.439
+or how many hours you slept.
+
+00:02:21.440 --> 00:02:25.959
+So usually we're recording data for the previous day.
+
+00:02:25.960 --> 00:02:28.079
+We can set up a capture template
+
+00:02:28.080 --> 00:02:30.919
+so that it fills a little org entry. One for exercise,
+
+00:02:30.920 --> 00:02:34.279
+one for sleep, one for nicotine, one for distress.
+
+00:02:34.280 --> 00:02:36.919
+Here distress is just 1 to 10:
+
+00:02:36.920 --> 00:02:38.559
+how bad do you feel today?
+
+00:02:38.560 --> 00:02:41.639
+It's not a scientific measure, but you know,
+
+00:02:41.640 --> 00:02:43.359
+many, many things ask you to rate
+
+00:02:43.360 --> 00:02:47.119
+on a scale of 1 to 10, how bad is the anxiety,
+
+00:02:47.120 --> 00:02:49.639
+how bad is the general level of stress,
+
+00:02:49.640 --> 00:02:51.679
+and so without a lot of complication,
+
+00:02:51.680 --> 00:02:53.159
+I just rate that one to ten.
+
+00:02:53.160 --> 00:02:58.799
+Pain, okay, we won't have to get into any details,
+
+00:02:58.800 --> 00:03:00.959
+but if there is a level of chronic pain, well,
+
+00:03:00.960 --> 00:03:04.239
+I put that between 1 and 10. As we can see here,
+
+00:03:04.240 --> 00:03:07.319
+during the period that I've shown you, it's pretty low.
+
+00:03:07.320 --> 00:03:11.919
+There's some. If you miss a dose of medication,
+
+00:03:11.920 --> 00:03:13.599
+you can track that, in this case
+
+00:03:13.600 --> 00:03:17.639
+with a big ugly red triangle, you know.
+
+00:03:17.640 --> 00:03:24.279
+You can see, I can see here that in mid-, in late September,
+
+00:03:24.280 --> 00:03:29.199
+sorry, in early to mid-October,
+
+00:03:29.200 --> 00:03:30.999
+I stopped using the nicotine gum
+
+00:03:31.000 --> 00:03:32.959
+and probably should have cut down more gradually
+
+00:03:32.960 --> 00:03:34.759
+because my sleep suffered. Look at this.
+
+00:03:34.760 --> 00:03:37.199
+The sleep line is down here, okay?
+
+NOTE How to do it in GNU Emacs
+
+00:03:38.320 --> 00:03:39.519
+What I'm going to do now,
+
+00:03:39.520 --> 00:03:40.879
+now that I've shown you the graph
+
+00:03:40.880 --> 00:03:44.799
+and some of the things that are useful about it,
+
+00:03:44.800 --> 00:03:46.639
+I'm going to actually take a step back
+
+00:03:46.640 --> 00:03:50.319
+and show you from start to finish how you can do this
+
+00:03:50.320 --> 00:03:53.319
+in GNU Emacs, and I have a little template generator
+
+00:03:53.320 --> 00:03:56.279
+that you can use if you'd like.
+
+00:03:56.280 --> 00:03:59.919
+All right, so let's go back.
+
+00:03:59.920 --> 00:04:01.479
+Let's step back from this file.
+
+00:04:01.480 --> 00:04:07.599
+We're going to split the screen, and on the left side,
+
+00:04:07.600 --> 00:04:09.839
+I'm going to put the underlying Org file
+
+00:04:09.840 --> 00:04:10.919
+that generates this graph.
+
+00:04:10.920 --> 00:04:16.839
+Let me shrink that a little bit.
+
+NOTE Overview of the presentation
+
+00:04:16.840 --> 00:04:22.759
+All right, I'm going to work my way backwards
+
+00:04:22.760 --> 00:04:26.519
+from the template to the template generator,
+
+00:04:26.520 --> 00:04:28.439
+meaning that you'll be able to spit out,
+
+00:04:28.440 --> 00:04:31.839
+given your own specification of health variables,
+
+00:04:31.840 --> 00:04:33.519
+you'll be able to have it spit out
+
+00:04:33.520 --> 00:04:38.159
+a custom Gnuplot script like this
+
+00:04:38.160 --> 00:04:41.319
+that's preset up with the definitions
+
+00:04:41.320 --> 00:04:43.159
+for the column view in Org mode.
+
+00:04:43.160 --> 00:04:45.399
+I'm assuming a little bit of familiarity
+
+00:04:45.400 --> 00:04:47.199
+with Org mode and Gnuplotting,
+
+00:04:47.200 --> 00:04:51.959
+but I'll try to explain as much as I can as I go along.
+
+NOTE The journal
+
+00:04:51.960 --> 00:04:59.039
+The journal here is where... okay, okay, one moment.
+
+00:04:59.040 --> 00:05:03.519
+So as you can see, there's a sub-entry here
+
+00:05:03.520 --> 00:05:06.279
+for each day that I've included from my data set
+
+00:05:06.280 --> 00:05:08.559
+starting on September 13th of this year
+
+00:05:08.560 --> 00:05:10.399
+and ending on October 17th.
+
+00:05:10.400 --> 00:05:16.959
+And there's an Org property drawer with
+
+00:05:16.960 --> 00:05:22.999
+the corresponding names of each field and the value.
+
+00:05:29.800 --> 00:05:36.759
+Now the idea here is that the columns specify...
+
+00:05:36.760 --> 00:05:40.639
+if you know a little bit about Org mode,
+
+00:05:40.640 --> 00:05:43.479
+what happens is that you...
+
+00:05:43.480 --> 00:05:50.919
+let's say that I hit the key for my journal template,
+
+00:05:50.920 --> 00:05:52.799
+which... Mine is very similar.
+
+NOTE The capture buffer
+
+00:05:52.800 --> 00:06:00.879
+This is the capture buffer for today's date,
+
+00:06:00.880 --> 00:06:02.679
+and if you're recording yesterday's date,
+
+00:06:02.680 --> 00:06:04.519
+you can just flip it like that if you need to.
+
+00:06:04.520 --> 00:06:08.639
+Then I say, yesterday, I remember
+
+00:06:08.640 --> 00:06:11.159
+I went for about a one-mile walk,
+
+00:06:11.160 --> 00:06:14.119
+so that's probably about 20 minutes,
+
+00:06:14.120 --> 00:06:16.519
+and that I had such and such,
+
+00:06:16.520 --> 00:06:19.079
+I had eight and a half hours of sleep, let's say.
+
+00:06:19.080 --> 00:06:22.479
+I estimate how many pieces of nicotine gum I have.
+
+00:06:22.480 --> 00:06:25.799
+I try to count as closely as I can, how much distress,
+
+00:06:25.800 --> 00:06:26.359
+you know what I mean,
+
+00:06:26.360 --> 00:06:28.279
+whether or not I missed a dose of medication.
+
+00:06:28.280 --> 00:06:32.399
+Then when you hit C-c C-c,
+
+00:06:32.400 --> 00:06:39.799
+it captures that to the end of your Org file.
+
+00:06:39.800 --> 00:06:46.679
+Now what this shows is that... I cut and paste it in.
+
+00:06:46.680 --> 00:06:48.159
+I've been keeping these entries every day for months,
+
+00:06:48.160 --> 00:06:51.319
+and that I cut and pasted in a month of data.
+
+NOTE The columnview table
+
+00:06:51.320 --> 00:07:00.799
+Now I'm going to dig in a little bit to the Gnuplot script.
+
+00:07:00.800 --> 00:07:07.759
+This here, all this stuff, is one component of the graph,
+
+00:07:07.760 --> 00:07:11.359
+and I'll go over how it works.
+
+00:07:11.360 --> 00:07:19.319
+First, the items through this column declaration here,
+
+00:07:19.320 --> 00:07:30.199
+and the id:myid, this columnview table here,
+
+00:07:30.200 --> 00:07:34.919
+#+BEGIN: columnview, this whole bit here,
+
+00:07:34.920 --> 00:07:39.879
+is going to get filled in with the corresponding columns,
+
+00:07:39.880 --> 00:07:43.039
+exercise minutes, sleep hours, nicotine doses.
+
+00:07:43.040 --> 00:07:53.559
+And then it gets pumped out by Org mode into a file
+
+00:07:53.560 --> 00:07:59.840
+that looks like this: tab-separated values
+
+00:07:59.841 --> 00:08:03.479
+with an ISO-style date at the beginning.
+
+NOTE Gnuplot
+
+00:08:03.480 --> 00:08:10.359
+So what we're going to do is we're going to go through
+
+00:08:10.360 --> 00:08:14.479
+the Gnuplot portion of this,
+
+00:08:14.480 --> 00:08:16.359
+and I'm going to enlarge the font a little.
+
+00:08:21.280 --> 00:08:23.719
+I'm going to go line by line through the Gnuplot portion.
+
+00:08:23.720 --> 00:08:30.639
+Now, my template generator will give you one like this.
+
+00:08:30.640 --> 00:08:33.119
+You don't have to write this from scratch.
+
+00:08:33.120 --> 00:08:35.679
+But I'm going to go through it line by line
+
+00:08:35.680 --> 00:08:37.479
+because if you do use the template,
+
+00:08:37.480 --> 00:08:42.199
+then it'll help to have gone through it line by line,
+
+00:08:42.200 --> 00:08:46.679
+because you're probably going to have to modify it.
+
+00:08:46.680 --> 00:08:49.119
+So first, we're going to clear the graphics
+
+00:08:49.120 --> 00:08:50.199
+from any previous runs
+
+00:08:50.200 --> 00:08:53.799
+so that if we reuse the same Gnuplot process,
+
+00:08:53.800 --> 00:08:57.759
+we're not overwriting the old--
+
+00:08:57.760 --> 00:09:00.719
+that we are completely overwriting the old image.
+
+00:09:00.720 --> 00:09:03.319
+So that's the purpose of this line here.
+
+NOTE Output parameters
+
+00:09:03.320 --> 00:09:08.559
+The output parameters: we want to put out an SVG file.
+
+00:09:08.560 --> 00:09:13.639
+Font Arial, that's funny,
+
+00:09:13.640 --> 00:09:16.119
+but I don't know what font it's actually ending up choosing,
+
+00:09:16.120 --> 00:09:16.879
+but it looks fine.
+
+00:09:16.880 --> 00:09:19.639
+Then we want it to be square,
+
+00:09:19.640 --> 00:09:21.919
+so I'm giving it 900 by 900 pixels,
+
+00:09:21.920 --> 00:09:23.719
+even though it is a scalable vector graphic.
+
+00:09:23.720 --> 00:09:29.159
+We're putting it in the same folder as the org file,
+
+00:09:29.160 --> 00:09:30.799
+example.svg.
+
+00:09:30.800 --> 00:09:39.519
+These lines here set it up to use the Org mode format
+
+00:09:39.520 --> 00:09:42.679
+that we showed in the other file over here.
+
+00:09:42.680 --> 00:09:48.359
+The time format is four-digit year, two-digit month,
+
+00:09:48.360 --> 00:09:50.359
+two-digit day.
+
+00:09:50.360 --> 00:09:56.479
+The time format doesn't specify here the time,
+
+00:09:56.480 --> 00:09:59.599
+but that doesn't seem to mess it up.
+
+00:09:59.600 --> 00:10:02.439
+This line "set datafile separator" means that
+
+00:10:02.440 --> 00:10:04.239
+the separators between that
+
+00:10:04.240 --> 00:10:06.959
+and between all the other fields are tabs,
+
+00:10:06.960 --> 00:10:08.919
+which is what Org mode does
+
+00:10:08.920 --> 00:10:10.999
+when it spits out a table by default.
+
+00:10:11.000 --> 00:10:15.479
+Okay, along to the next lines.
+
+NOTE Time series data
+
+00:10:15.480 --> 00:10:18.119
+We're going to set up for time series data,
+
+00:10:18.120 --> 00:10:22.807
+meaning that the x-axis is going to be time,
+
+00:10:22.808 --> 00:10:26.119
+x2tics 1 format.
+
+00:10:26.120 --> 00:10:30.399
+I believe this means that every day has one tick
+
+00:10:30.400 --> 00:10:32.879
+and that this tells it that the first--
+
+00:10:32.880 --> 00:10:39.359
+unfortunately, I forget the exact meaning of this one line.
+
+00:10:39.360 --> 00:10:44.959
+I'm just going to move on. We want one X tick per day,
+
+00:10:44.960 --> 00:10:46.519
+and because X is in seconds,
+
+00:10:46.520 --> 00:10:50.319
+it's 24 hours times 60 minutes times 60 seconds.
+
+00:10:50.320 --> 00:10:55.639
+This line "set grid xtics" gives us
+
+00:10:55.640 --> 00:10:57.279
+a vertical line on each day of the graph.
+
+00:10:57.280 --> 00:10:58.319
+I'll pull up the graph
+
+00:10:58.320 --> 00:11:00.039
+just so that it's a little easier to see.
+
+00:11:00.040 --> 00:11:03.919
+All these vertical lines, one on each day,
+
+00:11:03.920 --> 00:11:06.199
+that's given to you by "set grid xtics".
+
+00:11:06.200 --> 00:11:10.159
+One Y tick every five points.
+
+00:11:10.160 --> 00:11:13.719
+So here at five pieces of nicotine,
+
+00:11:13.720 --> 00:11:15.959
+we've got a five, at ten pieces – well,
+
+00:11:15.960 --> 00:11:19.679
+we don't want to eat ten pieces, but ten, fifteen, twenty.
+
+00:11:19.680 --> 00:11:25.479
+Rotating the labels to make them fit a little bit better,
+
+00:11:25.480 --> 00:11:28.039
+that's this part here where the labels are sideways,
+
+00:11:28.040 --> 00:11:30.639
+and even with just one month of data,
+
+00:11:30.640 --> 00:11:35.159
+they're getting a little crowded.
+
+00:11:35.160 --> 00:11:41.399
+This "set key box lc" just makes the line around the key,
+
+00:11:41.400 --> 00:11:44.039
+the legend here, a little bit less severe.
+
+00:11:44.040 --> 00:11:51.079
+set xtics format: this makes it so that, for example,
+
+00:11:51.080 --> 00:11:53.479
+I've done a United-States-style date here
+
+00:11:53.480 --> 00:11:55.279
+with the month and then the day.
+
+00:11:55.280 --> 00:11:58.839
+You don't necessarily have to do that.
+
+00:11:58.840 --> 00:12:01.959
+You can have whatever you want.
+
+00:12:01.960 --> 00:12:03.079
+This xtics format,
+
+00:12:03.080 --> 00:12:06.319
+that relates to how the dates are printed.
+
+00:12:06.320 --> 00:12:12.519
+Remember that over here, this set timefmt,
+
+00:12:12.520 --> 00:12:15.159
+that relates to how the dates are formatted
+
+00:12:15.160 --> 00:12:16.999
+in the Org mode output.
+
+00:12:17.000 --> 00:12:18.319
+So remember, those are two...
+
+00:12:18.320 --> 00:12:19.519
+You don't want to mix those up.
+
+00:12:19.520 --> 00:12:23.799
+All right, "yrange [0:40]".
+
+00:12:23.800 --> 00:12:28.719
+Thus far, my exercise sessions have all been
+
+00:12:28.720 --> 00:12:31.479
+less than 30 minutes, and nothing's gone over 30.
+
+00:12:31.480 --> 00:12:35.839
+If you have a health variable
+
+00:12:35.840 --> 00:12:38.119
+that is in a significantly different range,
+
+00:12:38.120 --> 00:12:41.639
+you may need to get a slightly more complicated
+
+00:12:41.640 --> 00:12:43.719
+Gnuplot script because it is possible to plot
+
+00:12:43.720 --> 00:12:46.479
+multiple yranges in one plot
+
+00:12:46.480 --> 00:12:48.719
+if you have a variable that uses a different range.
+
+00:12:48.720 --> 00:12:49.759
+It's just a little trickier.
+
+00:12:49.760 --> 00:12:55.919
+These parts here, aside from the fact
+
+00:12:55.920 --> 00:12:59.079
+that you might make some changes that relate to
+
+00:12:59.080 --> 00:13:01.319
+the date and your country format,
+
+00:13:01.320 --> 00:13:03.239
+are going to be the same.
+
+00:13:03.240 --> 00:13:05.919
+This is like boilerplate for almost anything.
+
+NOTE Health variables
+
+00:13:05.920 --> 00:13:09.799
+Now here are the parts that are going to vary
+
+00:13:09.800 --> 00:13:13.399
+depending on what health variables you want to store.
+
+00:13:13.400 --> 00:13:18.039
+There are three main sections here.
+
+00:13:18.040 --> 00:13:28.719
+One is setting the different line types that are used.
+
+00:13:28.720 --> 00:13:32.479
+Setting linetype 1 with line width 2, line color RGB.
+
+00:13:32.480 --> 00:13:34.959
+Unfortunately, Gnuplot is a little bit cryptic,
+
+00:13:34.960 --> 00:13:36.879
+which is why I've made this template generator
+
+00:13:36.880 --> 00:13:37.999
+that I'll show you in a moment.
+
+00:13:38.000 --> 00:13:43.039
+I pick a color. So this is exercise, forest green.
+
+00:13:43.040 --> 00:13:49.279
+Point size 1, meaning you get
+
+00:13:49.280 --> 00:13:51.599
+these little green triangles about that size.
+
+00:13:51.600 --> 00:13:54.719
+But the point type 9 is the pointing up triangle.
+
+00:13:54.720 --> 00:13:59.519
+Line type 2, purple. So that's the sleep line.
+
+00:13:59.520 --> 00:14:02.999
+So we're just establishing these different line types
+
+00:14:03.000 --> 00:14:04.719
+that we've given arbitrary numbers.
+
+00:14:04.720 --> 00:14:08.959
+Now onto the next section.
+
+00:14:08.960 --> 00:14:12.919
+Oh, before I move on here,
+
+00:14:12.920 --> 00:14:16.119
+you can see point type 11 for line 5, which is red.
+
+00:14:16.120 --> 00:14:18.079
+And that's the missed medications line,
+
+00:14:18.080 --> 00:14:20.639
+so you get a triangle that's upside down
+
+00:14:20.640 --> 00:14:22.679
+because that's point shape 11.
+
+NOTE Goal lines
+
+00:14:22.680 --> 00:14:27.879
+All right. The next section here is the goal lines.
+
+00:14:27.880 --> 00:14:33.440
+There are horizontal dashed lines here
+
+00:14:33.441 --> 00:14:37.359
+at 8 purple hours of sleep, because 8 hours is the goal.
+
+00:14:37.360 --> 00:14:41.519
+So there's a horizontal line at Y = 8.
+
+00:14:41.520 --> 00:14:43.879
+For pieces of nicotine gum,
+
+00:14:43.880 --> 00:14:46.959
+I'm trying to keep it to around 5 right now.
+
+00:14:46.960 --> 00:14:52.519
+So my goal line is at 5. So these...
+
+00:14:52.520 --> 00:14:56.759
+Here, a goal of at least 20 minutes of exercise.
+
+00:14:56.760 --> 00:14:59.079
+Sometimes I get more, sometimes I get less.
+
+00:14:59.080 --> 00:15:02.199
+There's a green line and a 20, showing that that's the goal.
+
+00:15:02.200 --> 00:15:06.479
+These lines here are actually the goal lines.
+
+00:15:06.480 --> 00:15:09.119
+You can specify the goal for each one
+
+00:15:09.120 --> 00:15:11.999
+in the template generator that I'll show you.
+
+NOTE The Gnuplot command
+
+00:15:12.000 --> 00:15:28.079
+The last part is the actual plot command.
+
+00:15:28.080 --> 00:15:30.199
+So the dependent... So okay,
+
+00:15:30.200 --> 00:15:34.919
+these all start with 1, "using 1" against this variable.
+
+00:15:34.920 --> 00:15:41.599
+So $2... This is a ternary operator here
+
+00:15:41.600 --> 00:15:49.199
+that says if the value of the second column is zero,
+
+00:15:49.200 --> 00:15:52.359
+then don't plot a point. In other words,
+
+00:15:52.360 --> 00:15:56.079
+not a number means it won't plot a point.
+
+00:15:56.080 --> 00:15:58.919
+The template generator lets you skip over
+
+00:15:58.920 --> 00:16:02.119
+the details of that. It sticks this in there.
+
+00:16:02.120 --> 00:16:02.759
+I'll show you.
+
+00:16:02.760 --> 00:16:09.399
+So we only want to plot a point when the value is non-zero.
+
+00:16:09.400 --> 00:16:12.479
+If there was no exercise, we're not plotting a point.
+
+00:16:12.480 --> 00:16:15.759
+The with construct means we'll plot data
+
+00:16:15.760 --> 00:16:21.340
+using date against exercise with points,
+
+00:16:21.341 --> 00:16:25.519
+the title is "exercise (minutes)", line type 1.
+
+00:16:25.520 --> 00:16:29.839
+Remember, we established line type 1 up here
+
+00:16:29.840 --> 00:16:35.079
+as being forest green, point style 1,
+
+00:16:35.080 --> 00:16:37.599
+point type 9, green triangles.
+
+00:16:37.600 --> 00:16:42.399
+Now I'm going to show 1 against column 3,
+
+00:16:42.400 --> 00:16:43.919
+which is "hours of sleep".
+
+00:16:43.920 --> 00:16:46.039
+This one is plotted with lines,
+
+00:16:46.040 --> 00:16:48.599
+so we don't specify a point type or point size,
+
+00:16:48.600 --> 00:16:51.719
+just a line type 2. And remember, you can see
+
+00:16:51.720 --> 00:16:55.240
+that line type 2 is defined as purple
+
+00:16:55.241 --> 00:16:57.359
+with point type 1, point size 1.
+
+00:16:57.360 --> 00:16:59.959
+Okay, so I did specify point size and point type,
+
+00:16:59.960 --> 00:17:01.479
+but because I'm not plotting with points,
+
+00:17:01.480 --> 00:17:02.279
+those are ignored.
+
+00:17:02.280 --> 00:17:08.799
+Here we come to the line with nicotine.
+
+00:17:08.800 --> 00:17:11.559
+The fourth column is the nicotine number,
+
+00:17:11.560 --> 00:17:13.199
+the fourth column from the Org mode file.
+
+00:17:13.200 --> 00:17:16.007
+So here you can see how we're telling Gnuplot
+
+00:17:16.008 --> 00:17:19.799
+to take each column of the tab-separated Org mode file
+
+00:17:19.800 --> 00:17:21.119
+and put it into the graph.
+
+00:17:21.120 --> 00:17:25.959
+The line types are set up here.
+
+00:17:25.960 --> 00:17:30.799
+The goal lines are set up here.
+
+00:17:30.800 --> 00:17:35.559
+And then the actual plot command is set up here.
+
+NOTE The template generator
+
+00:17:35.560 --> 00:17:41.319
+So now we're going to work further backwards
+
+00:17:41.320 --> 00:17:42.959
+from this Gnuplot template
+
+00:17:42.960 --> 00:17:46.559
+to the template generator that I used to make it.
+
+00:17:46.560 --> 00:18:01.959
+Now I'm not going to go into
+
+00:18:01.960 --> 00:18:03.759
+all of the details of the code,
+
+00:18:03.760 --> 00:18:06.159
+but what I am going to show you is that
+
+00:18:06.160 --> 00:18:10.679
+there's a variable called `health-factors`.
+
+00:18:10.680 --> 00:18:15.839
+And what this does, this `health-factors-from-list`
+
+00:18:15.840 --> 00:18:20.919
+lets you specify, with a property list
+
+00:18:20.920 --> 00:18:22.679
+of keyword and value pairs
+
+00:18:22.680 --> 00:18:24.799
+(here's the keyword name and the value is exercise),
+
+00:18:24.800 --> 00:18:28.199
+the goal that I want 20 minutes of exercise,
+
+00:18:28.200 --> 00:18:30.199
+that the unit is minutes,
+
+00:18:30.200 --> 00:18:36.159
+that the color is forest green, and so on.
+
+00:18:36.160 --> 00:18:39.439
+The aspects of the Gnuplot setup
+
+00:18:39.440 --> 00:18:43.559
+have been abstracted here.
+
+00:18:43.560 --> 00:18:49.279
+Eight hours of sleep is the goal here.
+
+00:18:49.280 --> 00:18:54.039
+The hours are units. What color,
+
+00:18:54.040 --> 00:18:55.119
+what thickness of the line.
+
+00:18:55.120 --> 00:19:00.079
+Here we specify the number of points.
+
+00:19:00.080 --> 00:19:01.279
+There's references online
+
+00:19:01.280 --> 00:19:05.199
+that show you what point types are what shapes in Gnuplot,
+
+00:19:05.200 --> 00:19:11.479
+and so on and so forth.
+
+NOTE The code that creates a template
+
+00:19:11.480 --> 00:19:17.399
+I'll walk through the code a little bit that does this,
+
+00:19:17.400 --> 00:19:20.439
+that actually takes these pieces,
+
+00:19:20.440 --> 00:19:24.399
+that takes this specification of what your variables are
+
+00:19:24.400 --> 00:19:30.439
+and turns it into a template.
+
+00:19:30.440 --> 00:19:37.959
+First, I'm using EIEIO,
+
+00:19:37.960 --> 00:19:41.719
+the object system that's included with GNU Emacs.
+
+00:19:41.720 --> 00:19:45.119
+It's a reasonable facsimile
+
+00:19:45.120 --> 00:19:47.319
+of the Common Lisp Object System.
+
+00:19:47.320 --> 00:19:51.239
+What I'm going to be doing here
+
+00:19:51.240 --> 00:19:56.199
+is defining a class with each of those items,
+
+00:19:56.200 --> 00:19:58.479
+those properties that we talked about in that list
+
+00:19:58.480 --> 00:20:01.319
+that lets you specify name, what the goal is,
+
+00:20:01.320 --> 00:20:04.239
+what the units are, and the Gnuplot things
+
+00:20:04.240 --> 00:20:06.559
+(the Gnuplot parameters like thickness,
+
+00:20:06.560 --> 00:20:13.239
+plot type, and all that) into a class that will then
+
+00:20:13.240 --> 00:20:16.519
+spit out the template once you feed it
+
+00:20:16.520 --> 00:20:27.759
+some of these health factor objects. So just a moment.
+
+00:20:27.760 --> 00:20:34.479
+For example, you can see that this template
+
+00:20:34.480 --> 00:20:46.319
+originally came from being generated by this code here.
+
+00:20:46.320 --> 00:20:52.959
+To use the template,
+
+00:20:52.960 --> 00:20:55.399
+to use this little template generator...
+
+00:20:55.400 --> 00:21:06.279
+See, here's where it spits out the line type
+
+00:21:06.280 --> 00:21:07.439
+given the pieces.
+
+00:21:07.440 --> 00:21:09.679
+This is all just text formatting.
+
+00:21:09.680 --> 00:21:11.319
+This is one of the things that Emacs Lisp
+
+00:21:11.320 --> 00:21:13.159
+just really excels at.
+
+00:21:13.160 --> 00:21:19.519
+I need to take a piece of data
+
+00:21:19.520 --> 00:21:22.639
+like a list of health information,
+
+00:21:22.640 --> 00:21:25.679
+a list of health variables, what their units are,
+
+00:21:25.680 --> 00:21:28.119
+and how they're supposed to be formatted in Gnuplot,
+
+00:21:28.120 --> 00:21:30.199
+and go from that to the nice template.
+
+00:21:30.200 --> 00:21:31.719
+So that's pretty much the whole thing.
+
+00:21:31.720 --> 00:21:40.999
+I want to see if there's anything I missed.
+
+NOTE The power of the chart
+
+00:21:41.000 --> 00:21:51.519
+Bring up the chart.
+
+00:21:51.520 --> 00:21:54.279
+This has been really useful
+
+00:21:54.280 --> 00:21:59.599
+for communicating with healthcare professionals
+
+00:21:59.600 --> 00:22:04.399
+because you are both on the same page
+
+00:22:04.400 --> 00:22:05.879
+about exactly what is happening,
+
+00:22:05.880 --> 00:22:10.679
+what's been happening because if... Let's say
+
+00:22:10.680 --> 00:22:15.239
+that you're tired when you talk to your care provider.
+
+00:22:15.240 --> 00:22:17.559
+Well, if you have objective information
+
+00:22:17.560 --> 00:22:18.839
+that you've been recording every day,
+
+00:22:18.840 --> 00:22:22.399
+that you're ahead of the game, really,
+
+00:22:22.400 --> 00:22:25.119
+because you don't need, necessarily, the presence of mind
+
+00:22:25.120 --> 00:22:27.679
+to be able to give your care provider
+
+00:22:27.680 --> 00:22:30.039
+a complete picture of what's going on in your world.
+
+00:22:30.040 --> 00:22:33.039
+If you can find those few minutes a day to enter--
+
+00:22:33.040 --> 00:22:34.399
+not even a few minutes,
+
+00:22:34.400 --> 00:22:37.759
+really just a minute to enter the data
+
+00:22:37.760 --> 00:22:39.839
+and say what happened yesterday...
+
+00:22:39.840 --> 00:22:42.759
+I'm finding over these months
+
+00:22:42.760 --> 00:22:45.039
+that I've been more in touch with my health when I can--
+
+00:22:45.040 --> 00:22:49.919
+not forced, but when I have the habit,
+
+00:22:49.920 --> 00:22:52.159
+the consistent habit every single day
+
+00:22:52.160 --> 00:22:55.839
+of recording that data--I'm accountable to myself.
+
+00:22:55.840 --> 00:22:57.359
+It's interesting.
+
+00:22:57.360 --> 00:23:01.039
+I guess it gets into a little bit of ideas
+
+00:23:01.040 --> 00:23:02.439
+about the Quantified Self
+
+00:23:02.440 --> 00:23:05.239
+and how holding yourself accountable
+
+00:23:05.240 --> 00:23:09.919
+can change what you do and what the outcomes are.
+
+00:23:09.920 --> 00:23:14.159
+Just look at this here.
+
+00:23:14.160 --> 00:23:17.279
+Without getting into too much detail,
+
+00:23:17.280 --> 00:23:19.679
+one of the reasons I track my sleep is because,
+
+00:23:19.680 --> 00:23:22.039
+as you can see, my sleep
+
+00:23:22.040 --> 00:23:26.759
+is not as well-regulated as most people,
+
+00:23:26.760 --> 00:23:31.439
+and that's why I need to do that.
+
+00:23:31.440 --> 00:23:34.440
+This was a time... 10, 12,
+
+00:23:34.441 --> 00:23:36.639
+here's 14 hours of sleep, that's depression.
+
+00:23:36.640 --> 00:23:43.519
+It oscillates a little bit. But then below the goal line,
+
+00:23:43.520 --> 00:23:45.639
+the things are a little more normal here.
+
+00:23:45.640 --> 00:23:46.919
+This is a little more normal.
+
+00:23:46.920 --> 00:23:52.079
+But then, really, without thinking about it too much,
+
+00:23:52.080 --> 00:23:56.239
+I cut out the nicotine, and my sleep suffered.
+
+00:23:56.240 --> 00:24:00.199
+Just the fact that I'm able to look and see that connection
+
+00:24:00.200 --> 00:24:01.359
+is really amazing to me.
+
+00:24:01.360 --> 00:24:02.759
+Maybe I would have anyway,
+
+00:24:02.760 --> 00:24:05.239
+but looking at the whole months of data,
+
+00:24:05.240 --> 00:24:07.399
+there have been many things to discuss
+
+00:24:07.400 --> 00:24:09.919
+and many things to think about.
+
+NOTE Thanks
+
+00:24:09.920 --> 00:24:12.159
+Because this is a short presentation,
+
+00:24:12.160 --> 00:24:13.839
+I probably should wrap up.
+
+00:24:13.840 --> 00:24:18.239
+I just want to thank the whole Emacs community
+
+00:24:18.240 --> 00:24:23.319
+for being there and for including me in the conference
+
+00:24:23.320 --> 00:24:27.079
+and I hope to participate next year as well.
+
+00:24:27.080 --> 00:24:29.240
+Thank you so much.