Souk's Notes - Unofficial Summaries

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

Technology and FriendsEpisode 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.
Scott HanselmanA Static Website as cheaply as possible with Azure Storage, Azure CDN, HTTPS and a Custom Domain
  • Static files belong in blob storage, not a dynamic web host. Hanselman, responding to people on Twitter who found the tutorial confusing, contrasts an Azure App Service at "eight nine bucks" (later "20 or 30 or 40 dollars") with "a buck or 20 cents" for a storage account; the free Azure signup gives 12 months of services including five gigs of blob storage, which he expects to be "darn near free".
  • The static-website endpoint, not the blob URL, serves the site. He creates a storage account in its own resource group (so the whole thing can be deleted later), turns on the static website setting with index.html as the default document, and uploads into the $web container. He first hit the plain blob URL and got an error before noticing the separate web.core address ("RTFM my friends"); setting the container's blob access level back to private still left the static endpoint working, so changing public access is not required.
  • Azure CDN supplies the custom domain and a free certificate. He adds a CDN endpoint with a custom origin pointed at the static-website host, points a www CNAME at the azureedge.net name, and enables CDN-managed HTTPS, which registers and renews the certificate at no extra charge. Validation is quoted at up to two hours; after about 10 minutes the custom domain served the site but still showed a not-secure warning because the certificate had not yet been issued.
  • Uploads can be manual or automated through a site generator. He drags files in with the free, cross-platform Azure Storage Explorer and then purges the CDN; alternatives he names are the Azure CLI's blob upload command, or Azure DevOps or GitHub Actions running a static site generator such as Jekyll and pushing the generated HTML to storage, enough to run a whole blog this way.
Crosstalk SolutionsUbiquiti UAP-IW-HD
  • Choose the In-Wall HD for busy rooms or extra ports. The host recommends the UAP-IW-HD ($179 MSRP) for high-density spaces such as conference rooms, restaurants and hotel lobbies, or where more wired ports are needed. For an ordinary hotel room the standard In-Wall or In-Wall Pro is enough. He would pick the HD over the Pro anyway, since it is 4x4 MU-MIMO against 3x3 and $20 cheaper. Crosstalk offers discounts on Ubiquiti orders over about $2,000.
  • The HD outclasses the other in-wall models in streams and ports. Per Ubiquiti's datasheet it is 802.11ac Wave 2: 2x2 at 300 Mbps on 2.4 GHz, 4x4 MU-MIMO at 1,733 Mbps on 5 GHz. It claims 940 Mbps single-client and 440 Mbps 10-client aggregate throughput, against 600 and 130 Mbps for the UAP-AC-Pro. It has four gigabit ports, one passing PoE through, while the In-Wall (2x2) and In-Wall Pro (3x3) have two. It is indoor-only.
  • Disable the spare wall ports or put them on isolated VLANs. Port VLANs only become selectable after enabling the port VLAN option on the device, and the default "All" profile isn't offered, so specific or custom profiles are needed. In a hotel, the host would put the PoE-out port on the VoIP network and disable the rest or make them guest-only. In his test, the AP and a Yealink phone powered through it drew 7.7 W together.
  • Installation is simple and tamper-resistant. The clamshell design fits any single-gang box and comes with Torx security screws, plus ordinary screws as an alternative. Adoption and the firmware upgrade on UniFi controller 5.10.24 took about nine minutes. The back of the AP read up to 122°F, but about 97°F through the case.
  • One AP in a far corner won't cover a house. In the host's NetSpot Pro survey, which he calls anecdotal, the AP was placed in a basement corner. It covered nearby rooms well but left the far side, the garage and most of the yard weak or spotty. He takes this as the case for central AP placement, or for adding a second AP.
GCastGCast 57: Azure Data Factory GitHub Deployment
  • Data Factory assets are code, so they belong in source control. Giard says that although Azure Data Factory work is done mostly in the browser through a graphical interface, the pipelines, data sets, data flows and linked services are stored as JSON configuration. That lets them go into a repository for continuous integration and deployment, syncing with other developers, and rollback.
  • The Setup Code Repository button offers Azure DevOps or GitHub. At recording those were the only two options; Giard picks GitHub and enters his account name, which loads a drop-down of his repositories. The target repository cannot be empty, so he creates a new public one with a README file before linking it. The Data Factory itself was set up in advance, in episode 18.
  • Linking asks for a branch, a folder and whether to import. He uses the only branch, master, as the collaboration branch and the root folder. A subfolder lets several Data Factory services share one repository, each in its own folder. He chooses to import the existing resources so that a pipeline he had already built is pushed in, and leaves the other settings at their defaults.
  • Once linked, later changes are pushed to GitHub automatically. After he renames something in a pipeline and saves and publishes it, the repository shows that pipeline updated 25 seconds earlier, with the change visible in its history.
  • Use separate branches to avoid colliding with production or colleagues. Giard suggests committing to your own branch rather than straight to master, then merging later by hand or by some automatic process. This keeps a history of every change and lets you roll back.
Technology and FriendsEpisode 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.
GCastGCast 56: Azure Web App Deployment Slots
  • Deploying straight from GitHub to production is risky. Building on the previous episode's GitHub-to-web-app integration, Giard warns that a mistake pushed to the repository reaches users at once. A deployment slot is a staging or test area that testers can see and the public cannot, running on essentially the same hardware, platform and infrastructure as production. In his view that makes it a much more accurate test.
  • A slot is added from the web app and gets its own URL. By default the app has only the production slot. He adds one called "staging", and notes you can name it "testing" or create several. The slot has its own overview page and a URL like production's with "-staging" appended to the app name.
  • The slot is wired to GitHub through its own deployment center. He repeats the previous episode's steps against the staging slot, choosing his GitHub account, the demo repository and the master branch. The deployment log shows the build steps and the commit message, and ends in success. The staging URL then serves the repository's basic ASP.NET app while production still shows the default page.
  • Swap redirects traffic rather than copying files, so it is fast. Giard explains that swap only changes which slot a gateway in front of the app points at as production, with nothing copied back and forth. After the swap the tested code is in production, and the old production code sits in staging as a backup. You can swap back if the release goes wrong.
GCastGCast 55: Web App GitHub Deployment
  • The web app's Deployment Center links it to source control. The sources offered were Azure Repos, GitHub, Bitbucket and a local Git repository. Giard picks GitHub for a near-template ASP.NET app.
  • Choose between simple push-to-deploy and a fuller build pipeline. The simple option deploys every push straight to the web app, and that is the one Giard uses. He says Azure Pipelines is for when you need more control, such as running unit tests first. He then gives the GitHub account (organization), the repository and the branch to deploy, here master, and clicks Finish.
  • Connecting the two triggered the first deployment on its own. About a minute later, with nothing else done, the Deployment Center detected that GitHub held code the web app lacked. It went from pending to running to success, auto-refreshing as it went, and the site then served the repository's code instead of the default Azure page.
  • Every later push redeploys without touching Azure. Giard edits a heading, pushes with git push origin master, and a new deployment starts automatically. Refreshing the live site shows the changed text.
GCastGCast 54: Azure Storage Replication
  • Locally redundant storage keeps three synchronous copies in one data center. Giard says every write to an Azure storage account produces three copies, written atomically so no success response returns until all three are on disk; only one is live, and another is promoted transparently if it fails. The copies sit in different fault zones (no shared hardware such as a power supply) and different update domains (so upgrade reboots never hit two at once). He calls it the cheapest option.
  • Geo-redundant storage adds three asynchronous copies in another region. The three atomic in-region copies stay, and three more are written asynchronously to a completely different region, so a disaster that destroys the primary data center still leaves a copy that can be promoted to live.
  • Read-access geo-redundant storage makes one secondary-region copy readable. Otherwise identical to geo-redundant, it lets users read from a copy in the secondary region as well as the primary; Giard says serving reads from two copies can make reads twice as fast.
  • Zone-redundant storage spreads the three in-region copies across data centers. Still three copies in one region, but because most regions have several data centers, a copy may go to a second one that Giard says can be hundreds of miles from the first, guarding against a natural disaster wiping out one site.
  • Replication can be changed after creation, despite looking read-only. It is set from a replication drop-down when creating the storage account; on an existing account the Overview tab shows the setting as non-editable, but the Configuration blade lets you change it.
Technology and FriendsEpisode 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.
GCastGCast 53: Creating a Data Warehouse in Azure
  • Creating an Azure data warehouse means creating a SQL server too. Giard says the process resembles creating a SQL Azure database: in portal.azure.com, Create a resource, then Databases, then SQL data warehouse (or search for it), choosing a resource group, a warehouse name and a new SQL server with an admin login, at <name>.database.windows.net. Deployment takes a few minutes because it builds the server first and the warehouse on top of it; he accepts the defaults for the remaining settings.
  • Place the warehouse near the people and applications that consume it. Giard's reason for choosing a location is to keep latency from becoming excessive.
  • Nothing can connect until a firewall rule admits its IP address. A rule is an IP range that must include the client's address; "Add client IP" creates one covering only your current address, named with today's date. Nothing takes effect until you click Save, and other applications need their own holes opened the same way. Once connected, he says, tools such as SQL Server Management Studio or the Visual Studio data tools can be used to load data and build star schemas.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
GCastGCast 52: Using hilite.me to Format Code as HTML
  • Code pasted into Open Live Writer loses its colors and line breaks. Giard edits and publishes his blog in Open Live Writer (formerly Live Writer), which used to have a plugin for inserting formatted code; pasting C# directly now looks "awful", and even fixing line breaks in the source view fails because HTML ignores carriage returns.
  • hilite.me turns pasted code into color-coded HTML and CSS. You paste the code, pick its language, choose a style and click Highlight, and it returns a preview plus HTML to paste into the post's source. Giard always uses the "colorful" style, leaves other options at default, and omits line numbers because they make it harder for readers to copy the code.
  • Inline styles mean the blog needs no added style sheet. The generated HTML carries its styles inline, which Giard says suits his blog because adding a style sheet is hard when each page is its own thing.
  • The same approach works across many languages. He demonstrates C#, JavaScript and JSON, noting the tool recognizes each language's keywords, and says it can format HTML as well; he calls it a tool he uses quite a bit for prettier code without much effort.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
GCastGCast 51: Creating an Azure Container Instance
  • The Azure CLI creates a container instance straight from a registry image. Giard describes a container as applications, resources and data packaged and deployed together, closed to the outside world by default until holes are punched in it. Working in Cloud Shell, which is already signed in through the portal, he runs az container create into an existing, empty resource group, with --resource-group, --name, --image, --dns-label and --ports. The image is a simple web-server sample from Microsoft's documentation team at mcr.microsoft.com/azuredocs/aci-helloworld. The command took about 60 seconds and returned JSON describing what it created.
  • az container show gives the public address of the container's web app. Giard queries only the fully qualified domain name and uses --out table instead of JSON. That returned an address ending centralus.azurecontainer.io with a provisioning state of succeeded, and browsing to it showed the sample's static page with a picture.
  • az container logs shows the container's request log for troubleshooting. Each GET request to the web app appeared as a log entry, and refreshing the page a few times added more entries.
Crosstalk SolutionsVideo Door Phone Setup
synopsis

The host builds a video door entry system from an Axis A8105-E SIP door station, a hosted FreePBX server and Yealink T58A phones. Pressing the door button rings a ring group, the answering phone shows the camera feed, and dialling 99 unlocks the door for 5 seconds. A call measures roughly 140 kbps to 1.2 Mbps.

Components. The requirements are SIP and H.264 video. He lists Axis and CyberData door stations at $799 to $1,249 MSRP, with Crosstalk offering 10–15% off. Phones range from the T58A (about $245 without camera) to the Grandstream GXV3240 ($215), which he dislikes. The unlock relay should sit away from the door station so it cannot be hot-wired. A hosted PBX lets the door and the phone be in different cities.

FreePBX. Video support is off by default; he enables it under Asterisk SIP Settings with H.264 first. Phones and the door station get ordinary extensions. A ring group rings two phones and fails over to an announcement telling the visitor to use the main entrance or call the on-call number, then hangs up.

Axis configuration. The door station registers as extension 300, with a DTMF sequence of 99 and a recipient pointing at the ring group. Three action rules follow: the button calls the ring group; the code sets the door output active for 5 seconds; and the relay going active plays an audio clip, where a real install would use a buzzer. Rules can run on schedules, for example auto-unlocking in business hours.

Test and bandwidth. Latency is low over the hosted connection. Traffic is about 1 Mbps while ringing, 140–200 kbps with a still picture, and about 1.2 Mbps when the camera moves.

  • A SIP door station can ring video phones and unlock remotely. In the host's demo, an Axis A8105-E calls a ring group on his Crosstalk-hosted FreePBX; whoever answers on a Yealink T58A sees the door camera and dials DTMF 99 to trip a relay that unlocks the door for 5 seconds. Because the PBX is hosted, the door and the answering phone can be in different cities.
  • Any door phone or desk phone works if it does SIP and H.264. MSRPs he cites: Axis A8105-E $799, Axis A8004 $1,249, CyberData outdoor video units $1,023 with keypad and $920 without; Crosstalk, which sells them, offers 10–15% off MSRP. The T58A is about $245 without camera; the Grandstream GXV3240 ($215) should work, though he dislikes Grandstream and says FreePBX functionality is lost.
  • Keep the unlock relay away from the door station itself. Best practice is a separate relay box or central controller, because someone could pull a wall-mounted unit off and hot-wire the two relay wires to open the door; his bench demo wires the relay directly only for simplicity.
  • FreePBX has video disabled by default, and needs a no-answer path. In FreePBX 14.0.11 (current as of May 2019) video support must be enabled under Asterisk SIP Settings with H.264 at the top; extensions are ordinary. He sends the ring group's failover to an announcement that tells the visitor where to go, then hangs up, noting rings are 5 seconds each.
  • Bandwidth to a hosted PBX is modest but varies with motion. On the FreePBX dashboard a call measured about 1 Mbps while ringing, 140–200 kbps with a static picture, and up to about 1.2 Mbps when the camera moved, since H.264 is variable-bitrate; on a local network the host calls it next to nothing.
GCastGCast 50: Angular pt 9: Incremental Search
  • Search is added as a new hero-search component on the dashboard. This is the final video of Giard's walk-through of the Tour of Heroes tutorial from angular.io (part two of lesson six). Generating the component creates an HTML template, a test file, a TypeScript file and a CSS file, all boilerplate; its selector, app-hero-search, goes into the dashboard HTML. The template loops over heroes$ and links to each hero ID; Giard explains the $ is a naming convention marking an observable rather than an array.
  • An RxJS Subject throttles keystrokes before the hero service is queried. The component's search method pushes the typed string into a searchTerms Subject, with the hero service injected through the constructor. On init it waits 300 milliseconds, checks whether the term has changed, and uses switchMap to call the service's searchHeroes.
  • searchHeroes runs a partial-match name query against the heroes API. It trims the term and returns an empty array if nothing is left; otherwise it does an HTTP GET on api/heroes filtered by name, where the single equals sign gives a partial match. Like the service's other methods it taps into logging and adds error handling. Giard notes the tutorial lists this code above the step that calls for it, and the component's CSS only at the bottom of the page.
  • The finished search narrows results with each letter typed. In the demo, adding letters cut the list down to one hero, clicking it opened that hero's detail page, and after renaming the hero the old search returned nothing.
Crosstalk SolutionsYealink T58A
  • The host rates the Yealink T58A his favourite phone, despite the price. He says it has the best voice quality of any phone he has used, especially on G.722, and recommends it for receptionists, executives and anyone who values video calling, at just over $330 per phone with camera.
  • The camera is a separate purchase on the T58A. The T58V has the camera built in; the T58A takes an optional CAM50 USB camera with a privacy shutter. MSRP with camera is $539, but Amazon had the phone at $244.22 plus $88 for the CAM50 ($332.22); the host offers to match Amazon's price if bought through Crosstalk.
  • Hardware suits desk use but lacks some basics in the box. It has a 7-inch adjustable touchscreen, 720p/30fps video, Android 5.1.1, dual gigabit ports with VLAN support for the PC port, 802.3af PoE (AC adapter sold separately), Bluetooth, Wi-Fi, 27 DSS/BLF keys and EXP40 sidecar support. The stand has one angle, against the T56A's two; a second USB port drives a photo-slideshow screensaver.
  • Video calling works only with H.264 or VP8 endpoints. He tested T58A-to-T58A calls, the Bria softphone, and Zoiper on iPhone after its H.264 add-on (about a dollar), but the free X-Lite softphone failed because it uses H.263. It also displayed an Axis door station's video and passed its DTMF unlock code.
  • The FreePBX endpoint manager covers the settings that matter. Options it lacks can be added through a basefile edit, which he says is rarely needed. He recommends hosting a shared Yealink directory on the TFTP provisioning server rather than in each phone, and doubts anyone will use its browser or email apps.
Y CombinatorMonetizing Podcasts and Newsletters - Chris Best of Substack and Jonathan Gill of Backtracks
synopsis

Chris Best, CEO of Substack, and Jonathan Gill, CEO of Backtracks, debate paid versus ad-supported media with a YC host. They end in a blend, but with Best holding the stronger position: culture is badly underfunded, and direct subscriptions to individual creators will unlock far more of it than advertising can. Gill defends sponsorship as the realistic near-term model for US podcasting, so long as it is honestly measured.

Paid versus advertising. Gill says US listeners expect podcasts to be free and the ecosystem is not ready for subscriptions; ads work when they fit the content. Best calls the ad-funded podcast market "small and sad" beside what payment could support, citing China, where low payment friction and a willingness to pay for educational audio make the market more than ten times larger. Both point to Chinese professors who quit teaching to podcast for millions.

Measurement and pricing. Gill compares download counts to early banner impressions. Backtracks measures how long people actually listen and detects fraud, and he concedes clients dislike that their numbers come out lower. Best suspects podcast ads are in an "Emperor's New Clothes" state and expects per-download rates to fall. Gill counters that Backtracks buys podcast ads and finds them worth it; startups can measure ROI through offer codes, or radio-style, by cutting the spend and watching the result.

Subscribing to a person. Best's thesis is that society spends too little on culture, and that as automation spreads it should spend more. What is new is the ability to subscribe directly to one person: a creator with 10,000 devoted fans makes nothing on YouTube but can live at $5 a month each. Gill adds that advertisers pay for audience quality, not just size, but both warn that data-driven, advertiser-led content loses creativity, as YouTube thumbnails and titles show. People pay most readily for things that improve them, which is why education sells.

Platforms and discovery. Podcasting stays decentralised even though Apple is said to account for about 60% of plays; RSS subscribers get every episode, unlike Twitter followers. Newsletters spread more easily than audio because text is easy to forward and link to. Best does not expect newsletters to replace Facebook's network of real-life friends, but he does expect them to replace it as the place where news and culture are consumed.

Growth tactics. Best advises making the best, most accessible essays free and keeping the rawer, wonkier material for subscribers, with clear email calls to action and a referral scheme in which paying subscribers give friends gift months. Gill stresses quality over quantity, good storytelling, and a shareable opening clip, citing research that listeners remember audio 36–39% longer than what they see or read. Substack itself used a podcast to tell its story at scale after finding that only in-person pitches persuaded writers.

Getting started. Gill says start with why you are doing it and what the topics are. Best says just publish. Consistency is the one reliable predictor of success, and any newsletter people regularly open can probably charge.

  • Advertising can only fund a small slice of possible audio. Jonathan Gill of Backtracks argues US podcasting is not yet ready for subscriptions, so sponsorship is the practical path, blended with paywalls and Patreon-style support. Chris Best of Substack counters that the ad-supported podcast market is "small and sad" next to what direct payment could fund, pointing to China, where paid audio is said to be more than ten times larger.
  • Download counts overstate podcast ad value; measurement will reprice it. Gill likens downloads to early banner-ad impressions and says Backtracks measures actual listening time and strips out fraud, which makes clients' numbers come out lower. Best suspects much podcast advertising is overpriced and predicts the per-download rate will fall sharply. Gill says Backtracks buys podcast ads and finds them worth it, measured through offer codes or by stopping the spend and watching what happens.
  • Subscribing to an individual creator is new and undervalued. Best's core thesis is that society spends far too little on culture, a market failure, and that the internet now lets people pay a person directly. A creator with 10,000 devoted fans earns nothing on YouTube but can live on $5 a month each. Gill replies that advertisers also pay for audience quality rather than size.
  • Give away your best accessible work; keep the raw material paid. Best advises Substack writers to make focused, shareable essays free so they spread, and send wonkier, less filtered material to subscribers, the Ben Thompson model. Substack is also trialling gift subscriptions that paying readers hand to friends. Gill adds that a quotable intro clip helps sharing, citing research that people remember what they hear 36–39% longer.
  • Consistency predicts success; regular readers mean you can charge. Best says most failed newsletters stop after one or two posts, and the one reliable predictor Substack sees is publishing consistently and acting on feedback. In his view, a newsletter people regularly open can be monetized, because getting regular readers is harder than converting some of them to paid.
Technology and FriendsEpiosde 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.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
Crosstalk SolutionsSecure IoT Network Configuration
synopsis

The host builds an isolated IoT network on VLAN 107 using an EdgeRouter 4, a UniFi switch and a UniFi access point. It is firewalled so IoT devices reach the internet and a few chosen services but none of his private networks. He ends by using the firewall logs to show what his smart plugs and Roku do.

Design. His secure LAN (VLAN 1) holds management, computers and phones, and guests have their own network. IoT devices go on 192.168.107.0/24, wired through an untagged switch port and wireless through a hidden SSID.

EdgeRouter. He adds VLAN 107 on eth1 with gateway 192.168.107.1/24. Its DHCP server hands out .2 to .254, with the Pi-hole as primary DNS and the router as secondary, and DNS listens on eth1.107. An optional mDNS repeater lets devices such as a Chromecast be found across networks.

UniFi. He creates a VLAN-only network for 107, an untagged port profile for the port feeding his living-room dumb switch, and a hidden WPA-personal SSID tagged 107. A Nintendo Switch joined only once the SSID was briefly broadcast, and some devices may need multicast and broadcast blocking turned off.

Firewall. A group holds the three RFC 1918 ranges. The "in" rule set defaults to accept, allows established/related traffic, DNS to the Pi-hole and Plex on TCP 32400, then drops traffic to the group. The "local" rule set defaults to drop, allowing only DNS to the router and DHCP. He concedes Plex should move into the IoT network, and plans a rule blocking other DNS servers.

Logs. "show log tail" shows an iClever plug broadcasting on UDP 6666 and using MQTT on TCP 1883 to AWS in Boardman, Oregon, and a Roku streaming over HTTPS from Google.

  • IoT devices belong on their own VLAN, cut off from private networks. Smart plugs, TVs, consoles, thermostats and voice assistants are hacker targets, so the host isolates them on VLAN 107 (192.168.107.0/24) using an EdgeRouter 4 on firmware 1.10.8, a UniFi Switch 24 and a UAP-AC-Pro. He says any VLAN-aware gear with a strong firewall, such as pfSense with Ruckus, can do the same.
  • The firewall blocks all RFC 1918 ranges except specific holes. An address group holds 192.168.0.0/16, 172.16.0.0/12 and 10.0.0.0/8. The VLAN's "in" rule set defaults to accept, then allows established/related traffic, DNS on port 53 to his Pi-hole, and Plex on TCP 32400, then drops everything else to those ranges. The "local" rule set defaults to drop, allowing only DNS to the router and DHCP on UDP 67.
  • Hidden SSIDs and multicast blocking can stop some devices connecting. Wired devices reach the VLAN through an untagged switch port feeding a dumb switch; wireless ones use a hidden WPA-personal SSID. His Nintendo Switch would not join the hidden network until he briefly broadcast it, and some devices may need "block LAN to WLAN multicast and broadcast" unchecked. He skips throttling because streaming devices sit there.
  • The host concedes his setup has gaps he intends to close. He says Plex should really move into the IoT network rather than be reached through a firewall hole, and plans an "in" rule blocking port 53 to any other DNS server so devices cannot bypass his. Without a Pi-hole he suggests malware-filtering public DNS such as 1.1.1.1 or 9.9.9.9.
  • Isolation makes IoT traffic easy to log and inspect. With logging only on the IoT rules, "show log tail" showed an iClever smart plug broadcasting on UDP 6666 every few seconds and talking MQTT on TCP 1883 to an AWS address in Boardman, Oregon, and a Roku sending HTTPS to Google. He suggests a syslog server for easier review.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.