don't panic.

Internets

The best thing about the internet is how it puts you in contact with people smarter than you.

The worst thing about the internet is how it puts you in contact with people smarter than you.

3 months ago on May 18th, 2010 at 10:37 am | Permalink
"I haven’t taken risks, because I’m content. I haven’t pushed myself […], because I’m making enough to live on."
3 months ago on May 18th, 2010 at 9:45 am | Permalink

Have I mentioned how much I hate PHP this week?

5 months ago on April 8th, 2010 at 2:54 pm | Permalink

Comet with Bayeux: node.js vs Jetty and cometd

I’ve been looking at the relative performance of cometD-jetty and node.js for a Bayeux based publish/subscribe server.

I had high hopes for node.js. Apps being written in Javascript should mean pretty big maintainability wins for a normal web development house, versus the rather huge Java codebase that is Jetty.

Unfortunately node.js got thoroughly trounced by Jetty in the not-terribly-scientific benchmarks I conducted.

I used the Jetty load test tool described here to do the load testing. The faye node.js Bayeux library was used as the node.js app.

Both benchmarks were run on the same machine, a 4 core i7 920 @ 2.67GHz (hyperthreading turned on) with 6Gb of RAM.

The final results were as follows:

jetty 6.1.22 (512mb)
100 rooms, 5 rooms per client, 900 clients
---
Messages - Success/Expected = 442758/449601
Messages - Elapsed/Rate = 12192 ms / 36313 messages/s 
Messages - Latency Distribution Curve (X axis: Frequency, Y axis: Latency):
         @            _  155 ms (117638)
                   @  _  309 ms (256939)
   @                  _  462 ms (42652)
 @                    _  615 ms (7851)
@                     _  769 ms (3172)
@                     _  922 ms (2961)
@                     _  1076 ms (2885)
@                     _  1229 ms (2028)
@                     _  1382 ms (1381)
@                     _  1536 ms (1576)
@                     _  1689 ms (986)
@                     _  1843 ms (564)
@                     _  1996 ms (410)
@                     _  2149 ms (679)
@                     _  2303 ms (409)
@                     _  2456 ms (220)
@                     _  2610 ms (179)
@                     _  2763 ms (133)
@                     _  2916 ms (42)
@                     _  3070 ms (53)
Messages - Latency Min/Ave/Max = 2/250/3070 ms
node.js
100 rooms, 5 rooms per client, 900 clients
---
Messages - Success/Expected = 440234/449428
Messages - Elapsed/Rate = 12254 ms / 35924 messages/s 
Messages - Latency Distribution Curve (X axis: Frequency, Y axis: Latency):
 @                    _  123 ms (1901)
     @                _  239 ms (9046)
            @         _  356 ms (22316)
                  @   _  472 ms (33240)
                   @  _  589 ms (36656)
                   @  _  705 ms (37025)
                   @  _  822 ms (37323)
                   @  _  938 ms (37489)
                   @  _  1055 ms (37680)
                   @  _  1171 ms (37415)
                   @  _  1288 ms (37516)
                  @   _  1404 ms (34069)
                @     _  1521 ms (29466)
             @        _  1637 ms (24187)
        @             _  1753 ms (15184)
    @                 _  1870 ms (7240)
 @                    _  1986 ms (1828)
@                     _  2103 ms (460)
@                     _  2219 ms (127)
@                     _  2336 ms (66)
Messages - Latency Min/Ave/Max = 7/961/2336 ms

As we can see, node.js just didn’t have the same low latency as Jetty, which is a pretty major problem for pub/sub.

5 months ago on March 31st, 2010 at 4:54 pm | Permalink

Demo Driven _

Another addition to the “Demo Driven _” family, to live alongside Demo Driven Development:

  • Demo Driven Infrastructure.

Otherwise known as, “oh shit, our seriously over provisioned development servers are going make it look like the software we’re demoing is horribly slow!”.

5 months ago on March 25th, 2010 at 12:17 pm | Permalink

What the hell, PHP

I know this won’t come as a surprise to anyone, but damn does PHP do some dumb shit:

$string = 'a string of text';
if (isset($string['test'])) {
    echo "What the hell!?";
}
5 months ago on March 11th, 2010 at 11:38 am | Permalink
"In summary, the two opinions about your abilities that you should never trust are your own opinions, and the majority’s opinions."
6 months ago on March 3rd, 2010 at 9:49 pm | Permalink

Everyone starts somewhere.

6 months ago on March 3rd, 2010 at 9:18 pm | Permalink
"… I think it’s important, for anyone who cares about their web sites, to understand just what you’re getting into when you decide to host your own WordPress site."
12 months ago on September 7th, 2009 at 9:20 am | Permalink
"One of the most important concepts here is that to store or retrieve data with a Backblaze Storage Pod, it is always through HTTPS. There is no iSCSI, no NFS, no SQL, no Fibre Channel. None of those technologies scales as cheaply, reliably, goes as big, nor can be managed as easily as stand-alone pods with their own IP address waiting for requests on HTTPS."
1 year ago on September 3rd, 2009 at 9:49 am | Permalink