• Fast Flexible Paxos
    It’s official! Fast Flexible Paxos: Relaxing Quorum Intersection for Fast Paxos, my latest collaboration with Aleksey Charapko and Richard Mortier will appear in next year’s edition of the International Conference on Distributed Computing and Networking (ICDCN). If […]
  • Towards an intuitive high-performance consensus algorithm
    Distributed consensus is the problem of how to reach decisions in asynchronous and unreliable distributed systems. The two most widely known algorithms are: Paxos, the traditional yet poorly understood solution; and Raft, the newcomer which democratised the […]
  • My Reactive Summit 2018 talk is now online
    My talk titled “Liberating Distributed Consensus” from last year’s Reactive Summit is now available on youtube. Abstract: The ability to reach consensus between hosts, whether for addressing, primary election, locking, or coordination, is a fundamental necessity of […]
  • Joining Trinity Hall
    I am very excited to announce that I have accepted a 3-year position as the Gott Research Fellow in Computer Science at the beautiful college of Trinity Hall at Cambridge University.
  • Majority agreement is not necessary for consensus
    Did you know that majority agreement isn’t required by Paxos? In fact, most of the time, the sets of nodes required to participate in agreement (known as quorums) do not even need to intersect with each other. […]
  • OSCON & Code Mesh
    I’m pleased to announce that I’ll be speaking at OSCON and Code Mesh in London this winter. Having heard great things about both events and looking at the lineup, I am very much looking forward to it. Drop me […]
  • Paper notes on S-Paxos [SRDS’12]
    The following is a paper notes for “S-Paxos: Offloading the Leader for High Throughput State Machine Replication”. This paper was recommended to me as a example of high-throughput consensus, achieved by offloading responsibilities from the leader. The […]
  • Paper Notes on PBFT [OSDI’99]
    Practical Byzantine Fault Tolerance (PBFT) is the foundational paper in Byzantine consensus algorithm. Typically, distributed consensus algorithms assume nodes may fail (and possible recovery), but BFT extends this to tolerate nodes acting arbitrarily. Assumptions BPFT makes strong […]
  • VIDEO: Making the Impossible Possible @ J on the Beach
    The videos of my talk and interview at this year’s J on the beach are now live and embedded below.
  • Paxos Agreement – Computerphile
    The Democracy of computer collaboration, PAXOS is a method for ensuring networked computers reach agreement. Heidi Howard of the University of Cambridge Computer Laboratory explains.
  • Do you want a shed or a castle?
    I have seen the error of my (programming) ways. Let me explain… To me, programming in OCaml is like trying to build a house from just breeze blocks. It takes a long time to build even a […]
  • Speaking at QCon London 2016
    I am pleased to announce that I’ll be speaking at this year’s QCon London. I’ll be speaking in the “Modern CS in the real world” track, hosted by none other than Adrian Colyer, from the morning paper.  The abstract […]
  • Consensus & Organising Coffee – Computerphile
    Just like humans organising to meet for coffee, computers need ways of organising themselves. Heidi Howard, of the System Research Group at University of Cambridge explains the basics.
  • Paper Notes on “CORFU: A distributed shared log” [TOCS’13]
    Last Monday we looked at Tango, a system for replicating a data structure to provide linearizable semantics and fault-tolerance. Tango is built up on CORFU, a replicated log, built over storage nodes. This paper notes article covers […]
  • Paper Notes on “Tango: Distributed Data Structures over a Shared Log” [SOSP’13]
    The following is a paper notes article on “Tango: Distributed Data Structures over a Shared Log” by Balakrishnan et al. from SOSP 2013. The article focus on the main body of the paper and I will cover […]
  • BBC Radio 4: Any questions?
    I asked a question on today’s BBC radio 4 show “Any questions?”,, skip to 42:07 to hear me nervously ask “How can we protect the rights of citizens in an increasingly digital world?” and hear the […]
  • Azure Latency Pilot Study: Part 4 – Variation in results with time
    So far in this study, we have only considered the aggregated measurements and how they vary depending on the VMs used. In this post, we will considered how the RTT measurements may have changed over time. The […]
  • Azure Latency Pilot Study: Part 3 – Machine specific results
    In this post we will be looking at the results for the Azure latency Pilot study described last week. Yesterday, we started by looking at the aggregated results and found that the measured RTT was larger then […]
  • Azure Latency Pilot Study: Part 2 – Aggregated results
    This is post we will be looking at the results for the Azure latency Pilot study described last week. We will starting by looking at the aggregate results, disregarding the time a measurement was taken and which […]
  • Azure Latency Pilot Study: Part 1 – Experimental Setup
    This post, the first in a short series, discusses a simple overnight pilot study of measuring network characteristics on Microsoft Azure. This study was to be the first of many. Its purpose was to test the tools […]
  • Adding machines can decrease availability of a distributed system
    TL;DR: Run distributed systems using majority quorum on an odd number of machines. Paxos, Raft, Viewstamped Replication and many other consensus algorithms operate on majority quorums. A majority quorum is any subset of nodes containing at least a […]
  • Chronicle of Coracle: Parsing Protocol Specific Parameters
    This is the first post in the “Chronicle of Coracle” series to document daily life using OCaml for systems programming. Today, I’ll be adding protocol specific parameters to Coracle, this mostly involves working with the Yojson and […]
  • #C3S2015 Trip Report – Day 1
    Good Morning everyone! I am here in Estonia with Zafar, Steffen and Jon at the First Cyber Security Summer School. It’s 8am and we have a packed schedule ahead of us today. Good morning from a forest […]
  • #C3S2015 Trip Report – Day 0
    Hello from a lovely little spa hotel in a forest in Estonia. After an excellent dinner and many coffees, our first session started at 9pm (yes! they are working us hard already). We received a warm welcome […]
  • Paper Notes: Ethical Privacy Guidelines for Mobile Connectivity Measurements [Report Nov’13]
    Ethical Privacy Guidelines for Mobile Connectivity Measurements is the first item on the C3S reading list, below is my brief notes on this November 2013 report by the Oxford Internet Institute. The stated purpose of this report is […]
  • Paper Notes: The Network is Reliable [ACMQ July’14]
    The Network is Reliable is an excellent article which attempts to formalise the discussion on real world failures for distributed systems. There is currently great debate on whether the assumption that network partitions are rare is too strong or too weak, […]
  • EuroSysDW’15 Poster on Unanimous
    Here is the draft of my EuroSys doctoral workshop workshop poster. I would appreciate any feedback on the poster, I hope to sent it to the printers in 3/4 hours.  
  • Converting from Tikz to PNG
    Here’s how I did it: \documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone}   \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document}   \begin{tikzpicture} add figure source here \end{tikzpicture}   \end{document}\documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone} \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document} \begin{tikzpicture} add figure source here \end{tikzpicture} \end{document} Then compile using: latexmk smr.tex -shell-escape
  • Unanimous: System Research Group talklet
    I’m looking forward to sharing my thoughts on consensus for the edge network with the SRG today, abstract below Many projects in the SRG at the moment (HAT, UCN, contacts app, MirageOS for ARM, Jitsu, databox, signposts) […]
  • Conservative election in Byzantine Fault Tolerant Raft
    Tangaroa, is a Byzantine tolerant Raft implementation in Haskell, developed by Christopher Copeland and Hongxia Zhong for a Distributed Systems class at Stanford. The authors apply many of the approaches in PBFT to Raft, allowing for the Byzantine failure of […]
  • EuroSys 2015
    I am incredibility excited to announce that I’ll be attending this year’s EuroSys and its Doctoral Workshop. I’m hope to live blog the event over at syslog. Any recommendations of papers to look out for? Mail me if […]
  • Part 3: Running your own DNS Resolver with MirageOS
    This article is the third in the “Running your own DNS Resolver with MirageOS” series. In the first part, we used the ocaml-dns library to lookup the hostname corresponding with an IP address using its Dns_resolver_mirage module. In the second part, we wrote a […]
  • Poster for “Life on the Edge: New Abstractions for Edge Network Distributed Computing”
    Here is a draft copy of the A1 poster I’ll be presenting at the 2nd Annual Oxbridge Women in Computer Science Conference in Oxford. The poster abstract is in a previous post. Any feedback would be greatly appreciated. version 1 […]
  • Slides for “Life on the Edge: New Abstractions for Edge Network Distributed Computing”
    Below are my draft slides for next week’s talk at the 2nd Annual Oxbridge Women in Computer Science Conference in Oxford. The talk abstract is in a previous post. Any feedback would be greatly appreciated (note that the […]
  • VPN providers are hijacking DNS
    Are you thinking of using a VPN to bypass DNS hijacking by your ISP (as described in Redirecting DNS for Ads and Profit and Middleboxes considered harmful: DNS Edition)? Then think again. A new paper titled “A Glance […]
  • Raft Refloated in the morning paper
    I am incredibly excited to announce that Raft Refloated will be featured in The Morning Paper, by Adrian, as part of a series of 10 posts on distributed consensus. Last month, the morning paper also featured our work on the Databox. Will […]
  • Paper Notes: Redirecting DNS for Ads and Profit
    Redirecting DNS for Ads and Profit is one of the collection of papers from the ICSI team, with the results from the Netalyzr, network diagnosis tool. This paper focuses on the 66K session traces where DNS error traffic has been […]
  • Video: “Grad School” by UCSD/Lambda Style Productions
    I’ll just leave this here, my all time favourite youtube video
  • Part 2: Running your own DNS Resolver with MirageOS
    Last time, we wrote a simple “dig like” unikernel. Given a domain and the address of a nameserver, the unikernel resolved the domain by asking the nameserver and returned the return to the console. Today, we will look […]
  • 3 Upcoming talks
    I’ve just updated my Research pages with 3 upcoming talks. More details to follow, in particular the topic for the April talk at the Computer Lab, as I cannot reuse the topics from either of the other […]
  • Closed gTLDs
    Thinking of switching from .io to a proper gTLD like .dev ? think again
  • Middleboxes considered harmful: DNS Edition
    This article is brief overview of how middleboxes interact with DNS traffic. In particular I’m interested in finding out the answers to the following: Will middleboxes drop/modify DNS traffic and what is the purpose of this: stopping abuse, […]
  • DNS question: Avoiding circular dependencies without glue records?
    Can someone help me the understand the following: When the authoritative name server for a domain (e.g. lies within the domain over which it has authority (e.g., a query (e.g. for to the parent […]
  • Comcast blocking
    Today, people love to hate their ISPs, they have a public image problem. A great example of this when Comcast apparently blocking NASA’s website in 2012. In fact, Comcast was the only major US ISP to be using DNSSEC […]
  • Video: An overview of secure name resolution [29c3]
    Here is an excellent talk by Matthäus Wander, introducing DNSSEC, DNSCurve and few other DNS extensions.   A few points of interest: stub resolvers need new API’s to report DNSSEC validation failures, then browsers can provides users with […]
  • Talk & Poster @ 2nd Annual Oxbridge Women in Computer Science Conference
    I’ve been accepted for a talk and a poster at the 2nd Annual Oxbridge Women in Computer Science Conference on 16th March 2015. My submitted abstract is here.
  • We’re coming to letter box near you
    The January edition of the Operating System Review is now out, look out for “Raft Refloated: Do We Have Consensus?”. Also available without dead trees.
  • Part 1: Running your own DNS Resolver with MirageOS
    The following is the first part in a step-by-step guide to setting up your own DNS resolver using MirageOS. I will be running this on a low power, low cost ARM device called the Cubieboard 2. Up […]
  • Squashing git commits
    to squash the last n commits (e.g 37) into one git reset –soft HEAD~37 && git commit –edit -m”$(git log –format=%B –reverse HEAD..HEAD@{1})” git push -f source:, thanks david
  • Lab Culture – How to ask the right questions?
    Thanks to Justine, at the excellently named Lavender Martini Border Gateway Protocol for sharing a link to this blog post on Prospective Students and Lab Culture. Useful food for thought, not just for Part 2 students.
  • I have a bad UDP joke for you
  • MOOC for edge networking and IoT
    This course maybe of interest to readers, titled “Fog Networks and the Internet of Things”. This course teaches the fundamentals of Fog Networking, the network architecture that uses one or a collaborative multitude of end-user clients or […]
  • New abstraction for edge network systems
    [this post is also available as a pdf] The end-to-end principle of the internet is a fallacy. Modern distributed system rely on the cloud rather than deal with the complexity of the edge network. We propose to […]
  • Distributed Protocols and Heterogeneous Trust
    Distributed Protocols and Heterogeneous Trust – theory strong paper on adapting Byzantine-tolerant distributed protocols for hetrozenous trust relationships
    Things are heating up at the edge network, is startup for a decentralised chat client with a clean JSON API, though it doesn’t seem to have much of a story for dealing with middleboxes.
  • Raft Refloated: Do We Have Consensus?
    The January edition of SIGOPS Operating Systems Review is out now and thus is the aptly named “Raft Refloated: Do We Have Consensus?”. This is my first journal paper and I’m really existed to see what the community […]
  • Bring on the Databox
    Last week we release a open access preprint of our first paper on the Databox on arXiv, titled “Personal Data: Thinking Inside the Box“. Despite not publishing in a peer reviewed venue, the response has been greater than […]
  • Reading list for P2P Systems
    This Harvard course page has a nice reading list to get you started.
  • CFP: FOG Networking for 5G and IoT
    This seems like an interesting venue for work on edge network distributed systems. Nice to see that we are not the only ones who think that the edge is area worth researching.   CFP: Fog Networking for […]
  • 2nd Annual Oxbridge Women in Computer Science Conference
    I’ve just registered to attend the 2nd Annual Oxbridge Women in Computer Science Conference on 16th March 2015. I may presenting a poster or even giving talk. My submitted abstract is below: Life on the Edge (Network) The internet […]
  • Personal Data: Thinking Inside the Box
    Our first paper on the Databox, a personal, networked service that collates personal data and can be used to make those data available is now available (open access) on arXiv. Enjoying reading it and let me know […]
  • Lack of Love for DNSSEC
    It’s more than two years since I wrote my introduction to DNSSEC and the internet is let to open its loving arms to DNSSEC and DANE. Don’t just trust my work for it: Thanks to […]
  • Live Blogging PLMW
    Good morning from sunny Mumbai. I’m here for the 2015 ACM SIGPLAN Programming Languages Mentoring Workshop (PLMW) and will be bring PLMW straight to you with a live blog over at syslog.
  • Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud
    There has been lot of buzz about the latest alternative to cookies from Google, Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud. Its well worth a read.
  • Making front page (hacker)news
    My undergraduate dissertation has made it to the front page of Hackernews with 80 points,
  • The Countess, the Nun, the Rear Admiral and the Film Star
    Some of the women at the computer lab (myself included) will be doing 2 minute madness this Sunday at 12:30 and 2:30 at this event at the Centre for Computing History The Centre for Computing History is […]
  • How to get a PhD
    A 3 item reading list for new PhD students How to get a PhD – recommended to me by a friend, I am around a third of the way through this book has greatly exceeded my expectations. […]
  • Can You Engineer Privacy?
    “Can You Engineer Privacy?” featured in Aug 2014 CACM has one of the best start paragraphs I have seen. Following this strong start, the article articulately introduces some of the challenge and areas of active research in privacy engineering. The […]
  • Pyland @ PyCon UK
    Alex Bradbury presented Pyland, our new educational programming game for kids at this year’s PyCon UK. Ben Catterall,  Joshua Landau, Ashley Newson and I founded Pyland this summer at the computer lab under the excellent supervision of Alex […]
  • It’s Official
    As of yesterday, I am officially enrolled as a PhD student at the University of Cambridge, Computer Lab. The upcoming week is packed with inductions and socials but I can’t wait to get going on with my research.
  • Off to ICFP 2014
    I’m at the airport ready to set off to this years ICFP 2014 and it is set to be better than ever. Leo and I will be liveblogging over at syslog and I can’t to see you guys there.
  • Release of “ARC: Analysis of Raft Consensus”
     “ARC: Analysis of Raft Consensus” is now available online as a UCAM technical report. Abstract The Paxos algorithm, despite being synonymous with distributed consensus for a decade, is famously difficult to reason about and implement due to […]
  • Seeking Feedback on “ARC: Analysis of Raft Consensus”
    My undergraduate dissertation “ARC: Analysis of Raft Consensus” will be submitted as a UCAM tech report. A draft is available here and I would be very grateful of any feedback. Title: ARC: Analysis of Raft ConsensusAbstract:The Paxos algorithm, despite […]
  • Project Zygote (working title) @ CamJam
    Tomorrow we will be demonstrating an early prototype of Zygote (only the working title) at CamJam, the Cambridge based Raspberry Jam, organised by @recantha and @geeky_tim. Despite being only a few weeks into the project, we are keen to join the very […]
  • Dreaming of a new life on the edge network
    Motivation The internet has abandoned the end-to-end principles on which it was established. With IPv4 addresses depleted, devices are left behind NATs, with the transition to IPv6 yet to restore their public identity. Users have been left […]
  • ICFP & OCaml 2014
    I am fortunate enough to attend ICFP, CUFP and OCaml2014 again this year. Like last year, I’ve been accepted as a student volunteer so I’ll be running up and down with a microphone in front of hundreds […]
  • Graduation & Raspberry Pi Internship
    As of Wednesday, I officially hold a BA in Computer Science. Now that the days of lectures and supervisions are up, I am in week 2 of 10, of an internship working on an education game for the Raspberry […]
  • Dissertation Proposal: “Achieving Distributed Consensus with Raft”
    I’ve submitted my undergraduate dissertation proposal on “Achieving Distributed Consensus with Raft“
  • The problem with consensus
    A distributed system is collection of nodes, each which there own local memory, which are able to communicate via message passing, cooperate to perform a computation. CAP theorem [1,2] argues that its not possible to achieve consistency, availability and […]
  • Poster Feedback Wanted
    This is a draft of the A1 sized poster I will be presenting at LCDNets in a few weeks and I’d like some feedback, I’ll be printing tomorrow at 9am Version 2 (Latest Version) Version 1 (Original […]
  • OCaml Monthly Meeting – Live Blog
    Today’s OCaml Labs Monthly Meeting is all about practise talks for OCaml2013 so in that spirit, I’ll practising a bit of live-blogging too. 13:53 – Today’s SRG Meeting is over and its time for some work before […]
  • “Providing Security for Wireless Community Networks” Talk at Workshop on Participatory Networks and Privacy: New Research Issues, September 2013
    The following is my slide desk from a talk on PAWS, titled “Providing Security for Wireless Community Networks” at Workshop on Participatory Networks and Privacy:  New Research Issues
  • OCaml Development in Vim
    This is a quick run-through of how I set up my development environment in vim: Install pathogen.vim \documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone}   \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document}   \begin{tikzpicture} add figure source here \end{tikzpicture}   \end{document}\documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone} \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document} \begin{tikzpicture} add […]
  • What’s the difference between Debian Squeeze and wheezy ?
    Squeeze is the code name Debian gives to the current stable release, wheezy is the name given to the current unstable release
  • Where can I get Linux Distros quickly on the Cambridge Network ?
  • How do I download many pdf’s a webpage at once ?
    A combo of curl and regular expression, e.g. Ross Andersons “Security Engineering” is avalaible online under CC here but you must download each chapter as a seperate pdf, this is can the fixed using: \documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone}   \usepackage{url} […]
  • ICFP, CUFP & OCaml2013
    I’m busy planning my first trip across the Atlantic to attend ICFP, CUFP and OCaml 2013. Today, I’ve been given the duty of “live blogging” the event, over at the syslog, the Cambridge Systems Research Group blog. My other […]
  • Audio & Slides from “Lost in the Edge: Finding Your Way with DNSSEC Signposts”
    Anil’s talk at 3rd USENIX Workshop on Free and Open Communications on the Internet (FOCI’13) is now available at and the slides are here
  • Lowest Cost Denominator Networking for Universal Access
    I’m very pleased to announce that I’ll be presenting PAWS at this years ACM MobiCom Workshop on Lowest Cost Denominator Networking for Universal Access  (LCDNet 2013)
  • Real World OCaml beta3 release
    Beta3 of RWO is now available: and anil (one of the co-authors) comments on the release
  • “Lost in the Edge: Finding Your Way with DNSSEC Signposts” is now available online
    The Signposts paper is now available online:
  • OCaml Lecture Notes
    I just wanted to share these sildes from Yaron Minsky guest lecture at Princeton on “Abstractions and Types for Concurrent Programming”: [pdf]  to the COS 326 class and the notes from Cornell’s OCaml course called “Data Structures and Functional Programming“, […]
  • Happy 21st Birthday
    I am now officially 21 years old and also the owner of this cool, Wacom Bamboo Pen Graphics Tablet from Amazon  
  • Profiling OCaml – Getting Started Guide
    “Perf” is a common command line linux tool used for code profiling, (perf wiki). A alpha version of a OCaml native code compiler that output code, that can be analysis by perf is now avalaible in OPAM […]
  • Learning Async
    If your taking your first steps in Janestreet’s Async library, here’s some sources of help & support: My top 5 sources of Async Documentation Official Janestreet Docs for Async/Core: These are generated from the .mli’s in the Async […]
  • Legality of Wi-Fi Sharing
    I’ve been researching this issue, as it comes up in most discussions regarding PAWS. The best article on the topic by far is: D M Síthigh, “Law in the Last Mile: Sharing Internet Access Through WiFi”, (2009) […]
  • Talk: “Ubiquitous Access to Public Services Online with PAWS”
    We have been hard at work over the last few months, designing and securing the PAWS network. This is the outline of talk that I gave a few weeks back. The full powerpoint is available on Slideshare Intro […]
  • Signpost Planning
    Over the new few months, I’ll be working on the DNS artitecture of Signposts. Techincal Setup Setting up suitable machines for development Installing OCaml compiler, toolclain, package manager Get the appropirate libraries, plus the docs/source Set up […]
  • How do I reset pathnames to commands ?
    \documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone}   \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document}   \begin{tikzpicture} add figure source here \end{tikzpicture}   \end{document}\documentclass[preview,border=4mm,convert={density=600,outext=.png}]{standalone} \usepackage{url} \usepackage{tikz} \usepackage{color} \begin{document} \begin{tikzpicture} add figure source here \end{tikzpicture} \end{document}
  • Signpost Poster @ Computer Laboratory 75th Anniversary
    We’ve entered the Signpost poster into the Computer Laboratory 75th Anniversary Poster Competition