<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[James Smith]]></title>
  <link href="https://floppy.org.uk/atom.xml" rel="self"/>
  <link href="https://floppy.org.uk/"/>
  <updated>2026-03-20T15:21:31+00:00</updated>
  <id>https://floppy.org.uk/</id>
  <author>
    <name><![CDATA[James Smith]]></name>
    <email><![CDATA[james@floppy.org.uk]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[New Beginnings]]></title>
    <link href="https://floppy.org.uk/blog/2024/01/22/new-beginnings/"/>
    <updated>2024-01-22T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2024/01/22/new-beginnings</id>
    <content type="html"><![CDATA[<p>Last Thursday was my last day at <a href="https://dxw.com">dxw</a>. I loved it there, it’s full of Good People and Good Work, and being a trustee of the Employee Ownership Trust for the last couple of years has been a true honour. But, something came along I couldn’t say no to.</p>

<p>Over the last couple of years, I’ve been building a self-hosted web app called <a href="https://github.com/manyfold3d/manyfold">Manyfold</a> (previously named VanDAM, because a weak pun is fine to start with). I built it to scratch an itch I had with managing a large library of 3d model files for 3d printing, but over the years, a few other people have started using it and finding it useful.</p>

<p>In the summer, I put in a wild application for grant funding to <a href="https://nlnet.nl/">NLNet Foundation’s</a> <a href="https://nlnet.nl/NGI0/">NGI Zero Entrust</a> fund, which supports work on open standards, open data, and open source software for the good of the Internet as a whole. To my very great surprise, <a href="https://nlnet.nl/project/Personal-3D-archive/">they agreed</a>, so starting today I get to spend a few months working on Manyfold and the software it’s built on, to make something useful for even more people.</p>

<p>The work is in 6 main <a href="https://github.com/manyfold3d/manyfold/milestones">milestones</a>:</p>

<ol>
  <li>Core feature enhancements; adding a bunch of things like model format conversion, licence information, internationalisation and translation, and more.</li>
  <li>Improved deployment; making the app easier to set up and run in different environments, from personal NASes (NASii?) to full-on cloud deployments.</li>
  <li>Security &amp; compliance; making sure the app is secure, accessible, and <a href="https://w3c.github.io/sustyweb/">sustainable</a>.</li>
  <li>Documentation; user guides, admin manuals, contributor guides, all that good stuff.</li>
  <li>3D model compression; 3d models can be large and lots of formats are inefficient. I’m intending to create a new format based on the <a href="https://hhoppe.com/proj/pm/">progressive meshes</a> algorithm that will enable models to be streamed efficiently. This is particularly cool, as this was part of the background I learned about doing my PhD; about time that was useful.</li>
  <li>ActivityPub federation; make the site multiuser, build feeds and social features, and then make it federate using <a href="https://activitypub.rocks">ActivityPub</a> (like <a href="https://joinmastodon.org">Mastodon</a> and others). If I get this right, then we can create a “decentralised Thingiverse”, where it will no longer matter which site your content is on.</li>
</ol>

<p>Those last two are the coolest, and I’m particularly excited about getting started on those. I’ve got about 6 months of funding to do this, which is frankly incredible, though I’ve got no idea what happens after that. I’ll also be available for small contracts to build up a diversity of income, so let me know if you have anything I can help with!</p>

<p>If you’re interested in the project, you can follow progress in the Fediverse at <a href="https://3dp.chat/@manyfold">manyfold@3dp.chat</a>, and of course if you want to get involved or run your own, check out <a href="https://github.com/manyfold3d/manyfold">the GitHub repository</a> (better documentation coming soon).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[LLM-Supported Development]]></title>
    <link href="https://floppy.org.uk/blog/2023/11/30/llm-supported-development/"/>
    <updated>2023-11-30T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2023/11/30/llm-supported-development</id>
    <content type="html"><![CDATA[<p class="danger">DISCLAIMER: AI is the latest thing in the hype cycle, specifically LLMs. I don’t buy into the hype, but I did work in AI research 20 years ago, and the recent progress is properly incredible compared to where we were back then. I’m not an AGI hype man, but also I definitely think this is a lot more interesting and potentially useful than “fancy autocomplete” as some have said. OK, on with the actual post…</p>

<p>When <a href="https://chat.openai.com">ChatGPT</a> first launched, almost a year ago, it didn’t take long for people to realise that it could write code. My immediate reaction to that was “lol, call me when it can open PRs on my projects to fill in all the tests I didn’t get round to writing”.</p>

<p>Fast forward a few months (and the last few months in AI/LLMs have been <em>wild</em>), and it seems that I wasn’t the only person who thought that. Enter <a href="https://sweep.dev">Sweep</a> (ignore the slightly-offensive tagline that it’s an “AI-powered junior developer”, let’s call it an “LLM-powered PR generator”). I’ve tried it a couple of times on my own side-project code (more on that later), and I’m definitely intrigued.</p>

<p>It works in a way that’s tightly integrated into the GitHub workflow, so you start out by opening an issue asking it to make a particular change. For instance: <a href="https://github.com/manyfold3d/manyfold/issues/1651">Sweep: add unit tests for application_helper.rb</a>. There’s a bunch of code in that file that I wrote in a hurry, and because this is a hobby project, I didn’t fully TDD it. So, can Sweep backfill the gaps for me?</p>

<p>I tried this first in the summer, and frankly Sweep fell flat on its face. It produced invalid code that didn’t even parse, let alone pass any tests. So, I forgot about it for a while. But, the other day, I gave it another shot, and yeah, it’s got a <em>lot</em> better.</p>

<p>Sweep goes away and starts adding comments to the ticket about what it’s doing. It’s very very open about how it’s working, which is unusual for AI tools; you really can see how it’s breaking down the problem and what it’s currently up to. First, it reads the entire codebase and interprets the request with that in mind - then it comes up with a plan of changes to make, before it finally goes to make them.</p>

<p><img src="/images/posts/2023-11-30-llm-supported-development/searching.png" alt="Sweep reading my code" /></p>

<p><img src="/images/posts/2023-11-30-llm-supported-development/coding.png" alt="Sweep planning out what it's going to write" /></p>

<p>Once it’s done that, it <a href="https://github.com/manyfold3d/manyfold/pull/1653">opens a pull request</a> with its changes, just as a human would. The tests and checks run, and if something fails, Sweep automatically reads the errors, feeding it back into the changes it made. You can then do a human pass over the PR (as you would with any code) and provide feedback just as you would for a human colleague.</p>

<p><img src="/images/posts/2023-11-30-llm-supported-development/pr.png" alt="A detailed PR description , written by Sweep" /></p>

<p>So how does it do? In the case linked above, it wrote a new test file, added a load of happy-path tests, which (a) made sense, and (b) passed! It made one mistake, which brought up a failing test, and honestly it was a pretty reasonable error. I can imagine a junior dev calling over their colleague to say “why doesn’t this pass?”. It took me a minute or two to realise what was wrong, then I left a comment for Sweep. Sure enough, a few minutes later it fixed it exactly as I intended.</p>

<p>Here’s where things go off the rails a bit though. It also had some code style errors, and when I asked it to use double quotes for strings in the whole file to fix a lint problem, it completely misunderstood and went off on a rampage writing more tests (which, to be fair, were useful, just not what I asked for). Then when I asked it to undo that commit and go back to the previous version, it just started spewing out syntactically broken code. So, it’s not perfect yet.</p>

<p>BUT, those first two commits and the tests it wrote were great. So, I manually rolled the branch back and merged it in. My app is now partly written by a chatbot; strange days.</p>

<p>Sweep also hits a lot of other buttons that make me prefer it over things like Copilot. It’s open source, you can self-host it, and it’s open about how it’s working. There’s no black box here, apart from the actual ChatGPT LLM itself.</p>

<p>So, am I afraid AI is coming for my job? Well, not really. I think we might see it being used more and more though, in certain places. I don’t want AI to help me write algorithms or structure my architecture - that’s the interesting and fun bit. But, if something can run through my code finding errors, filling in gaps, take away the less-fun work that tends to get pushed aside, but is really important? Yeah, I’m interested, and I’ll keep exploring the possibilities.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Yours Disgustedly]]></title>
    <link href="https://floppy.org.uk/blog/2022/10/21/yours-disgustedly/"/>
    <updated>2022-10-21T09:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2022/10/21/yours-disgustedly</id>
    <content type="html"><![CDATA[<p>I wrote to my MP again…</p>

<blockquote>
  <p>Dear Jeremy Quin,</p>
</blockquote>

<blockquote>
  <p>I’ve been disgusted in the actions of the Government in which you serve for years now, and yet your party keeps finding more scrapings at the bottom of the barrel, and keep finding new depths of ineptitude and mendacity.</p>
</blockquote>

<blockquote>
  <p>How can you be OK with all this? Boris’s disdain for the law and consitution was bad enough, but then to elect undoubtedly the most incompetent leader we’ve ever had, and finally finish off the UK’s standing in the world? What are your party thinking? What are YOU thinking? How can you stand with these people, how can you take their instructions and toe the party line when that party line is set by obviously completely inept people who seem to have wandered into Westminster by accident and are mainly just confused about where they are.</p>
</blockquote>

<blockquote>
  <p>You have a job to do. You are failing. Your constituents deserve better, and your country deserves better.</p>
</blockquote>

<blockquote>
  <p>I was going to ask politely, but the time has passed for that. There are three things you need to do to salvage some semblance of integrity:</p>
</blockquote>

<blockquote>
  <ol>
    <li>Publicly support calls for a General Election - you may not want it, but the country demand it. I’m sure your seat will be safe anyway.</li>
    <li>Do not let Boris Johnson anywhere near the leadership of the Conservative Party.</li>
    <li>Resign the whip and sit as an independent. You should be ashamed of your party and if you have any integrity, I’m honestly not sure how you could remain part of it.</li>
  </ol>
</blockquote>

<blockquote>
  <p>I have stepped back from active politics in the last few years, because truth and reason have been completely undermined and honestly I don’t know how to operate anything I believe in in that environment. But I’m reconsidering; if there’s a General Election, I’m sorely tempted to stand again just so I can be on stage with you at a husting and say all this to your face in front of hundreds of people, and demand an answer for them.</p>
</blockquote>

<blockquote>
  <p>Yours in severe disappointment and anger,</p>
</blockquote>

<blockquote>
  <p>James Smith</p>
</blockquote>

<p>If you’re as angry as I am, maybe <a href="https://www.writetothem.com/">do the same</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Attack of the IT Zombies]]></title>
    <link href="https://floppy.org.uk/blog/2022/07/22/attack-of-the-it-zombies/"/>
    <updated>2022-07-22T09:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2022/07/22/attack-of-the-it-zombies</id>
    <content type="html"><![CDATA[<p>Legacy technology systems are like zombies.</p>

<p>Not because they shamble on slowly, seemingly unstoppable. Not because they keep popping back up again when you thought you’d killed them. And not even because of the unfortunate smell…</p>

<p>No, legacy systems are like zombies because they <em>survive on brains</em>.</p>

<p>Any institution that’s been around since before the Information Age (however you measure that) will have built up its processes and systems with people and paper.</p>

<p>If we were to draw this in a modern technical architecture diagram (I’m using the <a href="https://c4model.com/">C4 model</a> in <a href="https://www.plantuml.com/">PlantUML</a> for these diagrams), it might look like this:</p>

<p><img src="/images/posts/2022-07-22-attack-of-the-it-zombies/image1.png" alt="A system diagram showing 5 people (Alice, Bob, Carol, Dave, and Eve) talking to each other and using three systems (Systems 1, 2, and 3) which are labelled as paper in a filing cabinet." /></p>

<p>The systems storing the information are paper and filing cabinets, and all the data flows through the people and their tangled web of communications.</p>

<p>Moving into the digital realm, organisations took these processes and replaced the paper with computers. But all too often, the data flows weren’t changed too much – the information still flows between the systems via people’s brains.</p>

<p><a href="https://www.flourish.org/">Francis Irving</a> gave <a href="https://soundcloud.com/theodi/odi-fridays-burn-the-digital">a great talk about “digital paper”</a> a few years back – this is where many institutions still are. Take a paper form, and put it on a computer. And this stuff really matters. Governments spend billions dealing with it, and <a href="https://www.bloomberg.com/news/articles/2022-05-13/sunak-blames-it-systems-for-decision-not-to-raise-uk-benefits">legacy systems are often blamed for policy failures</a>.</p>

<p>If we reflect that, our diagram now looks like this:</p>

<p><img src="/images/posts/2022-07-22-attack-of-the-it-zombies/image2.png" alt="A system diagram similar to the one before, except now the systems are 'digital forms' reading and writing from databases. Eve, who was only linked to the other people in the system before, is now making queries of the databases as well." /></p>

<p>It’s OK, some new things are possible, like Eve digging into the databases directly for her audit information, but it’s not really a different system.</p>

<p>Now these diagrams are all well and good, but there’s something missing. Often we think of these old paper systems as simplistic, and our job with digital transformation is to make things smart.</p>

<p>But that’s not the case at all. Yes, paper itself is basic, but secretly every connection between data stores is mediated by an impossibly sophisticated pattern matching AI system, with its own attached data storage as well. These are very impressive machines, incredibly smart, but can be rather buggy, the I/O is somewhat slow, and the backup and failover options are frankly nowhere near up to scratch.</p>

<p>I mean, of course, human brains. Let’s redraw our diagram, treating our people as technical systems rather than humans, and peel back the layers so we can see inside the brains (ew).</p>

<p><img src="/images/posts/2022-07-22-attack-of-the-it-zombies/image3.png" alt="Another diagram of the same system as last time. This time, the humans in the system are drawn as systems themselves, with a brain doing the talking and using, as well as reading from and writing to a 'memory' database." /></p>

<p>Now we have a truer view of the system, and we can see that if we want to do proper digital transformation of it, we have a problem. If we only think about changing the digital systems, which is the usual context, we’re leaving out a vast part of the existing system. And that part of the system will <em>route around damage</em>. It could treat our transformation as damage to its data stores, and instead find other options. For example, shadow systems and personal knowledge.</p>

<p>So, the job of digital transformation is not to make the system smarter. That’s impossible, given that the most complex machines in the universe are already an inherent part of it. What we want to do is move those machines to the edges, where they can do the work they’re uniquely capable of, and get all the stuff in the middle to work by itself.</p>

<p>So how do we do this? Well, how about we replace the meat computers with actual computers? Let’s start with some recent hotness, a bit of <a href="https://en.wikipedia.org/wiki/Robotic_process_automation">Robotic Process Automation (RPA)</a> (or as we old hackers call it, scraping).</p>

<p><img src="/images/posts/2022-07-22-attack-of-the-it-zombies/image4.png" alt="In this diagram, the humans are all at the top, using two web services that read from and write to RPA bots and vice versa. Those robots then read from and write to the digital form systems from before, which do the same to the databases. The humans are no longer linked to each other." /></p>

<p>Now our digital systems are used by actual robots, and the humans are out at the edges where they can do uniquely human work like decision making, caring about people, solving unforeseeable problems, and watching Countdown with a cup of tea. There’s a whole seductive thing about automating these sorts of tasks instead of the stuff in the middle – for instance, <a href="https://www.theguardian.com/technology/2016/oct/24/artificial-intelligence-judge-university-college-london-computer-scientists">AI that makes court judgments</a>. This is The Wrong Approach, but that’s a whole other post. Let me know if you want me to write it sometime.</p>

<h2 id="the-problem-with-automating-work-thats-best-for-humans">The problem with automating work that’s best for humans</h2>

<p>There are 2 problems though. By moving the humans out to the edges, but not changing the existing digital systems, we’ve not dealt with some really important stuff. We think we’ve solved it, but we’ve ignored that web of links between the human systems, and we’ve ignored the shadow data stores that are inherent in each link.</p>

<p>No matter how clever our RPA tools are (and they’ll always be less clever than the humans), we’re going to lose something here if we just try to replace the people with actual AI systems. This leaves out many other implications of RPA, like embedding legacy IT even further into the organisation. There’s more about this in the MITSloan Management Review article <a href="https://sloanreview.mit.edu/article/five-robotic-process-automation-risks-to-avoid/">Five Robotic Process Automation Risks to Avoid</a>.</p>

<h2 id="what-we-need-to-do">What we need to do</h2>

<p>Instead, we have to fundamentally rethink our systems from the ground up. We can build new microservices in an agile way, delivering value quickly, but we have to build that on a thorough understanding of the true nature of the <em>complete</em> old system, and at least a rough plan for the new one. Ignoring those things, and assuming that service-focused User Research and Agile Development (wonderful as those things are) will solve the core issues, won’t work for an organisation-wide transformation; I like the term <a href="https://vlfig.me/posts/microservices">Architecture Nihilism</a> for this approach.</p>

<p>We have to rethink the middle. We don’t want to make it smarter, because we inherently can’t. <em>We have to make the middle less intelligent so we can move the smarts to the edge.</em></p>

<p>We need to look at what’s on the paper, and what’s in the shadow data stores inside the people. Then we need to combine those into a <em>domain model</em>, a coherent view of what the organisation <em>knows</em>, what the world <em>looks like</em> to the organisation. Then we need to remodel and design boundaries and connections between subdomains, and redesign our services taking into account <em>all</em> the official and unofficial communication paths in the old (human) systems.</p>

<p>Connecting the data within our domain comes next. If we have a record about a person in 2 different legacy systems, we have to be able to know that they match up. We can’t rely on our pattern matching AIs (humans) any more to tell us whether John Smith in system A is the same as John Q. Smith in system B based on a misspelt address and a birth date. We humans can handle that. Our databases can’t, unless they’re told explicitly.</p>

<h2 id="getting-computers-to-do-the-boring-stuff">Getting computers to do the boring stuff</h2>

<p>This is where RPA <em>can</em> help – taking old data and extracting it, connecting it, and making those inferences is going to have to be done by someone. The right automated tooling can be really good at doing the bulk of that, with support from a human to make the tougher calls. It’s sometimes known as a <em>Joint Cognitive System</em> – the automation deals with the easy stuff, and bumps things it’s not sure about up to its human user for a judgement call.</p>

<p>But that’s best done as a one-time data transformation; we wouldn’t want to do that amount of processing every time we want to use some information in our system. For one thing, think of the environmental cost of all that excessive computation. And of course, it can’t get the information out of the shadow data stores in all those brains.</p>

<p>If we can transform our data and connections properly and intentionally, we can get to a state where the middle of our system is, frankly, really really… boring. And that’s a good thing. Computers are really good at boring, simple, repetitive tasks. We know exactly how to make them do those.</p>

<p>In the end, when we consider the whole system, maybe we can end up with something more like this (I know I’ve skipped ahead a huge amount here; this is a really complex problem solving process, which many others have explored better than I can here. Maybe next time):</p>

<p><img src="/images/posts/2022-07-22-attack-of-the-it-zombies/image5.png" alt="A diagram of the same system, but now with a layer of shared microservices between the legacy systems and RPA bots. The shared microservices communicate between each other automatically to transfer data over APIs, and the humans interact with those services individually." /></p>

<p>The transformed data and joined up domain means that the services can work together, and lets us move the human data storage into that coherent digital domain over time.</p>

<p>That finally lets us free up the people to work at the edge, being clever, compassionate, and caring (and talking to each other about Countdown) instead of using all that incredible brain power passing data around. If the data is connected, we can stop thinking about the people in the system as glitchy meat computers, and instead treat them as the wonderful, incredible, powerful things that they are, and let them do their best work.</p>

<p><em>Thanks to F, Joseph, Dom, and Chanelle and all the other smart dxw people who helped bounce around the ideas that fed into this. Love you all.</em></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Networking the Elegoo Mars]]></title>
    <link href="https://floppy.org.uk/blog/2021/03/03/networking-the-elegoo-mars/"/>
    <updated>2021-03-03T21:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2021/03/03/networking-the-elegoo-mars</id>
    <content type="html"><![CDATA[<p class="danger">DISCLAIMER: This article is based only on my experience; it may not work for you, it may be inaccurate, and it may damage your printer! Lots of things could go wrong, so don’t blame me if your printer turns into an expensive paperweight. This does not constitute legal advice, always ask your doctor before using internally, the value of shares may go down as well as up, etc etc.</p>

<p>I recently treated myself to a secondhand Elegoo Mars, a resin-based (SLA) 3D printer. It’s great, but doesn’t include any  capability for printing over the network.</p>

<p><em>OR DOES IT?</em></p>

<p>The Mars is based on a board from <a href="https://www.chitusystems.com/">ChiTu Systems</a>, who provide it for numerous manufacturers. Some of their boards include network capabilities, and if you have an early Mars, yours does too! It’s just hidden away! But it’s pretty easy to unlock.</p>

<p>I didn’t work this out myself, just pieced together a process from various places across the Internet. All sources are listed at the end of the article.</p>

<p class="info">Before you start, note that this is SLOW. Using <a href="https://en.wikipedia.org/wiki/Sneakernet">sneakernet</a> and carrying a USB stick back and forth to your printer would be a lot quicker. But I don’t care, I’m in no hurry. If this method doesn’t work for you, look at <a href="https://github.com/luizribeiro/mariner">Mariner</a>. It’s probably better, but the nice thing here is we’re using the native capabilities of the machine.</p>

<h2 id="you-will-need">You will need</h2>

<ol>
  <li>
    <p>An Elegoo Mars, revision <code class="language-plaintext highlighter-rouge">M01</code> to <code class="language-plaintext highlighter-rouge">M08</code>. To find your revision, look at the first three digits of the serial number on the bottom of the machine. <code class="language-plaintext highlighter-rouge">M09</code> and above reportedly have custom boards that don’t have the connections available. Sorry!</p>
  </li>
  <li>
    <p>Up-to-date Elegoo firmware. I’ve only tried this on my machine, which was running <code class="language-plaintext highlighter-rouge">V4.2.20.3_LCDE /1440x2560 /F2.9 FW</code>. If you’re running something older, look at the <a href="https://www.elegoomars.com/forum/showthread.php?tid=15">instructions on the Elegoo Mars forum</a>, you might need to do a couple of other steps.</p>
  </li>
  <li>
    <p>The hex keys that come in the Mars toolkit</p>
  </li>
  <li>
    <p>A FAT32-formatted USB stick</p>
  </li>
  <li>
    <p>If you want Wifi, a <a href="https://www.chitusystems.com/product/esp-01-wifi-module/">ChiTu Wifi module</a>. This only cost me about £6 including shipping, and it came all the way from Shenzen in about a week.</p>
  </li>
  <li>
    <p>A healthy disregard for product warranties</p>
  </li>
</ol>

<h2 id="break-open-the-ui">Break open the UI</h2>

<p>First thing we need to do is get access to the network settings on the machine itself. The code is all there in the firmware, but it’s hidden away.</p>

<p>ChiTu’s firmware is interesting in that it separates out the core machine firmware from the user interface firmware. That means we can replace the UI firmware with a version that will give us access, without touching the fundamentals of the machine or any actual settings. ChiTu’s download page even has an app that lets you build a custom UI, presumably so that any manufacturer can create their own interface. The really useful thing is, it comes with default firmware that has everything enabled.</p>

<ol>
  <li>
    <p>Go to <a href="https://www.chitusystems.com/download/">the ChiTu download page</a>, open the “ChiTu UI editor” section, and download <code class="language-plaintext highlighter-rouge">UI_ALL_LCD.bin</code>.</p>
  </li>
  <li>
    <p>Put that bin file on your empty USB stick, and insert it into your Mars.</p>
  </li>
  <li>
    <p>On the Mars, print that file. You should get a progress bar and after a few seconds, confirmation that it’s worked.</p>
  </li>
</ol>

<p>Your user interface will now look a bit different, and in the System menu, you should see a new section called “Network”.</p>

<h2 id="connect-up-with-ethernet">Connect up with Ethernet</h2>

<p>Now that we’ve got visibility of the network settings, let’s connect up.</p>

<ol>
  <li>
    <p>Unscrew the four screws in the rear side panel. You might want to slacken off the screws on the top and bottom that hold the vertical pillars in place too, so you can move the panel.</p>
  </li>
  <li>
    <p>Slide the rear panel off. On the left of the machine, you should see the motherboard, and on there if you have the right variant, you will see an RJ45 connector. <img src="/images/posts/2021-03-03-networking-the-elegoo-mars/ethernet.jpeg" alt="RJ45 connector" /></p>
  </li>
  <li>
    <p>Plug in an Ethernet cable and turn the machine on. When you go to the network settings UI we enabled in the last step, you should see it get an IP address.</p>
  </li>
</ol>

<p>Congratulations! Your Mars is online. If Ethernet is good enough for your needs, then you’re basically done with the machine itself, except you’ll need to find a way of getting that cable out of the box so you can close it back up. A decent way might be to print a <a href="https://www.thingiverse.com/thing:3768132">backplate with a hole in it</a>, though I might get round to making one that takes an actual RJ45 extension connector at some point so you can unplug it without disassembling the machine. Watch this space.</p>

<h2 id="connect-via-wifi">Connect via Wifi</h2>

<p>If you want Wifi though, there’s a bit more to do. It’s time to install that <a href="https://www.chitusystems.com/product/esp-01-wifi-module/">ChiTu Wifi module</a>.</p>

<p class="info">Note: It <em>might</em> be possible to use any old EPS8266 board, but from the <a href="https://www.chitusystems.com/2020/11/03/how-to-activate-the-wifi-module-function-on-your-3d-printer/">Wifi page on ChiTu’s website</a> it seems you still need to buy some sort of official code even once you’ve installed their firmware. Still, if you try it, let me know if you get it working!</p>

<ol>
  <li>
    <p>Remove the front panel from the printer in the same way as you did the back, and slide it out. Don’t break the display ribbon cable. <img src="/images/posts/2021-03-03-networking-the-elegoo-mars/motherboard.jpeg" alt="Motherboard" /></p>
  </li>
  <li>
    <p>Take a look at your board. You’re looking for a black 8-pin header at the top of the board, snuggled behind the vertical pillar. It’s got “WIFI” written underneath it. If you’ve got one, then you’re good to go. <img src="/images/posts/2021-03-03-networking-the-elegoo-mars/wifi_header.jpeg" alt="Wifi header" /></p>
  </li>
  <li>
    <p>Unscrew the top screws from the vertical pillar, and loosen the bottom ones, so that you can move the pillar out a bit. I used the panels to hold up the top while I did this.</p>
  </li>
  <li>
    <p>With the pillar moved out a little, you should be able to insert the Wifi module into the black header (obviously do this with the printer off). It fits pointing downwards towards the other side of the motherboard, not sticking up above it.</p>
  </li>
  <li>
    <p>Turn on your printer. You should see a red LED come on on the Wifi module. <img src="/images/posts/2021-03-03-networking-the-elegoo-mars/wifi_board.jpeg" alt="Wifi board" /></p>
  </li>
  <li>
    <p>Reassemble the vertical pillar and fix the front and rear panels back into place.</p>
  </li>
  <li>
    <p>Get your USB stick, and create a file called <code class="language-plaintext highlighter-rouge">wifi.txt</code> on it (the name doesn’t really matter). In that file, add the following line, with your Wifi network details. Mind the quotes: <code class="language-plaintext highlighter-rouge">M9003 '"YourWiFiName","Password"'</code></p>
  </li>
  <li>
    <p>Insert the USB stick into your printer, turn it on, and print the text file. After a few seconds, it should finish.</p>
  </li>
  <li>
    <p>Look at the system network settings page - flip the display to Wifi by clicking the icon in the top left. You should see your SSID on the page, and with luck, an IP address! It’s alive!</p>
  </li>
</ol>

<h2 id="enable-network-connections-in-chitubox">Enable network connections in ChiTuBox</h2>

<p>The final step is to enable network support in ChiTuBox so we can actually send things over. Make sure you leave your USB stick in the Mars, the machine doesn’t have any other storage so it will store your prints on there.</p>

<ol>
  <li>
    <p>Open ChiTuBox. I’m running v1.8.1, so these instructions are for that version. Yours may differ.</p>
  </li>
  <li>
    <p>Export your configuration. In my case, that was done via Menu / Help / Export Configuration. Save the file somewhere you can find it.</p>
  </li>
  <li>
    <p>Load up that file in your text editor of choice.</p>
  </li>
  <li>
    <p>Search through the file for anywhere it says <code class="language-plaintext highlighter-rouge">bNetSending:0</code>, change it to <code class="language-plaintext highlighter-rouge">bNetSending:1</code>, and save.</p>
  </li>
  <li>
    <p>Back in ChiTuBox, import the configuration file.</p>
  </li>
</ol>

<p>Now, when you have sliced your print, above the save button you should see “Network Sending”. Click that, and you should get a dialog appear with your printer listed in the dropdown - ChiTuBox has found it automatically over the network. Hit send, and your file is on the way! (It WILL take ages, make a coffee or learn to juggle or something).</p>

<p>Once the upload is complete, it will even ask you if you want to start the print! Proceed to enjoy the feeling of success as you start a resin print without leaving your chair. You can also print the file from the screen in the usual way, the file is on the USB stick just as if you’d copied it there yourself.</p>

<p><img src="/images/posts/2021-03-03-networking-the-elegoo-mars/print.jpeg" alt="Print!" /></p>

<h2 id="error-lp0-on-fire">ERROR: lp0 on fire</h2>

<p>Thanks to everyone who came before me:</p>

<ul>
  <li>
    <p>u/mmm1808 on Reddit for <a href="https://www.reddit.com/r/ElegooMars/comments/lqf2gc/does_chitus_wireless_module_work_for_elegoo/">asking the question that got me started on this</a>.</p>
  </li>
  <li>
    <p>The admin of the Elegoo Users Forum, for their <a href="https://www.elegoomars.com/forum/showthread.php?tid=15">fantastic instructions using the EPAX UI</a>. If something here doesn’t work for you, read that thread.</p>
  </li>
  <li>
    <p>ChiTu for providing firmware downloads, documentation, and detailed instructions for their boards. Even though it’s not open source, they’re pretty open with their information. Thanks folks.</p>
  </li>
  <li>
    <p>And of course Elegoo for making a wonderful machine!</p>
  </li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Unions, smoke alarms, and lifting the boats]]></title>
    <link href="https://floppy.org.uk/blog/2020/09/28/unions-smoke-alarms-lifting-boats/"/>
    <updated>2020-09-28T09:15:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2020/09/28/unions-smoke-alarms-lifting-boats</id>
    <content type="html"><![CDATA[<p>I was born in 1976. While I was at primary school, Margaret Thatcher was doing her best to crush the power of working people that challenged her plans. Ever since then the word “union” has been inextricably linked to strikes, unrest and conflict, and has been very effectively labeled an enemy. Even now, the only time we hear about unions are when the trains aren’t running. The very idea of workers organizing among themselves is… well, pretty unusual.</p>

<p><img src="/images/posts/2020-09-28-unions-smoke-alarms-lifting-boats/pushup.jpg" alt="Every time the world tells me unions are bad, I do one push-up" /></p>

<p>But despite it being presented as a bad thing all my life, I’ve joined a union, and I want to explain a little bit about my own views and reasons.</p>

<p>Important note: those reasons are <em>not</em> about where I currently work – they’re much wider than that. There is no subtext here, no words between the lines.</p>

<h2 id="companies-are-not-people">Companies are not people</h2>

<p>While companies are made of people, they are <em>not</em> people, and they are subject to different laws and limitations. For instance, we all think it’s terrible that Amazon doesn’t pay “fair” taxes, but <em>it’s legally bound to avoid paying tax wherever possible</em>. If it didn’t, its shareholders would be entirely within their rights to sue the company for financial negligence. A company isn’t immoral; it’s amoral. Morality just doesn’t come into it. (I’d argue that the system that makes that true is immoral, but that’s a different post, or more likely a pub chat. God, I miss pub chats.)</p>

<p>We work in an industry that likes to think it’s progressive, but in reality, as most of us have experienced over our careers, the tech industry is full of exploitation. From games companies forcing young programmers to work weekends for 6-month-long crunches, to startups underpaying staff with the promise of worthless options; it’s also an industry rife with stress, burnout, anxiety and a whole range of other mental health issues.</p>

<h2 id="so-why-do-we-need-unions">So why do we need unions?</h2>

<p>Unions are there to stop exactly this sort of exploitation. They did it in traditional industrial settings (giving us “health and safety”, aka <em>people not getting killed</em>), and there’s a rising tide of acknowledgment that the tech industry is in need of the same thing.</p>

<p>Now, I don’t work at a company in that exploitative mould; so do I need a union? No, not really, not now. <em>But that’s not the point</em>.</p>

<h2 id="installing-the-alarms">Installing the alarms</h2>

<p>Have you got a smoke alarm? You have, right? You have an alarm <em>in case</em> something happens, though you sincerely hope you never need it. You didn’t wait until the house was burning down to install it, and similarly now that you have one, I assume you’re not any less careful about things catching fire – and you certainly aren’t setting fire to the sofa on purpose.</p>

<p><img src="/images/posts/2020-09-28-unions-smoke-alarms-lifting-boats/thisisfine.jpg" alt="I probably should have checked the batteries" /></p>

<p>Being part of a union is the same; it’s there <em>in case</em> something happens. For the situations we can’t see yet. As long as nothing’s on fire, you’d never even know it was there. I don’t <em>want</em> to need it. But I might, one day.</p>

<h2 id="raising-the-tide">Raising the tide</h2>

<p>And there’s one more reason too. Unionisation is <em>weird</em> in the tech industry, as in society as a whole. If we do it, it makes it more normal. And by making it more normal, we make it more acceptable for those people who <em>do</em> need it right now.</p>

<p>Where I work, a great many of us have our pronouns on stickers on our laptops, and introduce ourselves with them. But I don’t do that because I’m regularly misgendered; it’s because I know it helps normalise that behaviour, and that helps those among us to whom this <em>does</em> happen on a regular basis. It’s like masks, too – <em>it’s not for us, it’s for others</em>.</p>

<p><img src="/images/posts/2020-09-28-unions-smoke-alarms-lifting-boats/bigblue.jpg" alt="I joined a union to make it ok for you to" /></p>

<p>I would like to see the most progressive parts of the tech industry do the same around union relations. To show that unions aren’t the Big Bad we’ve been told about all our lives, to show that a positive engagement is possible that we can all be proud of, and to use that as a way to raise the tide and lift the boats across our wider industry, that <em>is</em> in desperate need of it.</p>

<h2 id="fin">Fin</h2>

<p>If you want to discuss anything I’ve said, get in touch, and if you want to know more, I recommend taking a look at <a href="https://prospect.org.uk/about/who-are-prospect/">Prospect</a>, the union I chose to become part of.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A letter to Jeremy Quin MP]]></title>
    <link href="https://floppy.org.uk/blog/2019/09/24/a-letter-to-jeremy-quin-mp/"/>
    <updated>2019-09-24T12:45:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2019/09/24/a-letter-to-jeremy-quin-mp</id>
    <content type="html"><![CDATA[<p>This is a letter I’ve just sent to my MP, Jeremy Quin, regarding the September 2019 prorogation of Parliament. I sent one a couple of weeks ago, to which he responded with the standard government line having a go at the opposition for voting down an election. I’ll upload that soon.</p>

<blockquote>
  <p>Hi Jeremy,</p>
</blockquote>

<blockquote>
  <p>Thanks for responding to my previous message. I am very disappointed that you don’t share my concern for the UK constitution and the rule of law. The 11 supreme court justices fortunately do, and have found your Prime Minister to have acted unlawfully in shutting down our Parliament two weeks ago, and of having lied to the Queen in order to do so.</p>
</blockquote>

<blockquote>
  <p>If you are going to reply to me with the standard government line, as you usually do, then please don’t bother, because I’ve heard it.</p>
</blockquote>

<blockquote>
  <p>Instead I want to appeal to you, personally. Not as a Conservative, not as a member of the government, not even as an MP, but as a person.</p>
</blockquote>

<blockquote>
  <p>The organisation you are working for and allying yourself to is led by liars; it is shredding the UK’s institutions for personal and party gain. You call yourself a Conservative. What exactly is it that your party is conserving right now? Even leaving Brexit aside, your party is sowing division and on the verge of destroying the consensus by which this country hangs together.</p>
</blockquote>

<blockquote>
  <p>I hope I can appeal to you as a man of principle, to stand up and defend our country. Toeing this party line will not benefit you in the long term; I hope you can see that.</p>
</blockquote>

<blockquote>
  <p>Yours hopefully,
James Smith</p>
</blockquote>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Web Of Truth]]></title>
    <link href="https://floppy.org.uk/blog/2017/01/23/the-web-of-truth/"/>
    <updated>2017-01-23T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2017/01/23/the-web-of-truth</id>
    <content type="html"><![CDATA[<p><a href="http://knowyourmeme.com/memes/my-parents-are-dead-batman-slapping-robin"><img src="/images/posts/2017-01-23-the-web-of-truth/batmanslap.jpg" alt="Link Your Sources" /></a></p>

<p>We’re in an era of lies and propaganda, euphemistically labelled “fake news” and <a href="https://www.theatlantic.com/politics/archive/2017/01/the-pointless-needless-lies-of-the-trump-administration/514061/">“alternative facts”</a>. Many of the efforts of the alt-right are to muddy the waters of facts, to <a href="http://bluevirginia.us/2017/01/great-explanation-baghdad-sean-spicers-bizarre-n-korea-style-statement-yesterday">erode people’s confidence that facts even exist</a>.</p>

<p>As Clay Shirky implied during Trump’s election campaign, facts are not <em>sufficient</em> to win this war:</p>

<blockquote class="twitter-tweet" data-conversation="none" data-lang="en-gb"><p lang="en" dir="ltr">Seeing my timeline during the convention last night made me despair. We&#39;ve brought fact-checkers to a culture war. Time to get serious.</p>&mdash; Clay Shirky (@cshirky) <a href="https://twitter.com/cshirky/status/756569741020377088">22 July 2016</a></blockquote>
<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8" integrity="sha384-YKuNmPEzk+rcw2RjFojCPulLWvBtylHB3pVwUvSzijPm1sAny7FIDKLJivzQPheY" crossorigin="anonymous"></script>

<p>However, facts are <em>necessary</em>.</p>

<p>More and more we need to be able to rely on the news we read and the posts we share to be factual. We can’t fall into the trap of using propaganda ourselves, or not caring what we say as long as it hurts the other side. By doing that, the confusion rises further and the forces of chaos win.</p>

<p>Fortunately we have technologies to help us. The web is built on links; linking back to primary sources of information is cheap and easy, and in the war on lies we need to do it more.</p>

<p>We’ve asked journalists to link to their source materials in online news articles for years. Now it’s a moral imperative to do so. And if you’re sharing an image online, for god’s sake include a link to the source data or article in the image. Even if it’s a silly meme.</p>

<p><strong>If you make an unsourced statement, it’s indistinguishable from lies.</strong></p>

<p>If we link our sources, then we can build a web of trust that will keep the lies at bay. At the bottom, theirs will have no substance. Ours will. Yes, I know that it means a few readers might click away from your precious content, but guess what; it’s more important than that now.</p>

<p>Link your goddamn sources, for truth and freedom, and then we can get on with the next stage of the fight.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Poo Button]]></title>
    <link href="https://floppy.org.uk/blog/2016/11/20/the-poo-button/"/>
    <updated>2016-11-20T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2016/11/20/the-poo-button</id>
    <content type="html"><![CDATA[<p class="alert">If you’re visiting from the <a href="http://www.wired.co.uk/article/amazon-dash-hack-poo-button-internet-of-things">Wired article</a> and want to show your appreciation somehow, you can <a href="https://www.justgiving.com/4w350m3/donation/direct/charity/99993#MessageAndAmount">make a donation</a> to the <a href="http://criduchat.org.uk">Cri du Chat Syndrome Support Group</a> to help families affected by the syndrome that meant I did this thing in the first place. Thanks!</p>

<p><img src="/images/posts/2016-11-20-the-poo-button/poobutton.jpg" alt="The Poo Button" /></p>

<p>A little while ago, my colleague Stuart hacked a couple of <a href="https://www.amazon.co.uk/b?ie=UTF8&amp;node=10833773031">Amazon Dash buttons</a> to <a href="https://hackernoon.com/quantified-boy-726e9558594f#.dj7xkh8ra">create a behaviour scoreboard for his son</a> - an experiment in Internet of Parenting, if you will.</p>

<p>I thought that was pretty cool, so I popped a Dash button onto my Amazon wishlist, but without a clear idea of what to do with it; just for fun. Then though, my wife asked what it was, and a couple of days later came up with an idea. And this time, my hacking around might actually be useful.</p>

<h2 id="the-challenge">The Challenge</h2>

<p>My daughter has <a href="http://criduchat.org.uk">Cri du Chat Syndrome</a>, a genetic condition that causes global learning delay and a bunch of other things. One side effect of it is that she has always suffered from chronic constipation; she’s been on medication for it for years, and it’s a constant mission getting her to poop regularly - her bowel muscles just aren’t strong enough, or something.</p>

<p>Anyway, we’ve changed her medication and it’s had some effect, but to be sure we need to track when all her bowel movements happen - this stuff doesn’t have an instant effect.</p>

<p>So, writing it all on paper is a bit useless, when we can do better. And what better than to make a “poo button”. Let’s get a Dash button, stick it on the wall, and use it to log (no pun intended) her logs (OK, pun was intended). I’m not the first to do this of course - one of the first hacks for the Dash was to <a href="https://medium.com/@edwardbenson/how-i-hacked-amazon-s-5-wifi-button-to-track-baby-data-794214b0bdd8#.n2rjvlxmm">track nappy changes</a>.</p>

<h2 id="the-button">The Button</h2>

<p>First thing - set up the Dash button in the normal way using the Amazon app on a phone. When it comes to selecting a product, <strong>don’t choose anything</strong>, just exit. Then you have a dash button connected to the local network, but that won’t order anything from Amazon.</p>

<h2 id="intercepting-the-presses">Intercepting The Presses</h2>

<p>Then, we install the <a href="https://github.com/hortinstein/node-dash-button">node-dash-button</a> library. I’m using a Mac Mini as a home server so it was a matter of installing <code class="language-plaintext highlighter-rouge">npm</code> with <a href="http://brew.sh/">Homebrew</a>, making sure I had XCode installed, and away we go following the setup in the <a href="https://github.com/hortinstein/node-dash-button/blob/master/README.md">README</a>. The installation worked better as a global thing rather than just for one user:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm install -g node-dash-button
</code></pre></div></div>

<p>We then run <code class="language-plaintext highlighter-rouge">sudo /usr/local/lib/node_modules/node-dash-button/bin/findbutton</code> and get something like this:</p>

<pre>
Watching for arp &amp; udp requests on your local network, please try to press your dash now
Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Microchip Technology Inc. Protocol: arp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Amazon Technologies Inc. Protocol: udp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Apple Protocol: arp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Amazon Technologies Inc. Protocol: arp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: Microchip Technology Inc. Protocol: arp
</pre>

<p>The Amazon ARP one is the one we want, so we’ll keep the address (just shown as x’s above) for later.</p>

<p>Now we need a bit of code to detect the button press. I’ve shamelessly ripped of the code Stuart created in his post - I won’t repost it here, <a href="https://hackernoon.com/quantified-boy-726e9558594f#.dj7xkh8ra">take a look back at his post</a> for the breakdown.</p>

<h2 id="storing-the-data">Storing The Data</h2>

<p>To store the data, I could do what Stuart did and use <a href="https://bothan.io">Bothan</a>, but my wife will be happier with a spreadsheet. So, let’s set up one of my favourite tools of the moment, <a href="https://zapier.com">Zapier</a>, to store the data somewhere useful.</p>

<p>I’ve created a Zap with a webhook trigger and a Google spreadsheet output. I really wish Zapier would let me publish zaps publicly so you could see it, but they don’t, so you’ll have to take my word for it that it’s easy.</p>

<p>To test it, we can send a message to the webhook with <code class="language-plaintext highlighter-rouge">curl</code> (this project is so pun-rich it’s amazing):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl -X POST -d '{"when": "2016-01-01T09:00Z"}' https://hooks.zapier.com/hooks/catch/.../.../
</code></pre></div></div>

<p>Zapier detects the POST, and then sends the <code class="language-plaintext highlighter-rouge">when</code> value into my spreadsheet. Easy as pie. Now all we need to do is get the code to send that POST when it detects a button press.</p>

<h2 id="the-code">The Code</h2>

<p>In the end, the entire code is as simple as:</p>

<pre>
var dash_button = require('/usr/local/lib/node_modules/node-dash-button');
var request = require('/usr/local/lib/node_modules/request');
var poo_button = 'xx:xx:xx:xx:xx:xx' // The MAC address for the button goes here
var webhook = 'https://hooks.zapier.com/hooks/catch/xxxxxx/xxxxxx/';

var dash = dash_button([poo_button], null, null, 'all');

dash.on("detected", function (dash_id){
  if (dash_id === poo_button){
    console.log("Parp!");
    requestData = {
      "when": new Date().toISOString()
    };
    request({
      url: webhook,
      method: "POST",
      json: true,
      headers: {
        "content-type": "application/json",
      },
      body: JSON.stringify(requestData)
    });
  }
});
</pre>

<p>There’s a lot of cleanup to do with that code, like sorting the include paths, package.json file, extracting the secure variables, and so on, and I’ll carry on doing that and post the source on GitHub when it’s OK for public consumption. I know it’s shonky as hell right now, but <strong>it works</strong>!</p>

<p>I press a button, and the current time is logged in a spreadsheet. Bingo!</p>

<h2 id="next">Next</h2>

<p>So there are a few things that would be good to do next.</p>

<ul>
  <li>Somehow enable use of the Bristol Stool Scale to store the type. This is kind of helpful, though not essential. We could have more than one button, or we could somehow detect multiple presses. But I don’t know if it’s necessary.</li>
  <li>A way of packaging this up so it can be used by non-experts. The Internet of Things is all very well, but too often it’s about <a href="https://www.juicero.com/">$700 juicers</a>, and not about making people’s lives easier. I’d love to know who’s really applying this stuff to making life easier for people with extra needs.</li>
  <li>The Dash button is really cool, but it’s hard to set up to take control of. An open version that could hook up to an arbitrary URL would be amazing. Maybe that’s something IFTTT should look into - they have a <a href="https://ifttt.com/products/do/button">DO button app</a> already; a hardware version would be great.</li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OSX Security Theatre Part 2]]></title>
    <link href="https://floppy.org.uk/blog/2016/11/10/osx-security-theatre-part-2/"/>
    <updated>2016-11-10T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2016/11/10/osx-security-theatre-part-2</id>
    <content type="html"><![CDATA[<p class="alert">This is part 2 of my security setup. See <a href="/blog/2015/07/02/osx-security-theatre">part 1</a> for information on password security and encryption topics.</p>

<p>After the 2016 US election, we have an extensive surveillance apparatus in the hands of a man who I definitely don’t trust with it. Given that, it’s time for another security upgrade.</p>

<p>This part focuses on network security hygiene, and the ability to avoid surveillance. As I said in part 1, this isn’t because I’m doing anything illegal, but as I’m politically active, and in declared opposition to many of our current illiberal leaders, it seems only sensible to create a bit of safe space <em>now</em> in case someone decides to make my activities illegal in the future.</p>

<h2 id="uplink">Uplink</h2>

<p>First up - time to get a decent Internet Service Provider. The UK is passing law after law allowing logging of connections, mandated filtering of Internet content, and so on. The government is on a path to deciding what you can do online, and being able to check up on you. They will rely on the ISPs to enforce this for them.</p>

<p>However, there is one out there that resists this at every opportunity. <a href="https://aa.net.uk">Andrews &amp; Arnold</a> is a small ISP designed for technical users, and is explicitly <a href="http://aa.net.uk/kb-broadband-unfiltered.html">opposed to monitoring and filtering</a>. That page includes a <a href="https://en.wikipedia.org/wiki/Warrant_canary">warrant canary</a> for secret monitoring equipment as well, so that’s good.</p>

<p>As a bonus, they PGP sign all their emails, run a <a href="http://aa.net.uk/kb-irc.html">support channel on IRC</a>, support the <a href="https://www.openrightsgroup.org/">Open Rights Group</a>, and regularly give evidence to MPs about communications policy. Basically, I know they have my back, and they’re now the only people I trust with my uplink.</p>

<h2 id="browser--web-security">Browser &amp; web security</h2>

<p>HTTP is the normal way to connect to websites; HTTPS is the secure version, and these days there is no reason not to use it. Many sites still don’t send you to an HTTPS version by default, but still allow unencrypted connections. This means your communications can be easily read in transit.</p>

<p>Avoid this by installing <a href="https://www.eff.org/https-everywhere">HTTPS Everywhere</a> in your browser. It automatically rewrites everything it can to HTTPS, helping you to stay secure.</p>

<p>I’d also recommend <a href="https://www.eff.org/privacybadger">Privacy Badger</a>, which is a browser extension that blocks various evil web tracking methods, helping maintain your online privacy. That means it also blocks all the ads that are doing nasty things, leaving only the ones that behave themselves. I like that over blocking all ads, though to be honest web advertising is so sleazy that I basically don’t ever see any - Privacy Badger kills them all.</p>

<p>Which browser though? I use <a href="https://www.mozilla.org/en-GB/firefox/new/">Firefox</a>, personally. It’s open source, free, and well-supported. Chrome (and even the open source version Chromium) sends a bunch of information about you back to Google without telling you, and I’d rather that didn’t happen, so Firefox it is. I also now use <a href="https://www.mozilla.org/en-GB/firefox/ios/">Firefox on iOS</a> as well; if you want things like bookmark sharing, you can have them.</p>

<p>One last thing on this - drop Google and change your search provider to <a href="https://duckduckgo.com/">DuckDuckGo</a>, a search engine that doesn’t track you. I’ve found the results to be perfectly fine and have been using it well over a year now.</p>

<h2 id="vpn">VPN</h2>

<p>Next, low-level network security. If I’m sat in a coffee shop, I’m probably on some unencrypted wifi network surrounded by a load of other people. It’s quite simple to read network traffic in that situation, or even provide a honeypot wifi connection that will man-in-the-middle all your network traffic. So, even though we’re as secure as we can be in our browser, let’s be 100% sure and set up a VPN (Virtual Private Network).</p>

<p>A VPN is basically a fully-encrypted “tunnel” from your computer to another one somewhere else. That tunnel can go over unencrypted connections, but nobody will be able to see anything inside it.</p>

<p>I’ve set up a VPN server on a machine in my house, because I want my tunnel to basically allow my communications to be <em>as secure as they are in my home</em>. I’m not worried about anonymity at this point. The VPN will basically route all my network activity through my home, and through my trusted ISP.</p>

<p>So, I’ve got a Mac Mini running OSX El Capitan, with <a href="https://itunes.apple.com/us/app/os-x-server/id883878097">OSX Server</a> (£15), which comes with the ability to run a VPN. Setup is dead simple for this use case. You can pretty much just enable the VPN in the server app, and the defaults will work. I’m using L2TP, which is the best on offer there. OpenVPN is supposed to be a bit better, but the software setup and maintenance looks like a headache I’d rather not have.</p>

<p>You then set up your VPN on your devices. On OSX that’s in the Network preferences window - add a new interface and enter your VPN details. Same on iOS, under General settings.</p>

<p>The main problem is that you need to know where to connect to. Many ISPs don’t provide a static IP, so you end up using Dynamic DNS. Your router may have support for this built in, but mine doesn’t, so I’m using <a href="https://sourceforge.net/p/ddclient/wiki/Home/">ddclient</a> running on the Mac Mini to automatically update my <a href="https://www.cloudflare.com/">Cloudflare</a> DNS records. Works like a charm. I’ll probably do a separate post just on that config, because it’s a little involved, but this isn’t the place.</p>

<p class="alert">I’ve since found a little OSX menubar app called <a href="https://itunes.apple.com/cn/app/vpn-monitor/id887410814?l=en&amp;mt=12">VPN monitor</a> that for a couple of quid automatically connects to your VPN whenever you connect to a network. You can add safe networks, like home and work, where it won’t bother, but the rest of the time it’ll route your traffic via the VPN automatically. Security by default is always a good thing.</p>

<h2 id="anonymity">Anonymity</h2>

<p>Of course, that only gives me security, not anonymity. All the traffic still flows over my home ISP uplink as if I was in the house. For proper anonymity, we need something more, and that thing is <a href="https://www.torproject.org">Tor</a>.</p>

<p>Tor works by encrypting your traffic, sending it all over the network through multiple hosts, then having it emerge somewhere else on the network completely unrelated to you. It slows things down a lot, so you wouldn’t use it all the time, but it’s a great option to have available.</p>

<p>I’ve got two Tor options set up. The first is simple - just install <a href="https://www.torproject.org/projects/torbrowser.html.en">Tor Browser</a>. That gives you an anonymised browser session without any further setup. For most people that’s probably fine.</p>

<p>The second is more involved. If I need to cover my tracks with anything that’s <em>not</em> browser based, or I want to hide my machine completely, I can route all my network traffic through a tor proxy running in the background.</p>

<p>Setup isn’t hard. You can install Tor with <a href="https://brew.sh">homebrew</a> (also useful for installing ddclient), and the default installation pretty much sets up the proxy for you.</p>

<p>I then created a new network location in the Network preferences on my laptop, and in the advanced settings for the wifi connection, enabled the SOCKS proxy to <code class="language-plaintext highlighter-rouge">localhost</code> port <code class="language-plaintext highlighter-rouge">9050</code>. That means that anything on that network connection should be sent through the proxy first, which will route it through Tor. Then you’ve got two network locations to choose from, which you can switch between in the Apple menu. One-click switch to anonymise all my traffic? Nice.</p>

<p>Now, there are <a href="https://www.torproject.org/docs/faq.html.en#AttacksOnOnionRouting">good reasons not to do this</a> if you’re <em>really</em> paranoid. Because your entire network traffic is being routed together, it might be possible to tell who you are from things like background processes checking in with Apple, or similar correlations. It’s not something I would do unless it was really necessary, but it’s nice to have it there ready.</p>

<p>It also still <a href="https://www.dnsleaktest.com/">leaks metadata via DNS</a>, because your DNS lookups don’t go via the proxy, but it’s a step in the right direction and should be OK for casual use. If I manage to improve it I’ll update here.</p>

<h2 id="what-next">What next?</h2>

<p>So I think that’s everything I’ve got set up, security-wise. What should I do next? Suggestions appreciated!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Open is a political statement]]></title>
    <link href="https://floppy.org.uk/blog/2016/06/24/open-is-a-political-statement/"/>
    <updated>2016-06-24T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2016/06/24/open-is-a-political-statement</id>
    <content type="html"><![CDATA[<p><em>Also published on <a href="https://medium.com/@Floppy/open-is-a-political-statement-89d603e119cf#.i201zkw77">Medium</a> and <a href="https://somethingnew.org.uk/news/2016/06/24/open-is-a-political-statement.html">Something New</a>.</em></p>

<p>Today is a strange day in the UK. We’re divided, confused, and have taken what I think is a self-defeating decision about our place in the world. Our political institutions are in turmoil, and there’s change in the air, though of what sort nobody knows.</p>

<p>In this atmosphere, it’s increasingly obvious that the old politics is broken, and that we need something better for the future. Somewhere where we could have explored the EU question sanely, without the lies, deceit and hate building up and polluting our society.</p>

<p>I think there’s a better way, and it lies in a movement that’s been building with the rise of the Internet and the World Wide Web. Since the dawn of the network revolution, the world is increasingly about sharing, collaboration, and working together. We’re connected peer-to-peer as a species, in a way we haven’t been since we were a single tribe thousands and thousands of years ago. We are building a global mind, and we need to learn how to use it.</p>

<p>This new age for society is about working together and sharing, about being open. We can do amazing things with openness; it gives us the scientific method, open source software that runs the modern world, open exchange of ideas. Openness helps us get better quicker.</p>

<p>I believe that the old political axis of left/right is outdated and irrelevant in the 21st century. Instead we have new axes; open/closed, together/alone, optimistic/fearful, innovative/static.</p>

<p>I think the future is about openness, working together, and being optimistic and innovative. I know there are a great many people I know who feel the same way.</p>

<p>My message to them is this: the things we believe, the future we want, is a political statement.</p>

<p>It is not enough for us to tinker around the edges of an industrial-era system and make a system that is more transparent and accountable, but just as dysfunctional. We need to present our vision of a better open future clearly and loudly, in the arena of public discourse.</p>

<p>This isn’t about Internet freedom, or digital rights, or any of that. It’s about the network-era transformation of society, for a better world for everyone.</p>

<p>I’m working on this by building a startup network-era political party, <a href="https://somethingnew.org.uk">Something New</a>, here in the UK. There are similar efforts cropping up across the world as well, we’re not alone. If you want to help, please do, we need you. If you want to do it better, please do that too, and we’ll join in. I don’t care who wins, whose name is on the thing; all I know is that it needs to happen, and if we don’t do it ourselves, nobody will.</p>

<p>We all know <a href="https://en.wikipedia.org/wiki/The_Innovator%27s_Dilemma">old institutions have trouble innovating and adapting</a>, and are often outclassed by smaller disruptive companies who can adapt to the new environment they find themselves in. What’s true in startup 101 is also true of our political system. The status quo is ripe for disruption; let’s start working together, in the open, and innovate our country a better future.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Data infrastructure technology: are blockchains the answer?]]></title>
    <link href="https://floppy.org.uk/blog/2015/10/22/data-infrastructure-technology-blockchains/"/>
    <updated>2015-10-22T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/10/22/data-infrastructure-technology-blockchains</id>
    <content type="html"><![CDATA[<p>How do we make sure data infrastructure is always available, and always trustworthy? Are blockchains the answer?</p>

<p>We believe that <a href="http://theodi.org/who-owns-our-data-infrastructure">data infrastructure</a> is fundamental to our future. What we normally mean by this is “data as infrastructure” – data is becoming part of the infrastructure of society. In <a href="http://theodi.org/labs">ODI Labs</a>, we have a slightly different take on the issue: if data is to be infrastructure for society, what does that mean about the technology underlying the “infrastructure for data”?</p>

<p><img src="https://bd7a65e2cb448908f934-86a50c88e47af9e1fb58ce0672b5a500.r32.cf3.rackcdn.com/uploads/assets/28/f9/5628f98e1f986a081e000021/data_infra_1.jpg" alt="null" /></p>

<p><em><small>Photo source: <a href="https://www.flickr.com/photos/rh2ox/9990016123/" title=" r2hox ">Flickr - r2hox (CC BY-SA 2.0)</a></small></em></p>

<p>If data is becoming essential to society, then it must be:</p>

<ul>
  <li>resilient – always available when needed, with access able to route around damage. It can’t drop offline because of a datacentre outage, or a forgotten domain renewal.</li>
  <li>robust – data must be verifiable and reliable, resistant to tampering. The concepts of <a href="https://thehackernews.com/2014/05/microsoft-security-essential-found.html">maldata</a> and data spam aren’t in wide circulation yet, but at some point they will be.</li>
  <li>scalable – having vital data hosted on a single server will not scale up when that dataset is suddenly in high demand.</li>
</ul>

<p>A new class of technologies is appearing that cope with many of these problems. In particular, distributed data storage – where the data doesn’t reside in one place but across the network itself – is on the rise. And a lot of people are talking about one specific implementation of that idea: blockchains.</p>

<p>By the way, if you don’t know what I’m talking about, blockchains are basically a way of storing information (transactions, in the case of Bitcoin) in a distributed fashion across the Internet without needing a trusted central server. This <a href="http://www.bbc.co.uk/news/technology-33090285">quick primer from the BBC</a> is a good introduction to the idea.</p>

<p>There is a lot of hype about “putting things into the blockchain” at the moment. While the technology is fascinating and has huge potential, there are a few things we need to be aware of.</p>

<h2 id="a-blockchain-or-the-blockchain">A blockchain, or THE blockchain?</h2>

<p><img src="https://bd7a65e2cb448908f934-86a50c88e47af9e1fb58ce0672b5a500.r32.cf3.rackcdn.com/uploads/assets/28/fd/5628fd8b1f986a081e000025/data_infra_4.jpg" alt="null" /></p>

<p><em><small>Photo source: <a href="https://www.flickr.com/photos/rh2ox/9990024683/in/photostream/" title=" r2hox ">Flickr - r2hox (CC BY-SA 2.0)</a></small></em></p>

<p>There’s a confusing tendency for people to talk about THE blockchain, as opposed to A blockchain, and that implies Bitcoin. Storing data in the Bitcoin blockchain is possible, and has been done <a href="http://www.righto.com/2014/02/ascii-bernanke-wikileaks-photographs.html">since day one</a>, but it isn’t really advisable.</p>

<p>So, instead of using the Bitcoin blockchain, most blockchain data storage systems are using their own chains – for instance, <a href="https://namecoin.info/">Namecoin</a>, <a href="https://ethereum.org/">Ethereum</a>, and <a href="http://factom.org/">Factom</a> (who are putting <a href="http://siliconangle.com/blog/2015/05/17/honduras-to-use-bitcoin-blockchain-tech-to-run-its-land-registry/">Honduras’ Land Registry</a> into a blockchain).</p>

<p>However, all of these still have a cryptocurrency involved. The work to verify the blockchain is done by many people, and they need to be paid for the compute time they contribute. Therefore, these systems all have their own currencies internally, like “Ether” or “Factoids”.</p>

<p>Is it realistic to run a distributed data store based on a pseudocurrency model? Does the very concept of financial return introduce the <a href="https://hbr.org/2009/03/when-economic-incentives-backfire">wrong incentives</a> into the system? At the end of the day, <strong>who pays</strong> to maintain an effective yet radically distributed system?</p>

<h2 id="immutability">Immutability</h2>

<p><img src="https://bd7a65e2cb448908f934-86a50c88e47af9e1fb58ce0672b5a500.r32.cf3.rackcdn.com/uploads/assets/28/fb/5628fb551f986a081e000023/data_infra_2.jpg" alt="null" /></p>

<p><em><small>Photo source: <a href="https://www.flickr.com/photos/rh2ox/9989876925/" title=" r2hox ">Flickr - r2hox (CC BY-SA 2.0)</a></small></em></p>

<p>Blockchains are designed to be immutable, to have data written into them and be available forevermore. Technically, that seems a desirable quality as it means you can’t go back and rewrite history: nobody can deny that a transaction took place, even if it was revoked later on.</p>

<blockquote>
  <p>A digital register may supersede or expire your permission to do something, but it shouldn’t be able to later refute that permission was ever issued to you. <a href="https://gds.blog.gov.uk/2015/09/01/registers-authoritative-lists-you-can-trust/">Paul Downey</a></p>
</blockquote>

<p>However, technology, meet society. In the sphere of human life, immutability can be a major problem.</p>

<p>What about the recent <a href="https://en.wikipedia.org/wiki/Right_to_be_forgotten">EU right to be forgotten</a> ruling? What’s your legal recourse when the data you want removed from public view is stored in an immutable data store? Is there any truly immutable data?</p>

<p>Here’s an example: in the UK, if you change your gender, you of course have the right to have your new gender reflected in all official records. That, though, includes rewriting history and backdating your new gender, so that the gender you were assigned at birth doesn’t appear even in old records. If, say, your driving licence is stored in a blockchain, the old version can’t be modified. It can be revoked and replaced with an updated one, but the original record is still there.</p>

<p>Sure, you could solve those problems by storing only pointers to data in a blockchain, and having the data somewhere else, somewhere mutable, but then you’ve lost the resilience aspect of the technology; the data is still centralised, even though the index is distributed.</p>

<p>How then, do we design data storage in blockchains so that immutability is limited to the things that need to be immutable?</p>

<h2 id="beyond-blockchains">Beyond blockchains</h2>

<p><img src="https://bd7a65e2cb448908f934-86a50c88e47af9e1fb58ce0672b5a500.r32.cf3.rackcdn.com/uploads/assets/29/00/56290077d0d46207c8000031/data_infra_5.jpg" alt="null" /></p>

<p><em><small>Photo source: <a href="https://www.flickr.com/photos/rh2ox/9989872634/in/photostream/" title=" r2hox ">Flickr - r2hox (CC BY-SA 2.0)</a></small></em></p>

<p>Nowadays, when most people say “blockchain”, and even when I say it myself, I treat it as a shorthand for “undefined radically distributed storage technology”. There are many other options out there, from the non-bitcoin blockchains like <a href="https://ethereum.org/">Ethereum</a> and <a href="http://maidsafe.net/">MaidSafe</a>, to other systems like <a href="https://en.wikipedia.org/wiki/Tahoe-LAFS">Tahoe-LAFS</a>, and even older technologies like BitTorrent. (For great in-depth discussion of these and many others, watch the <a href="http://redecentralize.org/interviews/">Redecentralize interviews</a>).</p>

<p>Make no mistake, there is huge (and radical) potential in this technology area for data, and for society as a whole, but we need to understand how these technologies are best applied.</p>

<h3 id="standards">Standards</h3>

<p>And whether it’s blockchains or something else, there are plenty of questions. How do we standardise storage in such a system so that we get a single network of data, as opposed to having to use a different storage system every time we want a new type of information? What are the data protocols for distributed storage? How do we talk about, and perhaps enforce, ownership and licensing?</p>

<h2 id="what-are-we-doing">What are we doing?</h2>

<p>We are exploring the potential applications of these technologies in the context of data infrastructure. This applies at different scales: global, national and city data infrastructure. It also applies across sectors: finance, agriculture, nutrition and global development.</p>

<p>ODI Labs are exploring these issues and, as with everything we do at the ODI, we will be collaborating with our network of <a href="http://theodi.org/membership">Partners</a>, <a href="http://theodi.org/membership">Supporters</a>, <a href="http://theodi.org/nodes">Nodes</a>, and <a href="http://theodi.org/startups">Startups</a>. If you would like to get involved in collaboration, and sponsorship, please <a href="mailto:labs@theodi.org">get in touch</a>.</p>

<p>We want to experiment with the technologies, work out some of the tricky social questions, and help guide the future of distributed data storage in the right direction.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Early Warning System]]></title>
    <link href="https://floppy.org.uk/blog/2015/08/12/early-warning-system/"/>
    <updated>2015-08-12T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/08/12/early-warning-system</id>
    <content type="html"><![CDATA[<p>I know that I don’t live a healthy lifestyle; I’ve known that for years. But, the consequences have always seemed a long way off.</p>

<p>The other day though, I got a kick up the arse. I went to the doctor about some new <a href="/blog/categories/depression">depression</a> symptoms, and he did a blood test to check my general health at the same time.</p>

<p>When I called up for the results, the receptionist asked me to schedule another test in six months as I was “glucose intolerant”. This was a <a href="https://storify.com/Floppy/surprise-diagnosis">surprise</a> to me, and the next day I managed to speak to the doctor for more information.</p>

<p>Basically, I’ve got <a href="https://en.wikipedia.org/wiki/Impaired_fasting_glucose">persistently elevated blood glucose</a>. I’m only just outside the normal range (HbA1c 6.2), which means it’s not type 2 diabetes <em>yet</em>, but I’m heading that way. It puts me in a category of risk much higher than normal; 50% risk of type 2 over the next 10 years, for instance.</p>

<p>Needless to say, I don’t want that to happen.</p>

<p>It was a shock, and made me consider my own mortality for a while, but this is a good thing. I’ve found this out at a point where I can properly do something about it. I know that the consequences are coming if I don’t act.</p>

<p>So, what to do? At this point it’s all lifestyle change, and I already know:</p>

<ul>
  <li>I’m vastly overweight</li>
  <li>I don’t get enough exercise</li>
  <li>My diet could be better.</li>
</ul>

<p>Let’s look at those in turn.</p>

<h2 id="weight">Weight</h2>

<p>We’ll start with the most obvious. I’m overweight, in fact well into obese. I weigh in the region of 120kg at the moment, with a BMI of 35.4. This is <em>far</em> too much. Apparently to get into a “normal” BMI bracket, I need to lose 35kg, to get down to 85. That’s almost a third of my body weight.</p>

<p>Now, I’m a big chap. I’m 185cm tall, but also I’m pretty broad and have a large ribcage. I know that BMI isn’t a good indicator in these situations, but I’ve not found anything else to give me a target so far. I’m hoping that our <a href="http://horsham.westsussexwellbeing.org.uk/">local wellbeing scheme</a> can help me work out where I need to get to.</p>

<p>First step to losing this is that a couple of months ago, my wife and I started doing the <a href="http://thefastdiet.co.uk/">FAST (or 5:2) diet</a>. I don’t like diet fads, but as this one seems to be based on proper science (and I first heard of it on Horizon), I’m more inclined to have a go. It’s going OK so far, fasting two days a week, and some weight is coming off. We probably need to be stricter though to get the full benefit.</p>

<p>I’m tracking my weight using the <a href="https://www.fitbit.com/user/23W9NM">Fitbit</a> tools. They’re not great (I’d like a running average), but it does the job of data capture well enough. I really liked <a href="https://itunes.apple.com/us/app/id287941226">True Weight</a> on the iPhone, but it doesn’t really integrate with anything else, which is a pain these days.</p>

<p>I keep considering getting a <a href="https://www.fitbit.com/uk/aria">Fitbit Aria</a> or <a href="http://www2.withings.com/us/en/products/smart-body-analyzer/">Withings smart scale</a> to make measurement easier, but putting a number in an app isn’t that hard, so I’ve not done it yet.</p>

<h2 id="exercise">Exercise</h2>

<p>This is the big one, really. To lose more weight and get my blood sugar down, I need more exercise. I cycle 7 minutes to the station a few times a week, which is better than nothing, but more is necessary.</p>

<p>I keep trying to start the Couch to 5k running scheme, but all the times I’ve done it my schedule has got pre-empted and I’ve never made it out of week 1. I’ve started again though, and this time will do my utmost to make it stick.</p>

<p>I’m using the <a href="http://www.nhs.uk/change4life/pages/couch-to-5k.aspx">NHS Choices couch to 5k app</a>, which could be better for music playback, but it’s good at the training prompts, is free, and has no ads.</p>

<p>I’ve started using <a href="https://www.strava.com/athletes/floppy">Strava</a> to log these runs, and will log my station cycling as well, to get a complete picture of my exercise and what I need to add. It’s great that <a href="https://blog.fitbit.com/fitbit-x-strava/">Strava integrates with Fitbit</a> to include the exercise in that system automatically. If I need to double-enter any data, this won’t stick.</p>

<p>The social aspects of Strava are already feeling great. Each time I do a run, my cousin gives me kudos for it (despite my runs being pathetic in comparison to his). It feels like a support network, which is what I need.</p>

<h2 id="diet">Diet</h2>

<p>The last aspect is improving my diet. I’d like to track all my calorie intake so I can keep it on track without excessive denial (which will cause failure), but calorie tracking apps are all terrible. How the hell do I know what the calories are in the home-made shepherds pie we had the other night? How do I know how much is one serving of skimmed milk, without measuring <em>everything</em> out with scales and a jug?</p>

<p>There doesn’t seem to be a light-touch calorie counting mechanism that I’ve found yet. This would help with regular diet, but also with tracking the fasting days intake.</p>

<p>Can someone please make something using AI and image recognition to give me a calorie count of a meal if I take a photo of it? That would be fab, thanks.</p>

<h2 id="genetics">Genetics</h2>

<p>I’ve ben wondering about getting a <a href="http://23andme.co.uk/">23andme</a> kit for years. This news has taken out the last obstacle for me, that of “do I really want to know” for the risk factors.</p>

<p>I now know I have a risk factor for one thing. Knowing more seems only sensible now, if I have to manage that knowledge anyway. I’ll get a kit on order soon after the next payday, I think.</p>

<h2 id="dashboarding">Dashboarding</h2>

<p>My plan is to integrate this data into a dashboard that I’ll display in the kitchen at home all the time. Making information visible helps me to manage it, so having a lifestyle dashboard seems sensible.</p>

<p>I’ve not found anything yet that does it yet in a way I like, so I suspect I’ll break out the Fitbit API and starting pulling data into a <a href="https://github.com/Shopify/dashing">dashing</a> board or something.</p>

<h2 id="meditation">Meditation</h2>

<p>I’m also trying to get a hold on stress and tension using meditation. Again, I’ve started these things before but never made them stick. I’m hoping that I can get properly going this time, with a combination of <a href="https://www.headspace.com/headspace-meditation-app">Headspace</a> for regular meditation and <a href="http://buddhify.com/">Buddhify</a> for more casual hits.</p>

<h2 id="better-tools">Better tools</h2>

<p>I’m also thinking now about better tools; I mentioned the scales already. I have a <a href="https://www.fitbit.com/uk/one">Fitbit One</a>, which is fine (and better now I’ve got a watch strap for it), but would I find this easier with something more recent? Would it help to get an Apple Watch, for instance? I’m quite interested in measuring my heart rate on a regular basis, for stress management if nothing else.</p>

<p>I want to find a nice open ecosystem for this stuff, but it doesn’t seem to exist. Hopefully I can forge my own using the APIs and my own code.</p>

<h2 id="schedule">Schedule</h2>

<p>One thing that will cause failure (and always has in the past) is fitting this into my life. Having kids, something always comes along that disrupts something. Even sticking to regular fast days is proving tricky. For that though, I’ve just got to sort it out; I can’t stop this time.</p>

<h2 id="suggestions">Suggestions</h2>

<p>I need help here from anyone who’s been down this path before. There’s so much out there, but recommendations are always helpful. I ideally want an open, interoperating ecosystem of tools and devices to help me manage this lifestyle transition. It has to work easily and integrate with my already busy life in the simplest way possible. Bad UX will cause failure as well.</p>

<p>If you have anything to suggest, add in the comments below. I’m all ears.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OSX Security Theatre]]></title>
    <link href="https://floppy.org.uk/blog/2015/07/02/osx-security-theatre/"/>
    <updated>2015-07-02T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/07/02/osx-security-theatre</id>
    <content type="html"><![CDATA[<p class="alert">I’ve now written a followup post to this one. See <a href="/blog/2016/11/10/osx-security-theatre-part-2">part 2</a> for information on my ISP, Tor, and VPN setup. For password security and encryption, read on.</p>

<p>I’ve always been vaguely dissatisfied with my personal security setup. I’ve been happy it’s pretty secure and safe, but the software hasn’t been great. However, that’s changed recently with a few new releases, so I thought it might be worth sharing my setup with the world. I’m on OSX, so this is specific to that platform, but most things are open source and cross-platform, so there might be something to learn anyway. Also, some of you might tell me how I can improve it even further.</p>

<h2 id="passwords">Passwords</h2>

<p>Basic security hygiene means having strong unique passwords on every different site, but obviously that’s very difficult. Enter the password manager app, which can generate secure unique passwords and store them in a single place, behind a strong master password.</p>

<p>Obviously make sure the master password is strong; however, it still can be memorable and easy to type. Use <a href="http://correcthorsebatterystaple.net/">Correct Horse Battery Staple</a> to generate a good one. I’d recommend going over the top on this; make it at least 6 words long.</p>

<h3 id="keepass-database">KeePass database</h3>

<p>I’ve used the <a href="http://keepass.info/">KeePass</a> format for many many years, because the format is an open standard, there are many cross-platform apps, and it can be verified as secure by looking at the design. Also, as it’s a single file that stores all passwords, there’s no cloud storage, and I know that my passwords are not being shared with anyone else. I just don’t trust things like LastPass or 1Password, because giving away your passwords is inherently defeating the point. So, KeePass avoids that by giving me complete control over access to the file.</p>

<p>But, because cloud synchronisation (and backup) is useful, I store the file in <a href="https://db.tt/8ZsPh7g">Dropbox</a>. It’s encrypted securely on my machine before uploading, so I don’t really care whether Dropbox is secure or not (as far as that file’s concerned anyway). We do the same with a shared password file for work stored in Google Drive.</p>

<h3 id="keepass-clients">KeePass clients</h3>

<p>For a long time I was using <a href="https://www.keepassx.org/">KeePassX</a>, which worked, but didn’t have some of the nice features like browser plugins to auto-fill password forms, so there was lots of copying and pasting, and I tended to let the browser store the passwords as well (again defeating the point of a secure store, especially in Chrome).</p>

<p>However, last week I found <a href="https://mstarke.github.io/MacPass/">MacPass</a>. This is a native OSX client, which works nicely and is under active development. Even better, there is a <a href="https://github.com/mstarke/MacPass/pull/247">proposed patch that adds KeePassHTTP support</a>, and someone’s <a href="https://github.com/mstarke/MacPass/pull/247#issuecomment-113848747">prebuilt the app with that built in</a>; that’s the version I’m using.</p>

<p>KeePassHTTP is a little server in your KeePass app that lets other apps access the database locally, and that means <em>browser integration</em> finally.</p>

<p class="alert"><strong>UPDATE</strong>: KeePassHTTP is now supported directly in MacPass using a plugin, so no patch required. Download the standard install of <a href="https://mstarke.github.io/MacPass/">MacPass</a>, then follow the “Using precompiled version” instructions for <a href="https://github.com/MacPass/MacPassHTTP">MacPassHTTP</a>. Works a treat.</p>

<h3 id="browser-integration">Browser integration</h3>

<p>Browser plugins were the thing that made me jealous of LastPass and 1Password users; yeah, they were potentially giving their passwords away, but it was <em>so easy</em>. Now I have MacPass+KeePassHTTP, that’s changed.</p>

<p>I’m using Firefox (because Chrome <a href="http://www.independent.co.uk/life-style/gadgets-and-tech/news/google-was-downloading-audio-listeners-onto-computers-without-consent-say-chromium-users-10335111.html">just gets more evil over time</a> and has been purged from my machine), and I’m using a plugin called <a href="https://addons.mozilla.org/en-US/firefox/addon/passifox/">PassIFox</a>. That’s really simple to link up to MacPass, and then you can just right-click in forms and tell it to fill in password fields.</p>

<p>I’ve since turned off all the built-in browser password storage and syncing, and am much more pleased with the system than I’ve ever been. I’m not sure if it can generate passwords from within Firefox yet, I’ve not tried it, but I don’t mind generating in MacPass; it’s not exactly hard.</p>

<h3 id="ios-app">iOS app</h3>

<p>What about on my phone? Well, that’s why the database is stored in Dropbox. I use an app called <a href="https://itunes.apple.com/us/app/ikeepass/id299697688?mt=8">iKeePass</a> which can read the file directly from Dropbox and open it. Then it’s a simple click to copy passwords into the iOS browser app. It’s not massively trivial, but it’s not too hard for the rare times when I need to use it.</p>

<p class="alert"><strong>UPDATE</strong>: I’ve changed to using <a href="https://itunes.apple.com/us/app/keepass-touch/id966759076?mt=8">Keepass Touch</a> instead, which streamlines the process a bit. It still syncs from dropbox, but allows you to unlock the database with Touch ID, which makes everything quicker. It also supports editing the database and creating passwords on iOS, which is great.</p>

<h2 id="encryption">Encryption</h2>

<p>I’ve also used PGP since around 1998, and I’m really please to see that it’s basically the only encryption system that’s not known or suspected to be compromised by our security agencies. If it’s still good enough for Edward Snowden, it’s good enough for me.</p>

<h3 id="gpg-suite">GPG Suite</h3>

<p>On OSX, if you want to use PGP, you install <a href="https://gpgtools.org/">GPG Suite</a>. It’s a nice set of tools and integrations which make using PGP reasonably simple (though it’s still not a trivial process to get set up).</p>

<p>Again, pick a good long and memorable passphrase for your PGP key. You’ll be typing this one a lot, so make sure it’s easy to get right. Also make sure it’s different from the KeePass one above! You’ve still only got two to remember :)</p>

<p>Once you’ve generated a key pair (one private, one public) using GPG Suite then you will want to back up the private key somewhere nice and secure. I currently have mine in a <a href="http://truecrypt.sourceforge.net/">Truecrypt</a> volume, which is again backed up in my Dropbox account, though Truecrypt seems to be dead, and not GCHQ-proof any more, so that will change soon.</p>

<p class="alert">UPDATE: I’ve binned TrueCrypt as it was <a href="https://threatpost.com/of-truecrypt-and-warrant-canaries/106355/">seemingly compromised</a>. Instead I just keep my exported keys inside KeePass instead.</p>

<h3 id="mail-integration">Mail integration</h3>

<p>For a long while I was using Apple’s built-in Mail app as GPGTools integrated nicely with it. However, recently, I’ve found that <a href="http://airmailapp.com/">Airmail 2</a> has a <a href="http://support.airmailapp.com/post/95764147348/gpg-pgp-plugin">PGP plugin</a>, and it works almost perfectly. That means I have a decent mail client <em>with encryption support</em> finally.</p>

<h3 id="keybase">Keybase</h3>

<p>Of course, if you want to encrypt email, you need other people’s keys. You can share in a number of ways through GPGTools, but one of the easiest is to use <a href="http://keybase.io/Floppy">Keybase</a>. It’s invite-only (shout on Twitter if you want one, plenty of people have spares, including me), and it’s basically a way of linking your PGP key to your social network accounts, and letting people get hold of your key easily.</p>

<p>The one big thing I’d change about Keybase is that they should just get rid of the ability to generate and store a private key on their site. I know they’re trying to make it easy, but it’s a massive security antipattern and even people who I know have decent technical knowledge have used it; it’s just too temptingly simple.</p>

<p>Instead, generate your key with GPGTools locally, and upload just the public key to Keybase. That has the advantage that you can pop the right email addresses on it as well.</p>

<h3 id="ios-mail-encryption">iOS mail encryption</h3>

<p>Forget it :)</p>

<p>Seriously, this isn’t a thing. If you’re dealing with encrypted mail, or want to make sure yours is signed, don’t bother trying to do it on a phone.</p>

<h2 id="miscellanea">Miscellanea</h2>

<p>I’ve enabled full-disk encryption (<a href="https://support.apple.com/en-us/HT204837">FileVault</a>) on my Mac. There’s just no reason not to.</p>

<p>Obviously all remote logins and file transfers are done via SSH as well. My SSH key has a similar master password to the ones above on it to unlock it, and all remote servers I use are set up to only accept login with the right keyfile.</p>

<p>Every website I use that supports it has two-factor authentication turned on. If it supports the Authenticator app then I use that for the second factor, otherwise I fall back to SMS verification, though I consider that insufficient for decent security <a href="/blog/2015/04/16/anatomy-of-a-hijack/">after my phone was hijacked</a> a few months ago. So, I’m looking at you Twitter; authenticator app support please.</p>

<h2 id="what-next">What next?</h2>

<p>I’m interested in these <a href="https://www.yubico.com/applications/fido/">FIDO U2F keys</a>; it would be good to have the OSX encryption linked to a hardware token like that, so my machine can only be used with it plugged in. Also that can be used with some two-factor auth systems. This needs to be looked into.</p>

<p>However for something physical that can be lost, I’d want to be sure there was a way of having at least two keys that can unlock things, and obviously it would be hard to use with anything that needs unlocking on iOS.</p>

<p>I also need to work on my network security and privacy. I want to get a VPN routed via my home connection for use while out and about, and some way of easily swapping onto the <a href="http://torproject.org">Tor</a> network that’s got decent usability for when I want to be anonymous (or look like I’m in a different country). I’ll follow up with a further post if I get any of that sorted.</p>

<p class="alert">UPDATE: I’ve now written <a href="/blog/2016/11/10/osx-security-theatre-part-2">part 2</a>, with information on my ISP, Tor, and VPN setup.</p>

<h2 id="summary">Summary</h2>

<p>Security is complex, but the software tools are finally getting good now that it’s not hard.</p>

<p>Everything I use that’s involved in dealing with secure information above is open source, which means I can be more confident that there aren’t hidden backdoors (though of course <a href="http://siliconangle.com/blog/2013/09/06/bullrun-the-nsa-backdoor-anti-encryption-bug-program-that-breaks-most-encryption-on-the-internet/">you can never be 100% sure</a>). There are equivalent apps for every platform, so I hope this sort of setup is something that anyone could use and be reasonably safe.</p>

<p>I’ve mentioned the security services above, but I want to finish by saying that <em>I’m not trying to avoid the law</em>. I’m not doing anything illegal, but we’re now in a world where strong security hygiene is a necessary skill online. Not just because your emails are routinely tracked by our own (and therefore many other) security services, but because the weaknesses they’ve introduced into online security make it easier for <em>everyone</em> to access your communications. By irresponsibly weakening our security standards and introducing backdoors into common security-related code, you have to assume that everything is visible to everyone.</p>

<p>That means compartmentalising your security with unique passwords, and using strong non-compromised encryption wherever possible.</p>

<p>Remember, it’s not paranoia if they’re really watching you.</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Trials of Forming a Party]]></title>
    <link href="https://floppy.org.uk/blog/2015/06/13/the-trials-of-forming-a-party/"/>
    <updated>2015-06-13T00:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/06/13/the-trials-of-forming-a-party</id>
    <content type="html"><![CDATA[<p>Fair warning; this is probably going to be another very long post. It’s all about the long and complex story of our party registration for Something New. I’ve not really told this story before; when I finally could, it was too close to the election to relate, but now there is time.</p>

<p>TL;DR: Something New formed in September 2014, the Electoral Commission objected, and we only got finally registered on 6th March, 8 weeks before the election, only 3 weeks before nominations opened, and after a lot of stress. Want to know why? Read on…</p>

<h2 id="do-we-need-a-party">Do we need a party?</h2>

<p>In late June 2014, I <a href="/blog/2014/06/27/standing-for-parliament-in-2015/">announced</a> that I’d be standing for election in the 2015 general election, using the <a href="https://openpolitics.org.uk/manifesto">OpenPolitics Manifesto</a> as my platform. It was an experiment in seeing how accessible democratic participation was, and in taking an Open Source approach to politics.</p>

<p>I initially announced as an Independent, but I was never really happy with that. We’d had a few discussions within the manifesto project about forming a party, about what we could be called, and so on, but nothing serious had surfaced. However, I firmly believed (and still do) that in our current system, you <em>have</em> to have a party to build a serious movement. If I stood as an Independent, there wouldn’t be anything to build on afterwards.</p>

<p>As for joining other parties, that’s an option, and something that people should do more, but it wasn’t what I wanted to do. The entire approach of the open source manifesto was important, and joining any existing party would have meant dropping that. This was a truly new way of doing things, and it deserved its own identity.</p>

<h2 id="something-new">Something New?</h2>

<p>Over the next few weeks, I had a lot of coffee with a lot of people, and eventually met up with a guy called Alex Hilton for a beer one evening, after being put in touch by a colleague. Alex was a long-time political animal, but was disillusioned with the current state of affairs. I went along, expecting an interesting chat and an hour of political advice, perhaps.</p>

<p>As it turned out, we got on pretty well, and agreed on a lot of things, including the need for new choices in our electoral system.</p>

<p>Halfway through the evening, Alex said that he thought British politics needed a new fresh brand, without the baggage of the past. And he said he had it. He said it was something new.</p>

<p>I waited for him to say what it was.</p>

<p class="pull-right"><img src="https://farm9.staticflickr.com/8617/15926354835_84dc7411a8_q.jpg" alt="Something New" /></p>

<p>“No, that’s it. Something New”</p>

<p>I went through the initial stages that many people do when they hear the name. “That’s daft, you can’t… wait, that’s not bad… no, that’s awesome”. It worked on so many levels, and before too long it was clear that it was a brand that reflected what we were actually working for.</p>

<p>We decided to form the party soon after that, based around a core set of values, and using the manifesto for the details.</p>

<h2 id="registering-the-party">Registering the Party</h2>

<p>So, we started the paperwork. A political party is a bit like a company, in that you need at least three named positions, but two of them can be held by the same person. However, I roped in Paul, my brother in law, and we got started. Alex was Treasurer, I was Party Leader, and Paul was Nominating Officer. All three of those are required by the commission. No anarchist collectives here.</p>

<p>After doing a simple constitution and financial scheme (basically how we would handle the money), we paid the £150 registration and sent in the forms. Easy!</p>

<p>As it turned out, Something New had been registered before, by Alex. He’d never done much with it though, and had let the registration lapse by not filling in the returns a few months earlier. This <em>may</em> have worked against us later, though we’ll never really know.</p>

<h2 id="first-refusal">First Refusal</h2>

<p class="pull-right"><img src="/images/posts/2015-06-13-the-trials-of-forming-a-party/stop.gif" alt="Stop" /></p>

<p>On the 27th October, we got a really annoying email from the Electoral Commission.</p>

<blockquote>
  <p>I am writing to let you know that the Commission has considered your application and is unable to register your proposed party name.</p>
</blockquote>

<p>Er, this was registered before. What gives?</p>

<blockquote>
  <p>Under the Political Parties, Elections and Referendums Act 2000 (PPERA), when considering an application to register a political party, we must ensure that the proposed name is not the same as, or would not be likely to result in electors confusing it with another registered party.
Upon consideration of your application, we have reached the view that the proposed name is confusingly similar to an existing party description registered by the Democratic Republican Party ‘For a new beginning’, such that a voter would be likely to be confused between the parties if the proposed party name were approved for registration.</p>
</blockquote>

<p>Wait, what? “For a new beginning”? Really?</p>

<h2 id="naming-conflicts">Naming Conflicts</h2>

<p>It turns out that under PPERA, the commission does have to check new registrations against others to avoid confusion. This comes from instances where someone registered the “Literal Democrats”, and the more recent example of “An Independence from Europe” in the 2014 EU elections. It seemed the Commission were getting a lot more careful.</p>

<p>Still, ours seemed pretty different. “Something New” vs “For a new beginning”. And the second one was a description, not a name! (It wasn’t until a lot later that I realised that only name <em>or</em> description is shown on the ballot, so the DRP could stand with just “For a new beginning” on the ballot paper.)</p>

<p>There was also the fact that the last time Something New had been registered, the DRP had already been registered and had the same description. The same process a year previously had gone exactly the opposite way. Something had obviously changed.</p>

<h2 id="appeal">Appeal</h2>

<p>OK, well, let’s just talk to them. Let’s work out how to appeal the decision. Turns out this was really hard.</p>

<p>We had a look at the <a href="https://www.electoralcommission.org.uk/complaints">EC complaints page</a>, which said:</p>

<blockquote>
  <p>Complaints about decisions made as part of our statutory enforcement work, or other statutory regulatory decisions taken by the Commission (for example registration of party names, descriptions and emblems) are dealt with under our regulatory policies and enforcement policy and/or case management procedures. Depending on the nature of the matter case there may be further rights of challenge by way of statutory appeals or judicial review.</p>
</blockquote>

<p>Talking to the Electoral Commission, we were told:</p>

<blockquote>
  <p>You can complain about a decision on your application to register the party if you believe we have not adhered to proper processes in making the decision on your application. Your concerns will be independently investigated under the Commission’s complaints procedure.
The information about how to lodge a complaint is contained in <a href="https://www.electoralcommission.org.uk/__data/assets/pdf_file/0003/107697/sp-application-rp.pdf">our guidance</a>.
As the guidance states, the complaints procedure will look at the process that led to the decision and not the decision itself. Appeals against the outcome of the decision will not be considered. You may have rights of challenge by way of judicial review to pursue this.</p>
</blockquote>

<p>So we can appeal the procedure but not the decision? We can’t just <em>talk</em> to someone? Judicial review involves taking them to <em>court</em>, that’s ludicrous! There must be a better way!</p>

<p>But no. No luck in all our attempts to discuss with them.</p>

<p>Because the only thing we could do was appeal the <em>procedure</em>, we started trying to find out what the procedure was via FOI. I could tell already, this problem was going to be a massive waste of time and energy, but the name was too good to let go.</p>

<p>At this point, we were also trying to get in touch with the <a href="http://democraticrepublicanparty.co.uk/">Democratic Republican Party</a> to see if they themselves objected to the name, and if they’d help us out with the EC. No luck yet though.</p>

<h2 id="pre-action-letter">Pre-action letter</h2>

<p class="pull-right"><img src="/images/posts/2015-06-13-the-trials-of-forming-a-party/loblaw.gif" alt="Bob Loblaw" /></p>

<p>Nothing was helping, so in early November we took the first step towards judicial review. We knew that we couldn’t actually take them to court, but the first step was to write a pre-action letter outlining our case and intention. If that didn’t work, then we’d have to drop it.</p>

<p>We opened the letter with a request for a simpler process, and that we didn’t want to do it this way, but it was the only way open to us. We were trying to keep them onside as much as we could, and not annoy them. After all, they held the power.</p>

<p>The letter outlined that eleven different parties use the word “New”, the only shared word causing the objection; many more share other words. The only other shared part was the suffix ‘-ing’, used by 107 parties. Also, we pointed out that we were being stopped due to a conflict with another micro-party, and confusion was very unlikely.</p>

<p>The whole thing felt pretty stupid to write. A four page letter about basics of the English language. Still, we had to, so we did.</p>

<h2 id="talking-to-the-drp">Talking to the DRP</h2>

<p>About a week after this, in mid November, the Democratic Republican Party got in touch in response to our emails. While I was in a pub being filmed with the <a href="http://whigs.uk">Whigs</a> and <a href="http://wearepopulace.uk/">Populace</a> for a Daily Politics report, Alex was having a Skype conversation in the corner with Peter Kellow, party leader of the DRP.</p>

<p>Turns out Peter had a pretty low opinion of the EC, but agreed with us on a lot of things politically, so was willing to help. Unfortunately he wanted to wait and see, and make something of it if the EC didn’t make the decision we wanted. He was looking for a fight. We, however, were looking to move on.</p>

<p>Anyway, after a couple more conversations, he agreed to remove the description from their party registration, and tell the EC he didn’t agree with the exclusion. Looked like we were sorted!</p>

<h2 id="legal-response">Legal response</h2>

<p class="pull-right"><img src="/images/posts/2015-06-13-the-trials-of-forming-a-party/headdesk.gif" alt="Headdesk" /></p>

<p>Another week after, we got a response from the Commission’s lawyer. It was very long and detailed, but consisted basically of a very long “we get to decide and we disagree with you”, finishing with something along the lines of “you could have just <em>talked</em> to us instead of threatening court”.</p>

<p>AAARGH.</p>

<p>As we wrote back:</p>

<blockquote>
  <p>I would like to contest that I did raise my concerns in detail with your colleague, and I was told that judicial review was my only recourse as I have no reason to believe you have made an error of procedure. I was not made aware of any informal process for raising this with you.</p>
</blockquote>

<p>What a mess.</p>

<p>However, by now DRP had agreed to remove the strapline, so we asked the Electoral Commission to look at it again based on that new situation.</p>

<h2 id="some-foi-fun">Some FOI fun</h2>

<p>We’d started looking into the law, and into <a href="http://www.legislation.gov.uk/ukpga/2000/41/section/28">PPERA</a> itself. The act says, in section 28.4.a.ii:</p>

<blockquote>
  <p>Where a party sends an application to the Commission … , the Commission shall grant the application unless in their opinion the party proposes a registered name which would be likely to result in electors confusing that party with a party which is already registered in respect of the relevant part of the United Kingdom.</p>
</blockquote>

<p>What does “be likely” mean in the eyes of the law? It seems completely undefined. So, let’s find out what the EC’s internal guidance on this is. They must have a policy that defines what’s “likely”.</p>

<p>Using WhatDoTheyKnow, I wrote a Freedom of Information request, asking for the guidance, and whether it had changed recently. I <a href="https://www.whatdotheyknow.com/request/internal_guidance_on_party_name">eventually got a response</a>; the internal guidance is <a href="https://www.whatdotheyknow.com/request/239045/response/589468/attach/html/3/FOI%20138%2014%20attachment.docx.html">here</a>, and really is just as vague:</p>

<blockquote>
  <p>31.4 It is necessary for the purposes of section 28(4)(a)(ii) that the elector’s confusion with another party is ‘likely’ and as such it will not be sufficient if confusion is a mere possibility.</p>
</blockquote>

<p>Nothing in there more specific at all, and no change. So the written guidance was the same as in 2013 when the party name was accepted, and yet this time it was refused.</p>

<p>How can you appeal against the procedure when the procedure is basically “whatever we reckon”? Utterly useless, but a dead end it seemed. All down to human judgement.</p>

<p>Incidentally, at this point, we’re almost into campaign season proper, and we can’t open a bank account, can’t fundraise, etc. This is getting annoying. We’re getting worried, and start thinking about new names just in case.</p>

<h2 id="christmas-present">Christmas Present</h2>

<p class="pull-right"><img src="/images/posts/2015-06-13-the-trials-of-forming-a-party/eyebrows.gif" alt="Eyebrows" /></p>

<p>On Christmas Eve, <em>another month later</em>, I got an email from the EC saying that until the DRP remove the description, our application cannot proceed.</p>

<p>I thought they’d done that. Turns out they’d told the EC they wanted to, but not done all the paperwork</p>

<p>After the Christmas break, I wrote a very nice email to Peter asking him to follow through and basically set us free. This is getting really tight now, and we’re worrying a lot.</p>

<h2 id="text-comparison">Text Comparison</h2>

<p>Peter agreed to sort that out, helpfully, and also during our conversation shared a list he obtained under FOI about other rejections that had happened over the previous few months; they were having their own issues with the EC at the time, amid concerns that the Commission might make them change their name.</p>

<p>Anyway, this unleashed the data nerd in me; I had a list of all the rejections, and the text which they were rejected for. Now I could find out what the commission considered “likely” to confuse.</p>

<p class="pull-right"><img src="https://38.media.tumblr.com/7ac20e0da793f63d30c0a55bb4a1ccb7/tumblr_np5v20glNN1rdszvgo1_400.gif" alt="Hackerman" /></p>

<p>I put all the names in a CSV file and wrote a bit of code to run them through some text similarity algorithms. I started with the Levenshtein distance, though that’s not great for different-length phrases, so moved to the Ruby <a href="https://github.com/valcker/similar_text-ruby">similar_text</a> gem.</p>

<p>The results are in a <a href="https://github.com/Floppy/electoral_commission_conflicts/blob/master/rejections.csv">CSV on GitHub</a>, and it was pretty clear straight away that we were an outlier. Every other rejection had a similarity score of over 50%, most over 60%. We were at 31% similar.</p>

<p>It didn’t really matter at this point, but it was interesting to see, and have some hard evidence to back up our view that the rejection was unjustified. I ran the same algorithm against the <a href="https://raw.githubusercontent.com/Floppy/electoral_commission_conflicts/master/registered.csv">full list of parties</a> for a laugh, and needless to say there were plenty that were more similar than ours that weren’t having trouble.</p>

<p>Should the Electoral Commission have an internal similarity test based on a particular algorithm? I think perhaps they should, otherwise the whole system seems very arbitrary. At least as a mathematical check, if not for the final decision.</p>

<h2 id="breakthrough">Breakthrough</h2>

<p>In mid-January, we get confirmation from the Electoral Commission that the DRP description has been removed, and that we’re back in the queue for review.</p>

<p>I start to feel hopeful. I don’t believe that the EC are being awkward on purpose, and now that the blocker is cleared, we should be good to go. I just have to hope that’s true.</p>

<p>Others are less sure, and the conversations about whether we need to get a new name rumble on.</p>

<h2 id="the-long-wait">The Long Wait</h2>

<p>My confidence starts to fade over the next 6 weeks as we wait to hear; I keep calling, keep offering help and information, but we’re just in the queue for review and need to wait.</p>

<p>I can’t find out how long this will take, at all. In late February, only a month away from nomination time, I’m getting really nervous. This might all be too late. I might have to be an Independent after all.</p>

<p>The Electoral Commission are SLOW.</p>

<p>Then, at the end of February, I finally get an email saying that we should be reviewed on Thursday. The committee apparently meet once a week(!) to review cases, and we should be up this week. As far as I can tell we’ve literally just been sitting in a pile for a month and a half.</p>

<p>I call back on the Monday after. Nope. Probably this week instead.</p>

<h2 id="success">Success</h2>

<p class="pull-right"><img src="/images/posts/2015-06-13-the-trials-of-forming-a-party/yes.gif" alt="Yes!" /></p>

<p>It seems like I called a thousand times, though I think it was only another week’s delay before, finally, we got it!</p>

<blockquote>
  <p>I am pleased to inform you that we have approved your application to register Something New and the party is now on the Great Britain register of political parties.</p>
</blockquote>

<p>They objected to a couple of our descriptions, and had left them off, but who cares! We’re in!</p>

<p>We were registered as <a href="http://search.electoralcommission.org.uk/English/Registrations/PP2486">PP2486</a>, just two and a bit weeks before nominations for the election opened. After 6 months of the process, that was <em>far</em> too close for comfort.</p>

<h2 id="what-a-pain">What a pain</h2>

<p>This was probably the biggest hurdle we had to get over in the whole election process. It wasted a lot of time, energy, and caused a lot of stress that was (in my view) completely unnecessary. Everything else went smoothly.</p>

<p>I don’t believe, unlike some, that the Commission were being obstructive intentionally. I do think though that their combination of vague internal guidance, unhelpful appeal procedures, inconsistent account management, and an extremely slow bureaucracy <em>can</em> make it look that way, sometimes.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[What did we spend?]]></title>
    <link href="https://floppy.org.uk/blog/2015/06/12/what-did-we-spend/"/>
    <updated>2015-06-12T08:30:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/06/12/what-did-we-spend</id>
    <content type="html"><![CDATA[<p>So, the spending returns are done, and <em>officially</em>, we raised £1620 in Horsham, but only spent £1195, leaving me with a profit of over £400! That is obvious bullshit, as you can see from our <a href="https://somethingnewuk.github.io/finances">open accounts</a>, so this post is all about what we <em>actually</em> spent over the last year. Also, I’ll look at what was useful, and what wasn’t.</p>

<h2 id="horsham-spending">Horsham Spending</h2>

<table class="table table-striped">
  <thead>
    <tr>
      <th>When</th>
      <th>Total</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pre-campaign</td>
      <td>£244.06</td>
    </tr>
    <tr>
      <td>Long campaign</td>
      <td>£603.72</td>
    </tr>
    <tr>
      <td>Short campaign</td>
      <td>£1189.43</td>
    </tr>
    <tr>
      <td>Everything</td>
      <td>£2037.21</td>
    </tr>
  </tbody>
</table>

<p>The main difference here from the return is that the return doesn’t include:</p>

<ul>
  <li>Spending before 19th December 2014 (listed above as pre-campaign)</li>
  <li>Election deposit of £500 (during the long campaign)</li>
  <li>Crowdfunder fees of £97.20 (during the short campaign)</li>
</ul>

<p>So, we actually spend nearly double what was officially counted on the Horsham campaign itself.</p>

<h2 id="south-west-surrey-spending">South West Surrey Spending</h2>

<table class="table table-striped">
  <thead>
    <tr>
      <th>When</th>
      <th>Total</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Long campaign</td>
      <td>£500</td>
    </tr>
    <tr>
      <td>Short campaign</td>
      <td>£1087.73</td>
    </tr>
    <tr>
      <td>Total</td>
      <td>£1587.73</td>
    </tr>
  </tbody>
</table>

<p>We didn’t spend as much in the early days in South West Surrey, so it was all in the short campaign. Again though, the official return didn’t include deposit or crowdfunding fees. Here, we raised £750 against that spend from crowdfunding.</p>

<h2 id="national-spending">National spending</h2>

<table class="table table-striped">
  <thead>
    <tr>
      <th>When</th>
      <th>Total</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sep 2014 to May 2015</td>
      <td>£548.96 (roughly)</td>
    </tr>
  </tbody>
</table>

<p>As well as spending on the local campaigns, there was some money spent on national-level stuff. This includes the party registration fee (£150), domain names, etc, but mostly is went on our NationBuilder subscription, which runs the website and manages our voter database. For a while we had multiple subdomains running for each local area, which bumped up the price a bit unnecessarily.</p>

<p>This stuff gets reported separately, sometime in the next month or so.</p>

<h2 id="everything">Everything</h2>

<p>So, all in all, for the party bootstrapping and 2015 election campaign across two constituencies:</p>

<table class="table table-striped">
  <thead>
    <tr>
      <th>What</th>
      <th>Total</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Raised</td>
      <td>£2370.00</td>
    </tr>
    <tr>
      <td>Spent</td>
      <td>£4173.90</td>
    </tr>
  </tbody>
</table>

<p>So, we’re a bit out of pocket, but a lot less than we would have been without our generous donors!</p>

<p>Just for fun; we got 695 votes, so we spent just over £6 per vote. Probably not massively efficient, but we were learning :)</p>

<h2 id="where-did-it-go">Where did it go?</h2>

<p>So most of the money went on the essentials; leaflets, deposits, fundraising fees. However, in Horsham there is about £400 that went elsewhere, which I probably could have used better.</p>

<h3 id="facebook-ads">Facebook ads</h3>

<p>Over the year, I dropped £73.93 on Facebook advertising, and I’m pretty sure that was basically like throwing it into a black hole. The first campaign, 20 quid or so to get some likes on the page when we started out, seemed fairly successful, but after that, it really wasn’t. I would advertise the meetups we were holding (more on that in a minute), and near the end was trying to push 30-second pitch videos etc.</p>

<p>Without exception, the engagement rate on those ads was really really low. Each time I decided it wasn’t worth it, then a month later would get suckered in again, thinking that perhaps this time the content would work better.</p>

<p>Social media advertising is a black art, and Facebook make you spend a lot of money to reach anyone these days. Organic reach is dead unless you’re very lucky, and unless you have a massive budget, Facebook’s not going to help.</p>

<p>I’ll probably fall for it again though; please remind me of this when I do.</p>

<h3 id="face-to-face-meetups">Face to face meetups</h3>

<p>Through the campaign, I really wanted to be <em>visible</em> to voters, to be somewhere accessible to them. I ran meetups around the constituency, every week for about 6 months.</p>

<p>Admission time; that was a <em>real</em> slog, because a lot of the time they were empty. Sometimes I’d have one or two people come along, and the conversations we had were great and useful, but in general this wasn’t an effective use of time or money.</p>

<p>I started by booking meeting rooms in local halls, etc, but then changed to mostly meeting in pubs once it became clear that was just throwing money down the drain. All in all, £282.70 went on hiring meeting rooms, which was in all honesty probably just wasted.</p>

<p>I think there were two main problems here. First, telling people about them was hard; I could have done better with newspaper ads, local newsletters, etc, but that would have cost more, and I don’t know it would have worked anyway. Facebook advertising, even when specifically targeted, didn’t help either.</p>

<p>That comes down to the second reason, which is that perhaps people don’t really want to engage in that way. Who wants to go to the pub and talk to a politician? Really? I wish they did; I wish we had the town-hall meetings that we used to have, and that still seem to happen in the US, but it’s not where we are now. It will take time to rebuild that type of engagement.</p>

<p>Still, I’m glad I tried. I’m glad I can look back and say that I <em>was</em> available to people (even if they didn’t know it or want it).</p>

<h2 id="thankyou">Thankyou</h2>

<p>So, there you go - that’s where your (and a decent chunk of my) money went! The crowdfunding money paid for the important bits; the leaflets, the deposits, etc. The rest was out of my own pocket, so I don’t feel too guilty that some of it wasn’t very effective.</p>

<p>There are definitely lessons to learn for next time; the main one is to get some social media expertise involved, because although I basically live online, using it effectively to get a message out is a completely different thing!</p>

<p>Thanks to everyone who supported us with their donations; it wouldn’t have been possible without you. We love you all :)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Election Returns]]></title>
    <link href="https://floppy.org.uk/blog/2015/06/03/election-returns/"/>
    <updated>2015-06-03T08:30:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/06/03/election-returns</id>
    <content type="html"><![CDATA[<p>I’ve put it off for too long, and so for the last couple of evenings I’ve been completing the election spending and donation returns for the Horsham campaign. I was warned that this was an awkward process, but it’s been basically fine (though we’ve not had to do any of the complex stuff).</p>

<p>The Electoral Commission, as always, provide a whole load of documentation and help with filling in the data, which you can <a href="https://www.electoralcommission.org.uk/i-am-a/candidate-or-agent/uk-parliamentary-general-election-great-britain">download from their website</a> (see the resources in Part 3).</p>

<p>The return has to be in within 35 days of the election, so we have around another 10 days to finish it.</p>

<h2 id="short-and-long">Short and long</h2>

<p>There are two returns to fill in; one for the long campaign (19th December to 29th March) and one for the short campaign (30th March to 7th May). You need to account for spending and donations during these periods separately.</p>

<h2 id="worksheets">Worksheets</h2>

<p>The commission provide two versions of the returns; PDF and Excel. I decided to fill it all out using Excel (well, LibreOffice), which would have been much quicker if they’d actually included formulae in the template sheets. As it was, I spent half the time putting in all the SUMs, cross-references, and so on that meant that it all added up correctly.</p>

<p>And of course, I had to do it twice, once for long and once for short, because there are two different sheets, even though they are basically identical except for the title.</p>

<p>Suggestions for the EC:</p>

<ul>
  <li>Make one sheet and have an option for short and long campaign. Less for you to maintain.</li>
  <li>Include the formulae so that using the sheet is harder to get wrong.</li>
  <li>Make a nice simple webapp for the form instead. Probably not high up the list, but it’s a really easy problem; you could have one in a couple of weeks of developer work.</li>
</ul>

<h2 id="the-data">The data</h2>

<p>We’ve been <a href="https://somethingnewuk.github.io/finances/">keeping our books openly</a> all along, so we had everything we needed all ready to go. We have even been assigning things to the return spending categories as we go so as to be ready to fill this in.</p>

<p>It’s hosted on github in CSV files, and uses Jekyll to render the HTML views of each file. I started working on a Jekyll view to generate the actual return content as well, though there was so little to fill in that in the end I did it manually.  I’d like to come back to that though, and make it so that our open data finances can automatically create the return numbers, not least so we can publish them ourselves.</p>

<p>I won’t publish the filled-in return we send in, as it includes donor addresses, which I would consider personal information. We already publish names, but I don’t think I should publish addresses for large donors, not without more thought anyway. Also, the commission will report the summary anyway, and you can see <a href="https://somethingnewuk.github.io/finances/horsham/donations.html">all the detail for yourself already</a>.</p>

<h2 id="points-of-interest">Points of Interest</h2>

<p>There are a few little points I learned along the way that are worth nothing down:</p>

<h3 id="verifying-donors">Verifying donors</h3>

<p>You have to verify that all donors <em>over</em> £50 (not £50 and over) are registered voters. This, for me, involved calling up their local council’s election office and just asking. Given the name and address, they will just tell you if that’s right.</p>

<p>I suppose that’s fine, though it seemed a bit… easy. I didn’t have to prove anything about who I was, do anything in writing, or whatever. I guess it would be hard to abuse though; someone would notice if you were attempting to find someone by calling up 50 times with different addresses. Still, seems… leaky.</p>

<h3 id="overseas-donors">Overseas donors</h3>

<p>Our largest donor (thanks Phil!) is overseas, though is still a registered voter here, so can legally donate. The form has a space for the donor’s address, which I suppose means they can double check the donors with the councils. However, his is abroad, so wouldn’t identify the council. In the end, I just wrote in the space after his address “Overseas voter, registered with Brighton council”. Hopefully that will work.</p>

<h3 id="small-donations">Small donations</h3>

<p>The way the form is laid out, you only have to declare details of large donations over £50, but there is a box for “total donations” as well. If you’re filling it in with a formula, then you need somewhere to add in the small donation total, which isn’t there otherwise. I just added another row in the declared donations tab marked <code class="language-plaintext highlighter-rouge">&lt;=£50</code>, with the total. Obviously all those are shown in our open finances as well, split out properly.</p>

<p>Sidenote: I want to see UKIP do that, and prove just how much of their finance comes from small donors, as they love to say, and <a href="http://www.bbc.co.uk/news/election-2015-32340976">how much comes from the owner of the Daily Express</a>.</p>

<h3 id="crowdfunding">Crowdfunding</h3>

<p>As we were crowdfunding during both the long and short campaigns, I’ve split the funds raised across the two returns based on when people pledged, rather than when the money was taken (which would all be in the short campaign). That’s based on the fact that you report spending based on when an invoiced spend was <em>used</em>, instead of just the date on the invoice. Seems like the right thing to do.</p>

<h3 id="fees">Fees</h3>

<p>I had to call up the commission to ask about crowdfunding fees. Around £95 of the £1620 we raised ended up going to <a href="http://crowdfunder.co.uk">Crowdfunder.co.uk</a> (quite rightly), but it was unclear how this should be counted, and where.</p>

<p>The Electoral Commission are still getting to grips with crowdfunding, even though a <em>huge</em> number of candidates did it this time. They had to go off and check the answer to the question, and still didn’t actually completely answer it.</p>

<p>The answer (so far) is that the donations should be listed <em>as donated</em>, not with the fee removed. So, if you gave 100 quid to Crowdfunder for the campaign, it’s declared as £100, not £95. If you paid with PayPal, you also paid their small fee on top, though it was itemised separately. As it wasn’t reported <em>to you</em> as being part of your donation, I’m not considering it part of the donation.</p>

<p>The fee will be listed somewhere, though they’ve yet to get back to me on that. I’m guessing (and will update here when I know) that it will go in as an administration expense under section F.</p>

<p>UPDATE: The commission got back to me, and said that the fees shouldn’t be included in the spending return at all. That means it’s in the donation figure but not the spending, and so it looks like I’ve stashed some of the money away! Ah well.</p>

<p>I’m surprised the Commission are still so unprepared for this; wasn’t it obvious that it would be a thing this time? Why isn’t it explicitly mentioned in the guidance?</p>

<h3 id="deposit">Deposit</h3>

<p>One last note. You don’t declare the deposit as spending, and in fact you don’t have to declare money raised to cover the deposit as a campaign donation. We didn’t split it out that way, so I’m just declaring the lot. That’s why it might look like we raised more than we spent; I assure you that wasn’t the case!</p>

<h2 id="party-spending">Party spending</h2>

<p>We also have to declare any spending done by the party as a whole. This will include things like <a href="http://nationbuilder.com">NationBuilder</a> and  <a href="http://soundcloud.com">Soundcloud</a> fees, which were non-constituency specific. We have 3 months to fill in that return though, so I’ll come back to that another time.</p>

<h2 id="summary">Summary</h2>

<p>All in all, pretty simple, though a little time-consuming. We didn’t have to deal with unpaid invoices, rejected donations, or anything complex, so I guess that made it easier.</p>

<p>So, this has been about the form-filling really (always a good topic for a blog post). I’ll follow up soon with a post that actually goes into the spending data, and talk about what we spent, why, and whether it was worth it!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[What's Next For Something New?]]></title>
    <link href="https://floppy.org.uk/blog/2015/05/12/whats-next-for-something-new/"/>
    <updated>2015-05-12T08:30:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/05/12/whats-next-for-something-new</id>
    <content type="html"><![CDATA[<div>
  Context for new readers: I formed a party called <a href="http://www.somethingnew.org.uk">Something New</a> and stood in the 2015
  general election in Horsham. We're a party based on open source principles, and
  do all our policymaking openly online through the <a href="https://openpolitics.org.uk/manifesto">OpenPolitics Manifesto</a>.
</div>

<p>The general election is over, and I have to say I really enjoyed the experience. It
was hard work, but it felt <em>so good</em> to be putting across something positive rather
than just complaining about the various options. I don’t think I’ve ever seen a
campaign indulge in such negativity and fearmongering as this one did, so it was
a real pleasure to be able to rise above it!</p>

<h2 id="the-results">The results</h2>

<p>Our <a href="http://www.somethingnew.org.uk/may_2015_election_results">full results</a>
are on the Something New site, but in the General Election, we
got 375 votes in Horsham, and 320 in South West Surrey. That’s 0.66% and 0.56%
respectively.</p>

<p>That may not sound like a lot, but when compared to other small parties and independents,
we did great! We’ve tallied a <a href="https://docs.google.com/spreadsheets/d/19x3dHw_CZA3DGejNzzkJtFSlChdT8HcqpRvmoN_fiTQ/edit?usp=sharing">list of other candidates</a> standing on future-democracy type platforms,
and both our results come right up near the top. Doing that in our first election, in very
(small c and big C) conservative areas, is something to be proud of.</p>

<p>I think that shows that we have something here worth building on, and so I’d like
to answer the one question that everyone asks:</p>

<h2 id="whats-next">What’s next?</h2>

<p>We’re starting to think about the 2016 round of elections, and we have a by-election in
Stepney Green in a few weeks, but as leader, I’m thinking mostly about how the party evolves.</p>

<p>The party exists because in the current political climate, names are important, and
a strong name and brand can help cement your values in the minds of voters. I was originally
going to stand as an independent, but always wanted it to be a party, because
that means we can build something up into a movement. I love independent candidates; I wish
every MP was an independent, but I don’t think our system is ready to accept that yet. I think
we have to work within the system to change it. Ideally I’d like parties not to exist either,
which I think makes Something New the only party that wants to deprecate itself.</p>

<p>The same goes for small parties. The job of changing the country is huge, much too big for any of us alone.
We have to work together.</p>

<p>After the industrial revolution, the labour movement came together to find its political
voice, which has dominated British politics ever since. The network revolution will be the
same. Our generation, which is more interconnected than humanity has ever been, will find
its political movement. People are <a href="https://medium.com/@azeem/the-empty-quadrant-8c4b1e9d0ac1">calling for it</a> <a href="https://medium.com/@timleroyis/i-refuse-to-be-crushed-by-the-tory-victory-even-this-dark-dark-blue-election-result-has-silver-e32995ea0a1a">all over the place</a>. The politics of the network is rising.</p>

<h2 id="lets-work-together">Let’s work together</h2>

<p>Now I’m talking directly to the <a href="http://pirateparty.org.uk">Pirate Party</a>, the <a href="http://i-dems.co.uk">Internet Democrats</a>,
<a href="http://rebootingdemocracy.uk">Rebooting Democracy</a>, <a href="http://truedemocracy.uk">Digital Democracy</a>, the <a href="http://whigs.uk">Whig Party</a>, <a href="http://mymp2015.org.uk">MyMP</a>, <a href="http://www.wearepopulace.uk/">Populace Party</a>,
<a href="http://voxpopgov.com/">Vox Pop</a>, <a href="http://www.democraticreform.co.uk/">Democratic Reform</a>, a whole load of Independents, and everyone else interested in this movement.</p>

<p>My message for you is simple.</p>

<p><strong>Let’s join together to build a single movement, a broad 21st century progressive political party with the network
at its heart, that can push for a better future. Let’s merge our communities to build something big enough to change the UK for the better.</strong></p>

<p>Let me be clear; I don’t care what that party is called (as long as it resonates with voters). I don’t care who is in charge. This is <em>not</em> a power grab. It’s an honest attempt to build something that can have an impact.</p>

<p>We can talk about names, logos, technology, all that, later. But if we agree on our <a href="http://www.somethingnew.org.uk/our_values">values</a> and what we want to build, let’s join together and get to work.</p>

<h2 id="what-about-something-new">What about Something New?</h2>

<p>That said, I do have something to humbly add.</p>

<p><strong>I believe that Something New’s results show that the message we have put across is worth pursuing.</strong>.</p>

<p>We tested our message and brand in a very non-progressive area, with almost no money, minimal help, and
no major media exposure, and it <em>worked</em>. We got better results than almost all of our allied candidates and friends. I don’t say this to boast, or try to score points. I say this because <em>I think it might help</em>.</p>

<p>We set out on this path to test if the message would resonate. I think we passed that test.</p>

<p>So, as a starting point, I would like to invite all those parties to merge with us.
Again, not so that I can be in charge, or through arrogance, but because <em>someone</em> has to
convene this, and I think we are in a good position to do so. As I said, we can talk about
names, logos, identity, whatever. I’m open-minded on it, and we know we can’t be
“Something New” forever.</p>

<p>Single-issue parties won’t change anything. Small fragmented parties won’t change anything. The old 20th century parties won’t change anything. But together, we just might be able to <a href="http://www.somethingnew.org.uk/volunteer">build a new choice</a> for a society that is demanding change.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Count]]></title>
    <link href="https://floppy.org.uk/blog/2015/05/08/the-count/"/>
    <updated>2015-05-08T07:51:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/05/08/the-count</id>
    <content type="html"><![CDATA[<h2 id="0005">00:05</h2>

<p>So, this is it. I’m writing this from the coffee shop at the Horsham count, at about midnight. This is my first count, so I’ll try to explain what it’s all about. Obviously I can’t disclose information during the count, so this will be published in the morning once it’s all over.</p>

<p>We’re in a sports hall at Christ’s Hospital School (which fortunately has public gym membership, therefore a decent coffee shop). The room is laid out with a bunch of tables, laid out in a sort of snake. The counters are all one one side, and the candidates and agents are all on the other. They count, and we can watch everything that’s happening from the other side of the tables.</p>

<p>It’s a bit odd just staring at what people are doing like they’re zoo animals, but I guess it goes with the territory. We’re all looking at the ballots anyway. I can’t help feeling that I should help out though!</p>

<p>Whenever a polling station box arrives, it’s dumped out and bundled up into batches of 25 papers. There’s no counting per candidate at this stage, but the agents are watching and keeping their own tallies, trying to get a bit of intelligence before the candidate counting starts in a couple of hours. At this point they’re just checking that there aren’t more votes than voters in each area. I guess also it’ll tell us turnout reasonably early on, though I don’t think we will be told.</p>

<p>As it stands, I’ve seen a few votes for me go by, which is nice. I’ve got no idea how that translates into a percentage, though the agents who are keeping tallies might do. There are lots of agents with clipboards keeping counts, but I’m just wandering around like the aforementioned zoo visitor, gawping.</p>

<p>For now though, it’s quiet and efficient.</p>

<h2 id="0200">02:00</h2>

<p>Still going on the preliminary count, but it’s drawing to a close. The counters have checked and bundled the parliamentary votes, and also the local council votes to make sure there aren’t any missed ballots that went into the wrong box. Those will be counted in detail tomorrow.</p>

<p>So we should be seeing the proper count of the parliamentary ballots soon, I think. From looking at the ballots I’ve seen, I’ve certainly got some votes, and I’m probably not last, but I’ve still got no idea whether I’ll hit my own preferred outcome…</p>

<p>There are a lot of party activists hanging around; there are herds of kippers roaming the hall looking grumpy, which makes me happy at least.</p>

<p>Interestingly, the way the ballots are counted, I’m pretty sure that we <em>could</em> get results by ward, and probably by polling station even, which would be really interesting. However, those internal counts aren’t reported publicly. How can we make that happen, I wonder?</p>

<h2 id="0330">03:30</h2>

<p>Yeah, the verification step is going on a long time. The 04:30 estimate for the declaration is out of the window. We’ve had three elections (parish, district and parliamentary) in some places, and verifying all of those to make sure there aren’t any votes in the wrong place has taken a long time. We’re just wrapping up the last few outlying wards, and then the next stage will start.</p>

<p>The baskets are out on some of the counting tables for the candidates. The ballots will be separated into the baskets first, then counted. Spoilt or doubtful ballots are separated for inspection as well at this point.</p>

<p>I’m desperate to take a picture of my (empty) ballot basket, but phones are banned in here, and I’m going to play by the rules. Not long though, and we’ll start to get a decent picture of the result and how I’m faring against the other small party candidates.</p>

<p>I’m heading up to the coffee shop to watch the rest of the country’s results coming in every now and again. In general it looks pretty bad for progressives, which is disappointing. There are plenty of morose Lib Dems wandering around here, certainly…</p>

<h2 id="0345">03:45</h2>

<p>And we’re off! The ballots are being sorted into candidates. Interestingly, each table has a slightly different method, so in some places you can tell what’s going on, and some you can’t. I can tell straight away though that my target outcome of 5th place is probably not going to happen; the Greens have a good deal stronger showing, by the look of it. Still hoping for 6th though. This is probably going to take a couple of hours yet…</p>

<h2 id="0400">04:00</h2>

<p>The coffee shop has closed. FML.</p>

<h2 id="0530">05:30</h2>

<p>The basketing and bundling is pretty much done now. We’ve just been round each table and reviewed the doubtful ballots. Lots of “none of the aboves”; we should definitely be counting those properly. Currently they get bunged in with the unmarked and unclear ones, which is a pity. Ideally there should be a box on the form.</p>

<p>Also quite a few voting multiple times, normally with the same number of votes as for the district elections which people did at the same time.</p>

<p>Corrections tend to get accepted and counted for the corrected candidate, BUT in a couple of cases the voter signed their name next to the correction, like you might do with a cheque. Unfortunately that makes it invalid, as the voter can be identified. Even more unfortunately, one of those was mine :(</p>

<p>We’re very nearly there now. The bundles will be tallied up, and we should have an announcement soon, I think. I won’t beat the Green Party, as was my ideal goal, so it’ll be a scrap for the bottom three places. Too soon to tell where we end up. I’m certainly in triple figures rather than quadruple.</p>

<h2 id="0700">07:00</h2>

<p>And we’re declared, finally. The candidates and agents get a preview of the final numbers before the announcement, and that’s it. They didn’t get us on stage and do speeches for anyone except the winner (a resounding Conservative victory, obviously). I guess Horsham is too obvious a result to bother with TV coverage.</p>

<p>Anyway, our result. I got 375 votes (0.7%), putting me in sixth place out of eight. Paul also got 320 (0.6%) in South West Surrey. While those might not seem like big numbers, they are probably enough to work with in the next phase of Something New, and to use in whatever comes next. I’ll talk a bit more about what that plan is once I’ve had a sleep.</p>

<p>For now though: thanks to everyone who supported us, with your encouragement, votes, fundraising, and belief. This is only the beginning; a better democracy is coming, and nothing can stop it. It’s just a matter of when.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Anatomy of a Hijack]]></title>
    <link href="https://floppy.org.uk/blog/2015/04/16/anatomy-of-a-hijack/"/>
    <updated>2015-04-16T17:00:00+00:00</updated>
    <id>https://floppy.org.uk/blog/2015/04/16/anatomy-of-a-hijack</id>
    <content type="html"><![CDATA[<p>This post is a brief diversion from election updates to recount the story of 
an attempted account hijacking and theft that happened to me on Monday, and what can be 
learned from it. This might be quite long, but you never know; might be 
interesting to someone.</p>

<h2 id="unusual-activity">Unusual activity</h2>

<p>So, the first thing I know is when I get a call from my bank, about possible unusual
account activity. These happen every now and again - you call back, confirm some 
transactions, and everything’s fine.</p>

<p>So, I call up, and get put on hold for the fraud dept. Unfortunately I have a meeting
and have to hang up. An hour and a half later, I call back, and after some strangeness
with my account access PIN not seeming to work, we find one unidentified transaction. So,
my card is cancelled, and another will be in the post. This happens sometimes, I guess. End of story.</p>

<h2 id="wheres-my-sim">Where’s my SIM?</h2>

<p>An hour after that, I get a text on my phone, thanking me for transferring to my
new SIM card, and that the old one will be disconnected. I immediately call my mobile
operator to see what’s going on, but my phone dies a couple of minutes later, kicked
off the network.</p>

<p>Uh oh.</p>

<p>At this point I’m getting worried about Twitter hijacking, or somesuch. After all, we all
have two-factor authentication set up to send SMS codes to our phones these days, right?</p>

<p>So, I borrow a phone from a colleague, and call the operator. Once I get through, they confirm that
my number has been transferred to another SIM on my request. I tell them to kill it <em>immediately</em>, 
because that was NOT ME.</p>

<p>Once that’s done, and we’ve added some new security questions, we look at how this happened. 
The log shows that the previous caller didn’t know the account PIN, but confirmed 
ownership of the number by verifying the last direct debit amount taken from my bank account.</p>

<p>Oh, shit. They’re in the bank account.</p>

<h2 id="calling-the-bank-back">Calling the bank back</h2>

<p>Check the online banking - I can’t get in.</p>

<p>So I call the bank and get immediately routed through to the fraud department and
go through an unusually large amount of security. They inform me that yes, something 
strange is happening, and did I by any chance recently make a large transfer out 
of my retirement savings?</p>

<p>Er, NO.</p>

<p>That’s OK, they say, we didn’t think so, and we didn’t let it through. The accounts 
are safe, and everything has been locked down. The attacker isn’t getting any further.</p>

<p>We set a special password that I make up on the spot so that nobody except me can access
the account until everything is reset with new information.</p>

<p>Finally, after a fraught hour on the phone, I can relax a bit. We’re safe it seems.</p>

<h2 id="so-what-happened">So, what happened?</h2>

<p>It seems the fraudster and I were interleaving calls all day.</p>

<p>After my first call, coincidentally, they called the bank and pretended to be me. The
number was withheld, but they identified and passed security by giving my name, address, 
email, mobile number, card number and expiry.</p>

<p>As you might notice, all of that would be available to a store with whom I ordered something online.
And that got them all the way into my account, or at least far enough for the next part. So much
for security; we know that the security questions that protect the account online <em>weren’t asked</em>.</p>

<p>Anyway, once they where in there, I guess they looked up the most recent direct debits; found my mobile operator, 
and got the last amount I paid them. They then reset the security PIN (hence my failure to get in on the 
second call) and called my mobile operator to swap the SIM cards for my number.</p>

<p>They got control of my mobile number pretty much straight away; how do criminals get this level of 
service? Normally moving a number is a total pain in the arse.</p>

<p>Anyway, once they had that, they called the bank back (I was probably already on the phone to the operator at this
point), and with the extra identification of calling on my number, initiated the transfer. The 
bank were suspicious though;
they called my number back, and got them again, but weren’t happy about the response. They locked everything 
down, and their ride was over.</p>

<h2 id="what-went-right">What went right?</h2>

<p>So, the bank spotted the probe, and the hijack in time, so I didn’t lose anything. That’s good.</p>

<p>My mobile operator sent me a text with a reference number before they disconnected the phone. That’s also good.</p>

<p>But…</p>

<h2 id="what-went-wrong">What went wrong?</h2>

<p>This all comes down to companies being willing to work around their own security on the phone.
If you act the idiot and claim you don’t have the security information, it doesn’t seem to take a lot
to get in at least to the point where you can start to escalate.</p>

<p>The message I left the bank with after our various calls, was that this was <em>all their fault</em>. By
allowing callers to work around security, they are exposing my accounts to hijacking. None of this
was on me, as far as I can tell. Saying “don’t use online shopping” these days is not an option, because
even if you shop offline, all that data is linked to, say, your Tesco clubcard. It’s basically available
to anyone.</p>

<p>We all need to get more security conscious, and that doesn’t just mean having passwords; it also means 
companies asking for them, and denying callers access even if it pisses off a customer or two.</p>

<h2 id="what-did-we-learn">What did we learn?</h2>

<h3 id="the-weakest-security-link-is-always-the-humans">The weakest security link is always the humans</h3>

<p>My digital security is good; unique strong passwords, held in a secure password store 
behind another strong password. It would be hard to compromise. However, this attacker
had only a bunch of data that you could hoover up from any online store order. Nothing
specifically about me - they didn’t know who I was, where I went to school, my mothers’ maiden
name, nothing. But it was enough to convince the bank that they were me. Social engineering is,
as always, the best way to break security.</p>

<p>I guess that the banks and mobile companies have to deal with a lot of people who forget their
security details all the time, so they have to subvert their own security in this way. 
That’s… terrifying.</p>

<h3 id="dont-use-real-information-in-security-questions">Don’t use real information in security questions</h3>

<p>My security questions weren’t asked, so weren’t compromised, but now I’ve changed them, I’ve 
decided not to use real information in these ever again. It’s far too easy to find my mother’s 
maiden name, or where I was born. From now on, this stuff gets made up.</p>

<h3 id="attacks-are-more-complex-than-you-think">Attacks are more complex than you think</h3>

<p>This was a five-stage attack. First the obtaining of the merchant data with my details in.
Second, the probe, to see if the card was still active. Then the simple human exploit to get 
into the bank account in a read-only capacity, followed by the phone hijack and the 
final transfer attack.</p>

<p>While the later stages can seem more secure, a simple breach earlier on can leak more information
that allows the attacker to escalate their privileges.</p>

<p>Also, attackers <em>know</em> which attacks to use for particular services. It seems likely that the first
call to the bank was intentionally looking for more information to escalate privileges with. Once
they found my mobile operator, they knew that they would take the direct debit details as proof, so off they went.</p>

<h3 id="sms-two-factor-security-is-not-good-enough">SMS two-factor security is not good enough</h3>

<p>I’m going to switch to authenticator app security codes, I think, where I can. My mobile is too 
easy to hijack to be a sufficiently good part of the security chain. I was immediately worried that
the mobile hijack was a two-factor auth crack attempt. In the meantime, my authenticator app codes
remained secure on the physical device, not linked to the number.</p>

<h3 id="be-careful-with-incoming-calls-etc">Be careful with incoming calls etc</h3>

<p>A few times I had calls from the bank during this process, and I always asked them to prove to me who
they were first. They didn’t know what to do. In the end I just had to make up my own security, and ask
names of people who had dealt with my case previously, as that’s the only information I could think 
they could confirm. I think I might get a password put on my account for them to tell me in future. Not hard!</p>

<p>They also send special fraud centre phone numbers in emails and texts. I never called them, but instead 
always called the general customer service number and asked to be put through to the right area. How do
I know where the email is really from? Publish a PGP key on your site so I can verify the email, and I’ll 
call the thing you want me to. Otherwise, no way.</p>

<p>The companies themselves are teaching people security antipatterns by doing this sort of shit.</p>

<h2 id="will-it-get-fixed">Will it get fixed?</h2>

<p>I suspect that as long as this sort of fraud costs the banks less than the cost of better security, then they
won’t fix it. Therefore, I really don’t expect anything to change, unfortunately.</p>

<p>At least all I got was an afternoon of stress, and a few days without a mobile phone and debit card. Nothing was lost in the end, and a few valuable lessons were learned. That’s a win, I guess?</p>
]]></content>
  </entry>
  
</feed>
