Announcing longjohn: long stack traces for node.js
Alright, so I’m deploying some new code at PageLever to move our Facebook sync code to node.js. I’ve just slaved over it for a few weeks, creating a queue/worker system (to be publicly released soon) that keeps track of lots of stats and more importantly errors. Very very important to see our errors. Is the problem with us or Facebook? Have we hit our API limits again? Did I...
Build a Car. Don't Make a Faster Horse.
“If I had asked people what they wanted, they would have said faster horses.” - Henry Ford Henry Ford’s famous line is often used as a guideline for innovation, but I think that the majority of tech start-ups misinterpret the quote. By and large I’m not talking about “cool” products like games or social networks (before they become useful), but websites and applications that serve...
MongoNYC 2011: My Talk on Tracking and Analytics...
Last week I gave a talk about the way we do analytics and tracking at signpost.com. The content was a follow-on to my post about how we moved the tracking system from MySQL to MongoDB. I hope the talk was informative and invite any questions that people may have. Here are the slides: [[MORE]] Video to come…
Signpost Tracking & Analytics: MySQL -> MongoDB
Here at Signpost, we believe in track everything. We keep every request, every event, every log, every exception. We use this data for user tracking, analytics and business intelligence, and code health / bug triage. Original System We started out with MySQL. Requests were logged into a request table, except we handled the 1-Many relationship of request parameters in a single serialized column....
MongoDB Blog Contest - I Won!
I entered my post on Why (and How) I Replaced Amazon SQS with MongoDB into the MongoDB Blog Contest and won! As part of the grand prize, I went out to OSCON in Portland, OR and had a great time! Kristina Chodorow’s new book on MongoDB was on display and I spoke to lots of people who are interested in what MongoDB is and what it can do for them. I also went to a lot of talks, the most...
Why (and How) I Replaced Amazon SQS with MongoDB
What is Amazon SQS? Amazon SQS (Simple Queue Service) is a reliable message queuing service hosted in the Amazon cloud. This service is ideal for sending messages between servers that need to acknowledge that processing has been completed. When a message is popped from the queue, it is not deleted, but marked with the client who has made the request. The client is then responsible for telling SQS...
MongoDB Java DAO Generator - GuiceyData
One of the best things about MongoDB is the lack of an enforced schema for collections. This flexibility gives developers a lot of power in how they work with their data. Embedding records and arrays inside other records allows both a complexity and simplicity of data organization that RDBMSs can only dream of! All of that being said, working with these records in a language like Java and on large...
MongoNYC Conference May 21st
MongoDB is coming to NYC in May. Andre deCavaignac and I will be speaking at the conference about MongoDB in C#/.Net. We have a cool demo to show everyone and I’ll be posting some of the source here after the conference. Click here to register for the conference [[MORE]] MongoDB is a document-oriented database that I am currently enamored with and use in all of my data-driven projects....
Guicey Tips - Google Guice Provider Modules
Following up on my post about Google Guice Module De-Duplication I want to show a good use of singleton modules. Motivation for the Provider Module pattern came from writing the GuiceyMongo library. Every time a database or collection is configured, I need to install a provider for that database key or that collection key. Since there can be a Production, Test, QA, etc. configuration for each...
Guicey Tips - Google Guice Module De-Duplication
There is no current way in the Google Guice API to run a Module’s configure method only once. This might not seem like a big deal until you try writing something like a logging configuration module or any other module that could be added or augmented in multiple places in your code. For instance, in my GuiceyMongo library, I wanted to allow users to add configurations from multiple modules....
Google Guice & MongoDB - GuiceyMongo Configuration
After using Google Guice for a while, I have come to love it. I feel the same way about MongoDB, especially with all the new features they’ve been adding since 1.0. Following the shiny object, like I do sometimes, I wanted a good way to combine the two. In my own projects I have done this a few different ways, but kept finding the need for something just slightly different. Eventually I...
Google Guice & MongoDB - GuiceyMongo Stored...
Writing and maintaining stored procedures in a SQL database was both painful and annoying to manage, test, and easily encapsulate in code. I usually ended up with an interface defining all of the stored procedures and a lengthy class implementation with JDBC templates or lines of setup and teardown code for each procedure to run. If the procedure changed on the server, I needed to change the...