Monday, May 14, 2018

Microsoft Build 2018 Trip Report

Microsoft Build 2018 Report

Overall View

The conference was good, but didn't seem as good as Ignite was 2 years ago.

On the good side, the conference center was easy to access and navigate. Restrooms were plentiful and didn't seem as overcrowded as one would expect from a large tech conference. There was live music playing in the conference center all three days, and the music was very good. Sessions were located well, meaning that there was ample seating for the sessions that I attended.

Another really good aspect to the conference was networking. I had a chance to catch up with a few former employees and keep those connections going. I was able to meet up with tech leaders from some of our sister companies, and that was great. On a tip from my CTO, I talked to the Azure AD people and learned that we may be able to use the Azure AD B2C service for identity management cheaper than our current provider.

On the negative side, the food was awful. The lunch meals were lackluster, and there was no breakfast. Coffee wasn't served until after the first session or two in the morning, and that makes for grumpy attendees. Registration Monday morning took a LONG time to get a badge and t-shirt, making it almost impossible to catch the first part of the opening keynote. The combination of slow registration and limited seating forced me to attend the opening keynote in an overflow room. I could have had a better view watching it from home.

Session Summaries

Below are the summaries of the sessions I attended, or at least what I took from the sessions.

Future of Visual Studio

Amanda Silver, Kendra Haven, and Anthony Cangialosi

  • VS Code is more popular than Visual Studio.
  • Visual Studio supports side by side installation.
  • Using source-based discovery for unit tests instead of assembly-based discovery.
  • Supports a "watch" functionality where unit tests will automatically run.
  • Can step into code from a NuGet package (Source Link).
  • More editor configs are available.
  • Performance improvements for git branch switching.
  • Can work with pull requests directly in Visual Studio.
  • Debugging support from a code dump (or trace).
    • Can capture what occurred in prod.
    • Using the captured dump, can step through code as the steps occurred.
    • I'm not sure how the trace or dump is created.
  • "Time Travel Debugging"
    • Allows you to step backward through the stack.

.NET Overview

Scott Hanselman and Scott Hunter

  • .NET Core 2.1 RC was made available.
  • .NET Compatibility Pack provides some functionality that is still not supported in .NET Core (i.e. Directory Services).
  • .NET SDK works on Raspberry Pi.
  • There is an embedded HTTP "browser" that support Postman-like calls
  • Has a UI that works with Swagger to exercise API calls.
  • .NET 3.0 will support WPF and WinForms.
  • New refactorings for things like transforming LinQ queries to for each calls.
  • ML.NET was released; OSS machine learning framework.
  • Blazor is .NET running in WebAssembly in the browser.

AI for Earth

Jennifer Marsman

  • Right now, this is mostly a grant program to get researchers using AI for Earth.
  • Has some REST APIs exposing cognitive services for the earth.
  • Starting to do some machine learning based research around the spread of disease and tree cover mapping.

Building Event-Driven Serverless Apps w/ Azure Functions and Azure Containers

Rafat Sarosh and Luis Bosquez

  • There is a CLI tool for working with and developing Azure functions.
  • CosmosDB provides a Change Feed for detecting and working with changes.
    • Provides all changes made to CosmosDB in the order they were made.
    • Change Feed is on by default.
    • The Change Feed is persistent.

Empowering the Quantum Revolution with Q#

John Azariah and Julie Love

  • Q# is inspired by functional programming.
  • Supports first-class functions.
  • Is a strongly-typed system.
  • Being created to support the eventual existence of a quantum computer.
  • Microsoft is working hard to create a scalable quantum computer.

Meet the New Stack for Real-Time We Communication: ASP.NET Core SignalR

Damian Edwards and David Fowler

  • This was mainly live coding and was EXTREMELY entertaining!
  • Javascript SignalR client has been rewritten so that it doesn't use jQuery.
  • The Javascript client and C# client look the same.
  • SignalR uses Kestrel as the "communication" engine.
  • There have been a LOT of performance improvements made to Kestrel.
  • SignalR supports JSON and MessagePack message protocols.
  • Can support additional protocols if someone needs to create something different.
  • Default networking protocol is HTTP, but can support raw TCP now.
  • Additional networking protocols can be created too.

The Future of C#

Mads Torgersen and Dustin Campbell

  • There have been many performance improvements.
    • Many of them have enabled integration with unsafe code in a safe way.
  • Span allocates T in such a way that the memory isn't copied excessively.
  • Introducing a Range operator, very similar to the one in Python.
  • My observation: Many of the changes is that many were done to improve the performance of Kestrel and SignalR.

Demystifying Machine and Deep Learning for Developers

Seth Juarez and Chris Lauren

  • Seth did a GREAT job explaining enough of the math behind data science to make it less scary.
  • I didn't take many notes because I plan on re-watching the video.
  • There is a new "standard" for sharing model data called ONNX. I need to explore this more.

Inside Azure DataCenter Architecture with Mark Russinovich

Mark Russinovich

  • It was interesting seeing how the Azure data centers are set up and configured.
  • Most of the content of this talk should be more publicized because it is cutting-edge research.
  • 2 projects caught my attention:
    • Project Silicia -> storage on panes of glass.
    • Project Palix -> data storage using DNA.

Hybrid multi-cloud Strategies Using Terraform OSS with Azure

Arun Chandrasekhar, Damien Caro, and Tom Harvey

  • I missed the first 5 minutes of this session, and had a hard time catching up.
  • There looks to be some interesting stuff in Terraform, but I couldn't piece it all together.
  • I need to investigate Terraform more.

Looking Ahead with SQL Operations Studio

Ken Van Hyning and Alan Yu

  • It was stressed that SSMS is NOT going away.
  • This tool was created to help support running SQL Server on Linux.
  • The project is a fork of Visual Studio Code.
  • They have some visualizations built-in to the tool.
  • They are very excited to get contributions. ** Seems like everyone who wants to contribute doesn't know C#.

Amplify Your Awesome

Donovan Brown, Lorraine Bardeen, Raymond Chen, Chris Jackson, Jennifer Marsman, Jessica Payne

  • This was a series of 6 "lightning" talks around self-improvement.
  • It was neat seeing the auto-advancing slides.
  • For one of the last sessions of the conference, it was packed.

Other Take-Aways

I spoke with someone at the Azure AD booth. She talked to me about the B2C program, and it sounds like a program we should pursue.

Wednesday, January 3, 2018

Installing OpenSSH Client and Server on Windows 10

I've been trying to install the Beta version of the OpenSSH Client and OpenSSH Server on Windows 10 without luck. The feature simply didn't appear as an option for me.

After ensuring all Windows updates were applied, I finally stumbled on this article. I found this article when searching for the error code 0x800f0954 that I received when the Developer Mode package wouldn't install correctly. I followed the recommendation to modify the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AUUseWUServer" from 1 to 0. After making this change and restarting my machine, the Developer Mode package installed correctly and OpenSSH Client and OpenSSH Server became options I could install.

Friday, November 17, 2017

SQL Operations Studio on Mac

Microsoft recently released SQL Operations Studio for the Mac. It is a SQL Server management tool based on VS Code. I was lukewarm about this release because I use a Mac that is not associated with our domain and the SQL Servers I interact with don't have SQL Login enabled. After a little internet searching (i.e. Google), I found that I could issue Kerberos tickets via the command line and authenticate to Windows domain resources with Windows Authentication. Woo Hoo!

Unfortunately, this didn't work when I tried it. I was able to issue the Kerberos ticket using the instructions below, but SQL Operations Studio would not proerly authenticate. After a little more internet searching (i.e. Google again), I found this issue on Github. One of the comments on the issue recommended using all caps for the information entered in the command to issue the Kerberos ticket. That tidbit is exactly what was needed. I can now access SQL Servers using Windows Authentication using SQL Operations Studio on my Mac!

Instructions for Using Windows Authentication with SQL Operations Studio

  1. Open a terminal window.
  2. Type the following command:
    kinit USERNAME@DOMAIN.COM
  3. Ensure the command issued above uses all caps for the domain information.
  4. Open SQL Operations Studio.
  5. Connect to a database using Windows Authentication.
  6. Enjoy!

Monday, June 19, 2017

Find a File with Certain Contents

I was trying to search for a file with a particular class name inside it, and I could not remember the syntax of the command to save my life.  I knew I had it in a note somewhere, but I couldn't find that either.

Tonight I found the note.  I'm posting the command here so I can find it again.

For linux:
find . -name 'filepattern' -exec grep -l 'contentpattern' {} \;
For Powershell:
Get-ChildItem -Recurse | Select-String "dummy" -List | Select Path

Friday, June 2, 2017

Running Apps in Docker for Mac

In an earlier post I wrote instructions for running graphical applications out of Docker containers on my Mac. Since I wrote that post, I have wiped my Mac and reinstalled everything, including Docker for Mac. This post is an update of those instructions.

The steps for running graphical applications from Docker on a Mac have simplified quite a bit. These instructions assume you have Docker for Mac installed and running and have access to container images. Without further ado, here are the instructions:

  1. Install XQuartz from https://www.xquartz.org/. This MUST be done. The separate installation is required for the graphical applications to run on the Mac host from a Docker container.
  2. Logout and log back into the Mac. This is necessary to use XQuartz.
  3. Open XQuartz. From a terminal, execute the following command:
    open -a XQuartz
  4. In the XQuartz terminal window, execute the command:
    xhost +
    This command may be a little insecure; I haven't researched it fully yet.
  5. Run your Docker container, passing the DISPLAY environment variable with a command like:
    docker run --rm -it -e DISPLAY=192.168.1.1:0 ubuntu:latest /bin/bash
    192.168.1.1 is a sample IP address. Use the IP address of your system there.
  6. Within the Docker container, run an application with a graphical interface. This should display on the Mac.
  7. Enjoy!

Wednesday, May 3, 2017

Skills Atrophy

This morning at the Gateway to Innovation Conference in St. Louis, Scott McNealy of Sun Microsystems fame gave the keynote presentation. One of the points he hammered home was a fact where he stated that an IT person loses 20% of their skills per year. This theme was repeated by other conference speakers as well.

If this statistic is true, I'm not worried about it. At Clearent, two of our cultural tenets have us prepared: make others great and continuous learning.

Making others great keeps us focused on lifting people up and sharing what we know. This ensures that as the tide rises (people learn new skills), all boats get lifted (everyone has an opportunity to learn new things).

The other tenet of continuous learning is a bit obvious. What is not obvious is that Clearent has a training budget, and the IT management is measured based on everyone in IT going to training! The organizational focus ensures that training and new ideas are infused into the organization.

If Scott's claim about skill atrophy is correct, Clearent is in a great position to lead the technological pack!

Tuesday, April 18, 2017

Working with Files in Bash

I always forget how to loop through files in a Bash shell. Below are two snippets for looping through files using Bash.

Using a FOR loop in a script.

for file in $(command for files); do
    echo $file
done

Single line command.

find . -name "file glob" -exec command '{}' \;