<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://code.secondbit.org/gifs/api/</link>
    <language>en-us</language>

    <title>gifs/api Changelog</title>
    <description>gifs/api Changelog</description>
    <item>
    <title>[default] Update import path.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/03e846421572</guid>
             <link>http://code.secondbit.org/gifs/api/rev/03e846421572</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>03e846421572</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td>default</td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td>tip</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Update import path.<br/>
<br/>
Update our import path so it will work without aliasing.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>gifsd/etcd.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Wed, 17 Dec 2014 22:26:23 -0500</pubDate>
</item>
<item>
    <title>Create a Dockerfile and binary.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/21787ed8a185</guid>
             <link>http://code.secondbit.org/gifs/api/rev/21787ed8a185</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>21787ed8a185</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Create a Dockerfile and binary.<br/>
<br/>
Write a Dockerfile that compiles everything and runs it.<br/>
<br/>
Start the binary; load a Context from etcd, and start everything running. The<br/>
binary is pretty useless until we get HTTP handlers, though, obviously.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>Dockerfile<br />gifsd/etcd.go<br />gifsd/server.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:22:17 -0400</pubDate>
</item>
<item>
    <title>Make UsageTracker an interface, ditch the channel interface.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/eb450538f079</guid>
             <link>http://code.secondbit.org/gifs/api/rev/eb450538f079</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>eb450538f079</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Make UsageTracker an interface, ditch the channel interface.<br/>
<br/>
Stop using channels to track usage. Just call functions.<br/>
<br/>
Make UsageTracker an interface, so there can be multiple implementations, and<br/>
create the in-memory implementation.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>context.go<br />usage.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:21:02 -0400</pubDate>
</item>
<item>
    <title>Simplify upload.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/b5d88d57d587</guid>
             <link>http://code.secondbit.org/gifs/api/rev/b5d88d57d587</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>b5d88d57d587</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Simplify upload.<br/>
<br/>
Simplify the upload code by not running the hashing async, which requires fewer<br/>
copy operations and less channel synchronization. Also, take advantage of the<br/>
fact that PipeWriters and PipeReaders will return an error to the<br/>
PipeReaders/PipeWriters (respectively) when read/write is called (respectively)<br/>
to avoid passing back errors through channels.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>upload.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:20:06 -0400</pubDate>
</item>
<item>
    <title>Upload is no longer async, memstorage is parallel-safe.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/1bbbe113f599</guid>
             <link>http://code.secondbit.org/gifs/api/rev/1bbbe113f599</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>1bbbe113f599</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Upload is no longer async, memstorage is parallel-safe.<br/>
<br/>
Upload no longer needs to be run async (it can be run inside a goroutine), so it<br/>
now returns stuff instead of taking a channel as an argument. This will make it<br/>
easier to implement, as all the async stuff is an abstraction above, and<br/>
therefore doesn't need to be worried about for each reimplementation.<br/>
<br/>
The memstorage type is no longer exported and can now be safely used by multiple<br/>
goroutines, thanks to the sync package.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>storage.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:17:29 -0400</pubDate>
</item>
<item>
    <title>Remove user info from memstore.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/96aac3ae74e6</guid>
             <link>http://code.secondbit.org/gifs/api/rev/96aac3ae74e6</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>96aac3ae74e6</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Remove user info from memstore.<br/>
<br/>
Remove all the user related methods and properties from the memstore, as those<br/>
are all going to be superseded by code.secondbit.org/auth anyways.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>memstore.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:13:23 -0400</pubDate>
</item>
<item>
    <title>Stub out the rest of our datastore tests.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/18cb30e077ba</guid>
             <link>http://code.secondbit.org/gifs/api/rev/18cb30e077ba</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>18cb30e077ba</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Stub out the rest of our datastore tests.<br/>
<br/>
Seriously, just define the functions we eventually want to write.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>datastore_test.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:12:23 -0400</pubDate>
</item>
<item>
    <title>Remove user functions and logins, fix UpdateCollection.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/d3ba1115bfd0</guid>
             <link>http://code.secondbit.org/gifs/api/rev/d3ba1115bfd0</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>d3ba1115bfd0</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Remove user functions and logins, fix UpdateCollection.<br/>
<br/>
UpdateCollection now takes a CollectionChange argument, rather than overwriting<br/>
everything.<br/>
<br/>
Remove all our user related code, as that's going to be superseded by<br/>
code.secondbit.org/auth, anyways.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>datastore.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Fri, 17 Oct 2014 07:11:56 -0400</pubDate>
</item>
<item>
    <title>Spike out functionality and tests.</title>
    <guid isPermaLink="true">http://code.secondbit.org/gifs/api/rev/08ec88016e2f</guid>
             <link>http://code.secondbit.org/gifs/api/rev/08ec88016e2f</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>08ec88016e2f</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Spike out functionality and tests.<br/>
<br/>
Create our interfaces around storing data and retrieving it.<br/>
<br/>
Create an in-memory implementation of our interfaces, for testing and rapid dev<br/>
purposes.<br/>
<br/>
Begin sketching out what our unit tests look like.<br/>
<br/>
Create our Google Cloud Storage datastore implementation.<br/>
<br/>
Sketch out an idea for a usage collection process to keep track of which users<br/>
are actually using stuff.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>.hgignore<br />LICENSE<br />context.go<br />datastore.go<br />datastore_test.go<br />memstore.go<br />storage.go<br />upload.go<br />usage.go<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Wed, 27 Aug 2014 22:34:02 -0400</pubDate>
</item>

  </channel>
</rss>