Blog


Creating a Robust Notification System - Part 1: Data Augmentation With Redis

Over the last few months I’ve been working on a personal project, and in the next three blog posts I will be talking a bit about one portion of the overall system. I have created what I think it a pretty cool notification and messaging system, during which time I explored several design patterns that were new to me. I would like to share my experience and newfound knowledge. Thanks for reading!

Introduction

The basic goal of this series is to discuss how to create a flexible notification system. This system is not designed to be a personal messaging system; its primary purpose is not to allow users to send messages to each other, but rather to alert a user about some change of state in the overall application. These notifications may be messages sent only to an admin user, alerting them to a new user registration, or perhaps to notify a user about a new comment in a thread they are a part of.

In this post we will be discussing how the notifications and messages themselves are persisted. Later posts will focus on how we create and display the notifications, but for now we will only concern ourselves with how to store the data.

written
code, programming, rails, redis, ruby
Read on →

Nginx and Unsupported HTTP Headers

– Warning: Technical –

One of my favorite pastimes is combining coding and video games. This weekend was full of coding, cursing, and hair pulling (some of the cursing was due to watching the Patriots lose). I play the video game EvE Online and one of the fantastic things CCP, the company that makes EvE, has done is to provide an API into the game universe. This means you can make calls to the API to find out information about your characters, their skills, tasks they are performing in-game, etc. In EvE, players fly spaceships throughout the universe, fighting each other, NPCs, and in general blowing up lots of things. The ships players fly don’t appear out of nowhere however, they must be built by other players in the game. That’s where a friend of mine and I come in. We build capital ships, some of the largest ships in the game. Each ship takes many takes to build, and there is a somewhat lengthy process we go through in game. I have created a website, that helps us track the progress and various stages of production of all our ships. It is mostly for our internal use, but I have grand schemes for its eventual capabilities. It this website that this post is about.

written
code, nginx, rails, ruby
Read on →

Berkeley edX: Software as a Service

Some background: One of the things my company and many others are doing is moving to a more SaaS oriented business model. It’s a growing space in software engineering, and as we see more and more cloud based services I can only expect this trend to continue. SaaS provides many benefits, especially for a rapidly changing product as ours. SaaS would allow us to roll out features to clients quickly and in a scalable manner, ensuring some level of consistency across all clients without having to worry about which version a client was on, which version fixed a bug they had, etc. We recently made some changes to our software that made it technically feasible to use a SaaS methodology, allowing us to run multiple clients off one instance of our product. We don’t currently have that set up, but we’re definitely moving in the right direction.

written
edx, software engineering
Read on →

OpenSSL Is a Pain

– Warning: Technical –

Today I had the joy of dealing with a particularly annoying problem at work. What should have taken me about two minutes to set up, ended up taking an hour and a half and four people’s time.

To understand this post, you first need to know a little bit about how some of our software works. Most of the modules in our software talk to external data sources, pulling in content and feeds from different types of backends the client may have. We have some modules however, that talk to our own internally developed backend. Our own backend we’ll call the content server (CMS), and the consumer we’ll call the application server (app server).

written
code, openssl, work
Read on →

Up and Running With Octopress

As you can clearly see, I just finished installing Octopress. Over the past few weeks I have had sudden urges to write things down, either for discussion or mental relief. I used to have a blog on Wordpress several years ago, but I stopped writing for a while, and eventually trashed it. I figured I’d start one up again, using it to document various projects or ideas of mine.

written
github, octopress, ruby
Read on →