Fri, Aug 7, 2020The role of AI in coding
Update: To stay up to date on Replit and AI, check out our Ghostwriter Beta & AI mode announcement. In it we discuss how we infused state-of-the-art intelligence into nearly all IDE features as well as the future of AI on Replit. In the past decade, we've seen an explosion of innovation in AI and machine learning. However, coding itself was barely touched by AI. The most significant example of AI-powered coding tools is editor autocomplete extensions like Kite or Tabnine. At Repl.it, we believe this is about to change. With the advent of natural language models like GPT, for the first time, we're seeing an ML model that performs shockingly well on all sorts of language-related tasks including coding. I was first introduced to and excited by the applications of natural language models in coding when I read the 2012 paper "On the Naturalness of Software," which leveraged an incredibly simple NLP technique called n-gram to build an autocomplete engine that rivaled industry standards. GPT-3, the newest model from OpenAI, is a multiple order of magnitude in power, making it feel closer to magic. We got access to the new model, which still in beta, and we quickly got to work building coding tools: Reading code is hard! Don't you wish you could just ask the code what it does? To describe its functions, its types. And maybe... how can it be improved? Introducing: @Replit code oracle 🧙♀️ It's crazy, just got access to @OpenAI API and I already have a working product! pic.twitter.com/HX4MyH9yjm — Amjad Masad (@amasad) July 22, 2020
Tue, Jul 28, 2020Shareable Computing
This is a guest blogpost by GPT-3, the new AI software from OpenAI. We only gave it the title and "Repl.it" and it generated the following post for us For a while, I wondered why it's so hard to share code. Surely sharing webpages is easy, since you can link to them with a URL. But webpages are static. They're basically just text files. Their content never changes, so there's no reason to try to sync it. What changed my mind was the birth of "repl" programming. With repl, you type your program into a text box, press a button, and it runs immediately. A second text box shows its output. Repl turns programming into an activity like writing prose, in which you revise continuously, as many times as you like, and always with access to the latest version. I used to write my first drafts on paper, and then rewrite them in Word, or Google Docs. But repl turns code into the equivalent of a first draft. At first, repl was strictly for "quick-and-dirty" programming. But now that it's become popular, more and more people use it for serious coding. And repl is inherently more social than code sharing has ever been. Even if you're the only person in the world working on a particular program, you can invite your friends to code with you by sharing your repl, and anyone can see the source code.
Sun, Jul 26, 2020Emmet support
Emmet is a plugin for many popular text editors which greatly improves HTML & CSS workflow, it's also one that's been requested by many of our users. It works for both HTML and CSS and you can use emmet in any repl as long as you're editing an HTML or CSS file. Please check the Emmet docs to learn more about it, and give it a spin by starting a new HTML repl and let us know what you think.
Wed, Jul 22, 2020Dear users coming from Glitch
First, at Replit we're not motivated by competition. What we care about the most is making programming and computing more accessible. That means anyone who wants to code and build things should be able to do so without any hurdles. Recently, Glitch, one of our competitors focusing on JavaScript, has blocked pinging services from reaching user apps. Among other things it means they broke the Discord bot experience for their users. We don't have any insight on why they did that but it seems part of a larger change they're going through which also resulted in layoffs. That resulted in a user influx to Replit so I wanted to write this to welcome you to Replit and tell you a little about us. Replit has existed since 2011 and we've been growing the service in a sustainable way that doesn't result in disruptive changes. Building a service like ours is hard, especially for a small team like ours, and we're constantly improving and making things better. But our absolute top priority is being a place coders can depend on -- we will try our absolute best to never let you down.
Wed, Jul 1, 2020Multitabs
Repl.it is a great place for prototyping ideas and starting new projects. However as your projects get bigger, the editing experience starts feeling a little limited. That's why we're exciting to announce that we're adding support for tabs! With the new multitab layout, you can open files in new tabs so that you can quickly switch back to them later. There are a few ways of opening a file in a new tab: Ctrl + Click (or Cmd + Click on MacOS) the file in the filetree Drag the file from the filetree directly onto the header or onto an open tab in the header Right click on the file and hit "Open tab" in the menu
Thu, May 21, 2020Share where you are in a Repl with Deeplinking
Oftentimes when we're sharing a repl with a friend we want to link them to exactly where we are in our project. Well now you can with deeplinking! Deeplinking allows you to link to any file in your repl as well as specific lines and columns within that file. You may have noticed that the URL hash now changes as you navigate throughout the different files in your project. For example, if you're in src/index.js, it should look something like this: This means that all you have to do to link to the file that you're currently in is copy the URL! This also affects your browser history so if you hit the back button it'll take you to the last file you viewed rather than away from your repl entirely. If you want more granularity in your links, you can add :line or :line:col to the end of the URL. So linking to the 5th line and 12th column in src/index.js looks like this:
Thu, Apr 30, 2020Terminal Links
Terminals make it hard to copy things: Selecting text works differently to what people are used to, and ^C aborts the current program. Links are hard to use. Now you can click on links in the repl.it terminal. It's as simple as starting a repl and printing a URL to the terminal. This is super helpful with languages like Rust, which often print URLs in error messages to help you debug and learn.
Tue, Apr 28, 2020Improving Repl.it's Mobile UX
I like the process of writing because of how simple and portable the tools are. Regardless of time or place, a way to write things down is never far away. There's very little friction between inspiration and experimentation. I wish writing code was more like this. In fact, Repl.it is great for quickly experimenting with coding ideas. I can open a tab in my browser and start coding as fast as I can start writing an email. But what if I’m not near my computer? While Repl.it has always worked on phones, it was never optimized for it. That's why we're excited to release our first iteration of a mobile interface! Here's a quick look at running a Go http server using one of our templates: Rather than trying to adapt our desktop layout to a smaller screen we’re building this with native mobile design patterns in mind. We added a tab bar to the bottom of the screen. It acts as the primary navigation for the IDE similar to how native mobile apps do.
Fri, Apr 17, 2020Bringing Repl.it's Marketing to the Modern Age
If you've been on the Repl.it landing page recently, you may have noticed a bit of a change! We spent a few weeks revamping our marketing pages and wanted to share a few words about how it went. A lot of design and engineering iteration went into not only making our new pages look great, but also creating a scalable and maintainable system. Our process Motivation & setup Naturally there were a lot of questions about where to start this redesign: the tone and voice of our copy? The visual style? The product we were advertising? Where the product was going to be in a few months? Ultimately this project was primarily motivated by growth and product education. For example, our previous landing page led with "Get your ideas out there", which is a great message and definitely part of our vision, but says nothing specific about the product. We wanted to approach the redesign not only as an opportunity to refine our visual and brand identity, but to get Repl.it out to millions more people and make the product dead-simple to understand.
Tue, Apr 14, 2020Terminal Search
When you're deep into a debugging session printing a bunch of here, there, and wat, the output in the terminal can get hard to read. That's when search comes in handy, and that's why we're excited to announce our new terminal search functionality. You can get to it via the small search icon on the top-right corner of the terminal: And here it is in real-life action from one of a recent debugging session:
Tue, Mar 24, 2020Packaging Support for Java - Try Maven Packages in Your Browser
Java is one of the most popular languages on Repl.it, and the JVM powers many of our other languages (Java Swing, Clojure, Kotlin). We want to make it as easy as possible to code with other people and build new programs out of programs that already exist. So we've added packaging support for Java! The Universal Package Manager now understands how to add and remove Java packages using Maven. It also can search the Maven central repository for packages. If you'd like to get familiar with the Java ecosystem, I highly recommend Andreas Kull's Awesome Java list. It was while scrolling through this list that I found Yasser Ganjisaffar 's crawler4j, a web-crawling library. Building something with Java + Packages To show you how powerful Java Maven packages could be, we're going to build an app to pull down the most interesting Twitter threads. To start, I made a new Java repl, searched for crawler4j, selected the edu.uci.ics:crawler4j package, added it, copy-pasted the quickstart example in crawler4j's README, and clicked "run." It started crawling the UCI computer science home page. That's not quite what I wanted, so I pointed the crawler at the Threader front page, to see if I could pull down some interesting Twitter threads. Thanks to Yasser's well-documented examples I soon had a directory of popular threads.
Thu, Mar 19, 2020How to Conduct Remote Interviews
Remote interviews can be hard, especially if you’ve never done them before. With the COVID-19 crisis, we’re seeing a lot of teams forced to transition to remote interviewing. Luckily, we’ve done hundreds of remote phone screens, and more recently we’ve been doing what we’re calling “remote onsites.” In this post, we'll describe how we and some of our customers leverage Repl.it Multiplayer -- our realtime collaborative development environment -- and other tools to interview candidates remotely. The Phone Screen So much rides on programming interviews. When you're first starting as an interviewee, programming interviews can feel like a performance: you either meet or exceed the bar or you don't. That's much pressure! Teams who interview well do everything they can to put folks at ease so both sides can answer the question: are we excited to work together? At Repl.it, we want to make programming more accessible, which means making it more social, even casual. We introduced Multiplayer mode so that people can collaboratively work together on the same repl with realtime editing and running, which has been a substantial step-up from screen-sharing. Candidates can start coding in their preferred language in just a few seconds, and we can start writing tests right away in the same file. It often feels more like a collaboration session than an interview, which is an excellent sign.
Fri, Mar 13, 2020Teach Coding Remotely - free for public schools and 80% discount for everyone else
*Edit: As of March 2022, Teams for Education is free for all educators. You can gain access here. We've been hearing from our teacher community that despite school closings they want to continue teaching their students remotely. Luckily Repl.it was designed to be remote-first and will be a perfect tool for this. We have two products that serve different remote modes: Multiplayer Real-time collaboration. You can invite your entire class into a repl to follow along or even collaborate all together. To that end, we're increasing the number of free collaborators on the free plan to 50 users!
Wed, Mar 4, 2020CLUI: Building a Graphical Command Line
“Command line interfaces. Once that was all we had. Then they disappeared, replaced by what we thought was a great advance: GUIs. GUIs were - and still are - valuable, but they fail to scale to the demands of today's systems. So now command line interfaces are back again, hiding under the name of search. Now you see them, now you don't. Now you see them again. And they will get better and better with time: mark my words, that is my prediction for the future of interfaces.” [1] Don Norman wrote this in 2008. Since then, search has become more powerful and users have grown more dependent on it-- searching for information with context-aware autocomplete is present in almost every popular digital product. Traditional CLIs, however, were never widely adopted by end-users because of their learning curve. Terminals, the primary platform for command-lines, are intimidating and feel like a black box to non-technical people. Also, a text-only interface is limiting-- it only allows actions to take place through language instead of the clicks, taps, and hovers that we’re used to today. Commands and flags often have obscure names, and spelling mistakes can result in cryptic errors, or worse, doing something you didn't intend. Despite all these problems, CLIs are still powerful. The input mechanism is always the same: text. It’s predictable and constant. Adding more commands takes minimal effort from the developer. Users aren’t overwhelmed with information-- you just specify the exact commands you need at any given moment. These benefits, however, come with the tradeoff that commands must be memorized to be efficient. Today, GUIs are the most popular user interface paradigm because they address many of the concerns above. They use visual metaphors for everyday objects we are used to: desktops, windows, tabs, buttons, menus, files, and folders. They’re intuitive and offer a small learning curve to perform basic actions, like moving files via drag and drop. It’s faster to recognize an icon than to remember the action’s name. The benefits of GUIs are rooted in both memory recognition, which “...refers to our ability to “recognize” an event or piece of information as being familiar”, and memory recall, which “...designates the retrieval of related details from memory.” [4, 5] So GUIs are obviously the best UI paradigm ever, right? Probably not. Although GUIs might solve some core usability issues that most CLIs present, they "...fail to scale to the demands of today's systems" [2, 3]. The moment you want to add a feature to a GUI, there’s an immediate question about where to put that feature. Should it be in the top right? Bottom left? Nav bar? Behind a tab? In the sidebar? Revealed on hover?
Wed, Sep 18, 2019Making Repl.it Collaborative at Heart
Coding, people believed, was an activity hackers did alone. While that might have been true in the past, the world is changing. New programmers come online every day and they want to effortlessly work and interact with others while writing code. Yet collaborative coding environments have remained troublesome to setup. Last year we launched Multiplayer, our real-time collaborative system, in beta. We’ve learned a lot since then. We’ve learned that while real-time coding is useful and fun, asynchronous collaboration is important for users working on long-term projects (which people are increasingly doing on Repl.it). We’ve learned that Multiplayer needs to be a core feature of the product -- not something you “turn on.” This meant a redesign of our core protocol and infrastructure to make it collaborative at heart. Repl.it is now natively Multiplayer: Collaborators can code together at the same time or asynchronously, real time editing is more robust, and every IDE feature works seamlessly in a collaborative setting. Protocol Changes & Operational Transformation The major challenge in making Repl.it collaborative at heart was adapting all our existing functionality to work seamlessly in a multiplayer environment. For a very long time we’ve gotten away with keeping the protocol very simple. Modeled after the Read-Eval-Print-Loop with a strict state machine. Only one action could be processed at a time and had to run to completion.

