Code Monkey home page Code Monkey logo

slingcode's Introduction

Slingcode is a personal computing platform in a single html file.

  • You can make, run, and share web apps with it.
  • You don't need any complicated tools to use it, just a web browser.
  • You don't need a server, hosting, or an SSL certificate to run the web apps.
  • You can put Slingcode on a web site, run it from a USB stick, laptop, or phone, and it doesn't need an internet connection to work.
  • You can "add to home screen" in your phone's browser to easily access your library of programs on the go.
  • You can share apps peer-to-peer over WebTorrent.
  • It's private. You only share what you choose.

Or right-click on slingcode.html and "save link as" to download the HTML file onto your own computer.

Video

Slingcode video

You can find more screencasts here.

About

There is no server component for Slingcode. The apps are stored in the web browser's local storage, completely offline. You can move apps between browsers by using the peer-to-peer send and receive feature. You can also export an app as a zip file and import it into another Slingcode instance, or upload your app onto regular web hosting to deploy it online.

Your computer. Your software. Your data.

Nostalgia

Remember when computers were fun? When a kid could type out a BASIC listing from a magazine and make magic with light and sound. When your computer belonged to you and you could understand the software running on it.

Apple IIe

I'm trying to recreate that magic with Slingcode. To get rid of all the tooling and dependencies and hosting problems, and make coding fun again. To help you bridge the gap between your idea and running code.

I built it so I can teach my kids to code without all the complex setup you need these days. I'm trying to re-create the simple environment I had when I learned to code with my Mum on an Apple IIe back in the 80s.

Who

Hi, 👋 I'm Chris and I made this.

You can find me online here:

Hack & contribute

Slingcode is built with ClojureScript. To get started contributing to Slingcode itself, check out the codebase and run make. You'll need Node and Java installed.

Inspiration

...situated software. This is software designed in and for a particular social situation or context. ...a "small pieces, loosely joined" way of making software... Situated software isn't a technological strategy so much as an attitude about closeness of fit between software and its group of users, and a refusal to embrace scale, generality or completeness as unqualified virtues.

-- Clay Shirky, Situated Software

...in the original visions of many personal computing pioneers... the PC was intended as personal property – the owner would have total control (and understanding) of the software running on the PC, including the ability to copy bits on the PC at will. Software complexity, Internet connectivity, and unresolved incentive mismatches between software publishers and users (PC owners) have substantially eroded the reality of the personal computer as personal property.

-- Nick Szabo, Trusted Third Parties are Security Holes

The trick is to fix the problem you have, rather than the problem you want.

-- Bram Cohen

Kakehashi had no musical training, and wanted musical instruments to be accessible for professionals as well as amateurs like himself. He also wanted them to be inexpensive, intuitive, small, and simple.

-- Wikipedia, Ikutaro Kakehashi

...alternative to the MVP: Simple, Lovable and Complete (SLC)... A skateboard is a SLC product. It’s faster than walking, it’s simple, many people love it, and it’s a complete product that doesn’t need additions to be fun or practical.

-- Jason Cohen, Make it SLC instead

Credits

Thanks to Crispin and Joel for testing and giving brilliant feedback on early versions.

Some technology and libraries that Slingcode uses:

  • ClojureScript and Clojure.
  • CodeMirror for the web based code editor component.
  • React + Reagent for the rendering of the user interface.
  • Jszip for wrangling zip files.
  • WebTorrent for peer-to-peer file transfer.
  • Niceware for turning hex into phrases.
  • bugout for peer-to-peer communication (I wrote this library).
  • Tweetnacl.js for cryptography.
  • bs58 for managing base 58 addresses.
  • localforage for browser side storage.
  • zxing for QR code scanning.
  • mime-types for managing content types.
  • url-search-params for managing query strings.
  • shadow-cljs for making the compilation phase simple.
  • npm for managing dependencies.
  • fontawesome for icons.

Thanks!

Copyright

Slingcode is Copyright Chris McCormick, 2020.

Distributed under the MIT software license. See license.txt for details.

slingcode's People

Contributors

chr15m avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slingcode's Issues

Version checker

Fetch an HTML fragment and display the message contained in it.

Settings page

  • Check for a new version of Slingcode #23
  • Configure webtorrent signaling servers. #3
  • Completely reset app.

Fix history management

  • Pressing "back" from app editing should go back to app list.
  • Pressing "back" from other screens should go back to app list.
  • After "receive" parameter is consumed remove the search query.

Warn user if unable to open windows

It looks like we can't open this app in a new window.
Please enable pop-ups for this page, and try disabing your ad blocker.
[Slingcode doesn't show ads and it never will.]

Debug build to to help fix Safari issues

Create debug build called slingcode-debug.html with the following injected to load the eruda debugger. Can then point people towards it to get more info.

<script>
    ;(function () {
      var src = '//cdn.jsdelivr.net/npm/eruda';
      if (!/eruda=true/.test(window.location) && localStorage.getItem('active-eruda') != 'true') return;
      document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
      document.write('<scr' + 'ipt>eruda.init();</scr' + 'ipt>');
    })();
</script>

Send/receive bugs.

  • The app "Testing refs" won't initiate send mode.
  • Other apps only transfer first file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.