@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

Currently thinking about defining “blocking” functions, and: “blocking” is the default for functions… we just generally don’t notice—and mostly only care when it is something like I/O, because that is when “non-blocking” becomes valuable to an individual program.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

#lazyrust Is there a Cargo equivalent to npm why (and its yarn and pnpm equivalents)? I am trying to figure out why a transitive optional dependency is getting pulled in despite having the optional feature which brings it in disabled in the intermediate dependency. 🤔

chriskrycho,
@chriskrycho@mastodon.social avatar

@kornel That did it; much obliged!

chriskrycho,
@chriskrycho@mastodon.social avatar

Asked and answered (though it took two social networks to fully cover it! 😂): https://v5.chriskrycho.com/journal/using-cargo-tree/

chriskrycho, to random
@chriskrycho@mastodon.social avatar

A habit I developed over the past few years, after too many instances of losing work to accidental browser tab closure, browser updates, etc.:

Never write a GitHub issue (e.g.) in the browser text field. Use a desktop text editor; copy and paste it in when you are done.

chriskrycho, to random
@chriskrycho@mastodon.social avatar

Software development pro tip: When you hit some gnarly edge condition in a huge real-world repository, e.g. the rust-lang/rust repo, go see if you can recreate that example same gnarly edge condition in some tiny repo you build yourself with just enough detail to reproduce it.

chriskrycho,
@chriskrycho@mastodon.social avatar

I do this all the time when trying to get to the bottom of issues—I did it working on the LinkedIn desktop web app (3M LOC!); I did it working on the Ember.js framework repo; I did it today working on a Rust book infra issue. It is especially key for figuring out infra issues!

danluu, (edited ) to random
@danluu@mastodon.social avatar

Wow, people really don't like iTerm2 adding an optional AI integration which requires you to enter your OpenAI key to use, calling it "no longer fit for purpose", etc.

Someone pointed out that this feature is optional and not only has to be enabled, but it requires you to enter a key to use. That user was, apparently, reported on gitlab and is now blocked.

https://gitlab.com/gnachman/iterm2/-/issues/11470

It reminds me a bit of how some people don't like "algorithms", as in https://x.com/danluu/status/983466330320965632.

chriskrycho,
@chriskrycho@mastodon.social avatar

@danluu Out of curiosity, what terminal emulator are you using these days?

chriskrycho,
@chriskrycho@mastodon.social avatar

@danluu Unfortunately, no: the status quo is much the same. No one prioritizes typing latency particularly well; everyone one still prioritizes throughout (which: maybe that matters to someone, but not me). iTerm is allegedly better on typing latency than it was, but I still find it noticeably slower than Terminal. Ghostty might get there eventually, and felt pretty snappy, but it is also clear that the author and I have value very different things: it doesn’t have scroll bars still!

chriskrycho, to rust
@chriskrycho@mastodon.social avatar

Finally found something that can make the fans run continuously on my M1 Max MacBook Pro:

Building #Rust from source. 😂

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 #lambdaconf2024 talks—this one, born out of my experiences with versioning and #TypeScript and #JavaScript 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.

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
  • megavids
  • mdbf
  • ngwrru68w68
  • tester
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • DreamBathrooms
  • JUstTest
  • tacticalgear
  • osvaldo12
  • normalnudes
  • cubers
  • cisconetworking
  • everett
  • GTA5RPClips
  • ethstaker
  • Leos
  • provamag3
  • anitta
  • modclub
  • lostlight
  • All magazines