Joining Automattic

I have had two great years with Vidavee and now inside Vignette there should be new levels of success. Looking forward to seeing what the new organization can do with these products. There are some great people at Vidavee.

Recently, I met up with Matt, Barry and Toni and got to know them a little bit. I have been lucky enough to be offered a chance to join the Automattic global team. A seriously talented group of people, I am honored to be part of it.

Very much looking forward to being involved in such a prominent Open Source project which I have been using for a while (and which Vidavee created a plugin for) and generally supporting the related services. Who knows what future magic these folks have up their collective sleeves.

I start in a couple of hours. I’ll try to blog more now.

May 5, 2008 (7 Comments »)
Tagged with: , , ,

Semi baked Wordpress theme: demure

Spent a few hours hacking together a WP theme from scratch to get to understand how some of the new WP functionality works. This theme has a pretty minimalist feel, not much going on with it.

Download it if you would like: demure-05.

Unbelievably right now my house only has Macs in it. There isn’t a Linux box powered up (construction going on) and there is no Windows here. Not even a VM anywere at this point. Wow. So this hasn’t been tested properly. I bet it looks terrible in IE. Sorry. I’ll do some testing soon.

May 4, 2008 (2 Comments »)
Tagged with: , , ,

In search of the perfect office chair: Humanscale Freedom

Anyone who works on their computer all day should get a good chair. I have some lower back pain from years of sitting on cheap chairs. The problem is that there is no chair that suits everyone, so you can’t use other people’s reviews to guide you beyond the manufacturing quality of the various models. That said, here is my review of the Humanscale Freedom chair in leather ;)
Read the rest of this entry »

May 3, 2008 (4 Comments »)
Tagged with: , ,

Blog moved to Amazon EC2

I decided to move my blog, and some other services I run, to Amazon EC2. I have had nothing but excellent service from the current hosting company, Rimu Hosting where I have a VPS, however I want to see how reliable EC2 really is in practice.

I don’t yet have access to persistent storage on EC2, so I cobbled together a quick paranoid hourly data dump of critical files to my S3 account. Investigated a few different S3 backup options, settled on a quick and dirty.

Read the rest of this entry »

Apr 27, 2008 (No Comments »)
Tagged with: , ,

First WP theme in years: dodgy

I took the basic assembly parts of this theme from man~ja by Praveen Kumar Ramanathan and then changed most of it. Took about 2 hours all in all and didn’t turn out the way I planned. Anyway, it’s a moving target.

Here is my WP theme: dodgy and it’s not going to win any competitions.

Artwork credits: Some of the vectors which went into the title image come from Vecteezy.com and are Creative Commons licensed. Includes this one from vectorstock, this one by cubik, this one by neno/hybrid and probably some others.

Apr 27, 2008 (No Comments »)
Tagged with: , ,

Rube Goldberg machine using short URL services

Twitter is littered with URL-shortening links. How many can I chain together in a big Rube Goldberg machine to arrive at this post?

http://icanhaz.com/rubeurl -> http://tinyurl.com/2wrr8v -> http://xrl.us/rubeurl -> http://lohtuz.notlong.com/ -> http://deadsmall.com/3FB -> http://doiop.com/rubeurl -> http://rubeurl.golopez.com -> http://piurl.com/K7 -> http://lopurl.com/927h6 -> http://blog.linuxinternet.org/rube-goldberg-machine-using-short-url-services/

One of these services blows up sometimes and spews raw HTML into the browser. Interesting. Fun

Mar 28, 2008 (No Comments »)
Tagged with:

Approximate comparative fuel economy of various vehicle types

Below is a super-basic study I did this evening of relative fuel economy of a few different transport options. This was very unscientific, in a few cases the numbers were guesstimates, or averages of averages, so is not a conclusive study in any way… Also, it doesn’t take into account the fact that not all gallons are created equal, and that different fuels (avgas vs regular unleaded, for example) must surely have significantly different environmental impact. The numbers come from various sources, some official some not, gathered in an hour or so.

Read the rest of this entry »

Mar 18, 2008 (No Comments »)
Tagged with:

Squid 2.6 config for reverse proxy accelerator

Caching is an important part of a scalability strategy for a busy web application and there are many tools out there which perform various types of caching.

I favor the Reverse Proxy style cache, where a dedicated cache layer sits in front of your application stack and is the common gateway for all inbound and outbound traffic. This way you can offload as much of the work on an easily scalable cache layer, and allow fewer and fewer requests to burden the backend servers where the lifting is heavier, and cheap and simple horizontal scalability can be more challenging.

I have evaluated many of the caching tools out there, and decided to go with Squid for one reason: sheer volume of information available (such as archived mailing list entries). When the impossible issues arise I like to have a large set of data to research from. That said, there are quite a few challengers to Squid’s dominance in the caching realm, and most of them have superior performance and more modern design than Squid does.

The alternatives I have looked at include ncache which is based on the awesome nginx, Varnish which is the clear performance leader and will become mainstream very soon I imagine (and powers this very site), Mod-Cache for lighty and also various combinations of Apache with mod_proxy, mod_cache and mod_mem_cache.

In testing, I showed a 500%-700% page load time decrease, and 300%-500% throughput speed increase, and a backend offload rate of 40%-90% of requests when Squid was introduced in front of one particular application. This increases capacity by an order of magnitude, at the cost of some (cheap) hardware and one more moving part which can fail or introduce bugs (timeouts, anyone?). It’s a very acceptable tradeoff IMHO.

Here’s what you came for: A very stripped down, and possibly less than 100% secure (Squid ACLs still vex me to some extent) squid.conf for a reverse proxy accelerator:


##########################################################################################
# Admin settings
##########################################################################################
cache_mgr cacheman@yoursite.com
##########################################################################################
# Cache Params
##########################################################################################
# Disk cache: 4096 MB, 16 top directories max, 256 second-level directories max
cache_dir ufs /path/to/squid/current/var/cache 4096 16 256
# want to use volatile memory for squid?
cache_mem 340 MB
#This option enables multiple requests for the same URI to be processed as one request
#and needs careful consideration
collapsed_forwarding on
#Smallest expiry interval that Squid will honor in headers
minimum_expiry_time 120 seconds
##########################################################################################
# Backend Servers Settings
##########################################################################################
#URL of the site you are caching
http_port 80 accel defaultsite=domain.yoursite.com vhost
#round robin loadbalancing of backends
cache_peer 192.168.10.25 parent 80 0 no-query originserver round-robin name=server25
cache_peer 192.168.10.26 parent 80 0 no-query originserver round-robin name=server26
#send some requests to different places by naming cache_peers and using acls
cache_peer 192.168.10.10 parent 80 0 no-query originserver name=server10
##########################################################################################
# ACLs
##########################################################################################
acl all src 0.0.0.0/0.0.0.0
#here we can reroute selected requests in an ACL
#anything for /admintools should go to server10
acl adminonly urlpath_regex ^/admintools
cache_peer_access adminonly allow server10
cache_peer_access server25 deny adminonly
cache_peer_access server26 deny adminonly
#security feature: allow only traffic for this URL pattern through your Squid
acl our_sites dstdomain .yoursite.com
http_access allow our_sites
##########################################################################################
# ACLs for manager app
##########################################################################################
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
http_access allow manager localhost
#set your password for cachemgr here
cachemgr_passwd myn1cepass all
##########################################################################################
# Headers
##########################################################################################
#i prefer to have the Via header
via on
header_access Via allow all
header_access Age deny all
header_access X-Cache deny all
##########################################################################################
# Refresh-patterns: forcing caching behavior, even when the backed Headers are wrong
##########################################################################################
# Note: some of these actions violate the HTTP standard and can cause issues.
# ref: http://www.squid-cache.org/Versions/v2/2.6/cfgman/refresh_pattern.html
#images we cache for 10mins no more no less, no matter what the backend tells me
refresh_pattern -i \.jpg$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
refresh_pattern -i \.jpeg$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
refresh_pattern -i \.gif$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
refresh_pattern -i \.png$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
#swf/flv we cache for 10mins no more no less, no matter what the backend tells me
refresh_pattern -i \.swf$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
refresh_pattern -i \.flv$ 10 90% 10 override-expire override-lastmod ignore-reload reload-into-ims
#html elements we cache for 2mins no more no less, no matter what the backend tells me
refresh_pattern -i \.js$ 2 90% 2 override-expire override-lastmod ignore-reload reload-into-ims
refresh_pattern -i \.css$ 2 90% 2 override-expire override-lastmod ignore-reload reload-into-ims
##########################################################################################
#logs
##########################################################################################
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs % logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %h] [% logformat common %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs % logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %h” “%{User-Agent}>h” %Ss:%Sh
access_log /path/to/squid/current/var/logs/access.log squid
cache_log /path/to/squid/current/var/logs/cache.log
cache_store_log /path/to/squid/current/var/logs/store.log

Jan 27, 2008 (1 Comment »)
Tagged with: , ,

Craigslist: RTFA

I can sympathize with this guy.

Three times I have given stuff away on Craigslist, with tiny list of basic requirements designed to make the giving process simpler. For me. That’s the exchange here: you get something for free, I get to not worry about it anymore. It’s a trade. Three times I have been astounded that people cannot read, or just don’t care. Tonight is the latest episode.

3 years ago: I gave away four older computers and monitors, only requirement was you had to take all of them and I don’t provide any support for them at all. A guy came to pick them up. Two days later my cellphone rings and he wants to know how to boot “Micro-WIndows” on the machine that has Solaris 10 installed. Which part of “No support” was confusing to you? I don’t have an hour to explain UNIX vs Windows to you.

1 year ago: I gave away an older BBQ grill. Two conditions were: bring a big enough truck or van to transport the thing, and bring someone to help you carry it. A guy arrives at 11pm on a Sunday night, in the world’s smallest car, without anyone to help him carry it. I spent an hour helping him disassemble the thing in my driveway and stash the various pieces all over his toy car.

Tonight: I gave away a broken TV to someone who knows how to fix these things. Two conditions: Bring a big enough truck or van and someone to help you carry it. My hands are now aching and bleeding from helping the guy, who arrived alone of course, jam this beast into the front seat of his tiny sedan.

0 for 3. Not good going, Craigslist readers.

Jan 15, 2008 (No Comments »)
Tagged with:

South African Humour (funny prank call)

Dec 21, 2007 (No Comments »)
Tagged with: