Scale By The Bay 2018: Bryan Cantrill, Rust and Other Interesting Things
FunctionalTV5 HN recommenders · recommended in 5 months, 2021–2024
talk · intermediate · evergreen · 2021–2024 on HN
Bryan Cantrill argues that programming languages and platforms reflect core values, and compares languages through that lens, with Rust as a main example. He draws on his experience with Solaris, DTrace and ZFS.
Cited again and again as the framework for discussing languages in terms of values, and how organizational values shape software quality.
Up next
3 mo on HN36C3 - BahnMining - Pünktlichkeit ist eine Zier - english translation
media.ccc.de
3 HN recommender · 2020–2023
4 mo on HN34C3 - Dude, you broke the Future!
media.ccc.de
4 HN recommender · 2018–2024
2 mo on HNDEF CON 19 - Artem Dinaburg - Bit-squatting: DNS Hijacking Without Exploitation
DEFCONConference
2 HN recommender · 2018–2023
5 mo on HNClassic Game Postmortem: Sid Meier's Civilization
GDC Festival of Gaming
4 HN recommender · 2017–2021
1 mo on HNDemo: Base language, compile-time execution
Jonathan Blow
1 HN recommend · 2015–2022
5 mo on HNClassic Game Postmortem: Ultima Online
GDC Festival of Gaming
5 HN recommender · 2018–2024
4 mo on HNSid Meier's Psychology of Game Design
GDC Festival of Gaming
4 HN recommender · 2016–2019
17 mo on HN8 Bit & '8 Bitish' Graphics-Outside the Box
GDC Festival of Gaming
13 HN recommender · 2018–2026
16 mo on HNHow Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
Видео с мероприятий {speach!
15 HN recommender · 2017–2025
12 mo on HNWhy Isn't Functional Programming the Norm? – Richard Feldman
Metosin
12 HN recommender · 2019–2025
11 mo on HNMaybe Not - Rich Hickey
ClojureTV
14 HN recommender · 2018–2025
10 mo on HNConway's Game Of Life in APL
Dyalog
11 HN recommender · 2010–2024
10 comments from Hacker News
As a huge fan of Julia i got to fully agree. Although i would probably not "no longer recommend Julia" but "give huge caveats when mentioning Julia". Organisations (that includes those who maintain programming language) have values Bryan Cantrill has an excellent talk on this ▶ this video and i got to agree with the author that correctness (especially correctness under arbitary composability) is not a value that Julia teaches and instills in its users. Some Julia users care about this, some core maintainers do to (as the Pkg3 demonstrates). However there are many invocations (SafeTestSets vs Test) and stumbling blocks. I am aware of no efforts to do formal verification on Julia code. There are no good ways to move certain Run-Time to compile errors. Correctness is not a value of the Julia language. Here is the good thing though, as Bryan demonstrates in his talk, you can hire for values.
There is sparsely little real “engineering” that goes on in the field of “software engineering”, industry wide, in terms of ensuring that our software is reliable and secure. Performance and development velocity seem to take the driver seat always, in a whole lot of software. See also this talk by Bryan Cantrill, “Scale by the Bay 2018: Rust and Other Interesting Things” ▶ this video where he talks about software platform values, in the sense of what different programming languages and other things focus on. He also touches on the fact that while higher level layers in the stack might value security it kind of falls apart when the very microcode in our CPUs sacrifices security for performance. This was in a period of time where Spectre link and Meltdown link had reared their ugly heads.
Bryan Cantrill has an interesting talk that discusses various languages in terms of their values that you might finding interesting: ▶ this video
No, I'm not. Or at least, not as I see it. How would you describe javascript's values, compared to other languages? This is a great chart / explanation of this kind of thinking from Bryan Cantrill: ▶ this video
Bryan Cantrill explains a very interesting thought about that here: ▶ this video I'm sure there are many other factors that play into this (just look at Gary Bernhardt's "WAT" talk), but essentially, I agree that this has to be a big part of the problem. If you've been developing backend systems and asked to hold up robustness and stability guarantees for multiple years and then run into Javascript, you will likely run into situations where you have to make up for its deficiencies in that regard. That doesn't make it a bad language per se -- that's the case with any language in some aspects -- but since JS will be a new language to you, you're much less likely to accept that situation as a given.
I guess the Cantrill talk you are referring to must be 'Software as a reflection of values' from 2018: ▶ this video
The struggle here is that in software, sometimes hedgehog thinking is correct. The discernment challenge isn't in spotting hedgehog thinking and choosing fox thinking instead. The challenge is in figuring out in what domains hedgehogs are right and in which domains foxes are right. Unlike in the arena of politics, in software hedgehogs reap the benefits of deep expertise. When are hedgehogs right? In the "obvious" stuff: - You should always use correct indentation in your code - Document your architecture decisions. Have conversations in your team to get feedback and buy in. - When practical, try and keep down the number of languages and databases you use. It'll make onboarding easier and it allow the team to build deeper expertise And so on. The "relational database advocate" usually isn't making an argument that relational databases are better all the time. They're making an argument that relational databases are the right default, and this particular use case isn't weird enough to justify the cost of learning and deploying something else. They might be right - its extremely difficult to know without taking into account the task at hand and the skills of the team. My personal take is to think about the values of a piece of software before writing it. How much should your project care about maintainability, or scalability, or accessibility (ie onboarding)? Then make your technology choices with that in mind. If actually, short term team velocity is the most important thing,
The real cost to my client was that for months or years their system had been crashing, and they could do nothing about it. They just had to live with it, rerunning jobs that had crashed. Maybe the compile times would have been unfortunate, but I think they would have come out ahead. On the other hand, they probably wouldn’t have had to hire me. Speed isn’t everything: ▶ this video
I can't help but feel like if you want static typing, you're better off recognizing that python is not the right tool for the job. Admittedly I've never done serious work with mypy (or typescript), so I'm approaching the value proposition of dynamic typing at face value rather than experience. However, it seems like the primary benefit of these languages was ease and flexibility, ableit at the cost of structure. Or said differently, adding mypy feels like trying to get out of a trade-off decision. This situation reminds me of a talk Bryan Cantrill gave on platform core values, and as examples he gave his interpretation of the platform core values of languages like C, Awk, and Scala: ▶ this video For me, platform core values that stick out for python would be Approachability, Simplicity, and Velocity. I understand the posited value mypy brings to the table, but it feels in contention with the original core values that made python appealing to begin with.
> I can't recall which exact presentation it was, but Bryan Cantrill had a brilliant segment on this in one of them. Perhaps others around here can remember? I think that's his discussion of language values in "Rust and Other Interesting Things" at Scale By The Bay 2018. ▶ this video [edit: This talk is also titled "Platform values, Rust, and implications for systems software". I'm not sure which title is preferred.]