hello.js

var please = require('share');
console.log('thank you');

Thursday, 13 December, 2018 UTC

Collection Operations on Lazy Sequences in TypeScript with itiriri

Collection Operations on Lazy Sequences in TypeScript with itiriri

I’m currently working in TypeScript after spending a lot of time in F#, and I’ve been experimenting with adapting my favored functional approaches to the former. Recently, an Exercism.io puzzle called for iterating over a grid. A year ago, I would have ... more


Thursday, 6 December, 2018 UTC

Setting up a Test FTP Server in Node

Setting up a Test FTP Server in Node

On a recent project, I had a need to create an FTP connection to a third-party server. Since we had no control over the server, I also wanted to setup a test FTP server that I could use to run our client against to make sure we could connect successfully. ... more


Wednesday, 28 November, 2018 UTC

Generating Excel Files using Node.js and ExcelJS

Generating Excel Files using Node.js and ExcelJS

Recently, I was tasked with writing some code to generate Excel workbooks containing sales data. I implemented the code using a Node module called ExcelJS. I found that this module provides a simple interface to generating documents, and it also supports ... more


Wednesday, 28 November, 2018 UTC

An Approach to Database Testing in .NET Core 2.1

An Approach to Database Testing in .NET Core 2.1

I’ve been working on a REST API written in ASP.NET Core 2.1. Recently, our team wanted to write tests that exercised our business logic and also interacted with our database. I wasn’t able to find many examples of this online, so I was motivated to write ... more


Monday, 26 November, 2018 UTC

Why You Should Avoid Writing Complex SQL Queries – and What to Do Instead

Why You Should Avoid Writing Complex SQL Queries – and What to Do Instead

If you’ve worked with a piece of software that talks to a database, chances are you’ve come across a long SQL query. Slowly, your eyes glaze over as you attempt to reason through the many joins and subqueries, trying to figure out if this query is the ... more


Sunday, 18 November, 2018 UTC

Creating Custom CloudWatch Alarms for AWS Lambdas

Creating Custom CloudWatch Alarms for AWS Lambdas

AWS allows you to setup CloudWatch alarms on many performance-related metrics. Doing this for metrics like CPU load or storage use is trivial. However, setting up custom alarms based on events or errors in a log isn’t as straightforward. By the end of ... more


Thursday, 15 November, 2018 UTC

Pattern Matching without Regex! – Introducing the Rosie Pattern Language

Pattern Matching without Regex! – Introducing the Rosie Pattern Language

Recently, I was able to attend Jamie Jenning’s talk on the Rosie Pattern Language (RPL/“Rosie”) at Strange Loop 2018. I had not previously been aware of Rosie, but after learning about it, I am extremely excited about the prospect of never writing another ... more


Wednesday, 7 November, 2018 UTC

A Case Against Dependencies

A Case Against Dependencies

When you need to add a major bit of functionality to your system, what’s the first thing you do? Naturally, you start looking through whatever package repository is appropriate for a solution that fits. While there’s nothing inherently wrong with this, ... more


Tuesday, 6 November, 2018 UTC

Using an Int Type in TypeScript

Using an Int Type in TypeScript

The project I’m working on has a Node.js back end written in TypeScript, with a PostgreSQL database for persistence. We had a production user who encountered an error when the system tried to insert a row into a table that had an integer column in it. ... more


Saturday, 20 October, 2018 UTC

Running QBASIC in a Browser – My Nostalgic Trip Back to the 1990s

Running QBASIC in a Browser – My Nostalgic Trip Back to the 1990s

Recently, I saw Windows 95 running under Electron. The project definitely brought up some old memories from when I was young and new to computers in the mid-1990s. Back then, I spent all of my time outside of school learning how to write code in BASIC. ... more


Monday, 8 October, 2018 UTC

Fake or Mock an API with JSON Server

Fake or Mock an API with JSON Server

JSON Server is an easy and quick-to-set-up module that you can use to fake or mock an API. You can find the basics in the documentation, and many articles regurgitate the same info. In this post, though, I intend to cover a few of the more complex things ... more


Tuesday, 2 October, 2018 UTC

Getting Started with WebSockets

Getting Started with WebSockets

WebSockets are a useful tool that allow for two-way communication between a web server and a browser. In this post, I am going to introduce the basics of WebSockets by making a (very) simple chat application using Express, HTML, and vanilla JavaScript. ... more


Monday, 1 October, 2018 UTC

Compressing 3D Model Files with Draco

Compressing 3D Model Files with Draco

Historically used for CAD and video games, 3D computer models are working their way into the mainstream. This is, in part, due to the rise in popularity of things like augmented reality and 3D printing. My current project uses 3D model data, and my team ... more


Thursday, 20 September, 2018 UTC

Reactive Programming: A Timed Popup Component with RxJS

Reactive Programming: A Timed Popup Component with RxJS

Reactive programming is all about streams. It involves combining streams, filtering streams, and transforming streams. In reactive programming, the application does not need to pull for data, but it is notified whenever a new event occurs. A few months ... more


Tuesday, 18 September, 2018 UTC

Building a Fake API for Testing & Development

Building a Fake API for Testing & Development

Nearly all applications developed today will integrate with an external service of some kind (HTTP, Bluetooth, etc.). These integrations can pose problems for automated testing, exploratory testing, and even demonstrating functionality to a stakeholder. ... more


Thursday, 13 September, 2018 UTC

Creating a Drag-and-Drop File Uploader with React & TypeScript

Creating a Drag-and-Drop File Uploader with React & TypeScript

A while ago, I was working on a project based off the Atomic SPA Starter Kit, which uses TypeScript, React, and GraphQL. One of the features we needed to build was a file upload component that supported dragging and dropping a file from a separate window ... more


Monday, 10 September, 2018 UTC

Correctly Managing Concurrency in JavaScript

Correctly Managing Concurrency in JavaScript

More times than I can count, I’ve found myself needing better concurrency primitives in JavaScript (or TypeScript) applications. Almost anything you might need is possible using the Promise API, but promises are complex, and there are many subtleties ... more


Wednesday, 5 September, 2018 UTC

Four Hurdles when Prototyping with Material-UI for React

Four Hurdles when Prototyping with Material-UI for React

Google created the Material Design design language to be used across devices. If you’re using Material Design with React, I’d recommend Material-UI for React to get the ball rolling. It’s a library of components or pre-styled elements (similar to the ... more


Thursday, 30 August, 2018 UTC

Intro to Swagger – A Structured Approach to Creating an API

Intro to Swagger – A Structured Approach to Creating an API

Creating an API can be difficult when starting from scratch. And working with a team on determining the structure and testing an API can further complicate the process. Swagger can help this process move more smoothly. In case you’re not familiar with ... more


Tuesday, 28 August, 2018 UTC

Creating a Custom Gboard Sticker Pack – A Guide for Android Newbies

Creating a Custom Gboard Sticker Pack – A Guide for Android Newbies

Recently, Google started allowing developers to create custom sticker packs for Gboard on Android. In case you’ve never heard of Gboard, it’s Google’s latest virtual keyboard. Available on both iOS and Android, Gboard is an all-in-one keyboard that includes ... more


Friday, 24 August, 2018 UTC

Finding Records that Don’t Exist in PostgreSQL

Finding Records that Don’t Exist in PostgreSQL

I was recently tasked with writing a bit of code to find delivery route stops where nothing has to be unloaded. This code is intended to prevent a delivery driver from stopping at a store when there’s nothing in the truck for that customer that day. ... more


Monday, 20 August, 2018 UTC

Resolving Error: “Objects are not valid as a React child”

Resolving Error: “Objects are not valid as a React child”

When building a React component, I ran into this error: Objects are not valid as a React child (found: object with keys... Invariant Violation: Objects are not valid as a React child (found: object ...). If you meant to render a collection of children, ... more


Tuesday, 14 August, 2018 UTC

Simulate Network Outages in Your App with Little Snitch

Simulate Network Outages in Your App with Little Snitch

Modern development tools are super-convenient. XCode’s more recent builds let you debug an iOS app over WiFi, so you don’t have to succumb to the indignity of plugging in a Lightning cable (so 2017). React Native’s tooling goes a step farther, giving ... more


Sunday, 12 August, 2018 UTC

Beyond Coding Bootcamp, Part 3 – Learning to Think Like a Programmer

Beyond Coding Bootcamp, Part 3 – Learning to Think Like a Programmer

Of all the computer science classes I took in college, there were three that I’d recommend, without reservation, to someone who wants to do my job. Each taught me something that relates to programming as an activity and a way of thinking . There’s nothing ... more


Tuesday, 7 August, 2018 UTC

Managing Data Loaders in Node.js with Shared State

Managing Data Loaders in Node.js with Shared State

When developing software, it’s always tough to work with caching. While my team appreciates the efficiencies that Data Loader can provide for applications, we still struggle with the same problems that always come up when caching queries, mainly invalidating ... more


Monday, 6 August, 2018 UTC

Beyond Coding Bootcamp, Part 2 – Understanding Algorithms

Beyond Coding Bootcamp, Part 2 – Understanding Algorithms

If you’re going to be a developer, you need to understand algorithms. At its most basic definition, an algorithm is just a program. “print(“Hello, World!”)” is an algorithm, albeit a very boring one. As a software developer, your job boils down to reading ... more


Friday, 27 July, 2018 UTC

An Intro to React Navigation for React Native

An Intro to React Navigation for React Native

When you first sit down to write a React Native app, you’ll find that after making your first screen, you don’t have an easy way to navigate to another. React Native doesn’t have that functionality built in, but in this post, I’ll outline how to use ... more


Wednesday, 25 July, 2018 UTC

Understanding the Apollo Default Resolver

Understanding the Apollo Default Resolver

According to documentation for Apollo’s GraphQL-tools: You don’t need to specify resolvers for every type in your schema. If you don’t specify a resolver, GraphQL.js falls back to a default one… The documentation goes on to state that the default resolver ... more


Thursday, 19 July, 2018 UTC

Adding Integration Tests to Gradle

Adding Integration Tests to Gradle

It’s well understood that unit tests alone may not be sufficient to release new code with confidence. Integration/functional tests are used to automate testing for workflow regressions. As part of setting up a new Java REST API server, I wanted to embed ... more


Tuesday, 10 July, 2018 UTC

IdentityServer Authentication with an MVC Client & Unauthorized Loops

IdentityServer Authentication with an MVC Client & Unauthorized Loops

I’ve learned a lot about authentication this past month. My team has been working on migrating an application from using Forms Auth to IdentityServer single sign-on. Our goal is to provide a centralized authentication for all parts of the system. This ... more