HNHacker News
TopNewBestAskShowJobs

mphillips

48 karma · joined February 6, 2014

Software developer
submissionscomments
mphillips··on South Australia teams with Tesla, Neoen to build world's biggest Li-ion battery
SA certainly wasn't the first to build a desalination plant, and it appears to have been working as designed for quite a while now ("Water production to date (to end of June 2017) = approximately 138 billion litres" [1]).

I think the infamy was unearned, and mainly due to people not understanding that it was never intended to run all the time, but is insurance for a time of crisis (which we will certainly have again at some point).

So, not a good example.

[1] https://www.sawater.com.au/community-and-environment/our-wat...

mphillips··on The Basis story: an accidental sync service in Clojure for iOS devices
In the short term, no. I’d like to think that the (somewhat unplanned) overhead of developing Basis will be paid off in future as a commercial advantage for my apps — I guess we’ll see whether that pans out ;)

In the longer term, yes absolutely I’d like to make it open source. In the meantime, I’m happy to share some of the lessons I’ve learnt along the way.

mphillips··on The Basis story: an accidental sync service in Clojure for iOS devices
OT is not so much an algorithm as an approach: a way of thinking about sensibly merging parallel sequences of change operations against a data model of some kind.

It’s a really interesting field, going back a long way: the canonical paper that the Google Wave (RIP) people referenced is nearly 20 years old (http://dl.acm.org/citation.cfm?doid=215585.215706). This is another, more recent, good paper: http://hal.archives-ouvertes.fr/docs/00/13/97/04/PDF/OsterIC....

In fact, Basis does use an OT approach in the delta merge algorithm: it breaks the deltas down into a canonical series of “micro operations”, merges them piecewise, then generates a new delta.

Thanks for the kudos!

mphillips··on The Basis story: an accidental sync service in Clojure for iOS devices
I'd be really interested to hear more about your approach. Maybe you’d write it up?

I did consider simply storing and replaying actions, but realised I'd still want a way to merge them: consider a series of actions like: "add item", "update item", "add item", ...<lots more changes>..., "delete items 1 through 20". If there’s no merge, a lot of redundant actions will end up building up in the offline case.

There are a lot of ways to approach this (I’m reading Brent Simmon’s adventures (http://inessential.com/2014/05/24/vesper_sync_diary_follow-u...) with interest at the moment).