My Streaming Setup

I have been asked several times over the past few weeks about what kinds of equipment I use for doing live streams from my home. I’m writing this as a way to share that knowledge broadly, but also as a way to evaluate whether I might be making this more complicated than it needs to be. I will write a companion post about the software I use in the near future.

The Hardware

I use quite a selection of hardware, from lights to cameras, PCs, desks, LEDs, mice, keyboards, and other controllers. We’ll go through each one of them, what they are, where you can get them, and what purposes they serve. I’ll also list pricing when I can. All of the prices are in USD.

Lighting – Elgato Key Light ($199)

The key to good video quality starts and ends with lighting. Yes, a good camera can help, but if your lighting isn’t good, it won’t matter how good your camera is. I use the Elgato Key Light. It is incredibly bright, has adjustable colors from warm to cold white light, and is controllable via an app on my PC and my phone. It also comes with its own mounting arm, which many other lights do not include. I actually have two of these, but one should be sufficient for nearly every application. You’ll also find, as I go through this list, that I am quite happy with the Elgato line of products. They make a second, less expensive light called the Elgato Key Light Air, but it is half as bright, and still costs $129. If you really want to keep your costs down, I’ve also had good luck with the NEEWER USB Dimmable LED Video Light ($44.99). You get two of them in the pack, which is more than enough light, and they’re small, so they’re a great choice if you’re taking your stream on the road!

Camera(s) – Sony a6000 DSLR ($648), Logitech BRIO ($199), Logitech C922x ($129)

I actually have several cameras as part of home office streaming setup, but for most people that are just starting out, I would recommend using the Logitech C922x. It’s significantly cheaper than other options, and it’s an excellent webcam. That being said, let’s talk about why I have several cameras in my setup.

Main CameraSony a6000. This camera is amazing, but it also costs WAY more than a regular webcam. Using a DSLR will make a remarkable difference in your video quality, but it also comes at a price. In addition to that price, it is unfortunately designed to run on rechargeable batteries. This isn’t ideal for a static streaming setup, but thankfully they make a power supply cable (for another $139.). There seem to be generic versions of this cable available, but the official Sony version is expensive. Finally, there’s the connection from the camera to your PC. For this, I use a micro-HDMI to HDMI cable ($10.99), which plugs into an Elgato CamLink 4K ($129).

I use this camera as my primary angle focused on my face. A DSLR gives so much more depth to the video than you can get with a standard webcam, and I think that once you have an audience, this should be your first upgrade. (That being said, this is close to $1000 in total for everything.)

Sony a6000

Overhead CameraLogitech BRIO. This is the best sub-$200 webcam I’ve found, and I’ve used (and purchased!) plenty. Like most webcams, it plugs into my PC via USB directly. No additional devices or cables necessary. I currently have this mounted in a unique “top down” angle in my studio, which is very useful for when I’m doing things with my hands, like building hardware (or Lego!), or sorting baseball cards. This is most certainly not a required angle for any streamer, but it’s a fun way to mix things up when it makes sense. I’ll cover how it is mounted in the “Camera Accessories” section.

Logitech BRIO

Office CameraLogitech c922x. This is a workhorse of a camera for the price. You will not regret this purchase in the slightest. I’ve had one of these for years, and it has never failed me. It is currently my resident “wide angle” shot in my office studio, and does a great job of capturing the entire environment I’m streaming from. It’s a fun, unique way to show people exactly how I’m streaming, and it feels a little “behind the scenes.”

Logitech c922x

Your iPhone or iPad – I’m currently using the iPhone 11 Pro Max, but literally any Apple phone or tablet made in the past 5 years is sufficient. The key to this camera is to use a small tripod or mount, and a USB connection to your PC. There is a fantastic app called OBS Camera that will easily allow you to grab the live video feed from your phone as a camera input for your stream. It’s a camera you already own, and it’s probably better than any webcam option you can find.

Camera Accessories

With cameras comes accessories. You need mounts, tripods, power supplies, and extension cables. This section covers all of those extra parts and pieces.

Elgato Cam Link 4K ($129) – This is the device that connects my DSLR to my PC over USB 3.0. It can take any HDMI connection and connect it to your PC as a video input.

Elgato Cam Link 4K

Sony ACPW20 Adapter ($139) – This outrageously overpriced power cable for the Sony a6000 allows it to run continuously without replacing batteries. It’s unfortunately totally worth it for your streaming setup the first time your battery dies mid-stream.

Sony APCW20 Adapter

Amazon Basics Lightweight Camera Tripod ($18.58) – Initially, I had my camera mounted on top of my monitor. But I found that every time I bumped or nudged the desk, the monitor would move a little, which would also shake the camera. It was like I was recording myself during a bunch of minor earthquakes. Using a tripod gives me the stability I’m looking for (especially using a DSLR), and also gives me more choices for height and angles.

UTEBIT C-Clamp Camera Mount ($25) – This has become my go-to for most of my camera mounting needs. It can adjust to nearly any size shelf or tabletop, and offers three different mounting positions. It is incredibly well made, lightweight, and easy to install.

C-Clamp Mount

Ulanzi Aluminum Phone Tripod Mount ($14.95) – There are plenty of phone tripod mounts out there, and most of them are plastic, with a spring-based tension system. I really liked this one for the durability of aluminum, and the ability to tighten it manually.

Elgato Stream Deck XL ($250) – This is like the command center for streaming. Each of the individual buttons can be programmed to perform a number of tasks, from opening apps or websites, to changing your camera angles and scenes of your stream. You can even hook them up to IFTTT to make all sorts of things happen! This is the 32-button configuration, but there is also a 15-button and a 6-button option for smaller budgets.

JACKYLED Power Strip Tower ($38.99) – This is an amazingly helpful power strip. It contains 12 well-spaced power outlets (for those bigger plugs), and 5 USB charging ports. For most streaming setups, this is the only thing you need.

JACKYLED Power Strip Tower

JACKYLED 6-port Power Strip ($23.99) – Another well-spaced power strip. I have two of these mounted under my desk with 3M strips as a great way to conceal many of the wires that are running between me and the PC.

JACKYLED 6-port Power Strip

Anker 10-port USB 3.0 Hub ($52.99) – It doesn’t matter how many USB ports you think you need on your PC, you will need more. This device can connect 7 additional USB 3.0 devices to your PC, and has enough power to charge 3 more.

Anker 10-port USB 3.0 Hub

Vari Single Monitor Arm ($125) – I actually have two of these, but they are super strong, easy to install, and easy to use. I have one for each of my two monitors. It also has an adjustable height, which was not common on most of the monitor arms I looked at.

Vari Single Monitor Arm

3.5mm Audio Switcher ($23.99) – If you’ve ever wanted to seamlessly jump between your speakers and your headphones, you’ve probably looked for one of these. I simply run the audio output from my PC to this little switch, and then plug in both my speakers and my headphones to the two outputs. Pressing the toggle button will allow you to switch between them instantly without messing with cables or software. It also has a dial for volume, making it much easier to adjust on the fly.

The Desk

I teetered between a number of great choices, but I ended up landing on the Autonomous Smart Desk 2 ($379). It’s a motorized adjustable standing desk that comes in a variety of colors and finishes, and was remarkably easy to assemble. I actually have my entire setup oriented “long-ways” to give me the depth I need for everything to fit on the desk. I have the model shown in the photo, which is white tabletop on white legs.

SmartDesk 2 - Home Office - Autonomous.ai
Autonomous Smart Desk 2

The PC

Last, but certainly not least is the PC I’m using for streaming. This section includes the keyboard, mouse, monitor, speakers, mouse pad, and all of the internal parts, including the processor, video card, and capture card that I’m currently using. Be prepared for LOTS of RGB lights.

FLOPAD RGB Large Mouse Pad ($29.99) – To protect my desktop surface from wear, I wanted a large mouse pad that could hold my devices, but also look cool. This one hits the mark. It’s got a dynamic LED strip around the entire edge, and lots of modes to suit your mood. Also, it’s HUGE. At 32″ wide, it’s actually a little wider than my desk.

FLOPAD RGB Mouse Pad

Aukey LED Mechanical Gaming Keyboard with Blue Switches ($69.99) – If you like that “clicky” sound from your keyboard, this will be a winner for you. A very satisfying click from a very colorful keyboard. Aukey really made a nice tool here, and the software for it gives you infinite control over how it illuminates. I absolutely love this keyboard.

Aukey LED Mechanical Keyboard

AOC CQ32G1 31.5″ Curved Frameless Monitor ($319) – Finding a curved monitor at this size that was also compatible with a VESA mount was more difficult than I expected. Several Samsung models appeared to work, but when they arrived, they didn’t have any mounting holes on the back of the monitor. This screen is huge, beautiful, and can handle everything I throw at it.

AOC CQ32G1 31.5″ Curved Frameless Monitor

Razer Nommo Chroma Speakers ($149) – Initially, I got these for the LED rainbow glow underneath them, but these are also fantastic speakers. I have been asked to turn them down on a number of occasions, so I think they’re sufficient. They also connect via USB or 3.5mm audio cable, which is nice.

Razer Nommo Chroma

Rode Podcaster Studio Microphone ($299) – This microphone was one of my first purchases for this entire kit. You can actually get the microphone by itself for $229, but the boom arm and cage will prove invaluable to you almost immediately. Every time you touch your desk to type, or just to rest your elbows, a microphone sitting on that surface will get bumped and make a sound. By elevating the microphone into the air, and putting it in an elastic cage, you get the perfect serene sound of only your voice. It should also be noted this is a USB microphone, not an XLR. If you get an XLR microphone (which is what most every high end mic uses), you will also need an additional device to import that audio into your PC. A USB mic makes it just slightly easier, and still has a premium sound.

Rode Podcaster Studio Microphone

Glorious Model O Gaming Mouse ($98.75) – I’m a bit surprised by the price on this mouse, because I don’t remember spending close to $100 for it. That being said, it is absolutely the best mouse I have ever used. Incredibly responsive, great responsive clicks. Even the scroll wheel is satisfyingly good.

Glorious Model O Gaming Mouse

Lian Li Lancool II White ($84.99) – Never mind that I clearly love white devices with RGB lighting, this case won me over with its magnetic hinged doors. Nearly every other case I looked at used some kind of screw to hold the doors in place, and this one was brilliant enough to add hinges and magnets to make it super easy to open and modify. It also runs super quiet.

Lian Li Lancool II

G.Skill TridentZ RGB Series 32GB DDR4 3200Mhz DIMM ($139) – I don’t really have much of a preference for brands of RAM, but these were pretty.

G.Skill TridentZ RGB Series RAM

Elgato 4K60 Pro Capture Card ($235) – This fancy piece of hardware lives inside my PC, but its job is to capture the output of another HDMI device, like my MacBook Pro. This allows me to plug any device into the machine, and capture its output. There is also a non-4K version of this device, but it’s not significantly cheaper.

AMD Ryzen 7 5800x ($450) – The newest generation of processors are incredibly hard to find because flippers are buying literally ALL of them and selling them for 2x on places like eBay and Amazon. That being said, this is unquestionably the fastest machine I have ever used, for gaming, programming, or anything else. It’s remarkable.

AMD Ryzen 7 5800X Review | TechPowerUp

MSI GeForce RTX 3070 ($539) – Ah, the GPU. The card from where all of the graphical goodness flows. I know nothing about video cards, or tweaking performance, or any of that. I DO know that I can run every single game I own at full specs, though, so that’s cool.

MSI GeForce RTX 3070

Enermax ETS-850 Air Cooling Fans ($65) – Another product I bought more for the look than the name, these white fans have more lights in them, and as such, were a winner in my book. They also run very quietly, however. My machine is practically silent.

The Backdrop

I actually get just as many questions about the items in my stream’s backdrop as I do about the hardware I stream with. So here’s a list of the items I have lighting up my background.

This image has an empty alt attribute; its file name is sony-a6000.png

NanoLeaf Shapes – Mini Triangles Smarter Kit ($100) – NanoLeaf has a very solid product on their hands. These lights can be controlled by Alexa, but you can also toggle them to respond to music and sounds, and all sorts of different modes and colors. The beginner kit only comes with 5 triangles, but the expansion kit includes 10 more for the same price. They even have an online tool to decide what shape you want to configure them in!

Nanoleaf Shapes - Mini Triangles Smarter Kit (5pk)

LIFX Beam ($149) – First, these are sold out everywhere, and if they aren’t, they’re being sold at incredibly inflated prices. That being said, these are the highlight of my wall. They animate, can make millions of colors, and have tons of great pre-created themes to choose from. Alexa is capable of managing these lights at a far more granular level than most lights I’ve seen. Each set is one shelf in my setup, and as soon as they are back in stock, I’ll be picking up a third set for the top shelf.

LIFX Beam

Govee Dreamcolor LED Light Strip ($49) – I have tried and sampled dozens of different types of LED strips, and these are hands-down the kings. Great app, lots of options, works with Alexa, responds to sounds and music. It also has the best adhesive of any LED strip I’ve found. I still recommend using these strip clips for mounting them, but the ones in my office aren’t clipped. Govee makes many different types of LED strips, so make sure the box actually says “Dreamcolor” on them or you might be buying something a little lower quality.

IKEA Bergshult / Granhult Combination ($59) – I have six total shelves holding all of those Funko Pop figures, and they’re just simple shelves from IKEA. The nickel hardware looks great, and reflects the lights quite well. They even offer a connector bracket to put two shelves next to each other.

BERGSHULT / GRANHULT Wall shelf combination, white/nickel plated, 31 1/2x7 7/8 "

LaMetric Time Wi-Fi Clock ($199) – This is the dynamic little display that lives just over my left shoulder. It has lots of apps that you can configure for your social channels, and you can even create your own. Mine currently loops through stock prices, the date / time, my Twitch followers, TikTok followers, YouTube followers, GitHub followers, and Twitter followers. It’s a fun, dynamic device, but the price is a bit high.

Hacking Airtable with the Alphabet

For those of you that have been following me for a bit, you know I’ve been live-coding Alexa skill development on Twitch for a few months now. One of my favorite tools for development these days is Airtable, which is mostly just a cloud database, but its user interface, api, and documentation is one of the industry’s best. Seriously.

For many of the Alexa things I build on Airtable, whether that’s a trivia game, or just the speech data that I want to say to my users, I always come back to one fundamental problem:

Airtable doesn’t provide a way for me to retrieve a single random record from the database.

There are LOTS of ways for me to retrieve my data. Filter formulas, sort orders, and primary keys give me lots of options. I have access to created and modified dates for each record. If I know what I’m looking for, it’s incredibly easy. But if I want one random trivia question out of the hundreds I have in my table, I typically have to grab ALL of them, and choose one randomly from inside my software. This is a potentially huge, potentially slow process, and one I’m desperately trying to avoid, but when most of my tables have fewer than 100 records, it’s also not destructive. Yet.

Enter sound effects. The skill I’m building has a library of over 1000 sound effects that a user can request. Sometimes, they will say “play the cat meow sound effect,” and I can determine which one that is, retrieve the record, and play it for them. Other times, they will say “play a random sound effect,” and expect to hear something new. How do I solve this randomization problem? 1000 records is too many to grab every time I need to do this.

Here’s how I “solved” this. Each record has a unique identifier, which I call the RecordId. (You can see the entire dataset here.) Below are ten examples of the RecordIds:

recEux9NFw0Cuqrwy
recFqFT3v7gKNryDt
recVHl6WkB3hsfbG0
rectIyMvutLNbdqig
rec5cRiiDDQ2k16kh
reczDDoansCv22MAh
recckUMmBOvOzgzBb
recIOOnbPCZ5QSPBG
recP5xDQkKxV2vEkQ
recB5raUWFx7pEmmB

They all start with “rec”, and then contain 14 additional random characters. Because I can apply filters to my queries, my first thought was to filter the records based on a single character. So, if I filter on “a” in this example, I’d end up with only two of the ten records above (#6 & #10). (It’s case insensitive.)

When I tried this against the entire dataset, it reduced the number of records I was pulling from 1,000 to around 350, pretty consistently. 350ish is better, but it’s really still way too many. In my next experiment, I tried two letter combinations. I assumed there would be cases, even in 1,000 records, where some two letter combination wouldn’t exist, but I was delighted to find that about 15 records matched every two letter combination as well. 15 randomly selected records is something I’m willing to accept. I can pick from one of those and give my user what they asked for. (Three letter combinations resulted in ZERO records most of the time.)

There are a couple of obvious exceptions to this rule: “re” and “ec” each bring back 1,000 records, since every record contains those letters (“rec”). So I just decided to eliminate “e” from my random alphabet pair generator.

Now, when I need a random record from this collection, I pass in filtering rules on the RecordId for a randomly generated pair of letters, and I get a very small collection of data to work with. It’s not perfect (I’d still love to be able to get just one), but this is FAR better than dragging 1000 records across the internet every time I need just one.

Now for the real question: How would YOU solve this problem? Mine is almost certainly not the best solution, it’s “a” solution.

The Couch Table

This weekend, we finally had our new couch delivered.  (We ordered it in October.)

New couch, who dis?

One of the things we planned to do when it arrived was to build a couch table.  You may not have heard of a couch table before, but I promise that they are a thing.  (A quick search shows lots of examples.) The main idea is to create a 4-6 inch table behind your couch, and in my example, also bring the hidden power outlets from the wall up to an accessible location.

It should be noted that I am not an experienced furniture maker, nor much of a woodworking expert, so any advice or ideas you gain from reading this are entirely your fault.

Planning the Table

I really wanted to minimize how much space this table took up, so I started with the features that mattered most to me: the power outlets.  I spent time in the aisles of Lowe’s and Home Depot, but there wasn’t much variety, and the prices were pretty high.  I took a chance on a brand that had high ratings on Amazon, and was pleasantly surprised by the build quality and price.

Power outlet with cord

One of the things I liked about this outlet type was that it was narrow.  The width of the entire face plate was just over 2″, where a standard outlet face plate in the United States is 3.5″.

Outlet with dimensions.

This meant that I could build a table with a 4″ wide top (actually 3.5″, because the entire lumber industry is a secret society of liars) , and still have a comfortable amount of space on either side of it.  With a wider face plate, I probably would have been convinced to make it 6″ wide instead.

The only other part of planning was determining two dimensions: the length of the couch, and the height of the table.

Our couch, with the chaise extension, is 117″ long (that’s almost 10 feet!).  So that’s how long I want this table to be.  The back of the couch is actually much lower than the back cushions, so an ideal table height would come right to the edge of the back.  That is 28″ from the ground.

With those dimensions, I came up with a plan that looks like this:

It basically became a 2×4 base, with four structural 4×4 columns.  That structure is then completely covered in 1×4 poplar on the top and sides.  You should be able to easily modify this for the length and height of your couch.

Building the Table

Building this wasn’t terribly difficult.  A few long wood screws, and you’re on the right path.  I initially had aspirations to attach the poplar board with dowels, which would mean I wouldn’t have any screw holes, but the further I got into that project, the more daunting it seemed.  (It makes me appreciate the precision that IKEA engineering must have!)

4x4 with dowels

Eventually, I drove screws through the poplar boards to attach them, and filled the holes with wood filler before staining it. I also wanted to make sure that, once assembled, the table would fit in its intended location.  So we brought it inside to test it out before staining it.

Couch table with outlets

It looks like it is going to be perfect!  I’m still debating whether or not I want to use a router to accommodate the trim on the bottom of the wall.  It would allow the table to sit flush against the wall, but I don’t have the tools I’d need to do this in an efficient manner, and it looks pretty good without it.  I can always do this later if I change my mind.

Here’s a photo of the assembled table, with stain, but before the polyurethane has been applied.

Stained table.

To cut the holes in the top board for the power outlets, I started by tracing the box I wanted to cut.  Then, with a 3/4″ drill bit, I drilled a hole in the corner of my intended box.  From there, I used my jigsaw to work my way around the edges of the box.  It was certainly not as precise as I would have liked it, but it definitely got the job done.

The Final Product

This turned out even better than I could have hoped for.  As I said at the beginning, I’m no expert on any of this, but it was a fun project to put together.

ERohQFdWsAEBkI4

Tips & Tricks for Playing Video with APL and Alexa

I am currently in the process of building an Alexa skill that contains all of the knowledge of the Star Wars Universe.  This includes characters, droids, weapons, vehicles, planets, creatures, and even different species and organizations.  It also includes the ability to request the opening crawl videos from each of the movies in the Star Wars saga, and the trailers for the movies, television shows, and video games.

It’s the videos that have brought me here to share what I have learned.

Alexa is available in a wide variety of devices.  Some small, some big, some with screens, others without.  For those devices with screens, I want to be able to provide my users with a simple workflow.

  1. Ask for a specific video.
  2. View the requested video.
  3. Continue the conversation when the video ends.

For the first two steps, this was surprisingly easy to implement using Alexa Presentation Language (APL.) . For the third step, it required some research and trial and error, but I have it working successfully now.

Identifying the Video a User Requested

While there is nothing complicated about identifying a user’s request, I’ll show you how I am handling this so that if you want to build your own version of this, you have everything you need.

In my Interaction Model, I have an intent called “CrawlIntent.”  This is there to handle all of the ways a user might ask to see the opening crawl of a specific film.  It looks like this:

{
  "name": "CrawlIntent",
  "slots": [
  {
    "name": "media",
    "type": "Media"
  }
  ],
  "samples": [
    "show me the {media} crawl",
    "{media} crawl",
    "can I see the {media} crawl",
    "show the crawl for {media}",
    "for the {media} crawl",
    "to show the crawl for {media}",
    "show me the {media} opening crawl",
    "{media} opening crawl",
    "can I see the {media} opening crawl",
    "show the opening crawl for {media}",
    "for the {media} opening crawl",
    "to show the opening crawl for {media}",
    "play the {media} opening crawl",
    "play the {media} crawl"
  ]
}

When a user says something to my skill like one of the utterances above, I can be confident they are looking for the opening crawl video for a specific film.  I also have a slot, called media that contains a list of all of the films and shows that I want my skill to be aware of.

{
  "values": [
    {"name": { "value": "Battlefront 2","synonyms": ["battlefront 2", "battlefront"]}},
    {"name": { "value": "Clone Wars","synonyms": ["the clone wars"]}},
    {"name": { "value": "Episode 1","synonyms": ["the phantom menace"]}},
    {"name": { "value": "Episode 2","synonyms": ["attack of the clones"]}},
    {"name": { "value": "Episode 3","synonyms": ["revenge of the sith"]}},
    {"name": { "value": "Episode 4","synonyms": ["a new hope", "new hope"]}},
    {"name": { "value": "Episode 5","synonyms": ["empire", "the empire strikes back", "empire strikes back"]}},
    {"name": { "value": "Episode 6","synonyms": ["return of the jedi", "jedi"]}},
    {"name": { "value": "Episode 7","synonyms": ["the force awakens", "force awakens"]}},
    {"name": { "value": "Episode 8","synonyms": ["the last jedi", "last jedi"]}},
    {"name": { "value": "Episode 9","synonyms": ["rise of skywalker", "the rise of skywalker"]}},
    {, "name": { "value": "Rebels","synonyms": ["star wars rebels"]}},
    {"name": { "value": "Resistance","synonyms": ["star wars resistance"]}},
    {"name": { "value": "Rogue One","synonyms": ["rogue one a star wars story"]}},
    {"name": { "value": "Solo","synonyms": ["han solo movie", "solo a star wars story"]}},
    {"name": { "value": "The Mandalorian","synonyms": ["the mandalorian"]}}
],
"name": "Media"
}
This slot allows me to match the user’s request against the list of items my skill can handle, using Entity Resolution.  This allows me to be certain that I’m choosing the right video for their request.

 

Playing A Video Using APL

For the code of my skill, I am using the Alexa Skill Kit SDK.  This makes parsing through the JSON that Alexa provides far easier, and gives me greater control over building responses for my users.

To add APL to my skill’s response, I do something like this:

var apl = require("apl/videoplayer.json");
apl.document.mainTemplate.items[0].items[0].source = media.fields.Crawl;
handlerInput.responseBuilder.addDirective({
  type: 'Alexa.Presentation.APL.RenderDocument',
  token: '[SkillProvidedToken]',
  version: '1.0',
  document: apl.document,
  datasources: apl.datasources
})
handlerInput.responseBuilder.getResponse();

Line #1 refers to the location of my APL document.  This document is the markup that tells the screen what to show.  Line #2 is dynamically updating the source of the video file to be played, so that we can play the appropriate video for the appropriate request.

As you’ll see in the APL document below, we define a Video element, and include a source property that indicates a specific URL for our video.

The important lesson I learned when building this is that I don’t want to include any speech or reprompts to my user in this response.  I can send this APL document to the user’s device, which immediately starts playing the video.  This is completely counter-intuitive to everything I’ve ever considered when building an Alexa skill, but it makes sense.  I’m sending them a video to watch…not trying to continue our conversation.

Adding an Event to the Video When It Is Finished

Finally, I had to do some exploration to figure out how to not only identify when the video has concluded, but also prompt my skill to speak to the user in order to continue the conversation.  This is done using the onEnd event on the Video element that we created earlier.  Here is the entire APL document.

{
  "document": {
    "type": "APL",
    "version": "1.1",
    "settings": {},
    "theme": "dark",
    "import": [],
    "resources": [],
    "styles": {},
    "onMount": [],
    "graphics": {},
    "commands": {},
    "layouts": {},
    "mainTemplate": {
      "parameters": [
        "payload"
      ],
      "items": [
      {
        "type": "Container",
        "items": [
          {
            "type": "Video",
            "width": "100%",
            "height": "100%",
            "autoplay": true,
            "source": "https://starwarsdatabank.s3.amazonaws.com/openingcrawl/Star+Wars+Episode+I+The+Phantom+Menace+Opening+Crawl++StarWars.com.mp4",
            "scale": "best-fit",
            "onEnd": [
            {
              "type": "SendEvent",
              "arguments": [
                "VIDEOENDED"
              ],
              "components": [
                "idForTheTextComponent"
              ]
            }
            ]
          }
          ],
          "height": "100%",
          "width": "100%"
        }
        ]
      }
    },
    "datasources": {}
}
This is the second lesson that I learned when building this.  By adding this onEnd event, when the video finishes playing, it will send a new kind of request type to your skill: Alexa.Presentation.APL.UserEvent. You will need to handle this new event type, and prompt the user to say something in order to continue the conversation. I included the argument “VIDEOENDED” so that I’d be confident I was handling the appropriate UserEvent. Here is my example code for handling this:
const VideoEndedIntent = {
  canHandle(handlerInput) {
    return Alexa.getRequestType(handlerInput.requestEnvelope) === 'Alexa.Presentation.APL.UserEvent'
    && handlerInput.requestEnvelope.request.arguments[0] === 'VIDEOENDED';
  },
  handle(handlerInput) {
    const actionQuery = "What would you like to know about next?";
    return handlerInput.responseBuilder
      .speak(actionQuery)
      .reprompt(actionQuery)
      .getResponse();
  }
};
With these few additions to my Alexa skill, I was able to play videos for my users, but bring them back to the conversation once the video concludes.
Have you built anything using APL?  Have you published an Alexa skill?  I’d love to hear about it.  Share your creations in the comments!

Questions about Careers in STEM (Science, Technology, Engineering and Math)

I was recently asked by a high school freshman about my thoughts on careers in STEM.  I thought maybe some of you might also be interested in my answers.

What is your job and what do you do in your job?  How does it relate to STEM?

I am a technology evangelist for Amazon Alexa.  First and foremost, I am a software developer, but the primary responsibilities in my job fall into three categories: learning, building, and teaching.

For the learning part, Alexa is constantly learning how to do new things.  It is my responsibility to be an expert on Alexa, so I am always keeping up with the latest news and releases.  It also means that I need to understand how to use the new technology to write better software.

For the building part, I spend almost 50% of my time creating new things for users to do with Alexa.  Two things I’m currently working on are a giant trivia game, and a Star Wars database.  The Star Wars database will be able to tell you about anything in the Star Wars universe, including droids, characters, vehicles, weapons, planets, etc.

Finally, the teaching part of my job is my favorite, but it’s only possible with the first two parts.  I have to spend a ton of time learning and building to become a credible expert to teach.  I travel all over the world speaking with software developers that want to make their own apps for Alexa.

My role really sits in the middle of all of the STEM letters.  Science is a big part of it, because we are experimenting with artificial intelligence to make Alexa work.  This requires things like hypotheses and controlled experiments to determine what works, and what doesn’t.  Technology is an obvious one, since we make technical devices, and run Alexa as software in the cloud.  Computer engineering is an important part of creating software for Alexa.  Understand what is (and isn’t) possible, and the mechanisms to accomplish them is important.  Finally, there’s math.  Any software developer will tell you that they use things like algebra every day, but this goes even deeper with voice applications for  Alexa, where we use math to determine what you said, the probabilities that it matches our expected outcomes, and to generate responses.

What education did you pursue to achieve your job?

My educational path was a little different than most people in the software industry.  I got a bachelor of science degree in Psychology, where most of my peers have degrees in Computer Science or something similar.  Most of my knowledge and experience in software development is self-taught.  I would take apart the source code of interesting websites, or read books about software development to get better at it.

What are the advantages and disadvantages of working in the STEM field?

There are a couple of obvious advantages: STEM jobs pay really well.  Last I checked, a software developer fresh out of college can make over $70,000 a year.  Even more with some experience.  STEM jobs also have the advantage of being flexible.  It is primarily “thought work,” which means you can often do it whenever and wherever you choose.  This allows me to live in Ohio but work on a team located in Seattle, for example.  We have different time zones and locations, but still work well together.

One of the disadvantages is that most STEM careers require a commitment to constant learning.  If you stop keeping up, even for a few years, it’s easy to get so far behind that you almost feel out-of-date.  The software industry moves incredibly fast, and you really need to keep up to maintain success and relevance.  STEM roles also tend to not be very diverse, which is a huge disadvantage for those involved.  Diversity in the workplace makes software better, because it brings everyone’s perspectives together.  When there is a lack of diversity (85% of software developers are men, for example), the end product is worse for everyone.

Why do you believe STEM is important now?

I think people are talking about STEM today because the diversity problem needs to be solved at a much younger age.  Women and girls are often talked out of pursuing technical careers as early as 6th grade, which leads to the diversity problem I mentioned earlier.

I also think it’s important because it is estimated that there will be almost 2,000,000 STEM jobs that will go unfilled by 2022 because there won’t be enough people with the right education to do them.

How important do you see STEM jobs being in the future? What new jobs might need to be added to the field?

The future is science, technology, engineering, and math.  Every company will need software developers.  Those that avoid it will struggle to compete against those that do.  It adds efficiency, streamlining, and accuracy.  Many of the jobs that require physical labor will be replaced by robotics.  Many of the jobs that involve drivers will be replaced by self-driving cars and trucks.  But this also means there will be a huge need for robotics experts and mechanics to maintain all of this automation.  (It also means scientists will need to figure out how to create human organs soon, because 20% of all organ donations today come from traffic accidents, and self-driving cars will ultimately eliminate those!)

I can see a very near future where an entire restaurant is supervised by one person, but run by computers and robots.  A future where nobody owns or drives a car anymore, but just calls for a self-driving robot to take them where they need to go.

And with voice, where scheduling appointments with your dentist is as easy as telling your voice assistant to schedule one.  The assistant compares your calendar with your dentist’s calendar, checks your dental insurance to make sure it is covered, and makes the appointment.  It probably also books you that self-driving car to get there. 🙂

#21: Han Solo, Hardware, and Hoodies

Han Solo

Speaking of Han Solo, you may have already gathered that I am a pretty big Star Wars fan.  I fell in love with the films as a kid, survived the prequel trilogy enough to defend it, and have really enjoyed sharing the sequel trilogy with my children.

So it might seem natural for a guy that works at Alexa to want to make sure Alexa knows everything about Star Wars the same way that I claim to.  So I am.

A few weeks ago, I started a new project on my Twitch channel, where I spend time live-streaming software development, smart home stuff, drones, and technology in general.  It’s a great outlet for me, because I get to share my passion with others, record it for those that couldn’t tune in live, and explaining things is the best way I’ve found to be sure that I understand something.

So far, it is able to tell you about nearly every character, droid, creature, vehicle, weapon, technology, species, location, and organization.  It can also play the original trailer and opening crawl videos from each of the films and television shows.  It can also quiz you.  So you can say “Quiz me on Episode 5” and it will choose a random thing from that film to give you clues about.  Or you can say “quiz me about vehicles” and test your knowledge about vehicles from around the Star Wars universe.

It’s not done yet (so you can’t ask Alexa for all of these awesome things yet), but it should be coming soon.  In the meantime, if you want to have some input on what it does, or just see how it is constructed (like a Death Star), come join me sometime!  I live stream every Monday and Wednesday from 10am – 12pm Eastern time.  You can also subscribe, so you’ll get a notification when it happens.

Hardware

I love computer hardware.  I’ve built my own Alexa device from a Raspberry Pi.  I have a device attached to my garage to open and close it.  I have a ceiling fan I can operate with my voice.  The point is, I love to make cool hardware do cool things.  And this January, I’m taking that one step further.

At one of my favorite technology conferences, Codemash, I’m working with a good friend of mine, Brandon Satrom, to run a 4-hour technology workshop that combines my passion for hardware with my passion for voice technology.  The first two hours, you will assemble and create your own IoT device, complete with sensors and lights.  In the second two hours, you will build an Alexa skill that is specifically designed to control your newly created hardware.  Change the color of the lights, ask for the status of a sensor.  You get the idea.

I’ll be publishing all of the instructions, code, and tutorials as we get closer to the event, so keep an eye on my GitHub.  And then even if you couldn’t make it to Codemash, you’ll be ready to build some cool hardware for yourself.

Hooded Sweatshirts

I fought the term “hoodie” for the longest time, but it appears to have stuck, and I’ve been caught using it from time to time.  It’s not my favorite word, by far, but it IS one of my favorite articles of clothing.  I’m very particular about the types of hoodies I’ll wear, though.  I tend to aim for lightweight, and generally prefer polyester to cotton.  (Cotton is generally thicker, and it never sits nicely, so it gives my bulgy body extra bulges.) There are a few models of sweatshirt that I really like, so I thought I’d share my nuanced take on the most comfortable hoodies available.


Nike is the king of athletic wear, and this hoodie is at the top.  The biggest problem I have with it is that it’s expensive.  But that’s the ONLY problem.  The Nike Showtime Hoodie is generally at $100 or more.  It’s soft, and has a really smooth texture.  It keeps you warm in the winter, and cool in the summer.  And it just looks fantastic.  This one is white, but I’ve seen it in red, black, and gray, too.

This is Nike’s 2nd best effort.  The Nike Dry Training Hoodie is just excellent.  It’s usually around $60.  The polyester in this one is spun to feel like cotton (rather than the others which are that more “athletic” feel.) . It’s warmer than the others, but you’ll also note that both of the Nike entries here have a higher neck.  I love that higher neck.  It just feels cooler.

This is the Champion AO100.  It’s $22.  You generally don’t see these in stores, because they’re generally used to make branded logo apparel.  That’s actually how I discovered them.  I generally get something made for my team at Alexa for our big events, and this was last year’s entry (in black.)

This is the thing I see most of my teammates wearing when I go to the office.  It’s just comfortable.  It’s a tri-blend material, made from polyester, rayon, and cotton.  It’s so soft, and super thin, almost like a t-shirt.  Can’t recommend this one enough.

This is made by Amazon Basics, actually.  It’s $29.  And I know what you’re thinking: “Jeff, that has a full zipper.”  I know, I know.  But because it’s made of a soft polyester, it hangs on my body properly.  I only wish I looked as good in it as this guy does.  It also has a higher neck, but it just fits “right.”  I own several of these, and at the price point, it’s hard not to.

Also, if you haven’t taken a look at Amazon Basics clothing, it’s actually pretty fantastic.  I just bought some undershirts, and I am very impressed with the quality, especially for the price!  ($20 for 6!)

#20: Growing Up, Goose Game, and Gumlines

Happy Tuesday!  Time for more ramblings from my brain!

Growing Up

I’ve been giving a lot of thought lately to what it means to be a grown-up.  An adult.  I sometimes question whether or not I’ve actually made it there yet.  I still make gross jokes.  I still think farts are funny.  I certainly don’t clean up after myself as well as other adults in my house might prefer.

But what does being an adult really mean?  We hear the word “adulting” all the time these days, as a reference to doing something that adults do, but fully insisting that we are not actually adults ourselves.  Opening a bank account.  Cleaning your carpets.  Starting a 401k.  I don’t think those are actions of adults, however.  Those are activities that are just boring, and nobody wants to be boring.

I want to assert that adulthood actually starts when you learn empathy.  The ability to put yourself in someone else’s shoes and understand how they feel.  Some never do.  Think about the adults in your life, and think about the things they do that seem childish.  They make selfish choices.  They unintentionally (or intentionally) hurt others.  They put their own superficial wants above those around them.  They don’t consider the advantages they have over those that are less fortunate.  I contend that most of the representatives in our government have yet to make it to adulthood, because they haven’t yet grasped empathy.  For example, with empathy, there isn’t a single situation in which separating families and putting children in cages should ever seem acceptable.

Selfishness is an attribute of a 3 year old.  Not someone in their 70s.

The entire point of humanity is to make being a human better.  For everyone.  Not just for yourself.  Find someone your junior at work, and offer to mentor them.  Volunteer with a non-profit.  Donate your time or money to a food bank.  Share your knowledge and experience with those that need it.  For free.

Lifting others up is far more rewarding than stepping on them for your own gain.  Think with empathy.  Be an adult.

Image result for empathy

Goose Game

I recently discovered Untitled Goose Game on the Nintendo Switch.  What a delightful, simple, amazing game.  My quick summary is this:  You are a goose, and you start by terrorizing a farmer in his small city farm.  You steal his crops, his keys, his radio, all while honking your head off and hoping not to get caught.  You have a simple checklist of tasks you need to complete, and then you move on to the next part of the city.

The personality and animation of this goose, though…it’s hilarious.  When you grab something heavy, his head stays low and drags the item across the ground.  When the item is light, he can sprint away, with his head bobbling along and his wings flapping.  Someone really studied geese to get this right, and I think it was worth it.  They invested their time in goose physics instead of game naming, and it’s fantastic.  I give it five honks.

Have you played it?  What’s your favorite thing to steal?  Did you name your goose?

Gumlines

Let me start this part with a couple of disclaimers:

  • My father was a dentist, and I grew up with excellent dental care.
  • I have never had a cavity.  I never wore braces of any kind.

One of the things that my current dentist tells me regularly (my father retired a few years ago, and let me tell you, going to my first non-father dentist in my late thirties was a weird experience), is that people with really good teeth tend to have problems with their gums as they get older.  Maybe it’s overconfidence, but for a while, I thought it was a long running sales pitch.

They’ve been monitoring my gumline for years, six months at a time, and I’ve observed that my gums tend to bleed a little when I’m at the dentist, or when I floss (which isn’t that often).  So I finally gave in, and took their offer to try something called periotherapy.

In short, periotherapy is about four hours of treatment.  (We divided it into two separate sessions of 2 hours.) . They have 5 different sonic pressure water tips that they use to flush out the spaces between your gums and your teeth.  So imagine using a high-pressure power washer to blast your gums away from your teeth briefly.  And then doing that, for your entire mouth, five times.  Once for each tip.

Your gums are sore for a few days.  It feels like you have a fever in your mouth.  You also have to use special toothpaste with a chemical called Xylitol to aid in the healing and prevention of bacteria.  There’s also a special mouthwash.  There’s also these anti-bacterial tablets that you need to dissolve in your mouth each night.  It’s awesome.

Now that it’s all done and healed, my gums don’t seem to bleed when I floss.  It removed any of the bacteria that was living inside my gumline.  But I have noticed that a couple of my molars seem to be a little more sensitive to cold drinks and ice cream.  I’m hoping as time progresses, that this sensitivity will subside.

Have you gotten anything like this done?  What did you think?

#19: Followers, Friends, Family, and Funko

Happy Wednesday!  How was yours?

Followers

I’ve been a technology evangelist for over 12 years now.  It started with Microsoft in 2007, and it continues with Amazon Alexa today.  Much of my time is spent using new technologies, and building things with them.  But the rest of my time is spent finding an audience, and talking to them about what they like, what they need, and what they want in the future.

Developing a “following” is obviously important to my job.  I want to be useful, educational, and relevant to the people (software developers) that I’m employed to help.  Most of the time, I know that if I create great content, and provide utility, people will find me.  And that has been true for this incredible ride I’ve been on.

But there’s also times where I wonder if I’m doing enough.  I start to compare myself to others in my industry, and wonder how they gathered such a huge following.  It takes a large heaping of self-confidence (and a dash of hubris) to be able to remind myself that I’m good at what I do, and that my follower count is not a direct reflection of that.  Followers are nice, but I’m writing this for what is currently an audience of 50 people.  Do I hope more people will read it?  Absolutely.  Am I going to be defeated if they don’t?  Nope.  I’m writing this for me.

But what if I was a teenager today?  I’ve been doing lots of reading about this subject, and it scares me.  Children are basing their entire personal esteem value systems on the number of likes, follows, and streaks they have.  It’s the currency of this generation.  Your value to others is measured by viral posts, not by your quality as a human.  I don’t think it’s limited to teens, either.  How many of you would say that your “social media persona” is the same as your real persona?  We shine up the rough edges, use just the right filters, with the right lighting and the right camera angles.  We only talk about our successes, and don’t bother with our failures.  (Not sure?  How many divorces have you seen posted on social media?  How many baby gender reveals have you seen?)

My point is that it seems to be getting out of control.  We need to remind our children (and our friends) that we are the only one that can measure our own value.  It is up to us as individuals to determine our own self worth.  By allowing this measurement to be determined by complete strangers on the internet, we are setting ourselves up for nothing short of disappointment and failure.  And you’re better than that.  We all are.

Friends

Why is it so freaking hard to have friends?  I don’t mean people I’m connected to on Facebook, or Instagram.  I mean real – I’ve seen you in person in the past 30 days – kinds of friends.  I can count the number of friends I’ve seen in the past 30 days on one hand.  And I don’t think I even need all of the fingers.

We’re all busy, I get that.  But what are you doing this Friday night?  Let’s DO something!  Board games?  I’m in.  Hockey game?  Definitely.  Dinner and drinks?  You betcha.  And that’s the real problem.

Did you see how I framed that?  I’m waiting for you to ask.  If you invited me to a hockey game, I would drop nearly anything to make that happen.  Why didn’t I call you?  Why didn’t I ask someone?  Because that’s harder.  You might say no.  You might not like me.  It’s just more difficult.  But it’s what I need to do.

My mom said something to me when I was in my early teens that I will never forget:

“If you don’t call and make plans with people, nothing will happen.  They’ll never call you.”

I don’t say this often, but she was absolutely right.  Nearly nothing has been more true in my life than that statement.  I need to plan things, I need to make the call.  And so do you.  Your friends like you, and they’d probably jump at the chance to hang out, but the daily hustle-and-bustle distracts from the important stuff.  Spending time with the people you love in your life is more important than nearly anything else.  And we do a really shitty job of actually making that happen.

Family

Speaking of spending time with the people you love, Thanksgiving is quickly approaching here in the United States.  An opportunity to eat the best comfort food your family lineage has invented.  An opportunity to be thankful for all that you have.  An opportunity to sit in awkward silence as your uncle defends his not-so-subtle racism through talking points he picked up on Fox News.

Are you looking forward to Thanksgiving?  What’s your favorite thing to eat on that day?

Funko

I have a problem in my life.  And its name is Funko.  For those of you unfamiliar with this word, Funko is a toy manufacturer based in Washington State, and their most successful line of products are called Pop!

If you haven’t heard of them before, you’ve certainly seen them on the shelves of nearly every store you can imagine.  There are exclusive figures at stores like Walgreens, Hot Topic, Barnes & Noble, Target, and even Foot Locker!  I started collecting these with my family five or six years ago, and it was a slow process.  We would find a character from something we loved, like Star Wars, Harry Potter, or Marvel, and we just had to have it.  And the collection grew.  And grew.

When it started exploding was sometime last year.  I discovered there was a Funko app, and it would allow you to track your entire collection digitally.  Here’s what got me, though: once I’d entered my collection, they also assigned a dollar value to each one, based on recent sale prices at websites like eBay and other auction sites.  Some of earlier figures we had purchased were worth close to $100 each!  This completely changed my perspective on this collection, and future purchases.  “Will this be worth anything?”  “Is it rare?”  And that’s how we ended up here:


I’ve generally slowed my collecting way down.  There’s a few times a year that something interesting will come out, and I’ll be quick on the trigger to get one before they sell out.  The most I’ve ever spent on one is $15.  The most recent additions are:

So I’ve shared my collection.  The good, bad, and the ugly of it.  Now it’s your turn!

What do you collect?  Do you have anything from Funko?  What’s your passion?  I’d love to hear from you, friend.

#18: Elephants, Energy, and Excuses

Elephants

I visited Denver, Colorado about a week ago, and with the proliferation of Safeway grocery stores there, I was reminded of a fantastic joke.

You: “How do you get an elephant into a Safeway?”
Them: <puzzled look>
You: “It’s easy.  You take the ‘F’ out of Safe, and the ‘F’ out of Way.”
Them: …

Them: “There’s no ‘F’ in Way.
You: You’re right!

Energy

I am 43 years old.  I’m old enough that I had to do the math to remember how old I am.  I have daily lower back pain, the hair in my nose and ears grows five times as fast as the hair on my head, and I groan every time I lean over or get up from a chair.  I’m an old man.

But it’s my energy level that’s the most concerning. I am tired ALL. THE. TIME.  I’ve been offsetting that with a daily Red Bull, but that’s no longer having much effect.  (Yes, I know it’s not a great choice.) . I don’t want to be tired.  I want the energy my children seem to have.  I started running every day a few months ago, and I think it helped a little.  I have been traveling a ton over the past month, and it has definitely slipped, but I got back at it this morning, and I noticed that I actually missed it.  I was still able to run at a good pace for a few minutes.  I was still able to catch my breath while walking at 4 miles an hour (a brisk pace).  I’m going back tomorrow, too.  I can get to the gym every day, right?

But I still think it’s more than that.  I’m heading to my doctor next week to figure this out.  Maybe it’s sleep apnea, maybe it’s allergies that have me congested all of the time, or maybe I’m just old and this is how it works.  I’ll just get more tired and grumpy until eventually I pull out of parking spaces without looking backwards, and yell at kids to get off of my lawn.

How are you feeling today?

Excuses

Much of the stuff I mentioned in the energy section of this letter have become my excuses in life.  I don’t like it.  I have a huge presentation I need to finish, and I always seem too tired to work on it.  I’ve been livestreaming a ton on Twitch (give me a follow!), and afterwards, I tell myself I need a break because I feel so tired.

My wonderful, talented wife has a ton of cool home improvement projects percolating in that beautiful head of hers, and I find myself making excuses for why we shouldn’t do it.  Bad timing, too much money, back hurts, you name it.

Why am I making excuses to avoid things I would normally LOVE to do?  It’s time to get my head on straight, focus on what is important, and keep building the life and home I want for my family and me.

What are your excuses?  If you hate your job, why do you stay?  Same goes for that relationship!  If you’ve been meaning to learn something new, what’s the excuse you use to skip it?

If I told you that your life would be exactly the same 10 years from now, would you be happy about that?
NO.
So why are you constantly avoiding change?

Stop making excuses.  Get your ass out there, TOMORROW, and make the change in your life that you want!

#17: Debt, Delivery, and Databases

Apple Card

Yes, it’s a credit card.  Yes, it’s from Apple.  But let’s get past all of the marketing hype and talk about what this card really is.

In short, the Apple Card is like any other credit card.  You can make purchases with it, and if you pay it off on time, it’s basically a free short-term loan.  If you don’t pay it off on time, you incur interest charges (and the reported interest rates I’ve heard around the web vary wildly.) . Mine is 12%, but I have one of the highest possible credit scores, so your mileage may vary.  If you pay it off every month (or day), the interest rate won’t matter.

There’s a couple of features that are nice, but as someone that uses several credit cards for travel and work, I’m constantly evaluating whether or not they’re actually worth using.

1) Cash Back.  If I just use the physical card (it’s gorgeous, super heavy, and made of titanium), you get 1% cash back on purchases.  If you use Apple Pay with the card, you get 2% back.  If you buy something directly from Apple, you get 3%.  You receive your cash immediately, as soon as you pay some of all of your balance.  It’s a cool software feature to pay your card, and receive an alert that they just gave you $2.94.

2) Daily Payment. I can pay my card once or several times a day.  I tend to like to make payments that are the same amounts as the transactions, so that I’m treating each transaction as its own item that I’ve “paid off.”  I actually wish they would implement some features to make this possible, so that I could just pick an individual transaction, and “pay it.”  It would be nice to see a list of my transactions, and which ones have actually been paid off, rather than trying to reconcile payments with transactions.

3) Reporting.  There’s some good reporting built into the Apple Wallet software too.  It lets me easily see how much I’ve spent, where the money went, and how much cash back I earned, all on one screen.  I still think this could be better, but for the first version, this is pretty decent.  (I’ve been using this card on my Lyft account while I travel for work, which is why my transportation category is so high this month.)


So that’s the quick highlights.  Now, if you’re looking for my guidance on whether you should get one?  I’m not sure.  I think there are better options, even if the software is cool.  I’ve been using my card a bit since August 2019, and I haven’t earned $100 in cash back yet.

I spent $1815.73 in August, and got $22.50. (1.23%)
I spent $2831.14 in September, and got $49.26. (1.74%)
I spent $545.11 in October, and got $11.00. (2.02%)

Because I travel quite a bit for work, I am also using the Delta Reserve American Express card, and the Marriott Bonvoy Visa.  These boost the miles and points I earn quite a bit, and the value of those points seems to far exceed the cash back value that I get from the Apple Card.  (As an example, in the last 6 months, I’ve earned enough Skymiles from Delta to fly my entire family of 4 to New York City roundtrip, first class.  That would be nearly $1600.)  Now, part of that is because I’m already flying on Delta a bunch, and my Diamond status with them also contributes.  But the credit card is really the multiplier that makes it all happen.

The most interesting part of my Apple Card experiment has been how much it’s changed my behavior around using Apple Pay.  I mean, I get an extra 1% just for tapping my phone instead of swiping my card!  I’ve found myself asking folks in the drive thru window if I can pay with my phone, and I’m disappointed when someone doesn’t offer it.  (I’ve even had Wendy’s give me my meal for free when I asked, because they couldn’t accommodate!) . We’re still in the early days of mobile payments, but I’ve been surprised how many places are equipped to handle it.  I’m definitely looking forward to the future!

Delivery

As I sit here waiting for my Echo Buds to arrive today, I’m really in awe of where we are today with our deliveries.  This isn’t a long section, but you might learn something new along the way.

1) Amazon now offers ONE-day delivery.  ONE DAY!  I’m sure I don’t need everything delivered the next day, but what an awesome option when I do.  I’m looking forward to enjoying my Alexa-enabled earbuds later today.

2) You can see your mail every day.  If you haven’t heard of USPS Informed Delivery, you should really check it out.  I get an email every morning with photos of all of the mail that will be delivered that day to my house.  This includes a list of packages and tracking numbers, too!  This is especially cool when someone mails you something you weren’t expecting (and weren’t told about), so that you can make sure to get home and grab it when it arrives.

3) UPS My Choice is also awesome.  UPS My Choice is similar to Informed Delivery, but with more data.  You can get a notification every time your package moves in the UPS network, and once it’s out for delivery, they even let you track the location of the truck it’s on.  Super awesome when you’re expecting something exciting.

Databases

For the last entry in this letter, I wanted to briefly talk about a database service that I’ve been using to build many of my Alexa skills.  It’s called AirTable, and it’s awesome, but maybe not for the reasons you think.

First, it’s mostly free.  At least at the volume that I’m using it for.

Second, I tend to collaborate with others on my software.  It’s really difficult to write the entire application, and gather and curate all of the necessary data to make the app work.  Airtable makes that kind of collaboration incredibly simple, and it does it with an interface that is friendly even to those that don’t regularly build software or work with technical tools.  It basically looks and acts like a spreadsheet!

The reason I, as a developer, like it so much, however, is because of what it provides that makes writing software easier.  I can use their API to make calls directly against my data, and retrieve what I need in a JSON format.  And it’s fast.  There’s also an SDK if I want to make targeted calls to update records, for example.  I tend to use the SDK for insert and update operations, but for read operations, I find it easier to make direct HTTPS calls thanks to some helper functions I wrote for myself.

Their technical documentation gives you actual code samples, using your data and structures, that you can copy and paste directly into your code, and it works!

There are lots of cloud database options out there, but I have yet to find one as user friendly, inexpensive, and powerful as Airtable.  I wish the other folks in this industry would take notice, because they’ve really figured it out.