So I was puzzling over how to make the "Well" style layout in Tumblr without Javascript.
So I'm working on a small "speech bubble" library, and needed to delay hiding of the bubble. It's not that it was required, but it was a pain in the butt figuring out how to arrange the event handlers on the different elements so that you don't end up with a situation where you get a flickering bubble because you hide the bubble, and that fires a mouseover event that, in turn, displays the bubble again. That fires a mouseout event that causes the bubble to be hidden.
For the past few months I've been working on web apps. The first was a mobile site based on jQuery Mobile. While it was "cool", it quickly dawned on me that it wouldn't get any significant usership. For one, it was like a clone of 4square and Scvngr - and who really uses that? I'd peer into the lists of checkins, and it wasn't looking too encouraging. People use it when they're bored and alone, and my scenario didn't involve either of those situations.
Javascript Module Pattern In Depth at Adequately Good is a very good article about how to make JS modules that don't pollute the global namespace.
I wrote this before I practiced with the module pattern and with adding methods to prototypes. So this article doesn't explain a best practice. Still, it's a pretty good pattern. See also the Javascript Patterns book.
Xopus is an XML editor, written in Javascript and HTML5. It's not just JS, but it's licensed software for your desktop. I'm blown away. This is Google Docs, Angry Birds, Yahoo Pipes level blown away. Check it out.
I was reading up on Guile, figuring I should revisit Scheme annually. Found some examples, and translated them into Javascript.
(lambda (x) (+ x x))
(define add4 (let ((x 4)) (lambda (y) (+ x y))))
(define factorial (x) (if (zerop x) 1 (* x (factorial (- x 1)))))
function(x) { return add(x,x); }
function _defunmaker() { var x=4; return function(y) { return x + y; } }
var add4 = _defunmaker();
_defunmaker = null;
var factorial = function(x) { if (x==0) { return 1; } else { return x * factorial(x-1); }; };
This is a demo of a technique to transmit password encrypted. It's not a perfect solution yet, but it's getting there.
Normally, you should use canned Javascript or canned PHP modules to implement web features, but sometimes, that can suck. Typically, these products, if they're popular, start to suffer from feature bloat. In order to make a popular product, you need to add a lot of features. Customers are looking for three or four specific features, and generally don't care about the other features. The problem is, you don't know what those features are, so you add 20 features, and hope to get those customers.
nzakas has a great presentation about speeding up Javascript loops but it applies to any language that uses C-like loop structures.
Here's a way to cache data on the client side, via javascript. This was tested on Firefox 3.6.3 on Ubuntu.
The idea is to convert your data into Javascript, and then load it with the SCRIPT tag. You then use the Expires HTTP header to tell the client how long to cache the data. Finally, you use some Javascript code to display the data.
This Javascript widget strips non-numeric characters from the input. The result will be a space-separated list of numbers.
This is weird. The authors turn OpenOffice.org into a spreadsheet server -- and then create a front end in Dojo with Javascript, and tunnel events from the front end to the OOo spreadsheet via a Tomcat servlet.
At work I run Firefox without the (great) Adblock Plus plug-in. Adblock Plus mangles the HTML code to insert its own code that displays the "Block Ad" tabs, and this interferes with our CMS. Whenever I insert some code to embed video, Adblock Plus sees it and then adds its own code, ruining the code.
I forgot this, and installed ABP and then had to uninstall it.
Then, I started noticing that TinyMCE was altering URLs in links, so a url like http://example.com/go.php?id=100&start=344 would get mangled, so the ampersand (&) was replaced with & the HTML entity. I'd see: http://example.com/go.php?id=100&start=344
It turns out this is correct behavior, because xml doesn't allow & to be in an attribute. It needs to be escaped. The only problem is that IE6 won't handle these links correctly.
This is the Hello, World program, written in Javascript and encoded as a data URI.
<script src='data:application/javascript;base64,ZG9jdW1lbnQud3JpdGUoIkhlbGxvLCB3b3JsZCEiKQ=='></script>