Bob Ippolito

17.3K posts

Bob Ippolito banner
Bob Ippolito

Bob Ippolito

@etrepum

@missionbit board member. Former founder/CTO of Mochi Media and Fig. Sometimes enjoys writing code. he/him https://t.co/8VABmVoPGI & https://t.co/XjXgNrSq8s bsky

San Francisco, CA Katılım Şubat 2007
3K Takip Edilen4.4K Takipçiler
Sabitlenmiş Tweet
Bob Ippolito
Bob Ippolito@etrepum·
It’s been years since I’ve seen a CD-ROM drive in the wild
Bob Ippolito tweet media
English
6
25
150
0
Bob Ippolito
Bob Ippolito@etrepum·
@zeeg I don't think I've ever had AI one-shot any task. There's always something that should be fixed, generalized, simplified, etc. and the feedback loop is slow. For me it kinda turns coding into managing ephemeral interns which is really only satisfying when the task is no fun
English
0
0
0
67
David Cramer
David Cramer@zeeg·
im fully convinced that LLMs are not an actual net productivity boost (today) they remove the barrier to get started, but they create increasingly complex software which does not appear to be maintainable so far, in my situations, they appear to slow down long term velocity
English
467
229
3.5K
659.8K
Bob Ippolito
Bob Ippolito@etrepum·
@acdlite The JS runtime has a lot of security edge cases that are hard to catch in code review and will haunt us forever
English
0
0
0
91
Andrew Clark
Andrew Clark@acdlite·
The security vulnerabilities in React Flight a few months ago were indeed serious and it's fair to scrutinize how they happened, but if you do, I don't think any fair person would attribute the cause to "sloppiness" or lack of rigor. A huge amount of care went into designing that protocol over many years.
English
7
6
132
19.6K
Bob Ippolito
Bob Ippolito@etrepum·
@tim_smart Yeah, of course, assuming things are implemented correctly in the fiber. In the Erlang case it doesn’t require the same sort of boilerplate and the garbage is collected eagerly (processes own their allocations) so it’s all a bit easier to manage.
English
2
0
0
176
Tim Smart
Tim Smart@tim_smart·
@etrepum With effect and other effect systems it is usually quite easy too: ```ts const fiber = Effect.runFork(Effect.never) fiber.interruptUnsafe() // or wait for it to complete Effect.runPromise(Fiber.interrupt(fiber)) ```
English
1
0
1
281
Bob Ippolito
Bob Ippolito@etrepum·
@dillon_mulroy The tooling improvements in the past year like data studio made this a lot more appealing
English
0
0
1
96
Bob Ippolito
Bob Ippolito@etrepum·
@simonw Cloudflare really has the right platform and price point for most of this, but the DX needs work
English
0
0
0
81
Simon Willison
Simon Willison@simonw·
I've had several conversations in the past few days with enthusiastic just-getting-started vibe coders who wanted to figure out where to host their projects This Heroku wind-down feels very poorly timed to me! (See also Fastly and Glitch, RIP)
Heroku@heroku

Heroku is transitioning to a sustaining engineering model focused on stability, security, reliability, and support. Heroku remains an actively supported, production-ready platform, with an emphasis on maintaining quality and operational excellence rather than introducing new features. We know changes like this can raise questions, and we want to be clear about what this means for customers. There is no change for customers using Heroku today. Customers who pay via credit card in the Heroku dashboard—both existing and new—can continue to use Heroku with no changes to pricing, billing, service, or day-to-day usage. Core platform functionality, including applications, pipelines, teams, and add-ons, is unaffected, and customers can continue to rely on Heroku for their production, business-critical workloads. Enterprise Account contracts will no longer be offered to new customers. Existing Enterprise subscriptions and support contracts will continue to be fully honored and may renew as usual. Why this change We’re focusing our product and engineering investments on areas where we can deliver the greatest long-term customer value, including helping organizations build and deploy enterprise-grade AI in a secure and trusted way.

English
47
4
304
52.4K
Bob Ippolito retweetledi
Wes McKinney
Wes McKinney@wesmckinn·
I've used Gmail for 20 years. Almost 2M emails, 150K attachments. Rather than let Google hold my data hostage, I built msgvault: local-first email archive with a terminal UI and MCP server, powered by DuckDB. Open source, single Go binary. wesmckinney.com/blog/announcin…
English
184
379
4.4K
432.3K
Bob Ippolito
Bob Ippolito@etrepum·
@kmanojkumar @cdburgerjr @GergelyOrosz There's also really no way to represent the "full timestamp including TZ" in one column with fewer bits than a UTC timestamp and TZ in separate columns. Storing them separately will compress better if the storage engine does that too.
English
1
0
1
56
K Manoj Kumar
K Manoj Kumar@kmanojkumar·
Yes we are still storing the TZ, but UTC (converted from users local timezone). This helps with consistency at DB level, so that we can write a common func to just display client side with a simple func to convert UTC timestamp to users browser local timezone. Having diff timezones for every user, will make it messy during conversions for processing or displaying the data later.
English
1
0
0
210
Gergely Orosz
Gergely Orosz@GergelyOrosz·
Dates remain an amusing challenge in software. Got a complaint from a customer that they bought a subscription at 6pm their time on the 31st Jan… but got a receipt with the date as 1 Feb. This is wrong - and they are right! But from the server’s POV, the date is right!
English
64
12
1.2K
98.6K
Bob Ippolito
Bob Ippolito@etrepum·
@kmanojkumar @chucker @GergelyOrosz Yes, generally you will store the transaction-specific TZ and the UTC timestamp separately, there's no advantage whatsoever to try and store them together. Accounting rolls up with UTC (or any fixed TZ), customer display combines the UTC timestamp with the transaction TZ.
English
0
0
1
13
Bob Ippolito
Bob Ippolito@etrepum·
@CampuzanoJoe @ChristoPy_ @DavidKPiano Sometimes people just can't fathom why you should be able to implement a component that requires a unique id in the DOM (and have it be stable when rendered on the server) without the caller having to deal with that invariant. Hard-coding ids is fun I guess.
English
0
0
6
138
Joseph Campuzano
Joseph Campuzano@CampuzanoJoe·
@ChristoPy_ @DavidKPiano wtf does using a static ID have to do with your entire diss post lmao? The DOM api is not the string id passed to the form attribute, its the fact the attribute exists which he is literally encouraging people to use.
English
1
0
19
675
Bob Ippolito
Bob Ippolito@etrepum·
@DavidKPiano Classes also basically guarantee that you’ll have dependency “fun” whenever peerDependencies and dependencies are not done in a way to ensure that exactly one implementation of the base class exists at runtime
English
1
0
7
1.7K
David K 🎹
David K 🎹@DavidKPiano·
JS/TS library authors: classes should be an implementation detail Don't make devs write `new FancyClass(…)`, or worse: class YourClass extends FancyClass { constructor(options) { super(options) } } Just give them a function
English
44
8
317
76.7K
Bob Ippolito
Bob Ippolito@etrepum·
@wmf @JustDeezGuy Non-paying users often still use support channels, create issues and feature requests which need triage, post PRs which need review, etc.
English
1
0
1
15
Wes Felter
Wes Felter@wmf·
@JustDeezGuy The marginal non paying user shouldn't use any developer time. That's the first thing to turn off if it hasn't been already. Open source has problems but I don't think tragedy of the commons is the right frame.
English
1
0
3
98
Paul Snively
Paul Snively@JustDeezGuy·
I mean, look, I hate to be That Guy™️, but when your business model rests on a commons, there is already a VERY well-known term of art, and has been for centuries, for what happens when suddenly a LOT more “people” consume from the commons.
Marc@MarcJSchmidt

All my new code will be closed-source from now on. I've contributed millions of lines of carefully written OSS code over the past decade, spent thousands of hours helping other people. If you want to use my libraries (1M+ downloads/month) in the future, you have to pay. I made good money funneling people through my OSS and being recognized as expert in several fields. This was entirely based on HUMANS knowing and seeing me by USING and INTERACTING with my code. No humans will ever read my docs again when coding agents do it in seconds. Nobody will even know it's me who built it. Look at Tailwind: 75 million downloads/month, more popular than ever, revenue down 80%, docs traffic down 40%, 75% of engineering team laid off. Someone submitted a PR to add LLM-optimized docs and Wathan had to decline - optimizing for agents accelerates his business's death. He's being asked to build the infrastructure for his own obsolescence. Two of the most common OSS business models: - Open Core: Give away the library, sell premium once you reach critical mass (Tailwind UI, Prisma Accelerate, Supabase Cloud...) - Expertise Moat: Be THE expert in your library - consulting gigs, speaking, higher salary Tailwind just proved the first one is dying. Agents bypass the documentation funnel. They don't see your premium tier. Every project relying on docs-to-premium conversion will face the same pressure: Prisma, Drizzle, MikroORM, Strapi, and many more. The core insight: OSS monetization was always about attention. Human eyeballs on your docs, brand, expertise. That attention has literally moved into attention layers. Your docs trained the models that now make visiting you unnecessary. Human attention paid. Artificial attention doesn't. Some OSS will keep going - wealthy devs doing it for fun or education. That's not a system, that's charity. Most popular OSS runs on economic incentives. Destroy them, they stop playing. Why go closed-source? When the monetization funnel is broken, you move payment to the only point that still exists: access. OSS gave away access hoping to monetize attention downstream. Agents broke downstream. Closed-source gates access directly. The final irony: OSS trained the models now killing it. We built our own replacement. My prediction: a new marketplace emerges, built for agents. Want your agent to use Tailwind? Prisma? Pay per access. Libraries become APIs with meters. The old model: free code -> human attention -> monetization. The new model: pay at the gate or your agent doesn't get in.

English
3
1
18
3.9K
erdnaxeli
erdnaxeli@erdnaxeli·
@garyclarketech I could like it if it was 2001-02-03 16:05:06, which is 1 2 3 4 5 6 in order, but why is it 6 1 2 3 4 5 ??! I need to look for it every time I want to format a date...
English
2
0
1
403
Gary Clarke
Gary Clarke@garyclarketech·
Go's time formatting is unique. Instead of format strings, you use a fixed reference date as your layout: 2006-01-02 15:04:05. Go replaces each part with values from your actual time. Different from most languages, but predictable once you know the pattern. Follow me for more Go bytes
Gary Clarke tweet media
English
18
11
231
24.4K
Bob Ippolito
Bob Ippolito@etrepum·
@HSVSphere @BenjDicken @dillon_mulroy The only thing that makes promises not real monads is the automatic flattening (you can’t have a Promise<Promise<V>>). Same sort of thing that makes null a worse idea than an Option (or Maybe) type
English
0
0
4
59
Ben Dicken
Ben Dicken@BenjDicken·
Name a more beautiful abstraction than the Unix pipe.
English
43
4
280
41.8K
Aaron Boodman
Aaron Boodman@aboodman·
Is this some kind of performance art 😂
Aaron Boodman tweet media
English
8
1
181
21K
Bob Ippolito retweetledi
Benji Naesen
Benji Naesen@BenjiNaesen·
Yesterday, I livestreamed one of my Zwift Races. Today, I received a Copyright Infringement Notice from ASO via YouTube, which resulted in my livestream being taken down globally. 🚫 ASO has absolutely no connection to anything in my video. 🤷‍♂️ Fix your system, @TeamYouTube.
Benji Naesen tweet media
English
33
10
740
99.4K
Bob Ippolito
Bob Ippolito@etrepum·
@vanilagy @saraikium In performance sensitive contexts you shouldn’t even have exceptions, totally agree that it would be awfully nice if typescript could prove a block of code to be exception-free
English
0
0
0
130
Vanilagy
Vanilagy@vanilagy·
@saraikium Sorry but I care about performance 🫰
English
2
0
13
1K
Bob Ippolito
Bob Ippolito@etrepum·
@maiab I don’t know why it doesn’t just let you automatically opt-in to recording whatever looks like exercise, especially if you have an ultra
English
0
0
1
36
Maia Bittner
Maia Bittner@maiab·
my watch is always like “doing an outdoor walk workout? let me know if you want me to record it” but I think distinguishing between what is a workout and what isn’t should be a crutch used by something that doesn’t have 24/7 continuous access to monitor my body
English
2
0
7
897