# Friday, 08 April 2016

Wolfgang - 220x123 Last year, Security expert Wolfgang Goerlich began recording short videos from the front seat of his car. Each video lasted on only a few minutes and each covered a different topic of IT Security and/or infrastructure.

Now, you can watch many of these videos on Channel 9. This provides not only a different audience for Mr. Goerlich, but gives viewers the ability to subscribe to a video feed and to download different resolutions of the each video and even an audio-only track.

You can find these videos at https://channel9.msdn.com/blogs/stuck-in-traffic.

Friday, 08 April 2016 08:06:00 (GMT Daylight Time, UTC+01:00)
# Thursday, 07 April 2016

Microsoft Cognitive Services (formerly Project Oxford) provides a set of APIs for analyzing images, video, speech, and language. Learn how to get started and start developing against these APIs..

Thursday, 07 April 2016 12:48:00 (GMT Daylight Time, UTC+01:00)
# Wednesday, 06 April 2016

Windows Server 2016 will contain support for Containers.

Containers are a method of software virtualization, similar Virtual Machines (VMs). As with Virtual Machines, you can create multiple containers on a single physical machine; and this allows you more flexibility, portability, and efficient use of hardware.

Unlike Virtual Machines, each container does not have to run an entire operating system. Instead, each shares a common kernel operating system.

Because of this, Containers tend to be is much lighter than VMs. One can create folders and files and install applications in a container and those applications will be isolated from other containers - even those on the same machine.

Here are some differences between Containers and Virtual Machines

  • At its lowest level, a Virtual Machine interacts with a virtualized hardware layer, while a Container interacts with an Operating System kernel.
  • A container tends to be much smaller than a Virtual Machine (mostly because it does not require an Operating System in the container itself).
  • The operating system of a container must be the same as the operating system of the computer on which it is hosted (although the host computer can be a VM). The operating system of a VM can be different from that of the machine on which it is hosted.
  • It usually takes less effort to create and configure a container than a VM (again, no operating system to install on a container)
  • Containers start up and shut down much faster than VMs. This makes them ideal for either scaling out new instances. Reboots  are also much faster, of course.

As you can see, most of the differences between Containers and VMs are advantages of Containers. Now that Windows will support both, I expect the popularity of Containers to increase dramatically.
Windows Server 2016 will contain support for Containers.

Containers are a method of software virtualization, similar Virtual Machines (VMs). As with Virtual Machines, you can create multiple containers on a single physical machine; and this allows you more flexibility, portability, and efficient use of hardware.

  • Unlike Virtual Machines, each container does not have to run an entire operating system. Instead, each shares a common kernel operating system.
  • Because of this, Containers tend to be is much lighter than VMs. One can create folders and files and install applications in a container and those applications will be isolated from other containers - even those on the same machine.
  • Here are some differences between Containers and Virtual Machines
  • At its lowest level, a Virtual Machine interacts with a virtualized hardware layer, while a Container interacts with an Operating System kernel.
  • A container tends to be much smaller than a Virtual Machine (mostly because it does not require an Operating System).
  • The operating system of a container must be the same as the operating system of the computer on which it is hosted (although the host computer can be a VM). The operating system of a VM can be different from that of the machine on which it is hosted.
  • It takes much less effort to create and configure a container than a VM (again, no operating system to install)
  • Containers start up and shut down much faster than VMs. This makes them ideal for either scaling out new instances.

As you can see, most of the differences between Containers and VMs are advantages of Containers. Now that Windows will support both, I expect the popularity of Containers to increase dramatically.

Wednesday, 06 April 2016 14:27:00 (GMT Daylight Time, UTC+01:00)
# Tuesday, 05 April 2016

Growing up, I was always aware of Conan the Barbarian. I knew of the comics but it was not a title I read regularly; I saw the Robert Howard books in the bookstore, but I passed over them for the stories by Edgar Rice Burroughs; I watched the Schwarznegger movie but did not watch it twice.

Recently, I decided to read the Conan source material. Del Ray has gathered together all of Howard's Conan stories into a 3-volume set: The Coming of Conan the Cimmerian; The Bloody Crown of Conan; and The Conquering Sword of Conan.

Robert Howard wrote dozens of stories of the iconic barbarian. These were originally published in pulp magazines of the 1940s, such as "Weird Tales".

The stories are presented in the order they were written, which matches neither their publication order nor the chronological order of Conan's "life". There is very little continuity to the stories. Conan wanders the world, moving from adventure to adventure. If we order them chronologically, we see Conan as first a lone thief, then a mercenary and a pirate, a warlord, and finally king of the empire he conquers.

Unlike many fantasy characters, Conan exists on our world, but lived during the fictional Hyborian Age, which took place after the destruction of Atlantis, but before most of recorded history. Many of the places to which Conan travels are places that still exist today with different names (Iranistan for Iran, Afghulistan for Afghanistan, Kambulja for Cambodia, and Vendhya for India,Pakistan & Bangladesh). Magicians, gods, demons, and giant deadly creatures were common in these lands during the Hyborian Age.

It is a world marked by wars and brutality, in which wars are common. There are civilizations, but a common theme of these stories contrasts the low morals of "civilized" aristocrats with Conan's own moral code.

Conan is a brutal killer; but he has a strong moral code. In one story, he agrees to kill the master of a beautiful enslaved woman in return for her promise of sex. After fulfilling his end of the bargain, the woman flees to avoid Conan. He finds her (and rescues her from a new threat) but does not hold her to the bargain.

Although Conan uses his violence to further agenda, he has his own code of honor and looks down on those who condone slavery or torture for pleasure.

When reading these stories, one has to deal with stereotypes and imagery that strike many of us as insensitive today. Women serve mostly as props in Howard's stories - scantily-clad spoils of battle who exist to be rescued by Conan - or as hyper sexualized amazons. The black men in these stories are often savage and superstitious; and we hear descriptions of cunning hooked-nose men in turbans. If you can accept these stories are a product of an earlier century, you can enjoy them more.

This volume concludes with some incomplete stories. It's fine to skip these but I read them for completeness.

I enjoyed my journey into the stories of Conan. The action is abundant (if often violent); and Howard provides drama within the confines of stories that typically have a  short and simple plot.

Tuesday, 05 April 2016 14:40:15 (GMT Daylight Time, UTC+01:00)
# Monday, 04 April 2016
Monday, 04 April 2016 14:29:00 (GMT Daylight Time, UTC+01:00)
# Sunday, 03 April 2016

4/3
Today I am grateful that I now have cable TV in my apartment for the first time since moving to Chicago.

4/2
Today I am grateful for breakfast with Tim yesterday.

4/1
Today I am grateful to co-present with my son Tim at Indiana University last night.

3/31
Today I am grateful to attend The McDonald's High School All-American basketball games for the first time.

3/30
Today I am grateful for my first visit to the historic Harold Washington Library.

3/29
Today I am grateful that my son was offered a summer internship yesterday.

3/28
Today I am grateful for Easter dinner with family.

3/27
Today I am grateful for:
-An evening seeing Trevor Noah at the Chicago Theatre
-New clothes and Christina for helping me choose them.

3/26
Today I am grateful for: -Dinner with Dave and Bobbi. -Drinks with Gary and Patty

3/25
Today I am grateful for my new (to me) espresso machine and for the 2 cappuccinos I've had so far this morning.

3/24
Today I am grateful that my TSA Pre-Check status was approved.

3/23
Today I am grateful I was finally able to restore my personal email account yesterday.

3/20
Today I am grateful to see "Love and Information" at the Patinkin Theatre yesterday - my first time seeing live theater in years.

3/19
Today I am grateful for a day in St. Louis, with Nick, Darlene, Kevin, and Henry.

3/18
Today I am grateful for: -a chance to speak at Indy Software Artisans for the first time in almost 2 years. -a visit to my so Nick's home.

3/17
Today I am grateful I was able to unpack a bunch of boxes yesterday and remove some clutter from my life.

3/16
Today I am grateful for an amazing view of last night's lightning storm.

3/15
Today I am grateful for a good afternoon at the gym yesterday.

3/14
Today I am grateful for another Big10 Championship! #GoGreen

3/13
Today I am grateful to attend the St. Patrick's Day parade yesterday in downtown Chicago.

3/12
Today I am grateful for coffee with Tom yesterday.

3/10
Today I am grateful for a sushi dinner, and a walk around the South Loop on a balmy evening.

3/9
Today I am grateful for a surprise gift from my sons.

3/8
Today I am grateful for good dental insurance.

3/7
Today I am grateful for: -A long walk through the city yesterday -Relaxing in this apartment's Jacuzzi last night for the first time.

Sunday, 03 April 2016 14:00:37 (GMT Daylight Time, UTC+01:00)
# Saturday, 02 April 2016

At the beginning of this semester, Microsoft hired a new Student Partner at Indiana University. A Microsoft Student Partner (MSP) is a college student responsible for helping promote the Microsoft platform on campus. Part of that responsibility involves hosting technical events.

This new MSP invited me to campus to co-present with him. He reserved a room, ordered pizza, invited students, and brought some giveaways. We decided to present on Project Oxford - a set of web services that use machine learning to analyze images, videos, and voice. A day before the presentation, Project Oxford was renamed to Microsoft Cognitive Services, so I had to rush to update my slides and re-test all my demos.

The event was a success. Students studying computer science and related fields attended, students who were curious about the technology attended, and one Informatics professor attended.

For me, it was a rewarding experience - in part because it was a chance to connect with students and to share a cool technology that Microsoft is offering;

But more importantly, I was excited to work with the new Indiana University MSP - Tim Giard.

Tim is my son and a junior majoring in Informatics at IU. This was our first chance to work together professionally and it was one of the highlights of my year.

V__7763

Saturday, 02 April 2016 14:59:41 (GMT Daylight Time, UTC+01:00)
# Wednesday, 30 March 2016

The Microsoft Build conference opened this morning. Some of the announcements were technologies that had been previously announced, but are now more generally available (such as Hololens); Some were brand new technologies, such as Bash on Windows.

I was most excited about the Microsoft Bot Framework that allows you to build intelligent bots that interact with Cortana to act as a personal assistant within your app; and Cognitive Services, which includes many of the APIs included in Project Oxford.

Below are the raw notes I took during the keynote. Please let me know (politely) if you discover any typos.

Edge: Biometric authentication for supporting web sites

Fingerprint login (USAA web site)

Ink

Sticky notes: Cortana recognizes words like "tomorrow" as date in appointments or reminder

Draw lines on a map: Distance automatically calculated.

Add labels to map: Labels stay in place when map is rotated in 3D space

Low latency: Ink from pen

Virtual ruler on screen to draw straight line

Developer

GPU Effects, e.g., Blur background synchronized with touch movement

<InkCanvas> control

<InkToolbar> control: Allow users to mark up your screen

Over 1000 new APIs and features

Released today: VS 2015, Update 2

Announced: Bash shell is coming to Windows (native Linux binaries)

Gaming

UWP: Achieve 4k at 60 frames/second

Xbox games running on desktop

  • Take advantage of Windows features
  • Consistent input experience

Xbox developer mode

  • Run, test, debug game on Xbox
  • Preview available today

Cortana on Xbox One

Direct X 12

Hololens

First & only Untethered holographic computer

Hololens shipping today

Releasing app and source code

Apps

  • Holographic anatomy: View internal organs &nerves; collaborate with remote partners
  • Destination Mars by NASA: Virtual tour of another planet

Cortana

Works on lockscreen

Add Cortana to your app.

Insights: When Cortana surfaced in app

Users must give permission for Cortana to their data

Windows, Android, Web Sites, and (soon) iOs

Skype

Interaction with Cortana

Bots: Remembers context from conversation

  • Location of events, friends in locations
  • Bots available today

Skype for Hololens

Microservices

Microsoft Bot Framework

https://dev.botframework.com/

Build conversational bots for your application

Rule-based natural language processing

UI to teach bot to understand your jargon/ terms/ slang

Cognitive Services

22 APIs

https://www.microsoft.com/cognitive-services/

Many of them used to in Project Oxford

Custom Recognition Intelligent Service (CRIS):

  • Understand speech and language
  • Customize speech-to-text

Demo

Smart Phone / Smart glasses app for blind people

Facial recognition and analysis

Read menu, including headings

Wednesday, 30 March 2016 19:07:15 (GMT Daylight Time, UTC+01:00)
# Monday, 28 March 2016
Monday, 28 March 2016 10:27:00 (GMT Daylight Time, UTC+01:00)
# Saturday, 26 March 2016

In the last article, we described the 2-way data binding with the ng-binding directive. In this article, I will introduce the ng-repeat directive.

Recall that a directive is a well-known attribute defined by AngularJS or your AngularJS application that is applied to an HTML element to provide some functionality.

The ng-repeat directive acts in a similar way to foreach loops or other constructs in a programming language. We point ng-repeat to an array of objects and Angular will loop through this array, repeating the HTML contained in the attributed element once for each element in the array.

In the following example, our controller creates an array of "customers" and adds it to the $scope directive, making the customers stateful and available to the HTML. Each customer has a firstName, lastName, and salary property.

var app = angular.module("myApp", []);
app.controller("mainController", function($scope) {
    $scope.customers = [{
      id: 1,
      firstName: "Bill",
      lastName: "Gates",
      salary: 200000
    }, {
      id: 2,
      firstName: "Satya",
      lastName: "Nadella",
      salary: 100000
    }, {
      id: 3,
      firstName: "Steve",
      lastName: "Balmer",
      salary: 300000
    }, {
      id: 4,
      firstName: "David",
      lastName: "Giard",
      salary: 1000000
    }];
}); 

In our HTML, we can loop through every customer in the array by applying the ng-repeat directive to a <tr> element, such as:

<tr ng-repeat="customer in customers"> 

Because the array contains 3 customers, the <tr> tag and all markup within this tag (including any bound data) will be repeated 3 times. As a result, the user will see 3 rows.

Here is the markup for the entire table.

<table>
  <thead>
    <tr>
      <th>First</th>
      <th>Last</th>
      <th>Salary</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="customer in customers">
      <td>{{customer.firstName}}</td>
      <td>{{customer.lastName}}</td>
      <td style="text-align:right">{{customer.salary | currency:$USD}}</td>
    </tr>
  </tbody>
</table> 

The beauty of this is that we don't need to know in advance how many customers we have or how many rows we need. Angular figures it out for us.

The ng-repeat directive allows us the flexibility of repeating HTML markup for every element in an array.

Saturday, 26 March 2016 23:35:00 (GMT Standard Time, UTC+00:00)