Jun 14, 2019

New styling

I spent a few evenings this week redesigning this site. I usually update the HTML and CSS locally and tweak things as I go, but this time I started with a mockup in Sketch and didn’t touch the code until I had something that really looked good. This workflow worked out great.

Here’s what changed:

  • Font styling has been adjusted to look cleaner and more consistent. I thought about changing the font I used but small color and size tweaks ended up solving the issues.
  • There are summaries of posts on the front page instead of lists. Smaller posts like this one show up as a whole.
  • The top posts have moved to their own section.
  • Comments have been removed.

Now I just have to write more 🙂.

May 24, 2019

Security acronyms

I joined ShiftLeft a year ago, and since it’s my first time in the security space I had to familiarize myself with the following terminology. I use this as a reference. Hopefully it’s useful for you too!

Keep reading→

Mar 6, 2019

Mini Lisp

I implemented a small Lisp interpreter over the weekend. You can find it here: https://github.com/Preetam/mini-lisp. It’s about 400 lines of Go code so far.

I started writing an interpreter a couple of months ago using the mal - Make a Lisp guide. After step 4 my implementation felt really messy, and I felt I was just doing what the guide told me without learning too much about how things actually worked. Later I found Peter Norvig’s (How to Write a (Lisp) Interpreter (in Python)) which is a much simpler version, and that was the inspiration to start over.

Here’s what you can do with it. Let’s start with a simple factorial function:

Keep reading→

Sep 18, 2018

Terrace Storage Experiment Update

What is Terrace?

Terrace is my new storage format for events and time series that I think can change the way we think about cloud-native time series storage. I introduced it in an earlier post and mentioned how it will use automatic indexing to optimize data layout. This post is about how the experiment is going so far, and what the next steps are.

So far, things are looking good! Early last month I only had an idea and zero code. Now I have a basic generator, file format, and some success with simulated data. Read on to see how it works.

Keep reading→

Sep 17, 2018

Speed up analytics queries by doing less work

Often times in my work I come across queries like this,

SELECT SUM(count) FROM data WHERE foo = 'bar'
  AND time >= '2018-08-13 00:00:00+00'
  AND time  < '2018-09-13 00:00:00+00'

which is getting a total count for a month with a filter, and they take a long time to run because there’s a significant number of rows in the data table but only a few have foo = 'bar'.

We want these queries to execute faster, which is the same as reducing their latency. Remember that latency comes from doing work or waiting. This post is about modifying the work aspect because analytics queries don’t really have problems with waiting (at least in my experience, but there are exceptions).

Keep reading→

Aug 5, 2018

Terrace Time Series Storage Experiment

I’m working on time series storage again!

My last “serious” time series storage project was Catena that I blogged about here. I wrote Catena to store time series data for a monitoring project I had, and the only use case I had was plotting charts. Since then my requirements have changed. My time series have to be more than arrays of points with simple string names. They have to be computed from events with lots of attributes that I can filter, group, aggregate, and rank.

Keep reading→