Mike Perham

On Ruby, software and the Internet

Entries Tagged as 'Software'

Getting iChat to automatically reconnect

December 30th, 2011 · No Comments

I’ve noticed a problem with iChat for the last year or two: if your network drops, you stay Disconnected until you manually tell iChat to log back in. That’s pretty lame, my Comcast cable drops several times a day so I need something a little more robust than that. I found a workaround: use cron [...]

[Read more →]

Tags: Software

Background Processing vs Message Queueing

May 4th, 2011 · 8 Comments

One common simplification I see engineers make is equating message queueing with background processing. This is what they are missing: message queueing is a superset of background processing. All message processing is done in the background but background processing does not have to be done via message queues. Take a simple use case: “I want [...]

[Read more →]

Tags: Software

Node.js Roundup

March 18th, 2011 · No Comments

I just finished a three-part series of blog posts on Node.js over on the Carbon Five blog. JavaScript and Node are very different from Ruby and EventMachine, providing me lots to learn over the course of the last few weeks. Take a look; I hope you learn something too! Node.js, Part I: Overview Node.js, Part [...]

[Read more →]

Tags: JavaScript

The Dangers of Shortcuts

March 1st, 2011 · 1 Comment

MongoDB has amazing write performance. Node.js has great I/O concurrency. Telehash is an extremely efficient wire protocol. All three of these systems have a common theme: they take a shortcut in order to provide a leap in performance over existing systems. In MongoDB’s case, they don’t provide true durability so writes can be batched into [...]

[Read more →]

Tags: Software

Apache Tuning

November 22nd, 2010 · 5 Comments

Want to wreck your afternoon? Just have a poorly configured WordPress install linked from Hacker News. Here’s the postmortem. In my case, my slice was freezing. I didn’t know what the problem was until I ran top and saw this. Yikes. The problem was the Apache is configured by default to allow up to 150 [...]

[Read more →]

Tags: Software

Always Be Closing

October 6th, 2010 · No Comments

I’ve been working on a complex telecom system recently with a codebase that is hard to trace and learn. Given several tickets to fix, my morale flagged a bit as I waded through code last week. Then I remembered an easy morale booster for me: close at least one ticket a day. As an engineer [...]

[Read more →]

Tags: Software

Securing Network Services

August 5th, 2010 · No Comments

The recent memcached security exposé highlighted the fact that simple vulnerabilities require constant vigilance and education for new developers. Rule #1 of Network Security: Don’t expose services which are not designed to be exposed. Web and app servers will usually have 2-3 ports open to the public: ssh, http and https. All others should be [...]

[Read more →]

Tags: Software

Detecting Duplicate Images with Phashion

May 21st, 2010 · 9 Comments

Recently I was given a ticket to implement a “near-duplicate” image detector. Look at these three images: The original image files have different bytesizes and different sizes but they show essentially the same thing. This is what we call a “near-duplicate” and the problem was that when displaying an automatically generated image gallery for a [...]

[Read more →]

Tags: Ruby · Software

Stream Processing and “Trending” Data

May 5th, 2010 · 1 Comment

The Britney Spears Problem is a fantastic article from American Scientist about real-time processing of streaming data to determine trends. I love discovering clever new algorithms and the “majority algorithm” is simple, easy to implement but something you probably wouldn’t think up yourself if solving the same problem. If you’ve ever wondered how Twitter’s trending [...]

[Read more →]

Tags: Software

Risk and Startups

April 20th, 2010 · 11 Comments

I’ve worked at 7-8 startups in the last 12 years, learning along the way that I love the freedom and flexibility that a small company affords. You pay a good price for that freedom though in the form of risk: your job will be measured in terms of months and years, not decades. My parents [...]

[Read more →]

Tags: Personal · Software