Hacker Timesnew | past | comments | ask | show | jobs | submit | mohsen1's commentslogin

oh man spent so much time trying to debug what's going on. I have a complex setup with GitHub Actions and self hosted runners so I thought it's something broken in my CI setup

Ugh, same. 30 mins with 2 devs trying to figure it out before they posted an update.


> Deno now defaults to npm:

This is an interesting development. npm after all is the de-facto ecosystem and leaning into it makes sense.

I'm wondering how Deno would've been received if it supported npm and package.json from day 1.


I actually lost interest in Deno once it started leaning into NPM. I thought it was a bold and wise idea to make a clean break from the mess of Node and restart with a sensible ecosystem. Absent that... I'm just sticking with Node.

I think Deno's done a pretty good job at keeping what it did well in Deno 1 while also playing ball with Node/npm compatibility. JSR feels like the more sensible ecosystem we all need (especially high scoring packages) and while this current change leaves JSR prefixed when doing a `deno install` it doesn't change the fact that the more packages you install from JSR instead of npm the better things feel. (Especially once you can break from package.json and node_modules, but even the baby steps along the way to that goal still feel pretty good.)

I previously worked at Deno and even with all that tbh, I am not sure the http deps were the right way to go. I've really wanted to like them but package managers really have advantages.

I would not say npm was the right direction. I actually was a fan of JSR (didn't work on it but all my experience with it was great)


As someone that works in projects with standard IT tools, not supporting NPM made it a non starter for us.

No way it would go through standard build pipelines, or team skills.


Oh, for sure. But I'm old enough to remember when standard IT tools would have never supported Node in the first place and the idea of JS on the server made everyone scream. You just need to build demand for that support.

For us the demand is, does it run everything that either Angular or Next.js require, or the SDKs from headless SaaS products.

"standard" IT tools?

Yes, IT from customer, or agency delivery operations, dictates what are the official tools in specific projects, including 3rd party dependencies in internal repos, and CI/CD is cut off from accessing public Internet.

This is a really odd change. Deno already supported installing npm packages, this only removes the "npm:" prefix requirement for cli commands. Considering the nightmare that is npm, I was quite happy for jsr to become the defacto registry for the Deno ecosystem. If anything I would've expected the "jsr:" prefix to be the default.

I agree with you. A lot of "AI code is not clean" is hopeful thinking. In two years it might be able to design and architect better than most humans too.

I'm a fan of the website. Sorry to see it's happening. Not sure what the AI models would train on when nobody has incentives to put out useful information on the web? Grim situation :(

Lots and lots of guardrails to not allow slop.

In tsz I have hard gates that disallow doing work in the wrong crate etc.

https://github.com/mohsen1/tsz


> have hard gates that disallow doing work in the wrong crate

Maybe I'm using agents wrong, but I'm not sure how you'd end up in that situation in the first place? When I start codex, codex literally only has access to the directory I'm launching it, with no way to navigate, read or edit stuff elsewhere on my disk, as it's wrapped in isolation with copied files into it, with no sync between the host.

Hearing that others seemingly let agents have access to their full computer, I feel like I'm vastly out of date about how development happens nowadays, especially when malware and virus lurks around all the package registries.


tsz is an experiment in giving coding agents full control. On my day job I am a lot more careful. But I've moved on from manually approving every change and instead review the final diff. I noticed manually approving was counterproductive.

Right, I'm giving my agents full control too, but not sure why that'd exclude putting them in a sandbox?

Fun fact: This video was made accessible to sighted people because no blind person would ever listen to voice at that speed. Honestly if you ever observe a blind person using computers you'd impressed how they can listen to audio at unimaginable speeds.

https://youtu.be/wKISPePFrIs?si=ahGfFp0U7-pTU9w6&t=43

my go to example of this is this talk by Saqib Shaikh (a blind software engineer at Microsoft) giving a talk about Visual Studio. Link is timestamped


I think it takes quite a lot of practice to reach this speed. It's not rare among blind developers, but I think it still takes a lot of work to get there. Pretty impressive!

I wish more people would watch videos like this just because having a realistic idea of how blind people do certain tasks can help you move from pity or even compassion to a more productive kind of understanding. I think sometimes when you haven't seen it, you can't really even imagine how it can be done.


I listen to a lot of podcasts and listen at 1.5-2.0 speed and it’s to the point that I literally cannot stand listening to 1.0 speed anymore as they go too slowly (depending on the content of course).

Same. Returning to 1x speed makes people sound (to my 2x-abused ears) drunk and slurring their works. If I want to listen to something slowly and carefully, I will just about tolerate 1.25x.

What really frustrates me is watching/listening to discussion of music, because I am forced to listen to the talking at 1x because the music sounds wrong (and is wrong) at anything other than 1x.


The funny thing is that slow talkers sound normal at 2x speed. It's jarring when you hear their actual speech.

I listen to podcasts at 1x. But there are a few people I've done podcasts with that I do various audio tricks to speed up.

And then there is Dwarkesh who sounds like 2x on 1x.

Norman Finkelstein is a notable example of this.

Playing music at 1x should be a pretty simple feature to add to those apps.

Ideally it should be done while encoding.


I'm so glad YouTube and other podcast players have moved to support 3.0 speed. As I get comfortable with one, I move it up some. For things like sports and "did you know" content, I can go 2.5 if I'm not multitasking. For technical content, sometimes I'm stuck at 1.0.

You can get browser extensions to do it for all media controls on any site. YouTube's "Premium" for 3x is laughable when it's an internal browser function.

Another fun thing is if you use an extension you can fast-forward through the advertisements too. For some channels I use around 3.5x playback speed.

Ublock origin blocks the ads entirely on Firefox.

They're talking about in video sponsor ads, and those can be skipped using SponsorBlock or similar.

Premium is for up to 4x, not just 3x

That’s an amusing observation.

Likewise, YouTube’s “premium” feature of not displaying ads is laughable when displaying content is literally an internal browser function.

I pay anyway, because I was going to pay for an on-demand streaming music service anyway.


Something that the Overcast podcast player does (and probably others) is silence removal, which in some ways is even better than the raw speedup.

Me too, but often it's more out of FOMO and a feeling of there being so much other stuff to listen to. But in truth it's either way just a fraction you can listen to from immense amounts of valuable stuff. On more reflection, I find that listening on 1x to something allows more thinking from my end, questioning the truth of what the speaker says, thinking about tangents or similar things I've heard elsewhere, pondering stuff etc. Just like reading a book fast isn't the best strategy. Sometimes you want to look up and just think about what you just read, etc.

I am jealous. I can't listen and retain most podcasts at more than 1.0x. I even disable the podcast player functionality that eliminates pauses and silent sections.

Same haha. But for me 1.5x is the sweet spot. Anything more and I find myself rewinding a lot. I want to feel comfortable absorbing info and not on constant alert.

I do the opposite in a few. There's some I follow weekly and it's only an hour or so each. I drop it to .7 or .8 because I want to get a bit more time with the hosts. Possibly stupid but I've sort of got used to some of these folks at that speed, and the normal speed is 'weird'. One is a political podcast, and when they play clips of Trump, he does always sound very drunk, but the hosts themselves (to me) don't sound drunk, just... measured. Some of it may be audio quality - I'm getting their microphone directly, often the audio clips are from field recordings.

Except Marc Andreessen, I can’t decode his speech at 2x

Maybe it’s just a matter of practice.


> It's not rare among blind developers

It's not rare among the blind in general.

Unless you're completely technologically illiterate, the kind of person who has no idea how to install an app or sign up for an online account, you're probably doing something of the sort.


If you are dedicated, few weeks to few months of usage with regular ramp up. You should be careful with adjusting which symbols are read though and sometimes the programing languages matters because different symbols have different significance for understanding the code.

Ho-ly cow. That is very impressive.

I'm not even sure what to say, but discoveries like this are why I use hackernews, I'd never have known this otherwise.


To be fair, the acoustics of the room that talk was given in are... not too great, to put it mildly.

I can easily understand Eloquence (the speech synthesizer he's using) at that speed, but I struggled a bit with this one.


1x is too slow for me.

Whenever I'm watching lectures / talks / podcasts, I tend to watch/listen to them at 2x to 2.5x times speed.

I only need to lower it if someone flubs an important word in a definition, I'll replay that part at 1x speed.

If the person is talking particularly slowly (usually for international audiences) I put the speed up to 3x to 4x speed so it sounds like normal 2x to 2.5x speed.

---

My youtube muscle memory:

(standard video controls used by every video editor ever)

J = back 5s

K = play/pause

L = forwards 5s

(youtube specific controls)

Shift F = toggle fullscreen

Speed controls (this part is muscle memorised as fast as a password input):

1. Cmd/Ctrl Shift K: opens console

2. Up arrow: loads previous command, typically: document.querySelector('video').playbackRate = 2.5

3. Enter: runs command

You have to type in the command for the first time, after that to change the speed, change "2.5" to whatever number you want and console history will remember the change so you can go through the different values with up/down arrows before pressing enter.


Woah, this is really cool to see

I did IT for a community Center way back in the day and the director was blind. I was blown away by how fast his screen reader read things out to him - completely incomprehensible to me - and his efficiency with keyboard shortcuts would put even vim/emacs elitists to shame.

The way (Windows) screen readers handle web navigation is basically Vim in disguise.

You have two modes: "focus mode", where you can edit text in text fields and keys are passed straight to the browser, and "browse mode", where keys move a virtual cursor around the page.

In browse mode, navigating with just arrow keys all the time would be just as slow as you might imagine, so you use single-key keyboard shortcuts to move by role, E.G. to the next heading, button, table or unvisited link.

The keyboard layout is optimized for memorizability and not efficiency, you use the actual arrow keys instead of hjkl for example, but the concepts are eerily similar.

There are a couple of other approaches to solve this problem, Mac OS's Voice Over is much more Emacs-like for example, and each approach has its own pros and cons, but that's definitely one way to do it.


Probably because it's an advertisement, and super fast robot voices can feel extremely harsh and annoying. Even blind people who rely on them find them overstimulating sometimes, lol.

Indeed, and not just fast, but often heavily robotic (which many sighted people struggle to understand even at 1.5x). I remember reading about a blind person who learned how to do echo-location using sound, and it seemed like such a cool superpower, that one of these days I'm going to take the plunge and unplug my monitor and start learning how to really use the tools. I worked with a blind person a few years back who got almost double the battery life from his laptop as the rest of us by having the screen off all the time, so that alone would be a nice feature. I may never get to the epic level of echo-location, but if I get even half-way there it would be awesome. With a bonus of being able to actually QA a11y changes.

> blind person who learned how to do echo-location using sound

RIP kid https://youtu.be/fnH7AIwhpik


I’m not gonna watch that as I’d rather stick to my head-canon that he had an altercation with a dolphin.

:) IIRC that video would have been fully produced/published during his lifetime (but 100% would have to avoid the comments!)

If he’d like your humor I like it too :dolphin:


> echo-location

We all do that, I mean unless you’re hearing impaired.

Everyone’s familiar with dropping a coin or such and knowing exactly where it landed without looking.

That’s more passive sonar though.

Do I recall seeing videos of guys mountain biking and making a hissing sound for an active sonar style echo location?

Or am I making that memory up.


> Honestly if you ever observe a blind person using computers you'd impressed how they can listen to audio at unimaginable speeds.

Even better, fire up Orca (or whatever screenreader application your OS comes with) yourself and try to use your computer while shutting your eyes, kind of eye-opening (no pun intended) what kind of experience these sort of users typically get. And also, you quickly start to understand why they set the speech rate for their voice synthesizer to be so fast, it's almost unbearable navigating applications (and particularly lists) otherwise.


When I was at Google, I'd periodically test our (internal-only) app with Chromevox with the display off. It's not that it sounded like it would be easy, but it really is a challenge, and I can only imagine the muscle memory built up over time of trying to work around accessibility bugs and strange behaviors.

Unfortunately it seems impossible to get all that much funding for accessibility work :/ I wonder what ever happened to the Newton accessibility bus intended to supplement Wayland...


I’ve worked at Apple Facebook and Google. Apple was the only one that made a11y bugs and a face to face consultation with a blind developer to show you how your app sucked, mandatory before you could launch.

> I wonder what ever happened to the Newton accessibility bus intended to supplement Wayland...

Hm, never heard about it, but now I'm wondering too. I just finished implementing proper accessibility support for my native app toolkit for Linux, macOS and Windows, but only done it for X11 so far, I was just gonna get started with Wayland. What is the accessibility story on Wayland, couldn't people rely on the same protocols as with X11? That was my impression, but haven't really dig into yet.


It's still AT-SPI for wayland, the main difference is how screen readers grab keyboard input events.[0] I don't think there is a big difference from a toolkit point of view. I don't personally have experience with Wayland because most blind people recommend Mate as being the most accessible desktop still.

Thanks for considering a11y for your toolkit - it really makes a difference to those of us who are disabled. Are you implementing a11y separately for each platform? If you use accesskit[1] you only have to implement it once for all platforms. I recently vibe coded accessibility for the Swell toolkit[2] used by Reaper. I have a branch using accesskit and a branch implementing at-spi. Accesskit made things a lot easier and more performant.

Let me know if you would like a screen reader user to help with testing your toolkit.

[0] https://lwn.net/Articles/1025127/

[1] https://github.com/AccessKit/accesskit

[2] https://github.com/RDMurray/WDL/tree/accesskit

and my fork of accesskit with some features and fixes for unix: https://github.com/RDMurray/accesskit/tree/swell-fixes


The muscle memory build-up is definitely real.

There are apps I use semi-regularly that less-experienced screen reader users thought were inaccessible, and I couldn't even explain what they were doing wrong from memory. The ways of working around accessibility issues are just so ingrained in me that all I can usually remember is "yeah I did this somehow, but it was six months ago and I have absolutely no idea which specific tricks I needed for this one."


That time my Mac display broke and I had to log in taught me much about how important learning accessibility is even for non blind people.

> you quickly start to understand why they set the speech rate for their voice synthesizer to be so fast, it's almost unbearable navigating applications (and particularly lists) otherwise.

I imagine that for coding it also helps deal with the fundamental problem of an ephemeral stream rather than a persistent document that you can navigate visually in multiple dimensions. Working memory is limited, and getting more text in in a short period of time probably helps you work within that better. I also imagine that working with text via audio all the time gradually stretches and improves memory.


It's not the ephemeral stream that's the problem, it's the limited bandwidth.

You can show a lot more info on a screen than you can transmit through speech in a short period of time. That doesn't mean you read faster than you listen, just that sighted people essentially use their eyeballs as an "input device" to decide what information to look at.

If there's an object on the screen that you want to examine but that you don't need to click, you can just "navigate to it" with your eyeballs, without ever touching a mouse or keyboard. We don't have that luxury.

This means we need a much more efficient system for navigating what's on the screen, but that only gets you so far. Eventually, the easiest way to deal with this problem is just to increase the bandwidth of your channel, and you do that by increasing the speech rate.


Twenty years ago I took a level 1 tech support call from a visually impairment guy and it took about 3.2 seconds to realise his condition was no impediment for using a computer because of the screen reader tech he was using.

I listen to a lot of podcasts and YouTube videos at 3x or 4x speed now, having slowly built up the skill over a few years. It's pretty nice now and saves time, and it's remarkable how well the human brain can adapt to such input.

I took a course in speed reading, learning to read straight down the middle of the page, and I was able to go through War and Peace in 20 minutes. It’s about Russia.

Isn't that a Woody Allen joke?

Indeed

I watch most talks at 2x speed or 1.5x if it's a really technical topic. Bryan Cantrill excepted!

I’m the opposite, I can’t stand the fast speaking videos. But I also speed up 1.2x to 1.5x if the videos were too slow.

I’m struggling to understand your definition of opposite here.

Wouldn’t opposite mean you listen at sub 1x speed.

Whereas as your definition seems to be ”I’m the same, but less so.”


You recall nothing and you know it. You're just wasting time you could use for something useful or meaningful in your life. Kids call it "Anxiety cope" but I don't agree.

Can you recall 3 lines of dialogue from the latest movie you watched?

If you're listening to a podcast at 3x you're trying to learn something. No one is trying to learn watching a movie.

Podcasts aren't entirely learning, a lot of podcasts are pure entertainment, such as comedy podcasts.

Sure you can "learn" something from a Sports Podcast or a Comedy Podcast, but you could also say you are "learning" from a podcast which just reads out random numbers. You could "learn" at 33 minutes, 11 seconds, the number 6 is read out, then 8, then 1 but I wouldn't call that learning, or at least its pointless learning.


Maybe you can't but I can recall whatever I need to.

I know plenty of blind people who have their voice speed unbearably slow and barely scratch the surface of what technology can do for them. I think an interface where you can tell your phone what to do in natural language will really help a lot of less technical people.

I'm not getting my hopes up though given apple's history with Siri, which is truly awful.


Apple's history with accessibility is, on the whole, pretty good. I strongly suspect that the "coming soon" part of this means "after we integrate Google Gemini models into the system," so I don't think you should use the current state of Siri as a yardstick. (I actually have decent luck with the current Siri, but I don't push it very much and have sort of adapted myself to its limitations; on the flip side, I have a lot of skepticism around LLMs, but they're really a quantum leap in natural language processing capability over what came before, and the use cases they're showing here seem to be right in the LLM wheelhouse -- with the asterisk of "you're still always going to have to check its work.")

Coming soon very likely means iOS 27.

This has been the typical pattern for Apple for the last few years. The flashy features are announced at WWDC, accessibility has a dedicated, earlier press release. Before this practice, accessibility announcements would usually be tucked in some WWDC slide that most people wouldn't even notice.


> accessibility has a dedicated, earlier press release

IIRC, it's timed to land around Global Accessibility Awareness Day (May 21).

https://accessibility.day/


The thing that disappointed me about this amazing announcement was “coming later this year“. They should probably give us dates for a little while at least until we get the (<)$95 checks.

I just would not wanna promise anything. Except “available for download this Friday“ once the gold master is passing tests.


The "coming later this year" language is disappointing to some people, but that's just Apple propriety. Allow me to explain.

"Coming later this year" means it's part of a publicly committed release — iOS 27, macOS 27, etc. — not vaporware.

The annual pre-WWDC accessibility announcement is a tradition, and with the conference less than a month away, expect more detail then. New a11y features have a good chance of appearing in the 10am PT keynote or the Platforms State of the Union, the developer-focused follow-up at 1pm PT.

That said, things are still fluid with three weeks to go — features can be added or pulled at any time. If something gets bumped from the main presentations, there will almost certainly be a dedicated video session covering it.

As for availability: some of these features will land in the iOS 27 and macOS 27 betas, which drop during WWDC for Apple Developer Program members. The public beta follows in July, and there's a free tier of the developer program if you want early access.

Don't expect everything at once, though. Some features won't arrive until the September release candidates — and even then, a few may ship labeled "beta" or "experimental," or hold for a future dot release.


> I strongly suspect that the "coming soon" part of this means "after we integrate Google Gemini models into the system…"

I don’t think the Google's tech has anything to do with these features.

This would had to have been in the works long before the Google announcement. Also, these are enhancements of existing iOS and macOS features. They don’t require an LLM anyway; these features use Apple’s Machine Learning models.

For example, creating subtitles for videos? iOS 16 introduced Live Captions for FaceTime calls in 2022 [1].

[1]: https://www.apple.com/newsroom/2022/05/apple-previews-innova...


Being able-bodied and sighted is probably the biggest disadvantage for using iOS.

Twenty years and text input & manipulation on iPhone sucks a big fat hair pair of dogs balls still.

The last time I daily drove Android was over two years ago and it was immeasurably less God-damn-I-wanna-dig-Jobs-corpse-up-n-give-the-guy-a-piece-of-my-mind, only problem is his grave is unmarked. Arsehole!


Whenever my sister (blind) and I (visually impaired) visit my mom (blind) we secretly turn up the reading speed on her TV just a little because we can't stand how unbearably slow she keeps it, but if we turn it up quickly, she'll freak out.

After a few more years of Thanksgivings and Christmases and Mothers' Days, we'll finally train her up to a reasonable speed lmao.


This is heartwarming. The audio equivalent to the practice of sighted people fixing the bad default settings on boomers’ televisions each Thanksgiving.

The difference is that the voice in the video is a natural, human voice. It's the robotic sounding voices that always pronounce the same letters the exact same way (mostly the Eloquence family of voices) that enable blind people to listen at superhuman speeds. You can't listen to a real voice that fast.

I've heard textual description tracks on television programs before. They come fast, but not screen-reader fast. To the untrained ear a blind person's screen reader sounds like when you somehow get the TI-99/4A's speech synthesizer to read from invalid memory.

The audio description tracks are a different genre than screenreadera perform. They're acting, by actors, carefully written and performed to fit into the gaps in the dialogue while preserving the mood and flow of the show. I think speeding them up or making them robotic would ruin them, while both of those traits are actually desirable for screenreaders.

Ideally that is what AD should be like. too often you set the volume right for a movie so the characters can be heard, then the AD is like an insanely boomy voice that shakes the room. Plus for some reason the also turn the movie audio down, as if that would be necessary.

How did you come across those tracks? Never have myself.

My in-laws once misconfigured their television and it came blaring through.

I briefly worked at a call center and I would hear supervisors listening to recorded calls at warp speed.

> boiler call center

What does this mean?



Blind people can't change video speed? The control is available right there.

Yes, the audio speed can be adjusted.

Whether that control you see visually is actually accessible to a blind user is a different matter entirely. Further, it maxes out at 2x, but a blind person would typically screen read at the equivalent of 3-6x.


Huh, 2x is low even sometimes for sighted people.

Related, it seems like YouTube recently paywalled speed increase beyond 2x. Another way in which it's not cheap to lose sight, I guess.


> Another way in which it's not cheap to lose sight, I guess.

True.

We can frame it even more strongly: "default societal practices actively discriminate against people with disabilities; they intentionally, consciously choose to make life harder for people who're disadvantaged".


> Another way in which it's not cheap to lose sight, I guess.

Seems like it would be a win-win to have a user setting to opt out of video in exchange for ungating that feature.


No they are saying that the audio playing for tts would be at like 2.4x what's in the commercial.

I don't get it. The speed of TTS can be adjusted, right?

Pretty sure there's enough blind people who don't listen to voice at insane speeds, because they listen in their non-native second language or for whatever other reason. What's wrong in using lowest common denominator that's 100% accessible to those people as well as people who want faster speeds? Unlike "too fast", "too slow" doesn't get entirely inaccessible, it's just boring.

Such a random reason to criticize for.


I don’t think it’s meant to be criticism. It’s an interesting piece of information that gives a peek into how those with vision impairment consume content. There’s nothing wrong with it; but it was enlightening to consider the experience for those of us who have not been forced to.

Seems like I brought my own negativity into this...

I don't think you did.

Some blind people listen to things at superhuman speeds, but not all blind people. Using a normal reading speed is a sensible choice for an ad trying to appeal to blind people since you don't want to intimidate those who don't use superhuman speeds.

Going from that to "heh a sighted person made this because it's normal speed" is simply incorrect.

It was the sort of statement an HNer might make to showcase some trivia they have about some other group, but they oversold it.


> Pretty sure there's enough blind people who don't listen to voice at insane speeds, because they listen in their non-native second language or for whatever other reason.

Yes, for lots of reasons. It takes practice to get up to a high speed with a given TTS. People who go blind later in life are just beginning, and it can take a long time for them to get up to really high speeds. You may also need to reset somewhat when you change from one TTS to another. And blind people's ears are subject to problems just like anyone else's; if your hearing isn't great you may need slower speeds or higher volumes or both. That's why even though most people use screenreaders at much higher speeds, the defaults when you turn on a new device are painfully slow. You have to set a conservative default so people with less experience/worse ears/whatever can get by.

Anyway I don't think it's a criticism. It's just noting that it doesn't depict how most people will use end up using it, and if you're curious about what typical usage sounds like, you should look for another example.


No. It's not criticism. What they're saying is that the video was shot with a default that a sighted person could understand, because any blind person would naturally have their speed set to much higher than that.

It's like how in videos that teach people a foreign language, everyone speaks slowly and uses simple words, even though native speakers don't talk like that at all. The GP is simply saying that an actual blind person would be way more efficient at it, but they made the video with inefficient settings so sighted people could understand what was going on.


dont you worry, as a sighted person I am also infuriated by apples slooow reading speed, e.g. for "Announce Notifications".

Also as a sighted person, this is why I hate the modern trend of using the video format to show 3-4 bullet points. Just give me the text.

We moved off Cursor and onto Codex + Claude Code. Cost went from multiple thousand per engineer per month to about $500

Best deal currently:

Cursor team Codex team Claude team

Swap between the models when limited.

I am saving our company a lot of money vs Claude enterprise usage cost


in tsz (https://tsz.dev) I am Codex-Maxxing with this:

Give each Codex an AgentName and ask them to mark their PR/issue/comments with those. Have one or two "managers" that manage PRs and overall project direction. I write the project directions and make long lasting issues. Each Codex session has an almost unachievable `/goal` but they are asked to achieve the goal by landing changes in `main` via PRs

I am running about 14 Codex sessions on 4 machines right now for about two weeks since OpenAI 10x'ed my 20x account and I simply can not run out of tokens fast enough.

Side note: I have multiple Claude accounts too but the new Claude Code `/goal` command is seriously broken. It waits long pauses between iterations and sometimes prematurely stops.


Do you know about Perry, a TypeScript to native binary compiler also in Rust? That might be interesting to collaborate on.

https://old.reddit.com/r/typescript/comments/1rjxo8z/what_if...

https://perryts.com/


Yes I'm aware of that. Perry is a different project. Folks at Oxi tools are also doing something similar (a ts checker) but that's also not 100% compatible with tsc. My goal with tsz is a superset of tsc that's stricter (for now it's called Sound Mode). But matching more than a decade of work that TypeScript has put in has been a long journey already. None of the existing TypeScript rewrites are matching the original tsc yet. tsgo is the closest but that also has bugs that needs to be addressed before TS 7 is released.

I think my architecture can be faster than tsgo albeit a much more painful codebase to work on. But I'm not claiming any sort of achievement yet.

Ultimately users have to decide and I have to show a very strong case that someone should use a nonofficial rewrite over Microsoft's own code.

Will tsz be a success? I am not sure. Am I learning and having fun? for sure!


Yeah I didn't mean subsuming one project into another, just that maybe both could be integrated so that a user can type check strongly and soundly with tsz and then compile with Perry. Turning TypeScript into a true sound statically typed language with AOT compilation would be amazing.

I haven't run into /goal pausing or prematurely stopping, though I haven't used it more than a handful of times.

This is much needed!

Compared to Codex CLI, Claude Code is insanely slow.

    $  time claude --version
    2.1.143 (Claude Code)

    ________________________________________________________

    Executed in    4.39 secs      fish           external
    usr time   29.68 millis    0.26 millis   29.41 millis
    sys time   71.30 millis    1.30 millis   70.00 millis

5 seconds to show me the version number!

I'm guessing Claude Code also needs a rewrite in Rust. But from what I saw in the leaked TypeScript code, a line-to-line port will be pretty bad. It requires a new architecture that matches Rust idioms


Note that includes network requests to check latest version.

I suspect we'll soon see someone make a persistent Claude shell mode, with the reverse of a !, where you work in shell and send a message to Claude, and Claude sees all the context.


What version of time is giving you that kind of output?

Looks like that time command was invoked from "fish" shell: https://fishshell.com/docs/current/cmds/time.html

I was a little shocked that they could get it fully working in a week to be honest. My side project is a very similar ambition (https://tsz.dev) but I am in no way claiming success. i keep adding more and more tests to ensure things works. Even after all of TypeScript's own tests pass I am finding bugs which I was totally expecting.

The bar for matching tsc's behavior is really _really_ high. see:

https://github.com/type-challenges/type-challenges

I'm not against using LLMs to write a lot of code. But verification should be 100x more robust now that we can output code at this rate.


I'm stunned that it went from 'this is an experiment' to merging a ~million lines of (likely) unreviewed code in a week. I have nothing against using agents but to rush something like this and leave the community blindsided seems extremely ameteurish. Like something you'd expect a bright eyed graduate engineer to do.

Blindsided? Has there even been a release yet?

Knowing them, I expect a release probably next week, have fun in production with it.

Yes, they released a canary version.

True enough. Every merge to main releases a canary though

tsz for me is an experiment to see how can this kind of work be done better. With a slight difference that tsz is not a direct port and it's a different architecture. I'm also not claiming to have answers but I've learned a ton. A few things that works

- Test before code, Bun had lots of test so that's good but maybe they could start by asking Mythos to write like 20k additional tests that pass on Zig Bun first.

- Deterministic anti-slop features. LLMs love to solve the problem in the wrong abstraction layer or place. There are many ways to catch this with deterministic tests. I do this in tsz a lot

- Roadmap that constantly evolving by humans.

- Taking a pause and looking how the progress is going and undoing slop

- Fuzztest(https://github.com/google/fuzztest) style "trying to break things" with the powers of LLM


https://tsz.dev/sound-mode/

This is awesome. Typescript really needs more of this. I hope this gets more publicized and perhaps get adopted by Microsoft.

I am not sure you should call it sound mode though.

> It is not a mathematical proof of soundness, and it does not make third-party .d.ts files truthful.

Here there are two completely unrelated things

First, soundness is a mathematical thing (sorry). If something is sound, it's really really sound. Soundness is the thing that says we don't need to manually check the details - we can trust the compiler to do the right thing. It will do the wrong thing if there's a bug, but the implementation can be fixed. Soundness means there's is no bug in the spec, no bug in the type system that would make things go wrong even in theory.

Second, and here's the important thing.. it's entirely okay and expected that real world languages need to have unchecked features where we trust the humans to do the right thing, rather than trusting the compiler to verify. That's like Haskell's unsafeCoerce or Java's sun.misc.unsafe. The problem really is when the type system breaks even when we don't do any of those


I think in the context of type systems, soundness means something like:

    If type system says, x has type T, then x has type T
TypeScripts type system does not have that property. E.g. by default `stringArray[0]` has type `string` when it should be `string | undefined`.

But TypeScript could be sound if you eliminate all these cases. If that's the goal of "SoundMode" then the name sounds fair to me.

Not even sure `.d.ts` files are a problem in this regard. They are like axioms/facts. Resolution (from formal logic) is a sound inference rule but you can still derive contradictions from contradicting facts.


> But TypeScript could be sound if you eliminate all these cases. If that's the goal of "SoundMode" then the name sounds fair to me.

Agreed. But it isn't the goal of the sound mode. It's still unsound from a type theory point of view, just with fewer holes


Thank you for the feedback. I think I should rename the "Sound Mode" to something more honest. "Strict" is already taken so I should think of a better name. Making tsz compatible with tsc and making it sound is mathematically impossible. The history of this stuff (https://hegel.js.org) is telling. If you really make a sound JS checker, nobody will really use it unless you build an entire ecosystem as big as npm with it. TypeScript's decision to embrace existing npm ecosystem and layering .d.ts on top was a very practical decision that made it so successful.

> TypeScript's decision to embrace existing npm ecosystem and layering .d.ts on top was a very practical decision that made it so successful.

I don't think this is the problem.

I mean, ok, the first part of the problem is that typescript can't or won't represent at the type level some real world Javascript constructs. But that's understandable since Javascript can get arbitrarily complicated. (you could do a survey on npm and make a type system strong enough for all existing libraries, but this would probably be too complicated to use)

So this is not by itself too bad if, for each instance of non-representable APIs, you wrote a wrapper library that called the bad library but gave you a perfectly good API to work with. Similar to how in Rust you are supposed to wrap unsafe libraries with a safer, higher level API on top. (except it' s not about memory safety, but type safety. but the same reasoning applies, it's just lower stakes since UB is not involved)

Bur the other, more fundamental problem is that for some godforsaken reason, Typescript decided it was okay to lie with types. Some operations return the wrong type rather than a more honest type. This is not caused by the fact that Typescript has to work with libraries in npm, it's entirely self inflicted. Elsewhere in the thread someone gave an example: stringArray[0] has type string when it should be string | undefined.

This (and all other instances of deliberately lying with types) is why Typescript is unsound. Here's a list of things that cause unsoundness (not sure if complete) https://effectivetypescript.com/2021/05/06/unsoundness/

If all those things are patched up, Typescript can be in general mostly sound, even though it has to work with npm libraries and even though you need to trust other people's .d.ts files. To gain full soundness on your application code, you just need to write wrappers to work around the most egregious cases (which should be a minority). Again, the same situation as Rust is supposed to be: it's in general sound but when you need to interact with bad stuff you write a wrapper. (Note: Rust has its shares of unsoundness, but contrary to Typescript, Rust has a plan to eventually patch them up, even if this causes incompatibilities down the line)


> TypeScript's decision to embrace existing npm ecosystem and layering .d.ts on top was a very practical decision that made it so successful.

This is basically the same argument made for C++ and I think it's not a very solid one. We know this worked, but that's not evidence that alternatives couldn't have succeeded. I think in a world where Queen never happened the prevailing wisdom would be that someone like Farrokh Bulsara (Freddie Mercury) can't be a rockstar because that seems ridiculous.

Actually speaking of royalty, Prince is an even more extreme case. You cannot use numeral-letter substitutions in song titles, that's something for kids and won't... oh unless you're Prince. Yeah, no, "Nothing Compares 2 U" is fine Prince, thanks.


In the Sound Mode page I mentioned that I have some ideas around this. What if we could take .d.ts and project a sound version out of it? How feasible that can be is unclear but the biggest unsoundness criminal is `any` which is relatively safe to project it into `unknown`. And method binvariance stuff are also not impossible to project something more sound out of it.

My goal with tsz is to make it practical and useful. I know how difficult it is to convince a tsc user to try something not officially from Microsoft


> I was a little shocked that they could get it fully working in a week to be honest

It shouldn't be shocking, it was done using only compute, and the codebase is owned by the company who owns the compute, you literally just turn the dial up and it will be done faster. Efficacy of LLMs aside - anything they could do in 30 days they could also do in 3, if you spend more money.


> verification should be 100x more robust now that we can output code at this rate.

If you believe that having enough tests can save an LLM codebase - I have bad news for you. You can write a test for every single interaction ever written in typescript and it'd not be even close to 10% coverage.


I suspect they've been planning this and experimenting for many months. Along with the large existing test suite, they have lots of tooling for parallelizing agents and an unlimited token budget. So don't feel too bad..

The author was on here claiming it was an experiment just last week. Didn't look like they have been planning much of this, but they did have some trouble with zig to the tune of having to maintain their own fork that the zig maintainers didn't want to merge. So people probably could have seen this coming

If I was the bun maintainers I wouldn't want to have to maintain a language fork either, when there are viable alternatives.

Now with LLM's getting stronger and stronger a rewrite like this is getting more and more viable, and it looks like they are just approaching this like the "how do you eat an elephant? One bite at a time"-method.

Not sure why people thing this is an elaborate PR campaign, we already know LLM's are increasingly powerful for coding tasks.


Calling it as working is a bit of an exaggeration. Looked at the code for a few minutes I'd expect it to crash and burn if they ever dare to turn the optimization on.

Are there any evidences which prove the process was done in a week?

tsz looks impressive. Congrats!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: