I think the market is, on average, more supportive of #foss and #indieweb products and services than seed stage and angel investors are.

I just downloaded my tweet archive. Here are a few tweets I found:

The 4 in Deadmau5′ 4×4 = 12 is actually an A, and A = sqrt(12). #leetspeek 16 feb 2012

Hmm, “json” ends with the same letters (and for me, sound) as “python”. Two new words: jsonic and jsonista! 5 oct 2010

I’m in a Wave about Boulder with @HKoren. We’re using photos, and lots of threads. I’m learning more about it. Anyone want to join? @ or DM. 24 nov 2009

I suppose this is the opposite of NoSQL. http://theformspider.com/ #onlysql 7 Oct 11

crayfish 4 Oct 12

Actions I might find in an ideal micropost reading tool:

  • skip: some things should just be removed from my stream. there are valid reasons not to unfollow someone despite not wanting to read their content. I should also be able to silence things based on content.
  • sift: my massive feed should have a way for me to type what I’m interested in at the moment, and see items (posts, microposts, commits) about it.
  • skim: there should be a smaller feed of stuff I want to have a chance to read, that I can quickly scroll through.
  • read: some things I actually want to read. this should be smaller still.
  • reply: unlike the above, these will have to be ticked off one by one.
  • act: I feel I don’t act on what I read often enough. When someone I follow writes a nifty new library I should actually install it and try it out, and offer feedback.

Finally, catching up on items from my streams should feel like work more often. Using some of these networks directly is biased towards goofing off.

This was two years ago:

You’re correct, the routing mesh does not behave in quite the way described by the docs. We’re working on evolving away from the global backlog concept in order to provide better support for different concurrency models, and the docs are no longer accurate. The current behavior is not ideal, but we’re on our way to a new model which we’ll document fully once it’s done.

Heroku ought to have fixed this by now.

This is a proposal for a new file format.

The TSV file format is very simple. It requires that fields be delimited by tabs, and has a limitation that tabs can’t appear within fields. Newlines are also forbidden inside a field.

The JSON file format is both simple and powerful, but it can be a tiny bit clumsy compared to TSV. Also there is a tradition of putting one JSON object on a line, but that format isn’t JSON, and it doesn’t have a name that’s caught on.

The TSJ file format is a specialization of TSV, where a field is either a JSON expression or a string. Here is how you tell if it’s a string or a JSON expression:

  1. Fields that start with “{“, ‘”‘, “[“, “-“, or the digits (0-9) are treated as JSON expressions. If they don’t parse, it’s invalid TSJ. If you want to store such a value, use a JSON string expression.
  2. Fields that are exactly one of the words “true”, “false”, or “null” are treated as JSON expressions.
  3. All other fields are treated strings.

Strings and JSON expressions are both UTF-8. Fields are not trimmed after they are split by tab characters. A file containing “true\t false\n” will be read as [[true, ” false”]].

If you want to use Backbone.js’s extend function on your own class, all you have to do is this:

var LightModel = function(attributes, options) {
  this.attributes = _.extend({}, attributes);

_.extend(LightModel.prototype, Backbone.Events, {
  get: function(key) { return this.attributes[key]; },
  set: function(key_or_values, value) {
    if (typeof key_or_values == 'string') {
      this.attributes[key_or_values] = value;
    } else {
      _.extend(this.attributes, key_or_values);

LightModel.extend = Backbone.extend;

Backbone’s extend function is the same between Backbone’s classes. It just uses the prototype it was called with. MyModel1 and MyModel2 in the following example would be equivalent:

var MyModel1 = Backbone.Model.extend({});
var MyModel2 = Backbone.View.extend.call(Backbone.Model, {});