The Replit team writes about its online coding platform, covering code editors, Nix, product launches and developer tooling.
Commenters mention it in discussions of CodeMirror, Nix-based cloud environments and Replit's open-source work, and link its posts for background on how Replit works.
If you want a fuller explanation, I'll just ramble about some random bits. Replit will let you create an account, with which you can create "repls": on their own, they are the "disk images" I mentioned; they store files and a few other bits on Replit's servers. You can open this repl if you own it, and edit it in the in-browser (Monaco-based) IDE. Because you own it, Replit will spin up a VM on its servers to handle your session. Your changes sync in real-time with the permanent files in the repl, as well as the live (and ephemeral) filesystem of the VM. All of this happens over the WebSocket-based protocol I mentioned. What you're seeing with this post's link is a repl owned by someone else; in such a case, you see the "Spotlight View", which is read-only. You can fork it to create your own copy of the repl, which you can edit. The list of files is a read-only view of the repl's files. When you run it, it'll spin up a VM similarly to how it does for you with the IDE. The VM I've been mentioning is a restricted Docker container running on some GCP container instances, managed by Replit. It runs Ubuntu 20.04 LTS (I think) if that's what you want to know. The desktop you see when you run this post's link is a VNC connection to a Fluxbox desktop on the VM. The console is sent from the VM to your browser (again, all of this is over that WebSocket protocol) and rendered by xterm.js. Overall it's a bit of a messy system, and there's quite a few other things not mentioned; they'll…
Author here. Glad to see the blogpost on HN!
CodeMirror improved Replit's performance by a lot and by extension our retention. In fact, after releasing it to mobile in July[1] our weekly retention rate on mobile increased by a whopping 70%. That said, solve a lot of mobile usability issues so it's not all due to performance. On desktop however, it's a different story, we made sure to just have parity with Monaco and it still improved retention by %25, almost all due to performance!
If you like working on performance come work at Replit, we want people that care about the performance of our systems!
Adopting CodeMirror pushed us to write more in a more functional style that makes the code more fun and simple (not easy) in the shortrun, and more maintainable in the long run! My teammates write CodeMirror extensions for kicks and giggles, sometimes they end up releasing some "bret victor shit"[3].
If you like CodeMirror and end up using it in production, try to get your company to fund the project[4] and open-source as much as you can!
[1]: https://blog.replit.com/codemirror-mobile
[2]: https://blog.replit.com/codemirror
[3]: https://blog.replit.com/kaboomdraw
[4]: https://marijnhaverbeke.nl/fund/
My experience was seriously different.
I started with Slackware, switched to Arch and after a failed attempt to run some AUR scripts, I was tired and switched to NixOS.
Incidentally, I treat both my Emacs config and my NixOS and home-manager configurations as Igors. They are never really finished. In this sense, the "many months of effort to get to that point" does not matter.
Also, with NixOS I feel I can be bolder than with other distros, knowing with way more accuracy what is breaking my configuration.
> Yes, Docker is an ugly duck compared to Nix, but it brings 90% of the reproducibility benefits and probably everyone on your team can be up and running in hours.
The Docker replit was using before Nix was going hopelessly "uglier": https://blog.replit.com/nix
Also, what Cargo and NPM and `<insert lang here>` lockfile system do for each lang, Nix does in a more general package management level.
I understand the feeling of being taken advantage of, but this seemed clearly like an over-reaction. A 100% apology was in order from my (sideline) opinion. He's just an ex intern having some fun, probably trying to impress his former boss even.
I was reading through the replit blog to see what kind of things are trade secret vs public, and noticed that they didn't go out of their way to highlight that Bret Victor's "Learnable Programming" is clearly the complete inspiration for replit's debugger (time travel, no hidden state, etc). They have a small link to Bret's work but don't mention him by name. Considering Bret's article is basically THE piece to read w.r.t. programming environments, and the gif that replit shows looks pretty identical, it seems right to have his name/article clearly at the top.
https://blog.replit.com/debuggest
http://worrydream.com/LearnableProgramming/
I've done the same thing, first thing I tried with ChatGPT: https://imgur.com/a/d8LZicq
Prompts:
- Write a simple CRDT implementation in Swift
- How can I make a GraphQL server using Rust using the async-graphql and actix-web libraries?
- Write code to create a Dropbox clone in Rust
- How do I make an HTTP request in Javascript?
However, just like with Copilot, it can introduce subtle bugs. For example, in the Dropbox example, notice how it uses synchronous code in an async function. Also, longer prompts will reach the token limit and get cut off.
Interestingly, this must be what Replit is also using for their AI codegen service too (https://replit.com/site/ghostwriter) since I believe they have some connection to OpenAI, as they got early access to OpenAI's service last year with their previous Codex product (https://blog.replit.com/codex).
I've used Replit for educational materials when teaching beginners Python and JavaScript. They had a nice product called Teams for Education. It was even announced that it'll become fully free (the original blog post with the announcement was deleted from their website) [0], but soon after that the company had pivoted to AI and later discontinued the Teams for Education completely [1].
I also used Replit's embedded widgets for occasional lessons, but they kept changing the UI and behavior, making it difficult to write consistent reliable documentation for beginners.
I think by now it's clear that the product is not meant for educators, like it was originally, so that's ok.
[0]: https://web.archive.org/web/20240924020257/https://blog.replit.com/teamsforedu_free
[1]: https://blog.replit.com/update-on-teams-for-education