Deploying Pre-trained Keras Models Using Tensorflow 2 on Amazon SageMaker

How does one go about deploying a model on Amazon SageMaker from Keras, TensorFlow, or TensorFlow Hub without first doing training? There are countless articles and blog posts discussing how to train a machine learning model using TensorFlow or Keras, and then deploy that model right away to Amazon SageMaker.  But what if you're already starting from a SavedModel, or just want to serve up a model trained on plain vanilla ImageNet from within your own AWS account?  You might end up wading through tons of confusing, outdated information that will misguide you, causing you to go down rabbit holes that will make things seem unnecessarily complex.  For instance, you might be inclined to use compatibility libraries to find low-level attributes of modern classes to leverage older deprecated function calls, or to build totally unnecessary infrastructure along the side that makes a Docker container for your model, which will be inevitably broken because you don't know how to invoke it. 

A Look Back on 50 Patents, and Initiating an Innovation Pipeline

Earning 50 patents in just two years is an incredible accomplishment.  My first US patent was granted on June 19, 2018, and my 50th happened June 23, 2020.  This is after beginning to file patents only in mid to late 2017.  How does one go about getting patents so quickly, especially in the highly crowded tech sector, and how can an organization facilitate such excitement among their staff to check for their names at 12:01 AM any given Tuesday? This Process is Nuanced, and Expensive! There is a lot of basic information about patents that you can read about or watch talks on from many other websites.  This includes information such as patents don't have to be complicated or some over-engineered gadget (lawyers make them seem like that, though!); what makes a good patent and what doesn't; why it's important to be first to file versus first to invent; how patents thread the eye of a needle to be written with enough specificity to be plausible, and implementable by someone pro

Extensible Database Tester in Python, with Permutations

Here is some Python code that allows you to generate all combinations of options by choosing one item from an arbitrary number of different lists.  Not only that, but each option is actually a data structure that also includes lots of metadata about the ramifications of the option, in addition to the option value itself. Let's say you're looking to run performance testing on different types of tables and underlying data arrangements in Amazon Redshift Spectrum.  You can devise a template SQL query that can be configurable in multiple ways.  For instance, you could choose between multiple tables or views from which to query data (say, if comparing Redshift to Redshift Spectrum performance), and you also want to see the performance of count(1) vs. count(*) to see if one uses more data or works quicker on Redshift vs. Spectrum.  Thus, you already have two lists of options, and need to come up with the four permutations of these options. The Groundwork Basically, to lay so

Touring with Turo - The Pros and Cons

Driving to more remote yet scenic places as a side trip to a big city can reveal places and ways of life unknown to folks who don’t get out of the downtown bubble.   Not everything a city dweller enjoys is in the city, so part of the experience of a culture is to get to know where folks go to take a break.   For instance, when visiting Washington, DC, why not hit Virginia Beach too?   Maybe next time you’re in Boston, think of taking a couple hours to go to Cape Cod.   Maybe if you’re in New York City, take a visit to Long Island (though better plan that one in advance).   But if you find yourself in Detroit, it might be better to go to Windsor just across the Canadian border and stay put. :-P  As such, for once, I will regale you with experiences not from software I'm writing, but that I'm using as a consumer. Background - What brought me here? I was in quite a conundrum during a recent trip, visiting a city where several famous Ivy League schools were all ab

Unit Test Database Mocking in Golang is Killing Me!

For some reason, writing a particular set of unit tests in Golang proved to be an extreme hassle.  In this case, I was trying to add a column to a table and then write a unit test to verify this new functionality.   No matter how much I looked around for where to correctly specify how to build this table with the new column, the Cassandra database kept complaining the column didn’t exist.   Imagine how frustrating it is to specify a relational database schema that seems to be ignored by your unit tests. Background Our system consists of a Cassandra database plus a Go backend server.   The Go unit tests require Cassandra to be running locally on a Docker container, but do not seem to actually utilize the existing databases, opting to make its own that is out of reach from anything I can see from TablePlus.   The Go code itself utilizes these objects through some level of indirection by a manager, a harness, and a couple modules dealing in the actual queries. The Fix

John Osborne, Retro Pinball Designer, in Lodi

Back in May, I got to hang out in California for a couple weeks to attend a couple conferences: Google I/O and IoT World.  I did a couple panels at IoT World, and one of them is already summarized on this previous blog post ; the other one is coming later.  However, as a bonus during my time in California, I also got to attend the Golden State Pinball Festival in Lodi.  Here, they had John Osborne, a pinball designer who worked at Gottlieb from 1972-1984.  The following are expansions of notes I took during his Ask Me Anything presentation. A Bit of Background John Osborne started his professional journey by studying electromechanical (EM) engineering at Fresno State.  This, of course, elicited cheers from the local crowd.  After college, he started working at Gottlieb in 1972 at the age of 21.  Besides Gottlieb, he was also interested in working at Chicago Coin, which he said was sketchy, because the hiring manager's last name was always changing; as such, he never applied.