diff --git a/drafts/2017-12-12-dataflow.org b/drafts/2017-12-12-dataflow.org
deleted file mode 100644
index f834766..0000000
--- a/drafts/2017-12-12-dataflow.org
+++ /dev/null
@@ -1,42 +0,0 @@
-#+TITLE: Dataflow paradigm (working title)
-#+AUTHOR: Chris Hodapp
-#+DATE: December 12, 2017
-#+TAGS: technobabble
-
-I don't know if there's actually anything to write here.
-
-There is a sort of parallel between the declarative nature of
-computational graphs in TensorFlow, and functional programming
-(possibly function-level - think of the J language and how important
-rank is to its computations).
-
-Apache Spark and TensorFlow are very similar in a lot of ways. The
-key difference I see is that Spark handles different types of data
-internally that are more suited to databases, reords, tables, and
-generally relational data, while TensorFlow is, well, tensors
-(arbitrary-dimensional arrays).
-
-The interesting part to me with both of these is how they've moved
-"bulk" computations into first-class objects (ish) and permitted some
-level of introspection into them before they run, as they run, and
-after they run. Like I noted in Notes - Paper, 2016-11-13, "One
-interesting (to me) facet is how the computation process has been
-split out and instrumented enough to allow some meaningful
-introspection with it. It hasn't precisely made it a first-class
-construct, but still, this feature pervades all of Spark's major
-abstractions (RDD, DataFrame, Dataset)."
-
-# Show Tensorboard example here
-# Screenshots may be a good idea too
-
-Spark does this with a database. TensorFlow does it with numerical
-calculations. Node-RED does it with irregular, asynchronous data.
-
-- [[https://mxnet.incubator.apache.org/how_to/visualize_graph.html][mxnet: How to visualize Neural Networks as computation graph]]
-- [[https://medium.com/intuitionmachine/pytorch-dynamic-computational-graphs-and-modular-deep-learning-7e7f89f18d1][PyTorch, Dynamic Computational Graphs and Modular Deep Learning]]
-- [[https://github.com/WarBean/hyperboard][HyperBoard: A web-based dashboard for Deep Learning]]
-- [[https://www.postgresql.org/docs/current/static/sql-explain.html][EXPLAIN in PostgreSQL]]
- - http://tatiyants.com/postgres-query-plan-visualization/
-- https://en.wikipedia.org/wiki/Dataflow_programming
-- Pure Data!
-- [[https://en.wikipedia.org/wiki/Orange_(software)][Orange]]?
diff --git a/drafts/2018-01-30-slope-one.org b/drafts/2018-01-30-slope-one.org
deleted file mode 100644
index defa8a3..0000000
--- a/drafts/2018-01-30-slope-one.org
+++ /dev/null
@@ -1,193 +0,0 @@
----
-title: Collaborative Filtering with Slope One Predictors
-author: Chris Hodapp
-date: January 30, 2018
-tags: technobabble, machine learning
----
-
-# Needs a brief intro
-
-# Needs a summary at the end
-
-Suppose you have a large number of users, and a large number of
-movies. Users have watched movies, and they've provided ratings for
-some of them (perhaps just simple numerical ratings, 1 to 10 stars).
-However, they've all watched different movies, and for any given user,
-it's only a tiny fraction of the total movies.
-
-Now, you want to predict how some user will rate some movie they
-haven't rated, based on what they (and other users) have rated.
-
-That's a common problem, especially when generalized from 'movies' to
-anything else, and one with many approaches. (To put some technical
-terms to it, this is the [[https://en.wikipedia.org/wiki/Collaborative_filtering][collaborative filtering]] approach to
-[[https://en.wikipedia.org/wiki/Recommender_system][recommender systems]]. [[http://www.mmds.org/][Mining of Massive Datasets]] is an excellent free
-text in which to read more in depth on this, particularly chapter 9.)
-
-Slope One Predictors are one such approach to collaborative filtering,
-described in the paper [[https://arxiv.org/pdf/cs/0702144v1.pdf][Slope One Predictors for Online Rating-Based
-Collaborative Filtering]]. Despite the complex-sounding name, they are
-wonderfully simple to understand and implement, and very fast.
-
-I'll give a contrived example below to explain them.
-
-Consider a user Bob. Bob is enthusiastic, but has rather simple
-tastes: he mostly just watches Clint Eastwood movies. In fact, he's
-watched and rated nearly all of them, and basically nothing else.
-
-Now, suppose we want to predict how much Bob will like something
-completely different and unheard of (to him at least), like... I don't
-know... /Citizen Kane/.
-
-Here's Slope One in a nutshell:
-
-1. First, find the users who rated both /Citizen Kane/ *and* any of
- the Clint Eastwood movies that Bob rated.
-2. Now, for each movie that comes up above, compute a *deviation*
- which tells us: On average, how differently (i.e. how much higher
- or lower) did users rate Citizen Kane compared to this movie? (For
- instance, we'll have a number for how /Citizen Kane/ was rated
- compared to /Dirty Harry/, and perhaps it's +0.6 - meaning that on
- average, users who rated both movies rated /Citizen Kane/ about 0.6
- stars above /Dirty Harry/. We'd have another deviation for
- /Citizen Kane/ compared to /Gran Torino/, another for /Citizen
- Kane/ compared to /The Good, the Bad and the Ugly/, and so on - for
- every movie that Bob rated, provided that other users who rated
- /Citizen Kane/ also rated the movie.)
-3. If that deviation between /Citizen Kane/ and /Dirty Harry/ was
- +0.6, it's reasonable that adding 0.6 from Bob's rating on /Dirty
- Harry/ would give one prediction of how Bob might rate /Citizen
- Kane/. We can then generate more predictions based on the ratings
- he gave the other movies - anything for which we could compute a
- deviation.
-4. To turn this to a single prediction, we could just average all
- those predictions together.
-
-One variant, Weighted Slope One, is nearly identical. The only
-difference is in how we average those predictions in step #4. In
-Slope One, every deviation counts equally, no matter how many users
-had differences in ratings averaged together to produce it. In
-Weighted Slope One, deviations that came from larger numbers of users
-count for more (because, presumably, they are better estimates).
-
-Or, in other words: If only one person rated both /Citizen Kane/ and
-the lesser-known Eastwood classic /Revenge of the Creature/, and they
-happened to think that /Revenge of the Creature/ deserved at least 3
-more stars, then with Slope One, this deviation of -3 would carry
-exactly as much weight as thousands of people rating /Citizen Kane/ as
-about 0.5 stars below /The Good, the Bad and the Ugly/. In Weighted
-Slope One, that latter deviation would count for thousands of times as
-much. The example makes it sound a bit more drastic than it is.
-
-The Python library [[http://surpriselib.com/][Surprise]] (a [[https://www.scipy.org/scikits.html][scikit]]) has an implementation of this
-algorithm, and the Benchmarks section of that page shows its
-performance compared to some other methods.
-
-/TODO/: Show a simple Python implementation of this (Jupyter
-notebook?)
-
-* Linear Algebra Tricks
-
-Those who aren't familiar with matrix methods or algebra can probably
-skip this section. Everything I've described above, you can compute
-given just some data to work with ([[https://grouplens.org/datasets/movielens/100k/][movielens 100k]], perhaps?) and some
-basic arithmetic. You don't need any complicated numerical methods.
-
-However, the entire Slope One method can be implemented in a very fast
-and simple way with a couple matrix operations.
-
-First, we need to have our data encoded as a *utility matrix*. In a
-utility matrix, each row represents one user, each column represents
-one item (a movie, in our case), and each element represents a user's
-rating of an item. If we have $n$ users and $m$ movies, then this a
-$n \times m$ matrix $U$ for which $U_{k,i}$ is user $k$'s rating for
-movie $i$ - assuming we've numbered our users and our movies.
-
-Users have typically rated only a fraction of movies, and so most of
-the elements of this matrix are unknown. We can represent this with
-another $n \times m$ matrix (specifically a binary matrix), a 'mask'
-$M$ in which $M_{k,i}$ is 1 if user $k$ supplied a rating for movie
-$i$, and otherwise 0.
-
-I mentioned *deviation* above and gave an informal definition of it.
-The paper gaves a formal but rather terse definition below of the
-average deviation of item $i$ with respect to item $j$:
-
-$$\textrm{dev}_{j,i} = \sum_{u \in S_{j,i}(\chi)} \frac{u_j - u_i}{card(S_{j,i}(\chi))}$$
-
-where:
-- $u_j$ and $u_i$ mean: user $u$'s ratings for movies $i$ and $j$, respectively
-- $u \in S_{j,i}(\chi)$ means: all users $u$ who, in the dataset we're
- training on, provided a rating for both movie $i$ and movie $j$
-- $card$ is the cardinality of that set, i.e. for
- ${card(S_{j,i}(\chi))}$ it is just how many users rated both $i$ and
- $j$.
-
-That denominator does depend on $i$ and $j$, but doesn't depend on the
-summation term, so it can be pulled out, and also, we can split up the
-summation as long as it is kept over the same terms:
-
-$$\textrm{dev}_{j,i} = \frac{1}{card(S_{j,i}(\chi))} \sum_{u \in
-S_{j,i}(\chi)} u_j - u_i = \frac{1}{card(S_{j,i}(\chi))}\left(\sum_{u
-\in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i\right)$$
-
-# TODO: These need some actual matrices to illustrate
-
-Let's start with computing ${card(S_{j,i}(\chi))}$, the number of
-users who rated both movie $i$ and movie $j$. Consider column $i$ of
-the mask $M$. For each value in this column, it equals 1 if the
-respective user rated movie $i$, or 0 if they did not. Clearly,
-simply summing up column $i$ would tell us how many users rated movie
-$i$, and the same applies to column $j$ for movie $j$.
-
-Now, suppose we take element-wise logical AND of columns $i$ and $j$.
-The resultant column has a 1 only where both corresponding elements
-were 1 - where a user rated both $i$ and $j$. If we sum up this
-column, we have exactly the number we need: the number of users who
-rated both $i$ and $j$.
-
-Some might notice that "elementwise logical AND" is just "elementwise
-multiplication", thus "sum of elementwise logical AND" is just "sum of
-elementwise multiplication", which is: dot product. That is,
-${card(S_{j,i}(\chi))}=M_j \bullet M_i$ if we use $M_i$ and $M_j$ for
-columns $i$ and $j$ of $M$.
-
-However, we'd like to compute deviation as a matrix for all $i$ and
-$j$, so we'll likewise need ${card(S_{j,i}(\chi))}$ for every single
-combination of $i$ and $j$ - that is, we need a dot product between
-every single pair of columns from $M$. Incidentally, "dot product of
-every pair of columns" happens to be almost exactly matrix
-multiplication; note that for matrices $A$ and $B$, element $(x,y)$ of
-the matrix product $AB$ is just the dot product of /row/ $x$ of $A$
-and /column/ $y$ of $B$ - and that matrix product as a whole has this
-dot product between every row of $A$ and every column of $B$.
-
-We wanted the dot product of every column of $M$ with every column of
-$M$, which is easy: just transpose $M$ for one operand. Then, we can
-compute our count matrix like this:
-
-$$C=M^\top M$$
-
-Thus $C_{i,j}$ is the dot product of column $i$ of $M$ and column $j$
-of $M$ - or, the number of users who rated both movies $i$ and $j$.
-
-That was the first half of what we needed for $\textrm{dev}_{j,i}$.
-We still need the other half:
-
-$$\sum_{u \in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i$$
-
-We can apply a similar trick here. Consider first what $\sum_{u \in
-S_{j,i}(\chi)} u_j$ means: It is the sum of only those ratings of
-movie $j$ that were done by a user who also rated movie $i$.
-Likewise, $\sum_{u \in S_{j,i}(\chi)} u_j$ is the sum of only those
-ratings of movie $i$ that were done by a user who also rated movie
-$j$. (Note the symmetry: it's over the same set of users, because
-it's always the users who rated both $i$ and $j$.)
-
-# TODO: Finish that section (mostly translate from code notes)
-
-* Implementation
-
-#+BEGIN_SRC python
-print("foo")
-#+END_SRC
diff --git a/drafts/2018-02-24-ml-rant.org b/drafts/2018-02-24-ml-rant.org
deleted file mode 100644
index cb99d2d..0000000
--- a/drafts/2018-02-24-ml-rant.org
+++ /dev/null
@@ -1,30 +0,0 @@
-#+TITLE: Untitled rant on machine learning hype
-#+AUTHOR: Chris Hodapp
-#+DATE: February 24, 2018
-#+TAGS: technobabble
-
-The present state in machine learning feels like an arms-race for
-techniques that perfomr better, faster, more efficient, or whatever on
-a handful of problems, and not much in terms of killer applications
-that actually need this.
-
-We've all been hearing for a few years about the demand here but
-mostly there seems a dearth of companies that actually have any sort
-of sustained vision for actual uses of machine learning. Plenty exist
-that have grand promises, and plenty of large companies keep trying to
-acquire all talent to further that arms race, but that's about it.
-
-Certainly this will change as machine learning "gets better" but in
-order for a lot of improvement to occur there must be at the same time
-some actual compelling ideas and applications to drive it.
-
-In that sense I don't believe that crrent advancements will be that
-fruitful on their own. We don't need optimizations, we need
-applications.
-
-Of course this is not the first time a entire industry was imagined
-and hyped based on neat technology and little else...
-
-Right now I feel as though the work is going to those who can actually
-articulate the "why" in specific terms, not those with some good
-knowledge primarily on the "how".
diff --git a/posts/exitwp_raw/2008-03-22-hello-world-2.markdown b/exitwp_raw/2008-03-22-hello-world-2.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-22-hello-world-2.markdown
rename to exitwp_raw/2008-03-22-hello-world-2.markdown
diff --git a/posts/exitwp_raw/2008-03-24-workfest-with-christian-appalachian-project-day-one.markdown b/exitwp_raw/2008-03-24-workfest-with-christian-appalachian-project-day-one.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-24-workfest-with-christian-appalachian-project-day-one.markdown
rename to exitwp_raw/2008-03-24-workfest-with-christian-appalachian-project-day-one.markdown
diff --git a/posts/exitwp_raw/2008-03-25-workfest-day-two.markdown b/exitwp_raw/2008-03-25-workfest-day-two.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-25-workfest-day-two.markdown
rename to exitwp_raw/2008-03-25-workfest-day-two.markdown
diff --git a/posts/exitwp_raw/2008-03-26-workfest-day-three.markdown b/exitwp_raw/2008-03-26-workfest-day-three.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-26-workfest-day-three.markdown
rename to exitwp_raw/2008-03-26-workfest-day-three.markdown
diff --git a/posts/exitwp_raw/2008-03-27-workfest-day-four.markdown b/exitwp_raw/2008-03-27-workfest-day-four.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-27-workfest-day-four.markdown
rename to exitwp_raw/2008-03-27-workfest-day-four.markdown
diff --git a/posts/exitwp_raw/2008-03-28-workfest-day-fourfive.markdown b/exitwp_raw/2008-03-28-workfest-day-fourfive.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-28-workfest-day-fourfive.markdown
rename to exitwp_raw/2008-03-28-workfest-day-fourfive.markdown
diff --git a/posts/exitwp_raw/2008-03-31-stuff-i-experienced-at-work-today.markdown b/exitwp_raw/2008-03-31-stuff-i-experienced-at-work-today.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-03-31-stuff-i-experienced-at-work-today.markdown
rename to exitwp_raw/2008-03-31-stuff-i-experienced-at-work-today.markdown
diff --git a/posts/exitwp_raw/2008-04-04-alexander-blu.markdown b/exitwp_raw/2008-04-04-alexander-blu.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-04-04-alexander-blu.markdown
rename to exitwp_raw/2008-04-04-alexander-blu.markdown
diff --git a/posts/exitwp_raw/2008-04-18-post-its-and-scrap-notes-starting-20080403.markdown b/exitwp_raw/2008-04-18-post-its-and-scrap-notes-starting-20080403.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-04-18-post-its-and-scrap-notes-starting-20080403.markdown
rename to exitwp_raw/2008-04-18-post-its-and-scrap-notes-starting-20080403.markdown
diff --git a/posts/exitwp_raw/2008-04-26-more-scrap-notes-starting-2008-04-18.markdown b/exitwp_raw/2008-04-26-more-scrap-notes-starting-2008-04-18.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-04-26-more-scrap-notes-starting-2008-04-18.markdown
rename to exitwp_raw/2008-04-26-more-scrap-notes-starting-2008-04-18.markdown
diff --git a/posts/exitwp_raw/2008-05-05-alix1c-board-edirol-repair.markdown b/exitwp_raw/2008-05-05-alix1c-board-edirol-repair.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-05-05-alix1c-board-edirol-repair.markdown
rename to exitwp_raw/2008-05-05-alix1c-board-edirol-repair.markdown
diff --git a/posts/exitwp_raw/2008-05-05-scrap-notes-20080425ish-20080503.markdown b/exitwp_raw/2008-05-05-scrap-notes-20080425ish-20080503.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-05-05-scrap-notes-20080425ish-20080503.markdown
rename to exitwp_raw/2008-05-05-scrap-notes-20080425ish-20080503.markdown
diff --git a/posts/exitwp_raw/2008-05-17-overdue-scrap-notes-20080501-0516.markdown b/exitwp_raw/2008-05-17-overdue-scrap-notes-20080501-0516.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-05-17-overdue-scrap-notes-20080501-0516.markdown
rename to exitwp_raw/2008-05-17-overdue-scrap-notes-20080501-0516.markdown
diff --git a/posts/exitwp_raw/2008-05-24-20-pages-of-scrap-notes-20080519-0523.markdown b/exitwp_raw/2008-05-24-20-pages-of-scrap-notes-20080519-0523.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-05-24-20-pages-of-scrap-notes-20080519-0523.markdown
rename to exitwp_raw/2008-05-24-20-pages-of-scrap-notes-20080519-0523.markdown
diff --git a/posts/exitwp_raw/2008-05-27-old-tattered-notebook-from-1999-notes.markdown b/exitwp_raw/2008-05-27-old-tattered-notebook-from-1999-notes.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-05-27-old-tattered-notebook-from-1999-notes.markdown
rename to exitwp_raw/2008-05-27-old-tattered-notebook-from-1999-notes.markdown
diff --git a/posts/exitwp_raw/2008-06-01-semi-organized-scrap-notes-20080526-20080601.markdown b/exitwp_raw/2008-06-01-semi-organized-scrap-notes-20080526-20080601.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-06-01-semi-organized-scrap-notes-20080526-20080601.markdown
rename to exitwp_raw/2008-06-01-semi-organized-scrap-notes-20080526-20080601.markdown
diff --git a/posts/exitwp_raw/2008-06-07-notes-20080601-20080607.markdown b/exitwp_raw/2008-06-07-notes-20080601-20080607.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-06-07-notes-20080601-20080607.markdown
rename to exitwp_raw/2008-06-07-notes-20080601-20080607.markdown
diff --git a/posts/exitwp_raw/2008-06-18-20080607-20080617-yay-notes.markdown b/exitwp_raw/2008-06-18-20080607-20080617-yay-notes.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-06-18-20080607-20080617-yay-notes.markdown
rename to exitwp_raw/2008-06-18-20080607-20080617-yay-notes.markdown
diff --git a/posts/exitwp_raw/2008-07-10-20080618-20080709-really-overdue-notes.markdown b/exitwp_raw/2008-07-10-20080618-20080709-really-overdue-notes.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-07-10-20080618-20080709-really-overdue-notes.markdown
rename to exitwp_raw/2008-07-10-20080618-20080709-really-overdue-notes.markdown
diff --git a/posts/exitwp_raw/2008-07-26-20080710-20080726-debris.markdown b/exitwp_raw/2008-07-26-20080710-20080726-debris.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-07-26-20080710-20080726-debris.markdown
rename to exitwp_raw/2008-07-26-20080710-20080726-debris.markdown
diff --git a/posts/exitwp_raw/2008-08-04-20080726-20080803-stuff.markdown b/exitwp_raw/2008-08-04-20080726-20080803-stuff.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-08-04-20080726-20080803-stuff.markdown
rename to exitwp_raw/2008-08-04-20080726-20080803-stuff.markdown
diff --git a/posts/exitwp_raw/2008-08-22-20080804-20080821-more-technical-blah.markdown b/exitwp_raw/2008-08-22-20080804-20080821-more-technical-blah.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-08-22-20080804-20080821-more-technical-blah.markdown
rename to exitwp_raw/2008-08-22-20080804-20080821-more-technical-blah.markdown
diff --git a/posts/exitwp_raw/2008-09-27-20080822-20080926-or-something-like-that.markdown b/exitwp_raw/2008-09-27-20080822-20080926-or-something-like-that.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-09-27-20080822-20080926-or-something-like-that.markdown
rename to exitwp_raw/2008-09-27-20080822-20080926-or-something-like-that.markdown
diff --git a/posts/exitwp_raw/2008-11-09-20080926-20081109-really-overdue-stuff.markdown b/exitwp_raw/2008-11-09-20080926-20081109-really-overdue-stuff.markdown
similarity index 100%
rename from posts/exitwp_raw/2008-11-09-20080926-20081109-really-overdue-stuff.markdown
rename to exitwp_raw/2008-11-09-20080926-20081109-really-overdue-stuff.markdown
diff --git a/posts/exitwp_raw/2009-04-21-20090420.markdown b/exitwp_raw/2009-04-21-20090420.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-21-20090420.markdown
rename to exitwp_raw/2009-04-21-20090420.markdown
diff --git a/posts/exitwp_raw/2009-04-21-20090420b.markdown b/exitwp_raw/2009-04-21-20090420b.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-21-20090420b.markdown
rename to exitwp_raw/2009-04-21-20090420b.markdown
diff --git a/posts/exitwp_raw/2009-04-26-20090426-2.markdown b/exitwp_raw/2009-04-26-20090426-2.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-26-20090426-2.markdown
rename to exitwp_raw/2009-04-26-20090426-2.markdown
diff --git a/posts/exitwp_raw/2009-04-26-20090426.markdown b/exitwp_raw/2009-04-26-20090426.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-26-20090426.markdown
rename to exitwp_raw/2009-04-26-20090426.markdown
diff --git a/posts/exitwp_raw/2009-04-27-20090426-3.markdown b/exitwp_raw/2009-04-27-20090426-3.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-27-20090426-3.markdown
rename to exitwp_raw/2009-04-27-20090426-3.markdown
diff --git a/posts/exitwp_raw/2009-04-28-20090426-4.markdown b/exitwp_raw/2009-04-28-20090426-4.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-04-28-20090426-4.markdown
rename to exitwp_raw/2009-04-28-20090426-4.markdown
diff --git a/posts/exitwp_raw/2009-05-01-20090430.markdown b/exitwp_raw/2009-05-01-20090430.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-05-01-20090430.markdown
rename to exitwp_raw/2009-05-01-20090430.markdown
diff --git a/posts/exitwp_raw/2009-05-02-20090501.markdown b/exitwp_raw/2009-05-02-20090501.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-05-02-20090501.markdown
rename to exitwp_raw/2009-05-02-20090501.markdown
diff --git a/posts/exitwp_raw/2009-05-04-20090503.markdown b/exitwp_raw/2009-05-04-20090503.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-05-04-20090503.markdown
rename to exitwp_raw/2009-05-04-20090503.markdown
diff --git a/posts/exitwp_raw/2009-06-15-2009-06-14-4.markdown b/exitwp_raw/2009-06-15-2009-06-14-4.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-15-2009-06-14-4.markdown
rename to exitwp_raw/2009-06-15-2009-06-14-4.markdown
diff --git a/posts/exitwp_raw/2009-06-15-2009-06-14-5.markdown b/exitwp_raw/2009-06-15-2009-06-14-5.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-15-2009-06-14-5.markdown
rename to exitwp_raw/2009-06-15-2009-06-14-5.markdown
diff --git a/posts/exitwp_raw/2009-06-23-2009-06-15.markdown b/exitwp_raw/2009-06-23-2009-06-15.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-23-2009-06-15.markdown
rename to exitwp_raw/2009-06-23-2009-06-15.markdown
diff --git a/posts/exitwp_raw/2009-06-23-2009-06-16.markdown b/exitwp_raw/2009-06-23-2009-06-16.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-23-2009-06-16.markdown
rename to exitwp_raw/2009-06-23-2009-06-16.markdown
diff --git a/posts/exitwp_raw/2009-06-23-2009-06-18.markdown b/exitwp_raw/2009-06-23-2009-06-18.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-23-2009-06-18.markdown
rename to exitwp_raw/2009-06-23-2009-06-18.markdown
diff --git a/posts/exitwp_raw/2009-06-23-2009-06-19.markdown b/exitwp_raw/2009-06-23-2009-06-19.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-06-23-2009-06-19.markdown
rename to exitwp_raw/2009-06-23-2009-06-19.markdown
diff --git a/posts/exitwp_raw/2009-07-22-2009-07-21.markdown b/exitwp_raw/2009-07-22-2009-07-21.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-07-22-2009-07-21.markdown
rename to exitwp_raw/2009-07-22-2009-07-21.markdown
diff --git a/posts/exitwp_raw/2009-08-14-2009-08-12.markdown b/exitwp_raw/2009-08-14-2009-08-12.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-08-14-2009-08-12.markdown
rename to exitwp_raw/2009-08-14-2009-08-12.markdown
diff --git a/posts/exitwp_raw/2009-10-15-fun-with-nx-stuff.markdown b/exitwp_raw/2009-10-15-fun-with-nx-stuff.markdown
similarity index 100%
rename from posts/exitwp_raw/2009-10-15-fun-with-nx-stuff.markdown
rename to exitwp_raw/2009-10-15-fun-with-nx-stuff.markdown
diff --git a/posts/exitwp_raw/2010-04-03-hacked-infrared-camera-attempt-1.markdown b/exitwp_raw/2010-04-03-hacked-infrared-camera-attempt-1.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-04-03-hacked-infrared-camera-attempt-1.markdown
rename to exitwp_raw/2010-04-03-hacked-infrared-camera-attempt-1.markdown
diff --git a/posts/exitwp_raw/2010-06-09-angry-rants-2010-summer-edition.markdown b/exitwp_raw/2010-06-09-angry-rants-2010-summer-edition.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-06-09-angry-rants-2010-summer-edition.markdown
rename to exitwp_raw/2010-06-09-angry-rants-2010-summer-edition.markdown
diff --git a/posts/exitwp_raw/2010-11-19-venue-222-rooftop.markdown b/exitwp_raw/2010-11-19-venue-222-rooftop.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-11-19-venue-222-rooftop.markdown
rename to exitwp_raw/2010-11-19-venue-222-rooftop.markdown
diff --git a/posts/exitwp_raw/2010-12-05-cyanotypes-first-attempt.markdown b/exitwp_raw/2010-12-05-cyanotypes-first-attempt.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-12-05-cyanotypes-first-attempt.markdown
rename to exitwp_raw/2010-12-05-cyanotypes-first-attempt.markdown
diff --git a/posts/exitwp_raw/2010-12-30-cyanotypes-better-results.markdown b/exitwp_raw/2010-12-30-cyanotypes-better-results.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-12-30-cyanotypes-better-results.markdown
rename to exitwp_raw/2010-12-30-cyanotypes-better-results.markdown
diff --git a/posts/exitwp_raw/2010-12-30-macro-photography-attempts-1-and-2.markdown b/exitwp_raw/2010-12-30-macro-photography-attempts-1-and-2.markdown
similarity index 100%
rename from posts/exitwp_raw/2010-12-30-macro-photography-attempts-1-and-2.markdown
rename to exitwp_raw/2010-12-30-macro-photography-attempts-1-and-2.markdown
diff --git a/posts/exitwp_raw/2011-02-07-blender-from-a-recovering-pov-ray-user.markdown b/exitwp_raw/2011-02-07-blender-from-a-recovering-pov-ray-user.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-02-07-blender-from-a-recovering-pov-ray-user.markdown
rename to exitwp_raw/2011-02-07-blender-from-a-recovering-pov-ray-user.markdown
diff --git a/posts/exitwp_raw/2011-06-10-first-attempt-at-slide-film.markdown b/exitwp_raw/2011-06-10-first-attempt-at-slide-film.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-06-10-first-attempt-at-slide-film.markdown
rename to exitwp_raw/2011-06-10-first-attempt-at-slide-film.markdown
diff --git a/posts/exitwp_raw/2011-06-10-i-can-never-win-that-context-back.markdown b/exitwp_raw/2011-06-10-i-can-never-win-that-context-back.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-06-10-i-can-never-win-that-context-back.markdown
rename to exitwp_raw/2011-06-10-i-can-never-win-that-context-back.markdown
diff --git a/posts/exitwp_raw/2011-06-13-openframeworks-try-1.markdown b/exitwp_raw/2011-06-13-openframeworks-try-1.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-06-13-openframeworks-try-1.markdown
rename to exitwp_raw/2011-06-13-openframeworks-try-1.markdown
diff --git a/posts/exitwp_raw/2011-07-15-my-experiences-with-apache-axis2c.markdown b/exitwp_raw/2011-07-15-my-experiences-with-apache-axis2c.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-07-15-my-experiences-with-apache-axis2c.markdown
rename to exitwp_raw/2011-07-15-my-experiences-with-apache-axis2c.markdown
diff --git a/posts/exitwp_raw/2011-08-27-isolated-pixel-pushing.markdown b/exitwp_raw/2011-08-27-isolated-pixel-pushing.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-08-27-isolated-pixel-pushing.markdown
rename to exitwp_raw/2011-08-27-isolated-pixel-pushing.markdown
diff --git a/posts/exitwp_raw/2011-08-29-context-free.markdown b/exitwp_raw/2011-08-29-context-free.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-08-29-context-free.markdown
rename to exitwp_raw/2011-08-29-context-free.markdown
diff --git a/posts/exitwp_raw/2011-11-13-qmake-hackery-dependencies-external-preprocessing.markdown b/exitwp_raw/2011-11-13-qmake-hackery-dependencies-external-preprocessing.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-11-13-qmake-hackery-dependencies-external-preprocessing.markdown
rename to exitwp_raw/2011-11-13-qmake-hackery-dependencies-external-preprocessing.markdown
diff --git a/posts/exitwp_raw/2011-11-24-obscure-features-of-jpeg.markdown b/exitwp_raw/2011-11-24-obscure-features-of-jpeg.markdown
similarity index 100%
rename from posts/exitwp_raw/2011-11-24-obscure-features-of-jpeg.markdown
rename to exitwp_raw/2011-11-24-obscure-features-of-jpeg.markdown
diff --git a/posts/exitwp_raw/2012-08-16-some-thoughts.markdown b/exitwp_raw/2012-08-16-some-thoughts.markdown
similarity index 100%
rename from posts/exitwp_raw/2012-08-16-some-thoughts.markdown
rename to exitwp_raw/2012-08-16-some-thoughts.markdown
diff --git a/hugo_blag/.gitignore b/hugo_blag/.gitignore
new file mode 100644
index 0000000..d6e7aa6
--- /dev/null
+++ b/hugo_blag/.gitignore
@@ -0,0 +1,33 @@
+
+# Created by https://www.gitignore.io/api/macos
+# Edit at https://www.gitignore.io/?templates=macos
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# End of https://www.gitignore.io/api/macos
diff --git a/hugo_blag/archetypes/default.md b/hugo_blag/archetypes/default.md
new file mode 100644
index 0000000..00e77bd
--- /dev/null
+++ b/hugo_blag/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/hugo_blag/config.toml b/hugo_blag/config.toml
new file mode 100644
index 0000000..e22a245
--- /dev/null
+++ b/hugo_blag/config.toml
@@ -0,0 +1,4 @@
+baseURL = "http://example.org/"
+languageCode = "en-us"
+title = "My New Hugo Site"
+theme = "indigo"
diff --git a/posts/2009-10-15-fun-with-nx-stuff.md b/hugo_blag/content/posts/2009-10-15-fun-with-nx-stuff.md
similarity index 99%
rename from posts/2009-10-15-fun-with-nx-stuff.md
rename to hugo_blag/content/posts/2009-10-15-fun-with-nx-stuff.md
index 0bad8fe..6ec3415 100644
--- a/posts/2009-10-15-fun-with-nx-stuff.md
+++ b/hugo_blag/content/posts/2009-10-15-fun-with-nx-stuff.md
@@ -2,7 +2,8 @@
title: Fun with NX stuff
date: October 15, 2009
author: Chris Hodapp
-tags: Technobabble
+tags:
+- Technobabble
---
So, I was trying out various NX servers because I'd had very good luck
diff --git a/posts/2010-07-04-processing-dla-quadtrees.md b/hugo_blag/content/posts/2010-07-04-processing-dla-quadtrees.md
similarity index 99%
rename from posts/2010-07-04-processing-dla-quadtrees.md
rename to hugo_blag/content/posts/2010-07-04-processing-dla-quadtrees.md
index 4509f89..0a63964 100644
--- a/posts/2010-07-04-processing-dla-quadtrees.md
+++ b/hugo_blag/content/posts/2010-07-04-processing-dla-quadtrees.md
@@ -2,7 +2,8 @@
title: "Processing: DLA, quadtrees"
date: July 4th, 2010
author: Chris Hodapp
-tags: processing
+tags:
+- processing
---
I first dabbled with
diff --git a/posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md b/hugo_blag/content/posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md
similarity index 99%
rename from posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md
rename to hugo_blag/content/posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md
index 212ea38..acb96c0 100644
--- a/posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md
+++ b/hugo_blag/content/posts/2011-02-07-blender-from-a-recovering-pov-ray-user.md
@@ -2,7 +2,9 @@
title: Blender from a recovering POV-Ray user
date: February 7, 2011
author: Chris Hodapp
-tags: CG, blender
+tags:
+- CG
+- blender
---
This is about the tenth time I've tried to learn
diff --git a/posts/2011-06-10-i-can-never-win-that-context-back.md b/hugo_blag/content/posts/2011-06-10-i-can-never-win-that-context-back.md
similarity index 98%
rename from posts/2011-06-10-i-can-never-win-that-context-back.md
rename to hugo_blag/content/posts/2011-06-10-i-can-never-win-that-context-back.md
index 41f6668..4307f54 100644
--- a/posts/2011-06-10-i-can-never-win-that-context-back.md
+++ b/hugo_blag/content/posts/2011-06-10-i-can-never-win-that-context-back.md
@@ -2,7 +2,9 @@
title: I can never win that context back
date: June 10, 2011
author: Chris Hodapp
-tags: Journal, rant
+tags:
+- Journal
+- rant
---
I stumbled upon this:
diff --git a/posts/2011-06-13-openframeworks-try-1.md b/hugo_blag/content/posts/2011-06-13-openframeworks-try-1.md
similarity index 99%
rename from posts/2011-06-13-openframeworks-try-1.md
rename to hugo_blag/content/posts/2011-06-13-openframeworks-try-1.md
index ebb769e..ee6841d 100644
--- a/posts/2011-06-13-openframeworks-try-1.md
+++ b/hugo_blag/content/posts/2011-06-13-openframeworks-try-1.md
@@ -2,7 +2,9 @@
title: OpenFrameworks, try 1...
date: June 13, 2011
author: Chris Hodapp
-tags: Technobabble, rant
+tags:
+- Technobabble
+- rant
---
My attempts at doing things with
diff --git a/posts/2011-07-15-my-experiences-with-apache-axis2c.md b/hugo_blag/content/posts/2011-07-15-my-experiences-with-apache-axis2c.md
similarity index 99%
rename from posts/2011-07-15-my-experiences-with-apache-axis2c.md
rename to hugo_blag/content/posts/2011-07-15-my-experiences-with-apache-axis2c.md
index 134d6cd..cea5954 100644
--- a/posts/2011-07-15-my-experiences-with-apache-axis2c.md
+++ b/hugo_blag/content/posts/2011-07-15-my-experiences-with-apache-axis2c.md
@@ -1,7 +1,10 @@
---
title: My experiences with Apache Axis2/C
date: July 15, 2011
-tags: Project, rant, Technobabble
+tags:
+- Project
+- rant
+- Technobabble
author: Chris Hodapp
---
diff --git a/posts/2011-08-27-isolated-pixel-pushing.md b/hugo_blag/content/posts/2011-08-27-isolated-pixel-pushing.md
similarity index 99%
rename from posts/2011-08-27-isolated-pixel-pushing.md
rename to hugo_blag/content/posts/2011-08-27-isolated-pixel-pushing.md
index 3da99db..8c69af5 100644
--- a/posts/2011-08-27-isolated-pixel-pushing.md
+++ b/hugo_blag/content/posts/2011-08-27-isolated-pixel-pushing.md
@@ -1,8 +1,11 @@
---
title: Isolated-pixel-pushing
-tags: CG, Project, Technobabble
date: August 27, 2011
author: Chris Hodapp
+tags:
+- CG
+- Project
+- Technobabble
---
After finally deciding to look around for some projects on GitHub, I
diff --git a/posts/2011-08-29-context-free.md b/hugo_blag/content/posts/2011-08-29-context-free.md
similarity index 99%
rename from posts/2011-08-29-context-free.md
rename to hugo_blag/content/posts/2011-08-29-context-free.md
index 8f06b91..2169dec 100644
--- a/posts/2011-08-29-context-free.md
+++ b/hugo_blag/content/posts/2011-08-29-context-free.md
@@ -1,8 +1,11 @@
---
title: Context Free
date: August 29, 2011
-tags: CG, Project, Technobabble
author: Chris Hodapp
+tags:
+- CG
+- Project
+- Technobabble
---
My [last post](./2011-08-27-isolated-pixel-pushing.html) mentioned a
diff --git a/posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md b/hugo_blag/content/posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md
similarity index 99%
rename from posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md
rename to hugo_blag/content/posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md
index 4c28675..df8564c 100644
--- a/posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md
+++ b/hugo_blag/content/posts/2011-11-13-qmake-hackery-dependencies-external-preprocessing.md
@@ -1,8 +1,10 @@
---
title: "QMake hackery: Dependencies & external preprocessing"
-tags: Project, Technobabble
date: November 13, 2011
author: Chris Hodapp
+tags:
+- Project
+- Technobabble
---
* TODO: Put the code here into a Gist?
diff --git a/posts/2011-11-24-obscure-features-of-jpeg.md b/hugo_blag/content/posts/2011-11-24-obscure-features-of-jpeg.md
similarity index 99%
rename from posts/2011-11-24-obscure-features-of-jpeg.md
rename to hugo_blag/content/posts/2011-11-24-obscure-features-of-jpeg.md
index ba8a674..729dfb6 100644
--- a/posts/2011-11-24-obscure-features-of-jpeg.md
+++ b/hugo_blag/content/posts/2011-11-24-obscure-features-of-jpeg.md
@@ -2,7 +2,10 @@
title: Obscure features of JPEG
author: Chris Hodapp
date: November 24, 2011
-tags: Technobabble, jpeg, image_compression
+tags:
+- Technobabble
+- jpeg
+- image_compression
---
*(This is a modified version of what I wrote up at work when I saw
diff --git a/posts/2012-08-16-some-thoughts.md b/hugo_blag/content/posts/2012-08-16-some-thoughts.md
similarity index 99%
rename from posts/2012-08-16-some-thoughts.md
rename to hugo_blag/content/posts/2012-08-16-some-thoughts.md
index 25aaf4a..370b468 100644
--- a/posts/2012-08-16-some-thoughts.md
+++ b/hugo_blag/content/posts/2012-08-16-some-thoughts.md
@@ -1,10 +1,12 @@
---
layout: post
title: Thoughts on tools, design, and feedback loops
-tags: rant, Technobabble
status: publish
type: post
published: true
+tags:
+- rant
+- Technobabble
---
I just watched [Inventing on Principle](https://vimeo.com/36579366) from Bret Victor and found this entire talk incredibly interesting. Chris Granger's [post](http://www.chris-granger.com/2012/04/12/light-table---a-new-ide-concept/) on Light Table led me to this, and shortly after, I found the redesigned [Khan Academy CS course](http://ejohn.org/blog/introducing-khan-cs) which this inspired. Bret touched on something that basically anyone who's attempted to design anything has implicitly understood: **This feedback loop is the most essential part of the process.**
diff --git a/posts/2014-02-06-hello-world.md b/hugo_blag/content/posts/2014-02-06-hello-world.md
similarity index 100%
rename from posts/2014-02-06-hello-world.md
rename to hugo_blag/content/posts/2014-02-06-hello-world.md
diff --git a/posts/2015-06-23-stupidity-catalogue-genericstruct.md b/hugo_blag/content/posts/2015-06-23-stupidity-catalogue-genericstruct.md
similarity index 99%
rename from posts/2015-06-23-stupidity-catalogue-genericstruct.md
rename to hugo_blag/content/posts/2015-06-23-stupidity-catalogue-genericstruct.md
index 0aa7d1d..5405564 100644
--- a/posts/2015-06-23-stupidity-catalogue-genericstruct.md
+++ b/hugo_blag/content/posts/2015-06-23-stupidity-catalogue-genericstruct.md
@@ -2,7 +2,9 @@
title: "Catalogue of My Stupidity: My Haskell 'GenericStruct' Nonsense"
author: Chris Hodapp
date: June 23, 2015
-tags: stupidity, Technobabble
+tags:
+- stupidity
+- Technobabble
---
*(A note: I took these notes during my time at Urbanalta, intending
diff --git a/posts/2016-09-23-ion-crosspost.md b/hugo_blag/content/posts/2016-09-23-ion-crosspost.md
similarity index 90%
rename from posts/2016-09-23-ion-crosspost.md
rename to hugo_blag/content/posts/2016-09-23-ion-crosspost.md
index b5ff108..9bd9149 100644
--- a/posts/2016-09-23-ion-crosspost.md
+++ b/hugo_blag/content/posts/2016-09-23-ion-crosspost.md
@@ -2,7 +2,9 @@
title: Post at HaskellEmbedded - Introducing Ion
author: Chris Hodapp
date: September 23, 2016
-tags: haskell, haskellembedded
+tags:
+- haskell
+- haskellembedded
---
Just a quick note: I finally released my Ion library (it was long
diff --git a/posts/2016-09-25-pi-pan-tilt-1.md b/hugo_blag/content/posts/2016-09-25-pi-pan-tilt-1.md
similarity index 99%
rename from posts/2016-09-25-pi-pan-tilt-1.md
rename to hugo_blag/content/posts/2016-09-25-pi-pan-tilt-1.md
index 84a439f..81b902b 100644
--- a/posts/2016-09-25-pi-pan-tilt-1.md
+++ b/hugo_blag/content/posts/2016-09-25-pi-pan-tilt-1.md
@@ -2,7 +2,10 @@
title: "Pi pan-tilt for huge images, part 1: introduction"
author: Chris Hodapp
date: September 23, 2016
-tags: photography, electronics, raspberrypi
+tags:
+- photography
+- electronics
+- raspberrypi
---
Earlier this year I was turning around ideas in my head - perhaps
diff --git a/posts/2016-10-04-pi-pan-tilt-2.md b/hugo_blag/content/posts/2016-10-04-pi-pan-tilt-2.md
similarity index 99%
rename from posts/2016-10-04-pi-pan-tilt-2.md
rename to hugo_blag/content/posts/2016-10-04-pi-pan-tilt-2.md
index 7233ad3..0944f13 100644
--- a/posts/2016-10-04-pi-pan-tilt-2.md
+++ b/hugo_blag/content/posts/2016-10-04-pi-pan-tilt-2.md
@@ -2,7 +2,10 @@
title: "Pi pan-tilt for huge images, part 2: Hugin & PanoTools integration"
author: Chris Hodapp
date: October 4, 2016
-tags: photography, electronics, raspberrypi
+tags:
+- photography
+- electronics
+- raspberrypi
---
In my [last post](./2016-09-25-pi-pan-tilt-1.html) I introduced some
diff --git a/posts/2016-10-12-pi-pan-tilt-3.md b/hugo_blag/content/posts/2016-10-12-pi-pan-tilt-3.md
similarity index 99%
rename from posts/2016-10-12-pi-pan-tilt-3.md
rename to hugo_blag/content/posts/2016-10-12-pi-pan-tilt-3.md
index a12fd9c..4f9341b 100644
--- a/posts/2016-10-12-pi-pan-tilt-3.md
+++ b/hugo_blag/content/posts/2016-10-12-pi-pan-tilt-3.md
@@ -2,7 +2,10 @@
title: "Pi pan-tilt for huge images, part 3: ArduCam & raw images"
author: Chris Hodapp
date: October 12, 2016
-tags: photography, electronics, raspberrypi
+tags:
+- photography
+- electronics
+- raspberrypi
---
This is the third part in this series, continuing on from
diff --git a/posts/2016-12-13-cincyfp-r-crosspost.md b/hugo_blag/content/posts/2016-12-13-cincyfp-r-crosspost.md
similarity index 97%
rename from posts/2016-12-13-cincyfp-r-crosspost.md
rename to hugo_blag/content/posts/2016-12-13-cincyfp-r-crosspost.md
index df6c75f..aec4339 100644
--- a/posts/2016-12-13-cincyfp-r-crosspost.md
+++ b/hugo_blag/content/posts/2016-12-13-cincyfp-r-crosspost.md
@@ -2,7 +2,8 @@
title: "CincyFP presentation: R & Feature Transformation"
author: Chris Hodapp
date: December 13, 2016
-tags: r, cincyfp
+tags:
+- r, cincyfp
---
Another cross-post (sort of): The slides and notebooks from my
diff --git a/posts/2018-03-09-python-asyncio.org b/hugo_blag/content/posts/2018-03-09-python-asyncio.org
similarity index 99%
rename from posts/2018-03-09-python-asyncio.org
rename to hugo_blag/content/posts/2018-03-09-python-asyncio.org
index 85afd1b..5f0ab0b 100644
--- a/posts/2018-03-09-python-asyncio.org
+++ b/hugo_blag/content/posts/2018-03-09-python-asyncio.org
@@ -2,7 +2,8 @@
title: Some Python asyncio disambiguation
author: Chris Hodapp
date: March 9, 2018
-tags: technobabble
+tags:
+- technobabble
---
# TODO: Generators? Is it accurate that prior to all this, coroutines
diff --git a/posts/2018-04-08-recommender-systems-1.md b/hugo_blag/content/posts/2018-04-08-recommender-systems-1.md
similarity index 99%
rename from posts/2018-04-08-recommender-systems-1.md
rename to hugo_blag/content/posts/2018-04-08-recommender-systems-1.md
index 2e41da4..f912b7b 100644
--- a/posts/2018-04-08-recommender-systems-1.md
+++ b/hugo_blag/content/posts/2018-04-08-recommender-systems-1.md
@@ -2,7 +2,11 @@
title: "Recommender Systems, Part 1 (Collaborative Filtering)"
author: Chris Hodapp
date: May 6, 2018
-tags: machine_learning, technobabble, notebook, literate
+tags:
+- machine_learning
+- technobabble
+- notebook
+- literate
---
This is an exported version of the Jupyter notebook available at my
@@ -845,18 +849,22 @@ eyes glaze over, you can probably just skip this section.
Let $U$ be the utility matrix. Let $M$ be a binary matrix for which $M_{i,j}=1$ if user $i$ rated movie $j$, otherwise 0. Compute the model's matrices with:
+
$$
\begin{align}
C & =M^\top M \\
D &= \left(M^\top U - (M^\top U)^\top\right) /\ \textrm{max}(1, M^\top M)
\end{align}
$$
+
where $/$ is Hadamard (i.e. elementwise) division, and $\textrm{max}$ is elementwise maximum with 1. Then, the below gives the prediction for how user $u$ will rate movie $j$:
+
$D_j$ and $C_j$ are row $j$ of $D$ and $C$, respectively. $M_u$ and $U_u$ are column $u$ of $M$ and $U$, respectively. $\odot$ is elementwise multiplication.
@@ -878,6 +886,7 @@ The paper gaves a formal but rather terse definition below of the
average deviation of item $i$ with respect to item $j$, and I
then separate out the summation a little:
+
where:
@@ -922,7 +932,9 @@ combination of $i$ and $j$ - that is, we need a dot product between
every single pair of columns from $M$. This is incidentally just
matrix multiplication:
+
$$C=M^\top M$$
+
since $C_{i,j}=card(S_{j,i}(\chi))$ is the dot product of row $i$ of $M^T$ - which is column
$i$ of $M$ - and column $j$ of $M$.
@@ -930,7 +942,9 @@ $i$ of $M$ - and column $j$ of $M$.
That was the first half of what we needed for $\textrm{dev}_{j,i}$.
We still need the other half:
+
We can apply a similar trick here. Consider first what $\sum_{u \in
S_{j,i}(\chi)} u_j$ means: It is the sum of only those ratings of
@@ -946,18 +960,24 @@ of movie $i$, but we want only the sum of the ratings done by a user
who also rated movie $j$. Like before, the dot product of $U_i$ and
$M_j$ (consider the definition of $M_j$) computes this, and so:
+
and as with $C$, since we want every pairwise dot product, this summation just
equals element $(i,j)$ of $M^\top U$. The other half of the summation,
$\sum_{u \in S_{j,i}(\chi)} u_i$, equals $M_j \cdot U_i$, which is just
the transpose of this matrix:
+
where $/$ is Hadamard (i.e. elementwise) division, and $D_{j,i} = \textrm{dev}_{j,i}$.
@@ -967,21 +987,27 @@ By convention and to avoid division by zero, we treat the case where the denomin
Finally, the paper gives the formula to predict how user $u$ will rate movie $j$, and I write this in terms of our matrices:
+
where $R_j = \{i | i \in S(u), i \ne j, card(S_{j,i}(\chi)) > 0\}$, and $S(u)$ is the set of movies that user $u$ has rated. To unpack the paper's somewhat dense notation, the summation is over every movie $i$ that user $u$ rated and that at least one other user rated, except movie $j$.
We can apply the usual trick yet one more time with a little effort. The summation already goes across a row of $U$ and $D$ (that is, user $u$ is held constant), but covers only certain elements. This is equivalent to a dot product with a mask representing $R_j$. $M_u$, row $u$ of the mask, already represents $S(u)$, and $R_j$ is just $S(u)$ with some more elements removed - which we can mostly represent with $M_u \odot (C_j > 0)$ where $\odot$ is elementwise product (i.e. Hadamard), $C_j$ is column/row $j$ of $C$ (it's symmetric), and where we abuse some notation to say that $C_j > 0$ is a binary vector. Likewise, $D_j$ is row $j$ of $D$. The one correction still required is that we subtract $u_j$ to cover for the $i \ne j$ part of $R_j$. To abuse some more notation:
+
where $\bar{u}$ is user $u$'s average rating. This doesn't change the formula much; we can compute $\bar{u}$ simply as column means of $U$.
@@ -1145,13 +1171,17 @@ Matrices $Q$ and $P$ have some other neat properties too. Note that $Q$ has $m$
In that sense, $P$ and $Q$ give us a model in which ratings are an interaction between properties of a movie, and a user's preferences. If we're using $U=P^\top Q$ as our model, then every element of $U$ is just the dot product of the feature vectors of the respective movie and user. That is, if $p_u$ is column $u$ of $P$ and $q_i$ is column $i$ of $Q$:
+
$$\hat{r}_{ui}=q_i^\top p_u$$
+
However, some things aren't really interactions. Some movies are just (per the ratings) overall better or worse. Some users just tend to rate everything higher or lower. We need some sort of bias built into the model to comprehend this.
Let's call $b_i$ the bias for movie $i$, $b_u$ the bias for user $u$, and $\mu$ the overall average rating. We can just add these into the model:
+
$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$
+
This is the basic model we'll implement, and the same one described in the references at the top.
@@ -1159,7 +1189,9 @@ This is the basic model we'll implement, and the same one described in the refer
More formally, the prediction model is:
+
$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$
+
where:
@@ -1179,6 +1211,7 @@ $$E=\sum_{r_{ui} \in R_{\textrm{train}}} \left(r_{ui} - \hat{r}_{ui}\right)^2 +
This error function is easily differentiable with respect to model parameters $b_i$, $b_u$, $q_i$, and $p_u$, so a normal approach for minimizing it is gradient-descent. Finding gradient with respect to $b_i$ is straightforward:
+
Gradient with respect to $b_u$ is identical form to $b_i$, and gradient with respect to $q_i$ is identical form to $p_u$, except that the variables switch places. The full gradients then have the standard form for gradient descent, i.e. a summation of a gradient term for each individual data point, so they turn easily into update rules for each parameter (which match the ones in the Surprise link) after absorbing the leading 2 into learning rate $\gamma$ and separating out the summation over each data point. That's given below, with $e_{ui}=r_{ui} - \hat{r}_{ui}$:
+
The code below is a direct implementation of this by simply iteratively applying the above equations for each data point - in other words, stochastic gradient descent.
diff --git a/posts/2018-04-13-opinions-go.org b/hugo_blag/content/posts/2018-04-13-opinions-go.org
similarity index 99%
rename from posts/2018-04-13-opinions-go.org
rename to hugo_blag/content/posts/2018-04-13-opinions-go.org
index 3f1d1d6..e8d8f88 100644
--- a/posts/2018-04-13-opinions-go.org
+++ b/hugo_blag/content/posts/2018-04-13-opinions-go.org
@@ -2,7 +2,10 @@
title: "Go programming language: my totally unprompted opinions"
author: Chris Hodapp
date: April 13, 2018
-tags: technobabble, go, golang
+tags:
+- technobabble
+- go
+- golang
---
# TODO: Link to my asyncio post
diff --git a/hugo_blag/notes.txt b/hugo_blag/notes.txt
new file mode 100644
index 0000000..4c5c6f9
--- /dev/null
+++ b/hugo_blag/notes.txt
@@ -0,0 +1,5 @@
+- themes/indigo is from https://github.com/AngeloStavrow/indigo.git
+ circa 2020-01-31. I didn't feel like forking the repo to my github
+ in order to modify some things, so I just cloned it. Yeah, I know
+ that is bad practice, but I needed MathJax working and I'll
+ probably just end up messing around with the theme anyway.
diff --git a/hugo_blag/themes/indigo/CHANGELOG.md b/hugo_blag/themes/indigo/CHANGELOG.md
new file mode 100644
index 0000000..61d7c25
--- /dev/null
+++ b/hugo_blag/themes/indigo/CHANGELOG.md
@@ -0,0 +1,138 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+### Added
+- Added entrypoints config section as described in [#73](https://github.com/AngeloStavrow/indigo/issues/73)
+
+## [1.3.2] - 2019-10-17
+
+### Added
+
+- A _Support and Maintenance_ section has been added to the README, per [#64](https://github.com/AngeloStavrow/indigo/issues/64)
+
+### Changed
+
+- Updated the Hugo minimum version to 0.58.3
+
+## [1.3.1] - 2019-10-03
+
+### Fixed
+
+- Taxonomy-based lists (e.g., lists of tags or categories) now only show posts within the selected taxonomy per [#56](https://github.com/AngeloStavrow/indigo/issues/56)
+
+## [1.3.0] - 2019-09-30
+
+### Added
+
+- Adds a `mainSection` configuration parameter to set preferred content name per [#56](https://github.com/AngeloStavrow/indigo/issues/56)
+
+### Changed
+
+- Updated **CONTRIBUTING.md** to reflect new contributions process per [#28](https://github.com/AngeloStavrow/indigo/issues/28)
+- Bumped the minimum Hugo version requirement to 0.58 to account for [#52](https://github.com/AngeloStavrow/indigo/issues/52)
+
+### Fixed
+
+- As part of an audit of the theme's code per [#57](https://github.com/AngeloStavrow/indigo/issues/57)
+ - Removed forward slashes (`/`) in URLs for better compatibility with sites that don't live at a domain root
+ - Fixed the location from which the theme's fonts are loaded
+
+### Removed
+
+- GitHub issue and pull request templates removed from the repo per [#28](https://github.com/AngeloStavrow/indigo/issues/28)
+
+## [1.2.0] - 2019-08-31
+
+### Added
+
+- You can now import custom CSS from `/static/css/custom.css` per [#48](https://github.com/AngeloStavrow/indigo/issues/48)
+
+## [1.1.0] - 2019-08-28
+
+### Changed
+
+- Metadata now shows page title and description per [#50](https://github.com/AngeloStavrow/indigo/issues/50), thanks to [@infominer33](https://github.com/infominer33)!
+
+### Fixed
+
+- Breaking changes in article lists introduced in Hugo 0.57 per [#52](https://github.com/AngeloStavrow/indigo/issues/52)
+- Newer/Older links in article footers now work as expected in Hugo 0.50 and later per [#54](https://github.com/AngeloStavrow/indigo/issues/54)
+
+## [1.0.6] - 2019-06-24
+
+### Fixed
+
+- Fixed some copy/paste errors in CSS `font-family` definitions per [#38](https://github.com/AngeloStavrow/indigo/issues/38)
+- Fixed `
+ {{ end }}
+
+```
+
+[fira-sans]: https://bboxtype.com/typefaces/FiraSans/#!layout=specimen
+[charter]: https://practicaltypography.com/charter.html
+[fira-code]: https://github.com/tonsky/FiraCode
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/exampleSite/content/post/introducing-indigo.md b/hugo_blag/themes/indigo/exampleSite/content/post/introducing-indigo.md
new file mode 100644
index 0000000..471206e
--- /dev/null
+++ b/hugo_blag/themes/indigo/exampleSite/content/post/introducing-indigo.md
@@ -0,0 +1,85 @@
+---
+title: "Introducing Indigo"
+date: 2018-10-01T09:00:00-04:00
+draft: false
+categories: ["meta"]
+tags: ["typography", "indieweb"]
+---
+
+Indigo is a lightweight theme for [Hugo][hugo] with [IndieWeb][indieweb] features baked in. It's great for longer-form blogging, placing its focus on distraction-free reading and beautiful typefaces.
+
+
+
+## IndieWeb features
+
+A key feature of this theme is its support for IndieWeb features, including microformats and web sign-in.
+
+### Web sign-in
+
+Indigo handles web sign-in by setting the `authorization_endpoint` to [IndieAuth.com][indieauth]:
+
+> IndieAuth.com is part of the [IndieWeb movement][why] to take back control of your online identity. Instead of logging in to websites as "you on Twitter" or "you on Facebook", **you should be able to log in as just "you"**.
+
+This allows you to sign in to certain services simply by providing your site's domain name.
+
+### microformats
+
+Indigo marks up content with appropriate [microformats][mf2], which provides semantic definitions of your content to other software. Posts are marked up with `h-entry` classes, like `p-name`, `p-author`, and `e-content`, while the author bio is marked up with `h-card` classes, including `u-photo`, `u-url`, `p-locality`/`p-country-name`, and `p-note`.
+
+## Open typefaces
+
+Indigo uses a combination of three beautiful typefaces to render your words.
+
+- [Fira Sans][fira-sans] for heading text
+- [Charter][charter] for body text
+- [Fira Code][fira-code] for monospaced text
+
+Licenses are included in the theme’s `static/fonts` folder.
+
+Have a look at a couple of paragraphs of placeholder text using the wonderfully readable Charter:
+
+---
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eleifend nulla ac elit venenatis posuere. Sed id aliquam arcu, et malesuada lectus. **Donec et dignissim massa. Pellentesque in laoreet nibh. Pellentesque sagittis, libero quis vestibulum aliquam, ante risus imperdiet magna, at ornare dolor libero quis nunc.** Donec quis tempus purus. Cras ornare magna ac facilisis tristique. Nulla aliquet purus quis massa rutrum interdum ac at magna. Cras fermentum magna id orci viverra facilisis. Ut vitae lobortis nisl.
+
+Sed interdum tincidunt venenatis. Sed hendrerit dictum nisi, at dignissim orci consectetur quis. Aenean sed nisl et nisl placerat euismod. Proin hendrerit nulla at rhoncus molestie. Cras eu gravida erat, vestibulum ornare diam. _Praesent nunc arcu, ultrices et risus sed, dictum mattis dui. Maecenas vitae nisl at massa porta pellentesque_. Donec eget urna eget nisl imperdiet scelerisque eget a mauris. Nam fringilla sem id vehicula rhoncus. Curabitur tincidunt massa mauris, facilisis placerat odio eleifend sit amet. Etiam nec vehicula sapien, at dignissim risus. Sed elit erat, lacinia eu vulputate at, semper eu nulla. Quisque a urna sed nulla viverra egestas nec quis nunc. Curabitur iaculis elit in orci sollicitudin suscipit.
+
+---
+
+And code snippets look great with Fira Code:
+
+```
+
+
+ {{ if .Title }}
+
+ {{ end }}
+
+```
+
+## Contributions welcome
+
+Indigo is distributed under the [MIT license][license], so feel free to fork the repository and make it your own! If you've got ideas on how to improve the theme, let me know by [opening an issue in GitHub](issue) — but please be sure to review the documentation on [contributing][contributing].
+
+[hugo]: https://gohugo.io
+[indieweb]: https://indieweb.org
+[indieauth]: https://indieauth.com
+[why]: https://indieweb.org/why
+[mf2]: http://microformats.org
+[fira-sans]: https://bboxtype.com/typefaces/FiraSans/#!layout=specimen
+[charter]: https://practicaltypography.com/charter.html
+[fira-code]: https://github.com/tonsky/FiraCode
+[license]: https://github.com/AngeloStavrow/indigo/blob/master/LICENSE.md
+[issue]: https://github.com/AngeloStavrow/indigo/issues
+[contributing]: https://github.com/AngeloStavrow/indigo/blob/master/CONTRIBUTING.md
diff --git a/hugo_blag/themes/indigo/images/screenshot.png b/hugo_blag/themes/indigo/images/screenshot.png
new file mode 100644
index 0000000..22a96ae
Binary files /dev/null and b/hugo_blag/themes/indigo/images/screenshot.png differ
diff --git a/hugo_blag/themes/indigo/images/tn.png b/hugo_blag/themes/indigo/images/tn.png
new file mode 100644
index 0000000..52af173
Binary files /dev/null and b/hugo_blag/themes/indigo/images/tn.png differ
diff --git a/hugo_blag/themes/indigo/layouts/404.html b/hugo_blag/themes/indigo/layouts/404.html
new file mode 100644
index 0000000..248651d
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/404.html
@@ -0,0 +1,20 @@
+
+
+{{ partial "head.html" . }}
+
+
+
+
+
+ {{ partial "pagenav.html" . }}
+
404
+
+
+
+
Whoops.
+
+ The page you were looking for doesn't exist. Would you like to go to the home page?
+
+ {{ end }}
+
+
+ {{ partial "mathjax_support.html" . }}
+
+
+
diff --git a/hugo_blag/themes/indigo/layouts/partials/head.html b/hugo_blag/themes/indigo/layouts/partials/head.html
new file mode 100644
index 0000000..7c07bcd
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/head.html
@@ -0,0 +1,36 @@
+
+
+
+ {{ .Title }} | {{ .Site.Title }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ with .Site.Params.IndieWeb.EmailAddress }}{{ end }}
+ {{ with .Site.Params.IndieWeb.GitHubUser }}{{ end }}
+ {{ with .Site.Params.IndieWeb.TwitterUser }}{{ end }}
+ {{ with .Site.Params.IndieWeb.MicroBlogUser }}{{ end }}
+
+
+
+ {{ with .Site.Params.endpoints.Micropub }}
+ {{ end }}
+ {{ with .Site.Params.endpoints.Microsub }}
+ {{ end }}
+ {{ with .Site.Params.endpoints.Webmention}}
+ {{ end }}
+
+
+
+ {{ if (fileExists "static/css/custom.css") -}}
+
+ {{- end }}
+
+
diff --git a/hugo_blag/themes/indigo/layouts/partials/header.html b/hugo_blag/themes/indigo/layouts/partials/header.html
new file mode 100644
index 0000000..a9b7a2e
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/header.html
@@ -0,0 +1,20 @@
+
+
+{{ partial "head.html" . }}
+
+
+
+
+
+ {{ partial "pagenav.html" . }}
+ {{ if not .IsPage }}
+
+
{{ .Site.Title }}
+ {{ with .Site.Params.subtitle }}
+
+ {{ . }}
+
+ {{ end }}
+
+ {{ end }}
+
diff --git a/hugo_blag/themes/indigo/layouts/partials/mathjax_support.html b/hugo_blag/themes/indigo/layouts/partials/mathjax_support.html
new file mode 100644
index 0000000..adeec5b
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/mathjax_support.html
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/hugo_blag/themes/indigo/layouts/partials/pagenav.html b/hugo_blag/themes/indigo/layouts/partials/pagenav.html
new file mode 100644
index 0000000..7c90183
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/pagenav.html
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/layouts/partials/pagination.html b/hugo_blag/themes/indigo/layouts/partials/pagination.html
new file mode 100644
index 0000000..8601331
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/pagination.html
@@ -0,0 +1,23 @@
+
diff --git a/hugo_blag/themes/indigo/layouts/partials/social.html b/hugo_blag/themes/indigo/layouts/partials/social.html
new file mode 100644
index 0000000..f43d1f5
--- /dev/null
+++ b/hugo_blag/themes/indigo/layouts/partials/social.html
@@ -0,0 +1,74 @@
+
diff --git a/hugo_blag/themes/indigo/static/android-chrome-192x192.png b/hugo_blag/themes/indigo/static/android-chrome-192x192.png
new file mode 100644
index 0000000..c8da0ee
Binary files /dev/null and b/hugo_blag/themes/indigo/static/android-chrome-192x192.png differ
diff --git a/hugo_blag/themes/indigo/static/android-chrome-512x512.png b/hugo_blag/themes/indigo/static/android-chrome-512x512.png
new file mode 100644
index 0000000..2b42b5f
Binary files /dev/null and b/hugo_blag/themes/indigo/static/android-chrome-512x512.png differ
diff --git a/hugo_blag/themes/indigo/static/apple-touch-icon.png b/hugo_blag/themes/indigo/static/apple-touch-icon.png
new file mode 100644
index 0000000..50ef0d2
Binary files /dev/null and b/hugo_blag/themes/indigo/static/apple-touch-icon.png differ
diff --git a/hugo_blag/themes/indigo/static/browserconfig.xml b/hugo_blag/themes/indigo/static/browserconfig.xml
new file mode 100644
index 0000000..5aecc91
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #00aba9
+
+
+
diff --git a/hugo_blag/themes/indigo/static/css/fonts.css b/hugo_blag/themes/indigo/static/css/fonts.css
new file mode 100644
index 0000000..ad1f5c4
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/css/fonts.css
@@ -0,0 +1,72 @@
+@font-face {
+ font-family: 'Fira Code';
+ src: url('../fonts/FiraCode-Regular.eot');
+ src: url('../fonts/FiraCode-Regular.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/FiraCode-Regular.woff2') format('woff2'),
+ url('../fonts/FiraCode-Regular.woff') format('woff'),
+ url('../fonts/FiraCode-Regular.ttf') format('truetype');
+ font-weight: 400;
+ font-style: normal;
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Charter';
+ src: url('../fonts/charter_regular-webfont.eot');
+ src: url('../fonts/charter_regular-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/charter_regular-webfont.woff') format('woff'),
+ url('../fonts/charter_regular-webfont.ttf') format('truetype');
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Charter';
+ src: url('../fonts/charter_bold-webfont.eot');
+ src: url('../fonts/charter_bold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/charter_bold-webfont.woff') format('woff'),
+ url('../fonts/charter_bold-webfont.ttf') format('truetype');
+ font-weight: bold;
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Charter';
+ src: url('../fonts/charter_italic-webfont.eot');
+ src: url('../fonts/charter_italic-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/charter_italic-webfont.woff') format('woff'),
+ url('../fonts/charter_italic-webfont.ttf') format('truetype');
+ font-style: italic;
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Charter';
+ src: url('../fonts/charter_bold_italic-webfont.eot');
+ src: url('../fonts/charter_bold_italic-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/charter_bold_italic-webfont.woff') format('woff'),
+ url('../fonts/charter_bold_italic-webfont.ttf') format('truetype');
+ font-style: italic;
+ font-weight: bold;
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Fira Sans';
+ src: url('../fonts/FiraSans-Book.eot');
+ src: url('../fonts/FiraSans-Book.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/FiraSans-Book.woff2') format('woff2'),
+ url('../fonts/FiraSans-Book.woff') format('woff'),
+ url('../fonts/FiraSans-Book.ttf') format('truetype');
+ font-display: fallback;
+}
+
+@font-face {
+ font-family: 'Fira Sans';
+ src: url('../fonts/FiraSans-Bold.eot');
+ src: url('../fonts/FiraSans-Bold.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/FiraSans-Bold.woff2') format('woff2'),
+ url('../fonts/FiraSans-Bold.woff') format('woff'),
+ url('../fonts/FiraSans-Bold.ttf') format('truetype');
+ font-weight: bold;
+ font-display: fallback;
+}
diff --git a/hugo_blag/themes/indigo/static/css/style.css b/hugo_blag/themes/indigo/static/css/style.css
new file mode 100644
index 0000000..db2c31e
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/css/style.css
@@ -0,0 +1,464 @@
+* {
+ box-sizing: border-box;
+}
+
+body {
+ background-color: #f8f8f8;
+ color: #3f3f3f;
+ font-family: "Charter", Times, "Times New Roman", serif;
+ margin: 0 auto;
+}
+
+/* Desktop styles */
+@media only screen and (min-width: 860px) {
+ div#sitelogo {
+ margin-left: -96px;
+ position: fixed;
+ }
+}
+
+@media only screen and (min-width: 768px) {
+ body {
+ max-width: 800px;
+ font-size: 1.3em;
+ width: 90%;
+ }
+
+ code,
+ pre {
+ font-size: 0.9em;
+ }
+
+ img {
+ width: 100%;
+ }
+
+ blockquote {
+ font-size: x-large;
+ }
+
+ .icon-24x24:hover {
+ background-color: #f8f8f8;
+ border-top: 2px solid #00416a;
+ padding-top: 2px;
+ }
+
+ .card-content {
+ margin-left: 25px;
+ }
+}
+
+/* High-DPI mobile styles */
+@media only screen and (max-width: 768px) {
+ body {
+ font-size: 1em;
+ max-width: 90%;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ blockquote {
+ font-size: x-large;
+ }
+
+ .card-content {
+ margin-left: 25px;
+ }
+}
+
+/* Low-DPI mobile styles */
+@media only screen and (max-width: 414px) {
+ body {
+ font-size: 1.2em;
+ max-width: 90%;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ blockquote {
+ font-size: x-large;
+ }
+
+ .card-content {
+ margin-left: 0;
+ }
+}
+
+#sitelogo {
+ margin: 16px auto 0 auto;
+ width: 64px;
+}
+
+.glyph:hover {
+ background-color: #f8f8f8;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-weight: bold;
+ margin-top: 2em;
+ padding-top: 0.15em;
+}
+
+h1 {
+ font-size: 2em;
+}
+
+a {
+ color: #00416a;
+}
+
+a:visited {
+ color: #316586;
+}
+
+a:hover {
+ background-color: #00416a;
+ color: #dee5e9;
+}
+
+h1.post-title {
+ border-top: 2px solid #3f3f3f;
+ font-size: 2.5em;
+}
+
+h2.list-title > a {
+ color: #00416a;
+}
+
+h2.list-title > a:visited {
+ color: #316586;
+}
+
+h2.list-title > a:hover {
+ background-color: #f8f8f8;
+ color: #7b9cb0;
+}
+
+a.read-more {
+ font-family: "Fira Sans";
+ font-size: smaller;
+ text-transform: uppercase;
+}
+
+section.content {
+ line-height: 1.5em;
+}
+
+p.post-date {
+ background-color: #00416a;
+ color: #dee5e9;
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ margin: 0 0 2.5em 0;
+ padding: 0.25em 0.5em;
+}
+
+a.p-author {
+ color: #dee5e9;
+ text-decoration: none;
+}
+
+h2.list-title {
+ margin: 2em 0 0 0;
+ padding: 0;
+}
+
+p.list-post-date {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ margin: 1em 0 1.5em 0;
+ padding: 0;
+ text-transform: uppercase;
+}
+
+#footer {
+ width: 100%;
+}
+
+.copyright {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ margin-top: 2em;
+ text-align: center;
+}
+
+div.h-card {
+ box-shadow: 0 5px 5px #ccc;
+ margin: 100px auto;
+ min-height: 150px;
+ padding: 25px;
+ width: 90%;
+}
+
+img.u-photo {
+ width: 100px;
+}
+
+.card-content {
+ display: inline-block;
+}
+
+.card-name {
+ margin: 0;
+}
+
+.card-subhead {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ text-transform: uppercase;
+}
+
+blockquote {
+ color: #00416a;
+ background-color: #dee5e9;
+ border-left: 25px solid #00416a;
+ line-height: 1.25em;
+ margin: 2em auto;
+ padding: 1% 5%;
+ width: 100%;
+}
+
+code {
+ background-color: #dee5e9;
+ color: #00416a;
+ font-family: "Fira Code", "Courier New", Courier, monospace;
+ padding: 0.1em 0.2em 0.1em 0.2em;
+}
+
+pre {
+ background-color: #dee5e9;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ font-size: 0.8em;
+ margin: 2em auto;
+ overflow-x: scroll;
+ padding: 1em;
+ width: 100%;
+}
+
+hr.post-underline {
+ border: 0;
+ border-top: 1px solid #ccc;
+ display: block;
+ height: 1px;
+ padding: 0;
+ margin: 2em auto;
+ width: 75%;
+}
+
+a.permalink {
+ border-radius: 100%;
+ text-decoration: none;
+}
+
+.post-tag {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: small;
+ text-transform: uppercase;
+}
+
+a.post-tag {
+ background-color: #dee5e9;
+ border: 1px solid #7b9cb0;
+ border-radius: 5px;
+ color: #316586;
+ padding: 0.15em 0.3em 0.1em 0.3em;
+ text-decoration: none;
+}
+
+a.post-tag:hover {
+ background-color: #7b9cb0;
+ color: #fff;
+}
+
+.list-heading-type {
+ font-size: large;
+ text-transform: uppercase;
+}
+
+.list-heading-tag {
+ background-color: #dee5e9;
+ border: 1px solid #7b9cb0;
+ border-radius: 5px;
+ color: #316586;
+ font-size: large;
+ font-weight: 100;
+ padding: 0.25em 0.5em;
+ text-transform: uppercase;
+}
+
+div#site-header {
+ border-top: 5px solid #3f3f3f;
+ border-bottom: 2px solid #3f3f3f;
+}
+
+div#site-header > h1 {
+ font-size: 2.5em;
+ line-height: 1em;
+ margin-top: 1em;
+}
+
+div#site-header > p {
+ margin-top: 0;
+ margin-bottom: 1em;
+}
+
+div#page-nav,
+#pagination {
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ line-height: 1em;
+ margin: 1.5em 0 2.5em 0;
+ padding: 0;
+ text-align: center;
+ text-transform: uppercase;
+ width: 100%;
+}
+
+#page-nav {
+ align-items: flex-start;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: space-around;
+}
+
+div.page-nav-item,
+div.page-nav-spacer {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 0;
+}
+
+div.page-nav-item > a {
+ color: #00416a;
+ display: block;
+ text-decoration: none;
+ width: 100%;
+}
+
+div.page-nav-item > a:hover {
+ background-color: #00416a;
+ color: #dee5e9;
+}
+
+div#pagination {
+ display: inline-block;
+ margin: 3.5em 0;
+}
+
+div.pagination-item:hover {
+ background-color: #00416a;
+}
+
+div.pagination-item,
+div.pagination-item-spacer {
+ display: inline-block;
+ float: left;
+ margin: 0;
+ padding: 0;
+ width: 20%;
+}
+
+div.pagination-item > a {
+ color: #00416a;
+ display: block;
+ text-decoration: none;
+}
+
+div.pagination-item > a:hover {
+ color: #dee5e9;
+}
+
+aside#social {
+ border-top: 2px solid #3f3f3f;
+ display: flex;
+ height: 48px;
+ margin: 0 auto;
+ width: 100%;
+}
+
+div#social-icons {
+ align-items: center;
+ display: flex;
+ flex-basis: 414px;
+ flex-wrap: wrap;
+ height: 24px;
+ justify-content: space-between;
+ margin-top: 20px;
+ max-width: 414px;
+ min-width: 288px;
+}
+
+.icon-24x24 {
+ height: 24px;
+ width: 24px;
+}
+
+nav#article-skip {
+ align-items: flex-start;
+ border-top: 1px solid #dee5e9;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+ font-size: smaller;
+ justify-content: space-around;
+ line-height: 1em;
+ margin: 5em 0 0 0;
+ padding: 0;
+ text-align: center;
+ text-transform: uppercase;
+}
+
+.next,
+.prev,
+.top {
+ flex: 0 1 auto;
+ margin: 0;
+ padding: 0.5em;
+ width: 100%;
+}
+
+.next {
+ text-align: left;
+}
+
+.prev {
+ text-align: right;
+}
+
+.top {
+ border-left: 1px solid #dee5e9;
+ border-right: 1px solid #dee5e9;
+}
+
+div.next > p,
+div.prev > p {
+ margin: 0;
+ padding: 0;
+}
+
+div.next > a,
+div.prev > a,
+div.top > a {
+ color: #00416a;
+ text-decoration: none;
+}
+
+div.next > a:hover,
+div.prev > a:hover,
+div.top > a:hover {
+ background-color: #00416a;
+ color: #dee5e9;
+}
diff --git a/hugo_blag/themes/indigo/static/favicon-16x16.png b/hugo_blag/themes/indigo/static/favicon-16x16.png
new file mode 100644
index 0000000..430875a
Binary files /dev/null and b/hugo_blag/themes/indigo/static/favicon-16x16.png differ
diff --git a/hugo_blag/themes/indigo/static/favicon-32x32.png b/hugo_blag/themes/indigo/static/favicon-32x32.png
new file mode 100644
index 0000000..c34d12f
Binary files /dev/null and b/hugo_blag/themes/indigo/static/favicon-32x32.png differ
diff --git a/hugo_blag/themes/indigo/static/favicon.ico b/hugo_blag/themes/indigo/static/favicon.ico
new file mode 100644
index 0000000..2732399
Binary files /dev/null and b/hugo_blag/themes/indigo/static/favicon.ico differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.eot b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.eot
new file mode 100755
index 0000000..cef458e
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.otf b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.otf
new file mode 100755
index 0000000..4770d16
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.otf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.ttf b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.ttf
new file mode 100755
index 0000000..0fb0817
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff
new file mode 100755
index 0000000..5e4106f
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff2 b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff2
new file mode 100755
index 0000000..df544dc
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraCode-Regular.woff2 differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.eot b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.eot
new file mode 100644
index 0000000..91245f1
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.ttf b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.ttf
new file mode 100644
index 0000000..f03425a
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff
new file mode 100644
index 0000000..aac5ce3
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff2 b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff2
new file mode 100644
index 0000000..9216d5e
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Bold.woff2 differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.eot b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.eot
new file mode 100644
index 0000000..9902a51
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.ttf b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.ttf
new file mode 100644
index 0000000..f6c2a6c
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff
new file mode 100644
index 0000000..a480632
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff2 b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff2
new file mode 100644
index 0000000..be1642d
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Book.woff2 differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.eot b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.eot
new file mode 100644
index 0000000..683a207
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.ttf b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.ttf
new file mode 100644
index 0000000..d06adde
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff
new file mode 100644
index 0000000..fc2d955
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff2 b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff2
new file mode 100644
index 0000000..28ff042
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/FiraSans-Light.woff2 differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.eot b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.eot
new file mode 100755
index 0000000..800aa39
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.ttf b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.ttf
new file mode 100755
index 0000000..cea448b
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.woff b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.woff
new file mode 100755
index 0000000..6d7fd7a
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold-webfont.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.eot b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.eot
new file mode 100755
index 0000000..62268df
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.ttf b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.ttf
new file mode 100755
index 0000000..c83766c
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.woff b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.woff
new file mode 100755
index 0000000..1ef433f
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_bold_italic-webfont.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.eot b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.eot
new file mode 100755
index 0000000..2124b1c
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.ttf b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.ttf
new file mode 100755
index 0000000..9276421
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.woff b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.woff
new file mode 100755
index 0000000..08c8249
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_italic-webfont.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_license.txt b/hugo_blag/themes/indigo/static/fonts/charter_license.txt
new file mode 100644
index 0000000..364606e
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/fonts/charter_license.txt
@@ -0,0 +1,5 @@
+Charter License
+
+This is a copy of the Charter fonts which Bitstream contributed to the X consortium. This is the original notice included with the fonts:
+
+(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA. You are hereby granted permission under all Bitstream propriety rights to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts for any purpose and without restriction; provided, that this notice is left intact on all copies of such fonts and that Bitstream’s trademark is acknowledged as shown below on all unmodified copies of the 4 Charter Type 1 fonts. BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.eot b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.eot
new file mode 100755
index 0000000..01872e3
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.eot differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.ttf b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.ttf
new file mode 100755
index 0000000..44e097a
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.ttf differ
diff --git a/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.woff b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.woff
new file mode 100755
index 0000000..a19483d
Binary files /dev/null and b/hugo_blag/themes/indigo/static/fonts/charter_regular-webfont.woff differ
diff --git a/hugo_blag/themes/indigo/static/fonts/fira-code_license.txt b/hugo_blag/themes/indigo/static/fonts/fira-code_license.txt
new file mode 100644
index 0000000..5ec3dbc
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/fonts/fira-code_license.txt
@@ -0,0 +1,102 @@
+Copyright (c) 2014, Nikita Prokopov http://tonsky.me
+with Reserved Font Name Fira Code.
+
+Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
+with Reserved Font Name Fira Sans.
+
+Copyright (c) 2014, Mozilla Foundation https://mozilla.org/
+with Reserved Font Name Fira Mono.
+
+Copyright (c) 2014, Telefonica S.A.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/fonts/fira-sans_license.txt b/hugo_blag/themes/indigo/static/fonts/fira-sans_license.txt
new file mode 100644
index 0000000..5af572f
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/fonts/fira-sans_license.txt
@@ -0,0 +1,96 @@
+https://bboxtype.com/downloads/Fira/OFL.txt
+
+Digitized data copyright 2012-2018 for FiraGO: Carrois Corporate GbR and HERE Europe B.V. All rights reserved.
+Digitized data copyright 2012-2018 for Fira Sans up to version 4.3: The Mozilla Foundation, Telefonica S.A., Carrois Corporate GbR and bBox Type GmbH.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/envelope.svg b/hugo_blag/themes/indigo/static/icons/envelope.svg
new file mode 100644
index 0000000..c94bfd7
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/envelope.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/facebook.svg b/hugo_blag/themes/indigo/static/icons/facebook.svg
new file mode 100644
index 0000000..7cdd94e
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/facebook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/flickr.svg b/hugo_blag/themes/indigo/static/icons/flickr.svg
new file mode 100644
index 0000000..ac7667f
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/flickr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/github.svg b/hugo_blag/themes/indigo/static/icons/github.svg
new file mode 100644
index 0000000..8348350
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/gitlab.svg b/hugo_blag/themes/indigo/static/icons/gitlab.svg
new file mode 100644
index 0000000..c966bc4
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/glitch.svg b/hugo_blag/themes/indigo/static/icons/glitch.svg
new file mode 100644
index 0000000..5b03854
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/glitch.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/keybase.svg b/hugo_blag/themes/indigo/static/icons/keybase.svg
new file mode 100644
index 0000000..5b4f80b
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/keybase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/linkedin.svg b/hugo_blag/themes/indigo/static/icons/linkedin.svg
new file mode 100644
index 0000000..cd55f45
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/linkedin.svg
@@ -0,0 +1 @@
+
diff --git a/hugo_blag/themes/indigo/static/icons/medium.svg b/hugo_blag/themes/indigo/static/icons/medium.svg
new file mode 100644
index 0000000..2ad9fb4
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/medium.svg
@@ -0,0 +1 @@
+
diff --git a/hugo_blag/themes/indigo/static/icons/microblog.svg b/hugo_blag/themes/indigo/static/icons/microblog.svg
new file mode 100644
index 0000000..1435367
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/microblog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/reddit-alien.svg b/hugo_blag/themes/indigo/static/icons/reddit-alien.svg
new file mode 100644
index 0000000..56b913c
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/reddit-alien.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/hugo_blag/themes/indigo/static/icons/stack-overflow.svg b/hugo_blag/themes/indigo/static/icons/stack-overflow.svg
new file mode 100644
index 0000000..5a6a34e
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/stack-overflow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/tumblr.svg b/hugo_blag/themes/indigo/static/icons/tumblr.svg
new file mode 100644
index 0000000..68982fc
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/tumblr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/icons/twitter.svg b/hugo_blag/themes/indigo/static/icons/twitter.svg
new file mode 100644
index 0000000..2633841
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/icons/twitter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/images/site-logo.svg b/hugo_blag/themes/indigo/static/images/site-logo.svg
new file mode 100644
index 0000000..f7ee96e
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/images/site-logo.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/hugo_blag/themes/indigo/static/mstile-144x144.png b/hugo_blag/themes/indigo/static/mstile-144x144.png
new file mode 100644
index 0000000..c7926a9
Binary files /dev/null and b/hugo_blag/themes/indigo/static/mstile-144x144.png differ
diff --git a/hugo_blag/themes/indigo/static/mstile-150x150.png b/hugo_blag/themes/indigo/static/mstile-150x150.png
new file mode 100644
index 0000000..3b0b673
Binary files /dev/null and b/hugo_blag/themes/indigo/static/mstile-150x150.png differ
diff --git a/hugo_blag/themes/indigo/static/mstile-310x150.png b/hugo_blag/themes/indigo/static/mstile-310x150.png
new file mode 100644
index 0000000..672764f
Binary files /dev/null and b/hugo_blag/themes/indigo/static/mstile-310x150.png differ
diff --git a/hugo_blag/themes/indigo/static/mstile-310x310.png b/hugo_blag/themes/indigo/static/mstile-310x310.png
new file mode 100644
index 0000000..545abed
Binary files /dev/null and b/hugo_blag/themes/indigo/static/mstile-310x310.png differ
diff --git a/hugo_blag/themes/indigo/static/mstile-70x70.png b/hugo_blag/themes/indigo/static/mstile-70x70.png
new file mode 100644
index 0000000..16fe651
Binary files /dev/null and b/hugo_blag/themes/indigo/static/mstile-70x70.png differ
diff --git a/hugo_blag/themes/indigo/static/safari-pinned-tab.svg b/hugo_blag/themes/indigo/static/safari-pinned-tab.svg
new file mode 100644
index 0000000..f979035
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/safari-pinned-tab.svg
@@ -0,0 +1,47 @@
+
+
+
diff --git a/hugo_blag/themes/indigo/static/site.webmanifest b/hugo_blag/themes/indigo/static/site.webmanifest
new file mode 100644
index 0000000..b20abb7
--- /dev/null
+++ b/hugo_blag/themes/indigo/static/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/hugo_blag/themes/indigo/theme.toml b/hugo_blag/themes/indigo/theme.toml
new file mode 100644
index 0000000..6ac94d9
--- /dev/null
+++ b/hugo_blag/themes/indigo/theme.toml
@@ -0,0 +1,21 @@
+# theme.toml template for a Hugo theme
+# See https://github.com/gohugoio/hugoThemes#themetoml for an example
+
+name = "Indigo"
+license = "MIT"
+licenselink = "https://github.com/AngeloStavrow/indigo/blob/master/LICENSE.md"
+description = "An IndieWeb-enabled, lightweight blogging theme for Hugo."
+homepage = "https://github.com/AngeloStavrow/indigo"
+tags = ["blog", "responsive", "minimal"]
+features = ["indieweb", "blog"]
+min_version = "0.58.3"
+
+[author]
+ name = "Angelo Stavrow"
+ homepage = "https://angelostavrow.com/"
+
+# If porting an existing theme
+[original]
+ name = ""
+ homepage = ""
+ repo = ""
\ No newline at end of file