<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>psych0tik</title>
	<atom:link href="http://blog.psych0tik.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.psych0tik.net</link>
	<description>Use a hammer</description>
	<lastBuildDate>Mon, 06 May 2013 03:03:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IRC Upgrades (and downtime) &#8230; [and other issues]</title>
		<link>http://blog.psych0tik.net/2013/05/irc-upgrades-and-downtime-and-other-issues/</link>
		<comments>http://blog.psych0tik.net/2013/05/irc-upgrades-and-downtime-and-other-issues/#comments</comments>
		<pubDate>Sun, 05 May 2013 21:05:18 +0000</pubDate>
		<dc:creator>samurai</dc:creator>
				<category><![CDATA[psych0tik News]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[psych0tik]]></category>
		<category><![CDATA[storm]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1379</guid>
		<description><![CDATA[The IRC has been a bit dodgy the week due to some updates we&#8217;ve been working to push out.  As part of our irregular upgrade cycles, I&#8217;ve been working on getting Storm re-built and back online.  A large part of &#8230; <a href="http://blog.psych0tik.net/2013/05/irc-upgrades-and-downtime-and-other-issues/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The IRC has been a bit dodgy the week due to some updates we&#8217;ve been working to push out.  As part of our irregular upgrade cycles, I&#8217;ve been working on getting Storm re-built and back online.  A large part of this process involved adding Storm back to the IRC network.</p>
<p>Following psych0tik standard operating procedure, this was procrastinated and when I finally got around to doing it, we discovered magikarp had file system corruption and required a reboot and fsck.  With the magikarp splashing around ineffectively, we pointed irc.psych0tik.net to (a mostly unconfigured) Storm.  Shortly there after, we brought magikarp back online, hashed out the final issues with linking, and connected the two.</p>
<p>During magikarp&#8217;s reboot, our services database was corrupted and due to lack of backups (lazy.jpg), we&#8217;ve had to revert back to a version from about 6 months ago.  We apologize for this inconvenience.</p>
<p>With that all said, we do have a shiny new IRC node to connect to.  Now that Storm is back and functional, I&#8217;ll be working to restore some of the services that have been absent for the last few months.  This will include proxyElite and our GoogleSharing proxy.</p>
<p>Our recommended IRC domain, irc.psych0tik.net, has been re-pointed at magikarp and users who wish to use a US-based server (or otherwise desire to use Storm instead) should connect directly to storm.psych0tik.net.  As always, you&#8217;ll need to use SSL on port 6697 is required.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/05/irc-upgrades-and-downtime-and-other-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolving awkward merges</title>
		<link>http://blog.psych0tik.net/2013/04/resolving-awkward-merges/</link>
		<comments>http://blog.psych0tik.net/2013/04/resolving-awkward-merges/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 12:10:47 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Hax]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[groundstation]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1375</guid>
		<description><![CDATA[On my way home tonight I went to ship a feature on groundstation that’d been hanging around for a while. Lots of work had happened on both sides, and so when I went to merge it, I was greeted by &#8230; <a href="http://blog.psych0tik.net/2013/04/resolving-awkward-merges/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>On my way home tonight I went to ship a feature on groundstation that’d been<br />
hanging around for a while. Lots of work had happened on both sides, and so<br />
when I went to merge it, I was greeted by a LOT of merge conflicts.</p>
<p>First I tried just rebasing it on master, but when that fell over in the same<br />
way I decided to take a new approach. What I did is rougly analogous to a<br />
rebase, with the exception that I didn’t have to lose any history (I’ll end up<br />
with the original commits merged) but I also won’t create a ton of noise in my<br />
logs.</p>
<p>I opened <a href="http://jonas.nitro.dk/tig/">tig</a> with the graph view of my branch and master <code>tig origin/master features/tip_signing</code>,<br />
and then merged each commit by hand.</p>
<p>Having the diff that each commit had on the topic branch makes this easy, even<br />
if the original commit was a PITA.</p>
<p>Once I finished merging, I was left with this monstrosity:</p>
<p><code><br />
*   5194cc8 (HEAD, master) Merge commit '6e27da1' Richo Healey 8 seconds ago<br />
|\<br />
| * 6e27da1 (origin/features/tip_signing, features/tip_signing) Clean up the input form richo 2 weeks ago<br />
* |   0fbf1f1 Merge commit 'c417108' Richo Healey 2 minutes ago<br />
|\ \<br />
| |/<br />
| * c417108 Border around input bofixupx richo 2 weeks ago<br />
* |   d90c150 Merge commit 'a21bca6' Richo Healey 3 minutes ago<br />
|\ \<br />
| |/<br />
| * a21bca6 Clean up styling richo 2 weeks ago<br />
| * 2b4753d Give airship the option of a signing key richo 2 weeks ago<br />
| * 1f0e7f3 Use good/bad colours from bootstrap richo 2 weeks ago<br />
* |   c1a0c50 Merge commit '1d4e710' Richo Healey 3 minutes ago<br />
|\ \<br />
| |/<br />
| * 1d4e710 Send signature status to the client properly richo 2 weeks ago<br />
| * 10db7fe Show signature status in the UI richo 2 weeks ago<br />
* |   1d88e3a Merge commit 'f46ac6a' Richo Healey 3 minutes ago<br />
|\ \<br />
| |/<br />
| * f46ac6a Squashed commit of the following: richo 2 weeks ago<br />
* |   7e56994 Merge commit '2fa4d54' Richo Healey 4 minutes ago<br />
|\ \<br />
| |/<br />
| * 2fa4d54 Script to sign grefs richo 2 weeks ago<br />
| * 59d2004 Implement lookup of crypto adaptors richo 2 weeks ago<br />
* |   d2dede5 Merge commit '70bcce1' Richo Healey 5 minutes ago<br />
|\ \<br />
| |/<br />
| * 70bcce1 Send signatures with responses in airship richo 3 weeks ago<br />
* |   5de2154 Merge commit 'ce2327c' Richo Healey 7 minutes ago<br />
|\ \<br />
| |/<br />
| * ce2327c Load crypto adaptor on station richo 3 weeks ago<br />
* |   aa627f0 Merge commit 'f76d976' Richo Healey 8 minutes ago<br />
|\ \<br />
| |/<br />
| * f76d976 Nuke a ton of dead user code richo 3 weeks ago<br />
| * 0e6e9fb Test deals with untrusted signatures richo 3 weeks ago<br />
| * d4f2b35 Sanely marshall and store signatures richo 3 weeks ago<br />
| * dee7b12 Tests for get signature richo 3 weeks ago<br />
* |   2da7487 Merge commit 'ea46f19632003397a64650a4aa755416288dfcf9' Richo Healey 15 minutes ago<br />
|\ \<br />
| |/<br />
| * ea46f19 Represent tips as (tip, signature) tuples richo 3 weeks ago<br />
* | fb531e2 (origin/master, features/integration-testing/master) Test that we can send objects between nodes Richo<br />
* | 11f6f12 (origin/features/integration-testing/master) Clean up after running tests Richo Healey 4 days ago<br />
* | 2a5fb9a Simple test that stations can connect to one another Richo Healey 4 days ago<br />
* | 73e0a7c Cleanup stream_client Richo Healey 4 days ago<br />
* | ba7172a (features/socket_api) Test station init Richo Healey 2 weeks ago<br />
* | 433ffc1 Bootstrap stations from environment richo 2 weeks ago<br />
* |   2048da0 Merge pull request #23 from richo/bugs/ff-rendering Richo Healey 2 weeks ago<br />
</code></p>
<p>Once you’ve done this merge, you just need the name of the tree (Not the commit!) which you can get from <code>git cat-file -p HEAD</code>, which will emit something like:</p>
<p><code></p>
<p>tree 2efc6dee9eb621a1e95e88294228456d88d7790f<br />
parent 0fbf1f189dd6d6e155d3e6ccd1750533e31c2d11<br />
parent 6e27da1e890adfff452c3a4b6807d48e15614bc6<br />
author Richo Healey <richo@psych0tik.net> 1366797843 +1000<br />
committer Richo Healey <richo@psych0tik.net> 1366797843 +1000</p>
<p>Merge commit ‘6e27da1’</p>
<p></code></p>
<p>Now it’s time to construct our “real” merge:</p>
<p><code>echo "Merge branch 'features/tip_signing'" | git commit-tree -p origin/master -p features/tip_signing 2efc6dee9eb621a1e95e88294228456d88d7790f</code></p>
<p>This will commit the final tree we arrived at, as a new commit that’s a child<br />
of both master and our topic branch (a merge), but without the messy history.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/04/resolving-awkward-merges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Natalya is shutting down</title>
		<link>http://blog.psych0tik.net/2013/04/natalya-is-shutting-down/</link>
		<comments>http://blog.psych0tik.net/2013/04/natalya-is-shutting-down/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 10:58:42 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[psych0tik News]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1371</guid>
		<description><![CDATA[After a few years of faithful service (Can you believe it&#8217;s been 5 years? I just renewed the psych0tik.net domain yesterday. 5 years!) it&#8217;s natalya&#8217;s time to rest. Ongoing issues with the webhosts, and basically a reshuffle of where I &#8230; <a href="http://blog.psych0tik.net/2013/04/natalya-is-shutting-down/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>After a few years of faithful service (Can you believe it&#8217;s been 5 years? I just renewed the psych0tik.net domain yesterday. 5 years!) it&#8217;s natalya&#8217;s time to rest. Ongoing issues with the webhosts, and basically a reshuffle of where I want to spend my hosting budget has led to this.</p>
<p>As far as I know, the only live service depending on this machine is syncvid.info, which will probably either shutdown or be moved elsewhere, but no external disruption is planned. On the offchance you have some dependency we don&#8217;t know about- feel free to email staff@psych0tik.net</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/04/natalya-is-shutting-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bower is fucked</title>
		<link>http://blog.psych0tik.net/2013/03/bower-is-fucked/</link>
		<comments>http://blog.psych0tik.net/2013/03/bower-is-fucked/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 15:45:36 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[bower]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1366</guid>
		<description><![CDATA[Or alternately, front end infrastructure is fucked. I decided to port groundstation to use bower for it&#8217;s frontend assets this evening. Technically, the component in question is airship, but that&#8217;s irrelevant. I need to pull in bootstrap, jquery, backbone and &#8230; <a href="http://blog.psych0tik.net/2013/03/bower-is-fucked/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Or alternately, front end infrastructure is fucked.</p>
<p>I decided to port <a href="https://github.com/richo/groundstation">groundstation</a> to use bower for it&#8217;s frontend assets this evening. Technically, the component in question is airship, but that&#8217;s irrelevant. I need to pull in bootstrap, jquery, backbone and a few other bits and pieces and:</p>
<ol>
<li>It&#8217;s a pain in the ass to stay up to date</li>
<li>Having all that code vendored screws with all my metrics</li>
</ol>
<p>So off to bower land I go!</p>
<p>Cool, I can create a bowerrc with the target directory, and a component.json with some dependencies and run bower install and&#8230;.</p>
<pre>
bower error 1 not found

There were errors, here's a summary of them:
- 1 not found
</pre>
<p>What the fuck is this. Oh, right, I can&#8217;t pass an array of dependencies in, it has to be a hash of dependency => version pairs. Cool. Pretty obvious from the error message right?</p>
<p>So I fix that, and run bower install and&#8230;</p>
<pre>
There were errors, here's a summary of them:
- jquery ENOENT, lstat '/Users/richo/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9/.git/tags.3799'
</pre>
<p>At this point I&#8217;m fucking positive they&#8217;re just dicking with me. I run the same thing with &#8211;debug</p>
<pre>
There were errors, here's a summary of them:
- jquery ENOENT, lstat '/Users/richo/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9/.git/tags.3799'
</pre>
<p>Obviously. Then you should see my jaw put a three foot divot in the floor when I notice that <strong>all of these commands exited 0</strong>.</p>
<p>Through trial and error, I manage to get a bit further to see:</p>
<pre>
There were errors, here's a summary of them:
- jquery ENOENT, lstat '/Users/richo/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9/.git/tags.22124'
- underscore Didn't get expected byte count
expect: 667648
actual: 847834
</pre>
<p>and then again my jaw meets floor when I notice that <strong>It&#8217;s installing these assets anyway</strong>.</p>
<p>I&#8217;ve already opened a <a href="https://github.com/twitter/bower/pull/322">Pull request</a> for the most trivial of these issues but seriously.. come on guys. This isn&#8217;t cool.</p>
<p>Chances are significant I&#8217;m going to roll my own ghetto make(1) based setup, because at least it does what it says on the tin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/03/bower-is-fucked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Explicitly testing race conditions</title>
		<link>http://blog.psych0tik.net/2013/02/explicitly-testing-race-conditions/</link>
		<comments>http://blog.psych0tik.net/2013/02/explicitly-testing-race-conditions/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 16:12:37 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[psych0tik News]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1363</guid>
		<description><![CDATA[This post relates to programming in general, but specifically to Python (because that&#8217;s where I&#8217;m working at the moment). I&#8217;ve been working on groundstation lately, which leverages git as it&#8217;s storage backend, but also assumes that all operations are threadsafe &#8230; <a href="http://blog.psych0tik.net/2013/02/explicitly-testing-race-conditions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This post relates to programming in general, but specifically to Python (because that&#8217;s where I&#8217;m working at the moment).</p>
<p>I&#8217;ve been working on <a href="https://github.com/richo/groundstation">groundstation</a> lately, which leverages git as it&#8217;s storage backend, but also assumes that all operations are threadsafe and concurrent. As such, I want to write testcases for it&#8217;s internal implementation that actually excercise these race conditions to assert their sanity.</p>
<p>Obviously, I can litter my code with optional callbacks, but that&#8217;s pretty much awful. I never thought I&#8217;d genuinely wish python had macros or a preprocessor. Do you know of a sane way to approach this?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/02/explicitly-testing-race-conditions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another sleeping experiment</title>
		<link>http://blog.psych0tik.net/2013/02/another-sleeping-experiment/</link>
		<comments>http://blog.psych0tik.net/2013/02/another-sleeping-experiment/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 13:00:01 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[psych0tik News]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1359</guid>
		<description><![CDATA[I&#8217;d like to discard time for a week. This year I&#8217;ve decide to embark more on a quest to explore sleep, and the way I experience it personally. It&#8217;s something I&#8217;ve struggled with as long as I remember, and I &#8230; <a href="http://blog.psych0tik.net/2013/02/another-sleeping-experiment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;d like to discard time for a week.</p>
<p>This year I&#8217;ve decide to embark more on a quest to explore sleep, and the way I experience it personally. It&#8217;s something I&#8217;ve struggled with as long as I remember, and I figure that by gathering more data points I can at least start to unwind this puzzle.</p>
<p>A few days ago I was considering an experiment, and this post serves as a braindump to flesh out the idea, as well as hopefully a place to gather feedback and ideally hear from someone who&#8217;s tried something like this before.</p>
<p>The basic premise is that for a week I&#8217;d like to lose the circadian rhythm, sleep when I feel like it and until I wake up naturally, and only afterwards inspect the data.</p>
<p>This has some immediately obvious flaws, the first being that if I&#8217;m to lose all perception of time I&#8217;d have to black out my house and not go outside. I suspect that by not deliberately structuring my life anything specific this can be overcome.</p>
<p>In more detail, I plan to pull the clock off the devices I own and the interface for the software I&#8217;m likely to use in that time (my system taskbar, irssi and tmux all show my timestamps), and use my cli twitter client <a href="https://github.com/richo/twat">twat</a> to tweet like a madman, giving my timestamped data points to look at afterwards.</p>
<p>There&#8217;s some planning to be done and some preliminary research to be done, but I&#8217;m hoping that at the very least it&#8217;ll be interesting, even if it serves only as a cautionary tale to others.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/02/another-sleeping-experiment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NAT Traversal, peer discovery and the stark realisation that you&#8217;re an idiot</title>
		<link>http://blog.psych0tik.net/2013/01/nat-traversal-peer-discovery-and-the-start-realisation-that-youre-an-idiot/</link>
		<comments>http://blog.psych0tik.net/2013/01/nat-traversal-peer-discovery-and-the-start-realisation-that-youre-an-idiot/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 12:17:09 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[psych0tik software]]></category>
		<category><![CDATA[groundstation]]></category>
		<category><![CDATA[peer discovery]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1354</guid>
		<description><![CDATA[In my last post I unveiled groundstation, a supremely pre-beta cut of a tool I&#8217;m building to automagically sync objects in several git repos with any and all nearby peers. Up until tonight, I had been testing with two laptops, &#8230; <a href="http://blog.psych0tik.net/2013/01/nat-traversal-peer-discovery-and-the-start-realisation-that-youre-an-idiot/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In my last post I unveiled groundstation, a supremely pre-beta cut of a tool I&#8217;m building to automagically sync objects in several git repos with any and all nearby peers. Up until tonight, I had been testing with two laptops, connected to the same wireless network (more or less the usecase I envisage).</p>
<p>This evening, I had only my laptop with me: but &#8220;Not to worry,&#8221; I thought, &#8220;I&#8217;ll just light up my dev VM!&#8221;. At work we use <a href="https://vagrantup.com">vagrant</a> to light up ondemand VM&#8217;s, bootstrap them with <a href="https://babushka.me">babushka</a> and get on with it. We use some trickery in the vagrant-dns gem to make the VM addressible from the host, with vagrant taking care of NAT for us.</p>
<p>Which is where things got interesting. groundstation uses UDP broadcast to find it&#8217;s peers, which WILL penetrate most NAT configurations, but with the caveat that the source address will be rewritten- in this instance rewriting it to my external IP address, causing my daemon to attempt to connect to it&#8217;s &#8220;peer&#8221; and sync it&#8217;s objects- with itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2013/01/nat-traversal-peer-discovery-and-the-start-realisation-that-youre-an-idiot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>richo&#8217;s 12 days of haxmas: pt3</title>
		<link>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt3/</link>
		<comments>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt3/#comments</comments>
		<pubDate>Sat, 29 Dec 2012 18:45:39 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[Hax]]></category>
		<category><![CDATA[psych0tik software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[groundstation]]></category>
		<category><![CDATA[haxmas]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1350</guid>
		<description><![CDATA[After vanishing off the radar for a few days, I can now unveil groundstation. Born of a discussion at work about how all existing solutions to issue tracking and project management pretty much suck, and my natural flair for finding &#8230; <a href="http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>After vanishing off the radar for a few days, I can now unveil <a href="https://github.com/richo/groundstation">groundstation</a>.</p>
<p>Born of a discussion at work about how all existing solutions to issue tracking and project management pretty much suck, and my natural flair for finding the most awkward way imaginable to do something, I started building a framework for decentralised issue management, based on gossip protocols (full points to <a href="https://twitter.com/wolfeidau">@wolfeidau</a> for planting that seed in my head) and utilising git&#8217;s object store as a backend.</p>
<p>Right now all it can do is propogate git objects over the local network via broadcast discovery, but the TODO list is pretty significant. I&#8217;m planning to implement:</p>
<ul>
<li>Verification of changesets based on RSA/ECDSA cryptography (choosing those algorithms because of their ubiquity with developers)</li>
<li>Implementation of an arbiter node making the broadcast discovery an effective local means, but not the only way to &#8220;sync&#8221; your events</li>
<li>Better control over &#8220;channel&#8221; subscription to avoid the obvious DoS attacks that are trivial to exploit with the current implementation</li>
<li>Better support for event based propagation, instead of polling as currently stands</li>
</ul>
<p>&#8230; and if there&#8217;s time maybe a frontend or something so you can actually interact with it. Who can say.</p>
<p>You can try it out right now if you&#8217;re ok with not syncing any git objects other than blobs (the only primitive type that I&#8217;m planning to use in my tracker).</p>
<p>Clone the sources down on a few local machines on the same subnet,
<pre>pip install -r requirements.txt; python stationd</pre>
<p> and watch whatever&#8217;s in
<pre>~/.groundstation</pre>
<p> get synced up.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>richo&#8217;s 12 days of haxmas: pt2</title>
		<link>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt2/</link>
		<comments>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt2/#comments</comments>
		<pubDate>Wed, 26 Dec 2012 01:18:09 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[Hax]]></category>
		<category><![CDATA[geotagging]]></category>
		<category><![CDATA[haxmas]]></category>
		<category><![CDATA[mapgit]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1345</guid>
		<description><![CDATA[As I eluded to in yesterday&#8217;s post I used doko to do some GPS lookups for mapgit. After playing with it briefly after lars sent it through, it looked like a much more flexible solution (and one that&#8217;d work on &#8230; <a href="http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As I eluded to in <a href="http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt2/">yesterday&#8217;s post</a> I used doko to do some GPS lookups for mapgit.</p>
<p>After playing with it briefly after lars sent it through, it looked like a much more flexible solution (and one that&#8217;d work on more platforms than just OSX, meaning I wasn&#8217;t entirely reliant on Mac like I had been).</p>
<p>I haven&#8217;t got much to report, beyond having implemented filebacked caching, resolution strategies, some privacy stuff (limit precision) and support for timeouts throughout.</p>
<p>Get doko 0.2.0 from it&#8217;s <a href="https://bitbucket.org/larsyencken/doko">bitbucket repo</a>, and again thanks to <a href="https://twitter.com/larsyencken">lars</a> for spending the time on writing it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>richo&#8217;s 12 days of haxmas: pt1</title>
		<link>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt1/</link>
		<comments>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt1/#comments</comments>
		<pubDate>Tue, 25 Dec 2012 04:05:31 +0000</pubDate>
		<dc:creator>richo</dc:creator>
				<category><![CDATA[psych0tik software]]></category>
		<category><![CDATA[geotagging]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Hax]]></category>
		<category><![CDATA[mapgit]]></category>

		<guid isPermaLink="false">http://blog.psych0tik.net/?p=1341</guid>
		<description><![CDATA[Leaving work on friday to take a few days off, rather than relaxing and drinking like most at this time of year, I had a few ideas for projects I&#8217;d like to realise. At some point on the first night, &#8230; <a href="http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Leaving work on friday to take a few days off, rather than relaxing and drinking like most at this time of year, I had a few ideas for projects I&#8217;d like to realise.</p>
<p>At some point on the first night, it occurred to me that a ridiculous but potentially achievable feat might be to build a thing for every day I&#8217;m off work. I&#8217;ve already missed that goal, but keeping in spirit, I&#8217;ll be posting things as they come off the ranks. I&#8217;m starting late, and I&#8217;ve already gotten a few to a point where they&#8217;re worth talking about, so hopefully this will be enough filler to allow me to post daily until I go back to work. Which brings us to..</p>
<h3>MapGit</h3>
<p>A while ago I started geotagging my commits with a <a href="https://github.com/richo/git_template/blob/master/hooks/post-commit">post-commit hook</a> and a tool called <a href="https://github.com/victor/whereami">whereami</a>. I silently collected some (massively skewed- due to an oversight on my part) data for a while, and then remembered about it recently when <a href="https://twitter.com/larsyencken">lars</a> whom I work with kindly offered to do some plotting magics in R.</p>
<p>He came up with this:</p>
<p><img src="https://s3.amazonaws.com/99designs-richo-screenshots/ZiVHN.png" alt="Where richo goes to code" /></p>
<p>Which ultimately inspired me to start looking into this again and produce a more general solution.</p>
<p>I built http://mapgit.com in reasonably short order the next day. Right now it&#8217;s basically just a thin layer around redis which allows you to upload pairs of &#8220;commit location&#8221; pairs and have them transparently stored in redis.</p>
<p>Before the break is over I intend to built on the side of the github API to allow for selecting all the locations (both as a set and as a distribution) for a given rev-list or branch, fetched directly from github&#8217;s API or passed straight into mapgit, and export them in a format that R likes for easy plotting.</p>
<p>So far it&#8217;s quite barebones, but I&#8217;m happy with how it turned out for only a few hours invested.</p>
<p>Until tomorrow, Happy Haxmas all.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.psych0tik.net/2012/12/richos-12-days-of-haxmas-pt1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
