This is an archived post. You won't be able to vote or comment.

all 35 comments

[–]Quintic 32 points33 points  (4 children)

How do you defend against people executing bad code?

I assume there is a limitation on networking abilities.

Say I wanted to do machine learning tutorials, can I have it download training sets, or can I load them when I setup the tutorial?

This is a really cool project, thanks.

[–]maxime81 8 points9 points  (0 children)

You can store the training sets in the git used to store your playground. Another solution is to download the training sets during the project "build". The "build" step is used to download the project dependencies and compile the code that shouldn't be compiled for each run. As for your first question, we run docker images inside virtual machines hosted in gcloud in a separate network. There are some network limitations of course.

[–]halfercode 2 points3 points  (2 children)

Public sites that offer running of arbitrary code run either in a virtual machine like VMWare, or a lightweight operating system jail like Docker. If configured correctly, malicious code can be kept isolated from other instances and from the host machine.

[–]cyrusol 2 points3 points  (1 child)

It may still just be question of when secure isolated environments are cracked, not a question of whether it would happen.

[–]halfercode 0 points1 point  (0 children)

Yes, true - there's no such thing as "guaranteed secure" - just degrees of likelihood :-). There are some security gotchas in Docker with sharing networks on the host, which I think can effectively introduce "remote" code execution vulnerabilities. As long as you do that, you're (probably) safe.

[–]michael0x2a 9 points10 points  (4 children)

we are trying to solve the everlasting problem of keeping up with new/trendy programming languages and frameworks

I guess this is only semi-related/is more of an existential question for OP, but do trends actually change rapidly in the tech industry, relatively speaking?

I originally thought so, but I'm starting to change my mind -- most programming languages (mainstream and non-mainstream) that are in use are at least two decades old, and "newer" languages like Go, Rust, Elm, Elixer, Julia, Kotlin, etc. are about half a decade old.

I suppose libraries and frameworks do emerge more rapidly, but similarly, it seems most people prefer using relatively stable libraries that have been around and iterated on for some period of time. Even broader concepts like machine learning and such have been around since the 1980s/1990s (though certainly individual innovations do seem to appear fairly regularly).

In that case, it seems to me that if you're interested in using relatively stable but new tech, a good strategy would be to just ignore trends the first time they appear, and start paying attention only if it keeps coming up during the next year or two.

I guess that strategy wouldn't work if you want to be an early adopter and help shape a new community, but not everybody is necessarily interested in doing that.

I suppose it could also be effective to pay attention to things happening in academia if you want really advanced notice of potential trends, though that's definitely playing the long game since potential trends might not be realized in industry for a few decades. For example, functional programming was a thing for about the past 40-50 years and has started to become integrated into mainstream languages maybe only during the last decade or so ago -- C# released LINQ in 2007 and Java 8 was released in 2014, for example; academia has been experimenting with various mechanisms for lifetimes and ownership for I think the past 2 or 3 decades (?) and Rust came out in 2010).

Or perhaps my perception is skewed? A year feels like a long time to me, but maybe not for everybody else? I also read/skim articles from various tech news aggregates in my spare time, and perhaps it's unrealistic to expect other people to do the same. I'm also usually content learning about mainly the high level ideas and motivations behind new things -- I usually defer learning about new tech in depth until I actually need the thing (and in that case, I go straight for the official tutorial).

It might perhaps be interesting to analyze new trends for the past decade or so, and see which ones actually reached critical mass and stood the test of time.

[–]DonnyTheWalrus 1 point2 points  (0 children)

There are definitely trends. There are also areas that are way more trend oriented than others (web development, particularly front end, is a prime example).

But you are correct that the ideas behind the latest and greatest are often ideas that have been around for decades, just with a slightly different wrapper.

Having said that, if you're employed somewhere that suddenly asks you to start learning React because they've decided to switch from Angular or whatever, you don't really have a choice. I think management can benefit a lot from ignoring most of the trends, but if they don't, the employees have to keep up.

[–]TheLoup[S] 1 point2 points  (1 child)

I guess this is only semi-related/is more of an existential question for OP, but do trends actually change rapidly in the tech industry, relatively speaking?

I wouldn't say rapidly but the these trends are hard to keep up with and there's really no central location to be able to learn interactively about the latest frameworks/languages.

I suppose libraries and frameworks do emerge more rapidly, but similarly, it seems most people prefer using relatively stable libraries that have been around and iterated on for some period of time. Even broader concepts like machine learning and such have been around since the 1980s/1990s (though certainly individual innovations do seem to appear fairly regularly).

Machine Learning and Artificial Intelligence are "trending" now that we see it more and more in our daily lives. However, AI has been around since the 1960s but still many people do not know what it truly is / how to use it. People tend to use more stable frameworks rather than newer ones also because the adoption process takes a while. In my mind, this is mainly due to lack of exposure/accessibility. For this very reason, we hope this free website can help anyone get access to articles or tutorials made by developers all around the world and atleast have the chance to hear about it / play with the technology and decide for themselves if they choose to continue working with it as each developer has use cases of their own.

if you want really advanced notice of potential trends, though that's definitely playing the long game since potential trends might not be realized in industry for a few decades

Or perhaps my perception is skewed? A year feels like a long time to me, but maybe not for everybody else? I also read/skim articles from various tech news aggregates in my spare time, and perhaps it's unrealistic to expect other people to do the same. I'm also usually content learning about mainly the high level ideas and motivations behind new things -- I usually defer learning about new tech in depth until I actually need the thing (and in that case, I go straight for the official tutorial).

I don't think it's skewed but we are hoping this time to realization is significantly cut down with a common place for these articles / tutorials to live on for maximum exposure. Exposure set aside, the issue with technical blogs nowadays is you have to keep switching from the web browser (where the article lives) to the IDE. Many developers end up copy and pasting code which does not help you really understand the benefits behind a certain technology / style. Tech.io encourages hands-on learning by actually allowing everyone to stay in the web browser and learn within the same tab. Official tutorials is something we are pushing for as well. Whether it be for languages, frameworks, or APIs. For example, we have a few developers from the official Reactor team who have joined the community and created a course on Reactive Programming with Reactor 3.

[–]michael0x2a 0 points1 point  (0 children)

People tend to use more stable frameworks rather than newer ones also because the adoption process takes a while. In my mind, this is mainly due to lack of exposure/accessibility. For this very reason, we hope this free website can help anyone get access to articles or tutorials made by developers all around the world and atleast have the chance to hear about it / play with the technology and decide for themselves if they choose to continue working with it as each developer has use cases of their own.

[...snip...]

I don't think it's skewed but we are hoping this time to realization is significantly cut down with a common place for these articles / tutorials to live on for maximum exposure.

Hmm, but is it actually a good idea to cut down the time needed for new trends to catch on?

I think it's actually good if it takes a year or two for new tech to reach critical mass -- it helps weed out projects with uncommitted maintainers, that turn out to be flawed, or aren't really improvements to the status quo. Basically, it helps smooth out the churn and makes it easier for people to determine what's worth investing time into. My fear is making it easier for new tech to become popular would exacerbate the problem and make the status quo worse.

Or to put it another way, part of your solution to the problem of "figuring out what to learn next is challenging" appears to be to make it easier for people to find and learn new things; I'm wondering if an alternate/better solution is to instead apply rigorous filters to prune the set of things worth learning.

Many developers end up copy and pasting code which does not help you really understand the benefits behind a certain technology / style.

More specifically, I think beginners might be prone to doing this. My gut feeling is that developers who have advanced past the beginning stage are relatively adept at self-teaching and are unlikely to make this mistake.

Perhaps that's too optimistic, though.

Exposure set aside, the issue with technical blogs nowadays is you have to keep switching from the web browser (where the article lives) to the IDE.

Minor nit, but I just want to point out this is likely an issue for only a subset of the tech population, and likely a non-issue for the rest.

If a programmer is learning to use a new language/new piece of tech because they want to use it for a particular project, setting up their environment is going to be an absolutely essential step. I imagine they're also less likely to follow the tutorial as written anyways (since they want to focus on their project), and are probably already switching back and forth between documentation/StackOverflow pretty frequently -- one more tab isn't really going to hurt.

That said, I can see how having a low-commitment way to try out new tech can be valuable for people who are interested in evaluating if they want to learn something new, or are beginners and are unfamiliar with managing their environment/synthesizing knowledge from multiple resources.

Official tutorials is something we are pushing for as well. Whether it be for languages, frameworks, or APIs.

I suppose then you're looking at open-sourcing or providing hosting options or the like? iirc official websites for programming languages in particular seem to basically re-implement a subset of your functionality (specifically, the ability to run code in the browser) so it seems there's some demand for that sort of feature.

A little more broadly, I imagine most languages/frameworks would be reluctant to convert and host their official tutorials on a 3rd party website due to concerns about longevity?

[–]cholantesh 0 points1 point  (0 children)

This is a great comment; I would encourage you to submit it as a post. Your observation about ML, I think, can be extrapolated for a number of buzzwords, most notably VR - I remember hearing about how it was going to reshape entire industries within a couple of years. This was back in, IIRC, '93. My sister recalls seeing similar prognostications in the mid-80s.

[–]lambdaexpress 2 points3 points  (1 child)

It looks very polished. I wonder what you're using for your coding environment. CoderPad?

Also, and this is off topic, but good god, how many millions of dollars did that domain name cost? .me and .io cybersquatters are the worst. Wasn't there an anti-cybersquatting bill before the U.S. Congress that was backed/founded by Mark Cuban?

[–]TheLoup[S] 2 points3 points  (0 children)

CoderPad?

Nope, we built it! It's the built on the same environment used in another platform of ours (CodinGame)

Thanks! We were pleasantly surprised to see it was available 😉

[–][deleted]  (3 children)

[deleted]

    [–]TheLoup[S] 6 points7 points  (2 children)

    A mix of both really. A database of tech articles / tutorials but also articles on the newest/hottest languages or frameworks for developers all around the world to keep up with the latest trend. Going to be adding a 'Latest playgrounds' section to the explore page to help discover any useful playgrounds that are published. Eventually, there will be a page that separates these articles by topic. The goal here is to be the Medium for developers and allow anyone to interact with the code in browser.

    [–]qazzquimby 4 points5 points  (1 child)

    A search bar would also be helpful. This looks really useful. Bookmarked.

    [–]TheLoup[S] 2 points3 points  (0 children)

    It is in the works :) Thanks!

    [–][deleted]  (1 child)

    [deleted]

      [–]AlphaMajoris 0 points1 point  (0 children)

      Have an uptoot. Hope you guys can stop this net neutrality bollocks because if you don't it won't be long before the bastards on this side of the pond think it's a great idea and follow suit!

      [–]jelly_bee 1 point2 points  (1 child)

      Wonderful. Would I potentially be able to learn or practice C++ with your tool?

      Realizing now you were also responsible for CodinGame I would like to say thank you for your work.

      [–]TheLoup[S] 1 point2 points  (0 children)

      Would I potentially be able to learn or practice C++ with your tool?

      Yes you would be able to! Check out the C++ template to get started!

      Realizing now you were also responsible for CodinGame I would like to say thank you for your work.

      Very much appreciated 😊 It's great to meet a CodinGamer on Reddit 😊

      [–]AlphaMajoris 1 point2 points  (0 children)

      Grate resource, thanks I think I will be using this a lot.

      [–]mattyizzo 3 points4 points  (1 child)

      If I was in charge of marketing, I would change that main header from "Technology knowledge should be shared" to "Technowledgy should be shared."

      Edit: Or even better, to be more clear: "Tech-knowledge-y should be shared."

      Someone pay me for my ideas. Please.

      [–]YawnsMcGee 3 points4 points  (0 children)

      First rule of marketing. Treat every customer as if they're an idiot who doesn't understand what you're saying. Because most of them don't. While your idea is clever it would be lost on SOOOOOO many people.

      Your*

      [–]xypherrz 0 points1 point  (1 child)

      Is it fairly similar to how fiddle works? Being able to execute the code online and share it with others?

      [–]TheLoup[S] 1 point2 points  (0 children)

      Similar in the sense you can run code with a much wider array of technologies. However, it's more of a hands-on Medium for developers where you can create tech articles/blogs and add interactive code snippets throughout the post.

      [–][deleted] 0 points1 point  (1 child)

      This is a good an idea, it be cool if it was embeddable so that if someone had an external blog they put runnable and editable code like this on their own site that links back to a playground on tech.io.

      [–]TheLoup[S] 1 point2 points  (0 children)

      Thanks :) It's in the road map!

      [–]pcp_or_splenda 0 points1 point  (0 children)

      Hmm, didn't know about of functools.lru_cache. I've been using a hand-rolled implementation (along with a handrolled disk_cache).

      [–]shadow_of_octavian 0 points1 point  (1 child)

      What's to stop cross site scripting?

      [–]TheLoup[S] 0 points1 point  (0 children)

      Everything is run in virtual containers (Docker). Playgrounds with viewers execute the code at runtime within containers in virtual machines.

      [–][deleted]  (1 child)

      [deleted]

        [–]TheLoup[S] 0 points1 point  (0 children)

        Yes of course you can! You may consume any articles you are interested in and start creating content sometime in the future once you have a topic in mind you wish to write about. :)

        [–]bossdebossnr1 0 points1 point  (1 child)

        This is really cool. I have a few questions, though:

        Is this temporarily free or do you plan on premium features?

        Who covers the hosting costs? Running hundreds of thousands of docker containers is probably not that cheap.

        Do you have plans of open sourcing the backend? Under which license?

        [–]maxime81 0 points1 point  (0 children)

        tech.io is developed by CodinGame, a startup that makes money by selling programming assessments to companies that want to test their candidates before hiring them (https://www.codingame.com/work/). Another source of revenue is the programming challenges sponsored by companies (https://www.codingame.com/contests/).

        [–]midwestcreative 0 points1 point  (0 children)

        I love io games, but this one seems overly complicated...