James Coglan
James is the author of several open-source tools for Ruby and JavaScript, including the Faye WebSocket messaging system and the parsing toolkit Canopy. He is the author of "Building Git", a book about the computer science behind Git.
unfold_lessunfold_more Conflict resolution
Key takeaways
- You will understand how Git merges really work and why they fail
- You will gain an understanding of concurrent updates and different ways of modelling them
- You'll understand what your other data systems are doing for you to keep you safe from data loss
How is a Git branch like a database transaction? Git, like a database, is designed to let multiple clients concurrently edit a set of records -- the files in your project. Despite their apparent differences, they both solve a similar fundamental problem: with concurrent edits, how do you avoid two people unknowingly overwriting one another's updates? In this talk, we'll look at what happens during a Git merge, what causes conflicts to happen, and how Git prevents users in a distributed network from losing each other's changes. We'll learn how this relates to the broader theory of concurrent editing in distributed systems, providing a deeper understanding of many other data systems beyond version control.
unfold_lessunfold_more Breaking changes
Key takeaways
- Why SemVer is not a technical tool, but a tool for signalling intent and setting expectations
- How following SemVer can accidentally break people's apps and how to avoid it
Semantic Versioning or SemVer has become a de-facto standard in the last few years, with several language ecosystems now relying on it to manage software upgrades. However, it is frequently misunderstood as a technical tool for making cold hard guarantees about code, rather than as a human tool for signalling intent and setting expectations. Never is this more apparent than when we consider what a “breaking change” means. It’s highly contextual: it depends on which language you’re using, what your public interface is, what guarantees you’ve explicitly or implicitly made to users, how much software sits downstream of you, and so on. In this talk I’ll explore several ways you can accidentally break other people’s JavaScript apps, how to avoid them, and what to do when you can’t.