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, {});

Steve Klabnik wrote a great article called Rails has Two Default Stacks. This is the best mental model I’ve found for the major factions within the rails community.

It breaks down if you start considering various deployment options, but I realized that it’s better not to. Deployment stacks can change more rapidly, and have more reasons for needing to change, than development stacks. It is worth just thinking about the development stack, of which testing is a major part. It is the development stack that plays the biggest role in programmer happiness.

If you work on a large project, thinking about just the development side of things will probably make your (Dev)Ops people happy, too.

George Carlin:

It looked pretty good. It was pristine. Paradise. Have you seen it lately? Have you taken a good look at it lately? It’s fucking embarrassing. Only a nation of unenlightened halfwits could have taken this beautiful place and turned it into what it is today: a shopping mall. A big fuckin’ shopping mall. You know that? That’s all you’ve got. That’s all you’ve got here folks. Mile after mile of mall after mall. Many, many malls. Major malls and mini malls. They put the mini malls in between the major malls. And in between the mini malls they put the mini marts. And in between the mini marts you got the car lots, gas stations, muffler shops, laundromats, cheap hotels, fast food joints, strip clubs, and dirty bookstores. America the beautiful: one big transcontinental commercial cesspool.

I started following Aaron Swartz back in 2005, when I was trying to learn all I could from Paul Graham. I read Graham’s essays and went to the first ever Startup School for Hackers. Aaron Swartz was there, having applied and been selected as one of the first participants in Y Combinator. I immediately found him intriguing and endearing, and started reading his blog.

Aaron Swartz is known for having a wide variety of interests, but they’re all connected. He wanted to make the world better through the power of openness. The first thing that he’s famous for is co-creating RSS, which is a tool that allows anyone to publish their thoughts, so they can easily be read by anyone with access to the Internet, with any tool that supports the standard. He used his blog, Raw Thought, to share his. I subscribed to it with my RSS reader, and also used a feed that Aaron created to read Paul Graham’s blog. Aaron created a tool called Infogami to enable others to share their thoughts. He became involved in reddit, which made the Internet more connected, even hyperconnected. These were great achievements, to be sure, but his sense of duty required him to do so much more.

His political activism was impressive, and will live on. Cory Doctorow’s post on Boing Boing is a good summary of it, but to understand where he was coming from, you need to read what he wrote and listen to what he said. His blog, which I expect will remain online, has a nice archive page. Read it.

Aaron, you have inspired me, and I’m going to miss you immensely. Thank you for your work to make the world a better place, and may you rest in peace.

Today I upgraded to rails 2.3.5 on a server that had an old version of Ubuntu. This is with an old version of ruby 1.9 that was installed using the Ubuntu packages rather than rvm. Here’s what I had to do:

1. Change the rails version

I changed the version in config/environment.rb to 2.3.15.

RAILS_GEM_VERSION = '2.3.15' unless defined? RAILS_GEM_VERSION

More information here.

2. Turn off yaml and symbol deserialization

Add this to config/environment.rb, just before the last end statement (at the end of the configuration block):

  ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol')
  ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml')

More information here. This is apparently also solved by the rails update above, but since this flaw is so harmful I’m glad to have it fixed in more than one place.

3. Require thread

I got this from a StackOverflow post. I added this to the top of config/boot.rb:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb

It says not to change the file, but in this case I am not changing the file to customize my rails app but to make it work with a newer version. I’m not sure this step was necessary.

3. Upgrade rubygems

I had an old version of rubygems. It was installed with apt-get, so I couldn’t upgrade it with gem update --system. Furthermore, since I was running an old version of Ubuntu, apt-get upgrades weren’t working for me. So instead I uninstalled rubygems and installed it from source.

5. Install the gems

I installed the gems for rails with gem install rails --version 2.3.15 and also installed thin and mysql.

6. Restart the web server

Finally I restarted the web server.

Now, this is just one system configuration and chances are most are different so this may not help you. The uninstalling of rubygems and reinstallation from source took quite a while to figure out so I thought I’d share. If this doesn’t solve your problem, you may leave a comment and if I have time I’ll try to help you figure out what went wrong with yours.