Wed, Mar 10, 2021Markdown Preview
It's always been super fast to start writing markdown in a repl. However, the more we used it, the more we realized there were some key features we were missing that would make our lives easier. Which is why we're excited to announce all of the new improvements we've made to the markdown editing experience on Replit! Now, if you open up a markdown file (a file with a .md extension), you'll notice that a new tab appears to the right of your editor with the file's contents. This allows you to see a live preview of the rendered markdown right as you type it! You can also toggle the preview off if you no longer wish to see it. The file that's being previewed will persist in the markdown tab until you open another markdown file or toggle it off explicitly. This has the added benefit of being able to see instructions or notes, like the repl's README, alongside your code. You'll also notice in larger documents that the preview window stays synced with your current position in the file. As you type or move your cursor in the editor, the markdown pane will scroll with you, consistently keeping your cursor in the center of view. Lastly, we've added the ability to render local images that you reference in your markdown file directly in the preview pane!
Tue, Mar 9, 2021Replit Dotcom
tl;dr In the next few days, we'll be moving domains from "repl.it" to "replit.com." Nothing is required on your end -- all urls will automatically redirect and you'll remain logged-in (as if by magic). Nothing else changes. We prefer if people referred to us as "Replit" (pronounced rep-lit 🔥). To understand the origins of our name and how we got here, it's useful to tell you the Replit genesis story: Back in university, where I was studying Computer Science, I had to set up a development environment for every subject on each computer I wanted to use to work on homework. Whether it was object-oriented programming in Java, Data Structures in C++, or Operating Systems in C, they all had their unique setup process complete with gigabytes worth of IDEs, system dependencies, and packages to download. Even worse, IT admins locked down some computer labs at school, and you had to chase them down to install software. Still worse, sharing code was a nightmare. You had to email files around, and more often than not, they didn't run on the professor or other student's machines because of versioning issues. Around the same time, we saw giant leaps in browser and web technologies. Inspired by Google Docs, I had an idea: Why not write and run code in the browser. Make it extremely easy to share code in a reproducible environment. Another inspiration for such a system was a cloud portable Virtual Machine where you wrote code and shared the entire machine that could be cloned by others. Another mental model useful for inventing what became Replit was REPLs—inspired by Paul Graham's Lisp essays, SICP, and Scheme—I thought a REPL was the easiest way to spin up an environment to learn to program. After years of work, in 2011 we had a prototype, which we initially called "JSRepl".
Mon, Mar 8, 2021Introducing Threads: Have Conversations Around Code
A few months ago, we announced Annotations for our education users, a feature which lets Replit collaborators highlight code and discuss it in context. As classrooms were remote, Annotations became a major part of our teachers' workflow. Over a 100,000 annotations have been created since its launch. Students have used it to ask questions and clear doubts. Teachers have used it to provide feedback, and help students debug issues with their code. We've learnt a lot from them. And now, we're building Threads to make the experience complete. As repls have become more powerful, the way people use them has evolved.
Mon, Mar 1, 2021Replit Teams for Education is Leaving Beta!
*Edit: As of March 2022, Teams for Education is free for all educators. You can gain access here. At Replit we believe that computers give people superpowers. With computers, anyone who's willing to learn can spend more of their time on creative invention rather than tedious drudgery. They help us automate repetitive tasks and build on the collective knowledge of all the great thinkers, inventors, artists, and teachers who came before us. Computer science teachers around the world are bestowing these superpowers upon the next generation of creators and builders. We built Replit Teams for Education for them, and today we're officially taking Teams for Education out of beta. Sign up for a free trial if you haven't already!* Thank you teachers for beta testing Teams, for giving us invaluable product feedback, for helping one another out as part of a vibrant and diverse community of Replers, and for being a part of the history of computers.
Thu, Feb 25, 2021HTTPS by default
The easiest, fastest way to put a server on the internet should also come with secure defaults. That's why we're excited to announce that Replit is now HTTPS-first, which brings additional privacy, integrity, and security benefits to servers hosted on our platform. This applies to every HTTP server repl on Replit. HTTPS-first Our hosting infrastructure makes it easy for anyone to instantly have a secure, HTTPS-secured server by default without having to lift a finger. Any repl can open up a port and we'll automatically give it a publicly-accessible URL. Routing requests from the internet through to individual repls is handled by a component of our infrastructure we call the proxy.
Wed, Feb 17, 2021Series A to Revolutionize Computing
Our mission is to give everyone in the world computer superpowers. We build powerful yet approachable tools & platforms for developers, students, and educators. We see a new generation of hackers and entrepreneurs rising to seize the power of computers and the internet to create software that empowers them and their communities. They refuse to be programmed by the software priesthood that wants them to endlessly consume ads. Instead, they build a more free society where computers work for and under human users, not the other way around. The world we're describing is coming, and we exist to accelerate the shift. Join us! Replit is a multiplayer computing environment that makes it fun to learn how to code, build, and share apps with other people. You can create a cloud-powered computer in milliseconds -- we call them "repls" -- and you can create as many of them as you'd like, all for free. Repls come with storage for your code and files, a database for your data, and a multiplayer editor & console to code with your friends. For $7/month, you'll get more powerful machines and, with one-click, make them run forever.
Mon, Feb 8, 2021Hosting Apps with Always On
Today we're excited to announce that Always On repls are available to all hackers! Anyone with Hacker plan can choose up to 5 repls and keep them running all the time. Users with a free plan can access Always On power ups using Cycles! With Always On, you can for example spin up and host an app like a Discord bot in 30 seconds: As a reminder, Replit gives you most of what you need to rapidly build and ship apps in the cloud -- at lightning speed: A blazing fast online IDE Automatic Package Management Automatic hosting
Wed, Feb 3, 2021Introducing Spotlight pages
Replit has never been just about code. It's also about the stories we tell, the apps and games we build, and how we collaborate. It's a part of Replit's DNA to make our community baked into the experience of learning and making. Today, we're announcing Spotlight pages: a new way to showcase your repls to the world. Whenever you visit someone else's repl, you'll see its Spotlight page where you can play with the repl's output, browse its code, and comment all in one place. And if you want to start a multiplayer session with someone new, you can directly request to edit their repl. Here's a demo of adding a new feature to a game using the Kaboom framework on Replit.
Mon, Feb 1, 2021The Internet of Fun
Yesterday, I accidentally built a chat app. Surprisingly, it wasn't the first time it happened. Before I tell you how Hackernews turned (this blog's) HTTP logs into chat, let me tell you about how a 12-year old user hacked the first chat app and community space on Replit right into a Python REPL. In 2018 we didn't know we had such a strong community of tinkerers. We knew people make games with Replit and share it with other people. But we didn't realize we'd already been a Schelling point for young hackers. One day, @pyelias created a post on our support forum saying he built a Chatroom and linked to a repl. I thought it would be a simple chatbot or something similar because I hadn't seen internet-based apps on the platform until that point. We had just opened up internet access to everyone, but we didn't support web hosting or any advanced features Replit has today. It was a very constrained environment.
Sun, Jan 31, 2021Killing Containers at Scale
To make it so that anyone with a web browser can code on Replit, our backend infrastructures runs on preemptible VMs. That means the computer running your code can shutdown at any time! We've made it really fast for repls to reconnect when that happens. Despite our best efforts, though, people had been seeing repls stuck connecting for a long time. After some profiling and digging into the Docker source code, we found and fixed the problem. Our session connection error rate dropped from 3% to under 0.5% and our 99th percentile session boot time dropped from 2 minutes to 15 seconds. There were many different causes of stuck repls, varying from: unhealthy machines, race conditions that lead to deadlock, and slow container shutdowns. This post focuses how we fixed the last cause, slow container shutdowns. Slow container shutdowns affected nearly everyone using the platform and would cause a repl to be inaccesible for up to a minute. Replit Architecture Before going in depth on fixing slow container shutdowns, you'll need some knowledge of Replit's architecture. When you open a repl, the browser opens a websocket connection to a Docker container running on a preemptible VM. Each of the VMs run something we call conman, which is short for container manager. We must ensure that there is only a single container per repl at anytime. The container is used to facilitate multiplayer features, so its important that every user in the repl connects to the same container.
Fri, Jan 29, 2021Rails in 30 seconds
Philosophically, Replit and Rails are incredibly aligned. We both exist to remove excessive configuration and complexity that stands in the way of building things. However, for a long time, it bothered me that Replit didn't work well with Rails because we focus on small and lightweight projects. Recently, our infrastructure has gotten much more powerful, and I decided to give Rails another spin. It turns out it's not only possible to do Rails on Replit; it's quite a delightful experience. It takes less than 30 seconds from starting a project to seeing the welcome screen: There is no magic under the hood. You can view the template here. I merely followed the getting started guide on the rails site and had to do only a couple of modifications to make the development website show up in the iframe on Replit (detailed in the readme file). Give it a spin, and let me know what you think!
Wed, Jan 27, 2021Going Global
We had the idea for Replit in Jordan, launched as a startup in New York, and incorporated as a company in San Mateo. The US gave us the infrastructure, the capital, and network to launch our business, and for that we're forever grateful. However, to us, the internet is a new country and we want to make our citizenship official and our commitment real. We're joining our global community of hackers, students, teachers, and entrepreneurs and becoming a global company and service. Starting today: Our first two non-US compute regions are up -- Mumbai, India and London, England -- making us a global service We're hiring worldwide making us a globally distributed company Global routing Previously, Replit has been operating out of a single datacenter in the United States. When you start a repl, or join multiplayer, all of your traffic had to make it to our one datacenter. While that's not a significant issue if you live nearby, for our friends all over the world it means every time you type a letter, you had to cross an ocean at least twice! That means you could see latencies as high as 300ms for each keystroke in the terminal! Now, when you create a repl, it lives in the datacenter closest to you. Instead of everyone having to cross the ocean multiple times, you can feel even closer than your own computer! And if you have friends far away, things will feel better too. Instead of connecting to a datacenter that is far away, you'll connect to the datacenter closest to you, and we'll deliver your bits as quickly as possible, so you don't have to travel the world all on your own.
Fri, Jan 15, 2021Native Graphics Love ❤️
We have reimagined the native graphics experience on Replit. Our community of educators and hackers have given us immense feedback on graphics performance and reliability. Yes, It Runs DOOM! Our engineers have built a native graphics experience that is faster, more reliable, and elegant. Games and other native GUI applications launch quickly and reliably on our platform. Common issues like applications not launching and window resizing have been fixed. Among our most popular use cases is Pygame for beginner game programming and Java Swing for AP CSA students. Engineering behind the scenes Before we take a peek behind the curtain, let's look at a very high-level view ofhow graphics work in practice. Like many Linux systems, Repl.it uses the X Windows System to display graphics. The X Windows System is natively a network-ready system: so there is one process that directly interacts with the hardware (the server), which doesn't need to be the on same machine where the program (the client) is being run. Nowadays, the networking capabilities of X are rarely used, since many optimizations rely on the fact that both the server and client processes run on the same machine and are able to share memory between them cheaply, to avoid having to move around massive amounts of graphics data through a narrow networking pipe. In order to support being able to view and interact with graphical user interfaces remotely other techologies are used, like VNC. And just for completeness' sake, X is not the only solution for graphics in Linux, and Wayland is slowly becoming the alternative of choice for X. Android users will be more familiar with SurfaceFlinger.
Mon, Dec 28, 2020Tabbed Shell
Among the many things that makes Repl.it special is our ability to provide free compute to millions of users. We've built a platform that not only lets you write and run code, but also gives you access to a Linux container through which you can execute arbitrarily complex commands. Despite being such a powerful feature, we haven't done a great job of exposing that capability to its fullest. Today, we're excited to announce that we're rolling out a redesign of the shell as a separate tab next to the console. Although we've already had a shell, this new redesign helps make it a more integral part of the experience in a repl. Here's what it looks like: Now it'll be easier than ever to switch between viewing your program's output in the console and executing bash commands in the shell. This will also greatly benefit beginners that are new to Linux since it will expose them to an easy to use shell that they can play around with in any repl. Note that you can still use the existing keyboard shortcut (Cmd/Ctrl + Shift + S) to open and focus the shell in addition to the new tab UI. If you have any comments or feedback, please let us know on Canny. We'd love to hear it!
Tue, Dec 15, 2020Input/Outputing Testing & Autograding
Today, a highly requested feature has been released: Input/Output testing & autograding. The Input/Output Tests pane is embeded within all new and existing Teams for Education projects. This pane contains tools designed to simplify testing code. Instead of manually entering typing input and checking output for every submission, the autograder allows you to define and automate testing. How do I use it? Input/Output tests is only available for projects created within the Teams for Education product. This feature is available on all projects - new and existing. Click on the icon within the workspace sidebar nav to reveal the Input/Output tests pane.

