I was dusting off my copy of Ray Kurzweil's The Age of Spiritual Machines today, and found a fascinating chart (adapted below). The book was written in 1998; it's interesting to reflect nearly 20 years later we're more or less on schedule. $1000 will buy you an electronic brain with a "thinking" capacity somewhere between a mouse and human.
Q4 Hackathon Theme: Machine Learning & Data Science
Leveraging Structs and Generics in the Networking Layer with Swift 4 (An update to objc.io Swift Talk)
Swift Talk #1 and #8 introduces an approach (hereinafter alternative approach) to using structs and generics to build a networking layer in Foundation
.
The original code was written in Swift 2.2. Here, I will make an update for Swift 4, incorporating the use of newly available JSON parsing features. I will also show how it could be extended to fetch images.
The Art of Sprinting: It’s Not Just for Software Development

As a sequel to the article I wrote last month about the process and technology improvements I helped design/build firm Design Platform make earlier this year, I wanted to highlight another change that they implemented that transformed their workflow efficiency:
Two week sprints.
Part II: The Case for Unbundling: How Dedicated Apps Can Benefit Your Business

Since Apple began its takeover of the mobile world, apps have basically become the new pocket change. It seems there really is an app for everything. Need a place to keep your grocery list? There’s an app for that. Need to be able to play music according to the weather outside? There’s an app for that, too. Need a place to virtually raise a family of colorful alpacas? There’s even an app for that.
Proxying MS SQL connections using PuTTY
Connecting to a Microsoft SQL Server database isn't too hard, most of the time. But, what if the database is in your office, and you want to access it remotely, but you don't have a VPN?
There is another way to connect, using PuTTY and port forwarding. All you need is a server in the office which accepts SSH connections and can connect to the SQL Server. This will serve as a gateway or makeshift proxy server. With the proper port forwarding setup, you can connect to your database from anywhere.
Push the publish button already

The most important measure of progress in building blogging expertise is not word count, it’s how many timers you hit the publish button. Every post is either a rock or a gem dropped into the water; the rocks will sink and be forgotten but the gems will be scooped up and shared. Drop enough rocks in the water and you are more likely to create a gem.
So push the publish button already.
Momento Mori

In April of 2017 I put a widget on my phone that reminds me that I’m going to die. This is how it improved my life.
A long time ago I learned about the concept of Momento Mori. It’s a simple phrase that is held up by the trussing of history and hardened by philosophy. It means: “Remember that you must die."
Sum Algebraic Data Types in Haskell and Swift
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.
Servers...yay or nay?
Django 2.0 - Is your project ready?

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.
Say no to NoSQL AKA NewSQL is the future!
The rise of Big Data™
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.
The High Cost of Technical Debt: A Case Study

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." [1]
Here's a case study of one such event; unmanaged tech debt caused interest costs to spiral catastrophically out of control.
Be a Partner, not a Vendor

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):
Drupal 8 Entity API cheat sheet
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.
Speed Kills: How Much does a Slow Web Site Cost?

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.
Building an Expandable IoT Data Pipeline - Part 1

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.
Angular 5: Making API calls with the HttpClient service
Angular 4.3 introduced a new HttpClient service, which is a replacement for the Http service from Angular 2. It works mostly the same as the old service, handling both single and concurrent data loading with RxJs Observables, and writing data to an API.
Building an Expandable IoT Data Pipeline - Part 2
Building an Expandable Data Pipeline - Part 2
Creating a Twitter ticker with a Raspberry Pi
The Raspberry Pi is great if you want a dedicated device for a task that you can turn on, get it to do its thing and leave it alone. Recently, I wanted to set up a little LCD screen that would continuously print out the latest tweets from a particular account. With a few components and some Python libraries, it was easy to put together something that I could just plug in and leave running. Here's how you can did it too - if you just want the final code, get it here.
AWS Lambda and Infrastructure as Code
Amazon Lambda, for those not familiar with it, is an event driven serverless platform for compute resources. Rather than paying for an EC2 instance or running docker instances on ECS that runs executable code, Lambda offers an alternative that is for many applications much less expensive. For instance, if you need to routinely resize photos that are provided to you from various distributed sources, you create an S3 bucket for images to be loaded to, which can act as a trigger for a Lambda job to automatically resize them and output the resized photos into a different bucket.