I'm a full-stack web developer (Python, Django, JS, React), engineering manager, and consultant, focused on building apps and integrations for Slack and Microsoft Teams. I'm also a math enthusiast and author of Mastery with SQL.

2020

Can you build a Microsoft Teams bot without using Azure?

March 24, 2020

Yes. But also, no. Let me explain. One important concept to understand right away is that Microsoft Teams apps never directly communicate with your web services. A Teams app as installed in the client is actually just a JSON manifest file and...

What are the Microsoft App ID and password for when building a Teams bot?

March 23, 2020

When you're building an app for Microsoft Teams, or really, anything that's going to end up using the Azure Bot Service, at some point in the process you have to create and manage a Microsoft App ID and password. When you first do this, it feels...

Azure Functions: How to get data from a POST body in JavaScript

March 20, 2020

When working with Azure Functions, a common thing you'll want to do is get data out of the POST body inside your function. Handily, if you make your POST request in JSON format, you'll be able to simply access the object properties by name,...

Command not recognized error when specifying a runtime during webapp creation with Azure CLI

March 19, 2020

Recently I've been working with Azure and have been using the Azure CLI to script up creation of a Node.js webapp (btw, the Azure CLI Tools extension is excellent for this). I found however that when scripting up the creation of the webapp, if...

Microsoft Teams error - 'validDomains' array cannot contain a tunneling site

March 16, 2020

When building your first app or bot for Microsoft Teams, one error you might come across during your development when you're using the tool ngrok is in App Studio. In the Manifest Editor, when you go to the Test and Distribute tab, if you've been...

How I built the best-selling BlackBerry app of all-time

March 6, 2020

Many years ago, I built what I believe was the best-selling BlackBerry app of all-time, BBSmart Email Viewer. It feels strange to write that, and it's not something I'd say I'm really known for outside of the small niche community of BlackBerry...

Mathematics for the adventurous self-learner

February 24, 2020

For over six years now, I've been studying mathematics on my own in my spare time - working my way through books, exercises, and online courses. In this post I'll share what books and resources I've worked through and recommend and also tips for...

2019

Using Visual Studio Code with psql

July 7, 2019

A quick HOWTO to show you how to setup psql to use Visual Studio Code for interactive editing. Updating your EDITOR When you're working in psql, it can be handy to jump to a richer text editor, particularly when typing up longer queries. In psql,...

Implementing SQL Server's WITH TIES in PostgreSQL

July 1, 2019

SQL Server supports a TOP (N) WITH TIES clause which can be used to return the top N rows from a query along with any additional rows that have the same sort value as the Nth row. It's handy functionality that can come in use in many situations....

Joins: USING vs ON for join conditions

June 30, 2019

When establishing the join condition between two tables in PostgreSQL, and you're performing an equality join where the columns are named the same in both tables, a nice shorthand syntax to establish the join is with USING. You might think this...

Permission Denied error when using PostgreSQL's COPY FROM/TO command

June 10, 2019

COPY FROM is commonly used to import data from a file (CSV, plain text, etc.) in to PostgreSQL. Likewise, COPY TO is used to export data from a table or a query result to a file. When you're using these commands if you're getting a "Permission...

Mastery with SQL is out now!

June 9, 2019

My new course Mastery with SQL is out now! I'm so thrilled with how it's turned out. My goal when I set out was to build a course that's exercise-centric. I'm an avid learner who loves studying new domains, and in my experience one of the best...

Using Distinct

June 9, 2019

The DISTINCT keyword has a bunch of interesting use-cases in ANSI SQL and offers some additional functionality when used in PostgreSQL. Let's dive in and take a look with an example (you can find the full source code to reproduce this example on...