hckr.fyi // thoughts

What Do We Mean By Conversation? A Software Approach

by Michael Szul on

We're going to be talking a lot about "talking" in these next few posts, so it's important that we're all on the same page about what we mean by 'talking' and "conversation"—especially when we discuss how it relates to software.

You're Thinking About Chatbots All Wrong

by Michael Szul on

Almost two years, I brought up the lack of a killer application when it came to chatbots. That killer app still doesn't exist.

🤖 + 🍺 Bots and Beer 2x02 - How Oculus and Libra Will Save Facebook

by Michael Szul on

I have a confession... I don't actually hate Facebook. And I no longer blame Facebook for any of the societal or political upheaval surrounding it. If you follow me on Twitter, you'll likely read me...

Working with ActiveDirectory in Node.JS The Basics

by Michael Szul on

Decoupling Express JavaScript Routes from Your Main Application File

by Michael Szul on

With a traditional Express applications, routes are defined directly in the entry point of your application...

🤖 + 🍺 Bots and Beer 2x01 - When Technology Outpaces Government and Economic Innovation

by Michael Szul on

I struggled to find a good title for this issue. I'm pulling together a handful of concepts, philosophies, and recent events to contemplate how technology impacts other parts of our society, and sometimes that cross-contemplation prevents a quippy title.

Web Application Caching in Node.JS

by Michael Szul on

VAVOFO Outdoor Smart Plug/Receptacle for Alexa

by Michael Szul on

I ended up going with the VAVOFO Outdoor Smart Plug. This is an outdoor quality extension that has 2 or 3 plugs (depending on which device you purchase)...

🤖 + 🍺 Bots and Beer 2x00 - Freezing Your Branches Off

by Michael Szul on

In the last episode of Codepunk for 2019, we did an extended dive into the GitHub Arctic Code Vault and their whole archiving initiative. Normally, I don't like to repeat content from one format into another, but this newsletter does allow for some additional rumination on certain off-the-cut commentary from the podcast.

Reducing the Noise on Twitter (An Approach for your Sanity)

by Michael Szul on

Anil Dash wrote a blog post about a year ago about cleaning up your Twitter timeline in order to reset your perspective, and although I didn't want to...

Dynamic Routes with Static, Vanilla HTML Pages Using Zeit's Now...

by Michael Szul on

With Zeit's Now, you can control all of this through the now.json file, so that your routes are uncoupled from your file structure.

Actionable Metrics to Make Work Visible and Improve Organizational Performance

by Michael Szul on

Back in May, my institution went through a little bit of a reorganization. The end result included a team dedicated to medical education software, and my job was to begin reviewing our team's overall process and workflow to find pockets of improvement, and to begin a minor transformation from an applications and custom software team, to one more focused on the business value of our medical education mission.

Deploying an ASP.NET Core Application to IIS

by Michael Szul on

The problem? When you've worked in a Windows Server pipeline for a few decades, you get used to a few conventions, and with .NET Core being...

Using Task Runner and NPM in ASP.NET Core in Visual Studio 2019

by Michael Szul on

Streaming Excel to the Browser in Node.JS and JavaScript

by Michael Szul on

Most people know how to process CSV files, but when you open them in Excel, you get that annoying pop-up, so let's use an actual Excel library to get the...

Converting HTML to a Word Document in NodeJS and JavaScript

by Michael Szul on

Online-only isn't truly a thing, and sometimes when you're building a web application, you need to be able to offer your users the ability to download content in different formats.

How to Create a Twitter Bot with the Microsoft Bot Framework

by Michael Szul on

With this milestone release, you can now create Twitter bots with the Microsoft Bot Framework. Let's go over some of the sample code from the repository.

Using Ngrok for Webhooks and Mobile Development Testing

by Michael Szul on

Decoding JSON Web Tokens (JWT) in Python Flask Applications

by Michael Szul on

With Python's popularity over the decades you might want to use JWT authentication in your apps.

IISNode Performance Debugging and Optimization

by Michael Szul on

IISNode can be slow and ill-performant at times, but there are some key tweaks you can make to your configuration (beyond standard Node.JS performance...

Improving the Bot Framework's IBM Watson NLU Integration through...

by Michael Szul on

A little bit ago, the Bot Builder Community launched a middleware component for integrating IBM Watson's natural language understanding (NLU) with your...

🤖 + 🍺 Bots and Beer 1x08 - Virtually Ready

by Michael Szul on

Are you sold on the current state of virtual reality? Although I've always appreciated the advances that we've stumbled into, my primary experience with VR has been a few low-end Samsung devices that mostly stick a screen close to your eyeballs--neither enjoyable, nor comfortable.

Use Google Cloud Platform Natural Language API to Power your Bot...

by Michael Szul on

We are adding the Google Cloud Platform's Natural Language API. Each of these middleware packages performs text analysis that allows you to gather better...

Use AWS Comprehend to Power your Bot Framework Text Analysis

by Michael Szul on

This time around, let's talk about the newly released AWS Comprehend middleware. This is yet another middleware component for text analysis built upon...

🤖 + 🍺 Bots and Beer 1x07 - Getting All Emotional

by Michael Szul on

The neat thing about Watson's NLU is that it doesn't just track sentiment, but actually attempts to detect and analyze emotions as well. If asked, it'll return an emotion score object containing five emotions and their various scores.

Compilation TargetFramework vs Runtime TargetFramework in ASP.NET MVC

by Michael Szul on

If you're an ASP.NET programmer, you may have noticed various settings in the web.config that have left you confused, but since everything worked, you didn't bother to dig deeper.

PYODBC--Data source name not found and no default driver specified

by Michael Szul on

Sometimes though, Python can still feel a bit cobbled together when trying to use it on a Windows machine. Ever move from one machine to another, and...

🤖 + 🍺 Bots and Beer 1x06 - What We Learned from Tay

by Michael Szul on

Behavior can be unpredictable. Are we really sure we want to pattern robots and chatbots after that? The greatest example in recent memory is Microsoft's Tay, which was revisited and profiled in a story on ZDNet in July.

Use IBM Watson in Bot Framework Chatbots

by Michael Szul on

A few weeks ago, we made the official release. You can now use IBM Watson as the text analysis engine in your Bot Framework chatbots.

Cyberpunk Theme for your Hyper Terminal

by Michael Szul on

I'm a big fan of Hyper, and I'm a big fan of Visual Studio Code. Both are electron applications, and each allows for custom themes.

Checking If One Array Contains an Item from Another Array in JavaScript

by Michael Szul on

You know what old school is? Old school is putting a `for` loop inside of a `for` loop to check to see if two arrays contain the same element.

Environment Variables and Web.Config Settings for Python and Flask IIS

by Michael Szul on

I plan on covering the steps needed to deploy Flask to IIS in a future post, but for this post, I wanted to focus on obtaining environment variables.

How to Stream a Zip File to the Browser in Express and Node.JS

by Michael Szul on

The nature of the downloaded materials, and the fact that students need to download multiple items, means that we want to zip those files up. Since the...

A Process to Triage Work Items in Azure DevOps (TFS)

by Michael Szul on

A while back I went over how to add change requests to Team Foundation Server (TFS) while working in an agile environment.

Creating an Index in LaTeX for PDF Output

by Michael Szul on

One of the major reasons Bill and I started Codepunk was for the distillation of information. If I learn something that I think others could benefit from, I'll drop it here.

🤖 + 🍺 Bots and Beer 1x05 - The Crypto Promise of a Cyberian Paradise

by Michael Szul on

Facebook's announcement of Libra should come with zero shock attached. The social media company's entire business model revolves around keeping people within their walled garden, invading all aspects of their attention and lives.

Building Chatbots in TypeScript with the Microsoft Bot Framework

by Michael Szul on

I've learned that writing a book is easy, but finishing a book is hard. A lot has happened in the last two years, and certainly a lot is still happening in the conversational interface space...

Horizonal Rules in LaTeX

by Michael Szul on

The \rule command has two options length and thickness. In own case, we want the line as long as the text, so we set this to \textwidth...

Change the Background Color of a Blockquote in LaTeX

by Michael Szul on

Anyone who has been following me on this web site is well aware that I've been diligently working on a Bot Framework book for close to two years now.

🤖 + 🍺 Bots and Beer 1x04 - Chatbots for the Conversational Interface

by Michael Szul on

Way back in March of 2017, we did a podcast episode on the Microsoft Bot Framework. Shortly thereafter, I (Michael) started working on a book about how to build chatbots with the Bot Framework Node.JS SDK.

Getting Started with Node.JS and Socket.io for Real Time Web Applications

by Michael Szul on

This posts is the first on a series about building real-time application feeds in Node.JS with Socket.io. Maybe we'll even do a few videos on it, as well.

Getting All Unique Values from an Array in JavaScript with Set

by Michael Szul on

The new Set() method creates a new collection of iterable objects specifically meant to contain unique values. By passing in the courses array, you are...

🤖 + 🍺 Bots and Beer 1x03 - Social Media is a Lie

by Michael Szul on

Social media wants your attention like any other media company, and both Twitter and Facebook find ways to keep you on their site rather than allow you to click-through to another application or web site. They even build their own in-line browsers, so even if you want to read an article, it's minimal effort to return to those holding you captive.

Unit Testing Bot Framework Middleware with TestAdapter, Mocha, and...

by Michael Szul on

A lot of that starts with the TestAdapter class, which is a special adapter used for returning a TestFlow class when functions such as test(), send(), or...

Accessing Express Request Headers in a Handlebar Template

by Michael Szul on

Express is the most popular Node.JS framework for a good reason. There is a lot of power and configuration behind it. I actually prefer to use Express' little cousin Restify for most things to keep the overall cruft low, but Express has it's advantages.

🤖 + 🍺 Bots and Beer 1x02 - The Biohacking Frontier

by Michael Szul on

This issue of the newsletter was prompted by a rediscovery of a 2017 Wired article where researchers showed that you could encode malicious software onto DNA--software that doesn't affect the human host in the traditional sense of biohacking, but instead affects gene sequencers, and other genetic or forensic software and machines.

Unit Testing Private (Non-Exported) Functions in JavaScript w/ Rewire

by Michael Szul on

Rewire is a fantastic module for dependency injection meant to help you modify the behavior of your code for unit testing. With Rewire you can capture...

Debugging Mocha in Visual Studio Code

by Michael Szul on

Mocha has been my go-to testing framework, as I get more disciplined in ensuring greater code coverage. It's a pretty easy framework to use, and works in...

How to Excludes Packages and Typing Files from the TypeScript Compiler

by Michael Szul on

With a simple command line switch or tsconfig.json change, you can exclude packages and typings files from the TypeScript compiler.

Accessing Server Variables in a NodeJS Express or Restify Application with IISNode

by Michael Szul on

I've been working a lot with JavaScript, TypeScript, and Node.JS recently--even building out web services at work with Restify that I can consume on the front-end in some of our ASP.NET applications.

Getting Query String Parameters in JavaScript... the New Way

by Michael Szul on

People complain a lot about JavaScript, but I think that many of these people are stuck in the past. Not only does JavaScript have a great number of new...

🤖 + 🍺 Bots and Beer 1x01 - The Advent of Social Media Politics

by Michael Szul on

We often laugh that the government is eternally behind the curve when it comes to software and IT infrastructure upgrades, but one thing is certain... Technology has consistently and fundamentally shaped our political theater over the decades.

Checking Code into Microsoft - The Value of Open Source

by Michael Szul on

If you know me, have read any of my posts, or heard me speak at a conference over the last two years, you're probably aware of my immersion in chatbots.

Using CORS with Restify in NodeJS

by Michael Szul on

With Restify, you might want to stand up an API, but then check on that API via a single page application. These applications could each exist in testing...

Converting JavaScript Callbacks to Promises

by Michael Szul on

I use TypeScript for most anything nowadays. It's basically like programming in a less verbose C# or Java with a faster to prototype end result.

Connecting to Microsoft SQL Server in NodeJS Applications

by Michael Szul on

Although I have familiarity with a lot of programming languages, in my professional career, most of my jobs have centered on ASP.NET and C# development (since roughly 2004).

🤖 + 🍺 Bots and Beer 1x00 - The Invisible Interface

by Michael Szul on

I gave a talk on chatbots at a recent JavaScript conference in Richmond, Virginia. The crowd was lighter than some of the other talks, and I've actually noticed a downward trend in attendance on sessions about chatbots.

Accepting User Media Input with the Bot Framework

by Michael Szul on

Chatbots don't just send information, but they receive information as well. Bots are normally seen accepting information in a very choose-your-own-adventure way, as well as through LUIS--an implementation of natural language processing. This was as textual input, however, which is great for conversations, but chatbots are not just conversations, they are conversational applications.

How to Build a Visual Studio Code Extension

by Michael Szul on

Yesterday I needed to transform some XSLT, and wanted to be able to do it in Visual Studio Code, which is my editor and IDE of choice. I wasn't happy...

Debugging .NET Framework Web Applications in Visual Studio Code

by Michael Szul on

Bot Framework Chatbot Activities

by Michael Szul on

The adapter object represents the Bot Framework adapter that manages your chatbot, and you can attach middleware to the adapter in order to enhance your...

Windows Authentication Pass-Through in Firefox

by Michael Szul on

Have you ever enabled Windows authentication, but when you launch Firefox, it asks you to login with an authentication prompt? Even worse, you enter in...

🤖 + 🍺 Bots and Beer 0x11 - The Societal Impact of AI

by Michael Szul on

Many of the 'ethics of AI' discussions exist in a vacuum. What I mean is that we often refer to something that AI does (or that we think AI will do in the future), and we...

Windows Authentication in IIS Express

by Michael Szul on

At work, we integrate our LDAP instance and our LDAP groups into the security of our applications. Organization-wide, if your organizational ID made it...

Microsoft Ignite and the Bot Builder Community

by Michael Szul on

A few months ago, Gary approached me about joining the Bot Builder Community org with him, James, and Arafat Tehsin. A week or so later, we were joined...

Custom Bot Framework Prompts with the Recognizers Text Suite

by Michael Szul on

To create your own prompts, all you have to do is extend the base `Prompt` class. Let's create our own prompt that asks for an email address. Sounds...

🤖 + 🍺 Bots and Beer 0x10 - Automation

by Michael Szul on

Fear of automation is nothing new, and it's something that has plagued the consciousness of the modern working person since the dawn of the industrial revolution.

Sentiment Analysis Middleware for the Bot Framework

by Michael Szul on

I had a fit of inspiration last night that carried into today, and I ported over the sentiment analysis middleware, so that there was a Node.JS package...

How to Add Images to QnA Maker Answers in Markdown

by Michael Szul on

Videos don't stop accumulating views just because you stop producing some though, so I've still be getting traction, as well as comments. One of the...

How I Became a Programmer

by Michael Szul on

How did I become a programmer? While going to college and working part-time at a hardware store, I offhandedly mentioned Java programming to the store's...

XML, XSLT, and MVC

by Michael Szul on

Those involved with application infrastructure have always search for the holy grail of separation between business logic and design. The idea is that...

NPM Publish Straight from Travis CI

by Michael Szul on

Being exposed to Travis CI, I've found that although the documentation is pretty strong, it can occasionally be difficulty to track down the right...

Chatdown Glob - An Example of Processing Multiple Files Using Glob

by Michael Szul on

For those of you that have been reading this blog for a while now, clearly you know that chatbots have been my thing. I got involved early, and as a Microsoft MVP, I've been privy to newer things coming down the pipeline thanks to interactions with the product group.

Travis-CI Uncaught SyntaxError Use of const in strict mode

by Michael Szul on

Node.JS was throwing an error for "Uncaught SyntaxError Use of const in strict mode" and failing to run the tests.

How to Change the Video Aspect Ratio in Camtasia

by Michael Szul on

I wanted to make some adjustments to the video aspect ratio (within reason), but the Camtasia editing software I use, isn't so straightforward, and some...

🤖 + 🍺 Bots and Beer 0x09 - The Future of Everything is Data

by Michael Szul on

With the advances in artificial intelligence, we keep getting bombarded with news articles about how Elon Musk says we need to fear AI, or how employment is going to suffer.

Using the Canonical Attribute Value to Consolidate Duplicate Blog...

by Michael Szul on

There is actually a little known HTML attribute value that allows you to distinguish duplicate content, and by doing so, instruct search engines that...

Introducing BotBuilder Config for the Bot Framework

by Michael Szul on

In order to write 5 lines of code as an example in my book, I spent the entire weekend--and three iterations--building out BotBuilder Config--a utility...

Web.config Redirect to HTTPS Except for Localhost

by Michael Szul on

Once you have your web sites set up with HTTPS, you don't really want people visiting the non-SSL version, so for ASP.NET or IIS hosted applications, you...

Speech Synthesis Markup Language (SSML) in Chatbots

by Michael Szul on

Speech Synthesis Markup Language (SSML) is an XML schema language designed to describe speech and voice meta data for things like text-to-speech. This is...

🤖 + 🍺 Bots and Beer 0x08 - What AI Should Be... is Just as Complicated as Being Human

by Michael Szul on

What exactly should AI be? Should it be greater than us? Equal to us? Less than us? Artificial intelligence seems to be this catch-all term for an idealized state of human-machine interaction...

Adding PowerShell Core to the Hyper Terminal

by Michael Szul on

A lot of programmers are aware of the split in .NET between Framework and Core, but unless you live in the Windows scripting environment, you might not realize that PowerShell has also experienced this Renaissance.

QnaMaker Where are my Subscription Keys?

by Michael Szul on

There are four primary components that are good to have handy when you're creating a chatbot in Azure that uses the QnAMaker service Subscription Key...

The MSBot CLI for the Microsoft Bot Framework

by Michael Szul on

All of the configuration you can do with the Bot Emulator (including attaching services) is really just a GUI interface to update the *.bot file, and all...

SyntaxCon 2018 Mastering Your Programming Craft

by Michael Szul on

In late 2017, I became a Microsoft MVP, and that made me (slightly) overextend myself by submitting to a bunch of conference. One of those conference was...

🤖 + 🍺 Bots and Beer 0x07 - Building Useful Chatbots

by Michael Szul on

Microsoft and Facebook started championing bots because they saw how much people were using communication applications on phones.

Building Relationship Graphs in Python with NetworkX

by Michael Szul on

One of the thing I've been working on at work is something we call an object attribute mapper. For medical education, it's important to be able to attach meta data (attributes)...

Naive Bayesian Classification of Text Categories in Scikit-Learn

by Michael Szul on

I've been playing around a bit with text classifiers for work. In particular, we have a relatively large...

Process Multiple Chatdown Files in a Visual Studio Code Task

by Michael Szul on

In my last post we talked about the new Bot Framework Emulator and the Bot Framework's new Chatdown syntax and CLI for prototyping conversations in advance.

Chatdown for the Bot Framework - Introduction and Processing Multiple Files

by Michael Szul on

Did you hear all of the great news that came out of Microsoft's Build conference? The Bot Framework team has been on fire, which is a sure sign that chatbots are still high on Microsoft's priority list.

🤖 + 🍺 Bots and Beer 0x06 - Autism and Robotics

by Michael Szul on

ChartaCloud is the robotics company behind NAO and Pepper. You might not know the company, but you've seen the robots. Their photos are used in almost every article about robot assistants--even when they aren't the actual robots or chatbots being talked about in the article.

Hyper and Hyperstart for Your Terminal Experience

by Michael Szul on

Programmers spend a lot of time on the command line, and all of us have our favorite Linux shells, or debate the merits of MS-DOS vs. PowerShell...

It's Not About Custom Applications; It's About Clean Data

by Michael Szul on

Every year, Microsoft holds a Global Azure Bootcamp in cities across the world--all on the same day. These events are held by local organizations...

Hacking Diversity

by Michael Szul on

If you've been paying any attention to my Twitter feed, the podcast, or even the blog, you probably know that I've been working hard since November...

Fatal Python error Py_Initialize unable to load the file system code

by Michael Szul on

I ran into this early in the week when attempting to install Anaconda Python on my work computer. This is was actually a reinstall. My work computer had...

🤖 + 🍺 Bots and Beer 0x05 - Redacted Microsoft MVP Summit

by Michael Szul on

Lots of great stuff from the Microsoft MVP Summit, but it's under an NDA.

Can You Make Money from Bitcoin without Mining?

by Michael Szul on

This isn't so much a detailed post as a stream of consciousness from an interaction I had a few weeks back that got me thinking. I'm blogging about it because I'm trying to follow Scott Hanselman's rule of never emailing information you can put at a URL.

Bot Framework Suggested Actions without Sending a Response to Chat

by Michael Szul on

Last week, I received a LinkedIn invitation from a gentleman who mentioned that he follows my Bot Framework video tutorials on YouTube.

Actual Rockstars of Software and Technology

by Michael Szul on

It's been a week since I returned from Seattle for the Microsoft MVP Summit, and although it seems to be an obligatory thing to write a post about one's experiences (especially first-timers like me), I wanted to take a slightly different path, and talk about a few of the people that I met.

Microsoft's Bot Framework SDK for Python

by Michael Szul on

Recently, Microsoft announced the Python SDK for the Bot Framework, so now all the Pythonistas can get in on the fun of building chatbots using...

<< Prev Next >>