Jesse's Software Engineering Blog

AWS Serverless Application Model
AWS Serverless Application Model (AWS SAM) is an abstraction of AWS CloudFormation for templating serverless AWS applications. Using a templating tool to define serverless infrastructure can be extremely helpful as applications grow in size. Codifying infrastructure allows for more visibility and replicability of services. I am going to highlight to some of the benefits of […]
AWS CloudWatch Metrics
AWS CloudWatch metrics are an extremely beneficial tool for monitoring both application code as well as AWS infrastructure. AWS offers many metrics for all of their services, as well as the ability to both push custom metrics and to parse CloudWatch logs to build custom metric filters. These metrics can be used to build dashboards, […]
AWS CodePipeline Continuous Deployment
AWS CodePipeline offers a continuous deployment pipeline which integrates well with serverless architectures. It offers infrastructure creation via AWS CloudFormation, code integration with GitHub (or other) code repositories, building and testing with AWS CodeBuild, and deployment with AWS CloudFormation (or AWS CodeDeploy). CodePipeline allows for various stages in the pipeline which correlate to steps such […]
AWS Lambda Versions and Aliases
Lambda is a great tool for micro service architectures. They are easy to configure, scale well, and have a pay for what you use model. As the services scale out it becomes important to establish development workflows that provide easy deployments and roll backs for production code. AWS Lambda versions and aliases provide configurations for […]
Serverless Auth with AWS Cognito
The rise of serverless architectures has accentuated the need for modular, robust user auth systems. While there are many options, I’m going to take a look at serverless auth with AWS Cognito. AWS Cognito offers both security with the use of the SRP protocol and JWT, as well as easy implementation. In AWS there several […]
CPU Bound Workloads with NodeJS: Processor Parallelism
As discussed in the Understanding the NodeJS Event Loop post, NodeJS is a great language for high I/O workloads. For any program or service that is expected to be I/O bound, NodeJS is arguably one of the best languages for the job due to its asynchronous event model. The single threaded, event loop architecture allows […]
Understanding the NodeJS Event Loop
While there are numerous articles and documentation written about the NodeJS event loop, I wanted to a write about the event loop to help solidify the concept for myself. Being a Node developer it is important to understand what the “event-driven, non-blocking I/O model” paradigm is and how asynchronous functions are being executed. Simply put, […]
Sorting Algorithms
Here is a great resource animating the efficiencies of the various sorting algorithms. Selection Sort Time Complexity: O(N^2 / 2) Space Complexity: O(1) The selection sort iterates an array, finds the smallest value and swaps it with the value in the current slot (starting at the beginning of the array), then moves onto the next […]
Serverless ReactJS with AWS S3
Serverless computing compliments the microservice architecture very well. Instead of provisioning and monitoring a fleet of servers for all the various services, simply use the serverless architecture, only pay for what is used, and don’t spend dev time on maintaining and monitoring infrastructure. Also, by serverless’s cloud based nature and consumption use pricing, serverless architectures […]
Binary Search Tree
Binary search trees are excellent data structures for determining relativity i.e. determining where keys are stored in relation to other keys, on data sets that need to be updated. Sorted arrays can be used for relativity using a binary search algorithm which provides search in O(logn); however this is only efficient on static data sets, […]