Links Rust sample: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html Highly Available Transactions: Virtues and Limitations: https://www.vldb.org/pvldb/vol7/p181-bailis.pdf Consistency Models: https://jepsen.io/consistency/models Tiger Style: https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TIGER_STYLE.md It Takes Two To Contract: https://tigerbeetle.com/blog/2023-12-27-it-takes-two-to-contract/ rand() implementation notes: https://www.mscs.dal.ca/~selinger/random/...| Hillel Wayne
This version of the talk was given at DDD Europe, 2024. Technology is a multitrillion dollar industry, but we know almost nothing about how it’s best practiced. Empirical Software Engineering, or ESE, is the study of what works in software and why. Instead of trusting our instincts we collect data, run studies, and peer-review our results. This talk is all about how we empirically find the facts in software and some of the challenges we face, concluding with a guide on how to find existing ...| Talks on Hillel Wayne
Official Description: You’ve used pytest and you’ve used mypy, but bugs are still slipping through your code. What’s next? In this talk, we cover two simple but powerful tools for keeping your code problem-free. Property-based testing, provided by the Hypothesis library, lets you run hundreds of tests from a single template. Contracts, via dpcontracts, make your program test itself. You’ll learn how and why to use these tools and how to combine them with the rest of your testing suite.| Hillel Wayne
Description: What makes software engineering different from “traditional” engineering? To find out, I interviewed 17 “crossovers”: people who have worked professionally as both a software and a traditional engineer. In aggregate, we learn three things: we are in fact engineers, we’re not actually that different as a field, and there’s a lot we can both teach and learn. Slides are here. Video is here. FAQ These are some of the questions I remember people asking me after the talk.| Hillel Wayne
Empirical Software Engineering is the study of what actually works in programming. Instead of trusting our instincts we collect data, run studies, and peer-review our results. This talk is all about how we empirically find the facts in software and some of the challenges we face, with a particular focus on software defects and productivity. Talk doesn’t seem to be online yet; in the meantime, you can see a recording of an older version of the talk here.| Hillel Wayne
Official Description: [N/A: I did not provide a description.] Actual Description: History is good!!! Yay history Talk is here. Slides are here. Sources I referenced a bunch of sources in my talk. These are links so you can read them yourself: Sources on the history of SOLID included Robert Martin’s original 11 commandments and “Principles of OOD”. Picture of RCM by Tim-bezhashvyly. Shown books were Clean Code, Clean Architecture, and Agile Software Development.| Hillel Wayne
Official Description: Concurrency is hard. How do you test your system when it’s spread across three services and four languages? Unit testing and type systems only take us so far. At some point we need new tools. Enter TLA+. TLA+ is a specification language that describes your system and the properties you want. This makes it a fantastic complement to testing: not only can you check your code, you can check your design, too!| Hillel Wayne
NOTE: There is a newer version of this talk. Official Description: There are many things in software we believe are true but very little we know. Maybe testing reduces bugs, or maybe it’s just superstition. If we want to improve our craft, we need a way to distinguish fact from fallacy. We need to look for evidence, placing our trust in the hard data over our opinions. Empirical Software Engineering is the study of what actually works in programming.| Hillel Wayne
Official Description: Distributed systems are hard. Even a few interacting agents can lead to tens of thousands or even millions of unique system states. At that scale, it’s impossible to test for, or even reason about, every possible edge case. We need better tools not just for building systems, but for understanding them. To truly understand distributed systems, we need to turn to software modeling, or “formal methods”. A few hours of modeling catches complex bugs that would take week...| Hillel Wayne
This is the companion reference for A Brief Introduction to Esoteric Languages, my lecture for a friend’s college class. The video should be legible to other viewers, and the material here should be (mostly) understandable without watching the video. The Esolangs Listed roughly in order of appearance in the talk, with the exception of Piet, which was moved to fit in with the other multicoded esolangs. INTERCAL Don Woods, 1972.| Hillel Wayne