<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Thruflo is a venture studio and consultancy based in Istria.</description><title>Thruflo d.o.o</title><generator>Tumblr (3.0; @thruflo)</generator><link>https://thruflo.com/</link><item><title>The shift to post-purchase manufacture</title><description>&lt;p&gt;The fundamental thing about digital fabrication is the shift to post purchase manufacture.&lt;/p&gt;

&lt;p&gt;The moment when a product is fabricated is a moment of crystalisation. An abstract design becomes a concrete product. A world of possibilities is reduced &amp;ndash; irreversibly &amp;ndash; to a single form.&lt;/p&gt;

&lt;p&gt;Delaying that moment of execution until after purchase allows the world of possibilities to overlap with information about the purchaser and their context. The reduction of a product to its concrete form can be informed by this information: be it ergonomic, environmental, personal, social.&lt;/p&gt;

&lt;p&gt;Companies who design products that adapt to contextual information will have a competitive advantage. Phones that just fit your hand. Furniture that just fits your space. Gadgets that just fit your lifestyle.&lt;/p&gt;

&lt;p&gt;To do so, practically, they need to master their designs as parameterised applications: to publish the underlying logic of their models, not just static vector exports. At this point, the consumer experience can shift from radio buttons to sliders, as we can see in the first generation interfaces of &lt;a href="http://www.digitalforming.com"&gt;Digital Forming&lt;/a&gt; and &lt;a href="http://mattermachine.com"&gt;Matter Machine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next generation &amp;ndash; the point where a wider consumer market is unlocked &amp;ndash; is the implicit application of contextual data. Data generated by an app on your mobile is fed into the design-as-application and the implicitly personalised form emerges.&lt;/p&gt;</description><link>https://thruflo.com/post/82192044143</link><guid>https://thruflo.com/post/82192044143</guid><pubDate>Wed, 09 Apr 2014 14:51:02 +0100</pubDate></item><item><title>Inside the Distributed Manufacturing REPL</title><description>&lt;iframe width="560" height="315" src="//www.youtube.com/embed/Mlt6kaNjoeI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Alastair Pavan from &lt;a href="http://wikihouse.cc"&gt;WikiHouse&lt;/a&gt; often quotes John Maynard Keynes as saying:&lt;/p&gt;

&lt;p&gt;&amp;gt; &amp;ldquo;It is easier to ship recipes than cakes and biscuits&amp;rdquo;&lt;/p&gt;

&lt;p&gt;I want to argue that the &lt;em&gt;interpretation&lt;/em&gt; of these recipes (the &amp;ldquo;eval&amp;rdquo; part of the
read-eval-print loop) is &amp;ndash; far more than the usual hype &amp;ndash; what&amp;rsquo;s really interesting
about distributed manufacturing.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;I was fortunate to be at the Design Museum&amp;rsquo;s &lt;a href="http://designmuseum.org/exhibitions/2013/the-future-is-here"&gt;Future is Here&lt;/a&gt; exhibition launch
in London last night. The exhibition itself is exceptionally well curated by Alex
Newson: putting the new developments in a whole range of manufacturing sectors in
context, both relatively and historically.&lt;/p&gt;

&lt;figure&gt;&lt;a href="http://designmuseum.org/exhibitions/2013/the-future-is-here"&gt;
    &lt;figure class="tmblr-full" data-orig-height="363" data-orig-width="845" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/Screen+shot+2013-07-24+at+12.40.42.png"&gt;&lt;img src="https://64.media.tumblr.com/ff8920ad341a26554077ed519f5b2786/tumblr_inline_pk0rmt5UuW1qbuf8b_540.png" style="max-width: 560px" data-orig-height="363" data-orig-width="845" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/Screen+shot+2013-07-24+at+12.40.42.png"/&gt;&lt;/figure&gt;&lt;figcaption&gt;The &amp;ldquo;Future is Here&amp;rdquo; sign at the Design Museum.&lt;/figcaption&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;What connects all these future manufacturing technologies is their ability to
be digitally driven and to manufacture at the edge of the graph, rather than
the centre. The real nugget of promise at the heart of the universal replicator
idea is the ability to fabricate consistently on location. To ship the recipe
like a fire-and-forget AJAX request.&lt;/p&gt;

&lt;p&gt;That this promise is a myth is well known and widely debunked; whether it&amp;rsquo;s the
&lt;a href="http://www.digitalmanufacturingreport.com/dmr/2012-11-21/additive_manufacturing%E2%80%99s_dirty_secrets_exposed.html"&gt;&amp;ldquo;dirty secrets&amp;rdquo;&lt;/a&gt; defined by the UK Technology Strategy Board in their recent
Additive Manufacturing competition, or the fact that all the major 3D printing
companies (Shapeways, Ponoko, iMaterialise, etc.) centralise and obsessively
quality assure output &amp;ndash; just to be able to produce passable necklaces and
lampshades.&lt;/p&gt;

&lt;p&gt;Genuinely distributed manufacturing, in truth, still requires a craftsman at
the edge of the network. No matter whether they&amp;rsquo;re operating a numerically
controlled drill bit or a sewing machine. This is something I know well from 
my work building OpenDesk.&lt;/p&gt;

&lt;figure&gt;&lt;a href="https://www.opendesk.cc"&gt;
    &lt;figure class="tmblr-full" data-orig-height="875" data-orig-width="1102" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/OpenDesk.cc+-+Community+Wall.png"&gt;&lt;img src="https://64.media.tumblr.com/4355bd07539089a3e5d5ee10f2da6844/tumblr_inline_pk0rmvKVDR1qbuf8b_540.png" style="max-width: 600px" data-orig-height="875" data-orig-width="1102" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/OpenDesk.cc+-+Community+Wall.png"/&gt;&lt;/figure&gt;&lt;figcaption&gt;Community Wall on the OpenDesk website.&lt;/figcaption&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a href="https://www.opendesk.cc"&gt;OpenDesk&lt;/a&gt; is a small, deliberately constrained range
of simple furniture that can be made using a CNC machine. The designs are
released open source for free (under a creative commons non-commercial license)
and available to buy through a distributed network of professional CNC makers.&lt;/p&gt;

&lt;p&gt;One of the unexpected moments of serendipity developing OpenDesk was when we
found out that the &lt;a href="http://www.madeonjupiter.com/lifting-the-lid-on-spoke-creator/"&gt;Spoke Creator team&lt;/a&gt; in New Zealand had taken the open source
designs and parameterised them. Parameterisation is where a design is modelled
using logical rules so that it can adapt to changing dimensions, e.g.: &amp;ldquo;make the legs 90% of the height of the table&amp;rdquo; or &amp;ldquo;if the table needs to support 100kg, then double the thickness of the legs&amp;rdquo;.&lt;/p&gt;

&lt;figure&gt;&lt;a href="http://www.spokecreator.com/#spoke/Opendesk"&gt;
    &lt;figure class="tmblr-full" data-orig-height="683" data-orig-width="1335" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/opendesk_spokecreator_grab.jpg"&gt;&lt;img src="https://64.media.tumblr.com/0e7374e7dbe84cfe0698da03e7104434/tumblr_inline_pk0rmw5HMn1qbuf8b_540.jpg" style="max-width: 600px" data-orig-height="683" data-orig-width="1335" data-orig-src="https://s3-eu-west-1.amazonaws.com/thruflo-random-stuff/opendesk_spokecreator_grab.jpg"/&gt;&lt;/figure&gt;&lt;figcaption&gt;Parametised OpenDesk design on Spoke Creator.&lt;/figcaption&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Now, whilst many designs are mastered in this way within design studios (on
expensive proprietary software), very few are exposed in this way to consumers
or the fulfillment chain. There&amp;rsquo;s good reason for this. Every option presented
to a consumer is a barrier to sales. The idea of presenting complex logical
network wiring to a consumer is crazy. They don&amp;rsquo;t want choice: they want what
they want and they certainly don&amp;rsquo;t want to have to engage with complexity.&lt;/p&gt;

&lt;p&gt;Which is where apps come in.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s an analogy here with web video. In 2005, web video sucked. It came in
small rectangles (we&amp;rsquo;re talking pre vp6, let alone h.264), buffered, crashed
and, when compared with TV, was barely watchable. Yet fast forward to today.&lt;/p&gt;

&lt;p&gt;Fundamentally, right now, distributed manufacturing is expensive and hard to
quality assure. It may provide jobs, lower carbon and increase transparency
(in what is one murky global supply chain). However, these are soft incidental
benefits divorced from the consumer decision. What distributed manufacturing 
really offers is programmability. Just as the benefits of web video being
interactive and on-demand outweighed its pixelation, the hackability of
designs mastered as applications for distributed digital manufacturing outweigh
cost and complexity.&lt;/p&gt;

&lt;p&gt;The first step is to move manufacture post-purchase. Much as with many existing
lean manufacturing processes, products do not sit pre-made on shelves. The
next step is to master a design as an interpretable recipe. If you like it
medium-hot, add a red chilli with the seeds removed. Then apply contextual and
personal data. Ergonomics, environmental shape, previous preferences, personal
profiling, social data.&lt;/p&gt;

&lt;p&gt;Providing external data to parameterisation is something even we can do, already.
Once you have digital designs and post-purchase manufacture, this is &amp;ldquo;just work&amp;rdquo;.
However, in this age, it isn&amp;rsquo;t about the designer encoding the variety into
their application. It&amp;rsquo;s about the ecosystem.&lt;/p&gt;

&lt;figure data-orig-height="312" data-orig-width="500" data-orig-src="http://editorial.designtaxi.com/news-glasses210612/1.jpg"&gt;&lt;img src="https://64.media.tumblr.com/2c9cdac488be2043253d1a56ff88990c/tumblr_inline_pk0rmxwfLi1qbuf8b_540.png" style="max-width: 600px" data-orig-height="312" data-orig-width="500" data-orig-src="http://editorial.designtaxi.com/news-glasses210612/1.jpg"/&gt;&lt;figcaption&gt;Instagram filters&amp;hellip; applied to the real world.&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Apply filters and effects, Instagram style. Open source your surface texture
library. Run your application through a &lt;a href="http://en.wikipedia.org/wiki/Middleware"&gt;middleware pipeline&lt;/a&gt;. Think WSGI and Yahoo Pipes. These are not new architecture concepts. In web development, &lt;em&gt;obviously&lt;/em&gt;
an application can be themed. &lt;em&gt;Obviously&lt;/em&gt; a data structure can be transformed.&lt;/p&gt;

&lt;p&gt;If these structures are open, then &lt;em&gt;obviously&lt;/em&gt; there is huge scope for innovation,
serendipity and network effects. Like a shit-hot hacker team in New Zealand
taking your open source designs and parameterising them.&lt;/p&gt;

&lt;p&gt;This is the phase-change. By keeping manufacture in the digital space for as
long as possible and by mastering designs as applications, distributed
manufacturing &amp;ndash; if we can keep it open &amp;ndash; will unlock a radical new app and api eco-system of programmability that&amp;rsquo;ll transform what it means to design, manufacture and buy products.&lt;/p&gt;</description><link>https://thruflo.com/post/56330542825</link><guid>https://thruflo.com/post/56330542825</guid><pubDate>Wed, 24 Jul 2013 14:17:00 +0100</pubDate></item><item><title>Intelligence &amp; Life: two sides of the same coin</title><description>&lt;p&gt;&lt;a href="http://www.insidescience.org/content/physicist-proposes-new-way-think-about-intelligence/987"&gt;New research&lt;/a&gt; builds directly on the Schrödinger, Stuart Kauffman canon to derive not just life but intelligence from entropy. In &lt;a href="http://en.wikipedia.org/wiki/What_Is_Life%3F"&gt;What is Life?&lt;/a&gt;, Schrödinger defines life in thermodynamic terms, i.e.: entropy (or disorder).  In &lt;a href="http://www.amazon.com/At-Home-Universe-Self-Organization-Complexity/dp/0195111303"&gt;At Home in the Universe&lt;/a&gt; Kauffman shows how order spontaneously emerges to create life. Now, Alexander Wissner-Gross (aka &lt;a href="http://twitter.com/alexwg"&gt;@alexwg&lt;/a&gt;), &lt;em&gt;&amp;ldquo;a physicist at Harvard University and the Massachusetts Institute of Technology&amp;rdquo;&lt;/em&gt;, &lt;a href="http://www.insidescience.org/content/physicist-proposes-new-way-think-about-intelligence/987"&gt;has published research&lt;/a&gt; showing how intelligence emerges from the goal of maximising entropy.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The researchers developed a software engine, called Entropica &amp;hellip; In one test, the researchers presented Entropica with a situation where it could &amp;hellip; move a cart to balance a rod standing straight up in the air. Governed by simple principles of thermodynamics, the software responded by displaying behavior similar to what people or animals might do, all without being given a specific goal for any scenario.&lt;/p&gt;
  
  &lt;p&gt;Entropica&amp;rsquo;s intelligent behavior emerges from the &amp;ldquo;physical process of trying to capture as many future histories as possible,&amp;rdquo; said Wissner-Gross. Future histories represent the complete set of possible future outcomes available to a system at any given moment.&lt;/p&gt;
  
  &lt;p&gt;Wissner-Gross calls the concept at the center of the research &amp;ldquo;causal entropic forces.&amp;rdquo; These forces are the motivation for intelligent behavior. They encourage a system to preserve as many future histories as possible. For example, in the cart-and-rod exercise, Entropica controls the cart to keep the rod upright. Allowing the rod to fall would drastically reduce the number of remaining future histories, or, in other words, lower the entropy of the cart-and-rod system. Keeping the rod upright maximizes the entropy.&lt;/p&gt;
  
  &lt;p&gt;&amp;ldquo;The universe exists in the present state that it has right now. It can go off in lots of different directions. My proposal is that intelligence is a process that attempts to capture future histories,&amp;rdquo; said Wissner-Gross.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If this is right, then the same force that creates life &amp;ndash; the intentionality of physical systems to minimise order &lt;em&gt;within&lt;/em&gt; the body &amp;ndash; also leads to intelligence &amp;ndash; the intentionality to maximise order &lt;em&gt;outside&lt;/em&gt; the body. Every action has an equal and opposite reaction.&lt;/p&gt;

&lt;p&gt;Intelligence and life are two sides of the same coin.&lt;/p&gt;</description><link>https://thruflo.com/post/48426636772</link><guid>https://thruflo.com/post/48426636772</guid><pubDate>Sat, 20 Apr 2013 10:30:00 +0100</pubDate></item><item><title>WebSockets with Varnish and Nginx</title><description>&lt;p&gt;&lt;a href="http://nginx.org"&gt;Nginx&lt;/a&gt; is the obvious front-end web server for non-blocking web applications.
However, Nginx doesn&amp;rsquo;t currently support &lt;a href="http://www.websocket.org"&gt;WebSockets&lt;/a&gt; (at the time of writing
the feature is on &lt;a href="http://trac.nginx.org/nginx/roadmap"&gt;their roadmap&lt;/a&gt; with &lt;em&gt;&amp;ldquo;No date set&amp;rdquo;&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;You &lt;a href="http://www.letseehere.com/reverse-proxy-web-sockets"&gt;can compile Nginx with the tcp module&lt;/a&gt; to proxy WebSocket and HTTP
traffic to different backends.  However, as well as introducing the manual
compilation step, this also requires running multiple web applications (for
example, your main app on one port and your WebSocket handlers on another).&lt;/p&gt;

&lt;p&gt;A more elegant solution is to put Nginx in front of your backend web application
and &lt;a href="https://www.varnish-cache.org/"&gt;Varnish&lt;/a&gt; in front of Nginx.  Varnish can then be 
&lt;a href="https://www.varnish-software.com/blog/browsers-html5-websocket-varnish-cook-thief-his-wife-her-lover"&gt;configured to pass WebSocket traffic directly to your backend&lt;/a&gt; whilst sending
the rest of the traffic to Nginx.  This allows you to run a single backend server
that handles WebSockets and HTTP traffic on the same port without patching Nginx.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Here are the essential configuration directives for a setup where I&amp;rsquo;m running a 
&lt;a href="http://gunicorn.org"&gt;Gunicorn&lt;/a&gt; server as my backend web application.  You could just as well be 
running Node.js, Tornado &amp;ndash; whatever.&lt;/p&gt;

&lt;p&gt;Run Varnish on port 80 with this in your &lt;a href="https://www.varnish-cache.org/docs/3.0/tutorial/advanced_backend_servers.html"&gt;default.vcl&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;backend nginx {
    .host = "127.0.0.1";
    .port = "8080";
}
backend gunicorn {
    .host = "127.0.0.1";
    .port = "6543";
}
sub vcl_pipe {
    if (req.http.upgrade) {
        set bereq.http.upgrade = req.http.upgrade;
    }
}
sub vcl_recv {
    if (req.http.Upgrade ~ "(?i)websocket") {
        set req.backend = gunicorn;
        return (pipe);
    }
    else {
        set req.backend = nginx;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Run Nginx with this in your &lt;a href="http://wiki.nginx.org/Configuration"&gt;nginx.conf&lt;/a&gt; (these are just the key directives &amp;ndash;
see &lt;a href="http://gunicorn.org/deploy.html"&gt;the Gunicorn docs&lt;/a&gt; for a more complete configuration examples):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;upstream gunicorn {
    server 127.0.0.1:6543;
}
server {
    listen 8080 default;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://gunicorn;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;An implementation detail of this particular example is to then use a WebSocket
aware worker class in your &lt;a href="http://gunicorn.org/configure.html#worker-class"&gt;Gunicorn configuration&lt;/a&gt;.  For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;worker_class = 'pyramid_socketio.gunicorn.workers.GeventSocketIOWorker'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;However that&amp;rsquo;s more a matter for your specific backend implementation.  The
point of the Varnish and Nginx configuration above is to deploy &lt;em&gt;any&lt;/em&gt; backend
so that WebSockets just work.&lt;/p&gt;</description><link>https://thruflo.com/post/23226473852</link><guid>https://thruflo.com/post/23226473852</guid><pubDate>Thu, 17 May 2012 13:57:00 +0100</pubDate><category>sysadmin</category><category>websockets</category><category>nginx</category><category>web development</category></item><item><title>The Conventional Wisdom on Business Plan Numbers in a Lean Startup is Wrong</title><description>&lt;p&gt;There’s about as much point producing a finance plan for a lean startup as there is writing a post-graduation CV for a toddler. Pretty obvious, right? Except it’s completely wrong: lazy, convenient thinking that misunderstands the relation between numbers and visibility.&lt;/p&gt;

&lt;p&gt;We all know that a startup is a search for a business model and that in a startup, visibility is often extremely limited. How can you possibly make financial predications when you don’t even know what your value proposition is? Well, the answer is that you can, you should and that it’s actually very simple once you understand the role different numbers play and how they fit together.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Let’s take an example. You’re looking for seed funding for your new web service. Your angel (or perhaps your boss) has asked to see numbers up-to a five year horizon. Now, you’re asking for money in the first place because you need to resource a team to build your product and operate your business. That means you have a burn rate (or perhaps you have multiple candidate burn rates depending on how well / badly the business goes).&lt;/p&gt;

&lt;p&gt;For each burn, the rate tells you what you need to earn: either to break even or to make the return you or your investor wants. If you’re going to spend an average of $250k per year over five years, you need to earn, on average (let me help you out with the figures here) $250k per year over those five years to break even. Maybe that revenue isn’t going to start arriving until year three. Maybe your business is going to take off like a hockey stick. You can shape the graph any way you like but there’s no escaping the fact that the total area underneath the line needs to at least match your burn.&lt;/p&gt;

&lt;p&gt;Now, let the penny drop. These numbers — let’s call them your targets — are derived from necessity. They’re nothing to do with your actual or likely performance. Which means they have precisely nothing to do with your visibility, limited or otherwise.&lt;/p&gt;

&lt;p&gt;All the other numbers (which are more or less visibility dependent, like your total addressable market and predicted revenue per user) are in your plan to shed light on the likelihood of hitting your targets. Their role is to make your targets (which you must hit) look hittable: not just for your investor but for you.&lt;/p&gt;

&lt;p&gt;Let’s just recap for a second. You need X amount of money to build your company. That means you need to make X amount of money back. Identifying the size of the market you’re planning to enter (or create) and the likely market share of the handful of leading companies (which you plan to be one of, right?) is not a pointless exercise. It’s a basic sanity check. If the market’s big enough then perhaps hitting those targets isn’t so unlikely after all.&lt;/p&gt;

&lt;p&gt;Equally, if your graph tells you you need to earn $40k per month in Y3 and you have a set of candidate revenue streams that allow you to guesstimate revenue per user, you can derive a target for the number of users you need by then. Plug that into some key metric spreadsheets (maybe measuring user acquisition and engagement over time) and, voila, you have a set of evaluation metrics you can discuss in your SCRUM meetings.&lt;/p&gt;

&lt;p&gt;Metrics that are entirely consistent with the murkiest visibility and the leanest of startups.&lt;/p&gt;</description><link>https://thruflo.com/post/22449616494</link><guid>https://thruflo.com/post/22449616494</guid><pubDate>Sun, 06 May 2012 15:41:00 +0100</pubDate><category>startups</category><category>lean</category><category>business planning</category></item><item><title>You're Building Cultural Survival Vehicles</title><description>&lt;p&gt;Here&amp;rsquo;s a powerful new way of looking at the world &amp;ndash; and one that&amp;rsquo;s exceptionally relevant for people building communities or designing social interactions. I quote from the introduction to &lt;a href="http://www.amazon.com/Wired-Culture-Natural-Cooperation-ebook/dp/B006VXNKCK"&gt;Wired for Culture&lt;/a&gt; by Mark Pavel, head of the Evolution Lab at Reading University:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I want to call these tribal groups &lt;em&gt;cultural survival vehicles&lt;/em&gt;. &amp;hellip; Richard Dawkins in &lt;em&gt;The Extended Phenotype&lt;/em&gt; coined the term &lt;em&gt;vehicles&lt;/em&gt; to describe structures that carry &lt;em&gt;replicators&lt;/em&gt;. &amp;hellip; Putting these two ideas together, we can see that replicators (think of genes) exert their effects on the external world, and thereby influence the likelihood that they will survive, through the vehicles (think of your body) they build. The distinction between replicators and vehicles is important because it reminds us that an animal&amp;rsquo;s body is merely a temporary structure built by its genes to promote their survival and reproduction. &amp;hellip;&lt;/p&gt;
  
  &lt;p&gt;When I use the term &lt;em&gt;cultural survival vehicles&lt;/em&gt;, it is to capture the idea that our species evolved to build, in the form of their societies, tribes, or cultures, a second body or vehicle to go along with the vehicle that is their physical body. Like our physical bodies, this cultural body wraps us in a protective layer, not of muscles and skin but of knowledge and technologies, and &amp;hellip; gives us our language, cooperation, and a shared identity. We are the actors that produce this vehicle, behaving almost like individual genes clamouring inside it to exert our effects on the outside world, and influencing &lt;em&gt;our&lt;/em&gt; likelihood of surviving. Our nature is wrapped up in the strategies we evolved and now deploy to make the cultural survival vehicle work for us. &amp;hellip;&lt;/p&gt;
  
  &lt;p&gt;The essential balancing act of human societies is that they will normally work best when everyone pulls together, but at any given moment what is best for you might differ from that which is best for your group. Our psychology is the outcome of this balancing act. It is the set of temperaments geared towards using our cultural vehicles to promote our individual survival in a world full of others like ourselves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Culture is a phenomenal evolutionary advantage. Because of this, we&amp;rsquo;ve adapted to be exceptionally receptive to it. Our rich social and cultural landscape is made of interwoven vehicles we&amp;rsquo;re programmed to create, join, pilot and abandon. A theory which maps precisely to the real world, as far as I understand it.&lt;/p&gt;</description><link>https://thruflo.com/post/19531848574</link><guid>https://thruflo.com/post/19531848574</guid><pubDate>Sun, 18 Mar 2012 20:39:19 +0000</pubDate><category>social</category><category>cultural</category><category>evolution</category></item><item><title>Knight News Challenge: BeLive.at</title><description>&lt;a href="http://newschallenge.tumblr.com/post/19403476217/belive-at"&gt;Knight News Challenge: BeLive.at&lt;/a&gt;: &lt;p&gt;&lt;a href="http://newschallenge.tumblr.com/post/19403476217/belive-at" class="tumblr_blog"&gt;newschallenge&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;1. What do you propose to do? [20 words]&lt;/h3&gt;
&lt;p&gt;Build a citizen journalism platform where the crowd direct the news.&lt;/p&gt;
&lt;h3&gt;2. Is anyone doing something like this now and how is your project different? [30 words]&lt;/h3&gt;
&lt;p&gt;OpenIDEO is a structured platform where the crowd can solve social problems.&lt;/p&gt;
&lt;p&gt;Twitter is a…&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://thruflo.com/post/19444400150</link><guid>https://thruflo.com/post/19444400150</guid><pubDate>Sat, 17 Mar 2012 09:02:50 +0000</pubDate></item><item><title>"Whoever takes the decisions bears the risk."</title><description>“Whoever takes the decisions bears the risk.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;A simple principle for pricing risk into development projects.  Whoever makes feature decisions and signs off on implementation should carry the risk of scope creep or non delivery.&lt;/p&gt;

&lt;p&gt;As an agency or a developer, you can provide fixed cost development budgets but only when you decide what’s in or out and what done looks like.  (More accurately, you decide on done, done done and done done done).  Where it’s not appropriate for you to own the delivery decisions, it’s not constructive for you to bear the risk.&lt;/p&gt;

&lt;p&gt;After all, as the great command line in the sky says, with power comes responsibility…&lt;/p&gt;&lt;/em&gt;</description><link>https://thruflo.com/post/18489148914</link><guid>https://thruflo.com/post/18489148914</guid><pubDate>Wed, 29 Feb 2012 09:49:18 +0000</pubDate><category>sales</category></item><item><title>The Silent Future</title><description>&lt;p&gt;jQuery is the de-facto library for the web, installed on 85% of websites.  There are calls for the last few major release versions to be shipped in all major browsers.  However, look what just came along.  Two way data binding in the form of &lt;a href="http://angularjs.org/"&gt;&amp;lt;angular /&amp;gt;&lt;/a&gt;, &lt;a href="http://www.emberjs.com/"&gt;Ember.js&lt;/a&gt; and friends.  Suddenly the very thing that jQuery is so good at, DOM manipulation, is abstracted out of the picture.&lt;/p&gt;

&lt;p&gt;The lesson, which we all know, is that change comes not from beating the incumbent at their own game but from focusing on what&amp;rsquo;s going to make their strength redundant.  The interesting thing I&amp;rsquo;ve just realised is that the Internet makes communication redundant.&lt;/p&gt;

&lt;p&gt;So far, the main impact of the Internet has been to change the way we communicate.  However, the real shift is towards &lt;strong&gt;a pervasive web where information is implicit&lt;/strong&gt;.  Just as &amp;lt;angular /&amp;gt; abstracts out DOM manipulation, implicit information abstracts out whole tranches of activity.  Communication, for so long the core skill of successful brands, people and organisations becomes entirely irrelevant.&lt;/p&gt;

&lt;p&gt;It may be tempting to view a future of no communication as a land of the blind where the one eyed man is king.  In a world with no marketing, surely the business that buys ads will thrive?  However, this misses the pivotal cultural shift.  As HG Wells &lt;a href="http://en.wikipedia.org/wiki/The_Country_of_the_Blind"&gt;illustrated so well&lt;/a&gt;, people&amp;rsquo;s behaviour is governed by the culture they operate in.&lt;/p&gt;

&lt;p&gt;Ours has &lt;a href="http://www.good.is/post/a-happy-flourishing-city-with-no-advertising/"&gt;already changed&lt;/a&gt;, forever.&lt;/p&gt;</description><link>https://thruflo.com/post/16629817295</link><guid>https://thruflo.com/post/16629817295</guid><pubDate>Sat, 28 Jan 2012 15:05:00 +0000</pubDate><category>disruption</category><category>communication</category><category>strategy</category></item><item><title>Getting Things Done with Google Apps and Do.com</title><description>&lt;p&gt;I was chatting with &lt;a href="http://twitter.com/h4rrydog"&gt;@h4rrydog&lt;/a&gt; a couple of days ago about the best tools to collaborate &amp;ldquo;internally&amp;rdquo;, i.e.: between ourselves and with ad hoc teams of other people.  Every man and his dog has their preferred workflow but I just setup one that&amp;rsquo;s so delightful I can&amp;rsquo;t help but share it.&lt;/p&gt;

&lt;p&gt;The setup is to use a Google Apps email address (n.b.: &lt;a href="http://www.squidoo.com/how-to-manage-multiple-gmail-accounts"&gt;#&lt;/a&gt;) with &lt;a href="http://do.com"&gt;Do.com&lt;/a&gt;.  The workflow is to use the little gadget Do.com installs into your gmail interface to turn emails into tasks.  The task title is autocompleted with the email subject.  There&amp;rsquo;s a small link to populate the task description with the email body and autocomplete widgets to assign the task to a person, a project and a due date.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imm.io/f7nx.png" alt="Alt text"/&gt;&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s zen.  Try it a couple of times.  Headspace zero.&lt;/p&gt;</description><link>https://thruflo.com/post/16353208336</link><guid>https://thruflo.com/post/16353208336</guid><pubDate>Mon, 23 Jan 2012 16:49:53 +0000</pubDate><category>productivity</category></item><item><title>Released pyramid_assetgen package.</title><description>&lt;p&gt;I&amp;rsquo;ve released a Python package called &lt;a href="http://github.com/thruflo/pyramid_assetgen"&gt;pyramid_assetgen&lt;/a&gt; that helps integrate Tav&amp;rsquo;s &lt;a href="http://github.com/tav/assetgen"&gt;Assetgen&lt;/a&gt; static build tool with the &lt;a href="http://pypi.python.org/pypi/pyramid"&gt;Pyramid&lt;/a&gt; web application development framework.  As the docs say:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Using it allows you to code in languages (like CoffeeScript and SASS) that compile to JavaScript and CSS, swapping between a refresh-the-page-to-see-changes development environment and an optimal HTTP caching production setup &amp;ndash; without ever having to change any of the code in your Pyramid application.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>https://thruflo.com/post/15959694757</link><guid>https://thruflo.com/post/15959694757</guid><pubDate>Mon, 16 Jan 2012 19:21:00 +0000</pubDate><category>web development</category><category>python</category><category>pyramid</category></item><item><title>The Dominatrix and the Case of the Missing Tools</title><description>&lt;p&gt;&lt;img src="http://static.thruflo.com/dominatrix.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;When I first heard about the &lt;a href="http://www.bbc.co.uk/programmes/b00t4pgh"&gt;BBC&amp;rsquo;s Sherlock&lt;/a&gt;, my heart sank.  Talk about flogging a dead horse.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sherlock Holmes and Dr Watson&amp;rsquo;s adventures in 21st Century London. A thrilling, funny, fast-paced contemporary remake of the Arthur Conan Doyle classic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Last night, I watched it for the first time.  It was exceptionally good.  Bursting with character and rapier dialogue.  The problem was that no matter how engrossing the drama, I kept being jolted out of my suspension of disbelief by the tenuous clips dropped in to reiterate the plot.&lt;/p&gt;

&lt;p&gt;There is a scene where Sherlock cracks the code to a particularly alluring dominatrix&amp;rsquo;s safe.  The code we see him entering immediately explains how he does it (spoiler alert: it&amp;rsquo;s her vital measurements).  However, just to make sure that every viewer gets it, the dialogue has to lapse from rapier into journeyman so the dominatrix can laboriously explain this to Dr Watson.  Later on, they parachute in a remarkably artificial clip where Sherlock summarises the entire plot, for no reason whatsoever, to two henchmen driving him to the airport.&lt;/p&gt;

&lt;p&gt;I mention this because it illustrates the difference between mass media and the web.  (As with most years) it&amp;rsquo;s widely predicted that in 2012, TV and the Internet will &lt;em&gt;really&lt;/em&gt; converge.  We&amp;rsquo;ll have &lt;a href="http://www.wired.com/epicenter/2011/12/backdrop-dropbox"&gt;Dropbox logos&lt;/a&gt; on our flat screens and &lt;a href="http://zeebox.com/"&gt;our iPad alongside the remote&lt;/a&gt;.  TV that puts the user in control of what they watch and how they watch it.  The joy of which is that viewers who get the plot first time round needn&amp;rsquo;t suffer the tedium of its reiteration.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;What&amp;rsquo;s interesting is that, whilst this is the inevitable consequence of convergence, content production companies are almost entirely untooled for the future that&amp;rsquo;s rearing up in front of them.  Consider a standard production workflow.  You have footage captured to disk, an edit and a mastered file.  When delivered over IP, this file is streaming using something like rtmp://.&lt;/p&gt;

&lt;p&gt;Now, if we want to personalise the stream of content, this is perfectly doable.  Something like FMS or Wowza can serve content dynamically based on information provided.  However, as &lt;a href="http://www.wowza.com/forums/content.php?4-tutorials"&gt;the documentation&lt;/a&gt; testifies, the techniques to do this are incredibly low level.  There are no simple libraries like &lt;a href="http://popcornjs.org/"&gt;Popcorn.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For user centred content to become ubiquitous, we need some building blocks, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a standard &amp;ldquo;uccp://&amp;rdquo; prototcol for responsive, user centred content streaming&lt;/li&gt;
&lt;li&gt;modules for web servers that implement the prototcol&lt;/li&gt;
&lt;li&gt;libraries for application developers&lt;/li&gt;
&lt;li&gt;plugins for content authoring software to master and publish responsive content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&amp;rsquo;m sure there is a lot of relevant technology out there.  However, can it be cohered around by both producers and developers in the way they can cohere around web frameworks like Drupal and Wordpress?  It looks to me that the networks and the data are there but that the tools are missing.&lt;/p&gt;</description><link>https://thruflo.com/post/15455625970</link><guid>https://thruflo.com/post/15455625970</guid><pubDate>Sat, 07 Jan 2012 16:30:00 +0000</pubDate><category>content strategy</category></item><item><title>Interesting stuff over Xmas</title><description>&lt;p&gt;Back this morning after a break in Croatia and Prague. While I deliberately left my computer at home, my information addiction was strong enough to have me peeking  regularly at my phone.&lt;/p&gt;

&lt;p&gt;The best post I read was &lt;a href="http://www.dachisgroup.com/2011/11/everything-is-a-service/"&gt;Everything is a Service&lt;/a&gt;, on the shift to a service oriented economy.  I also enjoyed this clearly written reminder on &lt;a href="http://techcrunch.com/2011/12/26/eight-ways-go-viral/"&gt;the different ways to go viral&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cory Doctorow&amp;rsquo;s keynote on &lt;a href="https://github.com/jwise/28c3-doctorow/blob/master/transcript.md"&gt;The Coming War on General Computation&lt;/a&gt;, in tandem with the whole SOPA drama, seems to have re-energised the fight for freedom on the Internet.  I don&amp;rsquo;t know about you but I did enjoy witnessing GoDaddy&amp;rsquo;s karmic reward for the appalling UX they&amp;rsquo;ve inflicted on us for all these years.&lt;/p&gt;

&lt;p&gt;Now we&amp;rsquo;re officially in the year of the Dropbox clone,  &lt;a href="http://thenextweb.com/apps/2011/12/30/forget-dropbox-insync-is-your-google-docs-loving-alternative-and-its-free/"&gt;Insync&lt;/a&gt; landed with Google Docs integration.  &lt;a href="https://github.com/bazaarlabs/gitdocs"&gt;Gitdocs&lt;/a&gt; kicked off the open source alternative beauty parade.  Sit back and enjoy.&lt;/p&gt;

&lt;p&gt;Other open source projects I liked the look of were &lt;a href="https://github.com/couchbaselabs/TouchDB-iOS"&gt;TouchDB&lt;/a&gt; and this &lt;a href="https://github.com/gf3/sandbox"&gt;Node.js JavaScript sandbox&lt;/a&gt;.  &lt;a href="http://schedulabl.es/"&gt;Schedulables&lt;/a&gt; seemed like a good idea and &lt;a href="http://quicksand.co.in"&gt;Quicksand&lt;/a&gt; looked like a company worth keeping an eye on.&lt;/p&gt;

&lt;p&gt;Beyond that I mainly got myself irrevocably confused by reading &lt;a href="http://www.ianmortimer.com/books/TTGME/writingTTGME.htm"&gt;The Time-traveller&amp;rsquo;s Guide to Medieval England&lt;/a&gt; whilst exploring Prague with a Lonely Planet guide.  Czech culture and that of fourteenth century England will now, for me, be forever hazily intertwined.&lt;/p&gt;</description><link>https://thruflo.com/post/15290538808</link><guid>https://thruflo.com/post/15290538808</guid><pubDate>Wed, 04 Jan 2012 10:37:40 +0000</pubDate><category>links</category></item><item><title>Filter by Proximity, Sort by Most Recent</title><description>&lt;p&gt;This post is about a user interface pattern, a common use case for it and an example implementation.  The pattern is adding an extra dimension to a timeline.  The use case is showing results that are both recent &lt;em&gt;and&lt;/em&gt; nearby.  The &lt;a href="https://github.com/thruflo/proximity-example"&gt;example implementation&lt;/a&gt; uses a slider widget and an adequate-result-volume algorithm.&lt;/p&gt;

&lt;p&gt;When you have 1000 messages and you want to prioritise the best 50 to display, sort is the most common pattern.  If the user is interested in the latest messages, sort by most recent.  If they want to see the messages other users found interesting, sort by a metric like views or rating.  However, the web is increasingly about real time data.  Developers are &lt;a href="https://github.com/nathanmarz/storm/wiki/Tutorial"&gt;processing streams&lt;/a&gt; and modelling &lt;a href="http://www.thoonk.com/"&gt;tubes instead of tables&lt;/a&gt;.  It rarely makes sense to display real time data in any order apart from most recent.  So, what do you do when you want to prioritise by another dimension, like proximity or rating?&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;You apply a filter.  In the case of a discrete filter like a keyword or tag, this is relatively simple.  The user types &lt;code&gt;#architecture&lt;/code&gt; into the search input and &lt;a href="https://twitter.com/search/%23architecture"&gt;Twitter obliges&lt;/a&gt;.  However, in the case of a range filter like rating or proximity it&amp;rsquo;s not quite so simple.  The user types &lt;code&gt;near:london&lt;/code&gt; and Twitter, once again &lt;a href="https://twitter.com/search/near%3Alondon"&gt;obliges&lt;/a&gt;.  The subtle difference is that, in this case, Twitter makes an assumption for the user.  It applies a default radius (aka default range).  &lt;code&gt;"Near"&lt;/code&gt; actually means &lt;code&gt;"within 15 miles"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Compare the result volume of &lt;a href="https://twitter.com/search/near%3Alondon"&gt;near:london&lt;/a&gt; with the result volume of &lt;a href="https://twitter.com/search/near%3Aabergavenny"&gt;near:abergavenny&lt;/a&gt;.  In the first case (London) the result volume is so high, I may well prefer &amp;ldquo;near&amp;rdquo; to be more focused; perhaps meaning a radius of 5 miles.  In the second, the result volume is so low I may prefer to widen the search to yield more recent results.  Had I chosen somewhere really remote, would there have been any recent tweets at all?&lt;/p&gt;

&lt;p&gt;Guessing a default radius introduces the risk of a bad user experience, whether through noisy results or a dead end.  This can be avoided with an algorithm that prescribes the desired result volume and varies the radius or range.  Let&amp;rsquo;s walk through a concrete example, written in &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; and &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt; using &lt;a href="http://www.sqlalchemy.org/docs/orm/tutorial.html"&gt;SQLAlchemy&lt;/a&gt; and &lt;a href="http://www.geoalchemy.org/tutorial.html"&gt;a spatially enabled SQL database&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Before I do, let me note that this implementation was inspired by &lt;a href="http://tav.espians.com"&gt;Tav&amp;rsquo;s&lt;/a&gt; work on the original &lt;a href="http://www.theplacestation.org.uk/"&gt;Placestation&lt;/a&gt; website, where he designed, implemented and introduced me to the algorithm.  I am just the messenger.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The following gist provides example code showing how to store and query geolocated &lt;code&gt;Message&lt;/code&gt;s.  Note that the location is stored as a &lt;a href="http://postgis.refractions.net/docs/ch04.html#PostGIS_Geography"&gt;Geography Type&lt;/a&gt;.  This allows us to use a latlng projection (SRID 4326) whilst still accurately querying for results within a distance provided in metres.  (If you&amp;rsquo;re not familiar with map projections, it&amp;rsquo;s worth &lt;a href="https://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/#selecting-an-srid"&gt;getting your head around them&lt;/a&gt; before you bite off any &lt;a href="http://postgis.refractions.net/documentation/manual-1.5/ch04.html#PostGIS_GeographyVSGeometry"&gt;geolocated data modelling&lt;/a&gt;).&lt;/p&gt;

&lt;script src="https://gist.github.com/1402495.js"&gt;&lt;/script&gt;

&lt;p&gt;If you have the dependencies installed (&lt;code&gt;easy_install&lt;/code&gt; &lt;code&gt;sqlalchemy&lt;/code&gt; and &lt;code&gt;geoalchemy&lt;/code&gt;) and &lt;a href="http://www.geoalchemy.org/tutorial.html"&gt;a spatially enabled SQL database&lt;/a&gt; running, you can &lt;a href="https://raw.github.com/gist/1402495/c082f1ebe9a5f42e54b5a7b28794afb5e89b4733/test_geography.py"&gt;download the script&lt;/a&gt;, edit the &lt;code&gt;DB_SETTINGS&lt;/code&gt; on &lt;a href="https://gist.github.com/1402495#L20"&gt;line 20&lt;/a&gt; and run using:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;python test_geography.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;With that under our belt, let&amp;rsquo;s look at how we query our &lt;code&gt;Message&lt;/code&gt;s.  To work out the radius that will yield the desired result volume we can follow this pattern:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;* start with a default radius (one we just make up, e.g.: 15km)
* perform a query with that radius as a filter
* evaluate the number of results:
    - if we got too many, repeat with a tighter radius
    - else if we got too few, repeat with a wider radius
    - else we have an adequate result volume =D
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This next gist abstracts out the relevant parts of the previous &lt;code&gt;test_geography.py&lt;/code&gt; script into a &lt;code&gt;LocationMixin&lt;/code&gt; class that can be mixed into any &lt;code&gt;SQLModel&lt;/code&gt; class.  The &lt;code&gt;get_distance&lt;/code&gt; class method on &lt;a href="https://gist.github.com/1451887#L113"&gt;line 113&lt;/a&gt; implements the pattern above using a left-node-right algorithm.&lt;/p&gt;

&lt;script src="https://gist.github.com/1451887.js"&gt;&lt;/script&gt;

&lt;p&gt;This allows us to write query code that looks like this:&lt;/p&gt;

&lt;script src="https://gist.github.com/1452726.js"&gt;&lt;/script&gt;

&lt;p&gt;With this code exposed in a request handler, all we need now is a user interface.  I&amp;rsquo;ve collated a few files into &lt;a href="https://github.com/thruflo/proximity-example"&gt;a small example app on GitHub here&lt;/a&gt;.  You can clone the repo, edit the db config as before and bootstrap and then run the example using:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;python model.py
python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you goto &lt;a href="http://localhost:8080"&gt;localhost:8080&lt;/a&gt; you should see something like this:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://img.skitch.com/20111209-8kn183yexginknj3egx45yhmr8.png" style="width: 600px"/&gt;&lt;/p&gt;

&lt;p&gt;As the page has loaded, we&amp;rsquo;ve initialised a &lt;a href="https://github.com/thruflo/proximity-example/blob/master/client.coffee#L4"&gt;LocationBar widget&lt;/a&gt; and an &lt;a href="https://github.com/thruflo/proximity-example/blob/master/client.coffee#L60"&gt;IndexPage view&lt;/a&gt; which both share access to a &lt;a href="https://github.com/thruflo/proximity-example/blob/master/client.coffee#L109"&gt;distance object&lt;/a&gt;.&lt;/p&gt;

&lt;script src="https://gist.github.com/1452557.js"&gt;&lt;/script&gt;

&lt;p&gt;When the page loads, the &lt;code&gt;IndexPage&lt;/code&gt; view makes a request to &lt;code&gt;/query&lt;/code&gt;, with the user&amp;rsquo;s current geolocation.  The &lt;a href="https://github.com/thruflo/proximity-example/blob/master/app.py#L15"&gt;request is handled&lt;/a&gt; with our query code from before.  Because no &lt;code&gt;distance&lt;/code&gt; parameter has been provided, the app uses our &lt;a href="https://github.com/thruflo/proximity-example/blob/master/model.py#L190"&gt;get_distance method&lt;/a&gt; to calculate a filter radius that will return a good volume of results.&lt;/p&gt;

&lt;p&gt;When you bootstrapped the app, you generated 500 messages with random locations.  If you now play with the location slider, you&amp;rsquo;ll see the message numbers change as your query now supplies a specific &lt;code&gt;distance&lt;/code&gt; parameter.  The more you increase the distance, the more recent messages you will get, as more messages are within the filter radius.  At lower distances, we start getting all the messages within that radius (down to no messages at all), rather than just the most recent.&lt;/p&gt;

&lt;p&gt;If you refresh the page (to get the initial result again) I hope you can see the value of the algorithm in showing you an adequate volume of results that are both recent &lt;em&gt;and&lt;/em&gt; nearby.  I&amp;rsquo;d also love to know if this post has proved useful to you or if there are bits that aren&amp;rsquo;t clear, so do post any comments below.&lt;/p&gt;</description><link>https://thruflo.com/post/13978467678</link><guid>https://thruflo.com/post/13978467678</guid><pubDate>Fri, 09 Dec 2011 20:14:00 +0000</pubDate><category>web development</category><category>python</category><category>coffeescript</category></item><item><title>Togethr as Earthquake Smoothing System</title><description>&lt;p&gt;&lt;a href="http://togethr.at"&gt;Togethr&lt;/a&gt; is an app platform and social marketplace with aspirations to become a social economy.  Why, you might ask, do we need a new social economy?  Because to treat an illness you go to the cause.&lt;/p&gt;

&lt;p&gt;Ever since Keynes, governments have borrowed money to stimulate growth in order to protect jobs.  The cause of the economic crisis is not debt but instead the need for job security.  Job changes are like earthquakes, they can shatter a life.  If job losses were not so shattering, we would not need to borrow to ensure they don&amp;rsquo;t happen.  (Nor would we need to be so nervous about the day of reckoning when the credit runs out).&lt;/p&gt;

&lt;p&gt;We smooth quakes by inducing small shifts.  When vocational shifts are on the scale of project or task there is no need for &lt;em&gt;job&lt;/em&gt; security.  Togethr provides a means to earn a crust without having to have a job, a contract or, for that matter, permission.  Social security without the tax burden or disincentive to work.&lt;/p&gt;</description><link>https://thruflo.com/post/11770527705</link><guid>https://thruflo.com/post/11770527705</guid><pubDate>Sat, 22 Oct 2011 13:53:00 +0100</pubDate><category>togethr</category></item><item><title>From WikiHouse to #Manyfacturing</title><description>&lt;p&gt;I&amp;rsquo;ve been part of the team behind &lt;a href="http://www.wikihouse.cc"&gt;WikiHouse&lt;/a&gt;.  It&amp;rsquo;s a fascinating project that points to a future where the Internet disrupts manufacturing.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wikihouse.cc"&gt;&lt;img src="https://64.media.tumblr.com/tumblr_lrbafz4Flj1qbuf8b.png" alt=""/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wikihouse.cc"&gt;WikiHouse&lt;/a&gt; is an open source construction set.  A standard for designing houses that can be made using CNC milling technology.  On one level you can download, print and assemble ready-designed houses.  On the other you can tweak, share and combine componentised designs.&lt;/p&gt;

&lt;p&gt;Micro-processing technology moved computing from the university to the pocket.  CNC milling and 3D printing are digital fabrication technologies moving manufacturing from the factory to the garage.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Internet_of_Things"&gt;
    &lt;figure class="tmblr-full" data-orig-height="305" data-orig-width="500"&gt;&lt;img style="background-color: white" alt="" src="https://64.media.tumblr.com/e8174024d5ecfe46fcf27db71a4cfe8d/f028d6970dbf70e7-6a/s540x810/c9403e961b38e01e3861255123b8e5df4da017e2.png" data-orig-height="305" data-orig-width="500"/&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As access to the hardware opens up, the number of people experimenting will increase.  We&amp;rsquo;ve seen in software that, with the right infrastructure, open source will rapidly outstrip proprietary design.  Architecture and product design is currently done in silos, without the serendipity of the pull request.&lt;/p&gt;

&lt;p&gt;Those sectors will inevitably be disrupted.  As &lt;a href="http://www.guardian.co.uk/artanddesign/2011/sep/06/korea-design-biennial-gwangju"&gt;The Guardian said&lt;/a&gt; about &lt;a href="http://www.wikihouse.cc"&gt;WikiHouse&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&amp;gt; &amp;ldquo;Such open platforms, using the creative commons, are one of the major forces that will change our conception of design in the near future.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re interested in getting involved, &lt;a href="http://www.architecture00.net/"&gt;00:/&lt;/a&gt; are organising a series of &lt;a href="http://www.wikihouse.cc/community"&gt;community events&lt;/a&gt;.&lt;/p&gt;</description><link>https://thruflo.com/post/10442291777</link><guid>https://thruflo.com/post/10442291777</guid><pubDate>Tue, 20 Sep 2011 15:30:00 +0100</pubDate><category>manyfacturing</category><category>wikihouse</category><category>00</category><category>design</category></item><item><title>View from the Hub Westminster</title><description>&lt;p&gt;Absolutely knocked for six at the view from the &lt;a href="http://hubwestminster.net"&gt;Hub Westminster&lt;/a&gt; boardroom.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static.thruflo.com/hub%20westminster/IMAG0545.jpg"&gt;&lt;img src="https://64.media.tumblr.com/tumblr_lrkn8aTN2X1qbuf8b.jpg" alt=""/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;a href="http://static.thruflo.com/hub%20westminster/IMAG0546.jpg"&gt;&lt;img src="https://64.media.tumblr.com/tumblr_lrkn8tHXTI1qbuf8b.jpg" alt=""/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://static.thruflo.com/hub%20westminster/IMAG0547.jpg"&gt;&lt;img src="https://64.media.tumblr.com/tumblr_lrkn9vEqSc1qbuf8b.jpg" alt=""/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>https://thruflo.com/post/10241524277</link><guid>https://thruflo.com/post/10241524277</guid><pubDate>Thu, 15 Sep 2011 17:04:00 +0100</pubDate><category>hub westminster</category><category>00:/</category></item><item><title>Talk about the Format</title><description>&lt;p&gt;A few weeks ago, I hosted &lt;a href="http://sheffdocfest.com/events/view/1965"&gt;a lunch&lt;/a&gt; at the &lt;a href="http://sheffdocfest.com"&gt;Sheffield Doc Fest&lt;/a&gt;.  It was billed as being about how documentary makers can make effective use of the web.  The vast majority of documentary makers were asking the wrong question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;how can I use the web to fund and distribute my documentary?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let&amp;rsquo;s pretend for a moment that the web for documentary makers is YouTube.  YouTube provides publishing, not distribution.  You can get your content up and out there but you &lt;a href="http://www.youtube.com/watch?v=CLuj0gMG9B4"&gt;don&amp;rsquo;t&lt;/a&gt; get a ready made audience for it.&lt;/p&gt;

&lt;p&gt;For distribution (an audience) on the web, you need &lt;a href="/post/7115413149/pull-strategy"&gt;pull&lt;/a&gt;.  You need to be a content publisher that people seek out, subscribe to, share and respond to.  As Seth Godin has been saying for a long time, it&amp;rsquo;s about &lt;a href="http://www.ted.com/talks/seth_godin_on_the_tribes_we_lead.html"&gt;tribes&lt;/a&gt;, about leading a movement.&lt;/p&gt;

&lt;p&gt;The opportunity the web affords documentary makers is to build pull through the format.  As we seen everywhere from the &lt;a href="http://www.barcaforum.com/showthread.php/7416-FCB-players-thank-fans-at-Camp-Nou"&gt;Camp Nou&lt;/a&gt; to the X-Factor, fans love to feel that they&amp;rsquo;ve co-created the narrative.  The activity and sense of co-creation breeds advocates.&lt;/p&gt;

&lt;p&gt;Providing opportunities for profound co-creation, be it through trans-media, non-linear or interactive documentary making, builds pull.  Documentary makers and digital thinkers need to talk together about the format, not how to distribute it.&lt;/p&gt;</description><link>https://thruflo.com/post/7488021523</link><guid>https://thruflo.com/post/7488021523</guid><pubDate>Mon, 11 Jul 2011 09:57:59 +0100</pubDate><category>web</category><category>content</category><category>documentary</category><category>interactive</category><category>sheffdocfest</category></item><item><title>Safety in Numbers</title><description>&lt;p&gt;Yes, the media need the book thrown at them (and, &lt;a href="http://www.huffingtonpost.co.uk/2011/07/06/watch-hugh-grant-on-phone_n_891034.html"&gt;as HUGE says&lt;/a&gt; it&amp;rsquo;s not just one tabloid but all of them).  But how on earth were the voicemails accessed in the first place?&lt;/p&gt;

&lt;p&gt;&lt;iframe style="margin: 0.5em 0em" width="512" height="308" src="http://www.youtube.com/embed/OoJHP-zQAuA" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;The phone companies &lt;a href="http://www.bbc.co.uk/news/magazine-14044499"&gt;left the back door open&lt;/a&gt;, effectively issuing everyone with a default password of 1234.  If I did that as a web developer, I&amp;rsquo;d be hung out to dry.  There&amp;rsquo;s no question that it was calculated incompetence: the sales team &lt;a href="http://www.youtube.com/watch?v=wvsboPUjrGc"&gt;shouted down&lt;/a&gt; the head of security.&lt;/p&gt;

&lt;p&gt;If we learn one thing from phone hacking it&amp;rsquo;s that it&amp;rsquo;s no use being &lt;a href="http://www.theregister.co.uk/2007/01/06/bofh_1/"&gt;a dumb user&lt;/a&gt;: you can&amp;rsquo;t rely on the invisible hand to keep your data safe.  It&amp;rsquo;s too busy &lt;a href="http://www.orange.com/en_EN/group/global_footprint/countries/uk/uk-fi.jsp"&gt;making money&lt;/a&gt;.&lt;/p&gt;</description><link>https://thruflo.com/post/7337411760</link><guid>https://thruflo.com/post/7337411760</guid><pubDate>Thu, 07 Jul 2011 10:22:10 +0100</pubDate><category>security</category><category>phone hacking</category></item><item><title>It's called a Pull Strategy</title><description>&lt;p&gt;What should leaders think about?  What&amp;rsquo;s the strategic conversation that cuts to the heart of the matter?&lt;/p&gt;

&lt;p&gt;If you look at &lt;a href="/post/6971464134/web-strategy-authority"&gt;my last post&lt;/a&gt;, it&amp;rsquo;s all about web strategy and content strategy.  We know that the web has disrupted and continues to disrupt everything, so it&amp;rsquo;s clear that organisations need a strategic approach to it.  However, one of the fascinating things to learn from &lt;a href="http://www.lucidplot.com"&gt;Jonathan Kahn&lt;/a&gt; was how he uses content strategy as a trojan horse: a conversation starter leading to something more fundamental.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://londoncreativelabs.com"&gt;&lt;img src="http://thruflo.largeblue.net/lcl.png" alt="London Creative Labs"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yesterday was my first board meeting as a Trustee of &lt;a href="http://londoncreativelabs.com/"&gt;London Creative Labs&lt;/a&gt;.  The two founders, &lt;a href="https://twitter.com/#!/evangineer"&gt;Mamading&lt;/a&gt; and &lt;a href="https://twitter.com/#!/olasofia"&gt;Sophia&lt;/a&gt; are setting out on a journey to demonstrate and refine how jobs can be created through local enterprise: skills camps to build confidence and capacity, labs to stimulate social enterprise startups and incubation to help those startups grow.&lt;/p&gt;

&lt;p&gt;The conversation, largely steered by &lt;a href="https://twitter.com/#!/gl0ria"&gt;Gloria Charles&lt;/a&gt;, ranged across topics, including outreach and communication.  Part of the challenge is to engage people on the ground and part is to show the world there is a better way to create work.  To deliver on the second part, Mamading and Sophia need to develop &lt;strong&gt;pull&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;a href="http://www.amazon.com/Power-Pull-Smartly-Things-Motion/dp/0465019358"&gt;&lt;img src="http://thruflo.largeblue.net/pull.jpg" style="margin: auto"/&gt;&lt;/a&gt;    
&lt;/p&gt;

&lt;p&gt;They need to build a profile and following to benefit from the acceleration and serendipity provided by people, organisations, clients and funders seeking them out and - here&amp;rsquo;s the real point - &lt;em&gt;so does everybody else&lt;/em&gt;.  London Creative Labs is a great illustration of a general truth.&lt;/p&gt;

&lt;p&gt;Web, content, communication and even business strategy are secondary to pull strategy.  The web is a channel to build pull.  Content is a means of building pull.  You communicate to build pull.  Business is a matter of pull.&lt;/p&gt;

&lt;p&gt;Discussing pull &lt;em&gt;is&lt;/em&gt; the most fundamental strategic conversation.&lt;/p&gt;</description><link>https://thruflo.com/post/7115413149</link><guid>https://thruflo.com/post/7115413149</guid><pubDate>Fri, 01 Jul 2011 10:37:00 +0100</pubDate><category>strategy</category><category>pull</category><category>London Creative Labs</category></item></channel></rss>
