Technology and Friends

Unofficial, machine-generated summaries, as of 2026-11-09.

Heather Downing on Developer Burnout [TECHNOLOGYANDFRIENDS 630]
synopsis

Downing's position is that developer burnout, made worse in 2020 by the pandemic's holding pattern, can be recovered from, but only deliberately: with a therapist, by setting priorities and boundaries, and by finding people and work that bring back the reason for coding.

Context. Downing, a .NET evangelist at Okta, expects permanent changes like those after 9/11, with fewer in-person events, though she is busier speaking remotely. She defines burnout as exhaustion with reduced accomplishment, usually caused by unresolvable job stress, now combined with rolling lockdowns and life lived at one desk. The pressure was already there in constant change, roles absorbing DevOps and database work, missing handoffs, and demand for seniors over juniors.

Symptoms. From a survey-based checklist she lists cynicism, lack of energy, irritability, avoidant or addictive behaviour, compulsive overwork and the "bus factor" belief that the team needs you. She shares her own snarky slip and pandemic drinking, and a capable friend who learned to share context.

Coping. Therapy comes first. After that, she mentors boot-camp juniors to borrow their excitement, picks the one "dragon" that matters most, fosters dogs, limits screen time, sets boundaries and takes micro-vacations and hikes.

Women and stakes. She describes the pressure to disprove diversity-hire assumptions and the extra scrutiny of caregiving absences. She also cites the high stakes of code, from self-driving cars to the 737 MAX, and the industry's harsh standards. She closes by urging burnt-out developers to make the attempt to "fall back in love with technology".

  • Pandemic stress is now compounding job stress for developers. Downing, Okta's lead .NET evangelist, says the world has been in a "holding pattern" of rolling lockdowns since about February (she is speaking in August), and that people now do work, socializing and everything else at the same desk. She coped by throwing herself into building applications, but says she sees exhaustion across the industry. She adds that this predates the pandemic: constant change and roles absorbing DevOps, Docker and database administration have been wearing down even developers with 20 years' experience.
  • Burnout shows up as cynicism, avoidance, irritability and overwork. From a blog's checklist based on a survey of about 55 developers, she lists cynicism about writing code, lacking the energy or motivation to turn up, irritation at coworkers, avoidant or addictive behaviour, compulsive overwork to keep up, and a belief that the team will collapse without you. She gives her own examples: a snarky remark that prompted a colleague's check-in, and drinking that rose early in the pandemic, which she ties to a family history of alcoholism. She notes that highly capable developers often fail to see burnout coming.
  • Recovery starts with a therapist, then deliberate changes. Downing, who says she is not a doctor, says to see a therapist first and to switch if they are not the right fit; she found hers on the fourth try. Her own steps were mentoring excited junior developers from boot camps, putting her limited energy into the most important few of 20 tasks, helping outside tech by fostering huskies and malamutes, limiting online exposure, setting boundaries with her boss, taking micro-vacations and hiking. She cites Tim Ferriss's The 4-Hour Workweek.
  • Women in tech face extra pressure to disprove diversity-hire assumptions. Downing says that, depending on where they live, women face an assumption that they were hired to fill a diversity quota, so they feel they must perform at a higher level. Absences for pregnancy or for caring for elderly parents also carry a worry that a man would not "bring that inconvenience" to the company.
  • Developers' high stakes and high standards add to the strain. She points to self-driving cars and the Boeing 737 MAX as examples of how code matters, and says even a small JSON library might end up on a plane. Developers hold each other to harsh standards, as in pull-request comments on major SDKs, while knowing how much of the internet is held together "with bubblegum and tape" by a short supply of senior developers, many of them burnt out.
Wilfried Motchoffo on A Path to a Tech Career [TECHNOLOGYANDFRIENDS 629]
  • Background is a form of diversity that tech forgets. Motchoffo, a Black man who grew up in Cameroon and lived in France, says he came to the US about four years ago as a French speaker who barely knew English, with no plan to study computer science. He contrasts this with the usual four years of college followed by a job application. He is now finishing a summer Microsoft internship in a programme he describes as diversity-oriented, which mixes program management and software engineering.
  • Losing his family's support left him homeless. He was homeless in Seattle for about a year. Six months after arriving, his family's financial support ended and, as an international student barred from working, he lost his apartment and left school. He slept by a bus station, showered at the gym where his membership still worked, and after about seven months applied for a work permit, which took about four months to arrive. He then worked in a fast-food kitchen in Bellevue.
  • He chose rideshare driving to practise English, and it led him into tech. After saving for about a year to buy a car, Motchoffo drove for Lyft and Uber full time so he could talk to people. One passenger told him to "be comfortable in a discomfort position". Passengers who were software engineers introduced him to the field, and he began learning online and working toward an associate degree in computer science.
  • A ride he accepted by accident produced the Microsoft internship. At the end of a long day he tapped "accept" by mistake. His passenger's husband worked on the Microsoft internship programme, and her call to him revealed applications closed that day at 5 p.m., two hours away; he applied and started in June. In the internship he found he prefers program management, for its focus on solving customers' problems, while still liking to code.
  • Finance blocks university, so he is taking a bootcamp first. He was accepted at the University of Washington but could not get a loan because of his status. An instructor pointed him to the Code Fellows bootcamp, which gave him a full-ride scholarship, and he plans to work and save before returning to school. His advice to people struggling is to keep hope and keep going.
Alexandria Storm on Natural Language Processing and Inclusion [TECHNOLOGYANDFRIENDS 628]
synopsis

Storm, an undergraduate who has just finished her second Microsoft internship, argues that AI is only as good as its data and that the data must represent everyone who will use it. That conviction runs through her Bing language work, her cancelled founders' conference and her criticism of performative diversity.

The Bing project. After a first internship in UX engineering, she worked alone on natural language understanding for Bing's answer boxes. She built two binary classifiers, one for region sensitivity and one for time sensitivity, using labelled data she collected from paid judges, and says she raised precision significantly.

Diverse data. Storm says Bing lags on non-Latin languages, and that models trained only on broadcast "standard" English may fail AAVE speakers. She argues NLP needs linguistics and diverse teams, noting her team had no Spanish speakers.

The conference. She and two Berkeley colleagues planned a conference with a VC-judged pitch competition to connect underrepresented founders with investors. They had sponsorship and travel scholarships, but the pandemic cancelled it, and she stepped back to protect her health.

Performative diversity. She closes by criticizing Pride-month gestures that lack substance, and praises companies that are honest about their numbers. She rates Microsoft better than most.

  • Storm built classifiers to flag region- and time-sensitive Bing queries. In her second Bing internship in Bellevue, a solo project on a team where many held PhDs or master's degrees, she fine-tuned two binary classification models. One marks a query as region-sensitive (should a user in India see the same answer as one in the US?), the other as time-sensitive, as with "how do I delete my Zoom account", which needs the current version's answer. She says she raised the model's precision significantly and presented to the VP of WebXT; the project was ready to ship but she does not know whether it has.
  • Data quality, not model-building, drives improvement in industry AI. Storm says that at large companies the base models already exist and engineers mostly tweak them, so the critical gains come from large volumes of quality labelled data. She gathered hers through internal sites where paid judges and vendors labelled queries. Her own addition to "quality" is that the data must represent the real, diverse user base.
  • NLP models fail users when they ignore dialects and non-Latin languages. She says Bing's answer quality lags for non-Latin-script languages such as Arabic and Chinese. Drawing on her study of linguistics, she argues that models trained only on "standard" broadcast English, which she calls a made-up dialect, may not understand speakers of African-American Vernacular English. She also says her team had no Spanish speakers, which she believes keeps Bing US-centric.
  • Underrepresented founders need concrete funding links, not just community. With two Berkeley colleagues, Storm planned a conference for entrepreneurs of colour, women and queer and trans founders, centred on a pitch competition judged by VCs. It had Microsoft sponsorship (HubSpot was in the works) and travel scholarships. It was cancelled in early April because of the coronavirus, and she says she would only try again through a better-funded organization.
  • Much corporate diversity work is performative, she argues. As a queer woman of colour, often the only one of her demographic on a team and once one of two women at a startup, Storm criticizes rainbow avatars each June without support, promotion or pay equity behind them. She prefers companies that admit their numbers are poor and say how they will improve. She says Microsoft is significantly better than many, citing its funding of her conference.
Irma Mesa on Cafecito [TECHNOLOGYANDFRIENDS 627]
  • Cafecito pairs remote tech workers with strangers for short video breaks. Mesa, who has worked remotely since 2017, built it to solve her own isolation: members sign up, are matched on their interests, role and industry, and meet on a 30-minute video call. She planned it as a local coffee meetup in Indianapolis; COVID made it virtual, and she says it now has members on five continents.
  • The product is the matching algorithm, not the video. Mesa says video comes through daily.co's API, which took less than a day to set up. The core is a matching algorithm, built from scratch by a developer in Mexico City and tested since July, that now starts from shared industry and then narrows by interests. Post-call feedback on enjoyment (1–5), relevance, whether to meet again and how the caller felt is meant to train the matching over time with machine learning, which she describes as still lightweight.
  • She launched on no-code tools and is rebuilding to scale. Mesa says she launched in March on Zapier for automations and Airtable as the database, to validate the idea, and is moving to a proper backend with a React frontend, hosted on AWS. She has about 500 members and hopes for 1,000 by year end. Because she fears another 5,000 at once would be "shaky", she is considering a waitlist, and she is putting quality ahead of growth because competitors who grew fast have shaky quality.
  • Cafecito is free for now, with freemium planned. Mesa describes the current service as a beta with no revenue. Her plan is a trial of perhaps 14 days, then a premium tier with precise targeting such as "engineers in Chicago". As a first-time founder she says running a free product is stressful, and marketing so far has been organic, through Product Hunt, newsletters and users' posts.
  • A business version would help people ops onboard and keep remote hires. Mesa says a B2B prototype, aimed at an August 31 or early-September pilot, would give people ops data on which employees and departments are engaging, so they can act on retention and well-being. Fellows from a programme for people who lost internships to COVID are building it. Giard adds that turnover is expensive and that not feeling connected is one reason people leave.
Nayonna Purnell on Changing to a Career in IT [TECHNOLOGYANDFRIENDS 626]
  • Purnell left teaching for software after talking her way into an internship. She taught K–12 Spanish in Philadelphia for six years, holds a dual master's in special education and Spanish, and made the change about three years ago, around age 30. She had built point-and-click sites, learned through Girl Develop It meetups costing $20–$50, and took an online course. She then asked a startup for a summer internship and was paid $500 a month after the founders said they could not match her teacher's salary. She resigned from teaching, went on to community college and an online programme for software engineering, and now works as a consultant on Salesforce admin and development.
  • The "developer in three months" story did not hold for her. Purnell says the bootcamp promise of a $60,000-to-six-figure job after three months ignored who it worked for. She says data shows Black women are not being hired in Silicon Valley. With two master's degrees, a bachelor's and a software engineering certification, she has been told at interviews that she was "perfect, but yet not enough", and she has never had an uncle or friend to call for a role. She attributes this to being a woman of colour.
  • She focuses on problem-solving rather than one language. Her stack has spanned JavaScript, Python, Apex on Salesforce, Java, C++ and, recently, Blazor with C#. A senior developer's remark that developers are problem solvers changed her approach. Giard agrees, saying his own job is solving business problems, sometimes without technology.
  • Teaching skills transfer directly to development. Purnell calls them her superpower: explaining technical work through analogies to non-technical people while being precise with peers, writing documentation for whoever comes next, and planning code the way she wrote lesson plans, starting from the objective and breaking it into chunks. Her hardest part has been interviews, where hiring managers say passion is enough but then ask her to code and to articulate her thinking.
  • She built her network and experience by volunteering and asking. Purnell volunteers at and organizes conferences to get in free and meet people. She joined Temple University and conference mentorship programmes, plans to attend a virtual Grace Hopper, and found a Python group through Systers. Building a conference website on Firebase with senior developers gave her hands-on work her job did not. She advises entering tech through non-engineering roles or employers that train people from other backgrounds, and not giving up.
Peter de Tender on Azure Certification [TECHNOLOGYANDFRIENDS 625]
  • Cloud certification can no longer be crammed in a five-day class. De Tender, an Azure technical trainer at Microsoft since September last year, after about 10 years running his own consultancy, says his team trains top and "compete" customers each week for Azure skills, with certification as a side effect. He says Azure is too broad for anyone to master, and that over the last two or three years exams have tested practical, day-to-day knowledge rather than memorization.
  • Azure certifications are now built around job roles. He says Microsoft Learning introduced the model about three years ago, around September 2018. It starts from AZ-900 Azure Fundamentals and moves to role exams such as administrator, developer (AZ-204), security and IoT, nine or ten in all, which combine into role credentials such as architect. Exams are revised every four to six months, so the administrator exam has gone from AZ-100 to AZ-104. He says the credential stays valid for life but an exam counts for two years.
  • Certification proves competence to yourself and employers. De Tender says Microsoft trainers and Microsoft Certified Trainers must be certified to teach. For others it is evidence of invested effort that can help a career, though not a guarantee of expertise. When he managed a partner firm, consultants who passed got a bonus, a gift card or a pay raise. Giard adds that a certification gives a candidate a leg up, all else being equal.
  • Prepare with free Microsoft Learn labs and each exam's weighted objectives. He points to microsoft.com/learn for free training, documentation and hands-on labs, and suggests running even the smallest VM, about $30 a month, for five minutes. Each exam has a PDF of objectives with weightings; his example is networking at 5% against web-app deployment at 30% for developers. He takes beta exams because they show what to focus on, and their scoring can be revised after feedback within two to six weeks, so a fail can turn into a pass.
  • Exams turn on reading details and spotting distractors. De Tender describes the question types: yes/no, multiple choice with up to seven or eight plausible options, drag-and-drop ordering of steps, and case studies, the hardest, where technical and business requirements such as performance against cost must be balanced. Scenario detail such as "17 offices, 120,000 employees" is often irrelevant. He says live-environment tasks were added about a year ago but recently removed, which he believes is partly because of COVID capacity. Exams can be taken at home under webcam supervision at a completely clear desk; he once had to cover a hotel TV with towels.
Damian Brady on MLOps [TECHNOLOGYANDFRIENDS 624]
  • DevOps practices fit machine learning poorly as they stand. Brady says ML projects are experimental, with dead ends and corrupt data, and may run weeks or months before anything is worth releasing. A training run "might take days of training on petabytes of data" and thousands of dollars of compute, against minutes for a normal build, so retraining on every change is not practical.
  • Everything except the data belongs in source control. That means the Python, R or C# training code, the data-cleaning steps, the infrastructure definition (VM size, GPUs, RAM, OS, library versions) and the pipeline, which saves each model to a repository with metadata such as accuracy. He says data scientists are often not developers, so models still pass around by USB key and email; he wants an automated pipeline that packages a model as a library or, commonly, a Docker container exposing an API.
  • Monitoring should test whether a new model changes behaviour. For a recommendations engine he would check whether the new model gets more clicks than the old one; for image captioning, whether users correct captions less often. He says this is only partly automatable, because validation against your own test data "doesn't necessarily represent the real world".
  • Track individual experiments, not user stories toward the goal. Brady says he has been "struggling with" planning, since a project's single aim (a recommender hitting a target click-through) cannot be broken into steps. He suggests one work item per experiment, such as a linear regression on a given data set, closed with its result even when it is a dead end, so the team sees what was tried.
  • Azure Machine Learning runs training; GitHub Actions or Azure Pipelines trigger it. He describes Azure ML's experiment and model tracking, compute that scales from zero to five or six instances and back, mounted blob storage, hosted Jupyter notebooks, AutoML and a drag-and-drop designer. General CI tools cannot easily run an unattended two-day job and don't know what a model or accuracy metric is, so he uses them to start a training run when code changes and to deploy once the model is done.
Glenn Block on Astrophotography [TECHNOLOGYANDFRIENDS 623]
synopsis

About two years into the hobby, Block argues that astrophotography is now within an amateur's reach. Mounts, cameras and software have become far more affordable, though a serious start still costs a couple of thousand dollars. The way in, he says, is the local astronomy community rather than the equipment.

Mounts and optics. He starts with the mount: a tracking mount follows the Earth's rotation, and an equatorial mount at about $800 tracks better than an alt-azimuth one at the same price. Aperture sets how much light a scope gathers, and the eyepiece sets magnification. Reducers widen the field of view and a Barlow zooms in, each with a trade-off, which he says appeals to the engineer in him.

From eyepiece to camera. Faint deep-sky objects need long exposures, around 30 seconds, from a dedicated camera tethered to a PC, which then stacks many frames, sometimes from several nights. He says a Canon EOS is also popular. Sessions last six to eight hours, so power matters, and he chose an Intel NUC over a Mac drawing about 80 watts. Post-processing is part automated and part checked by hand.

Where and when to shoot. He leaves Seattle's light pollution for darker sites an hour or more away, judges them by the Bortle scale, and plans trips with deep-sky weather apps covering seeing, humidity and cloud. His proudest image is of the Whirlpool Galaxy.

His gear path. He went from a cell-phone adapter to a Celestron NexStar Evolution 8, a used ZWO ASI294, then a Celestron AVX mount, a RedCat 51 and a guide scope. Each upgrade, he says, needed about 10 more purchases.

Getting started. He recommends the book NightWatch and the Cloudy Nights forum, and above all a local star party, where newcomers can look through other people's scopes.

  • The tracking mount matters more than the telescope sold in kits. Block says children's scope kits disappoint, because a stable mount that moves with the Earth's rotation is what keeps an object centred. He puts a really good alt-azimuth mount at about $5,000 alone, against roughly $800 for an equatorial mount that tracks tightly; equatorial mounts align on Polaris and need counterweights, so he started on alt-azimuth because it was easier to learn.
  • Deep-sky astrophotography is long exposures stacked and post-processed on a computer. The eye sees the Orion Nebula as a grey smudge; a 30-second exposure brings out colour. He describes sessions of six to eight hours, sometimes over several nights, with a dedicated camera streaming frames over USB to a PC, then stacking in Photoshop, Deep Sky Stacker or PixInsight, with perhaps 10 hours of processing behind a finished galaxy image. Imaging drains laptops, so he bought a low-power Intel NUC mini PC rather than a Mac drawing about 80 watts.
  • Dark skies and atmospheric conditions decide the shot. He says the Bortle scale measures sky darkness, lower being darker. From Seattle he drives about an hour to Gold Creek (Bortle three or four, he thinks), and names Goldendale, about three and a half hours away, with an observatory. He uses deep-sky weather apps for seeing, humidity and cloud up to about 10 days out, and says city-light filters help from home.
  • Start cheap and upgrade as the hobby takes hold. He began with a cell-phone adapter on the eyepiece and shot the Moon and the Orion Nebula from his driveway. His gear went from a Celestron NexStar Evolution 8 (an 8-inch scope that aligns on three stars from a 50,000-star database) to a used ZWO ASI294 camera (almost $1,000 new), a Celestron AVX mount, a portable RedCat 51 and a guide scope. He puts a serious start at a couple of thousand dollars, or about $300 for a tracker if you already own a camera, and recalls one person who spent $100,000.
  • Join the local community before buying anything. Block says a star party hooked him about two years before recording, and that you don't need a telescope to attend one. For learning he recommends the book NightWatch, the Cloudy Nights forum ("the de facto site"), his local shop Cloud Break Optics and local Facebook groups, and says beginners are not made to feel dumb.
Jon Skeet on Programming an Electronic Drum Kit [TECHNOLOGYANDFRIENDS 622]
synopsis

Skeet, who builds Google Cloud's .NET client libraries, describes V-Drum Explorer, an open-source app for configuring Roland electronic drum modules from a computer. A year on, it works much as he first pictured it and has grown into Blazor, Bluetooth and a second instrument. He calls it silly and also useful: it taught him tools he has since used elsewhere, and it supplied conference and user-group talks.

The idea. A Roland module holds 100 kits, each configurable down to two instruments per trigger, behind a tiny display. Seeing the USB port in the store, he imagined a tree-view editor. He compares seeing an idea through to the end with directing An Inspector Calls about 14 years earlier, when the cast finally played his cheerful Inspector "to 11" on the last night.

Talking to the module. It speaks MIDI SysEx, which he says is one-way in MIDI 1.0, so he built a request-response layer on top. He moved from a console app to WinForms to WPF, then rewrote the WPF app properly with view models.

Structure. Separate projects hold the model, with schemas for the TD-17, TD-27 and TD-50 and interfaces for MIDI and audio, plus the device implementations and the view model. A view-services interface keeps the view model testable, though he says he has written few tests. People with similar kits have shown interest.

The silly parts. Prompted by user-group listeners, he built a Blazor demo using the Web MIDI API that reaches the kit over Bluetooth from a phone. He also found that Roland's Aerophone wind instrument shares the protocol. A bar trigger turns the pages of his sheet music.

What it gave him. He learned installers, code signing and documentation. His WPF work led to a Zoom SDK app, and the project became an NDC London talk and many remote user-group talks. He says it works better over Zoom because the kit stays at home.

  • A tiny module display prompted him to configure the drums in code. Skeet's Roland TD-17 (later upgraded to a TD-27 module) holds 100 kits, and in each one every trigger can take two instruments with their own volume, attack and crossover. Seeing the USB port, he pictured a Windows app with a tree of settings. He says the open-source V-Drum Explorer still looks much as he imagined it just over a year earlier.
  • MIDI SysEx had to be wrapped to behave like request and response. He says MIDI 1.0 is unidirectional: the module answers on its own output with a block of memory at an address, and sends the same message when settings change on the device. His abstraction sends a request, waits for data for that address and ignores everything else. He credits Roland's detailed documentation of each module's schema.
  • The design separates model, view model and devices so the view model stays testable. A model project holds the schemas for the TD-17, TD-27 and high-end TD-50 and interfaces for MIDI and audio, implemented in separate projects; the audio one records samples of all 300 instruments. Dialogs go through a view-services interface with one-line implementations, so tests can fake a save or a cancel, though he admits there are few tests. The app went from console to WinForms to WPF, then a full WPF rewrite with view models, and he notes there had been no new WPF books since about 2010.
  • User-group audiences suggested the extensions he finds "wonderfully silly". After one suggestion he spent a weekend on a Blazor demo that runs the same .NET model code in the browser through the JavaScript Web MIDI API, which can reach the kit from his phone over Bluetooth MIDI. Another question led him to find that Roland's Aerophone digital wind instrument uses the same protocol, so the app lists its saxophone and pipe-organ kits too.
  • A spare pad turns the pages of his sheet music. Hitting the bar trigger sends a MIDI note that his console app turns into a page-turn on a four-page PDF of "Livin' on a Prayer". An earlier hack copied the current kit to slots 99 and 100 and treated a switch to 100, made by the pedal, as a page-turn. He says the project taught him Windows installers, Authenticode signing and documentation, and its WPF work made his later Zoom C# SDK app practical.
Donovan Brown on App Innovations [TECHNOLOGYANDFRIENDS 621]
synopsis

Brown, a DevOps advocate at Microsoft, holds that lift-and-shift is a fine way into the cloud but must not be where you stop: lift, shift, then innovate as fast as you can, on a base of agile, DevOps practices and infrastructure as code.

Why VMs fall short. Brown says that a VM in the cloud left him patching, managing firewalls and timing reboots. The gains were hardware upkeep and a move from CapEx, buying for Black Friday peaks, to OpEx. Managed services such as Azure SQL, App Service, Functions and AKS are what free developers to work on the product.

Lift first, then rework. Asked whether lifting first is acceptable, Brown says yes. The Azure DevOps team over-designed, then lifted TFS into the cloud as-is and banned new services from the monolith, adding microservices so it would shrink. He says the result looks nothing like the original drawings. Giard links this to lessons from open source.

Production first. Brown builds an infrastructure-as-code pipeline before any code, then deletes the whole subscription and redeploys to prove it works. He says this covers disaster recovery and short-lived QA environments. His rule is "if it hurts, do it more often": teams shipping every six months never automate their deployments.

The recipe. Brown's order is agile, then DevOps practices, then app innovation. He says PaaS needs less deployment configuration than VMs.

  • Lifting a VM into the cloud is a stepping stone, not the goal. Brown says that after moving his IIS and SQL Server app to the cloud on Windows VMs he still had to patch, manage firewalls, run antivirus and schedule reboots. He grants it brought flexibility, capacity and a move from CapEx to OpEx, and says the gain comes from moving on to Azure SQL, App Service, Azure Functions, AKS or Azure Container Instances.
  • Get to the cloud with least friction, then innovate. Brown says the team behind what is now Azure DevOps spent so long designing a cloud architecture that it shipped nothing, then lifted TFS into the cloud as-is. It then ruled that no new service could join the monolith, and added everything as microservices so the monolith would "atrophy". He says the result "looks nothing like what we had drawn up", and that it lets them scale only the part under load, such as build.
  • Build the infrastructure-as-code pipeline before writing any code. Brown deploys the pipeline, checks Azure, deletes everything in the subscription and reruns it to confirm it all comes back, so disaster recovery becomes "run another deployment". He says the same approach saves money: QA environments are created just in time and deleted afterwards, which stops the meters.
  • If deployment hurts, do it more often. Brown argues that teams shipping every six months never invest in automating a painful deployment, while shipping monthly forces the automation that makes it easy. He compares it to going back to the gym after a long break.
  • His recipe is agile first, then DevOps, then app innovation. Brown says PaaS services such as App Service, Functions and static web apps are easier to deploy than VMs. A VM also needs configuration as code (DSC) for ports and IIS on top of the infrastructure as code. The practices he lists are infrastructure as code, continuous integration, a good branching strategy, small increments and automating everything possible.
Tibi Covaci on Creating a GitHub Action [TECHNOLOGYANDFRIENDS 620]
  • GitHub Actions are scripted workflows triggered by repository events. Covaci, newly at Microsoft as an Azure developer audience engagement lead, describes a YAML workflow made of jobs, steps and predefined actions. It runs on a pull request or push, for example compiling and running unit tests before anyone bothers with a code review. He says he is not a fan of YAML's sensitivity to whitespace.
  • Azure generated a working CI/CD workflow in under half an hour. Mentoring at the Hack the Crisis hackathon in Sweden, about three months earlier, Covaci found a friend deploying a peer-to-peer communication app (Node.js, Express, WebSockets) to DigitalOcean by hand. He right-click deployed it to an Azure web app. Choosing GitHub Actions in the deployment center then created a workflow in the repo that deployed all the way to production.
  • He wrote his own action rather than use a suboptimal one. The client side was only static files, so Covaci moved it to a storage-account static website behind a CDN. The marketplace action he found was a .NET app that had to compile on every run, so he wrote a Node.js action on the storage SDK. It took a couple of days and is under 150 lines. Its action.yml sits at the repository root and declares the parameters, and the storage account name and key come from GitHub secrets. It is open source, and his planned version 2 adds shared access signatures so a leaked credential can be revoked without rotating the account key.
  • A least-privilege service principal handles CDN purging. Covaci logs in with the Azure login action using a service principal that can only purge the CDN, then runs az cdn endpoint purge. Pushes to a dev branch deploy to the development environment, and pull requests accepted into master deploy to the main application. He says the documentation is still in its infancy, so he learned by reading other people's actions, chiefly those the Azure team publishes.
  • The virtual DevSum delighted attendees but lost speaker interaction. Covaci says the organizers had only three weeks to switch formats. They used a live studio with interviews between sessions, and the venue kept the down payment because it would still allow up to 50 people on site. He proposes leaving half an hour or more between sessions for open-mic talk with speakers. Whether next year's event is held in person is to be decided in the fall.
Mete Atamel on Serverless Containers [TECHNOLOGYANDFRIENDS 619 ]
  • Serverless means event-driven code that scales to zero and bills per use. Atamel, a developer advocate at Google Cloud, defines it as functions that respond to events such as HTTP calls, pub/sub messages or storage events, on infrastructure the developer does not manage, billed only for request time. He and Giard agree the name is misleading, since there is still a server.
  • Knative brings serverless behaviour to containers on Kubernetes. Atamel says serverless functions limit the environment, while running containers on Kubernetes demands learning many constructs. Knative, started by Google with VMware and Red Hat among the contributors, has two parts. Knative Serving handles routing, autoscaling (including down to zero), revisions and traffic splitting between revisions. Knative Eventing delivers events from vendor sources, for example a file saved to a Google Cloud storage bucket, to a service.
  • Tekton and Buildpacks go from source code to container images. Tekton Pipelines, formerly Knative Build, chains tasks into CI/CD pipelines on Kubernetes, but Atamel says it is unneeded if an existing CI/CD setup works. Cloud Native Buildpacks, which he believes came from Heroku and Pivotal, detect the app's language and build an image without a Dockerfile. He calls it experimental: fine for a simple HTTP server, but it "will definitely not work" for complex multi-service apps.
  • Cloud Run is his default because it removes the cluster work. Atamel says self-hosted Knative needs a correctly sized cluster, a gateway (usually Istio) and the Knative install, while Cloud Run deploys a container from a Dockerfile on Google's infrastructure. It bills in 100-millisecond increments, and its free tier makes occasional hobby apps effectively free. A second version, Cloud Run on Anthos, runs on any Kubernetes cluster, on-premises, Azure, AWS or Google Cloud, while the other tools are free open source.
Dave Pine on NET 5 and the Docs team [TECHNOLOGYANDFRIENDS 618]
  • .NET 5 converges .NET Framework and .NET Core into one platform. Pine, a senior content developer on the .NET docs team at Microsoft for just over a year, describes the ".NET 5 wave" as one developer experience across Visual Studio, VS Code and the .NET CLI. In practice he calls it ".NET Core vNext", with .NET Core 3.1 the current LTS release.
  • Pine says migration was never the barrier Giard suggested. Giard frames .NET 5 as making migration from the old framework easier. Pine disagrees: .NET Standard's API contracts and the migration tooling already made porting fairly easy where the API surface matched, and .NET 5 "just continues to get better". From his consulting work with large enterprises, he says shops still stuck on .NET Framework have become a rarity over the last five years.
  • Working in public calls for tooling that defuses hostile issues. At last year's hackathon, on Bill Wagner's team, Pine built an Azure Function on a GitHub webhook that replaced profanity in issue and pull-request titles and bodies with random emoji and labelled them as profane content. He says this signals that the user is frustrated without offending other readers, so maintainers can respond with empathy. He is preparing a conference talk on open-source ethics.
  • .NET MAUI will succeed Xamarin.Forms for new cross-platform apps. Pine says MAUI (multi-platform app UI) is targeted at .NET 6, with previews towards the end of the year, and builds native UI for Android, iOS and Windows from a single project. Xamarin will remain in long-term support.
  • The .NET Docs Show recreates the conference hallway track. Pine co-hosts it with Cam Soper and Scott Addie. It streams live every Thursday at 11 AM US Central and features open-source projects and Microsoft guests. He says the name is a pun on "doctors" rather than a show about documentation, and that guests were already booked into November and December as of early July.
Kayla Cinnamon on Windows Terminal [TECHNOLOGYANDFRIENDS 617]
  • Windows Terminal is a new front end over existing shells. Cinnamon, the Microsoft program manager who owns it, says Command Prompt and PowerShell run unchanged underneath, joined by WSL distros, SSH and any other command-line app, in tabs and panes. Each shell is a "profile" with its own colours, fonts, background image or acrylic. Command Prompt, PowerShell and Azure Cloud Shell come by default, WSL distros and PowerShell 7 are detected automatically, and SSH connections must be added by hand.
  • It went from open source code to stable 1.0 in a year. Terminal was announced and open-sourced at Build 2019, when building from source was the only way to get it. It reached 1.0 at Build 2020, launched just before the keynote, after versions up to 0.11 and about three months of bug fixing aimed at eliminating crashes. A preview build ships in the Microsoft Store alongside the stable build, and features move to stable about a month after reaching preview.
  • Version 1.1 added Explorer integration and tab customization. Released the week before the 24 June recording, 1.1 brought a right-click "Open in Windows Terminal" in File Explorer (a top request), a tab colour picker and renaming. Theming and a settings UI, hoped for by the end of 2020, are planned to replace editing a JSON file guided by a schema. It needs Windows 10 1903 or newer; the Store gives automatic updates, while GitHub releases must be updated by hand.
  • WSL 2 runs a full Linux kernel inside Windows. Cinnamon, relaying what her office mate who owns WSL has told her, says Windows build 2004 removed the old translation layer. That makes Linux operations much faster and gives full system-call compatibility, so Docker now runs. She says installation is now wsl --install, Linux GUI apps are coming later, and she is "pretty sure" GPU acceleration has been added, which she sees helping machine-learning work.
  • Terminal got its own font because the font is most of the screen. Cinnamon says Consolas made the new terminal feel like the old one. Cascadia Code is named after Terminal's internal code name, Cascadia, and "Code" refers to its programming ligatures, such as != drawn as a slashed equals. Terminal ships Cascadia Mono by default because ligatures are "not technically accessible". Variable font weights are coming, and Terminal 1.1 preview already supports them.
Yina Arenas on Microsoft Graph [TECHNOLOGYANDFRIENDS 616]
  • Microsoft Graph exposes all of a customer's Microsoft 365 data through one API. Arenas, who has led its program managers for about seven years, "since Microsoft Graph was an idea", lists mail, calendars, Teams conversations, SharePoint and OneDrive files, Planner tasks, security alerts and Intune devices. Over 50 teams feed APIs into it. She says it is really many small graphs, one per organization or user, and that consumer outlook.com or hotmail.com accounts have one too, covering mail, calendar, contacts and OneDrive.
  • Graph also generates insights from user activity signals. Arenas says it infers people-to-people relationships from emailing, reading and co-authoring, and people-to-content relationships. Project Cortex, announced at Build, builds project taxonomies and maps who knows what from the content an organization produces, without anyone filing documents by hand.
  • Any device that can make an HTTP request can call it. Access uses OAuth 2.0 with Azure Active Directory: the user consents, the app gets a token, and a request such as GET /me/events returns JSON. SDKs for .NET, Java, JavaScript, Objective-C, PHP, Python and others add pagination and retry with exponential backoff when the service throttles. Previews appear on the /beta endpoint and graduate to the production v1 endpoint.
  • Graph Connectors bring external data into Microsoft Search. Arenas says a line-of-business system, such as HR data or on-premises inventory, can be indexed into Graph so it appears beside Microsoft 365 content when users search from office.com, SharePoint or the Windows search bar. She describes Microsoft 365 as evolving from a marketing bundle of Office 365, Windows and enterprise mobility and security into one product, with Graph as its gateway. Windows search reaching into OneDrive and SharePoint runs on Microsoft Search through Graph.
  • Developers should start at graph.microsoft.com and Graph Explorer. The portal offers quick starts of about three minutes and self-paced tutorials of about 30 minutes. Graph Explorer (aka.ms/ge) comes with a demo account and shows the requests, the responses and the permissions each call needs. For example, Mail.Read is needed to read mail, and User.Read.Basic can be consented by a user while User.Read.All requires administrator consent.
Sven Aelterman on Data in Education [TECHNOLOGYANDFRIENDS 615]
  • Education uses data like other industries, plus regulatory reporting. Aelterman, who spent over 13 years at Troy University as a lecturer and director of IT before joining Microsoft's education division as a cloud solution architect for Tennessee, says universities must check students' eligibility for federal financial aid and submit documentation, and must supply accrediting agencies (private bodies empowered by the federal government) with data on learning outcomes, faculty qualifications and financials. Accreditor data is aggregated rather than student-level, campus health centers bring HIPAA into play, and he says the volume of data makes higher education a frequent target for hackers.
  • Vendor student-information systems rarely fit everything an institution needs. Student information systems (SIS) and their data-warehouse models cover much of it, but his College of Business used off-the-shelf SQL Server and Integration Services to combine institutional and learning-management-system data, and Reporting Services to report on it. He says Power BI is now an attractive option; Giard adds that many people now use Azure Data Factory in place of SSIS.
  • Faculty are data creators and carry responsibility for its quality. Aelterman says instructors produce data whenever they take attendance, record grades or advise students, though they don't usually see themselves that way, and he tried to get faculty to see that their classroom work has implications for the college and institution.
  • Predictive analytics on individual students only helps with high-touch follow-up. He says that over roughly the last year or two, institutions have started projects (not yet a majority) that use demographic and learning-management data to keep individual students on track, rather than tracking aggregate six-year graduation rates. He names three factors, academic, financial and social (the last especially for traditional students living on their own for the first time), and says the insight is only useful when financial aid counselors, academic advisors or career services actually reach out and build a relationship.
  • Experience with online teaching made the pandemic switch easier, not automatic. Troy University sees itself as a pioneer of online education, and many faculty had already learned that you can't just post course material, you have to check in regularly and get students interacting. Faculty who hadn't taught online needed skills, equipment and software, and one-on-one instruction such as piano was hard; he thinks much of education can be done remotely if it has been planned for, though not surgery training from YouTube videos.
Jeff Fritz on Migrating from Web Forms to Blazor [TECHNOLOGYANDFRIENDS 614]
  • Only Blazor for the web is production-supported; desktop and mobile are experiments. Fritz describes Blazor as the .NET team's component-based framework, fully supported as of ASP.NET Core 3.1 (released "back in November, December", with four years of support). Blazor server-side renders components to HTML on the server and uses SignalR to sync changes with the browser, and it can also run in the browser on WebAssembly. Hosting Blazor in a Chromium shell, Electron-style, for cross-platform desktop apps is an experiment the team has not committed to shipping, and it will continue only if the data shows developers want it.
  • Web Forms has no direct successor, so migration has meant rewriting. Fritz says going from Web Forms to MVC meant rewriting the application, and ASP.NET Core supports only MVC, with no Web Forms. His first step is to move business logic into class libraries targeting .NET Standard; Giard raised this, and Fritz adds that it can be done in the existing app now without breaking anything.
  • Blazor components that mimic Web Forms controls let markup be copied across. The idea came from Blazor program manager Dan Roth: components with the same names, attributes and HTML output as their Web Forms counterparts. A proof-of-concept repeater let them reuse about 80% of the code. Of roughly 26 base controls (not counting data-editor components), about 15–16 are built towards a read-only minimum viable product, developed live on his Twitch stream as the open-source Blazor Web Forms Components (on GitHub under fritzandfriends and on NuGet). He agrees with Giard that it is still a rewrite, just an easier one.
  • Shims emulate the Web Forms page lifecycle and ViewState. Blazor has only an on-initialized and an on-after-render event, and the latter fires on every re-render, so Fritz has "started down that path" of a shim that maps OnLoad-style code onto them. ViewState is already supported as a string–object dictionary held in memory the Blazor way, rather than serialized into the page and posted back on every submit.
  • Reaching Blazor puts old Web Forms apps on .NET Core. Fritz says that means an app can run in a container rather than being coupled to IIS, be deployed with Kubernetes, and use modern Azure architectures, which is the on-ramp he is pushing the project towards.
Jason Fox on Spatial Computing [TECHNOLOGYANDFRIENDS 613]
  • Spatial computing is the enabling layer that lets computers understand physical space. Fox, who specialized in it during his last years at Microsoft, defines it as taking in camera streams, LIDAR and depth sensors to work out the shape of a space and where the device is in it, and says AR and VR are built on it. HoloLens uses SLAM (simultaneous location and mapping) rather than LIDAR: four low-res black-and-white cameras whose data, he thinks, is processed at close to a gigabyte per second on special hardware. The new iPad Pro has a LiDAR sensor that returns a mesh of a room within a couple of seconds.
  • Today's commonest use is mobile AR combining maps with local positioning. Pokémon Go puts a game skin over real-world map points of interest and places creatures in the camera view, and Fox calls Minecraft Earth the fuller example. He frames it as two coordinate systems: geospatial coordinates on the Earth, translated into a local coordinate system a computer can calculate against.
  • His startup turns existing camera feeds into a site model over time. At Worlds, Fox says, machine learning detects objects in 2D camera streams, and because the camera's location and the space's geometry are already known, the system can give a detected person's position in metres from the camera and in latitude and longitude. The point is finding things indoors, where GPS fails, such as equipment moved across a facility. The system covers "4D" with rewind, replay and live views, and with no ready SDK or API on the market they are building their own platform.
  • The "AR Cloud" goal is a persistent, shared digital overlay of the world. Fox works on the nonprofit Open AR Cloud as a side project and cites Microsoft's Azure Spatial Anchors, which saves an XYZ anchor to the cloud for recall on the same or another device. He calls what Worlds builds "little private AR clouds" for specific customers and hopes to open it up as a platform, which he says is "probably a few years down the road" for a small company. He also cites overlaying a building's CAD model on construction work in progress; Giard adds prototyping and redecorating as uses.
  • There is no go-to learning source because the field is immature. Fox got started about 12 years ago with a structured-light sensor at a lab inside Lockheed Martin in Fort Worth, aligning scans of aircraft parts with engineering CAD models. He says the term "spatial computing" only appeared in the past two or three years. He suggests experimenting with ARKit or ARCore on a phone and watching recorded sessions from the Augmented World Expo (AWE), which he calls the de facto industry conference after about a decade.
Troy Hunt on The Role of Technology in Social Isolation [TECHNOLOGYANDFRIENDS 612]
  • Face-to-face contact has value that remote sessions cannot replicate. Hunt says he has offered remote workshops for years, yet more than 90% of the ones he runs are in person because clients want the dynamic, including going for beers afterwards; video "beers" after two recent remote workshops were good, but he doubts he will remember those people as he would from a pub. Giard's view is that social media maintains relationships but does not establish them; Hunt partly disagrees, saying his first contact usually comes online (talks, media) and then formalizes in person, and that he has never advertised his workshops.
  • Hunt splits each remote workshop day with a co-presenter. A normal workshop is two eight-hour days, and he says eight hours in front of a screen is much harder than being in the room, while time zones make a 9-to-5 day for a Chicago client brutal from the Gold Coast. With Scott Helme in the UK, who has run the workshop dozens of times to Hunt's nearly hundred, they tag-team: for a Copenhagen client the week before, Hunt took the first half, both chatted for an hour over lunch, and Helme took the second.
  • Hunt does not need travel, and would happily do half as much. His income also comes from blog sponsorship, Pluralsight courses and commercial subscribers to Have I Been Pwned, and he treats talks and workshops as augmenting that ecosystem. He spent about 245 days away in 2019, roughly 42% of the year, and says he would be happy with half that; recording on 6 April 2020, he expects to travel within Australia in the next few months but struggles to see going overseas that year.
  • Hunt's 10-year-old son took to online school quickly. After a chaotic first day of video-conference audio cutting out, the class adapted fast, and his son is online 20 minutes early and stays until about 3 p.m. Hunt hopes schools might keep a mix, such as four days in class and one at home, so children enter the workforce knowing video-conferencing etiquette and how to work from home effectively.
  • The forced experiment may change employers' attitudes to remote work. Giard argues that firms which distrust staff working at home may find the world does not fall apart and reconsider costly offices and travel; Hunt recalls his boss at Pfizer, which he left nearly five years earlier, insisting he be "present" and "visible". Hunt wants empirical evidence afterwards, such as 12 months on, on whether remote work and remote workshops proved worse, better or in between, including weighed against the environmental cost of his travel.
Nik Molnar on Visual Studio Codespaces [TECHNOLOGYANDFRIENDS 611]
  • Codespaces moves the whole developer environment off your machine. Molnar, a program manager on the team, describes the Azure service (formerly Visual Studio Online, renamed around the time of recording) as spinning up an environment with tools, configuration and source code "in a matter of seconds", reachable from VS Code via an extension, from Visual Studio (then in private preview) or from full VS Code running in a browser; build, debug and IntelliSense all run remotely, so the local editor is a thin rendering layer that no longer competes with Outlook, PowerPoint or Spotify for resources.
  • Its main value is near-instant onboarding to any code base. Molnar says one JSON file in a repo dictates the operating system, tools and extensions, so every collaborator gets the same environment and "works on my machine" problems largely go away, while personal settings such as theme and shell aliases are layered on top; Live Share and IntelliCode, which suggests members based on usage patterns mined from popular GitHub repos, are built in. Giard says getting productive on a consulting engagement used to take him days or sometimes weeks.
  • Environments are meant to be task-based and disposable. Molnar suggests spinning one up for a 30-minute PR review and deleting it, or keeping one for a multi-day feature; after 30 minutes idle by default it drops to a low-power state for "fractions of a penny an hour" with all uncommitted changes kept. He quotes about 46 cents per active hour on the current entry SKU, 88 cents on premium and about 24 cents on a coming basic SKU, saying he may be a penny or two off, and says a newly expanded self-hosted agent for your own machine is free.
  • Under the hood each user gets an isolated VM running a container. Molnar says the service places a Docker container, built from an image you name or a Dockerfile in the repo, on a VM isolated to you for security, then clones your repo into it; you get full terminal access to install or delete anything, and changes persist between sessions.
  • The roadmap adds smaller, larger and multi-container environments. Molnar says the current standard tier is 4 cores and 8 GB of RAM, with a premium tier above it; planned are a basic tier of 2 cores and 4 GB, a tier above premium with a GPU for machine learning work, and Docker Compose support so an environment can include services such as MySQL or Redis.
Christine Matheney on Teaching Computer Science to the Next Generation [TECHNOLOGYANDFRIENDS 610]
  • Coding becomes approachable when broken into small, concrete steps. Matheney, volunteering with Girl Scouts of Northern California on the organisation's coding-for-good badges, trains troop leaders, often parents hesitant with computers, by having them write if-then "algorithms" for making a peanut butter and jelly sandwich; she says the same approach works for adults and young girls alike.
  • All-girl settings make girls more willing to try intimidating technology. Matheney says that among girls she is less hesitant to admit not understanding and there is more collaboration; she was on one of the first Girl Scout FIRST Robotics teams, sponsored by NASA and building at NASA Ames, and says about 75% of her teammates are now in STEM careers. She adds that physical results, a robot moving or a bulb lighting, spark more interest than printed output.
  • The bottleneck in high school computer science is finding teachers. Matheney works for Microsoft's TEALS program, which pairs volunteer technologists with teachers to co-teach in roughly 500–700 US high schools that otherwise could not offer the subject, because people who know computer science can earn more in tech. She says over two to four years a teacher goes from minimal knowledge to teaching AP Computer Science alone, and that seeing a technical woman in the classroom helps keep girls interested.
  • TEALS volunteers shifted to remote mentoring when schools closed. Matheney says the program's 1,800 volunteers, who normally teach the hour before work, held lunch-hour sessions to prepare students for the AP Computer Science A exam still held in May and for the project replacing the cancelled Principles exam; her team also published remote engagement practices such as polling and Flipgrid video assignments. She cites a figure she read that 86% of people with a mentor in high school or college are more likely to finish college.
  • Imagine Cup Junior extends Microsoft's student competition to high school AI. Matheney says it offers a day of AI learning content and asks students to propose, rather than build, AI-for-good solutions, such as spotting ocean trash or tracking air pollution, judged regionally and then internationally. Giard describes a similar Illinois showcase he mentors in, with student proposals for sign-language interpretation and expired-food detection.
Todd Gardner on Request Metrics [TECHNOLOGYANDFRIENDS 609]
  • Request Metrics measures performance as real users experience it. Gardner describes it as real user monitoring: a JavaScript snippet in the site gathers timings from end users' browsers and sends them back by CORS request, separating how long the server took to deliver bytes from how long the client took to render. It cannot see server internals such as database time unless the server is instrumented.
  • It tells you when to use local profilers, not why something is slow. Gardner says tools run on a developer machine remain the way to troubleshoot, while his product flags production changes, such as a checkout page 40% slower than yesterday, that show when to reach for them.
  • It shows one representative number instead of raw statistics. Gardner says users see a single figure with its trend, then can drill into how many loads finished under 1, 2, 4 and 10 seconds, without needing statistical models or query languages.
  • The bet is that monitoring can be simple and cheap. Gardner argues existing tools are too complicated and too expensive for teams without a large IT organisation, and targets about $9 a month; to be profitable at that price he minimises infrastructure and captured data, storing everything in Redis, which he says makes the product very fast. A HyperLogLog-style unique count, found via a .NET package, was added after a page's spike turned out to be 20 hits from one user on a bad connection.
  • The product is built in the open by a three-person mob. Gardner says the team mob-programs over Zoom every workday from 1 to 4 pm, records with OBS and edits sessions into 15–20 minute YouTube episodes that run about a month behind; work began in mid-January, the 10th episode covered running Redis on Linux, and as of 3 April it was in internal beta on TrackJS's own sites, with outside users expected in three to five weeks.
Christina Aldan and Jeff Strauss on Dev Around the Sun [TECHNOLOGYANDFRIENDS 608]
  • Dev Around the Sun is a 24-hour developer telethon for coronavirus relief. Aldan and Strauss describe a free stream on Twitch and YouTube starting 12 May at 12:00 UTC, with lighter talks on leadership, soft skills and the human side of the industry rather than deep dives; their case is that it gives free access to speakers people would otherwise pay to see abroad and restores some of the hallway-track connection lost to quarantine. Sessions are recorded, with backup sessions to be posted afterwards.
  • The idea came out of a virtual meeting of conference organisers. Strauss says Meta Conference, an organisers' think tank normally held in a hotel suite at the MVP Summit, went virtual this year and so took in leaders from the Java, data, infosec and JavaScript communities; Claire Novotny, newly executive director of the .NET Foundation, proposed doing something that made a real difference. That was two months before recording, and Aldan says the event came together in four or five weeks.
  • Every donated dollar goes straight to Direct Relief. Aldan says they researched the charity, which Strauss says was founded in 1948 and works in about 80 countries supplying medical help; donations pass through Tiltify directly to its coronavirus fund, with none touching the .NET Foundation, which hosts the event. Corporate "sponsors" such as Microsoft and Quicken Loans are additional donors, and the small streaming and hosting costs are covered by the foundation and others.
  • The line-up leans on well-known community figures and volunteers. Giard reads speakers including Troy Hunt, Jon Skeet and Scott Hanselman from the site; the guests describe an Ask DHH Q&A moderated by Heather Downing, rotating MCs including Richard Campbell and Dylan Beattie, a live Stack Overflow podcast segment, and a streaming setup run by Jeff Fritz with eight engineers. Aldan says they may make it an annual event.
Chris Klug on Software Development Up Front Planning [TECHNOLOGYANDFRIENDS 607]
  • Think ahead about the parts you understand, so change elsewhere can't break them. Klug, six months into a project whose domain he still does not understand (he says it is the client's description of the domain that keeps changing, not the domain), credits his layers of abstraction for a rewrite the week before: storage was split between Azure and Amazon for legal reasons by adding a shim at the bottom tier, without touching the rest of the code. He dismisses the usual "swap SQL for Oracle" justification as something he has never seen happen.
  • Abstractions also pay off in dev, test and production differences. His team keeps Azure Key Vault swappable so local development does not depend on Azure. He is not a test-driven developer, but writes one read test and one write test for every entity he maps in Entity Framework, so he can work out the mappings without starting the application.
  • Once you take a dependency, use it to the full. Klug would not wrap Entity Framework to make it replaceable, but his team did put repositories over it to simplify use, such as centralising the include statements for eager loading. Giard tells of an architect who designed an abstraction to swap out the ORM and left before any code was written, and adds that abstractions carry a mental cost a short project may not justify; Klug agrees that SOLID needs pragmatism and that an unabstracted monolith is sometimes the right choice.
  • Agile does not mean skipping design. To Klug, Agile means choosing the most important chunk, designing how to build it in that sprint, then re-evaluating; teams that just "start hacking" on their sprint ignore what is likely to come next. He says 20 years of experience lets him predict what a client will ask for in the next sprint and build pieces that fit together, where as a junior his pieces needed "duct tape" to connect.
Layla Porter on Test Driven Development [TECHNOLOGYANDFRIENDS 606]
  • Regression bugs from an untested system drove her to TDD. Porter was a senior developer at a telecommunications company handling millions of minutes with not a single unit test, relying on a team of six testers; nine weeks of regression bug fixes "nearly destroyed" her, and she took up TDD around 2016.
  • Writing the test first ties it to the requirement, not the code. Her example: code written first returns a 204, the developer writes a test expecting 204, and it passes even though the requirement said 200. On a team, tests and interfaces written up front act as a coded contract, so colleagues can build against your code before it exists and are less likely to break it unknowingly.
  • A full test suite is what makes refactoring safe. She says tests for unrelated code can be quieted in the local test runner to save time (her largest project had about 100,000 tests), but all should run on the build server and before moving from UAT to production. Coverage thresholds (80%, or must-never-drop) enforce testing but are fiddly: adding AutoMapper once cut her coverage by about 15%. Giard says he favours looking at coverage over mandating it.
  • Be pragmatic and patient rather than purist. A dogmatic lead developer once threatened to delete her whole day's work after she wrote code without tests; she argues that writing tests after the fact while easing in is a natural way to shift to TDD, which she calls a big cultural change. She works mostly in C# with NUnit, using Rider's test runner on a Mac or ReSharper in Visual Studio.
  • Her Terminator talk teaches TDD through a relatable dummy project. In "TDD and the Terminator," requirements for a T-800 hunting Sarah Connor become test method names; her "aha" was that the minimum code to pass the first test was "return true," followed by red-green-refactor. The T2 switch to protecting John and Sarah Connor serves as the requirements change refactored with SOLID principles. She says the talk is on the JetBrains YouTube channel, with a shorter Microsoft version.
Andrea Salterello on Accessibility [TECHNOLOGYANDFRIENDS 605]
  • Salterello's commitment to accessibility comes from his deaf father and guilt. His father lost his hearing to acute otitis and surgery in the 1970s and heard through bone-conduction glasses, which could not handle loud volumes, so concerts, cinema and plays were closed to him. At a 2004 TechEd keynote in Amsterdam, watching a blind man struggle to browse with a narrator left Salterello ashamed that he had done nothing to make his own software accessible. He has since run Accessibility Days, a two-day Italian conference on accessible software, for four years.
  • Everyone is impaired at some point, often temporarily. He argues for designing for inclusion broadly, citing a broken arm and his diabetic mother, whose yearly eye test leaves her unable to see for hours.
  • "Pervasiveness over invasiveness": let users reach software through their own devices. His team built a bot on Microsoft Bot Framework over an ERP system last year so users can ask questions such as how much the company netted; an open-source proof of concept on GitHub also supports an Alexa skill and Skype.
  • Use prebuilt cognitive services rather than training models from scratch. He teaches AI and cognitive services at the Polytechnic of Milan using both business and inclusion scenarios, arguing products should focus on user value. Since January he has been building "Rossi," an open-source clone of Microsoft's iOS-only Seeing AI app aimed at both iOS and Android, named after the blind woman who guided him, blindfolded, through Bologna streets to a conference dinner; he says he was more frightened than he had ever been in the ring as a French kickboxer.
  • An accessible conference starts with the venue. He holds Accessibility Days at the headquarters of Italian unions of blind and deaf people, which are accessible by default, and uses light colours and sounds to mark paths. He recommends newcomers find events around Global Accessibility Awareness Day, the third Thursday of May; his 2020 conference, set for 22–23 May, would likely be online on Microsoft Teams, where he says meetings cap at 250 and live events at 10,000.
Sarah Lean on Adjusting to the Pandemic [TECHNOLOGYANDFRIENDS 604]
  • Grounded by the pandemic, her advocacy work has shifted to content. Lean, a Microsoft cloud advocate focused on Azure for IT pros and hybrid infrastructure, had talks for the following month cancelled or postponed to next year, and none moved online, which she puts down to volunteer organisers juggling day jobs and families at home. She plans to record the talks and release them with YouTube's Premiere feature so she can answer questions in the chat as viewers watch.
  • Cheap DIY sound panels made her home audio far more professional. She built three insulation-filled panels for her small room for "a couple hundred bucks" of DIY-store materials, a project the lockdown accelerated, and says the before-and-after difference is remarkable.
  • Azure's European capacity strain is, in her view, a good sign. She acknowledges the capacity issues reported in the press, but says organisations long blocked by security worries or IT-team knowledge are now adopting Azure; she expects the issues to be addressed internally within a couple of months.
  • She predicts lasting changes in remote work and event attendance. With her husband's office-only employer now working from home productively, she expects many organisations to rethink work-from-home policies, and more to pay for employees to attend events afterwards because of what remote work misses. Giard adds that he expects pent-up demand for face-to-face contact.
  • Freezing Windows Server 2008 upgrades during lockdown is a security risk. She says friends in frontline IT have put change freezes on projects including upgrades from Windows Server 2008, which went out of support in January 2020; with no end date to the lockdown, she argues organisations should keep planning such work rather than pause it.
Brent Stineman on Remote Recording [TECHNOLOGYANDFRIENDS 603]
  • Scheduling guests is the biggest challenge of remote recording. Stineman has run an internal podcast for Microsoft's globally spread commercial software engineering team since October, remote from the start, with 24–25 interviews recorded at roughly one a week. Without the in-person "ambush," guests are harder to pin down and easier to reschedule, so he keeps a queue (about 15 people to follow up on); three were postponed when the guests were moved onto Microsoft's COVID-19 work. This is the first episode Giard has recorded remotely.
  • Record each side locally, not through the conferencing platform. Platform recordings go over the wire compressed and depend on both connections, so each person records their own audio: his runs through a Focusrite converter into Audacity, and Mac guests use QuickTime because he says the current Audacity does not work on the latest macOS. The meeting recording is kept as a backup, and guests need headphones to stop laptop-speaker echo.
  • Prep up front makes recording and post-production smoother. His invite lists the topics in a shared file (about eight points for this interview), he walks the guest through the recording software, counts in "3, 2, 1," and spends the opening minutes on the person, often surfacing non-traditional backgrounds such as music and theatre. Guests share their file via Teams.
  • Separate tracks allow clean editing, then several tools finish the episode. He syncs tracks in Audacity and mutes one side for coughs or bumps, exports a rough cut, and runs it through Auphonic, free for up to two hours a month, whose levelling adds a slight echo. Because Microsoft Stream accepts only video and the show must stay internal, he uses the paid Wondershare to put the audio over a title slide for upload to a Stream channel. Each 30-minute episode takes him two to four hours, which is why he has no plans for a public show.
  • Do it out of passion, not for fame or money. Stineman, who says he was inspired by how his kids consume social-media personalities, argues the shows that take off are those where the creator's enthusiasm comes through, and passion is what keeps you publishing weekly. Giard adds that he would rather have great audio and mediocre video than the reverse.
Jaidev Kunjur on Azure Integration Tools [TECHNOLOGYANDFRIENDS 602]
  • Visual Studio integration is what made Logic Apps adoptable. Kunjur, speaking at the Chicago Global Integration Bootcamp he hosts, says his firm now uses Logic Apps far more because design, templates, local testing and deployment to Azure all happen in Visual Studio; Giard adds that it used to be browser-only, which needed a connection and made version control harder. Kunjur also cites a Microsoft offering announced "six or nine months ago" that he says lets Logic Apps run on-premise, so customers can use one platform in the cloud and on-premise instead of BizTalk.
  • BizTalk still has a long life ahead. Kunjur reports hearing from the Microsoft team that BizTalk 2020 adds API Management integration, REST and JSON support and Application Insights, and that BizTalk will be supported until at least 2030, so users need not worry for about 10 years. He says it remains in mission-critical use, including in many US government applications.
  • A logistics customer's middleware runs entirely in Azure. For a Chicago warehouse serving a European manufacturer, Kunjur's team built Logic Apps that pull the item master, purchase orders and sales orders from the shipper's SFTP site, map them into CargoWise format and call the CargoWise warehouse management API. He stresses that the subscription model meant the customer bought no hardware or on-premise software.
  • API Management adds generated client code, security and throttling. Kunjur says it generates a Swagger definition (which he likens to the old WSDL) so consumers can test in C#, Node.js or Python without him writing samples, and lets him put a SAS token on the front end and Azure Active Directory or other models on the back end. His example: an API, via an App Service and a Logic App, that saves database backups to OneDrive in folders chosen from seven metadata parameters (customer, ship-to, sold-to, application), so a field controller can fetch one with its token and boot from it.
  • Event Grid's push model beats polling on resources and cost. Kunjur argues polling wastes CPU and bandwidth, which adds up at thousands of transactions a day, whereas Event Grid routes each event to subscribers only when it happens. For one customer, triggers on a remote database go to an Azure Function, then Event Grid, then pods on Azure Kubernetes Service running Linux Docker containers, which he calls far more efficient than virtual machines.
Don Ward on Flutter [TECHNOLOGYANDFRIENDS 601]
  • Flutter's single code base is spreading well beyond mobile. Ward, a senior research engineer at Quicken Loans (eight years there, its first Android developer), says Google announced web support in beta and native macOS in alpha in December 2019, targeting stable for both by the end of 2020; Windows, Linux desktop and embedded are in technical preview, and he says the Google Home Hub (now Nest Hub) UI runs on Flutter. He spoke in January 2020, after a four-hour CodeMash precompiler where attendees built an on-device face-detection app using a Firebase model.
  • Flutter revived Dart, a language whose original push had failed. Ward recalls the 2011–2013 effort to evangelize Dart drew excitement but little use, while Google kept using it internally (AdWords) and the Flutter team later chose it; he calls it Java- and JavaScript-like and easy for Java or C# developers. Because Dart supports both ahead-of-time compilation (for release builds) and just-in-time (in development), Flutter offers stateful hot reload: an edit shows on the emulator without losing state, such as a page reached after login.
  • Flutter draws every element itself, so stores treat apps as native. Each platform gets its own binary (an APK, an IPA), and the framework renders onto a canvas rather than wrapping a browser control, which Apple rejects; Ward has not heard of a Flutter app being rejected. He cites the journaling app Reflectly, moved from React Native to Flutter and featured as Apple's app of the day in August 2019.
  • Platform-specific looks take extra libraries and some branching. Flutter ships Google's Material design by default, with separate Cupertino widgets for an iOS look, so a team wanting each platform's idiom writes some if/else code; Ward says Flutter was first pitched at brand-consistent apps like Netflix's, and responsive layout across screen sizes is still being developed. Plugins for VS Code, IntelliJ and Android Studio let developers inspect the widget tree and performance, and an Adobe design tool can export Flutter code.
  • It is open source and Google-led, with Google's motive unclear. Ward says GitHub ranked Flutter the fastest-growing framework of 2019, with a 530% rise in repos, and that to his knowledge selling an app carries no licence cost; in-app billing widgets were added about a year earlier. Asked by Giard what Google gains, he says he does not know, noting Flutter was the app framework for the experimental Fuchsia OS and that Google's Stadia mobile app is built in it.
A Celebration of Friends [TechnologyAndFriends 600]
  • Episode 600 is a montage of past guests' "technology and friends" sign-offs. There is no interview: dozens of short clips, recorded at events including NDC Oslo, Microsoft Ignite, CodeMash, the MVP Summit and VS Live Chicago, each riff on the show's title. Named speakers include Jeff Fritz (on his Twitch stream) and Angela Dugan, and the clip that closes episode 599 with Bryan Glenn appears here in full.
  • The recurring claim is that friendships outlast the technology. One speaker, paid to program since 1979, says technology changes but stays a way to connect with friends; another, at Microsoft almost 28 years, says friends are what keep him there; a third says projects get replaced but friendships last. Several say conferences and speaking are where their closest friendships formed.
  • A few clips carry career or practice advice. A speaker with a recruiting background boils career advice down to "learn stuff, meet people, and help them"; another says software's real cost is maintenance, so "friends don't let friends write bad quality code"; another urges finding peers for mutual support "in ways that you feel safe."
Bryan Glenn on the Right Mindset for Success [TECHNOLOGYANDFRIENDS 599]
  • Glenn's book argues that success accumulates from seemingly unrelated events. Life Adds Up, written after a summer book-writing class with a Georgetown professor, names traits such as role models, exposure and self-confidence; he said it would be in print in April 2020 via New Degree Press, with an e-book around late February or March, through CapitalGlenn.com. His main example is Folorunsho Alakija: denied law school by her father, she started as a bank secretary, bought land, met an American oil businessman on a plane, petitioned the Nigerian government for six or seven years and went door to door for a drilling partner before oil was struck; Giard adds that the "sudden" success was only a watershed after years of groundwork.
  • His own startup grew out of a $300 parking-ticket letter. Glenn says Chicago pursued him, via a collection agency threatening to suspend his licence, for tickets from about ten years earlier, which led him to found a company for means-based payment of parking tickets and municipal bills, now in negotiations with the City of Chicago and using machine learning. He cites a Federal Reserve study that most Americans cannot cover $400 without a credit card, and says he recruited University of Chicago economist Jean-Pierre Dubé after happening on his machine-learning work in a business-school magazine.
  • Mindset, not family advantage, explains Bill Gates's rise. Glenn says neighbours had the same access Gates did, and extends Gladwell's 10,000-hours point in Outliers: those hours at that age let Gates add value no one else could, as when the MS-DOS deal with IBM repeated the playbook of putting BASIC on the Altair 8800. As the opposite case, he gives his account of Einstein, unable to accept quantum theory, dismissing it; the lesson he draws is to act with conviction but admit error.
  • Founders who chase fundraising signals add no real value. Glenn says raising money makes companies look successful temporarily, points to WeWork and to Facebook, Instagram and WhatsApp founders leaving and saying things happened they did not intend, and argues society is too trusting of founders. His prescription is to be deliberate: he says he inferred around 2016–2017 that Google's image CAPTCHAs, one of which showed his own street, were training self-driving cars before an article later reported it, and stresses he is not calling that evil.
Jean Lange on Building Skills with Improv games [TECHNOLOGYANDFRIENDS 598]
  • Games are a way to practise real-life skills. Lange, who teaches with her husband at Academy Pittsburgh, a small software bootcamp he founded about three years earlier, ran a four-hour improv precompiler at CodeMash with co-speaker Remy Porter, inspired by one she attended by Jessie Sternschuss of The Improv Effect. No scenes or acting are involved: the group plays rule-based games, then discusses what made each easier or harder; she says Hanabi, for instance, teaches trust and communication.
  • Every game is built around celebrating failure. The opening mixer has people meet and cheer each other's recent failures, and in energy-passing games like Zip Zap Zop a player who slips says "I screwed up" and everyone cheers. Lange says failing means people are trying and learning, which matters most for her bootcamp's career changers, adults used to being experts; Giard frames the contrast as organizations that reward appearing never to make mistakes.
  • A group can do what no one member can, if each "brings a brick." In the name game, people pair their name with an alliterative adjective ("rolling Remy"); after two rounds almost no one knows all 20 or so names, but everyone knows at least one, so the group collectively knows them all. Giard likens the idea to microservices.
  • The tech angle comes from who is in the room. Asked what is tech-specific, Lange concedes the skills apply to any group work and says the tech comes from participants' experience, citing one who said passing attention across the circle works better with a "TCP handshake" acknowledgement before sending.
  • Lange says the bootcamp's improv session is among its highest-rated. The two-hour session at the end of week one leaves students visibly more comfortable together, she says, and they report knowing everyone's name. She ties this to networking: graduates hired somewhere often get the employer to hire more academy grads, forming teams comfortable saying "I don't know, let's learn together"; the academy is at academypgh.com.
Arthur Doler on Mental Health in the Workplace [TechnologyAndFriends 597]
  • Talk about mental health as experience, not diagnosis. Doler, speaking at CodeMesh on his talk "Owning Your Experience", argues that clinical terms are artificially precise and say nothing about how a person experiences something, that not everyone has or can afford a diagnosis, and that medical language at work runs into HIPAA and HR trouble. Ordinary events, such as a pet dying, affect how people do their jobs whether or not anything is diagnosable.
  • Teams should plan for bad stretches the way they plan vacations. He recommends looking back at the situations you have handled badly and deciding what to do when they come round again; friends of his with seasonal affective disorder know to start preparing around October, with a lamp mimicking the sun's wavelength and plans made in advance so they do not isolate themselves.
  • Shame and "facile optimism" cut people off from help. Doler says the habit of insisting something isn't affecting us, and the belief that we should power through alone, makes people feel worse when they can't, and can lead to clinical problems. He says he was in a depressive state for months without noticing until others raised it, and that acknowledging something as beyond his control, as in the 12-step idea of a higher power, took away the blame and let him put coping strategies in place.
  • Tech carries its own pressures and draws people seeking control. He argues that digital work is seen as instantly changeable, so changes that a 1950 graphic designer would have had days or weeks for are now expected at once. His "pet theory" is that neurodivergent people and people who have had little control in their lives gravitate to computers because they behave predictably.
  • Evidence that tech has more mental-health challenges is thin. Doler cites a lightning talk he attended (not his own) mentioning only two studies, one from '96 in Japan and one from the 2000s in India, plus the annual developer survey of the Open Sourcing Mental Illness nonprofit, for which he volunteers. He concedes that survey is opt-in and not scientific, but says it points to a higher rate in tech, which he believes, and he wants to address the issues without waiting for proof.
Courtney Eaton and Gabrielle Sempf on KidzMash [TechnologyAndFriends 596]
  • The kids' conference is free to attendees' families. Eaton and Sempf say KidzMash, a conference within CodeMash for attendees' children, usually draws 500 to 600 children and 300 to 400 adults from Tuesday through Friday at the Kalahari in Sandusky, Ohio. The host adds that Jim Holmes, CodeMash's original organizer, told him the first CodeMash had 240 attendees in total.
  • The program is STEM sessions plus a maker space and family area. They run 16 one-hour sessions, six two-hour "dives" for ages 12 to 17, and nine to 11 maker-space projects during the week, plus Hangouts, a free space for families with small children built partly from emptied conference sweatshirt boxes. A static-electricity "Wizarding 101" session drew 107 kids.
  • Many sessions are taught by children. About half of the one-hour sessions end up being given by a parent with their child or by the child alone, which they describe as a starter place for learning to present; a kid taught 16 kids to build a Discord bot, and three siblings gave a session on being an astronaut. Speakers come through a call for papers and are treated as fully ticketed CodeMash speakers.
  • It grew from hallway meetups and is now out of space. In year two there was no KidzMash, just mothers meeting in the halls; Melissa Insko then got a room from Jim Holmes for an evening story time, and later Brian Prince asked for it to become a four-day program. It now fills four rooms for four days and, they say, cannot grow further because there are no more rooms, so they expect few changes beyond this year's extra staff and more dives.
  • The organizers frame it as giving back to the community. One of them says her family's technology company owes its position to the Columbus and Ohio tech community and that KidzMash is their way of returning that. Their own children have grown up through it and now work as interns, which they offer as the first sign of kids moving from KidzMash into CodeMash itself.
Tibi Covaci on Migrating to the Cloud [Episode 595]
  • Many customers now need to redo a badly done first move. In their words they want to go "from the bad cloud to the good cloud". Covaci says some of his customers are new to the cloud, with anywhere from a couple of hundred to about 10,000 applications to move to Azure, while others moved early without governance or structure. He blames early best practice, including advice he himself once gave, such as putting everything in separate subscriptions, which left customers with hundreds of subscriptions they find impossible to manage.
  • Treating the cloud as another data center wastes it. He argues that running the cloud like a data center misses the platform- and software-as-a-service offerings, and that work such as manually managing backups and rotating tapes should be automated so engineers can do smarter work. His analogy is electricity: owning your own capacity means paying for spare you may not use, which leaves hardware underutilized.
  • Educate staff first, then use the move to clean house. Covaci's key recommendation is education, because people who feel unprepared or obsolete will cause problems in the long run, followed by keeping the existing governance rules in force in the cloud. He says that of one customer's almost 10,000 applications, about 10% could be dropped or replaced with off-the-shelf software.
  • Lift-and-shift is easy in theory, harder in practice. He says applications were set up by hand from step-by-step documents, so moving one often breaks on undocumented steps, and he sees infrastructure as code and DevOps practices taking a strong hold as the fix. He finds developers adapt to DevOps more easily than IT staff, who face learning more PowerShell, scripting and programming.
  • Infrastructure as code frees teams from hardware-bound software versions. Covaci says servers tied to hardware leave teams stuck, for example unable to run .NET Framework 4.5 because IT has not installed it, whereas fully automated deployment would let them adopt .NET Core 3.1, released "the other week", on disposable infrastructure they can test on and throw away. The host adds his own point that painless deployment encourages deploying more often.
Episode 594: Christian Geuer Pollmann on Erlang and Elixir
  • Erlang was designed for telephone-switch reliability, and multicore makes it relevant again. Geuer-Pollmann, who works for Microsoft, says Erlang came out of Ericsson research around 1985 to give phone switches very high uptime, with fault detection and process restarts built into the virtual machine and an actor model of tens of thousands of lightweight processes that share nothing and only exchange messages. With clock speeds no longer doubling and Azure VMs offering around 128 cores, he argues these battle-tested ideas now fit how compute has to be spread.
  • The Erlang system has several layers, and Elixir is the gentler entry. He describes the BEAM virtual machine, the Prolog-inspired Erlang language, and the OTP libraries for supervision and state, and says the language did not click for him when he first looked about 10 years ago. Elixir, created by Ruby on Rails core-team member José Valim, gives the BEAM a Ruby-like syntax, and the Phoenix web framework on top of it delivers HTTP responses in the microsecond range; his advice is to learn Elixir first and dig into Erlang later.
  • He would build his large notification system on Elixir today. In 2014 he and a German partner built an Azure backend with .NET and SignalR to hold 2 million-plus WebSocket connections and push sub-second notifications, first for a German TV quiz show and later for the Eurovision Song Contest. He says that if he designed it today he would use the Erlang VM with Elixir.
  • Fair scheduling is the BEAM's appeal for heavily concurrent systems. He says every process with work is guaranteed scheduled, so under load performance degrades but work still happens, and even an infinite loop cannot take the whole CPU; a CPU at 100% on an Erlang deployment just means you are using the cores you paid for. He contrasts a Java or .NET node that freezes during garbage collection and cannot be told apart from a dead one, and cites the WhatsApp backend, Riak, RabbitMQ and Discord's presence system for about 11 million players (Elixir plus Rust) as users.
  • He wrote open-source Azure SDKs for Elixir as a hobby. They wrap the Azure Resource Manager management APIs through client code generated from Microsoft's Swagger files, plus a hand-written library for Azure Storage, because Azure lacked Elixir support while Google and Amazon had some. He also built a tool that evaluates ARM template expressions locally in about half a second while keeping whitespace and line positions, which he says replaced waiting about two minutes for Azure to report a missing brace.
Episode 593: Annie Bougie on Autonomous Driving
  • Autonomy comes in levels, from driver aids to no driver. Bougie describes level 0 as no features (her son's 2006 Ford Fusion), level 1 as driver aids such as adaptive cruise control and lane assist, and level 3 as hands-off driving in predictable settings such as highways or valet parking, with the driver available to take over. She says Tesla Autopilot is currently considered level 3, at least on high-end Teslas.
  • The highest levels are not yet commercially available. In her description, level 4 lets the driver nap and the car safely pulls over if it cannot cope, and level 5 needs no driver or steering wheel and exists only in geofenced areas. She predicts more manufacturers will release level 3 within the next five years and that level 4 will come, but she will not give a date.
  • Liability and government approval matter as much as the technology. Bougie raises who is responsible in an accident, and says governments must certify the cars as safe; she reports the German government is preparing for level 3 cars over the next few years, and that driverless shuttles at the Frankfurt car show were not yet operational.
  • Training relies mostly on simulation before real roads. She says models need hours of training and testing, done in simulation because errors there are cheapest, before cars go out on public roads. A friend in San Francisco saw a test car hesitate to change lanes until its safety driver took over.
  • Her own Microsoft work writes scenarios for a driving simulation. She works in automotive commercial engineering at Microsoft, on a level 3 autonomous driving platform being built with a car manufacturer, where her part is describing scenarios and creating the files that define them for the simulation. The work is not published and there are no plans to publish it; the episode was recorded in mid-November.
Episode 592: Jes Schultz on Data Engineering
  • Data engineering is the work of making data usable. Schultz, speaking after her PASS Summit session on the role of the Azure data engineer, says data scientists get the attention, but there is a whole discipline behind them that gets data ready for analysts and data scientists. Whether data scientists or dedicated data engineers do that work depends on the size of the team, the company and the project.
  • Five pillars make up the discipline, whatever the technology. Schultz lists them as: building the compute and storage infrastructure, ideally as infrastructure as code; identifying and ingesting disparate sources (relational, non-relational, IoT); building pipelines from source to destination; data modeling (star or snowflake schema, warehouse or data lake), where she puts processes ahead of tools; and storage that is highly available, resilient and not corrupted.
  • Choose ETL when the questions are known, ELT when not. In her account ETL (extract, transform, load) cleans the data before loading, fixing types and dates and merging sources, which suits users who know what they want to ask. ELT loads raw data, typically into a data lake, and leaves analysts and data scientists to transform it, which suits large, wide-ranging data where the questions are open.
  • Databricks is a keystone of Azure's data toolkit; learn Python. Schultz maps the pillars onto Azure: Event Hubs, Stream Analytics and Azure Data Factory for ingestion; SQL Server, MySQL, Postgres, Cosmos DB, blob storage and Data Lake for storage; and Databricks, a wrapper around Apache Spark, for fast in-memory computation on large data. Python is her recommended language because so much data work now runs on it.
  • Demand comes from companies wanting prediction, not just hindsight. Schultz argues that "no company has less data than they did a year ago" and companies want to predict the future from past data, which is why almost 100 people came to her session. She says the move to the cloud makes the Azure Data Engineer Associate certification, which takes two exams, more valuable; she passed both by June 2019 and says studying taught her streaming, IoT data and data lakes, which were new to her in November 2018. Giard says he has mixed feelings about certifications, and she agrees they have limits.
Episode 591: Martin Kearn on Document Recognition and Knowledge Extraction
  • OCR alone returns a mass of text; extraction needs context. Kearn, a Microsoft software engineer in the UK, names three Azure services as the basis of knowledge extraction: OCR in the Computer Vision API; Form Recognizer, about six months old, which pulls specific fields such as amount, date and vendor from templated documents like invoices; and Azure Search, which adds cognitive skills to indexing. He thinks Azure Search may have been renamed Cognitive Search at Ignite but says he is not sure.
  • Routine customer emails can be answered with no human involved. His example is a large company that gets thousands of emails about orders and quotes, where people now read, triage and route each one. Understanding the email's intent and pulling out its key data, together with Logic Apps, Office Graph integration and LUIS, can answer an order-status inquiry automatically. Giard adds that the customer also gets a faster answer, not just the company a lower cost.
  • Confidence scores send uncertain extractions to human review. Asked about the risk of mistakes in UK prescription processing his team has worked on, Kearn says any machine-learning result carries a confidence level, and below a threshold the document goes to a person. He says he does not know the legal implications.
  • A public repository of recipes is meant to fill the services' gaps. At a hackfest with a team of about 30, Kearn and his colleague Shane Peckham were building Python code modules, samples and docs drawn from common project scenarios, modeled on Microsoft's NLP recipes repository on GitHub. He expected it at something like microsoft/knowledge-extraction-recipes by the end of the calendar year, but said it was not up yet.
Episode 590: J Tower on .NET CLI
  • The .NET CLI was designed as a first-class tool from the start. Tower says the compilers and MSBuild have always had command lines, but those were "a bit of an afterthought". The .NET CLI, around since .NET Core began, brings all the tooling under one tool: build, NuGet restore, run, debug, packaging and deployment.
  • Its main use is automated builds on machines without Visual Studio. His own most common use is DevOps: scripting builds, releases and packaging so the full IDE does not have to be installed on the build machine. It is not a scripting language with loops or conditions; it runs one command at a time, typed or called from a pipeline.
  • Mixed-platform teams need it even if you use Visual Studio. Tower says developers on macOS or Linux, or using other editors, can work on the same .NET Core project only if everyone shares the same tooling, and the CLI is that tooling.
  • Every command has four parts: runner, verb, arguments, options. It starts with dotnet, then a command such as build, run or restore, then arguments such as the project or solution file, then options such as the output directory or Release or Debug configuration. Tower says it works much like the Azure CLI and npm and unlike PowerShell's style; Giard puts the pattern down to Linux CLIs.
  • The CLI scares people but is simple to pick up. It ships with the .NET SDK, and Tower says Visual Studio users already think in its commands. The .NET Core CLI tutorial on docs.microsoft.com explains how to set up tab completion, which is not on by default on every platform, and --help gives documentation at any point in a command.
Episode 589: Tobiah Zarlez on Gender Identity
  • They are non-binary: neither male nor female. Zarlez uses they/them pronouns and prefer "non-binary" as an umbrella term, with "genderqueer" as a more fluid alternative. They say the status is legally recognized in California, where they live, and in Washington State, and appears on their birth certificate and driver's license. It is not on their passport because the US does not recognize it federally.
  • Meeting another non-binary person showed them it was possible. Zarlez says they were never taught non-binary was something you could be, and their experience did not fit the stereotype of "a woman trapped in a man's body". Passing as male was easy, and being affirmed takes active effort. Since starting therapy about three years earlier and coming out a couple of years before the interview, they say they have found much of their lifelong anxiety came from gender dysphoria, and that hormones and laser hair removal, which they call technology, have helped.
  • They rejected the idea that biological children show a male side. Giard raised their marriage to a woman and their biological children. Zarlez answered that families come in all combinations, that their son is adopted, and that people overemphasize biological genetics in family structure.
  • Tech's exclusive-club culture pushes out people who aren't straight white men. Zarlez says tech is steeped in a self-reinforcing toxic masculinity, and that people who are not straight white men leave tech much sooner. They say escaping toxic co-workers is the number one reason women in tech change jobs. Some colleagues have become closer since they came out and others the opposite, and they choose their own comfort over others' discomfort. They credit Microsoft with a strong stance on inclusion and call this conversation itself progress, recalling that about 10 years earlier same-gender marriage was still being debated.
  • Allies should listen, learn the history and question "new". Zarlez argues transgender people "have been around forever" and were written out of history. Their example is a German institute for transgender care and research that the Nazis raided and burned in the 1930s, and they cite third genders in many Native American cultures. Their advice is to question where an assumption that something is new comes from.
Episode 588: Walt Ritscher on Try .NET
  • Try .NET turns static C# documentation samples into live, editable code. Ritscher says Microsoft built it for authors of technical documentation and announced it at .NET Conf "a couple weeks ago": the reader gets an editor beside the sample, can change it and press run, and sees compile errors in the browser. It is written in Blazor and runs as WebAssembly; his guess, since he has not seen the code, is that each edit is recompiled to WebAssembly and rerun.
  • For now it supports only C# and a single runtime version. Ritscher says it works only with C# on .NET Core 3; F# is planned and he does not remember whether VB is. All the demos in his roughly 30-minute LinkedIn Learning course on it, released alongside .NET Conf, were console applications; he has not tested ASP.NET Core or UI projects and does not know whether they work.
  • Authors pair a markdown page with a real, compiling project. Ritscher says you wrap the code to show in a #region, and code outside it, such as database setup, stays hidden but still runs on every execution. In the markdown you extend the usual triple-backtick code fence with parameters naming the project, the class and the region, so one project can feed several samples on a page.
  • A local command verifies and runs the docs, so deployment can wait. Ritscher says you install a few pieces from try.net, including a local runtime and project templates; running the try .net command from PowerShell checks that the code fences resolve, the assemblies are found and the code builds, then opens a browser with it running. He has not been through the deployment process himself. Asked by Giard whether powerful C# code could do harm, he says he does not know, though WebAssembly runs in a sandbox.
  • Power Apps suits forms over data, not full line-of-business systems. Ritscher, previewing his VS Live talk, says a developer can build a small team app in an hour or less instead of a full Visual Studio project, though its main audience is Microsoft's "citizen developers" among what he puts at 750 million Excel users. Like Excel, he says, it becomes a trap when people build entire applications on it; Giard, whose son built complex Power Apps for an employer, agrees.
Episode 587: Robert Green on Microsoft Graph
  • Microsoft Graph lets you query Microsoft 365 information as data. Green describes it as a RESTful API over 65 services, including mail, contacts, tasks, calendar items and SharePoint folders and files, plus Azure Active Directory and, he thinks, some Azure services. The point, he says, is that the processing happens on the server where the data lives and only the answer comes back.
  • Small queries replace context switches into Outlook and SharePoint. Green's examples: an app that checks on vacation for high-importance mail from his manager and shows a smiley or frowny face without opening Outlook; a query for contacts with a recurring all-day "birthdays" category event; and a customer app that checks whether a SharePoint folder named for the customer holds a contract file. None of this does anything you could not do by hand, he says, but it automates it.
  • Earlier Office automation needed Office running; Graph does not. Green, who did a lot of Office development, says VBA, Visual Studio Tools for Office and COM automation suited a world where you lived in Office or did not mind starting it, but they work poorly on a phone or a server.
  • You can use the .NET SDK or build the query string yourself. Green says the Microsoft.Graph NuGet package gives a fluent client (along the lines of me.messages with a filter on importance and sender), usable on phones through Xamarin, while from another language such as Ruby you append the query to the URL and send it over HTTP. Field selections are strings rather than strongly typed and casing matters; filtering support is not the same across all data types, which he expects to converge as product teams build out their APIs.
  • Start with Graph Explorer, the docs, and explicit permissions. Green says Graph Explorer, linked from the docs, runs sample queries and shows the query string and the JSON returned, including obscure Outlook contact fields. The docs include sample apps and walkthroughs for UWP, ASP and Xamarin with Azure Active Directory sign-in, and each app must declare permissions, such as sending mail on your behalf, that the user approves at first login. He says OneDrive and Teams files are SharePoint behind the scenes, so the same reads and writes apply.
Episode 586: Jim Wooley on Entity Framework Performance
  • Legacy apps can keep full Entity Framework on .NET Core. Wooley says .NET Core 3 added support for Entity Framework 6.3, which matters because EF Core still cannot model many-to-many without the join table as an entity. Existing object models with such relationships therefore cannot just be copied or upgraded to EF Core unchanged.
  • Don't drop Entity Framework over one slow query; learn its SQL. Wooley says the usual cause of customers' performance problems is not paying attention: you can use EF without knowing SQL, but performant apps need you to understand the SQL it generates and whether queries use the indexes. EF will not tune indexes; he says Azure SQL can, generating indexes from the queries it runs and rolling back any that degrade other queries.
  • Unnoticed lazy loading is the biggest problem he finds. Iterating five customers and touching .Orders costs one query plus five more, and it compounds across levels, though Wooley grants lazy loading helps when you never reach the later records. One customer had loops nested four levels deep, each with about five logging calls that ran .First() against the database and wrote the log to the database, with no business logic; deleting the code fixed it.
  • Several free tools show the generated SQL, with different trade-offs. Wooley's standby, SQL Profiler, shows every statement server-side but cannot tie it to a line of code. EF logging in both Core and full .NET records the generated SQL but omits parameter values by default because they may hold PII; EF Core has a setting to include them, which he would only enable when really troubleshooting. Visual Studio's diagnostic tools can filter to ADO events and jump from a statement to the responsible line, and App Insights can also be hooked in.
  • Start free, but a paid profiler can pay for itself fast. Wooley names EF Prof, from people behind NHibernate, and MiniProfiler among third-party tools, some of them paid. He says a roughly $200 license can easily cost less than the time spent hunting a problem without one.
Episode 585: Angela Dugan on Team Dynamics
  • High-performing teams come down to paying attention to each other. Dugan, who has just moved from directing her consulting firm's Chicago office to a company-wide people role, says the secret is noticing what teammates need to succeed and treating them as whole people, not just "the person next to you slinging code". Her talk rests this on three pieces: understanding your team, building trust, and leadership skills such as active listening, mediation, coaching and assessment, which developers tend to skip as "soft skills".
  • A quiet colleague is not necessarily an introvert. Dugan calls this "the introvert myth": she is strongly extroverted but goes quiet from shyness and social anxiety, and others may be quiet because a past workplace punished speaking up. It matters because introverts and extroverts need different work environments: she thinks out loud at a whiteboard with someone else, while introverted coworkers do better given a few hours alone before they talk. The definition of extroverts as drawing energy from people and introverts as being drained by them is Giard's.
  • Personality tools give a team usable information about each other. Dugan recommends 16Personalities as an approachable version of Myers-Briggs. When she posted her own result on her company's Slack, coworkers posted theirs, and she found the firm has only a handful of extroverts. She also covers CliftonStrengths, DISC, Johari and Nohari windows (comparing the words you pick for yourself with the words others pick, as a measure of self-awareness), and personal journey lines.
  • Teams of similar people cause more friction in the long run. Dugan says a team of like personalities has less friction at first, but an all-introvert team has no one to rally whiteboard brainstorming, and balancing analytical, tactical and user-minded people produces better software for humans. She adds that a team split evenly by gender can still turn out to be all introverts, so personality is one more variable in building a team. The point that diversity inside the team mirrors a diverse user base was Giard's, and she agreed.
  • Personal README files tell teammates how to work with you. Dugan picked up the idea from an attendee at Agile Midwest after asking how she could keep track of the needs of her 34–35 people: each person writes a text file saying whether they are an introvert, what hours they keep, how strict their work-life balance is, and so on. She is writing her own with a few coworkers to settle a format before rolling it out at the company, and says README files and journey lines build trust because people tell their own story.
Episode 584: Phil Japikse on .NET Core Support Cycle
  • .NET Core support is far shorter than .NET Framework's. Japikse contrasts the roughly 10 years of bug and security fixes Microsoft has given the .NET Framework (4.8 being current) with .NET Core's two tracks. An LTS (long-term support) release is supported for three years or for one year after the next LTS release, whichever is longer; a "current" release is supported for only three months after the next release ships, and then gets no patches at all.
  • A higher version number is not a longer-supported one. Japikse says 1.0 and 1.1 were both LTS, 2.0 was current and is already dead, 2.1 is LTS and supported to, he believes, 2021, and 2.2 is current. Since 3.0 shipped on 23 September, 2.2 stops being patched after 23 December. A group of 10 people from one company in his workshop had production code on 2.2, often because Visual Studio's template defaulted to it, and "freaked out" when he told them.
  • The next release line repeats the pattern. 3.0 launched as a current release, and 3.1, scheduled for 5 November, will be the LTS, leaving 2.1 and 3.1 as the supported releases. His own opinion, which he says is not Microsoft's, is that 2.1 was made LTS because it carried GDPR support and enhanced HTTPS.
  • Most teams on the short-lived release should roll back. Japikse advises going from 2.2 back to 2.1, saying the only significant 2.2 feature is IIS in-process hosting, a performance gain, so for most projects rolling back is a project-file change plus a couple of settings: follow Microsoft's 2.1-to-2.2 migration doc in reverse. Moving to 3.0 is a much bigger job, because 3.0 no longer runs on the .NET Framework, internal NuGet packages and other dependencies must move to .NET Standard 2.0, and most of the breaking changes are in EF Core.
  • Whether to roll back or upgrade depends on risk and testing time. For a new, isolated project with no dependencies, Japikse would go to 3.0. With dependencies that cannot be updated in the month or two left, he says roll back now and migrate later, especially for a high-risk line-of-business or financial application where a rushed move to 3.0 would skimp on testing; for something like a conference website it matters less. Recorded around mid-October 2019 at VS Live Chicago.
Episode 583: Edward Thomson on GitHub Actions
  • GitHub Actions first set out to host repository automation. Thomson, product manager for GitHub Actions at GitHub, says the version announced about a year earlier was aimed at work like labelling or assigning a newly opened issue. Before it, you built an app that listened to GitHub's webhooks and had to provision your own compute for it; Actions supplied the compute.
  • Users wanted CI/CD, so GitHub paused the beta and retooled. Thomson says the original ran inside Docker containers on Linux with little computing power, which suited a small Node.js build but choked on large builds, iOS apps or Windows work. GitHub stopped admitting people to the beta and rebuilt it on real virtual machines running Linux, macOS and Windows, so it now covers build, test and release as well as repository automation.
  • Workflows are YAML; actions are the reusable pieces. A workflow is YAML started from the Actions tab using starter templates, for example running npm build and tests on every pull request or push to master. Repeated steps such as a Docker login-and-push or a Kubernetes deploy can become an action with parameters, published in a repository and referenced by name. An action is either a Dockerfile, which GitHub builds and runs, or JavaScript; Thomson prefers JavaScript because it is cross-platform and comes with a toolkit and Octokit, GitHub's REST and GraphQL client for Node.js.
  • People are using actions well beyond build and deploy. Thomson's examples are a stale bot that runs nightly and proposes closing inactive issues, and a joke action inspired by Untitled Goose Game that deletes any issue lacking the word "honk". Giard suggests that stale issues might be better sent to someone for review than closed.
  • Actions was still in a largely public beta. Thomson says you sign up at github.com/features/actions and GitHub aims to admit people the next day, slowing admissions when capacity is short. He says continued investment in documentation and examples is one reason it is still in beta, and that announcements were coming at GitHub Universe in San Francisco on 13–14 November.
Episode 582: Jeremy Likness on Blazor
  • Blazor runs C# and .NET in the browser through WebAssembly. Likness traces the path from ASM.js, a JavaScript subset targeted by the LLVM toolchain for C and C++ (for example, XOR-ing with zero to signal an integer), to WebAssembly, a bytecode for a stack-based sandbox with no DOM access. A team compiled Mono to WebAssembly in 2017, but that was a black box; Blazor adds the services for a full app and reuses the Razor templating engine in the browser ("Browser, Razor, Blazor"), so Razor class libraries can be shared with server-side MVC apps.
  • Server-side Blazor is production-ready; the WebAssembly version is not. Client-side Blazor was still in preview, with optimization and debugging work outstanding, and Likness says the team was targeting May 2020 for it. As a stopgap, server-side Blazor renders pages on the server and pushes fragments over SignalR to a thin client, and switching between the two is a flag. It comes with .NET Core 3.0; the WebAssembly preview needs Visual Studio 2019 with preview workloads enabled, and blazor.net has instructions.
  • The choice between server and client is a set of trade-offs. Likness says only the client-side version can run offline as a progressive web app. Server-side suits code with .NET Framework dependencies that cannot move to .NET Core, and code you do not want in users' hands, because the client-side version downloads your DLLs, whose IL can be decompiled; he calls obfuscation "a speed bump", not security. Where workloads should scale is the third factor; the example of keeping database-heavy calls on the server was Giard's.
  • Silverlight and WPF shops can carry their view models over to Blazor. Likness says many customers he talks to still run WPF or Silverlight clients and want a modern stack that also reaches Linux, Mac and phones. Code that followed MVVM can port its view models, but XAML UIs have to be rewritten as Razor, and apps with logic embedded in the UI are much harder.
  • WCF RIA Services users have several replacement options. .NET Core does not support WCF out of the box, so Likness lists a community WCF client project, gRPC with contract-based discovery, and OData, which he finds most intriguing. With an OData server, a Blazor client can share the same classes and validations and write LINQ filters that become API calls, so filtering happens on the server and only the needed records come back.
Episode 581: Laurent Bugnion on the Ignite Tour
  • Microsoft is taking Ignite's content on a worldwide tour. Bugnion says the Ignite Tour visits 30 cities, starting the week after Ignite (first week of November, Orlando), with Paris first, and runs until June: two-day events with about 100 sessions of 45 minutes, in places including Tokyo, São Paulo, Johannesburg and many US and European cities. He will do 15 stops, which is manageable because he lives in Zurich, and says Ignite itself is pushing to make about 30% of its audience developers.
  • Sessions are grouped into learning paths that each tell a story. A path is five sessions, about a day's worth, that tell one story but can be dipped into. Bugnion's covers modernizing an application in the cloud: moving an on-premises web app and its data to Azure, containerizing it with Kubernetes, monitoring with Azure Monitor and Application Insights, and extending it with serverless and Logic Apps. His informal polls suggest about 30–40% of attendees mostly follow a path, and Ignite sessions are recorded for Channel 9.
  • The sessions are packaged so that anyone can deliver them. Everything is open source on GitHub: session scripts, slides, deployment templates that stand up about 30 Azure resources with one click (he spent about three weeks on his), Camtasia demo recordings that a presenter can fall back on without good internet, and a train-the-trainer video. Microsoft staff, MVPs, regional directors and trainers will deliver on the tour, anyone may use the material afterwards, and the team commits to updating it as Azure changes at least until June.
  • The first tour's results led Microsoft to repeat it. Bugnion says last year's edition drew something like 50,000 attendees worldwide, from about 1,500 at smaller stops such as Mexico and São Paulo up to 6,000 in one venue on one day in Amsterdam. He says Microsoft's metrics showed good Azure adoption after the tour, especially free trials. His team also runs side events, and he asks user group organizers in tour cities to get in touch.
  • Live human translation still has value over machine translation. Bugnion says some stops, such as São Paulo, have human interpreters whom Microsoft trains in technical vocabulary; places like Japan get local speakers; and everywhere has AI-powered live translation in the app, a few seconds behind. He tells of briefing an interpreter in Rome while showing Microsoft's automatic translation, which she said had led her to steer her daughter away from the job, but holds that humans still win on accuracy and nuance. The advice to brief the interpreter beforehand is Giard's, which he credits to Josh Holmes.
Episode 580: Jason Bock on .NET Core 3
  • Clients increasingly deploy .NET to Linux, especially in the cloud. Bock says this is what his consulting firm sees and that cross-platform reach is a main selling point of .NET Core, along with phones and now the web through Blazor. .NET Core 3 had been released at .NET Conf a week or two before the recording.
  • WinForms and WPF apps can now target the .NET Core runtime. Bock says this does not make them cross-platform, since they still run only on Windows, but they get a faster runtime with fewer memory allocations. Because .NET Framework 4.8 will be the last Framework version and he cites Microsoft telemetry putting WinForms among the most-opened Visual Studio project types, he sees this as extending the life of large legacy apps rather than reviving the technology. Giard frames it as reassurance for companies that would otherwise face a rewrite.
  • .NET now embraces Google's gRPC rather than inventing its own. Bock compares it to WCF or remoting: you define messages and services in a protocol-buffers text file, and generators produce server and client code. Generators exist for other languages, so a .NET service could be called from Java, Ruby, Python or Go, and the format is built to be fast on the wire. He takes it as a sign of Microsoft's openness to adopting what people already like.
  • Blazor server-side ships now; the client-side version follows next spring. In server-side Blazor, which ships with .NET Core 3, rendering happens on the server, and a SignalR channel that is set up automatically routes events back and forth. Bock expects the WebAssembly client-side version around April or May, saying the programming model will be the same and code will not change. On the client, a Mono runtime file (mono.wasm) downloads first and then your assemblies, and .NET Standard assemblies can be shared between server and client.
  • .NET Core 3 can publish a single-file executable. Bock says it bundles the .NET Core runtime into one bigger EXE that runs whether or not the SDK is installed. The first run unpacks itself and is slower, and later runs seem to him a little quicker. He sees it easing deployment of WinForms and WPF apps (compared with ClickOnce) and of console apps for Linux or Mac.
Episode 579: Laurent Ellerbach on Diversity and Inclusion Workshop
  • LEGO Serious Play uses bricks as metaphors to express ideas. In Ellerbach's description, each person builds an answer to a question in silence, then explains it while everyone else listens actively, and the group then finds what is common. Any brick can stand for any idea, so one person's TV is another's sofa. He says six bricks of the same colour can be combined 915 billion ways, a figure Giard repeats back as "billion with a B".
  • Ellerbach argues that building draws out more than talking does. He says the hands are connected to about 80% of the brain's neurons against perhaps 5% for the mouth, and that building uses both hemispheres, one to make the model stand and one to make it look good. In his account the unconscious mind takes over while you build and expresses more than you consciously intended, and he says MRI-based neuroscience has shown this.
  • His diversity and inclusion workshop turns hard questions into builds. Ellerbach, an engineer at Microsoft who is a certified facilitator, built the three-hour workshop because Microsoft wanted something more immersive and experiential than a discussion. A question like "what does respect mean for you?" draws a more considered answer when built than when written on a sticky note, and the answers differ widely from person to person. The method was created by LEGO with faculty from Switzerland in 1996 and released openly, with certification offered by consulting firms, but the questions and their flow, which build gradually from easy questions, are his own.
  • The rules protect the unconscious, unhurried thinking the method depends on. Participants stay positive and do not judge anyone, since the builds are personal. They must not supply a word to someone searching for one, because the brain lazily keeps whatever it is given. They give each other time to process, keep phones and PCs away except for photos, and build in silence, so that attention is not pulled to what is happening around them.
  • Ellerbach scales the workshop by training other facilitators, not publishing it. Demand after the first sessions led him to train facilitators and share the material openly with them, unpaid, asking only that changes be discussed with him; for now it is available only inside Microsoft, though he offers to train outsiders. He will not post the content publicly because he wants facilitators trained first. His next session was in London with 80 participants and several facilitators.
Episode 578: Raj Krishnan on Azure Data Explorer
  • Azure Data Explorer productizes the engine behind Microsoft's own monitoring services. Krishnan, who works for Microsoft, says ADX (formerly called Kusto) underlies Log Analytics, Application Insights, Time Series Insights and a security threat analysis service, which are abstractions over it; customers could previously use only those abstractions and can now bring their own use cases. Giard adds that long internal use means Microsoft has already found and fixed many of its bugs.
  • It is built for near-real-time queries over high-volume ingested data. Krishnan describes a proprietary in-memory, columnar store, sharded across compute and automatically indexing everything ingested, aimed at questions about the last 5–10 minutes rather than live streaming (which he leaves to tools like Stream Analytics). He claims queries over 200 billion records in about 1.3–1.4 seconds and petabytes a day ingested.
  • Because it is in memory, keep only active data there. Krishnan says ADX is not for "10 years of data" as in a SQL data warehouse: hold what you are querying now and move older data out to blob storage or a data lake, since cost scales with the data held and the compute needed for complex queries. The cluster is created and sized from the Azure portal by memory and query compute.
  • Raw data goes in untransformed, but you define the schema. The three native ingestion paths offered in the portal are Event Hub, IoT Hub and blob storage, configured by connection strings; other sources such as SQL Server have no direct connector and go through Azure Data Factory's ADX connector into blob storage first. Data is queried with KQL (Kusto Query Language), SQL-like but not SQL, in the portal or the downloadable Kusto Explorer client, and Power BI can connect by direct query for real-time dashboards.
  • A customer's 14–15-hour SSIS batch job prompted a non-telemetry use. Krishnan says the customer's forecasting data from multiple sources took 14–15 hours to process in SSIS before ending as Excel files, and with more mergers and acquisitions they feared one day's run would overlap the next. His approach was to drop transformations, load reasonably denormalized data straight into ADX and query it there.
Episode 577: Lorena Mesa on the Python Software Foundation
synopsis

Mesa, a data engineer at GitHub, PyLadies Chicago organizer and third-term director of the Python Software Foundation, describes the PSF as a maturing nonprofit whose job is the Python community rather than the language, and ends on governance: she holds that the PSF board and the core developers' steering committee are two sides of one practice of organizing a global community.

What the PSF is. A US 501(c)(3) that holds the Python trademark, runs PyCon US, maintains PyPI and funds grants. Mesa stresses that directors need not be core developers. The 13-member board is publicly elected; terms moved from one year to three, about a third elected each year, to keep knowledge on the board. She was just made vice chair elect, after serving as communications chair.

Money and grants. PyCon US profits pay staff, then infrastructure, then a global grants program covering things like Django Girls workshops and developer-sprint travel. A new education committee has made its first call for proposals.

Reach beyond the US. Mesa has run PSF Q&As abroad, including in Spanish at PyCon Colombia 2018, and points to visa barriers for travel to the US. Anyone using the PyCon name must contact the PSF and have a code of conduct; the PSF's own is being overhauled with an external consultant.

Services to projects. Legal counsel answers basic questions, the PSF is taking ownership of Requests from Kenneth Reitz, and fiscal sponsorship spares projects from forming their own nonprofit. Voting needs membership above the basic level, earned for example by giving money or about five volunteer hours.

Governance. Mesa cites the steering committee formed after Guido van Rossum stepped down, a translations work group she co-founded, and Brett Cannon's line "I came for the language, but I stayed for the community".

  • The PSF stewards Python's community, not the language itself. Mesa, a GitHub data engineer and PSF director, describes the foundation as a US 501(c)(3) that holds the Python trademark, runs PyCon US, manages PyPI's infrastructure and runs a grants program; she is not a core developer, and the language is the core developers' business.
  • Three-year board terms were adopted to retain knowledge. Mesa says the 13-member, publicly elected board moved from one-year terms to three-year terms with about a third up each year, so it can work on longer-term efforts; beyond attending meetings, directors choose their own committees and work groups (education, finance, code of conduct, trademark, translations).
  • PyCon US profits pay for staff, infrastructure and global grants. Grants can run from a few hundred dollars for a local Django Girls workshop to travel for a developer sprint, and a new education committee has issued its first call for education-focused grant proposals.
  • Any PyCon must meet PSF standards, chiefly having a code of conduct. The PSF owns the PyCon name, but Mesa says the only requirement is to have a code of conduct, while the PSF overhauls its own with an external consultant to make it more enforceable; she ties this to outreach beyond the US, from a Spanish-language Q&A at PyCon Colombia 2018 to the first PyCon Africa in Accra, chaired by a director based in Zimbabwe.
  • The PSF can take over key projects or fiscally sponsor them. Mesa says Kenneth Reitz wanted to stop owning the Requests library and the PSF is moving it under its own GitHub, and that projects can shelter under the PSF's 501(c)(3) instead of forming their own; legal counsel answers basic usage questions, and staff have helped with the Python 2 to 3 move ahead of Python 2 support ending at the end of the year.
Episode 576: Dan Rey on Microsoft Surface
  • Every Surface device supports touch and stylus input. Rey, a Microsoft Surface specialist selling to healthcare and life sciences, says this sets the six or seven Surface-branded devices apart from other OEM lines he knows of, across desktop, tablet and hybrid forms.
  • The Surface Book detaches mechanically because its base holds hardware. The base carries a second battery and a GPU, so holding the release button for about two to two and a half seconds checks that no software is using that GPU; Rey assumes Adobe video tools or games would block detaching until closed.
  • Surface comes in separate consumer and business versions. Rey's Surface Pro 6 from the Microsoft store shipped with Windows 10 Home, while business versions ship with Windows 10 Pro and may differ in specs and warranty.
  • Rey says Surface firmware is supported longer than rival OEMs'. He says other manufacturers update hardware settings for one to maybe three years, while Surface devices three, four or five years old still get firmware updates; he also pitches Surface as a showcase for Microsoft 365, with sign-in through a cloud identity.
  • The Surface Hub is built for real-time meeting-room collaboration. Rey says agile teams among his healthcare and life sciences customers use it as a touch-first digital whiteboard whose boards save to the signed-in user, and the Whiteboard app is now also on the web, iOS and Windows 10, so he can join the same board from an Android phone.
Episode 575: Kevin Gates on Cloud Architecture
  • Choose a cloud migration strategy per tier, not for the whole app. Gates, a Microsoft cloud solution architect, draws a sample app with a web tier, a Java and .NET API monolith, a SQL database that also does backups and file serving, and back-end logging and reporting; he proposes microservices for the API, lift-and-shift into platform-as-a-service for the database, and serverless for the back-end work.
  • Split the monolith by domain and align teams to each domain. Gates uses domain-driven design (cart, sales, inventory, printing) so each team can ship independently, then packages each service as a container image in megabytes rather than a VM's gigabytes; Azure Kubernetes Service can raise one busy service, such as inventory, from four replicas to five or ten without scaling the rest.
  • The database and file share can move with almost no code change. Gates lays out SQL Server in a VM (IaaS), Azure SQL Database (PaaS, with automatic backups and transparent data encryption) and SQL Managed Instance in between; moving to Azure SQL needs mainly a new connection string, and Azure Files over SMB 3.0 served a partner whose app hard-coded UNC paths, whereas Blob storage would need REST client changes.
  • Cross-cutting and event-driven work maps to native services and serverless. Application Insights in Azure Monitor combines platform metrics with custom ones such as orders fulfilled and can trigger scripts, webhooks or Azure DevOps items on alerts; a receipt job can become an event chain that queries a new order, writes a file to Blob storage and emails the customer a link.
  • A stateful web tier must move its state out before scaling. With session state on one server, a second instance would show an empty shopping cart, so Gates moves state to Azure's Redis cache service and hosts the site on App Service; he says migration can be phased, often database first, with logic kept close to its data.
Episode 574: Mercedes Bernard on Dev Together
  • Dev Together teaches new developers the skills nobody explicitly teaches. Bernard, a senior software engineer and engineering manager at Tandem, runs the volunteer Chicago community, not incorporated as a nonprofit, to connect early-career developers with experienced mentors for code review, Git and source control, pair programming and job-hunting.
  • Mentors review code in advance, then pair through the feedback. Bernard calls the design "high value, low commitment": mentees say what they want feedback on, mentors spend about an hour reviewing beforehand, and the event on the second Tuesday of each month runs only 6 to 7:30, with mentors matched month to month rather than assigned long-term.
  • The idea came from gaps seen in apprenticeship applications. Reviewing code samples for Tandem's apprenticeship, Bernard saw a gap between bootcamp, self-taught or college code and industry code, and Tandem could not hire all hundred applicants; the community, then a year and almost two months old, draws about half repeat and half new attendees and has added lightning-talk nights and workshops on React state, unit testing with Heroku deployment, and Git.
  • Bernard reports benefits on both sides of the mentoring. One mentor with almost 30 years' experience told her pairing on a for loop versus a while loop restored his empathy for new hires, another now coaches early-career developers at work, and mentees tell her about interviews, offers and freelance clients; a Madison, Wisconsin organizer started a chapter under the same name and branding.
  • Bernard argues gatekeeping computer-science topics aren't vital to the job. Her talk "Fun and Friendly CS" explains topics like big O notation and linked lists with accessible metaphors to tell developers without that education they are still real coders; Giard adds that he first heard of big O in a job interview and never met it in a project.
Episode 573: Ruth Yakubu on Machine Learning tools in Azure
  • Azure Machine Learning Service replaces Microsoft's earlier ML tools. Yakubu, a Microsoft cloud advocate who works with startups, says it consolidates the drag-and-drop Machine Learning Studio (which she says let university beginners get going in 20 minutes) and the Azure Workbench into a suite for beginners and seasoned data scientists. Work starts in the Azure portal with an experiment, and the coding is done in Jupyter Notebooks that can be generated from the workbench, with Python frameworks such as Keras brought in.
  • Storing every model's history supports teamwork, debugging and auditing. Yakubu argues a model in production is never a done deal, since new data may force refinement, so the service keeps the history of models; teammates can compare whose model worked and why, down to data cleansing and the parameters fed in. Deployed models come in formats such as ONNX and can be consumed from any language able to open them, Java included.
  • MLOps brings DevOps pipelines and source control to notebooks. Giard raises getting Jupyter Notebook code into source control as a standing difficulty; Yakubu says the service has pipelines through Azure DevOps for building, testing and deploying models, with a history of every change.
  • AutoML automates the trial-and-error of choosing an algorithm. Yakubu says a training run can take eight hours and still give poor results; with AutoML the user loads data, sets key parameters and the problem type (such as classification), and the service tries different algorithms and reports the best one along with the factors that actually drive the outcome. Giard adds his own view that cleaning data and choosing a model are where data scientists spend most of their time.
  • Form Recognizer turns paper forms into structured data. Yakubu describes this service, introduced this year, as extracting what people write on forms such as doctor's-office paperwork into a digitized structure for a database, replacing manual re-entry; she says she is flying to Tampa for a project using it.
Episode 572: Whitney Griffith on Azure Blockchain as a Service
  • A blockchain is a ledger every network member shares and polices. Griffith, a Microsoft software engineer on the commercial software engineering team who works with Microsoft's top 400 customers on blockchain and data, likens it to a group text: everyone sees each message at once, and no one can withdraw it or deny sending it. Members help keep the ledger from being compromised under rules the network sets.
  • Azure Blockchain as a Service hosts a consortium on Quorum. Griffith says a creator invites as many members as they like, each with equal rights, who jointly set the business rules; the chain is Quorum, which she describes as a private Ethereum blockchain, and Azure provisions and manages the nodes that run the ledger to the customer's specifications.
  • Logic Apps call smart contracts through an Ethereum connector. Griffith explains a smart contract as a self-executing entity like a Java or C++ class with several functions, for example one returning an account balance in a token-transfer contract written in Solidity. Once deployed, it returns a contract address; with that and the member node's connection string, the connector can trigger the contract's functions serverlessly.
  • One customer built an industry-wide mobility-as-a-service platform. Griffith says the customer's country has a fragmented transport industry of over a thousand providers, forcing travellers to buy several tickets; the consortium lets a user route a trip and get a single ticket, with insurance that, if a train is delayed, extends the ticket so the traveller can switch to an alternate route such as a cab.
  • Blockchain replaced a central intermediary every provider would have to trust. Griffith says the alternative was a new company managing the providers' relationships, whereas the consortium gave every participant a say from day one. She joined the project late and guesses the customer, already familiar with blockchain, proposed it; Giard adds his own caution that blockchain is a buzzword sometimes misused as a silver bullet.
Episode 571: Jon Galloway on the .NET Foundation
  • The foundation exists to hold copyright for open-source .NET. Galloway, its executive director for two years, says it was set up in 2014 as a nonprofit founded and funded by Microsoft but external to it, so that other companies and individuals could collaborate once .NET was open-sourced. Every commit passes through a contributor license agreement, which he says lets companies trust the pedigree of the code, to the best of the foundation's ability.
  • The board was reshaped to be elected by the community. Until March it had three seats, two held by Microsoft employees (Scott Hunter and Miguel de Icaza) and one appointed (Oren Novotny); it now has seven, one Microsoft-appointed (Beth Massi) and six elected from almost 500 members, out of 45 candidates: Jon Skeet, Sara Chipps, Iris Classon, Phil Haack, Oren Novotny and Ben Adams. Galloway says the point is to scale beyond himself, with teams for outreach, meetups, project onboarding and corporate relations writing roadmaps that members can join.
  • A Meetup Pro network is meant to take over INETA's role for good. Galloway says .NET meetups were poorly organized next to other ecosystems' Meetup Pro groups; in about a year and a half the foundation's network reached almost 300 groups and over 200,000 members, with the foundation paying their Meetup Pro fees. He argues INETA depended on Microsoft marketing money that changes year to year, while the foundation will always care about .NET, and the long-range plan includes things like speaker grants.
  • The foundation wants more projects and more ways to join. It has about 75, such as xUnit, NUnit, Json.NET, IdentityServer, AutoMapper, Orchard and DNN, and Galloway says that is fewer than it wants. The single joining route suits established projects with a full team, so he wants a lightweight tier for small promising projects and a more mature tier with long-term support and checks such as patent scanning that some companies require.
  • Corporate sponsors pay but deliberately get no board seat. Since December, Telerik, Insight and Pivotal have joined Microsoft, previously the only financial contributor, to cover legal costs, Meetup Pro fees and infrastructure. Galloway says some software foundations charge sponsors millions for board seats, which can feel like a club for big companies; this one took inspiration from the GNOME Foundation's elections and leaves leadership to the community.
Episode 570: Laurent Bugnion on Migrating Data to Azure
  • Moving MongoDB to Cosmos DB needed only a new connection string. Bugnion, a Microsoft cloud advocate, built the demo for Microsoft Ignite the Tour, which he says ran in 17 locations with about 50,000 viewers in total. It used a fictitious Tailwind Traders company, assumed to be all on-premises, with an old SQL Server, a MongoDB, and Node.js and ASP.NET app services. He ran Mongo's own mongodump and mongorestore on the on-premises Linux VM, restoring straight into Cosmos DB through its Mongo API, to show that native tools work against it. He concedes it is still a different database system, so there may be exceptions, and says to try it in a staging environment first.
  • Azure's Database Migration Service keeps syncing changes, so downtime stays minimal. Bugnion says the service, released around October of the previous year and now generally available, keeps copying writes from source to target while the old site stays live. You test the target, perhaps from a staging site, then switch the connection string and stop the service. It handles several source and target pairs, Mongo to Cosmos among them. He used it for the SQL migration. His demo database was a few megabytes, and he says larger ones just take longer.
  • SQL Database Managed Instance makes old SQL Server databases migratable. Bugnion says it claims "99 point something percent" compatibility back to SQL Server 2005. It adds features plain Azure SQL Database lacked, such as cross-database joins and compiled CLR. He notes that SQL Server 2008 goes out of support this year.
  • Managed Instance has no public IP, by design and without exception. Bugnion says it can only be reached over a private virtual network, through VPN or ExpressRoute. In the demo the web service was containerized in the same virtual network, and only the container's port was opened to the public. He argues this answers the many firms that stayed out of the cloud because they would not accept a public port on their database.
Episode 569: John Alexander on ML.NET
  • ML.NET brings machine learning to C# developers without Python. Alexander, who works on the ML.NET docs at Microsoft, says it was launched in beta at Build 2018 and officially at Build 2019. A model can be trained and used for predictions locally, with no cloud connection. He says it does not yet support ARM, so it does not run on mobile phones.
  • Every ML.NET job follows one fixed sequence of steps through an MLContext. Alexander's steps: add the Microsoft.ML NuGet package, create an MLContext, and load the data. Then prepare it, which includes "featurizing" string fields into numeric vectors. Then pick a trainer for the scenario, train, and evaluate using metrics specific to that trainer. The model is saved as a zip file of binary parts, which a web app, API, Azure Function or desktop app loads, either predicting in batches or one item at a time through the prediction engine. His example is a function that classifies incoming tweets and passes the negative ones to customer service.
  • Models trained elsewhere can be imported and retrained on little data. Alexander says a model can be trained at scale in Azure, or come from a data science team, and then be used locally in ML.NET. Separate NuGet packages handle ONNX and TensorFlow. With transfer learning, the layer closest to the output is cut off and retrained on a small labelled set, for example so a retailer can sort images into food or appliance.
  • ML.NET is about ten years old and in daily use inside Microsoft. Alexander says it began as an internal Microsoft Research library called TLC, and that it is used in Office and Bing. One outside user applies it to regression on the makeup of wine.
  • Model Builder and an AutoML CLI generate the C# code for you. Alexander says Model Builder, a Visual Studio extension still in early alpha, tries several trainers on your data set, tunes them, and returns an optimized saved model plus the C# to train, evaluate and run it. The command-line AutoML tool does the same. He says this saves .NET developers from going deep into data science theory. Giard adds the view, from his own use of ML Studio, that such tools also teach the steps of building a model.
Episode 568: Heather Wilde on Anticipatory Design
  • Anticipatory design combines user experience and interface with machine learning. Wilde describes it as a relatively new field, usually involving hardware and software together, such as a phone's GPS or Alexa devices that collect data. She separates the user experience, which is multisensory (the matching tables, colours and fry smell of a McDonald's), from the user interface (eating the fry itself).
  • Data about the person and the crowd lets a business act first. Wilde's example is the Starbucks app, which suggests her usual drink as she passes a store and alerts the store if she heads towards it. She first says the drink is made in advance, then corrects that it is only suggested. She calls Target's stocking of Pop-Tarts ahead of tornadoes and hurricanes AI in logistics, a step short of anticipatory design.
  • Amazon Go removes checkout entirely and shows the idea working. Wilde says the stores have no staff. The Amazon app is detected over Bluetooth or Wi-Fi on entry, cameras track what is taken, and the purchase is charged on the way out with no action by the shopper. She says it works because it meets the wish to shop fast, stocks often-bought items at familiar shelf heights, and cannot really be tricked.
  • It suits only products that collect data and have great designers. Wilde's first test is whether the product has, or could have, an online part that gathers data, or could connect to a physical device such as Alexa or Nest. Her second is a designer who can build a consistent, beautiful interface, as with the Amazon store's wood shelving or Apple's unboxing. She says she herself designs experiences, not interfaces.
  • Small companies can buy data cheaply, so spend the money on design. Wilde says firms without Target- or Starbucks-scale data can start from US government sets such as the census, or anonymized data sets sold by subscription for a small fee, and build personas from them. She says design is where she would spend the money, and that this is why the field is called anticipatory design and not machine learning.
Episode 567: Elton Stoneman on Docker
  • Containers isolate the app process instead of virtualizing an operating system. Stoneman, who has worked at Docker for about two and a half years after a career as a .NET consultant, says a containerized process such as IIS's w3wp.exe runs directly on the host. To itself it seems to have its own IP address, server name, C drive and registry. Containers are light enough that in his DevSum workshop he runs about 15, including Elasticsearch, on a two-core, 7 GB Azure VM. They reach each other by DNS name over a Docker network.
  • A Docker image runs the same anywhere, and clusters self-heal. Stoneman says anyone with Docker can run the image and get the same behaviour, on a laptop with Docker Desktop or in Azure or AWS. In production you give a Docker Swarm or Kubernetes cluster a definition of the app, and the cluster places the containers. His example: if 50 web containers are wanted and a server running five of them dies, the cluster starts five more elsewhere, so no one gets a 2 a.m. call.
  • Most teams keep state outside the containers, in managed services. Stoneman says state in containers is possible; he has a Pluralsight course on it. The common pattern is to run SQL Server in a container in test but use a managed service such as SQL Azure in production, with only a configuration setting changed.
  • He sees almost no reason to deploy without containers. Stoneman says a Dockerfile replaces the Word document of deployment steps, sits in source control, and can even compile the app. Because production runs the same package that was tested, nothing is forgotten when a build is promoted. On a Windows Server 2019 base, a .NET 2 Web Forms app, or just its MSI, runs without code changes. He also says the shared Dockerfile and Compose files give dev and ops the same tools and language. His one exception is hardware peripherals with unusual connections, which a container cannot reach.
  • Containerize the whole monolith first, then split out valuable features. Stoneman says rewriting a 2-million-line legacy app as microservices could take two years. Instead, package the whole app in a container, then move the features that gain most from running and updating separately into their own containers. This is the theme of his Pluralsight course "Modernizing .NET Apps with Docker". His suggested learning order: run public images such as Microsoft's IIS image, then write Dockerfiles, then use Docker Compose. He points to his book Docker on Windows (Packt) and his free workshop at dwwx.space, with its code on GitHub.
Episode 566: Hattan Shobokshi on Terraform
  • Infrastructure as code turns one engineer's head knowledge into a repeatable script. Shobokshi, a senior software engineer on Microsoft's CSE (commercial software engineering) team, contrasts it with clicking through a wizard: a script documents what was built, lets a colleague rebuild it while the owner is on vacation, and gives the same result every run instead of a human's small variations.
  • Infrastructure in source control gets the same tooling as application code. He says a scripted change can be diffed to show exactly what a colleague altered on a VM, and Giard adds that a breaking change can be rolled back to the last working version.
  • Terraform declares a desired state rather than execution steps. Shobokshi says you define resources (VNets, VMs) and variables, Terraform downloads the provider for the target, terraform plan compares the code against what exists in, say, Azure, and terraform apply creates only what is missing. He says it is free with an enterprise version whose features he does not know, he believes it is open source, and its providers cover both cloud and on-prem, including Azure and bare-metal servers.
  • Terraform competes with ARM templates mainly on readability. He and others find HashiCorp's HCL easier to read than a long ARM JSON file. He qualifies the multi-cloud claim: the same file will not run on Azure, AWS and Google, because resource calls are environment-specific, but knowing the structure makes the code easy to port.
  • Under GitOps, checking in a Terraform change is how infrastructure gets deployed. He describes using Terraform to stand up all the infrastructure for a new team's application, with build pipelines that verify and deploy any checked-in change, so adding a VM means editing the script rather than asking anyone; whether to add manual approval is up to each organization. He says he used it in production at earlier jobs and has customers now moving towards it.
Epiosde 565: Eric Boyd on Microservices
  • Microservices are autonomous units isolated by business domain, not small services. Boyd defines them as service-oriented architecture principles plus cloud, DevOps and REST: in an e-commerce system, product catalog, customers, orders and fulfillment each own their tech stack and data, behind a well-defined interface, usually HTTP and REST. He calls it a refinement of SOA, with REST and OpenAPI taking the place of SOAP and WSDL, and Giard recalls the SOA author Thomas Erl telling him HTTP was simply the best way to implement SOA at the time.
  • Independent scaling and releases come at the cost of complexity. Boyd says each service can get resources where its load is and ship a feature change without releasing the whole application. He warns against adopting the approach as a buzzword: it pays only when teams and releases align with business domains, and without good DevOps practice for build, release and monitoring it becomes "a mess and a nightmare". Interfaces that must change need versioning, possibly with two versions running at once and an API gateway routing traffic and transforming payloads.
  • Split a service when its releases carry too much risk. Boyd says boundaries start from business domains, and a service such as orders may become several (receiving and processing) once it grows unwieldy and each release adds a heavy testing burden. To Giard's complaint that loosely coupled failures are hard to catch at development time, he answers that each service should be unit-tested in isolation as self-contained software.
  • Microservices are an architecture, not a hosting platform. Boyd says people conflate them with containers or serverless, but the same design can run on VMs, raw servers, Azure App Service, Azure Functions, Kubernetes or Service Fabric, which he favours. Those platforms help manage the release lifecycle but do not make something a microservice.
  • Boyd has built delivery microservices for quick-service restaurant chains. Without naming customers, he describes cloud services, using IoT Hub among other Azure services, that connect chains' legacy point-of-sale systems in stores to delivery partners such as DoorDash, Uber Eats and Grubhub, each with its own interface.
Episode 564: David Makogon on Streaming Data
  • Aggregating near-real-time data from a database is expensive. Makogon says writing thousands of rows to SQL Server, or a NoSQL store such as Cosmos DB, MongoDB or Cassandra, and running aggregation queries every minute or ten costs time and compute, and competes with the same database serving a website or API.
  • Streaming aggregates data over a time window before it reaches the database. His example is a car emitting speed and heading once a second: the stream buffers each minute, computes the average, and writes one row per minute, partitioned the way the query needs rather than the way the database stores it. Raw data can also be dumped to blob storage, for example a CSV every minute, or passed to a queue such as Azure Event Hubs or Kafka for downstream consumers.
  • Spark's watermark handles late events, at a cost in memory. Makogon calls Spark the most popular tool he sees and describes a customer's water sensors under manhole covers that report every 24 hours but can be delayed when a utility vehicle parks on top; a watermark might accept events up to five minutes late, but buffering 24 hours is impractical. Spark is open source and runs locally, on VMs or in containers, or as a managed service through Databricks or HDInsight in Azure, but it has a learning curve because you code in Scala or Python.
  • Azure Stream Analytics trades Spark's flexibility for configuration and a SQL query. He says inputs (IoT Hub, Event Hubs) and outputs (Cosmos DB, SQL Database, CSV in blob storage) are picked from a list, and the only thing written is a near-SQL query with windowing extensions; late-arrival tolerance is a setting, for example 10 minutes. His other streaming projects are aircraft location data arriving every couple of seconds and water meters reporting pH, flow and salinity.
Episode 563: J Tower on .NET Standard
  • .NET Standard is a specification, not another .NET implementation. Tower says people conflate it with .NET Core because both shipped at the same time. He sets it beside the implementations: .NET Framework, on Windows for 15 years and currently at version 4.8; .NET Core, cross-platform and rewritten from scratch; and Mono, which Xamarin uses on iOS, Android and Mac. Each of these implements versions of the standard.
  • Target .NET Standard only in class libraries shared across platforms. He says it lets one library of utility or business-logic code run in a Xamarin iOS app, a .NET Framework WinForms app and an ASP.NET Core app. Executables and web applications must still target a real runtime such as .NET Core or .NET Framework; in Visual Studio the choice is made when creating the class library and in its project properties.
  • The version table on GitHub tells you which Standard to target. Tower points to github.com/dotnet/standard, where platforms run down the side and Standard versions across the top: .NET Standard 1.6, for example, is implemented by .NET Core 1.0, .NET Framework 4.6.1 and Mono 4.6. A library meant for .NET Core 1.0 and .NET Framework 4.5 and above should target .NET Standard 1.0. The page also links an interactive table built by a team member.
  • Unlike portable class libraries, .NET Standard is a curated API list. Tower says PCLs offered only the intersection of APIs across the platforms you ticked, which ran to well over 300 permutations; Giard recalls that ticking Xbox made about two-thirds of the features disappear. Under .NET Standard, a team chooses which APIs to add to the specification, and each platform moves up to a Standard version as it implements them.
Episode 562: Mike Benkovich on Visual Studio 2019
  • Live Share is the new feature launch audiences cheer loudest. Benkovich says it links two developers' Visual Studio sessions over SignalR-style signalling: each sees the other's cursor and can navigate, open classes and search references as if they owned the project, with files loaded only when opened ("at least that's as I understand it"). It is built into 2019, an extension for 2017, and works with VS Code; he learned VS Code's debugging by sharing into it from Visual Studio. He has heard of up to 30 participants but does not know whether that is a hard limit, and suggests it for teaching a class.
  • GitHub and editor changes reduce trips outside the IDE. He describes a GitHub tool panel for pull requests and history following the GitHub acquisition, Azure DevOps pipelines for CI/CD on GitHub-hosted code, a refactoring that fixes the namespace when a class file moves folders, and a code cleanup command (sorting usings, explicit types instead of var) driven by your editorconfig. CodeLens, which shows a method's commits and history, is now in the Community Edition rather than Professional and up, and 2019 installs side by side with 2017 and with the 2019 preview.
  • IntelliCode ranks IntelliSense suggestions by machine learning. Instead of the usual alphabetical list, the extension trains a model on your code base and stars the members you are most likely to want, so two developers on the same class could see different suggestions at the top.
  • .NET Core now ships on its own, faster cycle. Benkovich notes .NET Core 2.2 is live and .NET Core 3 is in preview, adding Windows apps and WPF, with a built-in pattern for configuration and dependency injection. Giard recalls .NET, Windows, Office and SQL Server once shipping together about every three years; Benkovich ties the change to Microsoft's pivot to open source, and Giard credits open-source culture for the faster releases.
  • Community volunteers, not Microsoft staff, ran the local launches. Finding no listed launch events for Chicago or Minneapolis, Benkovich organised a Minneapolis launch party on 2 April, the day the keynote was livestreamed, then a Chicago one with David Pine; he says he has done launch events for this tool for 14 years.
Episode 561: Adam Hecktman on Civic Tech
  • Microsoft's civic role is matching its resources to the city's priorities. Hecktman, Microsoft's Director of Technology and Civic Innovation in Chicago, says those resources include grant money and technology but also thought leadership and introductions to Microsoft's networks and partners (people networks, he clarifies), and that his constituency is the people of Chicago rather than one customer.
  • A tech workforce that looks like Chicago has to start early. His example is MakeCS, led by the Museum of Science and Industry with Chicago Public Schools, the Chicago Public Libraries and the YMCA of Chicago: it trains two or three teachers from an under-resourced school to teach computer science in a makerspace, which they then build at the school for students and for parents refreshing skills such as additive manufacturing.
  • Students need a map of learning outside their own school. Chicago City of Learning, a partnership with Northwestern University's Digital Youth Network and Chicago Public Schools, shows where a student can learn locally (libraries, Boys and Girls Clubs, YMCAs) and awards digital badges collected in a virtual backpack, which he describes as gamification.
  • Adults retraining need pathways shorter and cheaper than college. Hecktman says a large part of the city cannot afford four years without income at 30-plus with a family, so he backs city colleges and boot camps such as i.c.stars, and is working with the Chicago Cook Workforce Partnership on a program to be called Chicago Codes.
  • Civic technologists turn open data into accountability tools. He defines them as people with technical skills who devote them to the public good, often beside a full-time job; Chicago publishes about 700 data sets, used for things like beach water quality and aldermen's votes. Microsoft sponsors Chi Hack Night, held every Tuesday in Braintree's offices at the Merchandise Mart with half the night a talk and half hacking, and the Chicago City Data Users Group; he is studying for a master's in data science to take part more directly.
Episode 560: Frank Gill on Azure SQL Database Managed Instances
  • Managed Instance fills the gap between Azure VMs and SQL Database. Gill says SQL Server on an Azure VM leaves you patching the OS and SQL and managing storage, while Azure SQL Database was too limited to migrate existing estates: one database only, so no cross-database queries or linked servers, and no SQL Server Agent for jobs or SSIS packages. Managed Instance has, in his words, 99.9% of SQL Server's features, with a few T-SQL differences and gaps being worked on, while backups and Windows and SQL patching are managed, allowing a lift-and-shift migration.
  • An old version's end of life is Microsoft's migration lever. With SQL Server 2008 reaching end of life on 9 July "of this year", workloads moved to Azure get three years of extended security support free (also true on SQL Database or a VM, he notes). He was told at last year's Summit to think in compatibility levels rather than versions, because Azure runs the newest code first; an old level (he thinks 105 is 2008 R2) lets you migrate now and raise it as the application is updated.
  • The premium tier builds in high availability and a readable secondary. Gill likens the General Purpose tier to Standard Edition and Business Critical to Enterprise; behind Business Critical is a four-node cluster with "availability group like" log shipping and one readable secondary for offloading reporting, all within one region, with a second instance in another region available at extra cost.
  • Use Managed Instance for existing multi-database estates, not new apps. He keeps Azure SQL Database for multi-tenant apps (one database per tenant from an ARM template) and new cloud applications. One client runs 16 cores and, he believes, 768 GB of memory at about 5% for most of the year until a year-end process maxes it out, and is considering splitting by client into several managed instances and scaling up only at peak.
  • Reused licences and long commitments slash Managed Instance's steep price. Gill calls the higher tiers extremely expensive but says you pay for managed infrastructure; reusing on-prem core licences lowers the hourly rate, and combined with a three-year commitment (one year is also offered) cuts the cost by 80%. His example is the largest size, 64 cores and he thinks 384 GB, at about $40,000 a month by the hour against $8,000 on the three-year hybrid deal; the VNet and subnet setup required in preview is now done by the portal wizard.
Episode 559: Lwin Maung on IoT Hardware Options
  • The cheapest IoT devices trade security for a dollar price. Maung's smallest example is an ESP8266-type board with Wi-Fi and a microcontroller, about $1 in bulk with about 4 MB for code, which can authenticate to Azure IoT Hub over MQTT but has only basic built-in security; it is mostly used for switches and lights. A larger board on the same chip takes the inputs and outputs from four or so to 32. IoT Hub, he explains, is the single endpoint that can take millions of devices' data into Microsoft's cloud.
  • Azure Sphere moves decisions onto the device when connectivity drops. He prices the Sphere board at about $80 now and about $10 a chip for manufacturers such as Samsung or LG; it runs a Linux kernel that Microsoft builds and updates through Azure, authenticates via Azure AD, and can run small containers for edge processing. Edge computing matters, he argues, because farms, streets and moving vehicles lack constant connection, so the device pre-processes and sends only curated data up.
  • Raspberry Pi is for prototyping, never a long-term deployment. At about $35 it is "wonderful" for trying things, but its microSD cards die over time and can be pulled and faked, and it has no TPM security module; a variant with a solid-state hat is more durable. It runs Windows 10 IoT Core, which Maung describes as a stripped-down Windows that is "virtually impenetrable if you do it right".
  • Production boards in the Pi's footprint run ordinary Windows code. He cites a Snapdragon 410C board (ARM, as in phones, with Wi-Fi, Bluetooth and solid-state storage, about $80, suited to outdoor billboards) and an Intel Atom quad-core board that runs warm but handles more edge computing; on Windows 10 IoT Core they run x86 executables, UWP, C# and .NET Core apps. Price tracks processor size only "coincidence-ish", he says: an Arduino is $5–10 and its chip about $1.
  • His most notable build monitors molten steel quality in real time. Maung describes a gateway sending data at 60 Hz from 20 or 30 devices at a steel mill in Europe, measuring steel quality as it is made, since grade decides whether it becomes high-value industrial steel or cheap rebar. For beginners he points to Microsoft's IoT developer guides, some of which he says he helped write.
Episode 558: Melanie Adcock on TechMonthChicago
  • Tech Month Chicago publicises existing events rather than curating new ones. Adcock modelled it on Chicago Artists Month, which ran for 20 years: one October calendar of events already happening, promoted to the general public. She counts 465 tech meetups in the Chicago area on meetup.com, over 100 co-working and innovation spaces, and over 100 STEM events a month in the Chicago Public Library system; the event is in its fourth year.
  • Free donated venues let anyone host an event. She says about 14 or 15 venues a year offer their space at no charge for Tech Month events, so someone who cannot afford a room can still give a talk or throw a party; her role is connecting and promoting, not speaking or providing space.
  • Community organisers get no coverage, so she broadcasts them herself. For three years she has volunteered a radio show on Lumpen Radio (105.5 FM WLPN, a non-commercial 501(c)(3) station, Fridays at 1 p.m., which she says she does twice a month), interviewing about 100 organisers of STEM, women in tech and other community events rather than CEOs. Outlets, she says, list the "top five" of some 400 monthly events; her examples are Carol Davids's Next Generation 911 conference at IIT and Marge Johnson's class at NEIU teaching senior citizens to write business plans, which Adcock is auditing.
  • Her interview archive will become a printed newspaper this October. She plans to transcribe the archives, cut them down with an AI tool and repeated editing, and print them as Tech Voice Chicago with the Lumpen Times, a print publication of about 25 years. Her case is that Chicago, the third-largest city, is on "nobody's radar" as a tech community while coverage chases corruption and money.
  • Self-funding has cost her money, so sponsorship starts this year. The radio work is volunteer and Tech Month is an LLC she hopes to turn at least partly into a non-profit foundation; she says she has lost money paying for it herself, and this year adds a sponsorship program with print, digital and experiential tracks and a revamped calendar website. Her day job is Tech Copy Authority, writing white papers and web copy for tech companies.
Episode 557: Brent Stineman on the Evolution of Serverless
  • Serverless means handing over code and letting the platform wire triggers. Stineman defines it as a managed sandbox: you publish code and the platform team creates the sandbox and fires it on triggers such as an HTTP request, a file landing in storage, a message on a queue or a schedule. Pricing runs from a dedicated 24x7 environment to paying per execution for the time it runs; Azure Functions is one such technology.
  • Each step up the stack trades control for less responsibility. He traces the path from physical servers to virtual machines (you still own the OS and installation), to platform as a service (no OS access but control over your application files), to serverless, where the sandbox allows almost nothing but you no longer wire up the triggers; snippets can run from one to a thousand lines.
  • Serverless is one more orchestrator, not an architecture. Stineman says people confuse orchestrators with architectural patterns: the old web server, Kubernetes for containers and Azure Service Fabric for processes all connect requests to code, and PaaS and serverless are further orchestrators offering different controls for building microservices.
  • If you care about the OS image, it is not serverless. Asked whether Kubernetes-managed containers count, he calls it an "almost religious war" and gives his own line: serverless means you have stopped caring about the underlying operating system. An application that needs things installed on the server is therefore probably a poor fit.
  • Start small instead of mandating serverless from hype. He warns against adopting it "because I read it in a magazine airplane" and suggests a first use such as hosting 20–30 lines of Python called from a data pipeline; Giard adds that it could then serve several pipelines and notes Azure Functions supports Python. Stineman says the platforms let this grow into a REST API composed of dozens of functions behind one interface.
Episode 557: Brent Stineman on the Evolution of Serverless
  • Serverless means handing over code; the platform owns the plumbing. Stineman defines it as a managed sandbox that runs a chunk of code when a trigger fires (an HTTP request, a file landing in storage, a message on a queue, or a schedule), with the Azure team responsible for the sandbox and the trigger wiring. Because the platform manages the sandbox, he says pricing can range from a dedicated environment up 24x7 to paying per execution for the time the code runs, chosen up front.
  • Each step down the stack trades control for less responsibility. He traces the path from physical servers to virtual machines (you keep the OS and the wiring), to platform as a service (no OS access, but control over your application's files), to serverless, where the sandbox allows almost nothing but you no longer wire up triggers; snippets can run from one to a thousand lines of code.
  • Serverless and Kubernetes are just different kinds of orchestrator. Stineman compares the old web server such as IIS, which connected requests to applications, with Kubernetes for containers and Azure Service Fabric for processes; he argues all of these, PaaS and serverless included, are orchestrators enabling microservice architectures, and that people confuse orchestrators with architectural patterns.
  • Code tied to its operating system is a poor serverless fit. Asked whether containers under Kubernetes count, he calls the question an "almost religious war" and gives his personal view: what makes serverless distinct is giving up caring about the underlying OS, so an application that needs things installed on the server is probably not right for it.
  • Start serverless with small pieces, not a mandate. Stineman warns against going serverless "because I read it in a magazine" and suggests beginning with something like 20–30 lines of Python that is too much to manage inside a data pipeline but needs to run somewhere, or is called from several pipelines; the host suggests Azure Functions, which supports Python. He adds that platforms let you grow into, for example, a REST API composed of dozens of functions behind one interface.
Episode 556: Bret Stateham on IoT Edge
  • IoT is an old concept rebranded around cloud platforms. Stateham, a software development engineer in Microsoft's commercial software engineering division, says embedded devices and distributed messaging have existed for decades; what is new is cloud services and an ecosystem of devices, protocols and frameworks that replace "roll your own" with using a platform's services, which he says simplifies and accelerates development.
  • IoT Edge is a gateway for devices that cannot reach IoT Hub. He says Azure IoT Hub, the core ingestion, device registry and two-way messaging service, requires TLS/SSL, which low-powered microcontrollers often lack the processing power for; other devices only speak Bluetooth, Zigbee or serial protocols such as CAN bus, Modbus, RS-485 or RS-232, are too remote, or lose connection temporarily, as in a tunnel. An Edge device is a Windows or Linux machine, as small as a Raspberry Pi, running Docker and the Edge runtime, that talks to devices in their own protocols and aggregates, filters or forwards their messages to IoT Hub.
  • Processing on the Edge cuts round-trip latency and cloud traffic. Stateham says analytics that would otherwise run in Azure Functions, Stream Analytics or machine learning can run on the Edge device, which matters where a slow response could damage the device or a person; it can also summarize or filter what goes to the cloud. Light, low-latency work stays local and heavier work goes to the cloud, and the hardware need only be as powerful as that processing requires.
  • The Edge runtime caches messages when connectivity breaks. Even for devices that could connect directly, he says routing through Edge means the runtime holds messages during an outage without any code being written, whereas a directly connected device leaves the developer to decide whether, how much and when to cache and resend.
  • Edge modules are any Docker container, deployed centrally from the cloud. He describes a security daemon (Linux) or service (Windows) plus two system containers, the Edge agent for orchestration and the Edge hub as a local IoT Hub, downloaded on first run so they are current. Your own modules can be in any language, using SDKs for C#, Node.js, Java, Python or C to join Edge messaging, published to a registry such as Azure Container Registry or Docker Hub; a cloud "deployment" then configures every matching Edge device, though the OS, Docker (or Moby) and the device's IoT Hub identity must still be put on it initially.
Episode 555: Kevin Griffin on What's New in SignalR
  • SignalR lagged behind .NET Core, and the stopgap only mostly worked. Griffin, who runs the consultancy SwiftKick, says the library was not ported when .NET Core arrived, so the team wrapped the old SignalR for ASP.NET Core; he deployed that in a client application and found it worked "well enough" but not as well as a native version. He says the full ASP.NET Core release came out "back in September last year" (the episode is recorded in January).
  • Azure SignalR Service removes the sticky-session constraint of self-hosting. Griffin says self-hosted SignalR on Azure with WebSockets is supposed to use sticky sessions, so a client behind a load balancer across, say, three nodes always hits one node, which defeats load balancing if that node lags or fails. With the hosted service all WebSocket traffic goes through Azure and is redirected to the application; Giard adds that this also hands a hard load-balancing problem to other engineers.
  • Streaming sends results in chunks and lets abandoned calls stop server-side. In Griffin's example of a call returning 100,000 rows, a traditional hub sends everything at once and keeps sending after the client disconnects, then throws; streaming lets the server start returning data before it is all loaded and cancel when the client does. He says SignalR also adapts the batch size to the connection, from one item at a time on a slow link to 10–20 on a fast one.
  • SignalR's value is the server pushing state changes to every open client. Griffin says his client work uses it for individual features rather than whole applications: for one client, a background process checks every couple of minutes for new forum private messages and notifies every open instance of the site. He says clients need not be web pages — a .NET console app or a Xamarin mobile app works too — and the server treats each simply as a connection.
  • The official documentation is the best place to start. Griffin calls Microsoft's docs the single best source; he has contributed to docs.microsoft.com and says the team reviews pull requests rigorously for accuracy, mostly checking that things are done "the Microsoft way". SignalR needs no separate SDK: he says it ships in the ASP.NET Core meta packages installed with Visual Studio's ASP.NET Core option.
Episode 554: Ondrej Balas on 2-Factor Authentication
  • Phishing tools now defeat code-based two-factor authentication. Balas says a convincing email (his example: a fake $5 Amazon credit for a late delivery) leads the victim to a lookalike site that relays the real credentials to the real site in the background. The real site then sends a real text code, which the victim types into the fake site, and the attacker logs in as them. He names a recently released tool by a Polish researcher, Modlishka, that automates this against any site it is pointed at.
  • Hardware security keys resist this, by Google's account. Balas presents Universal Two-Factor (U2F), a standard developed jointly by Google and Yubico, which makes USB keys, some of which also work over NFC with a phone. He reads a quote from an article saying Google has had "no reported or confirmed account takeovers" since adopting security keys, about a year and a half earlier. In his phone demo on Yubico's demo site, registering and logging in with a YubiKey Neo took a tap against the phone.
  • FIDO is the standards body; FIDO2 adds passwordless login. Balas says FIDO (Fast Identity Online) maintains CTAP1 and CTAP2, the client-to-authenticator protocols; CTAP1 is also called U2F, and the keys are loosely called FIDO keys. FIDO2 is newer and not yet widely adopted, and allows a "passwordless single factor" login with the key alone. FIDO says this can be more secure than SMS, and he expects keys with fingerprint readers so a stolen key is useless.
  • For a new app, he recommends authenticator-app one-time passwords. Balas says the common step up from SMS is a time-based one-time password from Google or Microsoft Authenticator, with device and server generating the same code every 30 seconds from a shared key. As of ASP.NET Core 2.1, this is built into the templates when you choose individual user accounts, so it runs almost out of the box.
  • Supporting keys yourself is more work; identity providers mostly do it already. For U2F/FIDO1 he points to the U2F.core .NET library on NuGet; there is a separate FIDO2 library he has not yet used. Apps that rely on IdentityServer or cloud services such as Auth0 can leave it to them, and he thinks most have implemented it. He recommends Scott Brady's blog, which has a FIDO2 primer and a working proof of concept.
Episode 553: Jennifer Marsman on AI for Earth
synopsis

Marsman presents AI for Earth as more than a grant program: Microsoft funds outside conservation work and also builds shared machine-learning tools, and the grantees' projects show what it pays for.

The program. Brad Smith announced $50 million over five years in December 2017, after a June start at $2 million, for agriculture, water, climate and biodiversity. Anyone may apply, and grants are reviewed quarterly. Marsman, the principal engineer, owns engineering, evangelism and education.

Engineering. With Microsoft Research, whose FarmBeats precision-agriculture work drew her in, the team builds models for needs common to many grantees, such as species classification and land cover mapping, that could become APIs.

Grantee projects. USC is piloting infrared drones that spot people at night and follow anyone who is not a known ranger. Wild Me's Wildbook tells individual animals apart by their markings, and an agent searches YouTube nightly, translates the posts and comments to ask where a sighting was. Marsman recalls a reply rate of at least about 50% and about 80% net-new data, and stresses that Microsoft only funds this work.

Where it is heading. Marsman calls the team "startup-y": two PMs and a PM lead, plus about four technical staff. Grants have moved from credit-card-backed Azure accounts to academic accounts, and now include cash and paid data labeling.

  • AI for Earth puts Microsoft's cloud and ML expertise toward conservation. Marsman says Microsoft president Brad Smith announced in Paris in December 2017 a commitment of $50 million over five years for data science and machine learning work on agriculture, water, climate change and biodiversity. The team had started that June with $2 million. Anyone can apply, from nonprofits and academics to large companies and individuals, and grants are reviewed every quarter.
  • The team builds generic APIs on top of funding grantees. Marsman, its principal engineer, owns engineering, evangelism and education. The engineering work, with Microsoft Research, spots needs common to many grantees and builds models that might become APIs, perhaps like a Cognitive Service: species classification from an image, and pixel-level land cover mapping from overhead imagery. Education meets grantees where they are, from nonprofits new to ML to ML postdocs who need help training at scale on Azure.
  • A University of Southern California grantee uses drones to spot poachers. Drones over large African conservancies send back a real-time infrared feed, because most poaching happens at night and body heat shows up. Any person who is not a known ranger or patroller is treated as a poacher and the drone follows them. Marsman says this is being piloted, with plans to deploy.
  • Wild Me identifies individual animals and mines YouTube for sightings. Its Wildbook platform tells individual animals apart by unique markings such as zebra stripes, whale shark spots and giraffe patterns. An agent searches YouTube every night at 10 p.m., translates posts into English with Microsoft Cognitive Services, extracts frames, and asks in a comment for the time and place of a sighting. From memory, Marsman puts the reply rate at "around 50% at least" and the share of net-new data at about 80%; Microsoft funds the work and does not do it.
  • Grants have widened beyond Azure credits. Early grants were Azure compute credits on sponsor accounts that needed a credit card, which Marsman disliked for grad students who might leave a machine running, so they moved to academic accounts. There are now also cash grants and data-labeling grants that pay people, including specialists who can recognise leaf blight, to label training data. The team is small: two PMs and a PM lead who run the grant program, plus about four researchers, data scientists and engineers.
Episode 552: Hilary Weaver-Robb on API and Front End Testing
  • Testing starts with the requirements, before code exists. Weaver-Robb, a software quality architect at Quicken Loans, says testers often hold the team together by catching vague requirements the business analyst handed off on the assumption that people would ask. A vague requirement can be built one way, tested another and expected a third, so she calls a "Three Amigos" meeting of the developer, the BA and the tester to clear up the assumptions.
  • Testers inform the release decision; they are not gatekeepers. She has been the test lead who held a release back, and says QA then gets blamed as the bottleneck while the CTO who releases anyway "gets to be the good guy". Her job is to give stakeholders the issues, concerns and her opinion on go or no-go, and let them decide.
  • Test within the sprint, as soon as code exists. She calls testing at the end "water fragile". The team's definition of done should include testing, which can take days to a week, not just finishing the code. With stories sized at about six to eight hours, she expects to start testing a day or two after the engineers start writing.
  • Write test automation in the production language and repository. That is her stated practice, and on her Node and React projects it has meant learning JavaScript after .NET. She uses Postman for manual API testing, and SuperTest with the Mocha framework for automated API tests. Knowing the application's overall architecture matters more to her than knowing every serverless implementation detail.
  • Automate the stable API before the changing UI. UI automation is slower to write and run, and fragile while the interface keeps changing, so she made the API tests the priority and runs them in the CI/CD pipeline on every merge. Front-end testing is manual for now, in Chrome only because the site is internal, using DevTools to watch how the front end talks to the API.
Episode 551: Jeremy Miller on Automated Testing in .NET Core
  • ASP.NET Core makes automated testing faster by running in process. Miller says the biggest win over ASP.NET Classic is spinning up the full application in memory from an ordinary xUnit test, with Kestrel or Core's TestServer, and running real HTTP requests through it, with no deploy to IIS or IIS Express. When a test fails he changes the code and reruns it, so the feedback cycle is much quicker. He explains that Kestrel is Core's primary web server; in production IIS still sits in front of it, handling permissions and some caching.
  • His Alba library strips the plumbing out of HTTP tests. TestServer is "very low level", he says, so Alba (version 3 released the morning of the interview) wraps it and sits on top of xUnit, NUnit or MSTest. A test posts a C# object serialized to JSON, asserts the status code (200), content-type header or a cookie, and reads the response back as a .NET type, so the test stays readable. Alba now supports only ASP.NET Core 2.1 and above, because every Core release has broken it and he could not keep backwards compatibility. He is the primary maintainer, with help from former colleague Joe McBride and others.
  • Core's modular middleware keeps cross-cutting concerns out of controllers. Miller contrasts Core, which he calls Hanselman's "right-sized Legos" and likens to open-source alternatives of five to ten years earlier, with tightly coupled Web Forms. Security or logging can be wrapped around the work as middleware or action filters, so tests can target exactly what they test and a change to security does not touch every controller method. Citing extreme programming's idea of reversibility, he argues that concerns which can be retrofitted later need not be designed up front, leaving the team free to build core business functionality first.
  • Miller has a long record of .NET open-source tools. He wrote StructureMap, which he calls the first production-ready IoC container for .NET, first live in 2004 and still in use. He has worked for about 10–12 years on Storyteller, a Cucumber-like tool for business-facing acceptance tests. He also wrote Marten, which uses PostgreSQL's JSON support as a document database with a LINQ provider.
Episode 550: Cassandra Faris on Personal Branding
  • Faris's jobs have come through community relationships, not resumes. After losing her most recent job she posted on social media and many people from the developer community sent leads. She says the only resume she sent in this search was to a large company that required one, and she is interviewing for developer relations and product evangelism roles. Earlier, after leaving a staffing company that did not support her community work, she was invited to a consulting company's CodeMash party by its president, a friend from organizing the Cloud Develop conference. She learned later that it was a secret interview: five candidates were let loose among developers to see how they interacted, which suited a job that meant working events.
  • Her personal brand began by accident and then became deliberate. About eight years ago, newer to tech, she set up a Twitter search for CodeMash, followed the people posting about it, read for a while, then started chatting and meeting them in person. She then unfollowed food bloggers and local businesses so her feed was mostly technology, and began answering people's questions and posting tips, which later became her talks. As a recruiter she says she hired about 10 people through Twitter, one of them a man from Toledo she had tweeted with for years and first met in the CodeMash hot tub.
  • Build a brand from your professional and personal interests. Her process is to list what you are interested in and good at professionally, plus personal hobbies, because a personal brand needs a personal element. Then find people who share them through LinkedIn groups or Twitter hashtags, lurk until you see a place to join in, and open conversations. She argues people let careers happen by chance while chasing the latest tech. Her advice boils down to "learn stuff, meet people, and help them".
  • She moved from learning in the community to giving back. Faris joined the community about 10 years ago to learn about technology such as cloud computing, then began speaking on "the human side of tech": personal branding, career paths, mental health, building a network, interviewing team members, and more communication talks. She is president of Dog Food Con, which she says grew from a free one-day event in a Microsoft office into a two-day, 450-person conference with about 90 talks. She added a human-skills track and more open-source talks as Microsoft has moved toward open source.
  • To join the developer community, start by showing up at user groups. Drawing on a lightning talk by a fellow organizer named Michael, she says user groups are small and everyone there shares your interest. At the end, thank the organizer, introduce yourself and offer to help, even just by sharing on social media or getting your employer to buy the pizza. Her first pointer for finding events is Meetup.com, which she says lists many in Columbus.
Episode 549: Jennifer Wadella on Gatsby
  • Gatsby is a static React site generator tuned for speed. Wadella, a JavaScript developer at a consulting company, compares it to Jekyll but says Gatsby has done a lot of work on performance and SEO, so a blog can come out "all green" on Lighthouse. "Static" here means not pulling from a database: her blog is a set of Markdown files. Gatsby can do more, she says, but that is where it excels, and Giard sets it against his own slow, XML-backed DasBlog site.
  • A site is built from a starter template and deployed by command. She describes running npm install, choosing one of Gatsby's templates (filterable by tech stack, which she likens to Yeoman), cloning that repo and editing it. To publish a post she writes a new Markdown file, runs the build command and a Lighthouse check, and deploys. The default deploy goes to GitHub Pages, which she explains as a special branch that acts as hosting. She stayed on Firebase hosting because her previous site already used it, and says CI such as Travis can be wired in.
  • Gatsby handles the front-end chores Lighthouse audits for. Lighthouse is Google's audit tool in Chrome's developer tools, scoring performance, accessibility, best practices and SEO and showing the reasons for each shortfall; she finds it gamified enough to run for fun. She says Gatsby's build is optimized to score green out of the box and its plugins handle image optimization and blur-up loading. It will not catch a missing alt tag, though.
  • She is weighing Gatsby for her nonprofit's teaching docs. Her nonprofit runs Coding and Cocktails, a class teaching adult women to code, and has used GitBook, which she says allows code samples and collapsible sections but is "not great". She expects a Gatsby doc site would be easier to maintain. She heard of Gatsby from someone on its team at a conference, moved her personal site to it while between jobs, and writes up her mistakes on her blog.
Episode 548: Jon Skeet on Versioning
  • Versioning shapes how we ship code, yet developers rarely think about it. Skeet, speaking at CodeMash on "Versioning 1.0.1", says what matters depends on what is versioned: a Git hash identifies the whole tree at a point in time, a book edition (the fourth edition of his C# in Depth) is part of its identifier, and NuGet packages follow semantic versioning. Network APIs differ: at Google Cloud Platform, a "v1" such as the Speech API's can still evolve through backward-compatible changes like a new enum value for an audio format, while a NuGet version or Git hash should always mean the same thing. He says he poses more questions than answers.
  • Semantic versioning exists to tell users what an upgrade implies. Within a minor version, Skeet says, you should be able to move between patches in either direction without recompiling. Within a major version you can move forward through minor versions, but not back, because they usually add features. A new major version means "all bets are off". Releasing a new major version every time would be technically safe but would throw away the communication, and for Noda Time 2 he deliberately broke things and wrote a migration guide.
  • "Compatible" is not well-defined; almost any public API change can break someone. His .NET examples: adding a string overload beside an int one makes a call passing C# 7's default literal ambiguous. An implicit conversion to both types does the same. Adding an instance method can silently take over a call that used to reach a client's extension method, and an overload taking string beside one taking object changes which one string arguments call. Authors must decide which of these unlikely cases they treat as out of scope.
  • The diamond dependency problem is real and .NET's highest-version rule is unsafe. In his example, ASP.NET Core depends indirectly on Json.NET 12 while NodaTime.Serialization.JsonNet depends on Json.NET 11, and .NET simply loads the highest. He says that works only because Json.NET's James Newton-King has been careful; with Noda Time 1 and 2 it would not. He suggests the .NET team could load separate copies only when major versions differ, and let a project mark a dependency as a private implementation detail the compiler stops it exposing. He concedes this is complex and has performance costs.
  • Skeet wants tooling that recommends the next version number. A library would declare a checklist of what it counts as breaking, and tools would flag changes and suggest a major, minor or patch bump, which other tools could also read. He ties this to Noda Time's philosophy: don't pretend a hard choice doesn't exist, put it in front of the developer with documentation and make it easy to express. Common sense differs between people, he says, so judgment calls remain.
Episode 547: Geisa Faustino on Teaching
  • Faustino taught complete beginners by learning concepts as challenges required. A former university math professor who joined Microsoft in March of the year of recording, she mentored a table at an OpenHack in Dubai whose members knew no Python, no machine learning and no coding. She offered them a choice: drop the challenges and learn the basics, or work both in parallel. They started on the challenges and stopped to learn a concept whenever they got stuck, such as how a computer represents an image, which the first image-processing challenge needed. She says they finished three or four challenges in three days and emailed afterwards asking about free courses.
  • People learn when they come wanting to, not to confirm a preconception. She says some people ask questions while already holding a fixed view they do not want to change; Giard glosses this as wanting validation, and she agrees. OpenHack attendees are usually there to learn, she says, whereas some university students attend because their parents force them. The university also has a set program and far more time, four to six months against three days.
  • Brazilian universities teach math too theoretically, and should teach it applied. She taught calculus, analytical geometry and differential equations, and says she was frustrated as an undergraduate at computing integrals and derivatives without knowing what they were for. The point clicked in her master's, when she learned that the second derivative can detect edges in an image. She calls this a problem in Brazil specifically, where degrees of three or four years offer only theoretical classes. Giard raised the general difficulty of teaching math without a practical application.
Episode 546: Jackie Becker on Mixed Reality in the Real World
  • Overlaying MRI models on the patient targets missed cancerous tissue. Becker says her team built a project with the Stanford School of Medicine aimed at a 40% rate of second lumpectomies: markers placed at MRI time let the surgeon, wearing a mixed reality headset, pin a 3D model of the scan onto the patient. She reports a follow-up research study found it "enormously successful" and that Stanford is considering wider rollout; the paper is on the school's virtual reality research site.
  • Augmented reality cut a carmaker's paint inspection from days to hours. Becker says Toyota's old method for measuring paint and clear-coat thickness took two people two full days, holding a sheet with about 500 holes against the car and laser scanning it; her team's HoloLens app projects the points and runs the analysis, so one person does it in four hours.
  • Seeing instructions in place beats recalling them from a diagram. Becker gives the same reasoning for surgery and for a project her team did wiring circuitry for Boeing, where it must be 100% correct. She also cites Ford prototyping cars as holograms instead of costly physical models, and another car company training mechanics on 3D brake parts.
  • Her favourite project became a shipping product for the partner. At a hackathon Becker worked with Upskill on a warehouse app that recognizes an object and pulls up its schematics, assembly instructions and other workers' notes, using object and text recognition; she says it launched a few months later and is now used by other companies.
  • Free online tutorials are enough to start building mixed reality. Becker points to Microsoft's Mixed Reality Academy, whose tutorials on the mixed reality toolkit, with integration into cognitive services, walk a newcomer through Unity even with no prior experience. Unity and Visual Studio are both free, so there is no upfront cost, and some development experience helps but is not required.
Episode 545: Isaac Bayoh on How Technology Impacts Developing Countries
  • Developing countries' data sits on undigitized paper. Bayoh, a Microsoft cloud solution architect from Côte d'Ivoire, says OCR now lets those records be studied for trends and past mistakes. He advises an NGO with World Bank funding to build a data center there, and says it had to be designed for voice, text and OCR data rather than structured tables.
  • Pay-per-use cloud makes technology a great equalizer. Bayoh says $100 buys an Azure subscription and a cheap machine can rent a server by the minute or hour. He contrasts his engineering college, where about 2,000 students shared roughly five library computers; Giard adds that home PCs began the shift away from needing a mainframe employer.
  • Financial inclusion there means mobile money, not banking. For West Africa, Bayoh says only 14% of Africa's population has a bank relationship against the "60s, 70s" percent in the US, while nearly everyone has a phone. Money is held against a phone number, moves between carriers, and the operator takes a commission with no bank involved.
  • Technology cuts corruption but will destroy jobs in Africa. Bayoh says visibility hurts those in power, citing a proposed WhatsApp and Facebook Messenger tax pushed back after public outcry online. He argues lost jobs will go to Asia rather than shift, because the education system cannot retrain people fast enough; education, then health, are "the next battle".
  • A technology dollar does more in Africa than in the US. Bayoh cites an unnamed study putting the return at 12 times, and says existing technology can simply be lifted and shifted there. His example is remote doctors reviewing scans such as MRIs, given the shortage of specialists.
Episode 544: Elizabeth Graham on Azure Logic Apps
  • Logic Apps' main advantage over custom code is maintained connectors. Graham, a Microsoft global black belt whose background is integration, describes Logic Apps as hosted system integration between on-premises, Azure and external systems such as Salesforce or Dynamics 365. With a connector a Cosmos DB link takes a few keystrokes and no connection-string setup, and if the Cosmos DB interface changes the Logic Apps team updates the connector rather than you rewriting your code.
  • A logic app is one trigger followed by a series of actions. Triggers she lists are an HTTP request, a schedule (every three minutes, 15 seconds, configurable), polling a Service Bus queue, storage or an on-premises SQL Server query or stored procedure, with Event Grid able to notify the app instead of waiting on the poll. Actions cover message transformation, schema validation, conditions and loops; a for-each runs up to 20 tasks in parallel by default, which can be set to one at a time where order matters.
  • Long-running workflows cost nothing while they wait. Graham says a workflow can send out a request such as an approval email and resume when the response arrives up to 90 days later. Billing is only for the triggers and actions that run, so whether the waiting instance stays in memory does not matter to cost.
  • Per-action pricing makes loops the thing to watch. Each trigger and action costs a small fraction of a cent, so every loop iteration is a billed action; for 200 items she first says it could be $2, then "probably more like 20 cents". The SAP and MSMQ enterprise connectors cost more, and EDI needs an integration account, holding trading partners and their maps, at an additional charge.
  • Portal-built logic apps can still go into source control. Besides the portal there is a Visual Studio designer extension and a newly released VS Code extension that edits only the JSON definition. For portal work, a template tool used with ARMClient exports the logic app as an ARM template and strips out connection keys as parameters, so secrets stay out of the repo and the template deploys to test or production; she points beginners to the Azure docs, the Integrate conference videos hosted by partner BizTalk360, and her team's "serverless ninjas" workshop under the Coding with Sasquatch GitHub.
Episode 543: Alex Mang on Azure Durable Functions
  • Durable Functions answers the complaint that Functions is only for small tasks. Mang, speaking at Ignite on serverless in production, says plain Azure Functions can split a large data set into chunks and process them in parallel, but struggles to put the results back together. Durable Functions handles that fan-out/fan-in pattern, along with complex microservice scenarios.
  • Waiting on a human breaks plain Functions financially. Because a function is billed by execution and its duration, waiting days for someone to click an approval link would waste money. A durable orchestrator can wait for a reply to an email or a button on an admin site before continuing, which Mang wants for disaster and recovery cases where automation usually works but an approval step is still needed.
  • His team used Logic Apps to give every build a brand-new agent. For one customer that wanted Azure DevOps (formerly VSTS) agents available 24/7 but never reused, each build queues an agentless phase that sends a Service Bus message; a logic app picks it up and runs an ARM template deployment that creates a new Azure VM, which registers itself as an agent in the queue. Mang ties this to treating servers "like cattle rather than pets": if staff must be sent home for Patch Tuesday reboots, the servers are being treated as pets.
  • The difference between Durable Functions and Functions is state. Mang says Functions are stateless, event-driven pieces of execution; in Durable Functions the activities remain stateless functions while the context across multiple executions lives in the durable function. Giard's gloss, which Mang calls "a fabulous definition", is that durable functions can sleep, wake and remember what they were waiting for.
Episode 542: Jim Wooley on Static Analyzers and Roslyn
  • Static analysis catches runtime problems while the developer is typing. Wooley says it works even on code that will not compile, finding code smells, unused variables and likely leaks, such as an IDisposable never disposed through a using clause. Domain-specific analyzers can check, say, that a string passed to a URI constructor is valid before it throws at runtime, moving fixes earlier.
  • Roslyn made the compiler fast enough and open enough for analyzers. The rewrite of the C# and VB compilers began around 2010 and took about five years, the hard parts being performance while developers type and extensibility, so analyzers can be added as a NuGet package without rebuilding the compiler. Roslyn parses the code into a syntax tree that is immutable for performance; an analyzer flags a possible problem and a code fix also offers the repair, behind Visual Studio's light bulbs.
  • Most developers should consume analyzers rather than write them. Writing one takes a lot of work over a large surface area; Wooley joined analyzer projects to force himself to learn, and says it taught him the language far better. He recalls FxCop around 2005 showing at most 2,000 errors, with teams clearing them only to get 2,000 more and uninstalling; StyleCop has since been rewritten on Roslyn by Sam Harwell, who was hired on the strength of it.
  • Put style rules in .editorconfig so the whole team gets them. Analyzers such as StyleCop, the .NET analyzers and Code Cracker can disagree with each other or with you (var against explicit types). Visual Studio's own code-style settings roam with your install but not to teammates, while an .editorconfig checked into the repo applies to everyone and also covers JavaScript, XML and JSON, for example two-space indents in XML and four in C#.
  • Code Cracker is an open-source set of about 100 analyzers. Wooley works on it; examples are detecting empty catch blocks with up to three suggested fixes and reordering a class's members in one click. It does not honor regions, which he offers as a contribution for someone learning, since a small change teaches more than reading code, and analyzers themselves teach by explaining the preferred pattern, such as proper dispose implementation.
Episode 541: JD Marymee on Blockchain
  • A blockchain builds trust among parties who don't trust each other. Marymee defines it as a replicated, distributed ledger running on untrusted hardware: where you trust a bank for its name and federal oversight, partners on a blockchain each hold a stake in the shared database, so if one forges an entry the others see it.
  • Trading partners can use a shared ledger to speed up reconciliation. His public case is Webjet, which he likens to an Expedia for Australasia: an online agency, the hotel and other partners normally reconcile across separate databases, which "take forever", and a ledger they all trust replaces that.
  • A private chain can attest licensed 3D-printed parts. For an unnamed customer, a vehicle part broken in the field could be printed on site, with the chain recording that the design was paid for, that it was printed, and the print conditions (temperature, tolerances) in case the part fails. In his hypothetical Department of Defense case, four branches plus the licensors make five actors, who would run their own nodes as a private chain.
  • A blockchain one party controls, or keeps secret, is a database. Marymee says customers who ask for blockchain because it is fashionable, then want to run it alone or encrypt it, want "the antithesis of a blockchain": its values are value transfer, attestation and transparency. Where details must stay private, his teams put only metadata on the chain and keep the details off chain with a reference.
  • Consensus is moving from proof of work to proof of stake. In proof of work, Bitcoin miners race on GPUs or ASICs to produce a hash and win Bitcoin, and public chains depend on no one holding a majority of nodes; Bitcoin is capped at about 21 million coins, after which, he says, "we'll see what happens". Proof of stake is like posting a bond, say $1 million, that a partner forfeits for forging, and Ethereum instead pays nodes "gas" in ether for executing transactions.
Episode 540: Bill Wagner on Nullable Reference Types
  • C# 8 will treat reference types as non-nullable by default. Wagner, who writes the C# documentation for docs.microsoft.com, says the compiler will statically analyse the code and assume any reference type (string, List of T, any class) is never meant to be null, so null reference exceptions are caught at compile time; a nullable one is declared with a question mark, as in string?. C# was then at 7.3.
  • Turning it on produces warnings, not errors, because it breaks code. It is switched on per project or per file. Warnings mark a non-nullable variable the compiler cannot verify is never null, or a nullable one used without a null check, so Microsoft avoids "here's a thousand errors" after a compiler upgrade.
  • The team reused the question-mark syntax so adoption would be easy. The alternative, Wagner says, was three kinds of reference type (today's, never-null and maybe-null), which would have slowed adoption because nobody would sweep their code to change them. Code that already null-checks properly should compile mostly clean. In Mads's person example, first and last name are non-nullable and middle name is string?, which moves the warnings to where middle name is used.
  • The feature can be tried before C# 8 ships, which has no date. A CTP adds the nullable feature now, and Wagner expects public previews of Visual Studio 16 to carry a C# 8 preview, also undated; he advises trying it early to see what needs fixing before it is released.
Episode 539: Brady Gaster on Marketing Azure
  • Gaster left engineering for Azure marketing to get back to the community. He moved from the ASP.NET and .NET team, then documentation, to the Azure marketing demo team, which builds the demos for Microsoft's keynotes and general sessions, including Scott Guthrie's keynotes and parts of the Ignite keynote.
  • Marketing shows how products work together, closer to customers' reality. Engineering goes deep on one topic, he says; on the demo team he looks across products (Functions with storage, adding AI) in the way he thinks customers actually have to.
  • Each demo is a storyline built around the new announcements. Months ahead, the team asks the lead speaker (for Scott Hanselman's Ignite general session, Hanselman plus five speakers) what to show and how it should feel, then works as a trio of the demo team, product marketing and the product group, prioritising what is new. For Connect 2017 they invented a hotel chain, Smart Hotel 360, with a Xamarin app that unlocks a door and Functions handling data.
  • Long-running steps are pre-baked, in what the team calls the "cookie show". Creating a VM takes five to ten minutes, so the presenter starts the process, then switches to one already made: "a few minutes later, here it is". Machines and web servers are also warmed up in advance so the first request is not slow.
  • Every demo machine has a live backup behind a KVM switch. Hanselman's session needed at least 12 computers, a primary and a backup for each of six presenters; Gaster saw three or four 40-foot tables double-stacked with machines, and stages use switches of up to 24 ports, so a presenter whose machine fails presses a button and carries on. He says his past job putting on concerts prepared him for Microsoft more than anything else.
Episode 538 Jeff Fritz on Live Streaming Coding
  • Live coding replaces slow feedback with instant questions from viewers. Fritz codes live on Twitch in a "Bob Ross or Julia Child" style, but where TV cooks offered a recipe by stamped envelope weeks later, his viewers act as "pair programmers", flagging a missing parenthesis or asking why he did something. He aims it at learners who lack the money for books, training or conferences: C# and its tools are free, "so let's make learning it free, too".
  • One ongoing open-source project works better than a new build each week. Building something different each week was hard to sustain and lost viewers, so since March 2018 he has built Core Wiki, a wiki/CMS in ASP.NET Core that runs on Windows, Mac and Linux, on GitHub under csharpfritz. Viewers send pull requests he reviews on air; at one viewer's request he added a deploy-to-Azure button and an Azure DevOps build and release pipeline.
  • The setup is cheap; the main cost is a good video card. He streams through Twitch, whose transcoding is free, and names YouTube live and Microsoft's Mixer as alternatives; Azure Media Services would let you build your own service, but you pay for the networking. He composes scenes in the open-source OBS, switches them and plays sounds with a Stream Deck of 15 programmable LED keys, and has moved from a Logitech C920 webcam to a Razer Kiyo.
  • He moderates chat with Twitch's tools plus a bot of his own. The bot follows posted links and sends posted images to Cognitive Services to detect adult content, and it can ban an offender for five minutes; he invites Giard to help add Cognitive Services features to it.
  • He streams four mornings a week and archives each show to YouTube. At recording he had been streaming since November and had reached show 137, on Tuesday, Thursday, Friday and Saturday at 10 a.m. Eastern. He ran a month of .NET on a Mac in May and planned October 2018 as a month of .NET on Linux ("Ubuntu-ber"), with more F# to come.
Episode 537: Robert Green on DevOps
  • DevOps is the ability to ship faster, at a pace you choose. Green, a senior program manager in Microsoft's commercial software engineering group, says it is not about shipping five times a day or weekly: it is about delivering value to users more quickly than one- to three-year release cycles do. Enterprise desktop users might want updates every two or three weeks, weekly in a busy season and monthly otherwise; he gets about four updates a week to the internal build of Outlook.
  • What changed was recognising the practices, plus tools that make them easy. The idea always existed, he says, but now there is tooling: TFS and its online version, renamed from Visual Studio Online to Visual Studio Team Services to Azure DevOps Services, or third-party and open-source tools such as Jenkins, mixed and matched as needed.
  • Continuous integration catches code that works alone but breaks together. A server builds the whole codebase on check-in and runs everyone's unit tests, not just your own, so a broken integration shows up right away and source control shows who made the change. He says CI can be set up in Azure DevOps or VSTS in 10 minutes.
  • Continuous deployment automates releases, with gates between environments. The build goes to testing and on to production once the test team signs off, and the developer can check in and leave without staying for build or deployment. More advanced practice rolls a release out to 5% or 10% of users first, for web, services and mobile apps.
  • Start with source control, then CI, then CD, then smaller releases. Any one step makes a team better, Green says, and from there practices can be adopted incrementally: release one bug fix, then a feature plus a fix, until the cycle drops from three months to three weeks or a week. Too many updates, he argues, is a better problem than too few and too slow; the Azure DevOps docs have walkthroughs for setting up CI/CD.
Episode 536: Hao Luo on Rust
  • Rust is meant to replace C and C++ without their memory headaches. Luo, a senior software engineer in Microsoft's commercial software engineering org who is still learning the language, says Rust was created by Mozilla about three or four years earlier and targets pointer and memory management; he cites the newest Firefox, built on Rust, as proof it works at the scale of millions of users.
  • Rust is designed for developers, not just for the system. Package management was planned in before the first release, unlike NPM, which came after Node, and C and C++ have no standard package manager. Errors in the terminal point to the exact character, and a VS Code extension gives syntax highlighting and errors as you go.
  • Ownership is Rust's novel idea and its steepest learning curve. You specify which scope owns a variable, and its memory is freed immediately when that scope ends, which sits between garbage collection and manual memory management; lifetimes can be set per function parameter. It is statically typed, has traits rather than classes, encourages a functional style, and makes immutability the easier path. Luo says it is "really not similar" to JavaScript or PHP, so come to it without preconceptions.
  • Rust can be imported into JavaScript, through WebAssembly, for speed. With the Parcel bundler you can import a function straight from a .rs file, and Parcel compiles it to WebAssembly; the reason to do so, as he understands it, is performance, such as matrix multiplication in a tight loop. He learned from the official documentation, "The Book", and the podcast New Rustacean.
  • His bot library Wolf replaces chains of if statements with declarations. He and a teammate, Kevin, built Bot Builder Wolf: you declare the "slots" to collect, such as name, age and workplace, and when a user gives three of five in one sentence, Wolf asks only for what is missing, rather than the developer coding every branch.
Episode 535: Rajasa Savant on Serverless Azure
  • Serverless means the servers are hidden from you, not absent. Savant, a Microsoft developer in Commercial Software Engineering who works mostly on serverless and sometimes IoT, says Azure handles where code is deployed, the maintenance and updates, and moving it between VMs, so the developer manages only their own code.
  • Azure Functions bindings remove the integration code, including authentication. A function is invoked by a trigger (a timer, an event hub, an HTTP request, a queue message, blob storage) and its output goes through a binding. For a blob storage output binding you supply only the container, the path and a connection string, and the binding handles authentication; she compares Functions with AWS Lambda.
  • Logic Apps is an executable flowchart of drag-and-drop connectors. A ticket workflow that sends emails is built by dropping in an Outlook connector and filling in its address and subject, with no code. She says there are more than 200 connectors, including third-party ones such as Twitter and Facebook, as well as Databricks and Azure Storage.
  • Event Grid routes notifications between services when something happens. She calls it a fairly new offering: a queuing system for events, used to notify one microservice when an event occurs on another.
  • The three combine into one end-to-end messaging pipeline. In her example a message goes into Event Grid, which triggers a function that preprocesses it and sends it through Event Hubs to a second function for sentiment analysis with Cognitive Services; bindings then store the result in Cosmos DB or Azure SQL. Logic Apps can orchestrate the whole flow and send an email when a conversation starts.
Episode 534: Raymond Comvalius on Transitioning to the Modern Workplace with Windows 10
  • Large companies could not finish each Windows 10 upgrade within its support window. Comvalius, an independent consultant and trainer for 20 years, says each version had 18 months of support, and testing, building and deploying across thousands of seats can take 18 months, so the next version is out before rollout ends. Microsoft announced a change to the enterprise and education support period the month before; the transcript's new figure, "13 months", contradicts his point and is unreliable. The version with 10 years of support, the long-term servicing channel, is not meant to run Office, so most companies cannot use it.
  • Desktop Analytics predicts which applications will break before an upgrade. An agent on each client sends data to the company's Azure tenant, and Microsoft's analysis, which in the new version also covers custom in-house apps by the APIs they use, leaves at most about 10% of applications to test by hand. The product is Windows Analytics renamed as Desktop Analytics.
  • Applications that run on the older Windows are now guaranteed to run. Microsoft guarantees that an application running on Windows 7 will run on Windows 10; if one does not, it can be submitted to Microsoft, which will create the fix; Windows 10 keeps a large database of compatibility shims, such as those from the Vista era, that trick old apps into working.
  • Microsoft says to stop building images and deploy with Autopilot. A device is registered in the cloud and, the first time it boots online, it finds its profile, enrolls in Intune and pulls down the company's apps and settings. New devices can then ship straight to users, even at home, freeing IT staff, though cloud licences are required.
  • Intune can finally deploy ordinary Win32 applications. Comvalius calls this the main restriction of Microsoft's cloud device management until now; it is "not perfect, but it's moving in the right direction".
Episode 533: Jeffrey Palermo on DevOps for Mid-Market Companies
  • Enterprise DevOps messaging misses mid-market teams, which have no dev/ops divide. Palermo is CEO and chief architect of Clear Measure in Austin, which sells DevOps architecture and automation to Microsoft-platform teams. He says the interpersonal dev-and-ops changes fit Fortune 500 firms, but at mid-market companies (about $500 million to $1 billion in revenue, often in warehousing, logistics or insurance, with developers reporting to a CFO) the developers already get the phone call when something goes down in the middle of the night.
  • Mid-market companies can adopt a simpler pipeline faster than enterprises. The template is the same, but with less legacy technology and inertia they can be more nimble, while in an enterprise each step can take a month or more to configure.
  • One build script runs locally and in CI; deployment uses packages. Move source control to Git, write a private build script developers run locally, and have the continuous integration build in Azure Repos run the same script plus extra tests. It packages the components into NuGet (Azure Artifacts), and the Azure Pipelines release hub deploys them across environments. For virtual machines or complex deployments he adds Octopus Deploy, and for significant databases Redgate's SQL change tools.
  • Stream all application logs to one place and query them. Beyond exception alerts, this lets a team know what the application is actually doing, so it can approach a user about a problem before the user reports it.
  • Microsoft-built systems belong in Azure. Palermo argues a system built on Microsoft technologies "fits like a glove" there; it can run on AWS, but with much more work yourself.
Episode 532: Christos Matskas on Visual Studio for Mac
  • Visual Studio for Mac is Xamarin Studio, extended to cross-platform workloads. Matskas, its new product marketing manager, says it grew from the tooling Microsoft acquired with Xamarin two years earlier. It now adds .NET Core, ASP.NET Core and Azure Functions (develop, debug and deploy to Azure), with ASP.NET Core/.NET Core and Xamarin the biggest workloads. Windows-only workloads such as WPF, which rely on native Windows APIs, are not available.
  • Every .NET developer should also be a mobile developer. Matskas argues that existing .NET skills carry over to mobile apps through Xamarin, for enterprises or pet projects. Xamarin Forms gives WinForms and WebForms veterans a familiar experience: one control that renders as the native control on each platform.
  • One solution can be worked on from Windows and Mac. A UWP project in the solution cannot be edited on the Mac, but the shared code can, and pushing views into shared components can bring code reuse up to 90%, leaving a thin layer of UI tweaks. VS for Mac also does watchOS and Apple TV apps and .NET Standard libraries.
  • It matches Visual Studio for Windows on most tooling, except extensions. It is a full IDE using Roslyn for IntelliSense, unlike the text-editor-plus-extensions VS Code, and supports deployment to Azure, Git, TFVC through an extension, and the same Community (free), Pro and Enterprise licences under the same login. It has far fewer extensions, which Matskas concedes is a limitation for some users.
  • It is the default IDE for Unity game developers. Scenes are built in Unity's graphical editor, and when C# scripts need editing or debugging the work moves to Visual Studio for Mac, which is integrated with Unity's editor.