Repl.it Database
blog.repl.it
blog.repl.it
If you want to take on a problem as big as the ones I've discussed,
don't make a direct frontal attack on it. Don't say, for example,
that you're going to replace email. If you do that you raise too
many expectations. Your employees and investors will constantly be
asking "are we there yet?" and you'll have an army of haters waiting
to see you fail. Just say you're building todo-list software. That
sounds harmless. People can notice you've replaced email when it's a
fait accompli.
I wonder if there's something similar going on with Repl, and if so, what their end goal is.The realization is that if you control the development environment, by introducing seamless integrations with your hosting through things like easy-to-use databases (i.e. vendor lock-in), you also have control over the hosting of applications. That's a pretty lucrative business as we've seen with AWS, GCP, Azure, etc.
Also, there's a trend towards low code/no code, so everything is becoming tiny microservices integrated with other SaaS solutions. Something like Repl.it can help you with the "last mile" of development work when you need build something lightweight and quick.
And now they are replacing it with what? An IDE in a browser??? that you can just point to and start writing code? just like that??? 8-)
Who will manage them, optimize them, secure them? And with what? Crappy online text editors with 1% of the features of the tools you are used too?
who starts a comment this way? what condescending bullshit. i guess i'll start my comment this way:
you're a douchenozzle, and the point you raised was barely relevant to the comment whose quality you're editorializing
I predict that at some point in the next five years we’ll start to see more apps that are written with webasm cross-compilation in mind, so that “browser” is just another target architecture, just like MacOS, Linux, and Windows.
I think we're only a few years away from browser-based editing being the default. I would definitely be surprised if more than half of the dev work happens in non-browser-based editors come 2030.
That I lease from someone else.
Any by the way, it's in their kitchen, not yours.
And the power cord is administrated by someone else.
In all seriousness, there's no fundamental reason why an IDE CAN'T work in a browser. Its just that I feel like we're constantly regressing and this is all just a subtle way for an external corporate to capture me so that I can't opt out. The amount of time i have to spend at work negotiating with other parties/budgets/silos/corps dealing with remote environments and software, when I could have done the whole thing in half the time with a 5k budget on a local machine...
It doesn't feel like we're moving forward...maybe moving back to medieval guild craftsman, because control is being taken out of my hands and I'm forced to sign up to respective software/environment guilds to do my work?
Ironically, in an enterprise environment with heavily managed internal resources, moving so much to the cloud has exactly the opposite effect on my work.
A lot of this effect will depend on both the preexisting local org structure, and the particular cloud platform(s) you choose and how your org chooses to administer them. But certainly at least most of the big cloud providers seem to try to enable one stop shopping for fairly complete sets of solutions without any more organizational roadblocks than are interposed by your own organization.
I suppose the market doesn't care, so I'll keep being a closet neo-luddite until all my tools are replaced with services.
That said, I worry about what happens in the limit. Are we doomed to life without autonomy and without things to call our own? A life in which everything is leased, where money isn't something you accumulate or spend, but only manage the flow of[0] - money flows in through your job, and flows out to services[1]? A life in which you don't even produce anything yourself, but only provide a fractional (and useless on its own) input to the vast machine of civilization?
I can imagine how this is what we need for humanity to grow and spread among the stars, but at the same time I despair about the loss of what I consider to be core of being human: autonomy, having worth as a unique individual.
Talking about the "means of production" - I'm really starting to love this term. I'm not turning red just yet, but the phrasing nicely encompasses what it's about: owning the means that let you provide value for others (and yourself!) on your own terms, without strings attached. And the strings constrain your life way beyond just limits on your ability to make money. They constrain how you work, and - on the buyer side - they constrain how you live. Because if you don't own the things you use, it's the owners that dictate what you can and cannot do with them - and the things may also stop working if the true owners disappear or stop caring.
--
[0] - The difference between resource management in StarCraft and Total Annihilation, if you like. The former had a standard model of "you collect units of finite resources to your storage, and spend them later"; the latter had infinite resources, but each resource building (a mine, a power plant, etc.) provided some amount of resource per second, and everything else drained these resources at various rates. Buffers were small, so your primary focus was ensuring you produce (just a bit) more than you consume. In my eyes, the world has been moving from StarCraft economy to Total Annihilation economy at every level, including nowadays at personal level. Which I find worrying, though I'm not sure why.
[1] - Then again, maybe this is how things always were, and the change is in perspective, in the mental model?
Huh, I don't think so.
VS Code which is "web-ready" is nowhere near to real VS capabilities when it comes to reliable intellisense
People often shit on VS because it's giant and requires something better than $100 PC, but it makes life waaaaaaaaaay easier and nowadays you don't have to buy Resharper because there are free and solid replacements
Sometimes the path you take your users through is more important.
Cloud9 was trying to take already established developers and put them into a cloud ide. Repl.it is taking new developers without entrenched habits and hoping they’ll never leave for the traditional local dev environment.
It makes a lot of sense when you view it that way
1, companies all expect you to work in the traditional way with local repos etc. All their tooling is geared towards that. If experienced users who set the standards aren't being migrated over, then they'll reinforce that status quo, and so will people who learned on repl but were forced to migrate off (monkey ladder experiment style).
2., using older tools is a point of pride. There's definitely a strain of "if you use repl.it / etc. and not emacs / vim / vscode you're a noob." This obviously is toxic and not great, but it does exist, and acts as another obstacle to online IDE adoption I think.
I'm sure it's not the best place to build a video rendering app using multithreaded rendering to a video window, or an allocation-free audio synthesis engine supporting real-time scheduling. I think these are basically impossible to achieve client-server, and difficult if implemented in JS+WASM.
It is utterly transformative.
Multiplayer, in a COVID classroom, means I can easily help any pupil without having to PPE-up and break into their bubble. At the start of every class I post a google quiz whose sole question is “what is your REPL multiplayer link for this class?”.
I haven’t used many of the other school features for REPL.it. I can think of a few I’d love to see.
Packages are so easy to install. A pupil today told me they’d not really had any luck with their coursework because they couldn’t install textract. A few clicks and they had a poetry enabled repl with textract read to go.
REPL.it has brought about a quantum leap in the way we are working with pupils. It is the epitome of how frictionlessness can make an enormous difference.
I think it is cool to offer some functionality to guest users, however they should make it clearer what the limitations are so that people evaluating it get a good sense for the features.
I even created an account, which changed my repl to "anyone can edit" to "forks on edit" apparently? But still no multiplayer?
Multiplayer URLs have “join-“ in the path, and are available from the “share” button in the top left.
It would be very handy (and intuitive) if all REPLs were a live read-only window on what the owner was typing. The reload-page-to-get-latest-version thing works, but multiplayer is there and awesome so it seems odd to hide it with a different type of URL that looks almost identical to the regular read-only fork-on-edit one.
Here is a tutorial: https://docs.repl.it/tutorials/05-pair-programming-using-mul...
But I can't imagine it's ever going to replace the IDE or the lowly text-editor, because there isn't a problem that needs solving. Most developers version control their configuration and move it between installations.
Codespaces, repl.it, Glitch, and friends are what the new generation of developers is being brought up on. They're coding on their iPads, Chromebooks, etc. and move between devices regularly. Browsers as a platform just make sense in this new world. These platforms may seem like "toys" now, but if we just look at the trend, it's hard to argue that even the most intensive applications are going to get serious browser-based competitors.
Relevant comment from Construct devs about putting their editor in the browser: https://news.ycombinator.com/item?id=24419266
Godot is experimenting with a browser-based editor too: https://godotengine.org/article/godot-editor-running-web-bro...
The AP CS course exercises and concepts don't require persistence of data, but this could really open up opportunities for students to create more advanced projects!
1. It would be great if you gave a shell level access to the teacher/paid accounts to manage shared REPLs. When there are 100s of shared URLs to deal with, the UI is very limited to search and find repls.
2. While I understand the need to simplify UI, it is not clear why "Python" REPL comes with a folder view to the left by "Python + PyGames" one doesn't. Similarly shell is only accessible in certain types of REPLs. I understand there some key combination to start shell, but only works some of the time.
3. I had a case of one REPL running an infinite loop - none of us could do anything to terminate it.
4. Once we wrote some code that generated a file. It took us several refresh/logout sequences to make it visible in the file manager - clear support for such use-cases would be helpful.
Like an account wide shell access? That's an interesting idea although not sure about the feasibility since every repl is it's own container.
One thing we've been toying with is a CLI-like tool that let's you manage your account. We can add account-wide grep and things like it there. You can access an early version here: https://repl.it/~/cli
>2. While I understand the need to simplify UI, it is not clear why "Python" REPL comes with a folder view to the left by "Python + PyGames" one doesn't. Similarly shell is only accessible in certain types of REPLs. I understand there some key combination to start shell, but only works some of the time.
This is great feedback and we're already starting to address it. The difference between different environments is annoying. I believe PyGame is the same environment so you might be talking about "Python with Turtle" which currently runs a different environment. We're getting close to addressing all this.
As for the shell it's accessible everywhere now, you can pull it up from the command-bar https://blog.repl.it/commandbar
>3. I had a case of one REPL running an infinite loop - none of us could do anything to terminate it.
That's surprising to hear because we do a lot of work to try to handle infinite loops and make it easy to terminate (try this for example https://repl.it/@amasad/loop-test). Do you remember exact steps or do you have a link to debug? You can always email me with bugs or feedback: amjad@repl.it
>4. Once we wrote some code that generated a file. It took us several refresh/logout sequences to make it visible in the file manager - clear support for such use-cases would be helpful.
It's actually quite common use-case to generate files and while incredibly tricky to make it work well I believe we've recently became better at this. Can you give it another shot? Again please email me with the repl if it doesn't work.
Thanks so much, feedback like this is always valuable. You'd be happy to know that a company-wide priority right now is quality, bugs, and reliability. By early next year we'll be much more polished.
How does this work business-wise? How does it make money?
Edit: Will Julia be supported in the future? This is not good... https://repl.it/@asemic/ConsiderateBelatedAccounting
For filtering/search queries, is the idea to use the prefix system to group related items together, and then run matches using that?
Yep, that's the idea. If you had a user with ID 1, one scheme to get all her info could be storing attributes in keys such as:
user:1:name
user:1:email
user:1:city
Then a prefix search for "user:1:" would get you the relevant keys for that user.But you could also go another way and drop a JSON-encoded object in a single key and work with it inside your app, since that might be the fastest way to get something off the ground!
https://www.alexdebrie.com/posts/dynamodb-single-table/
The post author actually wrote an entire book on data modeling with a single key/value table.
Keeping each database outside of the filesystem also gives us the flexibility to let people access the same database across multiple repls in the future.
I have lots of love for SQLite; early prototypes of Database were backed by it!
I've been figuring out how to run backups recently and grabbing a copy of the file isn't enough - you need to be sure there are no transactions going on, so you need to use the SQLite backup API or run VACUUM INTO a separate copy, which then doubles the amount of disk space you need.
Turns out I had to sign in to repl.it for the sidebar icon to appear and the code to work.
The documentation (and that error message) might need to reflect this? And/or should databases be available to all users (i.e., those who aren't signed in as well)?
---
Another issue: when going to https://repl.it/repls/HandyNiceBug (providential URL...) ;-) even when signed in, running the code shows the same `REPLIT_DB_URL does not exist` error. If you click the database sidebar icon and any of the 'Insert ->' buttons, then the env seems to update and the code runs successfully.
---
Hopefully useful nitpick: after clicking the 'Insert ->' button once in the db sidebar UI (in the url above), all of the 'Insert ->' buttons stop working.
Aaaand, if I try manually copying any of the code snippets to insert one myself, what's copied into the clipboard is not-the-best. Instead of copying `db["key"] = "value"` for instance, it copies it but with many extra new lines and some bits missing. Might be useful to have a copy-to-clipboard icon? Or do some DOM trickery to allow selection/copy&paste?
Cheers :-)
If you care to chat about this use-case and help us learn more please email me amjad@repl.it
Along with language and library docs, it’s usually one of the tabs I’ve got open when working on a project.
This is a great addition to the product. Ive been working on adding repl.it to our toolbox. Is there sone kind of plan that would support a grassroots group like ours? I specially like the ability to have classrooms as we are teaching more and more every week.
Even though I have all the JetBrains IDEs along with VS Code and Visual Studio, if I want to try out something quickly it's faster and easier to do it on Repl.it.
I've also been using Repl.it to post runnable code samples for some of my Stack Overflow answers.
I applied for a job there a couple of months ago and got to (virtually) meet amasad and several of the team members. It didn't turn out to be a fit, but they are great people making a great product and rapidly improving it.
For anyone looking, they are hiring, and yes, the jobs page is a Bash REPL! :-)
The only two issues that I ran into was not having the ability to run local DBs and Chrome reporting the web preview page for my replit as containing malware and not letting me load it. C9 basically just dropped you to a Linux shell where you could install and run your own copy of Mongo or Postgres. This seems like it would satisfy a lot of use cases and running your DB on an external provider isn't too tough anyway. The second issue is probably just par for the course when allowing user executed code and web content to be hosted from your servers although I never got hit with the same on Cloud9.
Current PHP support in repl.it pretty limit (Very few extensions are enabled, so you can't connect to real MySQL...). This won't be a problem if advanced users can use there own Dockerfile.
UI wise, I think it would be good if repl.it can adopt a VSCode-like interface and their keybindings. GitHub codespaces and some other cloud coding platform already have this.
Reliability of deployed services should be improved too. I tried use a website monitor to a repl.it with "Always On", but it will still be down several times a day. Each downtime is about 1~2 minutes.
They have enough lock in with the collaboration and sharing features that just using a different tool might be difficult.
This is plain old discrimination against disabled students. Don't do it.
- if the answer is yes, how many blind people are there in these schools?
- what was used in these schools before repl.it? did it help the blind?
- when schools used repl.it did it help all students more than the old system?
If there is a tool that helps 99% of students learn better, don't refuse to use the tool just because it can't help the 1%. I'm NOT saying to forget about the 1%. Also do everything you can to help the 1%. But the 99% shouldn't be artificially slowed down just so they don't get ahead of the 1%.
Sorry if that's controversial. Just seems ridiculous to me to prevent people from learning in whatever way is most effective to them.
I've used Repl.it ever since it became publicly available and I've used it to teach some classes and camps. As a college student, it's also a great environment to quickly open a coding scratchpad to do the occasional LeetCode problem and share my solution with others.
In the past, I've used cloud IDEs like Cloud9 and CodeAnywhere, mainly because I worked on the school computers in high school. But other than that, I don't know why a regular dev or even a college student might use this. Although one usecase may be easily-usable special-purpose programming environments for higher-level college courses that might otherwise require a ton of local setup. And the tight integration with Github might actually make sense for that setting.
For me "spinning up the entire environment" comes to clicking the icon of whatever IDE I decide to run for whatever task I am about to do. Is it such a big trouble?
I understand that it has good value for teaching to the point until students have to accomplish something more serious then some glorified "Hello World".
As for access from anywhere - I can access my development workstations remotely from anywhere with no problems (thanks to NoMAchine ond/or RDP) but since I also lug my super duper laptop anywhere I rarely need to enable this kind of access.
But then again I am a cloud luddite. I own all my computing/development resources (well I rent some remote dedicated servers for backup/standby purposes). Other people have different attitude which is fine. I just hate the idea of my stuff residing/being controlled by any other entity but myself.
I still use Repl.it if I want to try out something in a hurry, or especially if I want to post a code sample for one of my Stack Overflow answers.
Both of these options are great! It's not one vs. another.
I do not perceive those as mutually exclusive. Both are good but for a different things. It does seem to me however that anything not cloud/web based is becoming anathema in some circles.
It supports popular languages, works fully in a browser so nothing to install and you can co lab with multiple people.
They've just added some key-value db support and they call it the best place to build your app?
Unix+Vscode+asdf = I can pretty much use that stack to build anything, change my mind...
Edit: and it's just basic stuff that you're gonna use when you code professionally, so why not start with it anyway
aka hacking on an app, like people who read Hacker News might do.
a lot of people, including replit engineers + designers (like myself) :)
If people can build apps on Google Forms + IFTT/Zapier or on Bubble.is etc then an entire programming environment plus database seems like it should be enough to build things on too.
So many of these threads feel like a team of "social media workers" are manipulating it.
In most threads, HN hates centralization, loves privacy and loves personal control. In ad related threads, they love centralization, have no care for privacy and love giving up more control.
Did Repl.it acquire them or?
EDIT: My bad it seems to work elsewhere https://docs.repl.it/misc/database#how-do-i-share-a-database...
The performance of that REPL really bombed maybe a year ago now I've had to stop using it or recommending it
Even if it weren't so slow, there are some features I'd need before considering it for even quick/casual coding tasks:
Library loading, Paredit (or parinfer), Flexible eval (sexp, form, selection), Easy help/reference and function signature help (like Eldoc).
I can’t do that without the hosting component (which afaik isn’t shipped yet) and I won’t write code that locks me into a specific hosting choice, which is what this new “Database” feature seems to be.
Coding to an API of a company that might not be in business in five years isn’t wise, no matter how much you like that company.
It's almost certainly something that would need to be done in an SHTF, unscheduled event anyway, so best keep it to zero.
Next obvious step: providing a persistent PostgreSQL database where every customer can create tables, etc, up to a limit in storage or transactions to avoid misuse.
Dockerfiles in general
Terraform
once repl.it has these features (which I am sure it is working on), it will be super powerful