Nitelore is out now! Do you like ultrafast antigravity racing? You should! If you ever played F-Zero or Wipeout you have an idea. Multiple tracks, multiple ships, many racing modes. There’s a lot here! Oh and it’s fun! #gamedev #indiedev #solodev #shipaton #buildinpublic
SmilingKenshi
@smilingkenshi.bsky.social
I make software. I write. I train. I fast. // Sharing what I’ve learned along the way.
Today we’re launching Bluesky Protocol Services, a new brand and website for the infrastructure Bluesky operates. And Jetstream v2, the best way for developers to use atproto at scale, now with network replay. atproto.com/blog/introdu...
Introducing Bluesky Protocol Services
A new home for the infrastructure Bluesky runs on the open network — including Jetstream v2 with network replay, a new Jetstream SDK, and a lex-based TypeScript SDK
atproto.com
After more than a year of labor, my book 𝘏𝘪𝘥𝘥𝘦𝘯 𝘔𝘶𝘭𝘵𝘪𝘱𝘭𝘪𝘦𝘳𝘴 has launched! It's all my best ideas -- and best writing -- on how to grow your company with your existing budget and team. And yes, I read the audiobook myself. :-) (1/5)
I'm starting a new blog post series, with some more practical tutorials about ATProto things, using Ruby and my Ruby gems :] Episode 1 - resolving handles & DIDs and plc.directory:
ATProto in Practice #1: Identity
I’m starting a new blog post series that I’ve named “ATProto in Practice”. I want to go through some practical tasks that you’re likely to need when working with the protocol, using Ruby and my Ruby gems for the examples. These will (hopefully) be a bit shorter than my standard book-length blog posts here 🫠 If you’re new to the AT Protocol and you haven’t read my long Introduction to AT Protocol post that goes through the whole architecture and defines the various pieces of it, I recommend you read that one first, because I won’t be explaining everything from scratch again here. Let’s start with something pretty fundamental: user identity. DIDs & handles Every account has an immutable identifier called a DID (Decentralized Identifier), e.g. did:plc:z72i7hdynmk6r22z27h6tvur. This ID serves a similar role as an UUID might in an SQL database – it’s used everywhere behind the scenes in the protocol for any references between accounts and records, in URIs and so on. But generally every account also has a human-readable handle assigned to it, which can be changed at any time, and this handle is normally what you see in the UI, often in user-facing URLs, what you use to log in with, etc. The handle is a domain name, e.g. @python.org, and any existing domain name you own and use for your website can be used as your handle. As you start building on ATProto, one of the first things you might need to do is convert between these two identifiers. For example, a user logs in to your app using a handle and you need to first “resolve” it to a DID, or a URI or other reference in a record points to a DID, but you want to show the corresponding user’s handle in the UI, and the handle is not included in the data you got. A useful UI tool for quickly looking this up is internect.info. If you look up e.g. “firefox.com” there, you will get a page showing details of Firefox’s ATProto account: the DID (did:plc:m424cqoxwhxgjutbta7jmrur), when it was created, assigned PDS hostname, and so on. Now, how to do the same thing in code? Every DID has a so called DID Document, a JSON file storing some basic info about that identity, and among other things, that document includes the alsoKnownAs field, which lists the assigned handles, in the form of at:// URIs with only the first segment. Almost every account will have exactly one handle assigned, but it might happen that one will have zero or more than one. It might also happen that the array will contain some invalid strings which aren’t proper handles – e.g. don’t include the at:// prefix, or only contain one word and no periods. You need to filter only the valid ones. The assignment is bi-directional – a DID has one (usually) handle assigned in its document, and a handle resolves to a DID. You should ideally check the assignment in both directions, because it could happen that the other sign of the assignment is no longer valid, or worse – has never been real. That is, when you resolve a handle to a DID, check if th…
mackuba.eu
Just republished a classic article! 👇🏾 Startup founders undervalue their time. Here's why you should act like it's $1000/hr, and how it changes the decisions you make. Many thanks for spreading the love with ❤️ and 🔁!
What is the value of one hour of a startup founder’s time?
Startup founders undervalue their time. Here’s why you should act like it’s $1000/hr, and how it changes the decisions you make.
longform.asmartbear.com
If the plot is “no price is too high to pay to bring Matt Damon home”, I am fully sat for the movie.
This is really great! You hardly ever see Miyamoto get hardball questions, but his replies are very well-considered. And clearly both sides come at each other from a place of mutual respect
Today we have something special: a newly translated interview from July 1996 between Shigeru Miyamoto and Kenji Eno! Conducted just weeks after the launch of Mario 64, Eno takes Miyamoto to task (in a friendly way) with several fascinating critiques of its design. shmuplations.com/miyamotoxeno/
Physical books. You own them. They don't require updates. They don't surveil you or collect and sell your data. They are a genuinely safe hallucinogen that leaves you smarter and more empathetic and with a longer attention span the more you use them. Free from the library. What's not to like?
The tech world has a strange inversion of values. We put so much value in tiny improvements to our simplest needs (getting a little more done a little bit faster), and yet so little in addressing our deepest needs of fulfillment, inspiration, & transformation.
When reality surpasses fiction! Top: fictional forecast for August 2050, broadcast by French TV in 2014 to warn about the consequences of global warming. Bottom: Real French forecast for yesterday, June 22, 2026.
“We’re all trying to find the guy who did this” - ChatGPT
Swift Package Index has joined Apple, and together we’re building a comprehensive package registry to serve the Swift community’s evolving needs. Read more: https://www.swiftpackageindex.com/blog/swift-package-index-joins-apple
I'm not excited by what AI can do. I'm excited by what I can do.
Productivity doesn't matter if you're working on the wrong thing.
IT'S A WRAP! kirby.pika.page/posts/swiftu... Thank you SO MUCH to everyone in the #SwiftUI community who reached out to join and share their thoughts- anywhere from frustrated at missing features to deeply comitted to staying hopeful, I think we all love what SwiftUI promises- and want more from it.
SwiftUI Promiseth, and SwiftUI... - Swift Blog Carnival Roundup - Quibbletown by Keren
The month of May comes to a very busy end for me personally1, and with it closes our May edition of the Swift Blog Carnival, which I once again thank Christian Tietze greatly for offering me to host f...
kirby.pika.page
If AI is so great which is the first company to dare to have an AI board and executive team? Just kidding of course. Executives can’t be automated. But that pesky board… Right @qazimod.bsky.social ?
"everyone has a plan until they have to interact with a large unfamiliar c++ codebase"
The idea that the US & UK militaries are lobby that same technology that tells me “I’m absolutely right” on an almost daily basis as I point out its inability to follow instructions should be allowed to kill people’s without human oversight is nuts to me. This is biggest ethical crisis of our lives