├── .gitignore ├── archetypes ├── .gitkeep └── default.md ├── config.toml ├── content ├── .gitkeep ├── _index.md ├── blog │ ├── all.md │ ├── asset-upload-oembed.md │ ├── heartbleed.md │ ├── live-reloading-css.md │ ├── my-zen-mode.md │ ├── new-processors.md │ ├── pro-processors.md │ ├── protection.md │ ├── security-limited-output.md │ ├── ssl-for-all.md │ ├── ssl.md │ ├── the-return-and-the-refactor.md │ ├── twdtw-1-sass-tern-security.md │ ├── twdtw-10-jshint-linehighlight-pro.md │ ├── twdtw-2.md │ ├── twdtw-3-codemirror-settings.md │ ├── twdtw-4-tern-pro-features.md │ ├── twdtw-5-settings-dropbox-heartbleed.md │ ├── twdtw-6-syncing-pro-accounts.md │ ├── twdtw-7-processors-search.md │ ├── twdtw-8-svg-settings.md │ ├── twdtw-9-tweaks-maintenance.md │ ├── urls.md │ └── welcome.md ├── help │ ├── 2-second-setup.md │ ├── _index.md │ ├── about.md │ ├── adding-custom-libraries.md │ ├── adding-libraries.md │ ├── adding-processors.md │ ├── ajax-requests.md │ ├── api.md │ ├── asset-uploading.md │ ├── change-your-password.md │ ├── clearing-the-console.md │ ├── customise-editor-settings.md │ ├── debugging-preferences.md │ ├── defaults-in-bins.md │ ├── delete-a-bin.md │ ├── design-principles.md │ ├── disabling-all-keyboard-shortcuts.md │ ├── dropbox.md │ ├── embed-doesnt-load.md │ ├── experimental-features.md │ ├── export-gist.md │ ├── faq.md │ ├── features.md │ ├── free-preview-expired.md │ ├── getting-started.md │ ├── github-username.md │ ├── how-can-i-embed-jsbin.md │ ├── import-gists.md │ ├── keyboard-shortcuts.md │ ├── linking-bins.md │ ├── object-doesnt-work.md │ ├── populating-bins.md │ ├── private-bins.md │ ├── pro.md │ ├── pronounceable-urls.md │ ├── running-a-local-copy-of-jsbin.md │ ├── sandbox-mode.md │ ├── sass-import.md │ ├── session-secret.md │ ├── share-latest-bin.md │ ├── ssl-opt-in.md │ ├── ssl.md │ ├── stickers.md │ ├── test-code-on-other-devices.md │ ├── toggle-line-numbers.md │ ├── transfer-a-bin.md │ ├── vanity-urls.md │ ├── versions.md │ ├── vision.md │ ├── what-is-jsbin.md │ ├── when-do-revisions-change.md │ └── why-register.md ├── legals │ ├── _data.json │ ├── _index.md │ └── privacy.md └── writing-a-post.md ├── data ├── .gitkeep ├── authors.json └── categories.json ├── docsearch-config.json ├── layouts ├── .gitkeep ├── 404.html ├── _default │ ├── baseof.html │ ├── feed.json │ ├── list.html │ └── single.html ├── blog │ ├── feed.xml │ └── list.html ├── help │ └── list.html ├── index.html ├── legals │ ├── list.html │ └── single.html └── partials │ └── author.html ├── package.json └── static ├── .gitkeep ├── _headers ├── css ├── github.css ├── help.css ├── highlight.css └── syntax.css ├── images ├── api-key.png ├── avatars │ ├── danny.jpg │ ├── fabien.jpg │ ├── giulia.jpg │ └── remy.jpg ├── bin-info-expanded.png ├── blog │ ├── auto-disabled.png │ ├── dave-loves-you.jpg │ ├── early-v5.png │ ├── loop-protect.gif │ ├── new-share.png │ ├── oembed-pr.png │ ├── processors.png │ ├── ssl-for-all.png │ └── v1.jpg ├── change-your-password.png ├── chrome-revoke.png ├── comment.svg ├── debugging-prefs-devtools.png ├── default-prefs.png ├── deleted-bin.png ├── disable-cmd-n.png ├── do-not-own-bin.png ├── embed-small.gif ├── enable-experiments.png ├── export-as-gist.png ├── export-complete.png ├── favicon.png ├── favicon.svg ├── flat-design.png ├── free-preview-expired.png ├── jsbin-32.png ├── jsbin-start.png ├── jsbin-zen-mode-1.png ├── layout-selection1.png ├── libraries.png ├── line-numbers-pref.png ├── line-numbers.gif ├── panel-configure.gif ├── panel-options.png ├── private-bins.gif ├── private-menu.png ├── rss_alt.svg ├── save-as-template.png ├── share-menu1.png ├── ssl-cert.png ├── ssl.png ├── stickers.jpg ├── transfer.png ├── twdtw │ ├── 1 │ │ ├── login.png │ │ ├── sass.png │ │ └── tern.gif │ ├── 2 │ │ ├── fold.png │ │ └── hack.jpg │ ├── 3 │ │ ├── cm4.gif │ │ ├── dance.gif │ │ └── settings.png │ ├── 5 │ │ └── preferences.png │ ├── 6 │ │ └── baby.png │ ├── 7 │ │ ├── scss.gif │ │ ├── search.png │ │ └── tv-brain-melt.jpg │ ├── 8 │ │ └── settings.png │ ├── 10 │ │ ├── jshint-prefs.png │ │ └── line-highlight.png │ └── 11 │ │ ├── linting.png │ │ └── ssl.png └── url-example.png └── js ├── back-button.js ├── blog.js ├── highlight.pack.js ├── html5shiv.min.js ├── keyboard.js ├── min.js ├── moment.js ├── notify.js ├── permalink.js ├── search.js └── xhr.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store 3 | public 4 | -------------------------------------------------------------------------------- /archetypes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsbin/learn/81fddfd814ba1cb257811f88c4ff51094174c7bc/archetypes/.gitkeep -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "/" 2 | languageCode = "en-gb" 3 | title = "JS Bin help" 4 | googleAnalytics = "UA-1656750-13" 5 | pygmentsCodeFences = true 6 | enableGitInfo = true 7 | pygmentsStyle = "vs" 8 | 9 | [outputs] 10 | home = ["RSS", "HTML"] 11 | page = ["HTML", "JSON"] 12 | 13 | [outputFormats] 14 | [outputFormats.RSS] 15 | mediatype = "application/rss" 16 | baseName = "feed" 17 | 18 | [outputFormats.JSON] 19 | mediatype = "application/json" 20 | baseName = "all" 21 | 22 | [params] 23 | helpRoot = "https://help.jsbin.com/" 24 | -------------------------------------------------------------------------------- /content/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsbin/learn/81fddfd814ba1cb257811f88c4ff51094174c7bc/content/.gitkeep -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | Nothing to see 2 | -------------------------------------------------------------------------------- /content/blog/all.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: feed 3 | outputs: 4 | - json 5 | --- 6 | -------------------------------------------------------------------------------- /content/blog/asset-upload-oembed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Asset uploads & oEmbed 3 | author: remy 4 | date: '2015-02-04' 5 | published: true 6 | --- 7 | 8 | 9 | We said we'd be working on more pro features, and we are. Also, since we're open source, this awesome stuff happens from time to time: oEmbed as a community submitted feature. 10 | 11 |  12 | 13 | ## Asset uploads 14 | 15 | As of today, I've released the asset upload feature to **all existing Pro users**. Simply drag & drop your assets into JS Bin and it'll upload instantly and insert an image tag with your newly uploaded asset. 16 | 17 | Each pro user can host up to 1GB of assets - so that gives you a bit of freedom to sling up your images as quickly as you create bins. 18 | 19 | To manage your assets, head over to the [assets](/account/assets) account page and you can delete files and check your usage. 20 | 21 | So what are you waiting for? Support JS Bin's continued development and [go pro today](/upgrade). 22 | 23 | You can see a demo of upload in action below: 24 | 25 |
26 | 27 | 28 | ## oEmbed 29 | 30 | Thanks to an awesome (and relatively simple) [pull request](https://github.com/jsbin/jsbin/pull/1984), JS Bin now also supports oEmbed for rich content - allowing you to oEmbed the *embed* view of your bin. 31 | 32 | A simple call to http://jsbin.com/oembed?url=http://jsbin.com/fajac/3 (the Dave's demo page) yeilds the following JSON: 33 | 34 | ```json 35 | { 36 | "type": "rich", 37 | "version": "1.0", 38 | "title": "JS Bin", 39 | "url": "http://jsbin.com/fajac/3/edit?html,output", 40 | "width": 640, 41 | "height": 480, 42 | "html": "" 43 | } 44 | ``` 45 | 46 | And just like that, JS Bin links posted in [Gitter](https://gitter.im/) (the awesome chat client) pulls in a live embeded bin. 47 | -------------------------------------------------------------------------------- /content/blog/heartbleed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Heartbleed and JS Bin 3 | author: remy 4 | date: '2014-04-10' 5 | published: true 6 | --- 7 | 8 | 9 | If you've not heard about [Heartbleed](http://heartbleed.com), means that **potentially** all your passwords can be compromised. This isn't a bug that's specific to JS Bin, it affects most sign in forms that go over HTTPS. Yes, it's **that** scary. 10 | 11 | Note that if you registered with JS Bin after 9-April 2014 10pm UK time, then you won't be affected, but I still strongly recommend you familiar yourself with the issue. 12 | 13 | Here's what *we've* done: 14 | 15 | - We've patched all our versions of OpenSSL 16 | - We've re-issued our SSL certificate for our login and register 17 | - We're recommending that you [change your password](/help/change-your-password) 18 | 19 | We can't control when the old SSL certificate gets revoked (serial number 842265), but we've already seen people on the new certificate (serial number 1169237). You can check you have the updated certificate by clicking on the "padlock", and digging into the certificate details, where you should see the issue "Not Valid Before" date, which will be 8 April 2014: 20 | 21 |  22 | 23 | Note that if you use Chrome, you'll also need to ensure your browser checks for revoked SSL certificate by default: 24 | 25 |  26 | 27 | And importantly, what **you'll** need to (or I'm suggesting you) do: 28 | 29 | * Change your password 30 | * Log out and log back in again (to clear your session based on the old SSL certificate) 31 | * Read up and share what you learn about Heartbleed 32 | 33 | We could (technically) reset everyone's password, but it's not that simple for us to code up, and really the complexity is in the user flow, and getting it right. So I decided against it in the end. 34 | 35 | Some good resources I've found are: 36 | 37 | * [Everything you need to know about Heartbleed](http://www.troyhunt.com/2014/04/everything-you-need-to-know-about.html) - very good if you're at all technical and need to get a grip on the issues 38 | * [Big web sites affected](http://mashable.com/2014/04/09/heartbleed-bug-websites-affected/) - I found this pretty useful for what to tell non-technical people I know -------------------------------------------------------------------------------- /content/blog/live-reloading-css.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Live reloading CSS 3 | author: remy 4 | date: '2015-07-04' 5 | published: true 6 | --- 7 | 8 | 9 | 10 | Due to a few recent optimisations in the JS Bin rendering logic, we now have live reloading CSS in the editor. 11 | 12 | This means that when you change any content in the CSS panel, as always, the output is updated in real time, except now *only* the CSS will change. 13 | 14 | So any JavaScript or existing DOM state will remain in it's current state and your styles will change. This also applies to any of the CSS processors, such as Sass, SCSS, Myth, etc. 15 | 16 | You can see a short demo below - note that the JavaScript canvas animation continues to run and the counter increases: 17 | 18 | 19 | 20 | ## Technical behind the scenes 21 | 22 | This change is due to a small optimisation I made to JS Bin's rendering. We use [promises](http://www.html5rocks.com/en/tutorials/es6/promises/) under the hood, but before we would always create a new promise for all the panels when *any* panel changed. 23 | 24 | [Now the code](https://github.com/jsbin/jsbin/blob/4644d8518868e4f8bcf330eafeeb1daa535c8ca3/public/js/render/render.js#L35-L52) will *only* re-render the promise of the focused panel. Since you can call the `.then` on a fulfilled promise over and over, it allows me to re-use the previously rendered promises. 25 | 26 | The two benefits are that it was easy to add live reloading of CSS, but also live rendering is also now faster, as there's less work for your browser to do. 27 | 28 | -------------------------------------------------------------------------------- /content/blog/my-zen-mode.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How I run JS Bin in Zen mode! 3 | author: fabien 4 | date: '2014-05-09' 5 | published: true 6 | --- 7 | 8 | 9 | Since using JS Bin, I've discovered a number of ways to customise it to my liking, and I wanted to share how I'm running in *Zen mode*! 10 | 11 |  12 | 13 | ## Vim mode 14 | 15 | ```javascript 16 | jsbin.settings.addons.vim = true; 17 | ``` 18 | 19 | Since we upgraded CodeMirror to version 4, we've added a lot of [addons](/blog/twdtw-2#userenabledaddons) for 20 | CodeMirror, including Vim mode, which you can turn on by running the above command 21 | in the console. Just note that not all of the Vim functionality comes with the plugin, 22 | visual block mode, for example, doesn't work. But a lot of the Ex commands are there, 23 | including search and replace, which is great, as JS Bin doesn't support this in normal mode. 24 | 25 | ## Custom theme 26 | 27 | ```javascript 28 | jsbin.settings.editor.theme = 'solarized light'; 29 | ``` 30 | 31 | Solarized is a beautiful theme that I use everywhere (Terminal and text editors). We support 32 | both light and dark solarized themes, I use the light theme in the browser. 33 | 34 | ## Default template 35 | 36 | Default templates in JS Bin really make it your own, you can add default content 37 | to all three of the input panels, so if you always use jQuery, you can have JS Bin 38 | always include it for you. [My default template](http://jsbin.com/allouis-template/1/edit?html,css,js) 39 | is pretty simple. Our help articles have a [post on default templates](/help/defaults-in-bins). 40 | 41 | ### HTML 42 | 43 | My default html panel just adds two metatags for webapps, and a custom title. 44 | 45 | ```html 46 | 47 | 48 | 49 | 50 | 51 | 52 |25 | 26 | 27 | 28 | ## What does this mean? 29 | 30 | It means there's going to be a new, streamlined, modern JS Bin available soon. Just as importantly, _all_ of the legacy code will be dispatched and the new code based entirely on modern development practises. 31 | 32 | The biggest driver for the refactor is the constant downtime that JS Bin suffers for various reasons. This new, v5, version will run from entirely static content served over a CDN. It will have _minimal_ reliance on online servers so the webapp aims to be fully offline capable. 33 | 34 | There will be a number of features that will be dropped, and there will be some functionality yet to be written (for instance, mobile support is great on current JS Bin, but terrible in v5). 35 | 36 | The aim: back to simple. Simple and fast is what JS Bin was good at. Now I want to add reliable to those principles. 37 | 38 | ## Can you try it out? 39 | 40 | Why yes, you can! And, if you don't like it, you can always "eject" back to JS Bin v4 (from the palette menu). 41 | 42 | 43 | 44 | Keep in mind that v5 is still in alpha, and there _will_ be some undocumented parts, some broken parts, some missing parts. If you feel there's something important or unobvious that's going wrong, there's a dedicated support link in v5 that you file an issue. 45 | 46 | Thanks for reading, and I'll be in touch again with updates the progress of v5 development. 47 | -------------------------------------------------------------------------------- /content/blog/twdtw-1-sass-tern-security.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #1: Sass, Tern, Security' 3 | author: remy 4 | date: '2014-03-07' 5 | published: true 6 | --- 7 | 8 | 9 | This is the first installment of "things we did this week". Where we'll share some of the features or changes or fixes we've been working on. Sometimes it will be small features, sometimes BIG exciting features and other times it'll be progress to much longer term goals. 10 | 11 | We're working on local branches of JS Bin with a few cool features. 12 | 13 | ## Sass 14 | 15 | There's been [tons of demand](https://github.com/jsbin/jsbin/issues/176) for Sass support, but until we could pull it off on the client side, I wasn't sure it would land. Now thanks to [sass.js](https://github.com/medialize/sass.js/) and a few hours of hacking, JS Bin has a development branch with Sass (or more specifically SCSS) in a PR [feature/scss](https://github.com/jsbin/jsbin/pull/1229) (see [Rodney Rehm's post](http://blog.rodneyrehm.de/archives/33-libsass.js-An-Emscripten-Experiment.html) on porting to sass.js). 16 | 17 | It does mean that Bourbon, Compass, et al aren't supported, but it's still a good step forward (and the changes also mean it's now easy to add server-based support for Sass - which will come soon). 18 | 19 |  20 | 21 | (Demo pitched from [red-team-design.com](http://red-team-design.com/simple-scss-spinner-animation/)) 22 | 23 | ## Tern 24 | 25 | I'm proud to say that my company, [Left Logic](http://leftlogic.com) was the first to back big behind the Tern project last year. And this week [Giulia](http://github.com/electricg) has been adding support to JS Bin. 26 | 27 | It'll be a user preference to enable, and we're working on dynamically loading definition files based on the contents of your bin (i.e. if you have jQuery, it'll automatically load the jQuery definition file for you). 28 | 29 |  30 | 31 | ## Security 32 | 33 | Finally, [Fabien](http://github.com/allouis) has been doing lots of behind the scenes work that's starting to land in production behind feature flags (which allows us to test new features and letting us control how many people see them). 34 | 35 | Specifically we've reinstated SSL support for login and register. We tried to apply SSL to all of JS Bin some many months back, but because the iframe that your output is rendered in is under https, it would block *all* assets in the iframe pointing to http - this would usually be included libraries, images, CSS, etc, etc. So we had to abandon it, and return with SSL for login and register: 36 | 37 |  38 | 39 | SSL is likely to land next week, and this will also open the door to [editor settings and preferences](https://github.com/jsbin/jsbin/pull/1224) - without having to open devtools to have on the console! 40 | 41 | ## Totally aside 42 | 43 | How seriously sweet is this! 44 | 45 | 46 | 47 | And yes, I have actually asked myself: how could I get JS Bin to control a drone...insane, I completely appreciate. -------------------------------------------------------------------------------- /content/blog/twdtw-10-jshint-linehighlight-pro.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #10: JSHint, line highlighting and update on pro' 3 | author: remy 4 | date: '2014-06-20' 5 | published: true 6 | --- 7 | 8 | 9 | Today we pushed a fairly hefty release containing a few PRs to update libraries, but also a few extra features for all our users. 10 | 11 | ## JSHint 12 | 13 | We've finally got around to updating JSHint (whilst still providing support to IE8 by serving an old version for them). More importantly, for those of you who have [registered](http://jsbin.com/register), you can now configure your default JSHint [preferences](http://jsbin.com/account/preferences): 14 | 15 |  16 | 17 | ## Line highlighting 18 | 19 | The original precursor to JS Bin had line highlighting and sharing (from back in 2007), and it's a great feature that we use all the time in Github, so I went ahead and implemented support in JS Bin. You need line numbers enabled (either from preferences, or the shortcut double click on the panel title, like "HTML"). 20 | 21 | Now when you click in the gutter, it'll highlight that line for sharing. You can also shift+click to select a range: 22 | 23 |  24 | 25 | ## An update on Pro 26 | 27 | Pro is all about making JS Bin sustainable so we can continue to keep JS Bin free and for education and making JS Bin the best tool it can be for teaching. 28 | 29 | Tweets like this is why we need you to go pro: 30 | 31 | > Best @CodeClub ever! @js_bin you are a life saver... – [Oli Evans on Twitter](https://twitter.com/olizilla/status/480011434513162240) 32 | 33 | We've been working hard towards releasing Pro which will initially include: vanity URLs, read/write API access, private bins, dropbox sync, beta access to features and first line support. 34 | 35 | So tell your friends, your co-workers, help support JS Bin and look out for the release coming very soon. -------------------------------------------------------------------------------- /content/blog/twdtw-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #2: Addons, Collaboration, Hardware' 3 | author: remy 4 | date: '2014-03-14' 5 | published: true 6 | --- 7 | 8 | 9 | This week we released more experiments, discovered one experiment going wrong (sad face), little two day retreat playing with arduinos and where I'll be about giving away some sweet [JS Bin stickers](http://www.flickr.com/photos/remysharp/9576228318/) and maybe even a [t-shirt](http://www.flickr.com/photos/remysharp/10805438263/) or two. 10 | 11 | ## User enabled addons 12 | 13 | Code folding, matched brackets, trailing white spaces, and more. We all have our favourite features in the editors we love, and CodeMirror comes with a great deal of addons that historically I've been careful about enabling (since it adds to the footprint of the jsbin.js script request). 14 | 15 | I've releases a dev feature (i.e. there's no interface, [yet](https://github.com/jsbin/jsbin/pull/1224)) that allows you to enable to lazy-load in a slew of addons from your browser console. For example, in the console if you run the following then refresh: 16 | 17 | ```js 18 | jsbin.settings.addons.fold = true; 19 | ``` 20 | 21 | Gets you code folding: 22 | 23 |  24 | 25 | Or maybe you're a Vim beast, easy: 26 | 27 | ```js 28 | jsbin.settings.addons.vim = true; 29 | ``` 30 | 31 | [Addons will be documented](/help/addons) soon, but there are details in the pull request: [#1273](https://github.com/jsbin/jsbin/pull/1273). 32 | 33 | ## First pass at collaboration 34 | 35 | [Giulia](http://github.com/electricg) took [together.js](http://togetherjs.com) and implemented under an experimental flag. 36 | 37 | Sadly, and due to no fault of Giulia's, using together.js just doesn't do the job properly. The way it works is this: whenever anyone makes a change, all of the text is sent and replaced in the collaborators window. This results in the *cursor position being reset* when this happens. 38 | 39 | As it turns out, this already affects *all* the sites that already use together.js with CodeMirror (the embedded editor that JS Bin uses). 40 | 41 | So we're looking at whether we fork together.js and send a pull request to fix this, or go down the [share.js](https://github.com/share/ShareJS) route (which I personally think is highly likely for a few other reasons). 42 | 43 | ## A hardware retreat 44 | 45 | Well, we didn't actually leave the office, but we did take a complete break from coding on JS Bin to experiment with [Arduinos](http://arduino.cc/), [Sparks](https://www.spark.io/), soldering irons, [Johnny Five](https://github.com/rwaldron/johnny-five/) and lots of LEDs. 46 | 47 |  48 | 49 | Overall, great little fun. Though none of us managed to produce anything that we'll be recording videos for Kickstarter, we have now broadened the amount of things we don't know! 50 | 51 | ## Out and about 52 | 53 | I'll be venturing out of sunny Brighton to a couple of London events, and I'll have a fistfull of JS Bin stickers (which are *really* nice quality) and a few t-shirts at [Edge London](http://lanyrd.com/2014/edgeconf/) and [LNUG](http://lanyrd.com/2014/lnug-march/). So come grab me! 54 | 55 | ## Totally aside 56 | 57 | This shouldn't be funny, but it's utterly hypnotic... 58 | 59 | -------------------------------------------------------------------------------- /content/blog/twdtw-3-codemirror-settings.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #3: CodeMirror, User settings, Hacks' 3 | author: remy 4 | date: '2014-04-01' 5 | published: true 6 | --- 7 | 8 | 9 | Last week we rolled out [SSL support](/blog/ssl) for our sign in (long overdue), and this week we've had two pretty cool releases: CodeMirror 4 and (in private testing) user settings UI. 10 | 11 | ## CodeMirror 4 12 | 13 | [CodeMirror](http://codemirror.net) is the excellent editor that backs JS Bin. Version 4 was released last week and on Tuesday it landed in JS Bin. The highlights for me personally are multiple cursors and sublime mode (via `jsbin.settings.addons.sublime = true`): 14 | 15 |  16 | 17 | But isn't setting these [sweet addons](/blog/twdtw-2#userenabledaddons) via the console a bit tricky and maybe for the hacker?! Well, we've been working hard to introduce a "proper" UI which has gone live behind alpha flags so we can give it some production testing, so I'm expecting to release to public next week. 18 | 19 | ## User Settings 20 | 21 | But take a look: 22 | 23 |  24 | 25 | These settings will give you full control over how your editor works, and if you think anything is missing, we're looking for *your* input. We're also working on adding a JS Bin preferences panel to help manage your default templates and default processors (like Less or CoffeeScript) and more. 26 | 27 | ## The Autoprefixer hack - did you know...? 28 | 29 | Last Friday I saw a [tweet asking for Autoprefixer support](https://twitter.com/pepelsbey_/status/449460914941853696) (which coincidently landed in our friendly neighbour CodePen about two hours after we replied with...): JS Bin is extremely maluable. 30 | 31 | So we hacked together a bin that lets you run Autoprefixer entirely client side, and uses the CSS panel and the magical `%css%` value to post process *your* CSS through Autoprefixer. 32 | 33 | Then in the afternoon [Giulia](http://github.com/electricg) added this to our library drop down, so if you select Autoprefixer, you can use the CSS panel without prefixes. All without a server side change. [Have a play](http://jsbin.com/xewil/1/edit). 34 | 35 | 36 | ## Totally aside 37 | 38 | Fabien found and shared this site [8tracks](http://8tracks.com) that you can give it a tag, say "programming", and you can listen to tracks to suit that mood. So get your groove on. 39 | 40 |  -------------------------------------------------------------------------------- /content/blog/twdtw-4-tern-pro-features.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #4: Tern live, and our upcoming Pro features' 3 | author: remy 4 | date: '2014-04-07' 5 | published: true 6 | --- 7 | 8 | 9 | We've now released Tern to live for everyone, and we've been hard at work on our Pro features and working on improving the JS Bin core code. 10 | 11 | ## Tern 12 | 13 | A few weeks ago we showed off the [demo of Tern](/blog/twdtw-1-sass-tern-security#tern), and now it's live. You need to manually turn it on via the `addons`: 14 | 15 | ```js 16 | jsbin.settings.addons.tern = true; 17 | ``` 18 | 19 | ...then refresh and Tern is enabled in the JavaScript panel. 20 | 21 | ## Upcoming Pro feature: vanity urls 22 | 23 | We're all working hard on Pro features for JS Bin (whilst also pushing out more and more features for *all* users), and I've just finished the first version of vanity URLs. 24 | 25 | This means your shared URLs will include your username to your editable bins, like [http://rem.jsbin.com/kuzef/2/](http://rem.jsbin.com/kuzef/2/) and more importantly, you can *publish to your vanity url*, as so: [http://rem.jsbin.com](http://rem.jsbin.com). 26 | 27 | The vanity URL will also support pointing your own domain directly at JS Bin (like code.rem.io). 28 | 29 | Also in the works is Dropbox support (for your own copy of you bins but also quickly embedding external resources). More on that soon. 30 | 31 | Most importantly, Pro is the way that JS Bin will continuing to be open source and **free for education**. And we need your help to do that. So spread the word, and [sign up too](https://jsbin.com/register) so you're ready for when it lands! 32 | 33 | ## Totally aside 34 | 35 | Fabien had been catching up on some classic movies, in particular Sneakers, which reminded me of this amazing story by Moran Cerf, about a particular point in life where his group decided to say "yes". 36 | 37 | 38 | -------------------------------------------------------------------------------- /content/blog/twdtw-5-settings-dropbox-heartbleed.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #5: Heartbleed, Settings, User Backups' 3 | author: fabien 4 | date: '2014-04-11' 5 | published: true 6 | --- 7 | 8 | 9 | This week we've been dealing with the Heartbleed issue, but more positively have also shipped (for internal, but live testing) updates to user settings and a new pro feature: real-time backup of your bins. 10 | 11 | ## Heartbleed, no more 12 | 13 | The Heartbleed bug definately took it's toll on [Remy](https://twitter.com/rem/status/454293558317821952) as he patched our OpenSSL, reissued SSL certificates and fixed weird [MySQL issues](http://stackoverflow.com/questions/22968867/error-1018-hy000-cant-read-dir-of-db-errno-13-not-a-permission/23014237), but we were [no longer vulnerable](/blog/heartbleed)! 14 | 15 | This, from [xkcd](http://xkcd.com/1354/), does a good job of explaining the issue: 16 | 17 |  18 | 19 | ## JS Bin settings & preferences 20 | 21 | [Giulia](https://github.com/electricg) has been continuing work on [our new account pages](/blog/twdtw-3-codemirror-settings#usersettings), with a new page for managing your default preferences, such as your starting open panels, templates, processors and so on. 22 | 23 | We're hoping to release this to you all next week. 24 | 25 |  26 | 27 | 28 | ## User backups 29 | 30 | For the past couple of weeks, I've been working on a new part of JS Bin called [Jobsworth](https://github.com/jsbin/jobsworth). This is a task manager that communicates using [zeromq](http://zeromq.org/) and contrary to it's name, will do our bidding. Initially backing up all my new bins to Dropbox in real-time (and we intend to add other services, like SkyDrive, Drive, etc). 31 | 32 | The format of the file saved in which the bins are saved is a single HTML file that includes the full source of the bin, including pre-processor's source, which acts as an API for JS Bin importing too [#609](https://github.com/jsbin/jsbin/issues/609). 33 | 34 | ## Totally aside 35 | 36 | If you've not seen the oscar winning [Gravity](http://www.imdb.com/title/tt1454468/), well, you should, but this is Gravity for those of you without much time on your hands - enjoy! 37 | 38 | 41 | 42 | -------------------------------------------------------------------------------- /content/blog/twdtw-6-syncing-pro-accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #6: Bin files, Dropbox, Pro Accounts' 3 | author: fabien 4 | date: '2014-04-25' 5 | published: true 6 | --- 7 | 8 | 9 | This week we've been doing mostly internal updates to JS Bin, so not much to see. I've been working on updating the way in which we create HTML 10 | files from bins and we're going to start experimenting with two-way syncing with [Dropbox](http://dropbox.com) 11 | 12 | ## Bin files 13 | 14 | Transforming a Bin into a html file has always been done by JS Bin - to display your output in the iframe, but this week I've been creating a module 15 | to create more than just a renderable file, but a file that stores both the raw panel content and the content *after* it has gone through 16 | preproccesors. This will eventually allow files in this format to be dropped into JS Bin and populate all the panels, cool! 17 | 18 | ## Dropbox 19 | 20 | [Remy](https://twitter.com/rem) and I were talking about our Dropbox linking being more than just saving - but syncing, where any changes made to your files on Dropbox would then be reflected in JS Bin. We're hoping to have two-way syncing of bins to Dropbox ready to be tested internally by next week. Here's how the current dropbox linking works: 21 | 22 | 25 | 26 | ## Pro Accounts 27 | 28 | Our pro account offering is being polished for when Remy returns to the office and we can release them, [Danny](https://twitter.com/yandle) popped in this week to go over the designs and user flow from registered or anonymous to pro and I've been compiling a list of all JS Bins current and future features, it's a lot bigger than I thought! 29 | 30 | ## Totally aside 31 | 32 | Also, a very big congratulations to Remy and [Julie](https://twitter.com/julieanne) - they've had a beautiful baby girl :D! 33 | 34 |  35 | -------------------------------------------------------------------------------- /content/blog/twdtw-7-processors-search.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #7: SCSS, Compass and search' 3 | author: remy 4 | date: '2014-05-02' 5 | published: true 6 | --- 7 | 8 | 9 | Whilst Fabien continues with [Pro user integration](/blog/twdtw-6-syncing-pro-accounts) and Giulia [goes on holiday](https://twitter.com/electric_g/status/460844432649355264), I've snuck out of paternity leave and cheekily completed a bit of dev. 10 | 11 | ## SCSS, Compass and processors total upgrade 12 | 13 | In the last year, I had to remove the Stylus processor because there was a weird bug that caused an infinite loop (both client *and* server side). Since JS Bin is single threaded(!) Stylus can't be reintroduced until it's running in a separate process. 14 | 15 | In the same vein as [Jobsworth](/blog/twdtw-5-settings-dropbox-heartbleed#userbackups) (our zeromq based bin backup server), I've created [Pennyworth](https://github.com/jsbin/pennyworth): a server for running processors and spitting out rendered CSS, JavaScript or HTML. 16 | 17 | There's a simple [markdown](https://github.com/jsbin/pennyworth/blob/master/targets/markdown/index.js) module, but more importantly to user demand, there's modules for [SCSS](https://github.com/jsbin/pennyworth/blob/master/targets/scss/index.js) and [SCSS with Compass](https://github.com/jsbin/pennyworth/blob/master/targets/sass-with-compass/index.js) (and more being adding before we go live). 18 | 19 | Here's a couple of shots using a couple of [Ana Tudor's](http://twitter.com/thebabydino) excellent SCSS demos: 20 | 21 |  22 | 23 | Once I'm back from paternity leave (in 2 weeks) I'll be focused on releasing this entirely. 24 | 25 | ## Help & blog search 26 | 27 | This part of JS Bin (the blog and help) are statically generated using [Harp](http://harpjs.com/), which makes search a little tricky (and bin searching is also on the roadmap, but a separate issue for now). 28 | 29 | I've hacked in a simple solution that generates a static JSON file with all the words from the content on help & blog. It's not perfect, and requires JavaScript right now (and no keyboard support yet), but it's a start to jump to content a little quicker. 30 | 31 |  32 | 33 | ## Totally aside 34 | 35 | It's a bank holiday weekend here in the UK, which means most of us have Monday off. So what to do with all this free time? How about melting your brain on TV? 36 | 37 | [Huffington Post](http://www.huffingtonpost.com/2014/05/01/binge-watching-chart-_n_5246342.html) rescues us from a hard decision: 38 | 39 |  -------------------------------------------------------------------------------- /content/blog/twdtw-8-svg-settings.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'TWDTW #8: SVG support and settings live' 3 | author: fabien 4 | date: '2014-05-15' 5 | published: true 6 | --- 7 | 8 | 9 | With [Giulia](https://twitter.com/electric_g) back from holiday and [Remy](https://twitter.com/rem) easing back into work, the Left Logic offices 10 | have been a bit more lively, and pushing a few more bits to production. 11 | 12 | ## SVG Support 13 | 14 | We just landed SVG support in JS Bin. Simply add `.svg` to the bin URL, and JS Bin will correctly serve up the HTML content panel as SVG with the correct headers. So now you can easily [prototype SVG](http://jsbin.com/gecew.svg) using JS Bin: 15 | 16 | ```html 17 |Imports on (new) jsbin are pretty cool I think. Downloaded result includes full working version *plus* original source. pic.twitter.com/ARVH89ij9u
— @rem (@rem) January 25, 2018