tech

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

Crosstalk SolutionsReal World UniFi Deployment - SSFCC
synopsis

Crosstalk builds a redundant UniFi network for the South San Francisco Conference Center, a small convention venue by the airport, and ends with a site survey showing coverage good enough to leave power on auto.

The design. The host explains choosing the EdgeRouter Infinity over the still-beta USG-XG, load-balancing two Comcast gigabit copper handoffs. Two UniFi Switch 48 500 W units, either able to carry the whole load, feed twelve UAP-AC-SHD access points, two on remote 8-port switches. Four SSIDs: full-speed internal and contractor networks, a throttled guest network, and a per-event SSID the venue can sell.

On site. The client had done the physical install; David, a Crosstalk engineer of about two years, dialled it in. He says an on-site controller replaced a Cloud Key because the captive portal takes hundreds of requests at once. The firewall drops inter-VLAN traffic, every VLAN is a /16, and the guest network is client-isolated at 1.5 Mbps with an eight-hour portal expiry.

Tuning and testing. Auto channel selection stacked the 2.4 GHz APs on channel 1, so channels were set by hand. Speed tests stuck near 281 Mbps down wired, even on Comcast's equipment, until the Xfinity test against San Jose reached about 717 down. David's NetSpot survey of the unoccupied rooms showed good coverage.

  • The edge router was picked for being released, not beta. The host says the firm does not deploy beta hardware at an important customer, so the still-beta USG-XG lost to the EdgeRouter Infinity; the Infinity (eight SFP+ ports, one Gigabit port, redundant PSUs, EdgeOS 1.9.7 hotfix 4) load-balances two Comcast gigabit copper handoffs 50/50 and feeds the switches over 10 Gbps fibre, leaving room for the client's possible 10 Gb upgrade.
  • The design buys redundancy by doubling switches rather than consolidating. Under 48 devices would fit one 48-port 750 W switch, but two UniFi Switch 48 500 W units were installed so either can carry everything if the other fails. Twelve UAP-AC-SHD access points (4x4 MU-MIMO, for crowds of hundreds or thousands) are backed by a standard UAP-AC-HD spare in the server room.
  • Four SSIDs separate staff, vendors, guests and a resellable event network. Internal office (untagged) and contractor run full speed; the guest network is client-isolated and throttled, first to 2 Mbps, then 1.5 Mbps up and down; a fourth per-client SSID can be renamed per event and sold throttled or unthrottled. EdgeRouter firewall rules built on network groups drop traffic between VLANs, each a /16, while the main LAN sees all but guest.
  • UniFi's auto channel selection failed; its auto power setting worked. Auto put every AP on 2.4 GHz channel 1 bar one on channel 11, so channels were set manually on both bands. Power stayed on auto, and David's NetSpot survey (about 20 seconds per sample, occupied rooms skipped) showed coverage good enough that the host saw no need to adjust.
  • Slow gigabit speed tests were the test server's fault, not the network's. Wired results of 281 Mbps down and 788 Mbps up persisted even plugged directly into Comcast's equipment; switching from Ookla's speedtest.net to Xfinity's test against a San Jose server gave up to about 717 down and 940 up. Wireless reached roughly 300 Mbps symmetric, which the host assumes is the wireless limit.
Scott HanselmanKubernetes Development in Azure from Visual Studio 2017 - Visual Studio Connected Environment
  • The edit-debug loop runs against a cloud dev environment, not the laptop. Hanselman presents Visual Studio Connected Environment, in preview, as his practice run of a demo announced with Scott Guthrie at Connect in New York. Instead of F5 launching IIS Express on localhost, the code is built into containers, deployed to Kubernetes in Azure and debugged live there with breakpoints, stepping and call stacks.
  • Running a microservice app locally is the problem it targets. His sample hotel-booking site is split into a web front end plus booking, profile, discount and review services written in .NET Core, Node and Python. He argues that reproducing that locally means setting up Kubernetes and every other service, some of which depend on Azure resources a laptop cannot reach, and that even minikube is a hassle.
  • The same loop works from Visual Studio Code, on Mac or Linux. He fixes a type mismatch in the .NET discount service in Visual Studio, then a regex expecting a decimal in the Node profile service from VS Code. He stresses that it is real Kubernetes underneath, so kubectl still works, and says the cloud round trip "feels to me faster" than IIS Express because a laptop cannot match a cloud full of machines.
  • Personal "spaces" isolate one developer's services from the team's. Each developer gets their own pod, container and Kubernetes namespace, which he likens to a source-control branch. Requests through the shared front end route to that developer's copies of the services they are changing, chosen by name in the URL, so a bug they introduce does not break the environment for everyone else.
Scott Hanselman.NET Fringe - Interview with Evelina Gabasova about F# in Emacs and Star Wars visualizations!
  • F# tooling in Emacs is faster than in Visual Studio. Gabasova, a data scientist working mainly in machine learning, shows type annotations and F# Interactive running in Emacs. She says this comes from the open-source F# compiler services, and that Emacs is her most reliable editor on her Fedora work desktop.
  • Co-appearing in screenplay scenes approximates a character social network. For her Star Wars talk she parsed the screenplays of the films, treated each scene as a block, and assumed characters who speak in the same scene know each other. Noisy data meant writing two parsers for differently formatted scripts. The method shows who talks to whom, not family relationships.
  • Data science need not leave your preferred language. Her main point is that she stays in F# and calls R libraries directly from it, using type providers to combine data sources. She compares F# to Python with static typing, which she says helps, and says she has written perhaps 100 lines of C# in her life, all to fix a bug in a linear algebra library.
  • Fable lets F# replace JavaScript for browser visualizations. Her D3.js visualization is about 60–75 lines of F# in a script file, compiled to JavaScript by Fable, which uses Babel. Source maps let her set breakpoints in the F# source from the browser's developer tools; she says she welcomes anything that keeps her away from JavaScript.
Scott Hanselman.NET Fringe - Interview with Glenn Block about ScriptCS. Lightweight Scripting and a REPL in C#!
  • ScriptCS aims to strip ceremony from writing C#. Block describes the roughly three-year-old project as a lighter way to write C# without project files or explicit compiling, with a REPL, influenced by Node and by languages such as F#. It is standard C# plus a few opt-in additions.
  • Script packs and convention-loaded NuGet packages replace usings and references. A generic Require<T> function, modelled on Node's require, loads "script packs" that wrap ordinary NuGet packages; packages present in the folder load automatically. His demo is a one-line Nancy web server started with scriptcs start.csx, which he says hides plumbing rather than removing it.
  • Scripts can now get full Visual Studio debugging. A new, extensible REPL command generates a Visual Studio solution on the fly that runs the ScriptCS host as an exe. He uses it to hit breakpoints, hover and watch variables in a WPF calculator written entirely in .csx files. Editor syntax highlighting in VS Code, Atom and Sublime Text comes via OmniSharp.
  • A rewrite onto .NET Core and Roslyn is the next major effort. Block says migrating to .NET Core across Windows, Mac and Linux is top of the list and will break things, so he is asking the community for help. A recent Windows release on later, not-final Roslyn bits added the most-requested features: dynamic, async/await and C# 6.
  • Need is the test for whether to use it. Asked why anyone would choose it over F# or PowerShell, Block says nobody has to, but people with this problem find value. He also shows a browser-based ScriptCS playground in Docker containers on Ben Hall's Katacoda, and community script packs including an Azure management library.
Scott Hanselman.NET Fringe - Interview with Hakeem Mohammed about Hadoop.NET
  • Hadoop's core is small enough for one person to port. Mohammed, working solo on a side project, argues the large ecosystem (Sqoop, Flume, Hive, Pig, cloud extensions) sits on two core components: the HDFS distributed file system and the YARN processing framework. Those are what Hadoop.NET targets.
  • A machine port "smells like Java", so idiomatic C# is the work. The code was machine-ported first, then rewritten by hand onto .NET Core to use C# features such as the TPL, generics and lambdas. He says the hard part starts there.
  • .NET shops should run Hadoop without JVM expertise. His pitch is that C#-centred enterprises otherwise face hiring Java consultants, setting up a JVM and Hadoop, and adapting to Maven-style dependency management. He would be happy whether or not the Apache maintainers adopt it, and has not contacted them.
  • The project is pre-alpha with a staged roadmap. He agrees it is at the "get it to build" stage. The plan is Hadoop's own serialization data types and Avro first, then the tests, then HDFS. His demo is the existing Java Hadoop computing pi with 16 maps and 1,000 samples per map, which he says shows code being sent to the data.
  • The port doubles as a way in for Java Hadoop developers. He suggests people who know Hadoop from Java but are drawn to .NET Core could learn .NET by contributing. Hanselman adds that it is also a way to learn Hadoop.
Scott Hanselman.NET Fringe - Interview with Steven Kirk about Cross Platform XAML and Avalonia
  • Avalonia is a clean-room, cross-platform XAML UI framework. Kirk named it after Avalon, WPF's early code name; it was previously called Perspex until the trademark forced a change. It targets Windows, Mac and Linux, with experimental ports elsewhere. He says a cross-platform WPF was always considered impossible because WPF is so tied to Win32.
  • Controls are drawn from scratch, so accessibility must be built. It renders through pluggable back ends rather than native controls: Win32 or GTK for windowing, and Direct2D, Cairo or a basic SkiaSharp renderer for drawing. He would like to move to SkiaSharp once it gains missing features. Kirk concedes accessibility is still to do and is often requested.
  • It follows WPF's APIs only where they still make sense. He abandoned an exact WPF reimplementation. Avalonia uses modern features WPF predates, such as reactive extensions for binding, and its own dependency-property system, but picks the WPF way when choosing between that and something different.
  • Simple WPF apps should port, depending on their MVVM library. Asked about Hanselman's own side-project WPF app, Kirk says dropdowns, binding and buttons should port. Its MVVM library is the risk if it is tied to WPF's dependency properties; ReactiveUI is baked in.
  • It is a spare-time alpha whose biggest gap is full-window redraws. Kirk says people are building applications on it and hopes for beta "this year". He asks for help with the website, benchmarking and above all dirty-rect rendering, since it currently redraws the whole window every frame.
Scott Hanselman.NET Fringe - Interview with Adam Dymitruk about Event Storming
  • Event storming is brainstorming requirements as past-tense business events. Dymitruk describes listing the facts a running system would produce, such as a user signing up, purchasing, returning an item or reaching silver status. He argues events hold behaviour and data together and mark transactional boundaries. Data-first modelling and UML's behaviour-first approach were extremes that missed this middle ground.
  • No interesting events means you should not write software. He treats the exercise as a litmus test. A domain without events needs a spreadsheet, and a settled one like accounting needs off-the-shelf software such as QuickBooks, not a custom build.
  • Everyone from CEO to support agrees one shared event language. Getting the whole business into one room maps the full workflow, the data in each event and their order. As a side effect it yields a given-when-then specification for every command sent to the system.
  • He refuses clients who will not do event storming. He gathers requirements no other way and credits Alberto Brandolini, who built on Greg Young's event ideas, as the originator; Brandolini has a book on Leanpub. Dymitruk argues it applies from startups to legacy corporate systems because it shows the business that its technology is an investment reflecting the business.
Crosstalk SolutionsAxis A8004-VE
synopsis

The host unboxes, wires and configures the Axis A8004-VE network video door station and ends up with a single button press ringing a FreePBX softphone, a desk phone and the Axis Companion apps, any of which can open the door. He calls himself deeply impressed with Axis: every device of theirs he has tested has been rock-solid and highly configurable, which he offers as the case for its $1,091.63 Amazon price (about $785 for the smaller model).

Hardware and wiring. The unit is near-solid metal with a 720p camera, an echo-cancelling microphone, two relays, four I/O ports, a line out, DC input, microSD and 802.3af PoE. Cables enter through tight weatherproof grommets; Axis supplies a shuttle for pushing a bootless network cable through, and a faceplate tamper switch.

Axis Companion. The free Companion software adopts the camera, records to a network share and updates its firmware, which took about 10 minutes. It estimates bandwidth and storage per setting: about 1.5 Mbps and 15–30 GB a day for continuous 720p at 30 frames per second, which the host turns into a sizing rule of cameras × GB a day × days, plus 25–50%.

SIP and DTMF. In the camera's own interface he set the time zone, a text overlay and 12 dB of microphone gain, then registered it as FreePBX extension 258, calling extensions 206 and 200. DTMF 99 holds the door relay open for five seconds.

Testing and fixes. At 30 frames per second the video arrived so late that a phone went to voicemail; 15 frames per second fixed it. A sound tied to the DTMF code did not play when the door was opened from Companion, so he triggered it on relay activation instead, and notes the tamper switch can trigger actions the same way.

  • The A8004-VE is expensive but, in the host's view, worth it. He found it on Amazon for $1,091.63, against about $785 for Axis's smaller door station, and links it there as an Amazon affiliate. It has a 720p camera, two relays, four I/O ports, a microSD slot, IP66 and NEMA 4X weather ratings and 802.3af PoE; every Axis device he has tested has been rock-solid and highly configurable.
  • Native SIP lets it call FreePBX phones and open doors by DTMF. The host registered it as FreePBX extension 258, rang a Bria softphone (206) and a desk phone (200) at once, and set DTMF code 99 to trigger the door relay for five seconds; the free Axis Companion desktop and iPhone apps can also answer and open the door.
  • High-quality video made calls go to voicemail before the picture arrived. At 1280×720 and 30 frames per second the video came through so slowly that a phone rolled to voicemail; dropping to 15 frames per second brought the picture up much faster. The host suspected the quality setting rather than a fault.
  • Size storage from Axis Companion's per-camera estimate, plus a buffer. At 720p and 30 frames per second it showed about 1.5 Mbps and 15–30 GB a day of continuous recording; the host multiplies cameras × GB a day × days kept and adds 25–50%. Motion-only recording uses far less, and the paid Axis Camera Station offers more than Companion.
  • Tie actions to the relay or tamper switch, not the DTMF code. An audio clip triggered by code 99 did not play when the door was opened from Companion, so the host re-keyed it to fire whenever the relay goes active; a casing-open tamper switch can trigger calls or sounds the same way. He also raised microphone gain 12 dB, lifting the level from about −20 to −8 dB.
Scott HanselmanTime lapse walking through Edinburgh, Scotland using a Front Row wearable camera from Ubiquiti
  • No summary available: this video has no speech. Its audio track is silent for the full 403 seconds and YouTube has no captions for it, so the transcript is empty; going by the title, it is a time-lapse of a walk through Edinburgh shot on Ubiquiti's Front Row wearable camera.
Crosstalk SolutionsUbiquiti ETH-SP
  • A surge protector shields indoor gear from outdoor-device lightning strikes. The host's example is a PoE-powered NanoStation M5 cabled back to a $200–300 24-port Ubiquiti switch in his office; a strike on the outdoor unit can send a surge down the Ethernet run into the switch. The ETH-SP is an Ethernet pass-through with a ground, so the surge grounds out instead of travelling the cable.
  • The ETH-SP is sacrificial and is best deployed in pairs. The host expects the protector itself to be destroyed by a strike while protecting whatever is on its far side. The best case, he says, is one unit close to the outdoor equipment and a second at the other end of the cable near the switch.
  • The unit is non-directional and grounds through its single screw. Both ports are marked in/out, so it works like a straight-through coupler either way round. The supplied metal screw and washer either go through that hole into a metal pole or, off a pole, anchor a grounding wire run to an appropriate ground.
  • Pole mounting needs a hose clamp and a drilled hole. The host clamps the unit to the pole with a hose (Jubilee) clamp, then drills through the ETH-SP's hole into the pole with a 4.5 mm bit, or 3/16 in. in the US, before driving in the screw. He puts the unit at about $14.
Crosstalk SolutionsSolar Powered WiFi - Part 1
  • About 50 watts of panel suffices for one NanoStation. The host runs a 45 W Harbor Freight kit (three 15 W panels, roughly $129–$149) on about 6 hours of sun a day and recommends 50 W or more. He would not buy that kit again, because a plastic support post has already snapped, and suggests two 25 W panels instead. The parts list in the description uses Amazon affiliate links, which he discloses.
  • A charge controller with USB output is the key part. Two wires go in from the panel and two out to a single 12 V battery, which sits in a weather-resistant vented battery box. The controller's USB port powers a Ubiquiti airGateway Installer, a USB-powered 24 V passive PoE injector, which feeds the NanoStation. The host notes that alligator clips on the battery are not fit for a permanent install, and says he is new to solar himself.
  • Three days in, the battery has spare overnight capacity. It falls from full to about three of five bars each night and recharges in daytime, and the host wants that headroom to last more than 24 hours through cloudy or rainy days. The solar-side link shows -38 dBm signal, 99% airMAX quality and capacity, an estimated 300 Mbps, and 1–2 ms ping over about 50 ft of clear line of sight.
  • A week without dropouts will prove the design. The host graphs traffic and ping latency for the solar-side NanoStation in Cacti, running on a Raspberry Pi 2, so an overnight battery failure would show up as a gap. If the link holds for about a week, he will treat panel and battery as sufficient for one NanoStation.
  • Adding a camera over PoE passthrough failed. With 24 V passive PoE passthrough enabled on the NanoStation M5's secondary port, a UniFi Video camera rebooted about every 30 seconds. The host suspects the airGateway Installer cannot supply enough power for both devices. Part 2 will report the uptime and test an inverter on the charge controller driving a standard Ubiquiti PoE injector.
Crosstalk SolutionsUbiquiti Access Points Explained
  • Run the UniFi controller on a dedicated Cloud Key, not a PC. The controller software is free for Mac, Windows and Linux and has to be running to adopt and configure the access points. Because people replace computers every two or three years, the host prefers the Cloud Key, which is the same controller on a PoE-powered stick. He says the video's equipment links are Amazon affiliate links.
  • The UAP-AC-Lite is enough for an average home. The host means 1,000–2,500 sq ft with 10–20 Wi-Fi devices, and he ran one centrally placed in his own home for over a year with no coverage problems. Ubiquiti's specs: indoor, 2x2 MIMO on both bands, 300 Mbps at 2.4 GHz and 867 Mbps at 5 GHz, rated to 122 m (about 400 ft) in ideal conditions, powered by 24V passive PoE. The single unit (about $79) includes a PoE injector; the five-pack (about $335) is cheaper per unit but comes without injectors.
  • The host thinks the long-range UAP-AC-LR is mostly marketing fluff. Ubiquiti credits an "innovative antenna design" for its 183 m (about 600 ft) rating. The host asks why that design isn't in every model, and points out that a phone's small antenna may see the network at that distance but fail to send data back. He has never deployed one in production. The one use he suggests is a pair of LRs as a wired AP plus a distant repeater.
  • The UAP-AC-Pro is the host's default access point for business. It is his best seller, used for offices, restaurants and hotels with roughly 100–150 clients per coverage area; he has used it in hotels by mounting one in the ceiling between rows of rooms. Specs: indoor/outdoor, 3x3 MIMO, 450 Mbps at 2.4 GHz and 1,300 Mbps at 5 GHz, 400 ft range, 802.3af/at PoE. A second, pass-through Ethernet port can feed a switch or camera. He finds the UAP-AC-EDU loudspeaker variant's software not yet usable.
  • The UAP-AC-HD suits dense venues, not homes. Ubiquiti rates it at 4x4 MU-MIMO, 800 Mbps at 2.4 GHz and 1,733 Mbps at 5 GHz, on 802.3at PoE+ only. It publishes no range figure; the host assumes it matches the Pro, and says you buy it for throughput. He reserves it for stadiums, auditoriums and theaters with hundreds of devices, or as the wired uplink for a mesh deployment such as a campground. For a home he recommends one or more AC-Pros instead. At recording, the five-pack ($1,475, $295 per unit) cost more than five singles ($293.04 each, with injectors).
Scott HanselmanQuick Review: VR HTC Vive Deluxe Audio Strap
  • The Deluxe Audio Strap should have been the Vive's default. Hanselman calls it "highly recommended, worth the money" and a must-have for anyone interested in VR. It replaces the velcro strap that ships with the original HTC Vive, which he calls "pretty much garbage", and he expects it to become standard equipment.
  • First-generation Vive owners need the three-in-one cable first. The strap will not work with the older cable, which has to thread through the strap and its velcro. He has a first-generation Vive; he says current Vives already ship with the right cable.
  • A rear knob makes the headset easier to fit and remove. Turning the knob tightens or loosens the fit, so the headset goes on and off with less hassle than the original strap. The headphone cable threads through the top so a single cable runs out the back, and the headphones click in and out and slide up and down a side rail.
  • The built-in headphones sound good but feel cheap. He is "not 100% sold" on what he calls "cheap squishy airplane headphones", though he says they sound "pretty darn good". He can picture an aftermarket replacement that plugs other headphones in their place.
Crosstalk SolutionsFreePBX Call Recording Reports
  • The host calls the Call Recording Reports module essential for recording users. The FreePBX commercial module lists at $99 MSRP; the host says it is a little cheaper on the Crosstalk Solutions web store, which he runs, and that it is also included in the System Builder Plus commercial-module bundle.
  • It puts all recordings in one browsable, permissioned interface. Under Reports > Call Recordings, filtered by year and month, each call shows type (inbound, outbound, on-demand), source and destination, timestamp and duration, and can be played in the browser, downloaded as a WAV file or deleted; FreePBX lets you grant access to users who check recordings regularly.
  • Its archive feature keeps recordings from filling the PBX disk. An archive limit zips every recording older than a set number of months (the host's is three years) into a Recording Archives tab and emails the administrator, who must log in, download the zip and store it somewhere safe off the server.
Scott HanselmanEditing code and files on Windows Subsystem for Linux on Windows 10
  • WSL runs real Ubuntu binaries on the Windows kernel. Hanselman enables developer mode and the Windows Subsystem for Linux feature, then shows lsb_release reporting Ubuntu 16.04; he stresses these are the genuine Linux user-mode ELF binaries, not Cygwin, with no Linux kernel underneath — file-system syscalls are handled by the Windows kernel, and the processes show up in Task Manager beside Windows ones.
  • Never touch the Linux file system from Windows apps. The Linux home folder lives hidden under AppData\Local, and Microsoft's article warns in red not to create or modify Linux files with Windows apps; Hanselman calls that warning "a little bit heavy-handed" and says it needs updating, because the real rule is to keep your work on the Windows drives under /mnt/c (or /mnt/d), using aliases such as desktop or github to jump there.
  • Rails development on Windows gets easier because it isn't Windows. He followed the standard Ubuntu Rails setup (about 30 minutes, "tedious"), then runs rails new, rake db:create and rails server with Linux Ruby; the server answers on localhost port 3000 because the Linux subsystem shares ports with Windows — "this is not a virtual machine."
  • Edit those files with any Windows editor safely. From the /mnt/c project folder he types code . to open Visual Studio Code on Windows beside bash, with its Ruby and CSS tooling working, and says the same approach suits Node or C++ work as long as it stays on the C drive.