Note to readers, May 18, 2018: the code in this post is built for Angular 5.x. The same techniques will work with Angular 6 as long as you use the rxjs-compat Node package. To see how to upgrade this code for full, native RxJS compatibility, see this post.
November 27, 2017
Background and problem description In late 2016 we were approached with an opportunity to build a data pipeline for one of our large clients. The client needed to obtain sensor data and media (images, video, etc) from custom IoT devices built by one of their vendors. The goal was to capture and analyze metric to improve efficiency of a business process.
November 27, 2017
In my last post, I wrote about the cost of tech debt, using a case study of skyrocketing hardware costs. Here's another, subtler effect of poor performance: impatient customers don't stick around when they experience slowdowns. However, choosing to prioritize speed can be hard to justify when the cost isn't quantified.
November 27, 2017
Wait, is it "$node->title" or "$node->title->value"? How do I write an EntityQuery again? Yeah, I can never remember, either. For the developers out there, if you've already read the official Drupal 8 Entity API documentation and you want more examples, here's a handy cheat sheet: The examples here contain some hard-coded IDs. These are all examples. In your real code, you should already have the node IDs, file IDs, etc. in a variable.
November 22, 2017
Years ago, I received a frustrating email from a disappointed client. I was confused – from an engineering perspective, this should have been a model project. It nailed the requirements on time, under budget, with great documentation, full unit test coverage, and even included some cutting-edge original research and upstream open-source contributions. Here's the email (emphasis added, scare quotes original):
November 16, 2017
Technical Debt: we all have it. Yet, this phenomenon remains poorly understood by product managers. Unlike financial debt, the costs are often hidden and difficult to measure. But the most dangerous aspect is that "Technical Debt items are contagious, causing other parts of the system to be contaminated with the same problem, which may lead to nonlinear growth of interest."  Here's a case study of one such event; unmanaged tech debt caused interest costs to spiral catastrophically out of…
November 14, 2017
With the rise of Big Data™ and IoT we saw a large wave of NoSQL™ proponents. Everyone began to jump on the bandwagon and hype trains to use these technologies to service their persistence layers. It became a mantra and it seemed like the end of nigh for relational (SQL) databases. Some companies were steadfast in only using NoSQL™ stores, claiming this was all that was needed for their data and would not hear another word of ever using a traditional "SQL" database. Unsurprisingly, SQL is not…
November 13, 2017
Django 2.0 is in beta now. It's expected to be released in December 2017. The question remains, is the rest of the world going to be ready? Let's take a look at the history of Django versions and see why this might not be as tough of an upgrade as you might expect.
November 6, 2017
...On Serverless Infrastructure The what
November 3, 2017
"Grove Park Traincare Depot and sidings" (CC BY-SA 2.0) by train_photos Engineers at Metal Toad participate in a variety of continuing education such as the Hackathon, dedicated time for professional development, and various interest groups for a variety of topics like machine learning and iOS/Android development. Haskell I recently joined the interest group on functional programming in Haskell. We start with an introduction to Algebraic Data Types.
November 2, 2017