Ouverture

on liminal issues

‘General’

nota
Blob,General

Leo was super annoyed that Dribbble is by-invitation-only. I was anxious, and delighted, and super-jealous.

We want invitations so much that it hurts.

using many Heroku accounts, or pushing under many GitHub accounts
General,Opus,Projects

It all starts with SSH. First of all make sure that for each account, you have its respective identity file at hand, preferably stored under ~/.ssh. Most code in this article derives from Aeonscope and this is an empirical reincantation of the article.

Read the rest of this entry »

kerner
General,Opus,Projects

tidyCJK

Announcing lib.tidyCJK.js which pseudo-kerns Chinese, Japanese and Korean passages by properly inserting a space between CJK glyphs and Latinate / numeric glyphs in them. Clone it or fork it on GitHub.

It’s an early alpha, so might be full of bugs. With imminent field application, its quality and accuracy will likely improve. tidyCJK uses Unicode1, so it needs to run in an environment that supports JS 1.3+.

Why use lib.tidyCJK.js

For the exactly same reason why Cappuccino is strong: standard bodies move slowly, and despite that CSS3, a work in progress, already has much in store, we need similar capabilities now. And we often have to interact with existing material, which comes from all places in all sorts. Better post-process everything and make them look good than wait for everyone to conform.

Finding a character’s code easily

Add this little cute recursive JavaScript method if you’re targeting JavaScript 1.5+ 2, so you say String.hex instead of String.hex() 3:

String.prototype.__defineGetter__("hex", function() {

    var response = [];

    for (i in this) {

        var charCodeString = this.charCodeAt(i).toString(16);

        response.push("\\u" + (function(stringToWrap, finalDigits, padding){

            if (stringToWrap.length >= finalDigits) return stringToWrap;
            return arguments.callee(padding + stringToWrap, finalDigits, padding)

        })(charCodeString, 4, "0"));

    }

    return response;

});

And call String.hex — for example:

>   "f(*^%)g".hex
["\u0066", "\u0028", "\u002a", "\u005e", "\u0025", "\u0029", "\u0067", "\u0066"]

Happy Kerning!


  1. Get the code charts here. 

  2. Check out Wikipedia’s comparison table — IE 5.5+ is presumably already on JS 1.5. 

  3. In the old days, say String.prototype.hex = function () { foo; }

lantern
General,Lumination

To recurse divine.

aeternas lux
General,Illustration,Opus

A pictorial guide to the first half of my week

Leaves ME

Babble

Branches

Keyboarded

Codex

lib.jQuery.uniform/nebula

monoceroi/uniform/nebula is my fork of the famous jQuery.uniform plugin, which does a bit more than the original. For instance, selectors are no longer fixed-width; there is now no overlaid parts so transparent sprites do not interfere with each other.

monoSnippets

monoceroi/monoSnippets/master is my convenience library that leverages LESS (so to make cross-browser box-shadows, you say .shadowed(black, 0px, 0px, 2px) and LESS converts it into a huge multi-liner for you, etc.) Because of LESS’s immersive expression power, it is now painles to implement NSNinePartImage with code in decent browsers with help from the newly added .borderImage class.

Alia

Things are not going very steadily. Ripples here and there, and time is running out…