Just say no and do it right.

Problem with Repl.it

An honest consideration

Update October 7, 2018:

Just use Microsoft Visual Studio Code instead, the #1 tool used by professionals. After meeting with the Head of School we concluded that my emergency solution to drop REPL.it and go back to Visual Studio Code with GitHub was the right choice. Even though we lost two weeks switching and resetting the students, the school incurred no additional cost and the students were the better for having become familiar with the leading professional tools and services instead of yet-another-for-education substitute (my original rant).

Education tools will never be able to keep up with the pace of innovation happening by the millions of developers and companies contributing to making professional tools better and more approachable.

If you look at REPL.it as a professional tool then you have to compare it to Cloud9 purchased by Amazon and other sandbox tools. In this case REPL.it is up against a losing battle I’m afraid. Visual Studio Code has already been entirely run from within a web browser so even those developers who buy into the idea of “cloud development” (which I find ridiculous given the modern requirement to be offline for most developers) Microsoft will ultimate have the world’s leading editor also in the cloud. This leaves REPL.it with zero value proposition. GitHub and Microsoft have rich educator communities and tools and educators who supported the idea of cloud development on Cloud9 have been burned bad when Cloud9 minimized their support for education after the Amazon purchase. These educators who tried cloud are likely arriving at the same conclusions I have: do not depend on the cloud for education—especially coding projects.

Even though I personally have to lend three students my personal laptops to complete the school year — who only had Chromebooks — I know this is the right thing because I am seeing the results personally. The students, once set up, are more happy, more likely to do stuff on their own, more likely to take their laptop with them on long vacation trips and code on the way. All of this amounts to richer, faster, better learning opportunities.

Update September 25, 2018:

We have stopped using Repl.it completely everywhere I teach for two conclusive reason:

  1. Bad Internet connections
  2. Visual Studio Code with Live Share
  3. Outdated support for most languages
  4. Zero support for emerging languages (Julia)
  5. Performance (TensorFlow local v.s. some cloud container)
  6. Color customization and dozens of other helper VSCode extensions
  7. No Markdown previewer

One the most convincing arguments to use Repl.it is “50% of schools are only on Chromebooks and iPads” but what about Internet for those computers?

One may posit a solution of limiting the Internet usage to a lab.

However, as soon as you buy into that solution, which is reasonable, there is no reason not to use actual computers loaded with the actual tools of software developers.

Ironically, the premise of my initial post was absolutely correct and now been empirically proven to me by real world scenarios where Repl.it failed an entire school where I teach with really bad Internet. It wasn’t Repl.it’s fault. The assumption that schools have good Internet is less likely than a school having beefy machines that will run Visual Studio Code. That’s the reality.

That’s when I realized that school, which requires students provide their own laptops, is more typical of emerging schools than a scenario where schools have iPads and Chromebooks.

If a school buys 40 iPads for the whole school and lends them to students for one hour a day to code, well, that school has bigger problems as most do in America.

The Repl.it and Cloud9 premise of “cloud development” is very fundamentally flawed. Just ask any developer who travels a lot and needs to code on an airplane. This is why Git was invented and has become the undisputed standard for collaborative development which Microsoft recognized when it bought GitHub for 7.5 billion.

Encouraging students to have a dependency on the “cloud” is not in their best interests. It is yet another diversion from learning real skills and tools.

I stand by my original, respectful position. Repl.it is a problem if it is being used when using Visual Studio Code from a laptop is an option at all. I have seen students forget their real skills before my eyes as they learned Repl.it.

No more.

Decision makers be very careful.

Here are the tools we now teach to replace Repl.it:

  • Visual Studio Code with Live Share
  • Git-Scm.org
  • GitHub or GitLab
  • Netlify

Every one is a professional tool that can be learned even by 10 year olds.

Update March 13, 2018:

It is like they are super-geeks. Repl.it now has full support for HTTP services and such for creating

Update March 6, 2018:

Repl.it continues to amaze me. They recently changed their core and have created what seems very similar to Atom or VSCode, which appeals to coding initiates. The biggest change has been the addition of support for any PyPi module. This means termcolor is fully supported. My original gripe was that REPL.it does not support POSIX escape sequences, but (despite the slower function framework) termcolor supports color output on anything and is therefore a better thing to have new Python programmers learn. Combined with the undocumented replit.clear() function (which clears the screen) programmers can do amazing things. I have also come to realize the standard output console in REPL.it is a nice consistency to observe during the initial stages of learning.

We continue to leave REPL.it for Proficiency level Python learning that requires handing exceptions correctly (including KeyboarInterrupt), arguments, and other things that simple cannot be learned on REPL.it. But our new Python Initiate certificate is now designed to be accomplished entirely from REPL.it.

Update February 24, 2018:

So I went from being frustrated by the lack of realness (which I still am, in part) to making REPL.it a core part of our curriculum with its own module to cover it for all our beginners:

REPL.it Now Essential

Update January 23, 2018:

So looks like no trapping Python KeyboardInterrupt exceptions or alarms. Both of these are integral parts of mastering Python and impossible to do with REPL.it. As much as I like it for notes and reminders, nothing beats an actual remote shell if you can get to one. We will still use REPL.it for the fundamentals, but are working on an SSH public key service that eases the trouble of setting up pubkey remote ssh connections (since we do not allow remote password access).

A separate problem has been emerging. New members are not learning VI when given the option—even those focused on security. That must stop.

Update December 13th:

After discussing REPL.it with some of our new adult upskillers (18 and over) another benefit of REPL.it emerged, this time for professional programmers. We seriously debated the value of REPL.it as a professional tool and what uses it could have. Here’s our initial conclusion.

Because of how easy REPL.it is to try out a bit of code in just about every single language from anywhere—including your phone—professional programmers can use it as a sort of coding scratch pad to scribble out stuff on and share with almost no overhead, sort of like a GitHub Gist you can run like you could in the Go playground. This model is already very well established and proven to work on CodePen, but only for web. REPL.it covers every modern language and more. Could it become the one CodePen to rule them all? Currently the web REPL.it is similar to CodePen but not nearly as feature rich, but it is early yet.

REPL.it has the biggest business foothold in the education community meaning it likely has a solid revenue stream. CodePen? Subscriptions?

But, imagine, if you will, how amazing it would be to have REPL.it integration with Medium the way Gist or Go playgrounds work now? Readers could actually try out your code snippets—in any language—within Medium blogs even fork them to try out their own variations. That is monstrous. I’m sure Amjad is already cooking something like this up over there and still in stealth mode. 😁 I don’t think he has to worry, he has a huge lead and C9 just shot themselves in the educational foot by ignoring that community entirely. This is also clearly a different — but equally critical — market space that does not overlap with C9. And CodeAnywhere? Well, I predict it will die out (unfortunately) it is neither the best educational tool (REPL.it) nor the best professional cloud development tool (now C9 with AWS integration).

I now think REPL.it is hands down the easiest way to introduce real programming to anyone (not just those under 13 who cannot use GitHub) and is positioned to be the polyglot CodePen to rule them all. I will watch REPL.it development with great interest, and frankly, if you are a programmer, you should too. Now if I only I had cash to invest in REPL.it as a company (definitely a better investment than bitcoin.)

Full disclosure: I am neither being paid by REPL.it nor am I even currently paying for a subscription to REPL.it (but I will soon). There is absolutely no financial or other alternative agenda to this post. I am simply a guy helping others learn the joy of programming. One reason I am leaving the title and original post is to show that I authentically came around to seeing its advantages having originally been frustrated by yet-another-fake-programming-platform, which it is, but I now believe in a good way.

Update December 12th:

Another amazing discovery during our final week of this semester. REPL.it automatically loads the functions when Run is pressed. I know that seems obvious and you are like, “so?” but it is huge. It means that for both JavaScript (Node) and Python you can ask those learning to simply write a function and run it from the console as in hello() instead of having to even call it or print out values with debug print statements in the code itself. This is a huge win for four reasons:

  1. It prevents there code from being cluttered with nearly unnecessary changes to different function calls.
  2. It lets the coder try different parameters very easily by using the up arrow and console history to simply change things.
  3. It is way simpler than doing the same thing with the interactive console on the command line with Node or Python, which requires an import to get the code to load also prematurely talking about what import is all about.
  4. This is the biggest. It reinforces the idea that functions are just subroutines, procedures, bits of code like little programs inside your big main program that can be run by themselves. This drives home the idea of encapsulation, separation of concerns, inputs, return values and all the rest that is core to understanding all programming.

I value authenticity above everything else, so I am here to say publicly how glad I am to have given REPL.it another real chance in our language lab. At the early stage it is important that students get coding right away and as much as possible. REPL.it accomplishes this way more than setting up a true development environment for beginning programmers—and far more so with those under 13. It is real programming. When you solarize the code window you almost cannot tell you are not using an actual terminal and it even has a vim mode (which does not yet work well on iPad with Bluetooth keyboard because control-[ does not produce an ESC and the arrows are unsupported for console history currently). I even have hard-core vi Linux-certified 14-year-old engineers using it when they are away from a terminal.

Does it annoy me that I cannot use escape color sequences on the terminal? Yes, mildly. The other benefits clearly outweigh this down side.

Amjad, just so you know, I am changing my entire SkilStak knowledge base to factor out any terminal or environment specific topics to enable the projects to be completely clear to anyone on REPL.it, a terminal, or even IDLE.

Thanks again for an amazing service.

Updated December 6th:

People who know me would tell you I have no problem changing direction when something improves. This update represents a big change in my perception of REPL.it. Having tested this in our learning lab I now believe REPL.it is the single best way to introduce new coders ages 7 to 13 to coding—especially after the AWS Cloud9 purchase.

[Below you can find my original rant about the following bug work around.]

When you are being forced to use REPL.it (instead of a real editor and workspace) you can get stdin/stdout to work properly by explicitly disabling terminal mode (even though it reports being POSIX compatible, which it is most definitely not).

That fix was enough for me to retool some of my real coding exercises to work with REPL.it as well, which brought me to reconsider my position on REPL.it in general.

I did have to edit my materials to pull out all the chmod +x hello and discussion of the shebang #! line and such to keep from beginners asking, “What is a shebang line?” and (never being able to have my C3PO interpreter lesson with them). In fact, this problem with REPL.it has caused me to rethink my educational materials and organized them around two different age groups 7–13 and 13+ (which roughly correlates to Montessori age groups).

From my direct observations in our learning lab I have see students 7–13 years old really respond to Repl.it (combined with Surge.sh for web publishing). There is the least amount of friction. In fact, REPL.it makes more sense than even CodeCombat.com for JavaScript because it is closer to real and allows new coders to learn it right (by allowing let and const instead of var for example). Repl.it has turtle graphics enabled for Python and full HTML/CSS/JS for web. This is all any coding educator needs for beginners. REPL.it supports so many languages you can challenge the advanced beginners by saying, “Ok, now do it in Swift” after they have completed the challenge in Python3, Node, and Go. The fact that I can correct their challenges programmatically is just a huge bonus (akin to our SkilBots challenge and validation system that runs from the command line).

Another reason for REPL.it is simply age restrictions involving those under 13.

GitHub’s terms of service very expressly forbids anyone (in America at least) under 13 to use the service—even if an adult signs up or approves. I have initiated a conversation with GitHub about this and (the potential impact it will have to big educational clients like entire school districts related to adoption of their service). Today, however, no reasonable person would risk having anyone under 13 use GitHub based on the current terms. The result (being banned) could be the exact opposite of the goal to get learners familiar with real tools and services. The GitHub restriction alone makes REPL.it the best turn-key solution for the under 13 age group.

I have fired up GitLab local servers in the past but had to stop recommending that solution for those under 13 because the server maintenance and setup and fact that it is not GitHub—the main tool we want to have them learn—is not enough to outweigh the raw simplicity of REPL.it.

In other words, Amjad, if you are still out there. I owe you a big apology. My frustration from a moment of broken-ness with Node on REPL.it clouded my judgement and blinded me to the obvious value your amazing service provides to those under 13 and others just wanting something simple without any real workspace setup.

However, I stand by my rant about those over 13. Having college students spend any amount of time coding in Scratch or Snap is disingenuous and just plain wrong. The only reason for doing so would be to acclimate a beginner to programming rather than immediately exposing that beginner to actual programming. This is simply dishonest manipulation encouraging them to consider learning something they otherwise might not by realizing what is actually involved. I appreciate what REPL.it has to offer way more than than the drag and drop alternatives for those over 13.

With all that said, I am going to leave my original rant, mostly because it is still very relevant.

Original Rant:

I get why universities, schools, and coding clubs use Repl.it. Still it is infuriating to create real coding projects (yes, like our storyeng) that are built using professional tools (VSCode in this case) only to have students be frustrated because the other place (that finally allows them to code during school time) can’t handle real code.

I even went so far as to seriously dumb down the storyeng so that color is dropped by default because the Repl.it terminal reports that it is POSIX compliant (pffff, not by a long shot). It can’t even handle standard input and output properly. (Don’t believe me, try it yourself.) Gone are my plans to add markdown parsing matched to coder-settable themes to provide moods in different areas of the story. I might add color support back, but at this point there are so many broken “educational” platforms that are not the real thing that using escapes for color is just too risky—and that frankly pisses me off—especially if someone learning it the right way here even hints at the fact that maybe somehow the storyeng has a “bug” that needs fixing.

For their sake, I will now proceed to let off steam here instead of with them around.

What the Hell are We Teaching These Beginners?

I am sick and tired of hearing about another “for education” tool that simply does nothing to help the learners actually use the concepts and code they are learning. By the time you are having them type in code you are waaaay past the let’s-baby-them-with-drag-n-drop-and-other-web-substitutes-for-the-real-thing. Repl.it is an amazing tool for challenges and simple exercises—so long as those challenges and exercises do not use advanced concepts like *dripping in sarcasm* standard input and output.

Repl.it forces its style on learners even though semicolons have not been used for years by large organizations. Gone are the days of angry authors subjectively naming JavaScripts “good parts” mostly because there are a ton of additional good parts.

Not Just Repl.It

My favorite ‘for education’ tool, CodeCombat.com, to recommend is now also defunct for JavaScript. It teaches nothing about let or const or for ofor fat arrows or class or any of the rest of the amazing—I would say required—modern JavaScript ES6 concepts. Don’t think these are important? Crack open any major JavaScript project these days in Electron (Slack, Discord, VSCode, etc.) and see what they use. You won’t any var variable declarations (and you shouldn’t, var is the freaking devil).

Are We All Really Unable to Setup the Correct Tools?

I get that Instructional Technologists in most schools are way over worked (and under paid). But it is not that hard to setup the professional tools instead of these web-based substitutes—at least for learners who are ready to learn real programming. VSCode has made is remarkably easy to edit code and set stuff up. I get that installing the latest Node/Python/Go takes time, but isn’t it worth it? Do we really have the learners’ best interests at heart when we stuff another useless substitute in their faces instead of biting off the work required to teach them employable skills and tools?

Another Reason Homeschooling Will Win

I predict that these sorts of issues ultimately are going to push more and more toward home schooling and learning groups that manage their own resources. One home schooled SkilStak member got his professional Linux certification at 15, has setup multiple Linux systems (some for which he was paid), coded in multiple languages including assembly, and wouldn’t be caught dead seen programming scratch. This kid is employable, hungry to learn, and a great example of the light years ahead homeschoolers with the proper plan and organization can jump ahead of those in traditional educational models. It is really just a shame this can’t happen for more.