Dropbox disables ASLR on Windows
Dropbox has become a daily part of my life. I rely on it to synchronise data between my growing set of devices. But how much of an impact does it have on the security of my system? I decided to fin…
Ifs and &&s and Plan 9's Source Code
Spiros Eliopoulos. Blog Posts, Projects, Past Gigs, & Publications.
Go and Assembly
Hi I'm Caleb Doxsey and welcome to my website. I'm a software developer. If you'd like to contact me, you can email me here: [email protected] .
On programming without malloc
Day 36: On programming without malloc
CUDA grep
CUDA grep : Manish and Brandon's 15418 final project
Knossos: Redis and Linearizability
A few weeks ago I criticized a proposal by Antirez for a hypothetical linearizable system built on top of Redis WAIT and a strong coordinator. I showed that the coordinator he suggested was physically impossible to build, and that anybody who tried to actually implement that design would run into serious problems. I…
Hacking the OS X Kernel for Fun and Profiles
My last post described how user-level CPU profilers work, and specifically how Google’s pprof profiler gathers its CPU profiles with the help of the operating system. The specific feature needed from the operating system is the profiling timer provided by setitimer (2) and the SIGPROF signals that it delivers.
Why do RET instructions have a REPZ prepended on x86?
Recently, we began work on a binary static analysis tool. While reading some disassembly, we came across a weird-looking instruction, that was present in most everything we gave objdump .
Intel i7 loop performance anomaly
Recently I've been doing some benchmarking and came upon a very surprising behavior from a number of different Intel i7 CPUs (it manifests on Sandy Bridge and Haswell desktop-class CPUs as well as Sandy Bridge-EP Xeon CPUs).
The network is reliable
I’ve been discussing Jepsen and partition tolerance with Peter Bailis over the past few weeks, and I’m honored to present this post as a collaboration between the two of us. We’d also like to extend our sincere appreciation to everyone who contributed their research and experience to this piece.
Parallelism and concurrency need different tools
In this piece, I disagree with Joe Armstrong and Rob Pike, basing my argument on the differences between vending machines and gift boxes (illustrated with drawings carefully prepared in Microsoft Paint).
Go 1.1 performance improvements
This is the first in a series of articles analysing the performance improvements in the Go 1.1 release.
Call me maybe: Redis redux
In a recent blog post , antirez detailed a new operation in Redis: WAIT . WAIT is proposed as an enhancement to Redis’ replication protocol to reduce the window of data loss in replicated Redis systems; clients can block awaiting acknowledgement of a write to a given number of nodes (or time out if the given threshold…
Tracking down a memory leak in Ruby's EventMachine
At Stripe, we rely heavily on ruby and EventMachine to power various internal and external services. Over the last several months, we’ve known that one such service suffered from a gradual memory leak, that would cause its memory usage to gradually balloon from a normal ~50MB to multiple gigabytes. It was easy enough…
Windows Timer Resolution: Megawatts Wasted
The default timer resolution on Windows is 15.6 ms – a timer interrupt 64 times a second. When programs increase the timer frequency they increase power consumption and harm battery life. They also…
More on Postgres Performance
If you missed my previous post on Understanding Postgres Performance its a great starting point. On this particular post I’m going to dig in to some real life examples of optimizing queries and indexes. It all starts with stats I wrote about some of the great new features in Postgres 9.2 in the recent announcement on…
What are Linux containers and how did they come about?
Today's announced collaboration between Red Hat and dotCloud , the company behind Docker, is exciting for a lot of reasons. As the release n...
A Unix Utility You Should Know About: Netcat (2009)
This is the second post in the article series about Unix utilities that you should know about. In this post I will introduce you to the netcat tool or simply nc. Netcat is often referred to as a Swiss Army knife utility, and for a good reason. Just like the multi-function usefulness of the venerable Swiss Army…
600K concurrent HTTP connections with Clojure and http-kit
Edit(2013/1/29): http-kit is a event driven HTTP server & client for Clojure. It’s open source, https://github.com/http-kit
How statically linked programs run on Linux
In this article I want to explore what happens when a statically linked program gets executed on Linux. By statically linked I mean a program that does not require any shared objects to run, even the ubiquitous libc . In reality, most programs one encounters on Linux aren't statically linked, and do require one or…
I now have Rust code for executing executables
Day 45: I now have Rust code for executing executables!
Writing a FUSE filesystem in Python
If you’re a regular reader, you might have noticed that I’ve been on a quest for the perfect backup program , and ended up writing my own encryption layer over bup.