Replit Blog
Mon, Mar 27, 2017Building Towards a Holistic Development Service
Software development is one of the first -- if not the first -- examples of what J. C. Licklider called the Man-Computer Symbiosis. A "cooperative interaction" between people and computers where the person is concerned in what may be classified as the creative aspect of the work such as setting the goals, formulating the hypothesis and evaluating the results while the computer does all the "routinizable work". This symbiotic partnership is especially effective for work that puts to the test our intellectual capacity like keeping all the moving parts of a large software system in our head. Or as Dijkstra warns us "the competent programmer is fully aware of the strictly limited size of his own skull". This begins to explain why software engineers are so passionate about their tools. From the good old editor wars to JavaScript fatigue, we're continuously adding and improving on our arsenal because this is the best way we know how to become better engineers. From a business point-of-view, it might also explain the seemingly sudden rise and growth of the developer tools market: hosted version control, infrastructure, devops and automation etc. Despite all this success I think we've fallen victim to the onetime useful Unix dictum Do One Thing and Do it Well. Roughly speaking, we separate our tools by development life-cycle stages: authoring, executing, testing, building, and deployment. Which limits how much information each tool has at its disposal and therefore how much utility it can provide. Sharing the work isn't easy. The text stream as the "universal interface" means that, for example, tools need to re-parse code at every stage of the life-cycle to extract whatever meaningful information it needs. In practice it means I can't upgrade to the latest release of my favorite programming language because I need to wait on all my tools to upgrade their parsers. And this is not a theoretic problem, consider the fact that the website that you're probably reading this on was authored in ES2016 JavaScript, parsed and compiled to ES5 and then parsed again and minified and then parsed yet again to finally run in your browser which most likely runs ES2016 (back full-circle). However, we'd like to take a stab at the problem from an angle that we, at Replit, are uniquely situated to do. Our mission is to make programming more accessible, so when we design we focus on the hobbyist and the learner (although a lot of engineers also get a lot of value from our service). This relieves us from the pressure of having to build tools that needs to compete and achieve parity with existing development tools. Our users are open to things that makes it easier for them to learn, play, and share.
Thu, Mar 2, 2017Start Coding with Clojure on Replit
Earlier this week we introduced Haskell support. And now, as promised, we're continuing to add more functional languages. So today we're excited to introduce Clojure. A Lisp dialect that runs on top of the Java Virtual Machine with a focus on immutability. [](preview end) You can give it a try right now at repl.it/languages/clojure. And as always here's a gif of what you can expect: This is built on top of the Clojure's NRepl server so you should be able to get the native behavior you expect from a Clojure REPL. Please let us know if we can make it better.
Mon, Feb 27, 2017Start Coding with Haskell on Replit
We heard your requests for Haskell and today we're excited to finally announce Haskell as yet another language we support. We've decided to put our focus on adding more functional languages, starting with Haskell, so you can expect more very soon.[](preview end) Right now, the Haskell repl has few limitations. In the repl, stdout won't be echoed until your program completes execution, and stdin is completely ignored. So if you want to use something like getLine, it's probably best to put that in the editor. Aside from that, it should behave eactly like ghci. You can give it a try right now at repl.it/languages/haskell. Let us know what you think. And as always here's a gif of what you can expect:
Fri, Jan 27, 2017Enable Assignment Dependencies with Teams for Education
Fundementally, learning is about completing basic material before moving on to more advanced stuff. -- a teacher giving us feedback. At Repl.it we're always open to feedback; and supporting the teachers and students that are using our platform is our top priority. We know that teaching is hard but it's easliy one of the most impactful jobs when done correctly. As mentioned in my post about assignment reordering -- we're making it possible for teachers to enable assignment dependencies which will require students to complete an assignment before moving on to the next one. This is optional but it makes sense to enable if you designed your material to be expereinced in a certain order. Finally, we're always thinking about the best way students learn, that’s why we decided to make locked assignments accessible as read only on the student end. This means: students will be able to read the assignment but won't be able edit or submit. We think by allowing this, students can prepare themselves for upcoming assignments and it would help them to form an idea of what’s coming next.
Mon, Jan 23, 2017Infinite Loops
At Repl.it we aim to make the full power of programming easily accessible for everyone. That's why when we designed our code execution service we decided that we would not timebox users' programs or sessions. [](preview end) This was a great design decision because it allowed people to build complex programs, things like infinite looping animations, and games -- like this fun text-based game: But this also meant you could hit infinite loops. And in most cases this was okay because you can hit stop and we'd kill the program for you. Except this failed in two cases: If the program was sending so much output data to your browser that it was causing it lock up.
Thu, Jan 19, 2017Reorder Assignments with Teams for Education
At Repl.it our mission is to make programming more accessible, and the best way we found to achieve this is to support, you, the teachers on the ground doing working with students. That's why we want to make sure you control the student experience and today we're making it possible to control the assignments order from your classroom dashboard.[](preview end) We're giving you seven different sorting options: Alphabetic (both a-z and z-a), Publish date (both old-new and new-old), Due date (both sooner-later and later-sooner) and finally, Manual where you'll be able to drag and drop assignments in any order. Additionally, we're unifying the teacher’s and the student’s classroom dashboard by allowing you to choose any reordering option. That means both sides will see the same assignments order on their classroom dashboard which avoids any kind of confusion between the teacher and the students. To remove any friction at the students' end we're removing the sorting options in the student dashboard. Students will receive the order that their teacher chose for them; and soon this will allow teachers to add assignment dependencies which will require students to complete their assignment before moving to the next one. And as always, here is a gif of how it looks like:
Fri, Dec 23, 2016Live File Updates
Today we're excited to release a feature which shows any files your program creates directly inside the REPL. And any time that file changes it will be updated live in the editor. This can be anything from a text file to a gif. We also added support for matplotlib in python3 so you can make pretty graphs and watch them update live. Like this: And we don't stop you from rewriting your own source file so you can write a program which modifies itself, like this counting quine.
Fri, Dec 2, 2016Python Package Search
We recently made it possible to import any package from PyPi. However, people who missed the announcement didn't know this was possible. There was also no good way to search and explore packages. That's why today we're excited to introduce a package search widget. You'll be able to search for any python package without leaving the programming environment.
Mon, Nov 28, 2016Introducing Step Debugging for Python
Debug your Python3 programs from your browser At Repl.it, our goal is to make programming more accessible, and as part of this we aim to provide the full power of popular programming environments with no setup time. And I don't think it's an understatement to say that debugging is the majority of what we, as programmers, do. [](preview end) That's why today we're making it possible to step-debug through your Python 3 code right from the browser. We've built a new debug pane that makes it easy step in, out, over, and resume your code. All the common operations a typical debugger would do. To get started:
Mon, Nov 14, 2016Learning Devops & AWS on the Job: Building and Scaling a Service
Or, what I wish you I knew before building Repl.it's code execution service new drinking game "name that AWS service logo" — TJ Holowaychuk (@tjholowaychuk) March 23, 2016 I, by no means, identify as a devops or even a backend engineer. Most of my professional experience has been equally split between frontend/product and developer tooling. I also primarily learn by doing and bias towards simplicity and MVPs -- almost to a fault. So when I approached building a service on AWS I took a very simple path and increased complexity as the service scaled up. Here are all the steps that I went through before getting to something that I'm not totally ashamed of. eval.repl.it
Sat, Nov 12, 2016Introducing Pylint Support
Today, we're excited to introduce lint support for Python3. Where previously you had to run your code, look at the console for an error, find the line number of the error and then find that line in your editor. Now, we'll show you errors and potential mistakes live as you type! This is powered by pylint, so in addition to obvious errors like syntax errors, pylint will point out potential programmer mistakes like unused variables, redefnining builtins and many more!
Tue, Oct 25, 2016from PyPi import *
Import any Python Package At Repl.it, our goal is to make programming more accessible, and as part of this we aim to provide the full power of popular programming environments with no setup time. And no modern programming language is complete without third-party packages. [](preview end) That's why today we're making every Python package ever immediately available on repl.it. Just select the language (Python or Python3) and start importing packages: You can explore Python packages here.
Tue, Oct 4, 2016Introducing Turtle Graphics For Python
Ever since the LOGO programming language educators have been using Turtle Graphics to demonstrate the power of programming to their students while making it fun and interesting.[](preview end) In fact, my first real programming experience was when I was 6 years old learning LOGO at school. I learned how to program the turtle to draw a square and a triangle which I then put together to create a house. However, I was frustrated that I had to keep repeating the code to create a village made from multiple houses -- and that's how discovered loops! It's a natural way for children to learn programming. Here is an example turtle graphic house in repl.it :) So far, we've been focused on what we think was largely missing from the web: running programs that typically require installing a compiler or an interpreter on your computer. However, now that we've built tools for teachers to bring programming to their classroom, many want to use turtle graphics as part of their cirriculum. And that's why we're excited to introduce Turtle Graphics support for Python. To get started just select Python (with Turtle) from the list of languages, import the turtle module and start drawing!
Wed, Sep 28, 2016Scheduled Assignments
Today, we're introducing scheduled assignments. Teachers using Repl.it Classroom can now schedule assignments to be published in the future. You can imagine working on your assignment, schedule a publish date, go on vacation, and still have your students receive their assignments at the right time.[](preview end) When the assignment is finally published your students will receive a notification informing them of it. You can get to this menu from the second page in the assignment creation flow. As always, feel free to reach out at [email protected] with feedback. We'd love to hear about how this feature helped you. Or, more importantly, if there is something we can be doing better.
Thu, Jul 28, 2016Vagueness to Clarity
Simple design is not only how the product looks like, but more importantly, how the product functions; it’s about creating the easiest and simplest path for the user to accomplish their goal. Usually, simple design comes from complex requirements and a lot of ideas — in order to break it down I usually go through a process that I call Vagueness to Clarity[](preview end). This process requires a deep understanding of the problem to come up with the best possible solution. Most people don’t pay attention to simple products because it feels so right and intuitive when using them — it could be so frictionless to the point that nothing gets in the way of accomplishing the main goal. But simplicity is hard — it maybe counterintuitive that the cleaner the interface, the more thoughts were put into it, and the longer it went through the Vagueness to Clarity process. From vague to complex
