Category Uncategorized

Avoiding elasticsearch split-brain

Loggly recently held an elasticsearch meetup, which was a great success. One question that was repeatedly asked was how to ensure elasticsearch does not suffer a partition — known as a split-brain. This can be a particular problem in AWS…

Loggly Generation 2 Released!

After 14 months of hard work, the next generation of Loggly has been released. It’s been a great time to be part of the Software Infrastructure team at Loggly and we have put together a superb log aggregation & real-time…

Technical Leadership through Testing

As technical lead at Loggly, responsibility for a well-engineered infrastructure ends with me. And one way to ensure the system is designed and implemented well is to stay as close as possible to the code, ensuring that the team and…

Using the Source

I have written another post for the Loggly blog — all about our guidelines for choosing and integrating open-source software and technology in your next project. Check it out here.

If you love your logs, set them free

I recently wrote my first post for the Loggly blog. It illustrates why host machines are often the worst place to store the logs those machines are generating. You can check it out here.

Monitoring Storm Kafka Spouts using Python

When running a large real-time processing system, monitoring is critical. But it does more than allow you to keep an eye on your system. During development it allows you test hypotheses about how it works, how it performs when certain…

Boost ASIO timers — errors are never enough

The Boost ASIO Library is a wonderful piece of software. I’ve built high-performance event-driven IO C++ programs that just scream — it works very well. However, there is one subtlety when it comes to timers — specifically when it comes…

Bootstrapping Cassandra

Cassandra is an open-source, distributed database, informally known as a NoSQL database. It is designed to store large amounts of data, offer high-write performance, and provide fault-tolerance. I recently needed some hands-on experience with Cassandra, and being relatively new to…

Generating Type-1 UUIDs using C++

I needed some C++ code to generate Type-1 time-based UUIDs. The Boost libraries, while offering support for other types, don’t have support for time-based UUIDs. A cut of my code can be found in github.

mutt and Google Mail

I finally moved to mutt for my Loggly e-mail (which runs on Google Mail). After moving from e-mail client to e-mail client, I was keen to give it a try — the minimalist design and speed really appealed. It took…

New Challenges

After almost 5 years at Riverbed Technology, it’s time for new challenges. I’ve started a new development position at Loggly in San Francisco, helping to build their Cloud-based Logging-as-a-Service platform. I spent significant time at building systems that needed comprehensive…

Eating your own dogfood

Dogfood testing is an effective way to increase testing, and get valuable feedback, on one’s products. It can be especially effective in the earlier stages of a product’s development, when the user base can be small. Having a forgiving —…

Kubuntu 11.04 on the Chembook 2370VA

My experience with Fedora 15 was not as I had hoped. The ATI graphics driver was particularly problematic (regular minute-long hangs due to spinlock issues) so I decided to try a completely different distribution. I decided to go with Kubuntu…

A simple host system for a 6502 emulator

CPU emulation, particularly of older processors, is an interesting topic. While emulation source code for various CPU cores is easily available, I wanted to better understand how to interface the emulated CPU with my host machine. Therefore I decided to…

Fedora Core 15 on the Chembook 2370VA

It’s been almost 18 months since I installed Fedora Core 12, so I decided to move onto Fedora 15. While the install went OK, I am not (yet) convinced it was worth the hassle. While it’s nice to pick up…

The Power of the Cloud

I recently wrote a entry for the Riverbed Technology blog, describing an interesting collaborative development experience I had with the AWS EC2 Cloud. You can read it here.

My guidelines for reusable Django applications

I came to Django development from much lower-level development — embedded software, device drivers, and system software. What has impressed me most about Django (and python in general) is the manner in which it guides you to do the right…

gdb, inline source, and stepping through your code

I really like having inline source when using gdb. Code Complete, by Steve Mcconnell has an entire chapter explaining how you should proactively step through all code you write — and not just when you’re actively debugging an issue. Having…

Do you use expect? You should

expect is a tool built using Tcl which allows you to automate many tasks that would otherwise mean tedious repetition at the command line. While many tools come with a command line interface, they don’t lend themselves well to scripting…

Installing Fedora Core 12 on Chembook 2370VA

After a good experience with Fedora Core 8, and a reasonable experience with Fedora Core 11, I decided to install Fedora Core 12 on my Chembook laptop. In summary, while FC8 and FC11 worked out of the box, FC12 failed…

Valgrind, blessed be its name

Valgrind comprises a bunch of very useful tools for detecting problems with your programs. I first came across it a couple of years back and find it to be excellent. In particular I use its memory profiler, which helps you…

My git workflow

I cannot praise the revision-control tool git highly enough, and often use it as a buffer between SVN and me. Much of my professional work flow involves fixing a bug here, fixing a bug there — lots and lots of…

php and EXIF data

A colleague at work gave me the idea of storing metadata for each photo on my brother’s site inside its EXIF data. I liked this idea as I originally thought I would need another text file on disk, which described…