Ending SlowNews Experiment #1

The great thing about experiments is that they teach you things. Trying something and having it not work is not a failure. It’s information.

I still believe in what I said in my “What is SlowNews?” post: the move toward real-time random links and news is a bad move, in general. That basic part of the experiment is not why I’m dropping my weekly SlowNews posts.

This blog is more than 8 years old, and I’ve always posted to it for myself. I’ve posted thoughts that I wanted to work out in writing. I’ve posted things that I wanted to share because I thought they could help people. I’ve posted about things that I thought were interesting and worthy of additional commentary. I thought these SlowNews postings would fit in that latter category.

But, I haven’t particularly enjoyed putting those posts together in the format I’ve been doing. While it is a chance to reflect on the happenings of the week, what I’ve done so far has felt too random. There’s too little narrative. So, for now, SlowNews goes back onto the idea shelf, waiting for a better implementation.


SlowNews: Declarative Events in JS, Redis, Mono, Facebook x2

Ending This SlowNews Experiment

This is the last issue of this SlowNews format. I may or may not try a new format. I’ve written a bit more about why.

Reactive JavaScript: Declarative Programming for Events

When a problem space is well understood, adding declarative forms can really save on a lot of work. Here’s an interesting look at the Reactive Extensions to JavaScript, created by the team at Microsoft that creative the Reactive Extensions for .NET. I didn’t find the syntax there appealing, but the ideas are interesting. The Flapjax project provides a nicer looking syntax, but requires a compilation step to pure JS (the compiler is written in JS and can run in the browser). I like the Flapjax tutorial reference to spreadsheets, because spreadsheets provide a great model for certain kinds of declarative work and tying declarative structures with additional imperative programming is very powerful. One of the reasons we chose SproutCore for Bespin is the ability to bind views directly to data so that the two automatically stay in sync.

A Collection of Redis Use Cases

Mathias Meyer’s Collection of Redis Use Cases provides a great collection of examples to give you an idea of where you might apply Redis in your own applications. In the “Not Only SQL” movement, Redis is a good tool to have in your toolbox.

Using node.js To Bootstrap a Server from Client Code

Dion Almaer wrote up the experience he and Ben Galbraith had in creating the Project Appetite site for Palm WebOS developers. Following the modern style of having the client do presentation and the web server just providing an API, they could work on client and server independently. It turns out that a quick way to get a server up and running was just to reuse client-side code on the server (in this case, using node.js).

Harmony: JavaScript Testing in Ruby

Harmony takes advantage of Johnson, a Ruby to JavaScript bridge and lets you write unit tests for your JavaScript code in Ruby. It’s not unreasonable to ask why, given that you can write the tests for your JavaScript code in, say, JavaScript… but, on first glance to me, the benefit here would seem to be that you can test server and client bits together conveniently.

Making Facebook 2x Faster

Jason Sobel gives the rundown on a 2009 project to make Facebook’s pages load twice as fast. This is a good account of what it can take to make a speedy site.

Thoughtworkers Subjective Impressions of VCS

Having trouble picking a version control system (VCS) for your next project? Martin Fowler has posted some general impressions that Thoughtworks people have picked up while working on client projects. I’ve worked on a variety of projects using a variety of tools (RCS, CVS, ClearCase, Subversion, Bazaar-NG, Mercurial, Git) and Martin’s roundup meshes pretty well with my own impressions.

Canviz: graphviz on Canvas

Need to produce a directed graph? Only care about the “modern” browsers? Then canviz is for you! Canviz is open source (MIT license) and lets you create a variety of graphs just as you can with the graphviz project, but entirely client side.

HTML5 Web Sockets Spec Reimagined

Tim Bray dove into the HTML5 spec and found a number of new features that he liked. He also went deep on the Web Sockets spec in particular, going so far as to produce an alternate version of the spec to make things clearer. Looking at Tim’s alternate, there’s a lot that he left alone.

State of Mono

Miguel de Icaza has written up an overview of what’s been going on with the Mono project. It looks to me like the Mono platform is still evolving quite nicely. If you happen to be near Ann Arbor on Thursday, February 25th, you can learn about the state of .NET web development at the a2

meeting.

10 Online Code Editors

There has been a lot of development in web-based code editors, and I think this space will just get busier as time goes on. Here’s a roundup of 10 online code editors, including screenshots. ObDisclaimer: I’m the project lead for Bespin.

Interesting Releases

> list
11 goto 11

Top 11 ways to deploy a website

11. rsync
10. Webistrano
1. Your foot!


SlowNews: IM in JS, XHP, ePub

Ajax IM: Open Source IM, Totally JavaScript

The MIT-licensed Ajax IM library lets you add instant messaging to your site and features a new node.js server side. This is certainly a good use for an async framework like node! The one thing I noticed while sitting on their site is that it has an unpleasant way of tacking things onto your browser’s history without actually going anywhere. Should you want to roll your own messaging, you could fire up Faye on node.js and use your favorite Bayeux client side library.

XHP: E4X for PHP

Did you know that some implementations of ECMAScript allow you to embed XML right in your JavaScript? I’d imagine many people don’t, because folks in the “real world” need to make sites that run on IE. Well, if you’ve been pining for the ability to embed XML right there in your code, or if you’ve been looking for a chance to turn PHP inside out, you’re going to love XHP, which Facebook recently open sourced. At the very least, you’ll go read about it and then learn about XHP’s implementation performance characteristics from none other than Rasmus himself.

wtfjs

OK, so I’m a well-known booster of JavaScript. But, you’ll never hear me say that it’s perfect. Every language has its warts, and wtfjs has an enjoyable collection of JavaScript’s.

LESS.app Now With Automatically More Less

LESS.app lets Mac users write their CSS in LESS and have that LESS automatically turned into valid CSS as they work. Languages like LESS are cool, because they have an opportunity to influence how the actual standards will evolve.

ePub in JavaScript

The ePub standard looks to be gaining serious momentum as an ebook format, albeit without the support of the top selling ebook reader to date. There has been a good bit of work done to create usable ePub readers in JavaScript, and Michael Mahemoff has a good roundup over at Ajaxian.

> list
11 goto 11

Top 11 JavaScript Features (from wtfjs)

11. "string" instanceof String; // false.
10. typeof NaN // number, of course.
1.

(function(){
  var x = y = 1;
})();
alert(x); // undefined
alert(y); // 1 -- oops, auto-global!


SlowNews: HipHop, Redis, Riak, Weave, Homebrew

HipHop Compiles PHP to C++

What do you do if you have to serve up 400 billion PHP page views a month? You don’t, because you’re not Facebook. But, for Facebook speeding things up can make a real difference on their compute costs. Their newly open sourced tool HipHop translates PHP to C++ and then compiles the result with g++. Net benefit? Apparently 50% less CPU usage. Nice!

Also, check out Paul Biggar’s take on PHP compilation and how HipHop impacts the phc project.

Mozilla Weave Hits 1.0, Adds Developer APIs

The Mozilla Weave project recently shipped 1.0 of their Firefox extension that synchronizes information (securely and privately) between your browsers. This week, the Weave team has announced Python and JavaScript client libraries and APIs in general for accessing this data. They have web-based and iPhone clients as prototypes, which is really cool. Personally, I find the identity aspects to Weave very interesting and hope to see more experimentation and implementation of identity directly in the browser (how many more username and password systems do you want to implement?)

Disclaimer: I work for Mozilla Labs.

Redis Goes Beyond RAM

Redis is a very useful disk-backed key/value store with lots of interesting atomic operations. It’s always had the limitation that the entire dataset needed to fit in memory. antirez explains how that limitation is removed in Redis 2.0. The concept of virtual memory is lifted straight from OS theory and practice, but the application-level implementation is a better fit for Redis’ needs.

Homebrew: OS X’s Missing Package Manager

Homebrew continues to be a fairly stealth project, I think. If you’re a Mac user, though, it’s worth looking at. It’s a super simple package management system that makes it easy to install many common packages and even makes it easy to manage packages that you download and build yourself. Andre Arko posted a nice introduction.

Removing Features

Lukas Mathis has written one of the best articles about removing features that I’ve seen. It’s always tempting to keep adding more, when really adding better is really what’s required.

More On The Use of h.264

The hubbub around h.264 that I talked about in the first SlowNews issue has a great new summary courtesy of Ben Schwartz. Ben took the actual license text from various pieces of software that produce h.264 videos, making it plain as day that people creating videos and posting them online are quite often in violation of the patents. Whatever people may think of Theora’s quality, at least it is unencumbered.

Mugtug Sketchpad: Fast Painting with Canvas

If you’ve doubted the growing ability of standards-based webapps to fully replace many desktop apps, Sketchpad should sway you. As long as you’re not using IE.

Detailed Riak Overview

Sean Cribbs insists that you should use Riak for your next Rails app. I’m not likely to be created a Rails app any time soon, but this was still a good overview of Riak. I’ve personally had a lot more exposure to MongoDB and Redis than Riak, so it’s nice to get a feel for what Riak’s all about. Also worth a look: Riak now supports JavaScript-based map/reduce jobs.

Rails 3 Beta Release

I don’t intend to include beta releases or vaporware here in general, but Rails 3 has been in development for a long time and is coming out from under its merger with Merb. So, in case you missed it, here’s DHH’s post about Rails 3.0’s beta.

Free F# Book

I’ve been impressed by some of the directions in which Microsoft has taken their development tools. The F# programming language, a functional language, seems like the kind of thing you wouldn’t see coming out of Microsoft (or, at least, beyond the research prototype stage). But, it’s certainly well beyond research prototype and now you can even get a feel for F# from a new, free book by John Puopolo with Sandy Squires.

> list
11 goto 11

Top 11 Reasons Why There Was No List Last Week

11. Perhaps every other SlowNews issue has no list?

10. There was no list?

1. I forgot.


SlowNews: iPad, zeromq, open source, toppcloud

Apple iPad: Open and Closed

Obviously, the iPad was introduced this past weekend and probably a million words or more about it have spilled out onto the net. Here’s just a few of those words.

Yehuda Katz takes the open side in “A GREAT Day for Open Technologies”. Actually, Yehuda takes both sides. Apple has created a closed platform while at the same time creating a very powerful platform for the Open Web. The trouble is that if you view the iPad as the future of computing, it is a scary thought as a geek to work on a platform that is so closed off. That’s more of Peter Kim’s take.

Personally, I agree with stevenf’s take that the iPad is the “new world” of computing, and it’s really a better world for most users. But, it’s only “new world 1.0″. It requires another computer. It can’t print. I believe that Apple is going to create a Time Capsule sort of device to which you can dock iPhones and iPads without needing a full computer, because an iPad is a full-enough computer for most people. For now, though, iPad is going to start making its way in the world as that “third device” that Steve Jobs referred to upon introducing it.

Mark Pilgrim and I apparently had similar tracks to learning computers (though mine was a TRS-80 Model III, not an Apple ][). He worries that future tinkerers will be left in the cold because of devices like iPads. There’s a huge difference between now and a couple decades ago. Computers were all for tinkerers then. Computers are for everyone now. I think there will remain ways for people to tinker.

iPad SDK: No Multitasking, New Shared Files

MacRumors has a quick rundown of the new iPad SDK. It has support for external displays (for Keynote, I’d imagine). No multitasking is supported. There’s a new shared filesystem, which is presumed to be the way to get iWork documents onto the tablet. There’s also said to be support for apps that support both iPad and iPhone, which should be interesting.

zeromq: Very Lightweight Messaging

Martin Sustrik and Martin Lucina have written an article about zeromq (“a new approach to messaging”), which looks to be about as minimal a messaging system as you can imagine. It’s got an API that’s patterned after BSD sockets. The comments that follow the article are quite interesting and useful as well. There’s a comparison of zeromq, AMQP and RestMS and the different kinds of things those are good at. RestMS actually sounds quite interesting to me. I’ll need to read a bit more about Zyre, which is a RestMS implementation.

ScriptCommunicator: Long Polling for Every Browser

Amir from Plurk has created a small (80 lines) module (ScriptCommunicator) for doing long polling, regardless of the browser. Even if real time isn’t right for everything (this is SlowNews after all), Comet is quite important and this little library deals with some of the tricky bits for one style of Comet.

(fab): A DSL for async coding with node.js

fab will likely remind people of Lisp, because of all of the parentheses. Look more closely, and you’ll notice that the parens are not nested… because this is proper JS, and fab is working through function call chaining. The goal of fab was to provide a nice way to define how URLs get handled in a node.js-powered web app. It’s a neat idea and the result is reasonably clean.

gccgo is Official

GCC 4.5 is slated to include Go. It will be interesting to see when Go-based projects actually start appearing, and when the first Go-based “killer app” arrives on the scene (think of what CouchDB and RabbitMQ have done for Erlang, for example).

75% of Linux Code is Written by Paid People

Over the years, I have seen a number of people characterize open source as written by “hobbyists”. That isn’t actually a derogatory thing to say, because people volunteering their time to a project that they believe in and love will likely do it well and with gusto. But, I’ve always thought that the view of hobbyist-driven open source is not the likely picture for large and successful open source projects. Jonathan Corbet analyzed Linux kernel contributions across 2009 and found that 75% of the code came from people who were being paid to write that code.

Creating a significant open source project can be at least a full time job. For something like Linux, it’s obviously many full time jobs.

toppcloud: Easy, Reliable Cloud Deployment

The prolific Ian Bicking has just spread word of toppcloud. He’s been mentioning it on twitter for a while, but now he gives the full story. If you have to deploy server side code (and don’t mind using Ubuntu on your VPS), check out toppcloud as a way to potentially make things easier.

Hot Code Reloading for node.js

Blaine Cook has a branch of node.js that can hot reload modules. This is obviously great in both development and production, when implemented well.

A zsh Prompt That Understands Hg, Git, Mac Batteries

Steve Losh has created a seriously tricked out zsh prompt.

CommonJS: The First Year

CommonJS turned a year old this past week, and I wrote a retrospective on that first year. Short form: JavaScript is growing fast!

Geek Conversation Killers

Philip Guo has an interesting article about awkwardness of “geeks” in conversation. I have definitely both witnessed this and caught myself doing some of these things. If you’re a geek like me, put a few brain cells onto the task of watching for these things during your next conversation. Calley Soukup has an interesting collection of observations about how sci-fi fans communicate, dating back to 1999.

Feedback for SlowNews #1

“very promising debut!!!” @uhop

Hypocrite. The article was posted today. Let’s see if it’s still here 24 months from now in the same form.” lutusp on reddit. Ed: this is odd, everyone has to start with a thought sometime. I’m pretty sure that in two years I’m still going to think that real time flow of random news is a bad thing.