HNHacker News
TopNewBestAskShowJobs

jamesdsadler

38 karma · joined December 29, 2013

Elixir/React/GraphQL developer and co-founder of Alembic. (alembic.com.au)
submissionscomments
jamesdsadler··on Commits are shapshots, not diffs
Git does use diffs extensively its algorithms, just not in its representation of history. Git's "domain model" is blobs, trees, commits, branches and tags.

At a lower layer than that (the pack files) it does use binary diffs to store similar objects as deltas to save on disk space.

TL;DR diffs play an important part in git's machinery at different levels of abstraction. They just aren't part of how it represents its domain model.

jamesdsadler··on Linus Torvalds' good taste argument for linked lists, explained
Both of these implementations seem to be missing a call to `free`, or is that something that the caller should be taking care of?
jamesdsadler··on WeWork says will file to withdraw IPO
If I recall correctly, there was also no uninstaller (at least on Mac, 2 years ago).
jamesdsadler··on Cryptographic Right Answers
Can anyone recommend some good cryptography books/links for someone that would like get up to speed on best practices for building secure systems? Ideally the full gamut of beginner to advanced.

What are the classic/authoritative texts in this space?

jamesdsadler··on What’s wrong with Git? A conceptual design analysis
If you don't have a stage then you don't get to edit/stage/edit/stage/fix/commit, right? I use that workflow a lot. I generally like incrementally building and refining my next commit. The stage/index is one of Git's most innovative features IMHO.
jamesdsadler··on A Universe Made of Tiny, Random Chunks (2013)
If the Planck length is Lorentz-invariant but macro-scale objects are not then does that not imply there is a special universal reference frame against which to measure velocity?

If I have understood the article correctly one would be able to measure the length of a spaceship relative to the Planck length and deduce velocity, entirely locally (i.e. onboard the spaceship).

This is a fundamental departure from general relativity which says there is no special frame of reference.

jamesdsadler··on A Conflict-Free Replicated JSON Datatype
> There is no "extent" to which CRDTs are conflict free, CRDTs are by definition always 100% conflict free.

CRDTs are always conflict-free. I am not disagreeing with that. I was trying to draw attention to the fact that just because the CRDT always commutes does not mean that a user does not perceive there to have been a conflict - out of a multiple contradictory edits the commute operation will ensure only one succeeds. So yes, the CRDT itself is conflict free, but it wasn't my point.

They aren't magic. The deal with tie breakers when they have to. I've seen posts where suggestions of building a CRDT-based source control system are being bandied around with claims that there will be no conflicts - sure, there won't be. Will the code make sense or even compile - probably not.

A conflict to a CRDT is one thing and a conflict to a user is something else entirely.

jamesdsadler··on A Conflict-Free Replicated JSON Datatype
Yes, I think we are in agreement. The algorithm can use heuristics to produce a best-effort pleasing result that captures user intent but if two users want opposite things to happen it has to fall back to a tie breaker.

In an extreme example, if the CRDT state-space was 1-bit and user A wants to make it a 0 and user B wants to make it a 1 a choice must be made by the algorithm.

jamesdsadler··on A Conflict-Free Replicated JSON Datatype
To the extent that CRDTs are conflict-free it only means that two edits can commute (be applied in any order) and every party that has applied the same set of edits will produce the same result.

At the low-level that the CRDT is operating on there will be no conflicts.

But that does not mean that the user never perceives there to be conflicts. No matter what the consensus system used be it CRDTs or OT at some point the converge operation has to impose a total ordering to pick a "winner" in the case of conflicting user edits.

If editing a block of text and two users try to replace the same word with another word there are a number of possible outcomes

1) One of the edits "wins" 2) The word is replaced by the concatenation of each user's replacement. 3) Nobody wins and the edit is reverted.

In all cases at least one party perceives to themselves to have "lost". But it generally doesn't matter because humans doing the editing will make repairs to nonsensical edits in real time.

There has to be a tie-breaker when multiple users try to make different edits to the same region of text. At least that's my current understanding.

jamesdsadler··on Antarctic CO2 Hit 400 PPM for First Time in 4M Years
At some point it will become feasible to capture CO2 on a large scale and reduce CO2 concentration in the atmosphere.

So, not screwed yet.

jamesdsadler··on Scared of having a gap on your CV after that long trip? Fear no more
Probably not compared to the local salary, which you will not be paid more than I expect.
jamesdsadler··on Scared of having a gap on your CV after that long trip? Fear no more
You are paid only in food and accommodation. This initially stuck me as terrible, but then I noticed that the company only hooks you up with startups local to where you are travelling. This is not remote work so do not expect 'back home bucks'.

The requirement for a LinkedIn page is sub-optimal. Allow a Github login plus CV, maybe?

jamesdsadler··on Release of the Full TPP Text Confirms Threats to Users’ Rights
It seems to me like an accurate reflection of reality though. When governments and corporations propose legislation in secret it is never going to be in citizen's best interests. On the national and international scale democracy almost doesn't exist. We are being governed by the rich elite and being able to vote is just a sideshow.

Democracy as it is currently implemented is fundamentally flawed because it puts politicians and political parties in power. I mean, it fundamentally is about giving other's power. That is a freaking crude proxy to furthering citizen's interests. It's a blunt instrument. People in power can be influenced/corrupted/manipulated disproportionately by corporations and others with power. Citizens are disenfranchised and mostly powerless.

IMHO the ultimate expression of democracy would not to vote others into office, but to propose and collectively edit new legislation and vote on that. Skip the politician middlemen, go straight to the issues that matter. I imagine that citizens would be allocated a number of non-transferable expiring vote-credits that they can use to spend on pushing legislation.

In summary: until the very nature of democracy evolves we are destined to inhabit a dystopian world that serves only the interests of the elite.

jamesdsadler··on NSA panicked deprecation of suite B
Please elaborate.
jamesdsadler··on Let's Learn GraphQL
It's a decent course and I appreciate the effort. I'd rather have given my consent to being put on a public leaderboard though.
jamesdsadler··on Blinking Commits
iTerm2 supports images in the terminal. May as well take this as far as it will go.

https://iterm2.com/images.html

Edit: even animated gifs

jamesdsadler··on Lisant.io - searchable full text bookmarks & feed reader
lisant.io is a lightweight full text bookmarking service and a feed reader.

The full-text bookmarking works via a bookmarklet that snapshots the DOM of the current page and uses a heuristic content extraction engine to clean up the content.

lisant.io provides a full-text search feature across all your bookmarked content and feeds that you subscribe to. For feeds that don't provide content within the feed itself, the search is limited to article metadata.

Also, any tweet that you favourite that contains a link will be added to your bookmarks.

lisant.io is a premium service with a short (1 week) trial. There's no free plan. This is absolutely intentional: we're bootstrapping this with our own time and money we don't want to support a free tier.

We take your data seriously:

- at any time, you can cancel your plan and you can download an archive of all of your bookmarks and subscriptions.

- we take nightly backups of the entire database.

lisant.io also works just great on your mobile!