<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://www.ericholscher.com</id>
  <title>Eric Holscher - Posted in 2013</title>
  <updated>2026-04-20T04:45:53.997389+00:00</updated>
  <link href="https://www.ericholscher.com"/>
  <link href="https://www.ericholscher.com/blog/archive/2013/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.12">ABlog</generator>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/dec/31/2013-year-review/</id>
    <title>2013 Year in Review</title>
    <updated>2013-12-31T00:00:00+00:00</updated>
    <content type="html">&lt;section id="year-in-review"&gt;

&lt;p&gt;2013 has been a fantastic year.
In &lt;a class="reference internal" href="../../2012/dec/31/2012-year-review/"&gt;&lt;span class="doc"&gt;2012&lt;/span&gt;&lt;/a&gt;,
I decided that I would focus more on life than my career.
This year has been a larger experiment along those lines.
I have done a lot of good work on programming,
but I have also taken a lot of time to spend for myself.&lt;/p&gt;
&lt;section id="january"&gt;
&lt;h2&gt;January&lt;/h2&gt;
&lt;p&gt;I quit my job a few weeks into the new year.
&lt;a class="reference internal" href="../../2013/jan/10/walk-woods/#walk-woods"&gt;&lt;span class="std std-ref"&gt;Ending my employment&lt;/span&gt;&lt;/a&gt; at Urban Airship after 2 years.&lt;/p&gt;
&lt;p&gt;This was to train for the &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Pacific_Crest_Trail"&gt;Pacific Crest Trail&lt;/a&gt;.
The Pacific Crest Trail is a wilderness trail that stretches from Mexico to Canada,
across the western United States.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="february-march"&gt;
&lt;h2&gt;February-March&lt;/h2&gt;
&lt;p&gt;This was mostly spent buying lots of backpacking gear,
and going on a crazy number of hikes.
I was trying to average 10 miles walking a day,
with 20-30 pounds on my back twice a week.
These training hikes were to prepare my body for doing this everyday for 5 months.&lt;/p&gt;
&lt;p&gt;During this time we also conceived the first ever Write the Docs Conference.
Planning this event also took up a good amount of my time during these couple months.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="april"&gt;
&lt;h2&gt;April&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="http://conf.writethedocs.org/na/2013/index.html"&gt;Write the Docs&lt;/a&gt; happened on April 8-9,
and was fantastic.
We gathered over 200 people in Portland to talk docs.
We got almost uniformly positive reviews,
and it was a really great moment in time for me.&lt;/p&gt;
&lt;section id="april-15"&gt;
&lt;h3&gt;April 15&lt;/h3&gt;
&lt;p&gt;April 14 is when I flew to San Diego to start my hike on the PCT.
April 15 was the official start to my hike.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="april-june"&gt;
&lt;h2&gt;April-June&lt;/h2&gt;
&lt;p&gt;Hike, hike hike.
See some of the most &lt;a class="reference external" href="http://www.flickr.com/photos/98071214&amp;#64;N07/sets/72157634560986460/"&gt;beautiful places&lt;/a&gt; in the United States.
Meet amazing people,
and do something incredibly difficult and rewarding.&lt;/p&gt;
&lt;p&gt;These were the best 2 months of my life.&lt;/p&gt;
&lt;section id="june-16"&gt;
&lt;h3&gt;June 16&lt;/h3&gt;
&lt;p&gt;Come off the trail with a stress fracture in my left foot.
Ending my hike over Kearsage Pass in the High Sierra.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="june-august"&gt;
&lt;h2&gt;June-August&lt;/h2&gt;
&lt;p&gt;This was a pretty depressing time.
I had to re-enter normal society.
This was surprisingly difficult,
made harder by the fact that I had to wear a boot on my foot for 6 weeks.
After walking for over 2 months everyday,
the lack of exercise was really tough mentally.
Also not finishing the PCT was really hard,
because I had never thought about quitting.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="september"&gt;
&lt;h2&gt;September&lt;/h2&gt;
&lt;p&gt;I attended &lt;a class="reference external" href="http://2013.xoxofest.com/"&gt;XOXO Festival&lt;/a&gt;.
This is where things really started to turn around.&lt;/p&gt;
&lt;p&gt;I decided to focus on improving documentation full time for the foreseeable future,
asking for help with this on &lt;a class="reference external" href="https://www.gittip.com/ericholscher/"&gt;Gittip&lt;/a&gt;.
I immediately had a good number of people helping to support me,
and it heavily validated and inspired my work going forward.&lt;/p&gt;
&lt;p&gt;On the exercise front,
I did a good amount of biking.
This was to limit the exposure my foot had to re-injury.
The main event was a bike ride from Portland-Eugene over 3 days.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="october"&gt;
&lt;h2&gt;October&lt;/h2&gt;
&lt;p&gt;Participated in the Google Summer of Code Book Sprint.
This involved spending a week in Mountain View,
helping write a book for an open source project.&lt;/p&gt;
&lt;p&gt;This really helped me get a better feel for writing with other people,
and the general editorial process.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="november"&gt;
&lt;h2&gt;November&lt;/h2&gt;
&lt;p&gt;We did a November Blog Post Month with a twist.
Instead of the deadline being to publish a post,
we submitted them to our group for editing.
The main value of this was to get better content,
not more.
It also allowed us to become better editors,
and I now find it much easier to edit my own work.&lt;/p&gt;
&lt;p&gt;I also started doing a bunch of hiking again,
as I would be leaving Portland at the end of the month for a while.
It was great to get back into nature,
and rekindle my love of hiking after being off for almost 6 months.&lt;/p&gt;
&lt;p&gt;I got to visit Vancouver,
which was the last major west coast city I haven’t visited.
I really saved the best for last.
I quite enjoyed Vancouver.
It brings the best parts of all my other favorite west coast cities,
and combines them into one place.
I can’t wait to go back,
and maybe spend a month or two living there.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="december"&gt;
&lt;h2&gt;December&lt;/h2&gt;
&lt;p&gt;I spend the entire month visiting friends and family on the east coast.
It’s a luxury that I have time,
and I am glad that I spend so much of it with family.
It’s often easy to get caught up in life and not remember those who matter the most to you.
Spending time with family is something that I will never regret.&lt;/p&gt;
&lt;p&gt;We &lt;a class="reference external" href="http://docs.writethedocs.org/en/latest/2014/blog/announcing-write-the-docs-2014/"&gt;announced Write the Docs&lt;/a&gt; again next year,
including a European version.
I have also started submitting conference talks to a couple places.
I haven’t spoken much in the past few years,
and I think I am ready and excited to start again.&lt;/p&gt;
&lt;p&gt;I also firmed up my plans to travel to Thailand in January for a couple months.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;2013 was a fantastic year for me.
It really pushed me to grow as a person,
pushing boundaries and exploring the world.
I will be continuing these trends in 2014,
with a new focus and enthusiasm for my work as well.&lt;/p&gt;
&lt;p&gt;Focusing on documentation professionally has given me clarity of purpose.
I feel like there is a lot I can accomplish in this realm in 2014,
and that it will hopefully be the turning point in creating some kind of documentation community.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/dec/31/2013-year-review/"/>
    <summary>2013 has been a fantastic year.
In 2012,
I decided that I would focus more on life than my career.
This year has been a larger experiment along those lines.
I have done a lot of good work on programming,
but I have also taken a lot of time to spend for myself.</summary>
    <published>2013-12-31T00:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/dec/23/read-the-docs-2013-stats/</id>
    <title>Read the Docs 2013 Stats</title>
    <updated>2013-12-23T10:00:00+00:00</updated>
    <content type="html">&lt;section id="read-the-docs-2013-stats"&gt;

&lt;p&gt;2013 has been a big year for &lt;a class="reference external" href="https://readthedocs.org/"&gt;Read the Docs&lt;/a&gt;.
Our mission is to make documentation hosting easier,
with the overall goal of increasing the quality of documentation in the programming world.
I believe that we have been doing good work towards that goal,
and I want to share some numbers to reflect our progress.&lt;/p&gt;
&lt;section id="community"&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;p&gt;Our community has been great this year.
I have been really happy to see a few people submit multiple patches and features.
This year, we had:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/rtfd/readthedocs.org/graphs/contributors?from=2013-01-01&amp;amp;to=2013-12-21&amp;amp;type=c"&gt;39 people&lt;/a&gt; who committed code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;550 commits&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/rtfd/readthedocs.org/search?q=created%3A%3E%3D2013-01-01&amp;amp;source=cc&amp;amp;type=Issues"&gt;271 issues&lt;/a&gt; - 218 closed, 53 open&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many thanks to &lt;a class="reference external" href="http://blog.wraithan.net/"&gt;Wraithan&lt;/a&gt; in particular,
who has taken on a large role in helping maintain the site and servers.&lt;/p&gt;
&lt;p&gt;If there is anyone else out there who would like to help with operations,
especially outside of US timezones,
please &lt;a class="reference external" href="mailto:eric&amp;#37;&amp;#52;&amp;#48;ericholscher&amp;#46;com"&gt;let me know&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="page-views"&gt;
&lt;h2&gt;Page Views&lt;/h2&gt;
&lt;p&gt;Our growth in page views has always been crazy to me.
It was somewhere in mid-2011 that Read the Docs went from a hobby project,
into something projects depended on.
This growth has never stopped,
and today a large number of important projects depend on Read the Docs.&lt;/p&gt;
&lt;p&gt;Our stats:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;65 Million Page Views&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;13 Million Unique Visitors&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For context,
these numbers are similar to what &lt;a class="reference external" href="https://blog.mozilla.org/files/2013/12/mozilla_eoy_2013_EN_72dpi_FINAL.jpg"&gt;MDN has&lt;/a&gt;.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;These numbers are actually a bit low.
Some themes don’t support default Sphinx template blocks,
so we can’t count them in our stats correctly.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I think an image shows this a bit better than words:&lt;/p&gt;
&lt;img alt="https://dl.dropboxusercontent.com/s/m1xjc5jemlql6i2/Screenshot%202013-12-21%2009.28.51.png" src="https://dl.dropboxusercontent.com/s/m1xjc5jemlql6i2/Screenshot%202013-12-21%2009.28.51.png" style="width: 100%;" /&gt;
&lt;/section&gt;
&lt;section id="site-stats"&gt;
&lt;h2&gt;Site Stats&lt;/h2&gt;
&lt;p&gt;Our pageviews are driven mainly by 100 or so high traffic sites.
We have a lot of small projects that are up on Read the Docs too that we love.&lt;/p&gt;
&lt;p&gt;The stats:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;7949 projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;11679 users&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1040182 builds&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="funding"&gt;
&lt;h2&gt;Funding&lt;/h2&gt;
&lt;p&gt;Our hosting costs are sponsored by &lt;a class="reference external" href="http://rackspace.com/"&gt;Rackspace&lt;/a&gt;,
which is fantasticly generous of them.&lt;/p&gt;
&lt;p&gt;Development on Read the Docs is funded by the community &lt;a class="reference external" href="https://www.gittip.com/readthedocs/"&gt;on Gittip&lt;/a&gt;.
I am very grateful for the support that the community has given the project over the years.
It is great validation that people value the service you are providing,
even when you give it away for free.&lt;/p&gt;
&lt;p&gt;The stats:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;$167/wk currently&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;114 people giving money&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;2013 has been a great year for Read the Docs.
We have made a lot of progress,
and I think 2014 will be even better.&lt;/p&gt;
&lt;p&gt;We are working on a number of new features to expand the user base,
and make the site more approachable.
We forward to continuing to improve the documentation ecosystem in the new year.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/dec/23/read-the-docs-2013-stats/"/>
    <summary>2013 has been a big year for Read the Docs.
Our mission is to make documentation hosting easier,
with the overall goal of increasing the quality of documentation in the programming world.
I believe that we have been doing good work towards that goal,
and I want to share some numbers to reflect our progress.</summary>
    <published>2013-12-23T10:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/nov/21/better-javascript-workflow-with-django/</id>
    <title>A Better Javascript Workflow with Django</title>
    <updated>2013-11-21T20:00:00+00:00</updated>
    <content type="html">&lt;section id="a-better-javascript-workflow-with-django"&gt;

&lt;p&gt;Javascript has always been the bane of my existence as a developer.
It was the part of the process of developing that I would dread.
On the last project I worked on,
I found a very simple change that significantly improved my experience writing Javascript.&lt;/p&gt;
&lt;section id="problem-one-big-file"&gt;
&lt;h2&gt;Problem: One big file&lt;/h2&gt;
&lt;p&gt;Historically,
Javascript lived in one really large file.
If you wanted to break up the file,
you had to edit your HTML files to make sure they were in the correct order.
This always felt really brittle,
so I never actually split up my code into multiple files.&lt;/p&gt;
&lt;p&gt;Even if you split things up into different files,
you had to reply on implicit import mechanisms.
A variable would just magically appear in your file because of the import order of the scripts.
This incredibly brittle and unintuitive way of working puts up a high barrier to writing well-factored code.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="solution-node-style-requires"&gt;
&lt;h2&gt;Solution: node-style requires&lt;/h2&gt;
&lt;p&gt;Node.js has the concept of &lt;cite&gt;require&lt;/cite&gt;.
It works very similarly to Python’s &lt;cite&gt;import&lt;/cite&gt; mechanism.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;client.js&lt;/cite&gt;&lt;/p&gt;
&lt;div class="highlight-javascript notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;events&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;./lib/events&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;events&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;awesome&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;cite&gt;lib/events.js&lt;/cite&gt;&lt;/p&gt;
&lt;div class="highlight-javascript notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;awesome&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;awesome&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;awesome&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Do awesome stuff.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;cite&gt;module.exports&lt;/cite&gt; is similar to Python’s &lt;cite&gt;__all__&lt;/cite&gt;,
allowing you to explicitly set your public API.&lt;/p&gt;
&lt;p&gt;The &lt;cite&gt;require&lt;/cite&gt; system allows you to factor your code into multiple files.
More importantly,
this allows for code isolation.
I can put logic surrounding setting up event handlers in the &lt;cite&gt;events.js&lt;/cite&gt; file,
without having it leak into other sections of the code.&lt;/p&gt;
&lt;p&gt;Architecting code in this fashion allowed me to write much better code.
It gives you an entry point into the code,
where the uppermost logic lives.
Then you can dive into each specific file to understand that subsection of code.
All the benefits normally associated with an import system come to bare.&lt;/p&gt;
&lt;p&gt;As a wise man once said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;Namespaces are one honking great idea – let’s do more of those!&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/section&gt;
&lt;section id="imports-in-the-browser"&gt;
&lt;h2&gt;Imports in the browser&lt;/h2&gt;
&lt;p&gt;It’s great that node has an import system,
but that doesn’t help me when I’m writing Javascript for the browser.
&lt;a class="reference external" href="http://browserify.org/"&gt;browserify&lt;/a&gt; is a project that allows you to have node-style imports in the browser.&lt;/p&gt;
&lt;p&gt;Browserify takes all of your Javascript files with imports,
and renders them into one large file you can include in your project.
It does this by pointing to a file,
which is the top-level entry point into your code.
In the example above,
&lt;cite&gt;client.js&lt;/cite&gt; would be the entry point.&lt;/p&gt;
&lt;p&gt;To use Browserify, simply install it with npm:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;npm&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;browserify&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# -g means globally&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Then run browserify on your top-level file:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;browserify&lt;span class="w"&gt; &lt;/span&gt;client.js&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;bundle.js
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Browserify outputs the Javascript to stdout,
so you can simply redirect it to a file that will contain your bundled Javascript code.
The “bundle” is what you include in your HTML:&lt;/p&gt;
&lt;div class="highlight-html notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bundle.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="a-new-problem"&gt;
&lt;h2&gt;A New Problem&lt;/h2&gt;
&lt;p&gt;As with all preprocessors,
the main issue is the workflow around rendering the code into its final form.
There are two general approaches for handling this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Have a program watch for file changes, rebuilding on change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rebuild source files on request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;You can use programs like &lt;a class="reference external" href="https://pypi.python.org/pypi/watchdog"&gt;watchdog&lt;/a&gt; and &lt;a class="reference external" href="http://gruntjs.com/"&gt;grunt&lt;/a&gt; to handle rebuilding of files automatically.
The main issue with this is the feedback loop.
You can save a file and reload your browser,
and you aren’t sure if it’s serving the latest change you made.&lt;/p&gt;
&lt;p&gt;I generally prefer having it rebuild the source on request.
This works well until you have large files that have to be compiled,
where reloading each request introduces significant lag.
Luckily for my Javascript projects,
they tend towards the smaller side.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://didact.us/beefy/"&gt;Beefy&lt;/a&gt; is a project that presents an HTTP server,
which autocompiles your Javascript with Browserify.
To use beefy you install it:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;npm&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;beefy&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# -g for global install&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="django-integration"&gt;
&lt;h2&gt;Django Integration&lt;/h2&gt;
&lt;p&gt;Beefy also works as a simple HTTP server.
It auto-generates your Javascript through Browserify,
but also serves normal static media.
This means you can point your &lt;cite&gt;STATIC_URL&lt;/cite&gt; at Beefy,
and it will just work.&lt;/p&gt;
&lt;p&gt;First you have to collect your static media into a single directory:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;./manage.py&lt;span class="w"&gt; &lt;/span&gt;collectstatic
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Then,
from your &lt;cite&gt;STATIC_ROOT&lt;/cite&gt; you run beefy,
pointing at your Browserify entry point:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;beefy&lt;span class="w"&gt; &lt;/span&gt;client.js
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also pass the bundle you want it to generate with a &lt;cite&gt;:&lt;/cite&gt;.
This allows you to point at the same Javascript file in development as in production:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;beefy&lt;span class="w"&gt; &lt;/span&gt;client.js:bundle.js
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Beefy should now be serving on port &lt;cite&gt;9966&lt;/cite&gt;.
You can point Django at this for static media by using the setting:&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;STATIC_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;http://localhost:9966/&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Beefy should now be serving your media properly,
and auto-compiling your javascript through Browserify.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;You may want to symlink your javascript files from into &lt;cite&gt;STATIC_ROOT&lt;/cite&gt;,
if you are doing active development on them.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;With this workflow you can now write Javascript with a sane import system,
and have it &lt;em&gt;Just Work&lt;/em&gt; in development.
I hope that it makes the Javascript part of your development a little bit more enjoyable.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/nov/21/better-javascript-workflow-with-django/"/>
    <summary>Javascript has always been the bane of my existence as a developer.
It was the part of the process of developing that I would dread.
On the last project I worked on,
I found a very simple change that significantly improved my experience writing Javascript.</summary>
    <published>2013-11-21T20:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/nov/11/code-conduct-organizers-perspective/</id>
    <title>Codes of Conduct, an Organizers Perspective</title>
    <updated>2013-11-11T20:00:00+00:00</updated>
    <content type="html">&lt;section id="codes-of-conduct-an-organizers-perspective"&gt;

&lt;p&gt;I helped organize my first conference last year,
&lt;a class="reference external" href="http://conf.writethedocs.org/na/2013/"&gt;Write the Docs&lt;/a&gt;.
It was a great experience,
but was also rather stressful.
Organizing things is an interesting exercise in managing fear and risk.
There are so many possible outcomes,
and this is scary as hell.&lt;/p&gt;
&lt;p&gt;As an organizer,
I found myself looking for systems to minimize uncertainty.
Uncertainty is the breeding ground of fear.&lt;/p&gt;
&lt;section id="code-of-conduct"&gt;
&lt;h2&gt;Code of Conduct&lt;/h2&gt;
&lt;p&gt;We established a &lt;a class="reference external" href="http://conf.writethedocs.org/code-of-conduct.html"&gt;Code of Conduct&lt;/a&gt; for Write the Docs early on.
As the conference came closer,
it became really valuable for me as an organizer.
It was one aspect of the conference that I didn’t have to worry about.&lt;/p&gt;
&lt;p&gt;An event that violates our Code of Conduct might happen,
but you can’t remove that possibility from existing.
If anything did happen,
I felt prepared to deal with it.
This was much easier because of this &lt;a class="reference external" href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy#Internal_version_for_conference_staff"&gt;amazing document&lt;/a&gt;,
which provides an example internal policy to follow.&lt;/p&gt;
&lt;p&gt;The Code of Conduct also gave us a leg to stand on if there were any issues.
If we had to reprimand or expel someone,
they couldn’t claim ignorance of the policy.
We mentioned the Code of Conduct on conference signup,
on the website,
and in the opening address.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Adding a Code of Conduct for your conference will reduce a source of stress as an organizer.
If anything happens,
you have a playbook ready,
and you won’t be caught off guard.&lt;/p&gt;
&lt;p&gt;If you need a place to start,
the &lt;a class="reference external" href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy"&gt;Geek Feminism Wiki&lt;/a&gt; has you covered.
I hope that you consider adding a Code of Conduct to your next event.
It means a lot,
and will let you sleep easier at night.&lt;/p&gt;
&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/ericholschercom/checkouts/latest/site/blog/2013/nov/11/code-conduct-organizers-perspective.rst&lt;/span&gt;, line 54); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate implicit target name: “code of conduct”.&lt;/p&gt;
&lt;/aside&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/nov/11/code-conduct-organizers-perspective/"/>
    <summary>I helped organize my first conference last year,
Write the Docs.
It was a great experience,
but was also rather stressful.
Organizing things is an interesting exercise in managing fear and risk.
There are so many possible outcomes,
and this is scary as hell.</summary>
    <published>2013-11-11T20:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/nov/4/new-theme-read-the-docs/</id>
    <title>A New Theme for Read the Docs</title>
    <updated>2013-11-04T10:00:00+00:00</updated>
    <content type="html">&lt;section id="a-new-theme-for-read-the-docs"&gt;

&lt;p&gt;We have been &lt;a class="reference external" href="https://github.com/rtfd/readthedocs.org/pulse/monthly"&gt;hard at work&lt;/a&gt; improving &lt;a class="reference external" href="http://readthedocs.org/"&gt;Read the Docs&lt;/a&gt; over the past month.
A large amount of back end work has been going on,
and now we have a brand new documentation theme to showcase it.&lt;/p&gt;
&lt;p&gt;We have looked at how people use documentation,
and built a beautiful and highly functional &lt;a class="reference external" href="http://docs.readthedocs.org/en/latest/"&gt;new interface&lt;/a&gt; for browsing documentation.
We created a solution that looks great and works well.&lt;/p&gt;
&lt;section id="creation"&gt;
&lt;h2&gt;Creation&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://twitter.com/enemykite"&gt;Dave Snider&lt;/a&gt; approached me about a month ago,
interested in helping improve the documentation ecosystem.
We talked about what could improve the Read the Docs experience for the greatest number of our users,
and a new theme seemed like a great place to start.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-new-theme"&gt;
&lt;h2&gt;The New Theme&lt;/h2&gt;
&lt;section id="full-site"&gt;
&lt;h3&gt;Full site&lt;/h3&gt;
&lt;p&gt;The full documentation page is now beautiful and streamlined.
We got rid of the visual clutter and integrated a full-project Table of Contents in the sidebar.
When you go into a specific page,
a page-level contents get embedded in the sidebar as well.
This allows you to keep context inside the documentation when you land on a page from a search.&lt;/p&gt;
&lt;section id="old"&gt;
&lt;h4&gt;Old&lt;/h4&gt;
&lt;a class="reference external image-reference" href="http://i.imgur.com/hWOnmKy.png"&gt;&lt;img alt="http://i.imgur.com/hWOnmKy.png" src="http://i.imgur.com/hWOnmKy.png" style="width: 100%;" /&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;section id="new"&gt;
&lt;h4&gt;New&lt;/h4&gt;
&lt;a class="reference external image-reference" href="http://i.imgur.com/7oLntvR.png"&gt;&lt;img alt="http://i.imgur.com/7oLntvR.png" src="http://i.imgur.com/7oLntvR.png" style="width: 100%;" /&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="flyout"&gt;
&lt;h3&gt;Flyout&lt;/h3&gt;
&lt;p&gt;Read the Docs provides a lot of functionality for documentation projects.
The flyout is the avenue to accessing that functionality.
We need to pack all our functionality into this space.&lt;/p&gt;
&lt;p&gt;In the new theme,
the flyout is integrated into the bottom left of the theme.&lt;/p&gt;
&lt;section id="id1"&gt;
&lt;h4&gt;Old&lt;/h4&gt;
&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/ericholschercom/checkouts/latest/site/blog/2013/nov/4/new-theme-read-the-docs.rst&lt;/span&gt;, line 59); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate implicit target name: “old”.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;The old flyout let you:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Change versions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go back to Read the Docs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;a class="reference external image-reference" href="http://i.imgur.com/CBDPzbD.png"&gt;&lt;img alt="http://i.imgur.com/CBDPzbD.png" src="http://i.imgur.com/CBDPzbD.png" style="width: 50%;" /&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;section id="id2"&gt;
&lt;h4&gt;New&lt;/h4&gt;
&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/ericholschercom/checkouts/latest/site/blog/2013/nov/4/new-theme-read-the-docs.rst&lt;/span&gt;, line 71); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate implicit target name: “new”.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;The new flyout lets you:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Change versions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go back to Read the Docs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See the current version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Show if the current version is out of date&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download docs for offline viewing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contribute edits on GitHub or Bitbucket&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do a full-text search (Coming soon)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;a class="reference external image-reference" href="http://i.imgur.com/9DRP8fj.png"&gt;&lt;img alt="http://i.imgur.com/9DRP8fj.png" src="http://i.imgur.com/9DRP8fj.png" style="width: 50%;" /&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="mobile"&gt;
&lt;h3&gt;Mobile&lt;/h3&gt;
&lt;p&gt;The new theme really shines on mobile.
We provide a beautiful interface for phones and tablets,
while staying completely functional.&lt;/p&gt;
&lt;a class="reference external image-reference" href="http://i.imgur.com/29uEpVs.png"&gt;&lt;img alt="http://i.imgur.com/29uEpVs.png" src="http://i.imgur.com/29uEpVs.png" style="width: 100%;" /&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="using-it"&gt;
&lt;h2&gt;Using it&lt;/h2&gt;
&lt;p&gt;There are two ways that you can use this theme on Read the Docs.
The first is to simply leave your &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;html_theme&lt;/span&gt;&lt;/code&gt; variable set to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;default&lt;/span&gt;&lt;/code&gt;.
This is now the default Read the Docs theme.
You can also set &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;RTD_NEW_THEME&lt;/span&gt; &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;True&lt;/span&gt;&lt;/code&gt; in your project’s &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;conf.py&lt;/span&gt;&lt;/code&gt;,
and we will use our theme when building on Read the Docs no matter what &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;html_theme&lt;/span&gt;&lt;/code&gt; is set to.&lt;/p&gt;
&lt;p&gt;After you change these settings,
simply rebuild your docs and the theme should update.
More information about the theme can be found on the &lt;a class="reference external" href="http://docs.readthedocs.org/en/latest/theme.html"&gt;theme documentation page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to continue using the old theme,
simply set &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;RTD_OLD_THEME&lt;/span&gt; &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;True&lt;/span&gt;&lt;/code&gt; in your &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;conf.py&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This theme is a great addition to the documentation ecosystem.
It is highly functional and beautiful,
allowing users to easily navigate and find what they need.&lt;/p&gt;
&lt;p&gt;We have a few more tricks up our sleeves,
but theme is ready to launch today.
Over the next few weeks we’ll be adding a bit more functionality to it,
which should be even more delightful.&lt;/p&gt;
&lt;p&gt;I hope that you enjoy using it.
If you have any feedback,
please &lt;a class="reference external" href="http://github.com/snide/sphinx_rtd_theme/issues"&gt;open an issue&lt;/a&gt; on GitHub.
To follow announcements for Read the Docs,
follow &lt;a class="reference external" href="http://twitter.com/readthedocs"&gt;us on Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to support work like this,
help &lt;a class="reference external" href="https://www.gittip.com/readthedocs/"&gt;fund development on Read the Docs&lt;/a&gt; on Gittip.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/nov/4/new-theme-read-the-docs/"/>
    <summary>We have been hard at work improving Read the Docs over the past month.
A large amount of back end work has been going on,
and now we have a brand new documentation theme to showcase it.</summary>
    <published>2013-11-04T10:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/oct/24/google-book-sprint-2013/</id>
    <title>Google Summer of Code Book Sprint 2013</title>
    <updated>2013-10-24T10:00:00+00:00</updated>
    <content type="html">&lt;section id="google-summer-of-code-book-sprint-2013"&gt;

&lt;p&gt;Or how I learned to stop worrying and write a book.&lt;/p&gt;
&lt;p&gt;Last week, I flew down to Mountain View, Ca for the Google Summer of Code Book Sprint.
It is an event that brings open source projects together to write a book in a week.
20 people and 3 projects produced books over a sunny and well-fed week.
Kindly hosted by Google,
we spent 5 days hanging out at their campus writing away.
The three projects involved were:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OpenMRS - A medical records system used in many developing countries, originally created to help with AIDS in Africa.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;BRL-CAD - A CAD program for developing 3D models, one of the first open source projects from the United States Military.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mallard - An XML based documentation framework, from the Gnome Documentation Team.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;I was what they called a “free agent”,
someone not involved in a specific project that would help out.
Free agents are useful for providing an outside viewpoint to the projects.&lt;/p&gt;
&lt;p&gt;Writing a book was an amazing experience.
It has always felt out of my reach,
but time limiting it to a week (really 3 days),
made the goal more approachable.
I hope this post will help you conceptualize the process of how we wrote the book,
and possibly think about doing it yourself.
After this experience I think it is something that anyone can do,
as long as you keep the scope small.&lt;/p&gt;
&lt;p&gt;You can see the &lt;a class="reference external" href="http://flossmanuals.net/openmrs-developers-guide/"&gt;finished book&lt;/a&gt; for OpenMRS online.&lt;/p&gt;
&lt;section id="monday"&gt;
&lt;h2&gt;Monday&lt;/h2&gt;
&lt;section id="heresy"&gt;
&lt;h3&gt;Heresy&lt;/h3&gt;
&lt;p&gt;On Monday,
we got together to play some games to break the ice.
We were asked to write our most polarizing documentation viewpoints on an index card,
and they were read out loud in front of the room.
People arranged themselves along a spectrum of agreement and disagreement.
Physically arranged themselves,
by walking to different corners of the room.
Then we presented reasons for our views on the topics mentioned.&lt;/p&gt;
&lt;p&gt;Some examples are:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Developers MUST write documentation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WYSIWYG editors are evil&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;This exercise acted to show how diverse a crowd we had.
Some people were developers,
some were tech writers,
some were students,
some were teachers,
people ranged all across the spectrum of experience.
You learned to respect where people were coming,
which might be very different from your background.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="audience-and-outcomes"&gt;
&lt;h3&gt;Audience and Outcomes&lt;/h3&gt;
&lt;p&gt;After the ice breakers,
we did an exercise where each member of the team was broken into a separate group,
and had to write down their views for the book.
We were told to have &lt;strong&gt;up to 3 audiences in mind, and 3 take aways someone would have from reading the book&lt;/strong&gt;.
This allowed people to flesh out their idea of the book without other members of their team present.
The idea behind this exercise was to eliminate the group-think that happens when a group works to shape an idea.
It also allowed us free agents to get an idea of what book people were writing,
and which we might be able to help out with.&lt;/p&gt;
&lt;p&gt;Once we all fleshed out our ideas individually,
the groups got back together and talked through what they thought the book should be.
This is the stage where free agents chose their team as well,
so that they could see the vision for the book.&lt;/p&gt;
&lt;p&gt;As a project group,
we then chose the audiences and takeaways for the book.
This is the part where I joined the OpenMRS group.
They were writing an introductory book for developers who wanted to get involved in the project,
and I felt I could help out as a developer coming to the project fresh.&lt;/p&gt;
&lt;p&gt;We assumed everyone would be new to OpenMRS. We then broke this down into 3 types of things people might be new to:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Developers new to Health IT&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developers new to Open Source&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developers new to Software Development in General&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The outcomes we wanted people to come away with were:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Understand how to become a member of the OpenMRS community&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be able to get the OpenMRS environment set up&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feel confident doing development on OpenMRS modules&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="tuesday"&gt;
&lt;h2&gt;Tuesday&lt;/h2&gt;
&lt;section id="table-of-contents"&gt;
&lt;h3&gt;Table of Contents&lt;/h3&gt;
&lt;p&gt;On Tuesday we got together in the morning to come up with a table of contents based on our audience and outcomes.
Having the audience and outcomes written down really helped guide and focus the book.
At each step someone could ask “is this really serving our intended audience?”
We only had 2 and a half days to actually write,
so we needed to aggressively trim the content to something that we could accomplish in that time.&lt;/p&gt;
&lt;p&gt;Our table of contents ended up looking like:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Introduction&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Welcome to OpenMRS!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Saving Lives With Software&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Need for Health IT&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Our Response&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenMRS Today&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Community&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Working Cooperatively&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaboration Tools&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Technology&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Architecture&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Model&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Development Process&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get Set Up&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;Case Study&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating your First Module&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="simple"&gt;
&lt;dt&gt;What’s Next?&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get Involved&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get Support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developer Checklist&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="promotion-plan"&gt;
&lt;h3&gt;Promotion Plan&lt;/h3&gt;
&lt;p&gt;We also talked through a plan to release the book into the community.
There was an understanding that if you don’t promote the book,
the time spent writing it might go to waste.
Having a way to build momentum for the project in the community would ensure the book continued to live on after this week.&lt;/p&gt;
&lt;p&gt;Our original promotion plan looked like:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Blog post announcing the book on the project blog&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tell developers in the project about it, so they can recommend it to people&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add it to all of our beginner documentation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talk with existing developers to make sure the information in the book is correct&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a JIRA project so we can track issues with the book&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a survey so that we can get feedback on the book&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure that updating the book is added to release processes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="compare-and-contrast"&gt;
&lt;h3&gt;Compare and Contrast&lt;/h3&gt;
&lt;p&gt;After coming up with ideas inside our own teams,
we sent a member to each other team to hear what they had come up with.
We were encouraged to steal their ideas if they had something interesting,
and to provide feedback if we saw something missing.
This worked really well at removing group think again,
and making sure that you didn’t have a huge blind spot in your plans.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="start-writing"&gt;
&lt;h3&gt;Start writing&lt;/h3&gt;
&lt;p&gt;After lunch on Tuesday,
it was time to start writing.
This part was referred to as “content production”,
there was a specific focus on just getting pen to paper.
Editing would come later.
We worked until 8 in the evening,
and then headed back to the hotel.&lt;/p&gt;
&lt;p&gt;Around the pool that evening we spent time hanging out and talking about ideas.
In particular I talked to the Mallard team,
comparing and contrasting it to Sphinx.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="wednesday"&gt;
&lt;h2&gt;Wednesday&lt;/h2&gt;
&lt;p&gt;Content production continued Wednesday.
The goal was to have a complete book by Wednesday night,
and then spend Thursday refining and editing it down.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="thursday"&gt;
&lt;h2&gt;Thursday&lt;/h2&gt;
&lt;p&gt;Thursday was spent writing until around lunch,
then the afternoon was spent editing.
We formed groups of 2 or 3 which looked over a section at a time.
Each section had an average of 3 chapters,
and you looked to make sure the flow of all the chapters made sense together.
We would each read a chapter and then talk over each of the issues that we found.&lt;/p&gt;
&lt;p&gt;At 6pm on Thursday we called the books done,
and all celebrated.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="friday"&gt;
&lt;h2&gt;Friday&lt;/h2&gt;
&lt;p&gt;On Friday we got together to do a postmortem on the process.
We talked again about the promotion plan,
assigning items to specific people to make sure they got done.&lt;/p&gt;
&lt;p&gt;This was all along the theme of continuing momentum forward.
We now had a list of tasks,
with people who were responsible for getting them done.
This made me feel a lot more confident that our work would live on,
and really make a difference in the community.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="take-aways"&gt;
&lt;h2&gt;Take aways&lt;/h2&gt;
&lt;p&gt;I think the mixing of ideas behind groups was really key to success in this endeavor.
Group think is potent,
and having someone with an outside perspective come in can really reveal your blind spots.&lt;/p&gt;
&lt;p&gt;Along these lines,
the evenings hanging out by the pool talking through your work was really important.
You can’t sit and write 24/7,
and having a place to escape and let you ideas breathe really allows you to form them.
I think throughout the week everyone was thinking about their book pretty non-stop,
but were weren’t necessarily writing non-stop.&lt;/p&gt;
&lt;p&gt;I come away from this experience with a lot of inspiration and perspective.
Writing a book is something that anyone can do,
with a little help from their friends.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/oct/24/google-book-sprint-2013/"/>
    <summary>Or how I learned to stop worrying and write a book.</summary>
    <published>2013-10-24T10:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/oct/7/announcing-grok-the-docs/</id>
    <title>Announcing Grok the Docs</title>
    <updated>2013-10-08T10:38:00+00:00</updated>
    <content type="html">&lt;section id="announcing-grok-the-docs"&gt;

&lt;blockquote&gt;
&lt;div&gt;&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Are my docs working?&lt;/div&gt;
&lt;div class="line"&gt;Are folks getting what they need?&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;I’ve asked myself these questions a lot.
Historically I have put Google Analytics on my doc pages,
and called it good.
I would browse over the data every once in a while,
gleaning basically zero information out of it.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://rtfd.org"&gt;Read the Docs&lt;/a&gt; hosts a lot of documentation,
and I want to help these folks understand how their docs are being used.
So I have been working on a project for the last month called &lt;a class="reference external" href="https://api.grokthedocs.com"&gt;Grok the Docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://api.grokthedocs.com"&gt;Grok the Docs&lt;/a&gt; is a bit different,
with the main difference being it embeds the information in the page for you.
This is interesting because it adds context to the data.
I believe that context is the first step from turning data into information.
The main interface to Grok the Docs are keyboard shortcuts within the documentation page.
So you can access information about the current page you’re on,
while you’re browsing.
Check out the &lt;a class="reference internal" href="../../2013/oct/7/announcing-grok-the-docs/#example"&gt;&lt;span class="std std-ref"&gt;Example&lt;/span&gt;&lt;/a&gt; below to see it in action.&lt;/p&gt;
&lt;p&gt;Surfacing analytic data in the page is great for the maintainer and user alike.
The maintainer can see what parts of their docs are being heavily used,
and which parts aren’t being used as much.
Users can see where other people are ending up,
which is probably where they want to go too.&lt;/p&gt;
&lt;p&gt;This is very much just a tech demo currently.
I would love feedback from folks about how I could improve the display of the data.
Currently it’s something that you &lt;a class="reference external" href="https://api.grokthedocs.com/#try-it-out"&gt;need to enable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It would be great if you have ideas for other additoinal functionality that could be added.
This is very much an experiment currently,
so I’d love to hear any thoughts you have.
Please &lt;a class="reference external" href="mailto:eric&amp;#37;&amp;#52;&amp;#48;ericholscher&amp;#46;com"&gt;email&lt;/a&gt; or &lt;a class="reference external" href="http://twitter.com/ericholscher"&gt;tweet&lt;/a&gt; me if you have feedback or ideas.&lt;/p&gt;
&lt;p&gt;Once the code is more baked and solid,
the plan is to turn it on for all Read the Docs users.
After I do a full rollout across Read the Docs,
I’ll consider opening it to other people.
The code is currently closed source,
and will likely remain so.
The idea is that this might become a product that can suppliment my Gittip income.
If it fails as a product,
I will then open source it.
That said,
it will always be free for documentation on Read the Docs.&lt;/p&gt;
&lt;p&gt;This project was done as part of my &lt;a class="reference internal" href="../../2013/sep/25/help-me-improve-documentation/"&gt;&lt;span class="doc"&gt;ongoing work&lt;/span&gt;&lt;/a&gt; to improve documentation.
If you think this work is important,
you should &lt;a class="reference external" href="http://www.gittip.com/ericholscher"&gt;support me on Gittip&lt;/a&gt;.&lt;/p&gt;
&lt;section id="example"&gt;
&lt;span id="id1"&gt;&lt;/span&gt;&lt;h2&gt;Example&lt;/h2&gt;
&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/ericholschercom/checkouts/latest/site/blog/2013/oct/7/announcing-grok-the-docs.rst&lt;/span&gt;, line 69); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate implicit target name: “example”.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;This shows how user might harness this data.&lt;/p&gt;
&lt;img alt="https://dl.dropboxusercontent.com/u/372293/GTD-Example.gif" src="https://dl.dropboxusercontent.com/u/372293/GTD-Example.gif" style="width: 800px;" /&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/oct/7/announcing-grok-the-docs/"/>
    <summary>I’ve asked myself these questions a lot.
Historically I have put Google Analytics on my doc pages,
and called it good.
I would browse over the data every once in a while,
gleaning basically zero information out of it.</summary>
    <published>2013-10-08T10:38:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/oct/1/sphinx-live-preview/</id>
    <title>Sphinx Live Preview</title>
    <updated>2013-10-01T19:00:00+00:00</updated>
    <content type="html">&lt;section id="sphinx-live-preview"&gt;

&lt;p&gt;For a long time,
there has been a live preview site for reStructuredText: &lt;a class="reference external" href="http://rst.ninjs.org/"&gt;http://rst.ninjs.org/&lt;/a&gt;.
It is really fantastic for learning the language.
The immediate feedback is really valuable in helping you expirment and see how things work.&lt;/p&gt;
&lt;p&gt;I think that this tool would be great for people to have with &lt;a class="reference external" href="http://sphinx-doc.org/"&gt;Sphinx&lt;/a&gt; as well.
I know a lot of people use Sphinx,
and then end up on that page,
and random things don’t work because they are extensions to reStructuredText.
So, I went ahead and forked the app to support Sphinx.&lt;/p&gt;
&lt;p&gt;I present: &lt;a class="reference external" href="http://livesphinx.herokuapp.com/"&gt;http://livesphinx.herokuapp.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is still very much a work in progress.
The output should be themed nicely,
and support syntax highlighting.
If you have any feedback or requests,
please &lt;a class="reference external" href="http://twitter.com/ericholscher"&gt;tweet&lt;/a&gt; or &lt;a class="reference external" href="mailto:eric&amp;#37;&amp;#52;&amp;#48;ericholscher&amp;#46;com"&gt;email&lt;/a&gt; me.&lt;/p&gt;
&lt;p&gt;This project was done as part of my &lt;a class="reference internal" href="../../2013/sep/25/help-me-improve-documentation/"&gt;&lt;span class="doc"&gt;ongoing work&lt;/span&gt;&lt;/a&gt; to improve documentation.
If you think this work is important,
you should &lt;a class="reference external" href="http://www.gittip.com/ericholscher"&gt;support me on Gittip&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/oct/1/sphinx-live-preview/"/>
    <summary>For a long time,
there has been a live preview site for reStructuredText: http://rst.ninjs.org/.
It is really fantastic for learning the language.
The immediate feedback is really valuable in helping you expirment and see how things work.</summary>
    <published>2013-10-01T19:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/sep/30/writing-beginners-guide-to-docs/</id>
    <title>Writing a Beginners Guide to Documentation</title>
    <updated>2013-09-30T09:00:00+00:00</updated>
    <content type="html">&lt;section id="writing-a-beginners-guide-to-documentation"&gt;

&lt;p&gt;A few days ago I &lt;a class="reference internal" href="../../2013/sep/25/help-me-improve-documentation/"&gt;&lt;span class="doc"&gt;started a campaign&lt;/span&gt;&lt;/a&gt; to improve documentation.
Today I have the first results to show from this work.&lt;/p&gt;
&lt;p&gt;It started first with a &lt;a class="reference external" href="http://docs.writethedocs.org/en/latest/presentations/#beginner-presentations"&gt;presentation&lt;/a&gt; that I presented at PDX Python here in Portland.
The talk was very well received,
so I decided to write it up.&lt;/p&gt;
&lt;p&gt;So, I present &lt;a class="reference external" href="http://docs.writethedocs.org/en/latest/writing/beginners-guide-to-docs/"&gt;A beginners guide to writing documentation&lt;/a&gt;.
It is still very much a work in progress,
so I hope that you can provide feedback.
The idea behind the presentation and document is to allow people modify and present it themselves.
I am hoping to build documents and presentations for other aspects of documentation as well.
If you want to give this presentation,
I would love for you to &lt;a class="reference external" href="mailto:eric&amp;#37;&amp;#52;&amp;#48;ericholscher&amp;#46;com"&gt;email me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I said,
this work was done as part of my ongoing work on Documentation.
If you think this work is important,
you should &lt;a class="reference external" href="http://www.gittip.com/ericholscher"&gt;support me on Gittip&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/sep/30/writing-beginners-guide-to-docs/"/>
    <summary>A few days ago I started a campaign to improve documentation.
Today I have the first results to show from this work.</summary>
    <published>2013-09-30T09:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.ericholscher.com/blog/2013/sep/28/letter-to-an-old-friend/</id>
    <title>A letter to an old friend</title>
    <updated>2013-09-28T01:00:00+00:00</updated>
    <content type="html">&lt;section id="a-letter-to-an-old-friend"&gt;

&lt;p&gt;A letter I wrote to an old friend Josh,
after I had come home from the PCT.
It was sent on August 7th, 2013.
It captures my thoughts on the trail pretty well.&lt;/p&gt;
&lt;section id="text"&gt;
&lt;h2&gt;Text&lt;/h2&gt;
&lt;p&gt;Howdy,&lt;/p&gt;
&lt;p&gt;Indeed the trail satisfied many parts of the soul. Sadly I hurt my foot and had to end the trail before I reached the end, but I still spent enough time out there to understand some of the lessons it has to teach.&lt;/p&gt;
&lt;p&gt;I always like to think back to how life was for me before college. It’s crazy how much of a different person I was going in and coming out. We chiseled away at the possibilities of humanity, and ended up with a pretty good statue at the end.&lt;/p&gt;
&lt;p&gt;Being on the trail is the closest that I have had to that feeling in my adult life. You are given the time to think without constraint, and bullshit all day long with amazing people. It feels much like college, in that the friends I’ve made will be life long.&lt;/p&gt;
&lt;p&gt;It has changed what I want to do with myself for the foreseeable future, seeking out more situations where the intensity and breadth of the human soul can come to bear. It felt like the most natural thing in the world to slip into walking everyday, and living a simple life.&lt;/p&gt;
&lt;p&gt;Simple life with good people, a profound and fundamental way to enjoy the world. It showed me how full of bullshit and tedium the “normal” world can be, and how a reduced subset of choice can really expand your happiness.&lt;/p&gt;
&lt;p&gt;The months I spent on the trail were some of the happiest of my life. I will look to hopefully relive them again in a few years, but like many things in life, the first time is likely to be the sweetest. Hopefully I won’t go through life looking backwards, trying to feel it again, and will find solace and peace again.&lt;/p&gt;
&lt;p&gt;Coming back to reality has been hard, but Portland is a good place to come back to. I have been surrounding my self with good food, mostly from Farmers Markets. Lots of berries and salads, things you can’t eat on the trail. I am also looking into doing some bike touring, once my foot heals, so that I can still explore. Exploring on bike will be a different experience, but one I think I’ll quite enjoy.&lt;/p&gt;
&lt;p&gt;I now also have the experience to go and live in the woods for a week at a time. This freedom opens a lot of possibility for adventure in the future. Having amazing tools, the knowledge , wherewithal, and drive to go out into nature again makes me happy.&lt;/p&gt;
&lt;p&gt;May there be many more adventures for us both.&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Cheers,&lt;/div&gt;
&lt;div class="line"&gt;Eric&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.ericholscher.com/blog/2013/sep/28/letter-to-an-old-friend/"/>
    <summary>A letter I wrote to an old friend Josh,
after I had come home from the PCT.
It was sent on August 7th, 2013.
It captures my thoughts on the trail pretty well.</summary>
    <published>2013-09-28T01:00:00+00:00</published>
  </entry>
</feed>
