build with purpose


Building an Event Source System - Part 2

Continuing my previous post, we'll be working to setup an event source system using NodeJS. Event source systems utilize a common log of events to manipulate system state in a repeatable and scalable way. By recording state changes in logs, the system doesn't need to rely on a database requests to gather state information. This has a variety of benefits that I've included previously. I enjoy working with the JavaScript/TypeScript, React, and NodeJS stack and find these tools very expressive.

Building an Event Source System - Part 1

I love working on the full stack of technologies involved with developing an application. It's satisfying to design and implement a feature on the backend and request the data from the frontend application to render out something awesome. It's very rewarding but it can be a long process to set everything up. It's often a boilerplate experience and I often find myself doing a lot more devops than development. This got me looking for alternative ways to setup servers and systems that could aleviate this need to iterate on systems rather than programs.

Effective Endpoint Design Techniques

I've recently come across some pretty effective concepts surrounding the design of endpoints. My career has been focused on backend server code recently where I've needed to create, extend, and refactor endpoints. I'd now like to share what I've discovered along the way that has made my endpoint code more maintainable, testable, and performant. I'll be using a little bit of ES6 style NodeJS code with Express syntax to explain my points.

Simple Setup: DynamoDB with NodeJS

DynamoDB is a NoSQL Document Key-Value Database hosted by AWS. They offer to serve their database as a scalable cloud solution offloading the work of maintaining a database from developers. DynamoDB also features many integrations with other elements of the AWS stack like triggering Lambda functions and analyzing data in Elastic MapReduce. They support downloading and installing a local version of the database for development which allows developers to test without worrying about being charged.