Skip to content

Instantly share code, notes, and snippets.

@140bytes
Created May 9, 2011 16:13
Star You must be signed in to star a gist
Save 140bytes/962807 to your computer and use it in GitHub Desktop.
140byt.es -- Click ↑↑ fork ↑↑ to play!

140byt.es

A tweet-sized, fork-to-play, community-curated collection of JavaScript.

How to play

  1. Click the Fork button above to fork this gist.
  2. Modify all the files to according to the rules below.
  3. Save your entry and tweet it up!

Keep in mind that thanks to the awesome sensibilities of the GitHub team, gists are just repos. So feel free to clone yours and work locally for a more comfortable environment, and to allow commit messages.

Rules

All entries must exist in an index.js file, whose contents are

  1. an assignable, valid Javascript expression that
  2. contains no more than 140 bytes, and
  3. does not leak to the global scope.

All entries must also be licensed under the WTFPL or equally permissive license.

For more information

See the 140byt.es site for a showcase of entries (built itself using 140-byte entries!), and follow @140bytes on Twitter.

To learn about byte-saving hacks for your own code, or to contribute what you've learned, head to the wiki.

140byt.es is brought to you by Jed Schmidt, with help from Alex Kloss. It was inspired by work from Thomas Fuchs and Dustin Diaz.

function(){
// make sure
// to annotate
// your code
// so everyone
// can learn
// from it!
// see jed's entries
// for examples.
}
function(){/* Your entry, a useful, unique, and valid JavaScript expression that packs as much functionality into 140 bytes as possible. */}
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2011 YOUR_NAME_HERE <YOUR_URL_HERE>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
{
"name": "theNameOfYourLibWhichMustBeAValidCamelCasedJavaScriptIdentifier",
"description": "This should be a short description of your entry.",
"keywords": [
"five",
"descriptive",
"keywords",
"or",
"fewer"
]
}
<!DOCTYPE html>
<title>Foo</title>
<div>Expected value: <b>undefined</b></div>
<div>Actual value: <b id="ret"></b></div>
<script>
// write a small example that shows off the API for your example
// and tests it in one fell swoop.
var myFunction = function(){ /* the code here should be identical to the entry. */ }
document.getElementById( "ret" ).innerHTML = myFunction()
</script>
@xuyuanok
Copy link

eeeeeeeeeeeee

@tsaniel
Copy link

tsaniel commented Aug 23, 2011

I wonder if there is a 140bytes for css.

@p01
Copy link

p01 commented Aug 23, 2011

@tsaniel: I'd love to see that. I made a couple of tweet-sized user CSS including a TurnOffTheLight for YouTube and Vimeo, and a "noise" filter for Facebook

@tsaniel
Copy link

tsaniel commented Aug 27, 2011

@p01: I'd love to see that too. The 140bytes for javascript lets me learn lots of javascript tricks, I hope the css one will do so.

@tsaniel
Copy link

tsaniel commented Sep 2, 2011

I think we should remind people to name their gist's description.
As it's hard to know whether one really did something or just fork.

@jed
Copy link

jed commented Sep 2, 2011

i dunno, i think the tags on the 140byt.es site are probably good enough, since descriptions are truncated at a few words here anyway.

@williammalo
Copy link

uhhhhh... How do I get my gists on the 140byt.es website?
Is it automatic? My snippets aren't there :(

@atk
Copy link

atk commented Mar 30, 2012

Since we don't want spam entries, jed usually updates them manually. Since he's currently rather busy as js1k judge, please be patient until he finds the time.

@Inkbug
Copy link

Inkbug commented Aug 1, 2012

@tsaniel
Copy link

tsaniel commented Aug 2, 2012

Nobody's around...

@atesgoral
Copy link

@tsaniel Every possible function that can fit into 140 characters has been written. Nothing more to see here...

@Inkbug
Copy link

Inkbug commented Aug 2, 2012

@tsaniel @atesgoral What about my function (three comments up) - can anyone shrink it?

@williammalo
Copy link

@atesgoral
NOOOOOOOOOO!!!!!!!

@tsaniel
Copy link

tsaniel commented Sep 27, 2012

I can't even reply to any gist, anyone knows what's going on?

@atk
Copy link

atk commented Dec 13, 2012

The new layout breaks some of our concepts... :-(

@dvhk
Copy link

dvhk commented Aug 2, 2013

Sorry, I don't use twitter, but here's a Lindenmayer system and some basic visualisation:

<title>L-system test</title> <script>

// A Lindenmayer system, see http://en.wikipedia.org/wiki/L-system
// Input:rules as a lookup table, start String, and iteration count. Outputs result String
// Example 1: Algae from the Wikipedia page above: f({"A":"AB","B":"A"},"A",3)
// Example 4, note that non-changing symbols also need rules: f({"F":"F+F-F-F+F","-":"-","+":"+"},"F",3)
function f(r,s,i){for(j=i;j--;){var a=s.split('');for(k=a.length;k--;){a[k]=r[a[k]];}s=a.join('');}return s;}

// A shorter-than-256-bytes simple turtle graphics SVG visualisation for the Lindenmayer system output String.
// Usage with Example 4 above: g( f({"F":"F+F-F-F+F","-":"-","+":"+"},"F",3) );
function g(s){var i=[0,3,0,-3],j=[-3,0,3,0],d=9,a=s.split(''),v='';for(k=a.length;k--;){if(a[k]=='F'){v+=' l'+i[d%4]+' '+j[d%4];}if(a[k]=='+'){d++}if(a[k]=='-'){d--}}document.body.innerHTML+="";}

</script>
Please enable JavaScript!

@Revlin
Copy link

Revlin commented Sep 29, 2013

Why did you call the gist LICENSE.txt? Is there a story behind that?

@Revlin
Copy link

Revlin commented Sep 29, 2013

Alright! I just re-enabled the javascript: uri thingy in firefox and tried https://gist.github.com/4275420

javascript:(function(){var a="-webkit-",b='transform:rotate(1turn);',c='transition:4s;';document.head.innerHTML+='<style>body{'+a+b+a+c+b+c})();

Cool!
hehehe!

@Revlin
Copy link

Revlin commented Sep 29, 2013

Yeah, I'm new to this, but I have a bunch of ideas... I think a link to 140byt.es should be included in the tweets, because it gives some coherence to the tweeting, which are now totally random disconnected fragments of javascript that no one other than 140bytes participants will know what they're about or more importantly, where to go to find out what they're about. Yet, there are lots of js/es programmers out there that would be interested in this if they saw an entry tweet and were able to follow a link to the home page.

That's my argument, now the technical challenge: No matter what the size of a URI/URL twitter now minifies (or expands) it to 22 chars, allowing only 118 remaining for the actual code. I kind of think this is acceptable, because this 1) only make the challenge harder, which is the point, right, hardness? and 2) the chars reserved for the link can be considered part of the task, as it helps to promote the task(s) as a whole

@atk
Copy link

atk commented Sep 30, 2013

@Revlin: The point of this challenge is fun and learning. The difficulty of it is balanced between "too easy to be fun" and "too hard to do anything of interest". So making it harder will not improve the challenge, quite the opposite. In addition, I don't think that we need the promotion. We are here for our own entertainment, not for marketing purposes.

@Revlin
Copy link

Revlin commented Sep 30, 2013

@atk Thanks, dude. I'll start over with all that in mind.

I guess I can be self-defeating and waste 22 chars on including the link myself, without that necessarily being a rule :)

So, according to the instructions all I have to do is fork this repo and my fork will show up on the main page (whether or not I've made any changes)? I'm a bit confused about that... how important is the package.json in this process?

@Revlin
Copy link

Revlin commented Sep 30, 2013

So I see a button on the main page, "Log in with GitHub," but clicking it has no effect. Is this the way to go to "Save your entry" as suggested in the instructions?

My first crack: https://gist.github.com/Revlin/6766557

@atk
Copy link

atk commented Oct 1, 2013

Since the last github change, Forks don't show up on the main gist (unless you select "Forks").

The automatical updates of the homepage (140byt.es) don't work. Jed and I never found out why. Also, we usually only include stuff that has an actual use or at least a cool effect. The package.json should be valid JSON, otherwise the importer will stop (again).

@jed
Copy link

jed commented Oct 3, 2013

hey all. i don't think the rules need to be changed, but i understand that our UI isn't optimal in that case (the platform has changed underneath our feet a few times since launch two years ago).

as for stuff showing up on the site, it doesn't happen until one of the admins stars the gist. this is to prevent spam and make sure that entries are not dupes and are of sufficient quality/creativity.

@dluciv
Copy link

dluciv commented Nov 25, 2013

Hi!

Is tweet https://twitter.com/dluciv/status/404937670419161088 suitable to submit the gist, or I should reformat it in some other way?

@xem
Copy link

xem commented Dec 5, 2013

Hi all,

Last month, subzey and I invented a system allowing to execute 190 JS characters in one single tweet.

Gist: https://gist.github.com/xem/7086007

I described it in detail here: http://xem.github.io/?golfing

Though, It uses 140 characters, not 140 bytes...

So do you think this system is still suitable for 140byt.es entries?

Copy link

ghost commented May 24, 2014

Also you can count the bytes with http://mothereff.in/byte-counter

Copy link

ghost commented May 24, 2014

I forked it and wrote a simple browser detection script in < 140bytes
https://gist.github.com/reza-farhadian/0d2e4f263aec898c5c67
tweet link: https://twitter.com/reza_farhadian/status/470131135922442243
👌

@Alexei-B
Copy link

Am I missing something or is it really hard to make two forks of the same gist on github? I've been struggling with it for an hour now. Even used the github API to try and fork it to no avail.

@aishikaty
Copy link

As the original site is dead now I created a list of all forks with description. Any feedback is welcome!
https://aishikaty.github.io/140bytes/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment