Skip to content

Instantly share code, notes, and snippets.

Tab Atkins Jr. tabatkins

Block or report user

Report or block tabatkins

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
tabatkins /
Last active Mar 14, 2018
Error spewed *to the user* when you try to sign up for an AXS account with a password that's too long.

```Oracle.DataAccess.Client.OracleException ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "AEG_NCALIFORNIA.TIX_CUSTOMER_DA", line 200 ORA-06512: at line 1 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() at VA.Services.CustomerDA.InsertRow(TransactionContext tc, String lastName, String firstName, String middleName, String phone1, String phone2, String fax, Nullable1 isFemale, String email, String customerPassword, String companyName, Nullable1 birthDay, String prefix, String suffix, String phone3, Nullable`1 phone1type, Nullable`1 phone2type, Nullable`1 phone3type, String salutation, String careof, String stateid, Nullable`1 optedin, Nullable`1 sentwelcomemsg, String notes, Nullable`1 securityquestionid, String securityanswer, Nullable`1 securityquestion2id, Stri

tabatkins /
Created Aug 30, 2017
Problems with .then() handling the lock stuff

Currently, lock.asyncHold() isn't specced to take any arguments. It just returns a promise, and you pass the code you want to operate under the lock to the .then() method. This is problematic - it requires promise subclassing, and has some unintuitive and probably unexpected behavior.

For example, this code doesn't lock anything at all:

const p = lock.asyncHold();
...never call .then()...

This is extremely different from lock.hold(cb);, which immediately acquires the lock (and calls the cb with it held).

tabatkins / IO.js
Created Aug 30, 2017
The IO monad, in JS
View IO.js
class IO {
constructor(val) {
this._fn = ()=>val;
return this;
static fromFn(fn) {
const ret = new IO();
ret._fn = fn;
return ret;
View SpecRef edits
"css-animations-1": {
"aliasOf": "css3-animations"
"css-backgrounds-3": {
"aliasOf": "css3-background"
"css-box-3": {
"aliasOf": "css3-box"
View gist:6a5f74fc50d8e16e2d39
CookieBot = {
$bigCookie: null,
$products: null,
running: true,
init: function() {
CookieBot.$bigCookie = document.querySelector("#bigCookie");
CookieBot.$products = []".product"));
tabatkins / gist:b9b07594dbcde338fd86
Last active Aug 29, 2015
Comparing two linking syntaxes
View gist:b9b07594dbcde338fd86
"linkingText": "blob",
"url": "",
"type": "dfn"
"linkingText": "blob url store",
"url": "",
"type": "dfn"
tabatkins / gist:8c0cb8043dbb2787d59a
Created Oct 22, 2014
All strings [a-z]+ of length N or less, in lexicographic order
View gist:8c0cb8043dbb2787d59a
function gen(N) {
var strings = [];
var max = Math.pow(36, N);
for(var i = 10; i < max; i++) {
var candidate = i.toString(36);
if(/^[a-z]+$/.test(candidate)) {
return strings;
tabatkins / gist:57d07e4b75a9fc66ee30
Last active Aug 29, 2015
List of Suggested Extensions to CSS
View gist:57d07e4b75a9fc66ee30

List of Suggested Extensions to CSS

This is a breakdown of "List of Suggested Extensions to CSS", produced by the CSSWG back in 1998. It goes through each feature and either lists where the feature has been defined in the intervening 16 years, or notes that it has yet to be addressed.

Out of the 67 suggested extensions, 30 have been added, 10 have been partially added or been added but with uncertain implementor interest, and 27 have not been added.

  1. Columns:
  2. Swash letters and other glyph substitutions:
  3. ~ Running headers and footers:, but unproven so

Keybase proof

I hereby claim:

  • I am tabatkins on github.
  • I am tabatkins ( on keybase.
  • I have a public key whose fingerprint is DC31 DBD2 B540 C41C 082C 94DF 873F 4A7E 14B4 98DE

To claim this, I am signing this object:

tabatkins / gist:9946593
Created Apr 3, 2014
Markdown BS: `<dl>` format
View gist:9946593

Similarly to Markdown ULs and OLs, the DL format is defined by grouping its items.

A DT is indicated by a line starting with a :. A DD is indicated by a line starting with a ::. As with UL/OL, you can linebreak within a block by indenting the subsequent lines, and a block can contain multiple paragraphs as long as you indent. Two blank lines, or a single blank line followed by an unindented line, ends the list.

:another term
::a longer definition
    stretching over two lines
You can’t perform that action at this time.