@chriskrycho@mastodon.social
@chriskrycho@mastodon.social avatar

chriskrycho

@chriskrycho@mastodon.social

Software engineer and composer; theologian; writer, runner, and erstwhile podcaster. Previously the tech lead for LinkedIn web, Ember TypeScript & Framework emeritus.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

The one true line-wrapping rule for authoring Markdown documents you will work on in a VCS: if you must do wrapping, wrap at sentences, not at some character limit, so that you don’t have to rewrap blocks of text every time you change wording or phrasing somewhere!

chriskrycho, to random
@chriskrycho@mastodon.social avatar

I have been beating this drum for a half dozen years now (links in the post to prove it!) but I will keep beating it: if you are giving a talk, it should work 100% without slides. At their best, slides are “progressive enhancement.” https://v5.chriskrycho.com/journal/progressively-enhanced-talks/

chriskrycho, to random
@chriskrycho@mastodon.social avatar

The slides and script for my second #lambdaconf2024 talk are up—this one on how we make good software. If that sounds like a massive question: yes.

The talk ranges from #DDD and #TDD and #typetheory to #systemsthinking and sociology and ethics—as it must!

https://v5.chriskrycho.com/elsewhere/seeing-like-a-programmer/

chriskrycho, to typescript
@chriskrycho@mastodon.social avatar

The first of my two talks—this one, born out of my experiences with versioning and and over the past 7 years. Script and slides now, video once it’s up! https://v5.chriskrycho.com/elsewhere/cutting-edge-of-versioning/

chriskrycho, to random
@chriskrycho@mastodon.social avatar

The LambdaConf schedule is up! https://www.lambdaconf.us/schedule My talks:

• The Cutting Edge of Versioning—Monday at 12pm
• “Seeing Like a Programmer” – Resiliency, Limits, And Moral Hazards In Software Engineering—Tuesday at 4:30pm

Still time to come! 15% off: https://www.eventbrite.com/e/540887036687/?discount=ChrisKrycho15

chriskrycho, to random
@chriskrycho@mastodon.social avatar

Hot take: no one should be allowed to opine (in any direction!) on LLM-based AI’s taking engineering jobs until they have:

  1. Read and understood Peter Naur’s paper “Programming as Theory-Building”.
  2. Read enough AI literature to understand that LLMs do not build theories.
chriskrycho,
@chriskrycho@mastodon.social avatar

Note: this isn’t saying anything in particular about whether LLMs are valuable or not. Your mileage will vary depending on what you do. For most of the kind of work I do, they provide negative value—but I have seen deployments where they are useful, too. It will be pretty clear what I am asserting… if you do the reading assigned by this post. 😉

chriskrycho, to random
@chriskrycho@mastodon.social avatar

If you have ever had to merge two Git repo histories, it is a mildly arcane and annoying process. With #JujutsuVCS, it is… not:

  1. Add the second repo as a remote
  2. Make a new change (which is how jj does merges) with parents from both repos.
  3. There is no step three.

🤯🚀

chriskrycho, to random
@chriskrycho@mastodon.social avatar

An aside from one of my @lambda_conf talks:

> If you want to “get good” at software, practice reading and working on “legacy” code. The more inscrutable the better.

Comments like // MAGIC!!! tell you it’s going to be great. 😂

15% off conf. tickets: https://www.eventbrite.com/e/lambdaconf2024-tickets-540887036687?discount=ChrisKrycho15&is=65a1176ea09e0ae892aa4e47

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer Ha! I love it. I have done similar things; there are multiple places in both LinkedIn’s internal TypeScript code from when I was there and the Ember.js open source code which have… very… lengthy comments explaining why something is the way it is and what has to be true for it to keep working.

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer As it happens I am Git history spelunking on an open source project right now trying to figure out exactly what a given line of code (and the tracing it adds!) does—and, more to the point, why it does it. I am willing to bet the commit history and trace outputs make perfect sense to the author. They sure don’t to me though. 😂

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer Ha! Yes, I agree so very strongly. I was thinking about this exact dynamic the other day—commit messages are actually an important part of my process of understanding things. Sometimes I write them as a plan before I start (especially since adopting Jujutsu for version control), to make sure I understand what I am trying to do. In any substantive work I do, I try to leave commit messages that explain the why, not just the what, with useful amounts of detail.

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer Of course, the hard part is figuring out what a “useful amount of detail” is: it is audience- and context-dependent!

But the AI-generated messages aren’t going to help with that either. At all.

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer Thanks! I think if you give Jujutsu a whirl you will be glad you did. It makes so many things just… nicer.

chriskrycho, to rust
@chriskrycho@mastodon.social avatar

A victory! I have about 2K words of the #Rust async-await chapter drafted. It’s still all in suuuuuper early draft mode, but I managed to get past that first big roadblock and decide on how I want to introduce things. 🚀

chriskrycho, to random
@chriskrycho@mastodon.social avatar

Apropos of another round of “this stuff isn’t in Safari [because it’s mostly just draft specs or Chrome-only]” going around, your recurring reminder that Chrome is not the standard: The spec is. And that’s a good thing—part of what makes the web great.

https://v4.chriskrycho.com/2017/chrome-is-not-the-standard.html

(Some of the specific examples in that post from 2017 are dated, but the gist? It stands up. And the same themes bear repeating today!)

chriskrycho,
@chriskrycho@mastodon.social avatar

> Don’t valorize any of the browser vendors, and don’t act as if any of them is the standard, or a reliable predictor of the future. Instead, value what each brings to the table, but also value the interplay at the table, and the ways each of these vendors pushes the others and challenges the others’ assumptions of what is most important.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

I officially hate every analogy I have ever read for the difference between concurrency and parallelism.

The problem is a poor choice of terminology! In ordinary usage, “concurrently” entails what we mean by “parallel” in computing! But we are stuck with the jargon now.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

THIS: https://blog.ayjay.org/rewilding-2/

> …the internet, in its original open form, is an amazing thing and a genuine contributor to human flourishing—but the occlusion of the open web by the big social media companies has been a disaster for our common life and for the life of the mind.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

Mulling on domain-driven design and John Salvatier’s excellent post “Reality has a Surprising Amount of Detail” (http://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail): programming is lossy compression of real-world complexity into something computable. That is not bad per se—but we have to bear it in mind!

chriskrycho, to random
@chriskrycho@mastodon.social avatar

Software engineers should always be asking:

Does the tool I am building, by way of systematizing the world, serve or stomp on the people who are going to use it—their knowledge, their expertise, their skills, etc.?

(Brought to you by one my #LambdaConf 2024 talks.)

chriskrycho, to rust
@chriskrycho@mastodon.social avatar

Fantastic write-up here from Hillel Wayne on what makes #concurrency so hard: https://buttondown.email/hillelwayne/archive/what-makes-concurrency-so-hard/ – it hits on a bunch of themes I have been mulling on while working on the new async/await chapter for The #Rust Programming Language book.

An intuitive-but-worth-saying bit I would add to this, which he touches on but does not elaborate: In most of our programming, we can actually expect things to proceed in order, basically corresponding to the lines of code in our program.

chriskrycho,
@chriskrycho@mastodon.social avatar

(Thanks to Dijkstra for killing GOTO!)

This is not true of concurrent code, whether via callbacks, promises/futures/etc., the actor model, or anything else anyone has come up with so far. Even in a single threaded context—still less with multi-threaded—jumping back and forth between operations is not like that.

notgull, to random
@notgull@hachyderm.io avatar

Answering a frequently asked question: how do you do concurrent combinators in smol?

https://notgull.net/futures-concurrency-in-smol/

chriskrycho,
@chriskrycho@mastodon.social avatar

@carol …though if a bunch of companies out there wanted to get together to pay to make that happen… 😅 @janriemer @matze @notgull

chriskrycho,
@chriskrycho@mastodon.social avatar

@janriemer We could definitely use the async book to be finished as well! But the first stop is The Rust Programming Language, since (1) that’s the thing @carol has the ability to tackle, and therefore could throw me at, and (2) it is the first stop for folks learning Rust more generally, so in some ways is an even higher priority. @matze @notgull

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • khanakhh
  • mdbf
  • InstantRegret
  • Durango
  • Youngstown
  • rosin
  • slotface
  • thenastyranch
  • osvaldo12
  • ngwrru68w68
  • kavyap
  • cisconetworking
  • DreamBathrooms
  • megavids
  • magazineikmin
  • cubers
  • vwfavf
  • modclub
  • everett
  • ethstaker
  • normalnudes
  • tacticalgear
  • tester
  • provamag3
  • GTA5RPClips
  • Leos
  • JUstTest
  • All magazines