tech

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

Crosstalk SolutionsOn the Road 5
  • One small, identical design suits all five real-estate offices. The client has five offices on the Oregon coast, with three or four agents each, who are rarely in. Each gets an EdgeRouter X, doing quality of service for the phone trunk, plus a UAP-AC-Pro with a secure SSID and a guest SSID. Two offices also get a US-8-150W PoE switch; no site-to-site VPN was needed.
  • The suspected double NAT at Depoe Bay turned out not to exist. The host expected the Wave Broadband connection behind a TP-Link router/Wi-Fi unit to be double-NATed, which would have meant calling the ISP. The modem was in bridge mode, so the EdgeRouter X pulled a public IP straight onto its WAN, which he says is ideal for VoIP. He removed an old Samsung phone system and a failing, noisy AdTran PoE switch in about four hours on site.
  • He throttled and scheduled the guest network against outside users. Because the coast sees many travellers and transients, the open guest SSID is limited to 5 Mbps down and 2 Mbps up and broadcasts only from 7 a.m. to 7 p.m. The only disruption to staff was the subnet change, which meant reconnecting to the office printer.
  • Call forwarding bridges the gap until numbers are ported. Phones move to Crosstalk's own SIP trunking and Crosstalk PBX. Calls are forwarded from the old provider so the new system is in use before the port completes. The three remaining offices are on DSL, where a previous vendor sold VoIP phones without checking the network. The host says five IP phones cannot run over DSL, so those sites move to Charter Spectrum, with modems in bridge mode.
  • The host rates ClearlyIP phones highly for real-estate offices. The phones are ClearlyIP units branded for Crosstalk, which supplies them. A Follow Me button lets each agent toggle and set how calls ring to the desk and to their mobile, which he says suits staff who turn over often and change mobile numbers.
Crosstalk SolutionsUniFi Protect ViewPort
  • The ViewPort puts UniFi Protect live views on any HDMI screen. The UFP-ViewPort lists at $199 MSRP and outputs up to 4K at 30 fps. It has a PoE-in port and a second Ethernet port the host takes for pass-through rather than PoE out, and comes with a wall bracket and an HDMI cable. A US-8-60W, which is 802.3af, powered it without trouble, and it ran warm, not hot, at 106°F.
  • Adopt it from the Protect web interface, not the mobile app. Its welcome screen says either works, but the host could not find it in the latest Protect app. The desktop interface found it at once under Add Devices, and it updated itself in about five minutes. Even after adoption it never showed in the app.
  • Its only setting is which predefined live view it shows. You build views in Protect and assign one to the ViewPort. The host found a bug: a view slot set to rotate between cameras every five seconds, or on motion, cycles in Protect but stays on one camera on the ViewPort.
  • Ease of setup makes it one of his favourite Ubiquiti products. It runs in about ten minutes with no learning curve. His Raspberry Pi surveillance monitor was cheap but took hours of fiddling, so for a customer deployment he would rather pay $200 for the ViewPort.
  • The host most wants touchscreen control. As of recording the display is static. He would like tapping a camera on a touchscreen monitor to make it full screen and tapping again to restore the view, though he concedes it would probably need a list of tested touchscreens.
GCastDependency Injection in Java Spring Apps [GCAST 85]
  • Newing up the service in the controller is a dependency worth removing. Continuing from episode 84's MathService interface and MathServiceImpl class, Giard wants room for multiple implementations: one doing the real work and one with a hard-coded answer for testing, or different ones per environment or per part of an organization. He calls the example contrived.
  • Each implementation is marked as a service and given a qualifier. Giard labels the class with the service attribute so Spring knows about it, and adds a qualifier with a name; the service label alone suffices if there is only one implementation of the interface. He names each qualifier after its class, though he says that is not required.
  • A mock implementation returns a fixed value regardless of input. He adds MathServiceMock, which implements MathService, with the same service and qualifier attributes, and makes addNumbers always return 10.
  • The controller autowires an interface-typed field and picks one by qualifier. The controller drops the new call for a private class-level field of type MathService (the interface, not the implementation), marked autowired so Spring creates the instance as soon as it is referenced, with a qualifier naming MathServiceImpl. A GET in the browser returns 30 for 10 and 20 and 35 for 10 and 25; changing the qualifier to MathServiceMock returns 10 whatever is passed in.
  • The payoff is testing without fragile, slow dependencies. Giard says you would not normally edit the live controller to switch; the live code would use the real implementation while a test uses the mock. It matters, he says, when the real implementation calls another web service or reads or writes a database: those dependencies are fragile, take time, and are not what the test is testing.
Technology and FriendsChristine 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.
Crosstalk SolutionsUniFi Gen2 PRO PoE Switches
  • Both Pro switches share the same PoE++ ports and differ in scale. The USW-Pro-24-PoE has eight 802.3bt PoE++ ports (17–24), sixteen 802.3at PoE+ ports, two 10G SFP+ ports, a 400 W PoE budget and 88 Gbps switching capacity. The USW-Pro-48-PoE has the same eight PoE++ ports, 40 PoE+ ports, four SFP+ ports and 176 Gbps. Both take a UniFi RPS input; neither offers 24 V passive PoE.
  • Layer 3 routing is promised but not yet delivered. As of recording both are layer 2. The datasheet promises inter-VLAN routing, static routing and DHCP server functionality in future firmware. The host explains that switch-level inter-VLAN routing keeps traffic between VLANs on the same switch from travelling to the firewall and back.
  • The Pro has fans and is audibly louder than the non-Pro. Ubiquiti's datasheet claims "near-silent" cooling: about 0.9 dB at 25% fan, 7.3 dB at 50% and 18.8 dB at 100% (22.5 dB on the 48-port). The host measured about 49 dBA behind the switch at fan level 40 against 42.6 dBA ambient, and 64–65 dBA at 100%. He will keep the fanless USW-24 in his rack instead.
  • UniFi AR would not work on the Pro switch at first. The Pro showed no QR code although it ran the same firmware as his working Gen 2 non-Pro switch, and he had not found the cause at recording. The front touchscreen shows port, throughput, PoE wattage and temperature statistics, and can also set the fan speed manually.
  • The host thinks the pricing fair once layer 3 arrives. The 24-port lists at $699 USD and the 48-port at $1,099 USD MSRP. He judges that about right for a layer 3 switch with these features, so the price is justified by firmware not yet shipped.
GCastJava Services in Spring Boot [GCAST 84]
  • The starting point is a controller method that does the math itself. In the Spring Boot web service from earlier episodes, Giard adds an addNumbers method mapped to an HTTP GET at GCAST/addNumbers/{first}/{second}, each path segment mapped to a parameter; it returns the sum in a ResponseEntity with HTTP status 200. In Postman, 10 and 17 return 27.
  • Logic beyond trivial belongs in a service, not the controller. Giard says that if the method did more than add two numbers (querying a database, running a complex workflow, calling other web services) he would not leave it in the controller; the addition is only a stand-in to show how.
  • Define an interface first, then a class that implements it. He groups services in a package named services (packages show up like folders in Java) and creates an interface MathService declaring int addNumbers(int firstNumber, int secondNumber) with no code. He calls basing the class on an interface good practice, not a requirement.
  • The implementation class carries the moved logic and returns a plain value. MathServiceImpl "implements MathService", so it must have every method the interface defines; IntelliJ can generate the method stub, marked with the override attribute. He pastes in the controller's addition and returns the sum itself rather than a ResponseEntity.
  • Coding to the interface gives flexibility, but swapping still means editing code. The controller declares the variable as the MathService interface, news up MathServiceImpl, and wraps the returned sum in a ResponseEntity with status OK; Postman with 11 and 5 still works. Giard notes that changing the implementation this way requires changing the code, and says the next episode uses attributes to inject the implementation instead.
Scott HanselmanHidden Windows 10 Hotkeys that will make you a better person!
  • Holding the Windows key can show you every Win-key hotkey. Hanselman installs PowerToys, which he describes as Microsoft's new productivity utilities, so that holding the Windows key brings up an overlay of the hotkeys. He notes that many are mnemonic: Win+E for Explorer, Win+L to lock, Win+D for desktop.
  • Win plus a number launches that taskbar slot. Items are numbered left to right, with 0 standing for the tenth, and he says this has been built into Windows "for a very very long time". Shift+Win+number opens another instance, Ctrl+Shift+Win+number runs it as administrator, and Alt+Win+number opens that item's right-click menu of recent files.
  • Arrange the taskbar so the slot numbers suit you. He pins Notepad and drags it to the first position so that Win+1 opens it. His advice to non-developers is to do the same with Excel, and he jokes that the point of hotkeys is to make your co-workers feel bad about themselves.
  • Windows Terminal key bindings are edited in its settings JSON. He shows that Alt+Shift+D, a default binding, opens a new pane, and that he added Ctrl+W to close one so it behaves like closing a browser tab. He opens PowerShell, Ubuntu and a DOS-style shell as panes, then shows that Ctrl+Shift+number, also built in, opens a given shell profile.
Crosstalk SolutionsClearlyIP Panic Button
  • The panic button places a call the phone does not display. The USB button plugs into a ClearlyIP phone and dials a preset extension, ring group, page group or outside number. Whoever answers hears the room through the speakerphone while the phone shows no active call. The host sees it for banks, schools and classrooms, and finds it disheartening that US active-shooter incidents drive the demand.
  • The hardware was an unpriced prototype at recording. Expected MSRP is around $49 but not final, with availability expected within a couple of weeks. It has a six-foot cord for hiding under a desk or on a wall. Production units get a black cable and a 90-degree USB plug, since the phone's USB port sits on top. Crosstalk sells ClearlyIP products, and the host invites enquiries.
  • The same silent call works from an ordinary phone key. The dongle is only needed to hide the button away from the phone.
  • FreePBX's ClearlyIP devices module sets mode, key type and target. Emergency mode drops any call in progress to make the panic call, while normal mode acts as a line key. Silent call hides the call; speed dial shows it, which suits a lobby help button. The host points the button at ring group 550 and prefixes its caller ID with "PANIC" so receivers know it is an emergency.
  • A ClearlyIP feature code allows silent listening on any phone. Dialling *99 plus an extension, for example by a security guard, opens that phone's microphone with no indication on the handset. The host calls it a dangerous feature and notes that access to the code can be restricted.
Technology and FriendsTodd 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.
Crosstalk SolutionsOn the Road #4
  • A Flex switch on a camera's drop avoided a new cable run. For a restaurant needing another access point, the host estimated a new drop at two to four hundred dollars. Instead he put a USW-Flex on the cable already feeding a UniFi G3 camera and fanned it out to the camera and a black-skinned nanoHD.
  • The old UVC-G3 cannot run on 802.3af PoE. It accepts 24 V passive only, unlike the G3-AF, so the install stayed temporary until he could swap the camera head. The owner was pleased enough with the coverage to order a second access point. That one serves a back building cut off by a concrete wall about a foot thick.
  • A NanoStation and airCube rebroadcast a weak outdoor signal indoors. At rental cottages served for five years by a 2.4 GHz-only UAP Outdoor+, a homeschooling tenant could not hold a Zoom call. An airCube ISP (about $29) passes 24 V passive PoE to a NanoStation loco M2 (about $45). The NanoStation joins the guest SSID and the airCube creates Wi-Fi inside. Testing farther away than the final spot gave about 5.7–6 Mbps wired and 8 Mbps on a phone.
  • The host chose low-end gear because the outdoor AP limits the link. He says newer equipment could not pair with the 2.4 GHz-only Outdoor+, and he did not want to replace it. He supplied the equipment and instructions at his own expense for a former client, with no labour charge.
Technology and FriendsChristina 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.
Technology and FriendsChris 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.
Crosstalk SolutionsUniFi XG 6POE - 10G Network Switch
  • The XG 6POE suits two roles: high-power PoE distribution or core switch. At $599 MSRP, sold only in the Ubiquiti store at recording, the host sees it powering demanding devices such as G4 cameras and XG access points, or taking a fiber uplink from a Dream Machine or other firewall and fanning out 10-gigabit links to other switches.
  • All four RJ45 ports are multi-gig with PoE++. Each runs at 1, 2.5, 5 or 10 Gbps (the 2.5 and 5 Gbps rates are 802.3bz) and supplies 802.3bt power of up to 60 W per port; power comes from an included 210 W brick or a DC terminal block, and the two SFP+ ports auto-sense 1 or 10 Gbps.
  • Its layer 3 features exist only on the datasheet so far. The host says the layer 3 capabilities are undefined and unavailable at recording, promised for a future firmware update as with the Pro line. It is also indoor-only (−5 to 45 °C, 23–113 °F), not attic-grade, has a fan, and adds a USB-C console port beside the RJ45 one.
  • Adoption over fiber dropped the switch after its firmware upgrade. It disconnected from UniFi until the host unplugged the fiber and connected RJ45; after that the fiber worked normally. He calls it possibly a one-off anomaly or his own ordering mistake.
  • The host's test load drew only 28.2 W in total. A downstream USW-Flex powering a G4 Pro and a nanoHD drew 13.6 W and ran at about 116–117 °F, against 84–102 °F on the XG itself. An EnGenius ECW230 Wi-Fi 6 AP negotiated 2.5 Gbps at 8.1 W (a white link LED marks 2.5/5/10 Gbps, green marks 1 Gbps), and a UniFi LTE on 802.3bt used 5.3 W while powering a G3 Bullet through its PoE output.
Technology and FriendsLayla 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.
Crosstalk SolutionsAruba Instant On Access Points
  • Instant On trades configurability for simplicity, enough for most businesses. The host, reviewing units Aruba sent him, was pleasantly surprised and judges them right for easily 90% of customers. He says they fall short for the remaining 10% that needs band steering or separate, custom download and upload throttling. He reviews them because they carry no licence or subscription fees.
  • The lineup is five 802.11ac Wave 2 access points. The AP12 (3x3, 1,600 Mbps max data rate, 75 recommended clients) was $133.49 on Amazon and the AP15 (4x4, about 2,033 Mbps, 100 clients) about $160. The rest are a 2x2 indoor, a 2x2 outdoor and a 2x2 desk/wall unit; the host would like a higher-capacity 4x4 outdoor model.
  • The APs are cloud-managed only, with no onboard GUI. Setup runs through the Instant On web portal or phone app, and the AP15 was found and added immediately. The portal supports multiple sites for MSPs, scheduled firmware updates (his run Sundays at 3 a.m.), VLAN tagging or a routed NAT network with its own DHCP, SSID schedules, basic DPI and a customizable captive portal.
  • Bandwidth limits are fixed, symmetric, per-client tiers. The choices are 1, 5, 10 or 25 Mbps or unlimited, and the same limit applies to download and upload. In his test a 25 Mbps guest network gave exactly 25 Mbps down and 19 Mbps up (his upload tops out near 20 Mbps). The captive portal appeared on his iPhone but not on his computer.
  • The AP12 delivered his full internet speed on 5 GHz. He measured 540 Mbps on fast.com, 448/17 Mbps on speedtest.net and 429.9/19.1 Mbps on Ubiquiti's test from a phone, and it had been rock-solid for two days. Its metal back reached about 114 °F at idle; the AP15's wall mount stands roughly two inches off the wall, against about ¾ inch for the AP12.
Technology and FriendsAndrea 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.
GCastSupporting POST HTTP Requests with Spring Boot [GCast 83]
  • POST suits larger, more complex input than GET. Giard's reason is that POST carries data in the request body, not only in the URL. The episode adds a POST endpoint next to the GET methods built in the previous video's Spring Boot RESTful service.
  • Simple Java model classes define the JSON in advance. He puts them in a models package: a greeting input class with one personName property, and a greeting output class with one greeting property. Each has a getter and setter, a default constructor, and a constructor that sets the property when the object is created.
  • @RequestBody maps the posted JSON onto the parameter. The controller method returns a ResponseEntity of the greeting output type and takes the greeting input as its parameter. @PostMapping sets the path ("Hello", uppercase H) and both consumes and produces as application/json. The method reads the person's name, builds "hello" plus the name into a greeting output object, and returns it wrapped in a new ResponseEntity with HttpStatus.OK.
  • Postman sends the test POST with a JSON body. Giard describes Postman as a free, quick download for Windows, Mac or Linux. He posts to localhost:8080/gcast/hello, sets the Content-Type header to application/json, and sends a body with personName set to his own name. The demo returned HTTP 200 and a JSON greeting of "hello, David Giard". He adds that a real application will do more than join strings, but the principle is the same.
GCastCreating a RESTful Web Service with Spring Boot [GCast 82]
  • Two annotations turn a class into a URL-mapped REST controller. Building on the project from episode 81, Giard adds a controllers package (a package maps to a folder on disk) and a controller class. He marks it @RestController and gives it @RequestMapping("gcast"), so requests to the domain followed by /gcast reach the class. IntelliJ adds the import statement when he tab-completes the annotation.
  • A method returns a ResponseEntity and gets its own mapping. A ResponseEntity<String> is an HTTP response: a status code (200 OK, 404 not found), headers and a body. His sayHello method returns new ResponseEntity<>("hello", HttpStatus.OK) and is marked @GetMapping("greet"). GET is the verb a browser uses when a URL is typed in, and @PostMapping would serve POSTs. The app runs on port 8080, and localhost:8080/gcast/greet returned "hello".
  • A path variable makes the route dynamic. A second method maps greet/{personName} and takes a parameter marked @PathVariable("personName"), returning "hello" plus the name with a 200 status. The path and parameter names need not match, but he keeps them the same so the mapping is easy to read. /gcast/greet/David returned "hello David". He calls this the gist of a REST API, which could go on to return JSON or look data up in a database or another service.
Crosstalk SolutionsUSW-Flex-Mini
  • The USW-Flex-Mini is a $29 managed switch with trade-offs. It has five gigabit ports, is about the size of a deck of cards, and at recording was sold only in the Ubiquiti store and was consistently out of stock. It is powered by 802.3af/at PoE or USB-C (the host prefers PoE), and its other ports offer no PoE pass-through.
  • Hosted-controller adoption relies on DHCP option 43, because there is no SSH. Adopting to a local Cloud Key Gen2 Plus on the same LAN was a simple click. For his hosted controller the host had to put the switch on a separate network and point DHCP option 43 at the controller, which he calls hit and miss. SSH refuses connections, so a manual set-inform is impossible.
  • Controller version 5.12.35 adopts it, contradicting a claimed 5.12.60 minimum. The host adopted it to controllers on UniFi 5.12.66 and 5.12.35, and both updated it to the same firmware. He does not know the true minimum version.
  • Custom VLAN port profiles do not work on the Flex Mini. Ports take only the All or Disabled profiles or a single untagged network, so a profile carrying the native LAN plus only the IoT VLAN tagged is unavailable. In testing, a Raspberry Pi on an All port took addresses on both the native LAN and VLAN 107. That suits putting a TV's devices on an isolated IoT network.
Scott HanselmanTips & Tricks: Preparing your Windows 10 machine for a virtual/remote/Zoom/Teams/Skype presentation
  • Size the screen for the smallest viewer, not your monitor. Hanselman drops his 4K display to 1080p and suggests 720p if viewers may be on a small Android device, tablet or older phone; he also weighs 100% against 125% scaling, enlarges code in Visual Studio Code with Ctrl + +, and checks that selected text and the theme have enough contrast.
  • Be deliberate about everything on screen. He calls being "as conscious as possible" of what is on screen his number one tip: hide desktop icons via right-click, turn off the clock in system icons so the content stays evergreen, auto-hide the taskbar, reconsider the wallpaper, and check that his own picture-in-picture does not cover content (or drop it entirely).
  • On-screen annotation makes a talk interactive and clean. He shows ZoomIt (zoomit.exe, "not to be confused with Zoom") running from the tray: drawing on screen with Ctrl+Shift and click-drag, G or Y for green or yellow, Ctrl+1 to move around and circle what he wants, and Escape to clear it.
  • Hotkeyed scenes let a talk be recorded without editing. He says this video was made in about 5 or 10 minutes with zero editing using Open Broadcaster Software and ZoomIt, with scenes bound to hotkeys and a name or Twitter handle overlaid; he points to setup notes in the description and on his blog.
Technology and FriendsSarah 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.
GCastSpring Boot Quick Start [GCast 81]
  • A web page generates a complete Spring Boot project for you. Giard, who calls himself a C# developer who has almost never written Java, goes to start.spring.io (linked from Quick Start on spring.io). He keeps a Maven project, Java as the language and the default current Spring Boot version. He sets the group to com.gcast ("kind of like a namespace in C#") and the artifact to gcast. Clicking Generate downloads the project as a zip file.
  • Dependencies are chosen on the same page before generating. He searches for "web" and adds the Spring Web dependency now, because the next episode turns this project into a web service. He describes Spring Boot as built on the Spring framework, a set of tools for enterprise Java development.
  • The generated project is configuration plus a one-line bootstrap. Opened in JetBrains IntelliJ (he uses the free edition; any IDE will do), pom.xml holds the Spring Boot version, the Java version and dependencies such as Spring Boot Starter Web and Spring Boot Starter Test. The only code is a main method that calls SpringApplication.run. It compiled as generated, and after he added a print line ("gcast rocks") it ran and printed it.
Technology and FriendsBrent 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.
Scott HanselmanCollaborating with a digital whiteboard using Microsoft Whiteboard + your iPad or Windows 10 PC
  • The whiteboard works independently of your meeting tool. Hanselman presents Microsoft Whiteboard, in a remote-work series, as a free app from the Microsoft Store and the iOS App Store that participants can join whether the call runs on Zoom, Teams, Skype or Google Meet.
  • A pen device can join alongside the machine you share. With his iPad and Windows PC signed into the same account, ink and moves made on the iPad sync live to the Windows app, so he can share his Windows screen while drawing with the iPad pencil.
  • Ink is converted into shapes and tables. He shows rough squares and circles snapping to clean shapes, and a hand-drawn grid becoming an actual table that he then moves on the iPad and watches move on Windows.
  • Templates are in preview and may be buggy. On the iPad he applies preview templates such as brainstorm and a Kanban board with swimlanes, which open on an infinite-scrolling canvas; he warns preview features "might have a couple of bugs".
  • The apps beat the web version. He says a web-based version exists but "isn't as good as the app version", and recommends the iPad/iPhone app with the pencil plus the Windows 10 app for classrooms, kids and work.
Scott HanselmanTech Support: How to get your webcam, microphone, and speaker working in Zoom, Meet, Skype, or Teams
  • Pick the camera yourself; two apps cannot share one webcam. Hanselman says every meeting app (Zoom, Teams, Skype, Google Meet) has video settings, usually "near your face", with a drop-down of cameras; one already in use by another program greys out or fails. Devices like a Surface have front and back cameras, so choose the one you can see yourself in — if you cannot see yourself in settings, the call will not work either.
  • Check your bandwidth before turning on HD video. He suggests testing at fast.com: around 4–5 megabits gives decent video and 10–15 is ideal, and HD only makes sense on good connections. Household streaming competes for the line, so he suggests having kids pre-download movies, putting their iPads in airplane mode, or having a technical friend set router quality of service (QoS) to prioritise the work computer.
  • Microphone and speaker are separate choices; test both. In the app's audio settings, speak and watch which microphone's meter moves — if it does not move, no one can hear you. He uses one microphone for input and a speakerphone for output only, because its own mic "doesn't sound good", and recommends a lightweight Logitech over-ear headset. Windows defaults live under right-click on the taskbar speaker → Open sound settings, where input and output devices (e.g. a built-in Realtek mic, a webcam mic, headphones) can be set once for every app.
  • Light your face from the front, not behind. He contrasts himself on a good camera in the dark against the same shot lit; fancy lights are unnecessary, and facing a kitchen window beats sitting with the light behind you.
  • Browser meetings need camera permission, and a block must be undone. Google Meet runs in the browser (unlike the Zoom app), so the browser asks to use the camera and shows a red dot while it does; he notes it is not watching you all the time, and suggests a physical camera cover for anyone uneasy. If someone clicks Block, the fix is the browser's camera or privacy settings, removing the site from the block list, then refreshing and choosing Allow. Meet also lets viewers turn down the resolution of incoming video, down to one video at a time, which he recommends for connections under about 4 megabits.
Crosstalk SolutionsHow To Share Wifi with Your Neighbors
  • Share internet through a separate guest VLAN, not your LAN. The host's demo uses an EdgeRouter X (about $59 new) with the LAN on 192.168.100.1/24 and guest VLAN 101 on 192.168.101.1/24, each with its own DHCP range and DNS listening on both interfaces. He adds no extra firewall rules, saying the same approach works on a USG or pfSense.
  • A wireless bridge is optional. It only adds distance. An outdoor access point on a long cable with a "free Wi-Fi" sign is enough. For the far end the host recommends the UAP-AC-M, cheap and pole-mounted, over the wall-mounted UAP-AC Pro he demoed with. His bridge pairs a NanoBeam M5 (NBE-M5-16, about $65 on eBay) as access point with an older NanoStation Loco M5 as station.
  • With no PoE switch at the remote end, chain power instead. The full-size NanoStation M5's secondary port passes 24V passive PoE to a UAP-AC-LR or UAP-AC-M, so one plug runs both. Otherwise daisy-chain two PoE injectors' LAN ports, as the host did with a passive injector and an 802.3af one.
  • Bridge setup points: default IP, NTP, mode, and channel. Factory-reset NanoBeams and NanoStations come up on 192.168.1.20 and need static addresses in the real LAN. NTP must be enabled to use UNMS, one side is set to access point and the other to station with matching WPA AES, and a congested 5 GHz band may need a manual channel. The host's test bridge reached 300×300 with airMAX quality 96% and capacity 91%, on firmware XW v6.2.0.
  • UniFi guest policies isolate guests; a user group throttles them. The open SSID is tagged to VLAN 101 with guest policies on, and the guest group is capped at 5 Mbps down and 2 Mbps up. That cap is per user, not total. The host skips UniFi's captive portal, which he finds unreliable, and suggests a periodically changed password instead. In testing, the secure SSID gave about 90 Mbps on fast.com and the guest SSID almost exactly 5 Mbps.
Scott HanselmanHow to REALLY use Microsoft Word - Hidden and Useful Features! =lorem()! Dictation! Stylistic sets!
  • Word generates its own placeholder text; no website needed. Commenters on his previous Word video pointed out that typing a formula like =lorem() or =rand() with paragraph and sentence counts produces filler text — he shows =rand(10,4) giving ten paragraphs of four sentences — where he had copy-pasted from a lorem ipsum site.
  • Custom AutoCorrect entries automate anything you type twice. Under File → Options → Proofing → AutoCorrect he adds his own shortcuts, such as "(URL)" expanding to his website address; a company street address is his other example. His rule: "anytime you do something twice you might want to think about automating it."
  • Built-in dictation works well if you enunciate and speak punctuation. He dictates a passage in a deliberate, newsreader-style voice, saying "comma", "period" and "exclamation point" aloud, and judges the result "99% of what I was trying to say". He flags it as recently added and useful for people with limited hand motion or repetitive stress injuries.
  • Word's clipboard collects multiple items to paste individually. The Clipboard pane holds a history of copies, and he says most people open it by pressing Ctrl+C twice. Windows has its own clipboard history on Windows+V, with an opt-in setting to sync across devices that he turns on because he uses several machines, while noting it depends on your sense of privacy.
  • OpenType stylistic sets turn ordinary fonts into invitation-grade lettering. With a font that includes ligatures (Gabriola), right-click → Font → Advanced → OpenType features exposes ligatures and numbered stylistic sets; he shows set 5 transforming the letters, with Word adjusting spacing where a flourish would collide. He says Word has supported this "for a very very long time" and that he used it for his own wedding invitations.
Scott HanselmanHow to REALLY use Microsoft Word - Columns, Breaks, and spaces in Tables
  • Layout → Columns makes text overflow between columns automatically. This answers the first of three questions from a commenter, Jeff Brooks; with the whole document set to two columns, text typed at the bottom of the first column flows into the second.
  • Columns for part of a page rest on continuous section breaks. Selecting paragraphs and choosing two columns works, but Hanselman shows what Word does underneath: Layout → Breaks → Continuous before and after the passage, two columns inside, one column after. A column break instead forces the following text into the next column when you want a block kept together. He recommends working with paragraph marks visible so section breaks and stray formatting can be seen.
  • Control horizontal space with indents, not tabs or spaces. Strings of tabs and spaces look "goofy" and Word itself converts them into indent changes; the ruler (View → Ruler) is where first-line and other indents are set. In a table, Tab jumps between cells, so the way to add space is to select the column and move its indent on the ruler.
  • A blank trailing page after a table is a dangling paragraph mark. With paragraph marks shown, the leftover paragraph after the table is visible and deleting it removes the extra page. The reverse problem — a table at the top of a page with no way to type above it — is solved by getting a paragraph mark above the table, which he does by moving the table down a line.
  • Vertical whitespace belongs in paragraph spacing, not empty paragraphs. Right-click → Paragraph lets you set space after each paragraph in points; he changes 11.25 to 25 and to 4 to show the spacing is attached to the paragraph mark. He points to his other Word videos on styles for applying this across a document.
Crosstalk SolutionsFreePBX Emergency Greeting
  • Put the emergency announcement before time conditions so every caller hears it. On a typical inbound flow (time conditions, IVR greeting, ring group, voicemail), the host inserts the message at the very start so it plays at any time of day. He suggests it for closures, changed hours, longer hold times, or instructions such as a restaurant switching to takeout only.
  • It takes three FreePBX steps: recording, announcement, then inbound route. Record the message under Admin > System Recordings, by uploading a WAV or MP3, in the browser, or by having FreePBX ring your extension. Then create an Applications > Announcements entry that plays it and goes on to the business-hours time condition. Finally, point the inbound route's destination at that announcement instead of the time condition.
  • The IVR's stock "invalid response" prompt can be turned off. In the host's test call, the default voice played a no-valid-response message after the IVR timed out. He says he normally disables it and sends a timeout straight to the ring group.
Crosstalk SolutionsEnGenius Cloud and SkyKey Review
synopsis

The host concludes that EnGenius is a workable, partly cost-effective choice for an MSP that standardizes on one of its two platforms, but less full-featured than its competitors. Its Wi-Fi 6 access point is expensive and, in his test, slower than the AmpliFi Alien. EnGenius sent the equipment, and the host says his opinions are his own and that he came in wanting to be impressed after a poor experience four to five years earlier.

The hardware. The SkyKey is an on-site controller like UniFi's Cloud Key, at $98.99 against $179, and manages up to 100 devices per site. The ECS1008P is an 8-port gigabit PoE switch at $128.95. The EAP1250 is a 4×4 MU-MIMO 802.11ac Wave 2 access point at $73.50. The ECW230 is a 4×4 802.11ax access point with a 2.5 GbE port, and its $550 MSRP was confirmed by the EnGenius rep.

Two product sets. Setup was easy, using QR codes and a phone app. However, the SkyKey and EAP1250 belong to the on-premises line, while the ECW230 and ECS1008P belong to EnGenius Cloud. The cloud dashboard does not show devices behind a SkyKey, so you have to remote into each one. The on-premises line keeps local control; the cloud line needs internet access to administer.

The interfaces. The SkyKey interface looks dated but is complete: eight SSIDs, layer-2 isolation with a MAC whitelist, per-user shaping, RADIUS and mesh. The cloud interface, which the host prefers, adds zero-touch provisioning for MSPs, captive-portal options and "clone from". On the other hand, it covers only Wi-Fi, with no firewalls and no wired-client statistics. Its isolation has no MAC whitelist, and the switch did not tag VLAN 10 until he set it on each port.

Performance. In iperf at about 6 feet, the ECW230 gave about 340–350 Mbps on one stream and 434–450 Mbps on six. The host rates this lower than the Alien, while noting that a single-client test understates Wi-Fi 6. A phone speed test running alongside reached 144/22 Mbps on a 400/20 line.

  • EnGenius sells two separate platforms, and they don't integrate. EnGenius supplied the gear; the host says his opinions are his own and that EnGenius had not impressed him four to five years earlier. The on-premises line (SkyKey controller, EAP1250) and the EnGenius Cloud line (ECW230, ECS1008P) are managed separately. Devices behind a SkyKey never appear on the cloud dashboard; you have to remote into each SkyKey. He advises MSPs to standardize on one line.
  • Parts of the range are cheap; the Wi-Fi 6 access point is not. The SkyKey is $98.99 on Amazon against $179 for UniFi's Cloud Key Gen2, managing up to 100 devices per site. The EAP1250 (4×4 MU-MIMO, 802.11ac Wave 2) is $73.50, which the host puts at about half Ubiquiti's closest equivalent. The ECW230 (802.11ax 4×4, 2.5 GbE port) has an MSRP of $550, confirmed by the EnGenius rep, against what he recalls as about $399 for the AmpliFi Alien.
  • The SkyKey interface looks dated but does everything needed. The host found up to eight SSIDs per access point group, layer-2 isolation with a MAC whitelist (so a shared printer stays reachable), band steering, per-user or per-SSID traffic shaping, RADIUS, mesh and floor-plan views. His verdict is that it "will get the job done" for low-cost deployments.
  • The cloud interface is nicer but covers Wi-Fi only. The host prefers it, citing QR-code device claiming that lets an MSP preassign gear before shipping, a "clone from" button, and rich captive-portal options. Against that: there are no EnGenius firewalls, no wired-client statistics, layer-2 isolation has no MAC whitelist, and it needs internet access to administer. On the ECS1008P, VLAN 10 was not tagged on any port until he set it by hand.
  • The ECW230 ran slower than the AmpliFi Alien in the host's tests. In iperf at about 6 feet, one stream gave about 340–350 Mbps (310 Mbps reversed) and six streams 434–450 Mbps. He notes a single-client test understates Wi-Fi 6. With a phone speed test running at the same time (144/22 Mbps on a 400/20 Spectrum line), the desktop briefly dropped to 76–197 Mbps.
Technology and FriendsJaidev 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.
Crosstalk SolutionsFestival Grounds PTMP Network
  • Use 2.4 GHz point-to-multipoint across the grounds, given the tree cover. Bob Burkett, chief of the Summer Hill Volunteer Fire Department in Pennsylvania, asked for Wi-Fi for vendors' card readers at a two-day festival, which he says earns over half the department's yearly operating budget. The grounds are about 550 by 200 feet, with internet in building A only. The host chose point-to-multipoint over two point-to-point NanoStation links, which would be cheaper, so that more receivers can be added later.
  • Use the US-8-150W core switch, which powers both PoE types. It supplies both 24V passive and 802.3af PoE, so it can power any of the Ubiquiti gear in the design. The cheaper US-8-60W cannot supply 24V passive.
  • Buy a used Rocket 2AC Prism rather than a Rocket M2. New, the Prism costs $205 plus $156 for the 10 dBi omni (AMO-2G10). Used, the Prism is about $100 on eBay. A used Rocket M2 (about $75) saves only about $25 for roughly half the bandwidth. The $100 RF Armor enclosure is optional for a short autumn deployment. link.ui.com showed 100% signal with the omni at about 40 feet; the host expects 80–90 Mbps at each NanoStation.
  • Each remote building gets a NanoStation M2 that powers its indoor access point. Its 24V passive passthrough runs a UAP-AC-LR indoors; the host would start with one per building. An outdoor UAP-AC-M-Pro on the wall needs its own PoE injector. The second Mesh Pro on building C is optional, pending on-site testing the host has not done. An optional movable "pod" (NanoStation M2 plus UAP-AC-M on a stand, run from a Jackery battery for about four hours) can fill dead spots.
  • The build costs $1,569 new, or about $1,011 used on eBay. Both figures cover buildings A, B and C only, excluding the optional pod and RF Armor. The host also asked viewers to donate equipment through Crosstalk.
Crosstalk SolutionsArgon40 Cases for Raspberry Pi
  • The $15 Argon NEO is now the host's standard Raspberry Pi 4 case. It offers the Flirc look with the GPIO access that made Pimoroni's case the winner of his earlier roundup. Cooling is passive, through a thermal pad into the metal top: he measured 95–98°F on the case at idle and 115–120°F after a 10-minute CPU stress test. The official Pi camera did not fit its camera mount. He bought both cases himself and links to them through Amazon affiliate links.
  • The $25 Argon ONE suits media-centre or retro-gaming use. A daughterboard moves the ports to the back, and it has both a fan and a thermal pad. Its power button runs from an installed script: press to power on, double-tap to reboot, hold 3–5 seconds for a graceful shutdown, hold over 5 seconds to force off. The host tested the Pi 3 version by mistake; a Pi 4 version is sold.
Crosstalk SolutionsCisco RV345P
synopsis

The host, a UniFi-focused reviewer who had not administered Cisco gear in about 15 years, reviewed the RV345P at Cisco's invitation. He ends up calling it a solid, unforgiving firewall for small and medium businesses with sub-gigabit connections, and fairly priced at $471.21 given a year of Cisco support. He will not resell it yet, because its licensing turned out to be less simple than Cisco first told him.

Hardware and setup. The unit has 16 gigabit ports, eight of them PoE, plus two WAN ports, two USB 2.0 ports for storage or 3G/4G LTE dongles, and an RJ45-to-9-pin-serial console cable. Default login is cisco/cisco, and the first screen forces a password change. Changes apply to the running config at once and are lost on reboot unless saved to the startup config.

Interface tour. The highlights are log filtering, multi-WAN load balancing by percentage or bandwidth (USB LTE included), and per-port PoE caps. On the downside, DHCP options are limited to 66, 150, 67 and 43. SIP ALG and UPnP are off by default. The Cisco end of a site-to-site IPsec tunnel to his EdgeRouter 4 was set up entirely in the GUI, while the EdgeRouter needed its CLI. Application control has short app lists, so he would filter through DNS (Cisco Umbrella) instead. Quoted throughput is 950 Mbps, or 650 Mbps over VPN. He found no figure for the cost of IPS.

Licensing. Registering showed him as out of compliance. Cisco then explained that routing, firewall and VPN are free, but the security features cost $121.99 a year, and that buyers who do not use them can skip licensing entirely.

Verdict. He calls it not for beginners, who should buy a consumer router instead. He would put one in at a client without qualms, but has not run one in production.

  • Routing, firewall and VPN are unlicensed; the security features are not. Cisco approached the host to review the RV345P and told him it had no licence fees, lifetime software updates, a limited lifetime warranty and a year of tech support. After registering, he was shown as out of compliance, and Cisco then explained that everything under the security tab (content filtering, antivirus, IPS) needs a $121.99 annual licence, while buyers who skip those features need not register at all.
  • The built-in application control is too thin to rely on. The dating category lists nine apps and leaves out match.com, so the host would handle filtering for a business through DNS filtering such as Cisco Umbrella or OpenDNS, forcing users onto those DNS servers. He could not find whether turning on IPS cuts throughput. The figures he found were 950 Mbps standard and 650 Mbps VPN.
  • Per-port PoE power caps are a feature the host had not seen before. Each of the eight PoE ports can be given a maximum allocation in milliwatts. His UAP-AC-Pro drew 3.6 W against a default 30,000 mW allocation, so he suggests capping such a port at about 6 W. He also approved of SIP ALG and UPnP being off by default, but found only DHCP options 66, 150, 67 and 43.
  • The Cisco side of a site-to-site IPsec VPN worked entirely in the GUI. Building a tunnel to his EdgeRouter 4 took 45 minutes to an hour, and the EdgeRouter was the harder side: he had to delete his GUI config and use its CLI. Filtering the logs to VPN entries helped him find the fault. The unit supports 50 tunnels, and multi-WAN can load-balance by percentage or by bandwidth across both WANs and the USB LTE dongles.
  • The host rates it a solid SMB firewall, not a beginner's one. He sees it fitting businesses with sub-gigabit internet, and says the $471.21 Amazon price is fair for 16 ports (eight PoE) plus a year of Cisco support; a non-PoE version is $338.16. Buy from the Cisco Systems seller (affiliate link), since a rep warned that knockoffs may not carry the warranty. He has not run one in production and will not resell them until the licensing is clear.
Technology and FriendsDon 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.
Technology and FriendsA 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."
Crosstalk SolutionsKari's Law e911 Compliance
  • Existing phone systems get one to two years to comply. According to the host, new multi-line telephone system (PBX) installs must comply with Kari's Law and the RAY BAUM'S Act from 16 February 2020. Existing fixed desk phones have until February 2021, and softphones, mobile and off-premises phones until February 2022. He expects the technology for those last devices to catch up by then, so he advises fixing fixed phones first.
  • Phones must reach 911 directly, alert staff, and give a dispatchable location. No "9" prefix can be required, a rule traced to Kari Hunt's 2013 killing, when her daughter's hotel-room 911 call failed. A 911 call must notify a central point (email, SMS or a page group) that need not be staffed 24/7. The location sent must be detailed down to floor and room. His FreePBX dial patterns route 911, 9911 and 9-911 variants, and 933 lets you test.
  • The host recommends ClearlyIP over Crosstalk's own SIP trunking for compliance. He says ClearlyIP's E911 goes beyond anything else he has seen, including the wholesale SIP trunks Crosstalk resells, and can be used for E911 alone. It sends a 16-digit caller ID (a 10-digit number plus a 6-digit location code) and turns the code into an address for the PSAP. He links it with a referral code that pays Crosstalk.
  • Location codes cost far less than one DID per extension. With a typical SIP provider, each location needs a DID at about $1 a month plus an E911 address at about $1 a month. In his two-storey, 12-room example that comes to $24 a month. ClearlyIP charges $1 per callback profile (two ring groups) plus $0.50 per dispatchable location, $8 a month in total, saving $16 a month (about $200 a year). A 1,000-room hotel done one-to-one would cost about $2,000 a month.
  • Hot-desk phones must dial 911 logged out and set location at login. The host knows of no vendor other than ClearlyIP that does both. Its system also lets roaming users pick from an admin-limited list of locations, either on the phone or in the user control panel. He stresses that installers are responsible for their customers' compliance, and Crosstalk offers compliance reviews.
Crosstalk SolutionsRaspberry Pi 4 Case Showdown!
  • The host's overall winner is Pimoroni's Pibow Coupé 4. It is $9.10 direct from the UK, since it is not on Amazon; US shipping was about $5–6. He prefers it for its slim profile, which leaves the USB and Ethernet ports sticking out, for its full GPIO access, and for its looks. It only takes low-profile heatsinks, and his unit carries Pimoroni's Fan SHIM. Links to the other cases are Amazon affiliate links.
  • The Flirc case wins if you will never touch the GPIO. For a Pi-hole-style build, the host would choose the $15.95 Flirc over the Pimoroni. It is the easiest to build (four screws), and the aluminium shell works as the heatsink, touching the CPU through a supplied thermal pad. It has no fan and no GPIO access.
  • The C4 Labs Zebra Virtue was eliminated for cost and fiddliness. It cost $24.99 plus $5.15 shipping ($30.14), close to the price of the Pi itself. It has the biggest fan and solid hardware such as countersunk nuts, but it was the hardest to assemble, and the host judged that the build quality does not justify the price.
  • The acrylic stack cases from GeeekPi and Miuzei are near-identical. GeeekPi is $9.48, and Miuzei is $9.99 for the case or $15.59 with a switched power adapter, which the host recommends for any Pi. He kept the Miuzei for its base and bigger rubber feet, then dropped it in favour of the Pimoroni because it encloses the ports.
  • The cheapest case works but uses screws that strip. The $8.99 clamshell case came with a fan, heatsinks and feet, was easy to build, and leaves the GPIO open, but the host would not use it himself. His fan-wiring tip: the label faces the CPU, red goes to 5 V and black to ground on the GPIO header.
Scott HanselmanHow to set up a Windows 10 machine for Linux Development w/ WSL! Can we convert a diehard machead?
synopsis

Hanselman walks a Mac developer through turning their Windows gaming PC into a Linux dev box, recorded in February 2020. By the end the guest has Windows Terminal pinned as Windows+1 and opening Ubuntu by default, themed to taste, and VS Code editing and debugging Go and Python that run inside WSL, with nothing installed on the Windows side. WSL 2 and Docker are left for later, either when the release ships "later this year" or by joining the Insider program.

Terminals and distros. He starts by separating the terminal from the shell: the command prompt the guest dismisses as "Windows 95" can launch bash or PowerShell, and Hyper is just another front end. WSL hosts any number of Linux distributions. He installs Alpine from the Store beside Ubuntu 18.04, selects between them with wsl -d, and notes they can be exported and imported as tar files.

Configuring Windows Terminal. The free, open-source preview finds both distros on its own. Working from a gist of his own settings, they edit its JSON: an Ubuntu colour scheme he made with Kayla Cinnamon, iTerm themes, acrylic opacity at 0.85, the Cascadia Mono PL font, a vintage green cursor (bright green fails, #00FF00 works), and a default profile that opens in the home directory. He contrasts its DirectX rendering with Hyper's Chromium.

WSL 1 against WSL 2. The guest is on Windows 1909 and WSL 1. On the whiteboard he explains that WSL 1 sends Linux syscalls to the Windows kernel. That is lightweight, since Linux processes show in Task Manager, but "maybe half as fast". WSL 2 runs a roughly 50 MB Microsoft Linux kernel fork in a utility VM that starts in under a second. It is set per distro and brings full Docker support. He describes the Insider fast ring as riskier and the slow ring as roughly monthly and including WSL 2, and says he runs slow without major problems. He also warns against editing Linux files from Windows through \\wsl$.

VS Code across the boundary. Running notepad.exe from Linux shows Windows taking over commands Linux cannot run. code . opens VS Code with its server inside Ubuntu, where htop shows it running. Opening a Python file installs the Python extension in WSL, and the guest debugs it from Windows. A Go file pulls in the Go extension and its 17 tools, again inside Linux only. The guest adds Vim keybindings and finds the integrated terminal and split panes, and says Hanselman is "making a hard case" for switching to VS Code.

  • The terminal is not the shell. Hanselman shows the guest, a Mac developer who had installed the third-party Hyper terminal, that the old command prompt can itself launch bash, PowerShell or any installed Linux; Hyper, Windows Terminal and cmd are all just front ends to whichever shell they are pointed at, as Xterm and iTerm are on a Mac.
  • WSL runs as many Linux distributions side by side as you like. He adds Alpine from the Windows Store next to the guest's Ubuntu 18.04, then shows wsl -l to list them, wsl -d to pick one, and wsl --export/--import to move a tuned distro to another machine as a tar file.
  • Windows Terminal is the native, configurable replacement for Hyper. The free, open-source preview auto-detects the installed distros, and its JSON settings hide profiles, set colour schemes (an "Ubuntu legit" scheme he made with Kayla Cinnamon, imported iTerm themes), acrylic transparency, the Cascadia Mono PL powerline font and cursor shape and colour, all reloading live. He says it renders through DirectX where Hyper goes through Chromium, and the guest says its font rendering is better.
  • WSL 2 swaps syscall translation for a real Linux kernel. As of February 2020, WSL 1 hands each Linux system call to the Windows kernel, which he puts at "maybe half as fast" as it could be. WSL 2 runs a roughly 50 MB Microsoft fork of the Linux kernel in a lightweight VM that boots in under a second, can be chosen per distro, and brings full Docker support; he says it ships "later this year", or now through the Insider slow ring, which he uses.
  • VS Code splits itself across the Windows–Linux boundary. Typing code . in WSL opens a Windows editor with its server running inside Ubuntu, so the Python and Go extensions and the Go toolchain install only in Linux. The guest then sets breakpoints and debugs Linux-hosted code from Windows. Hanselman also warns against editing Linux files from Windows through \\wsl$, because Linux is not told about the change.
Technology and FriendsBryan 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.
Technology and FriendsJean 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.
Crosstalk SolutionsUniFi Dream Machine Pro (UDM-Pro)
synopsis

The host spent about four days with the UDM Pro, which Ubiquiti sent him free. He comes away liking it and planning to move his own network onto it, but unsure who it is for. For a home it is overkill, and for a small business it puts the controller, routing, surveillance, door access and phones in one 1U box that becomes a single point of failure. He would deploy one only with a spare to hand.

The hardware. At an MSRP of $379 it combines a UniFi controller and gateway with eight gigabit ports (no PoE), one WAN and one LAN 10G SFP+ port, a 1.3-inch touchscreen, and a drive bay for UniFi Protect that takes 2.5- or 3.5-inch drives. A port on the back connects the forthcoming USP-RPS redundant power unit. Inside, a molded air duct with two fans pushes air out the top rear, and there is spare room, which the host suspects is meant for a second drive tray later. Noise idles at 46–48 dB, with the fans at about 50% and 2,800 RPM. That is audible in a home office but quiet next to rack servers.

Setup and applications. Setup runs in a browser from 192.168.1.1 and needs internet access and a Ubiquiti SSO login. After a reboot the drive was recognized and Protect could be installed. Access set up without devices attached, but Talk, then in beta, failed with a "user not whitelisted" error. A G4 Pro camera worked on Protect. The host found no published camera limit. He reasons it depends on how hard the other applications are working, and guesses at least the Cloud Key Gen2 Plus's 20 cameras. Ubiquiti's 8 TB drive option is $190, which undercuts the WD Purple ($223) and Seagate SkyHawk ($233) on Amazon, though Ubiquiti does not say which drive it fits.

Differences from standard UniFi. The controller is single-site and cannot be swapped for a hosted controller. There is no config.gateway.json and only one WAN IP per interface. The host found no graceful shutdown. With the WAN unplugged, SSO login still worked and skipped 2FA, which he calls convenient but a risk if someone has physical access.

Datasheet claims tested. Dual-WAN failover worked: about ten seconds to fail over and about as quick to fail back, but there is no load balancing. LTE failover and RPS redundancy are UniFi or pro-line features, not UDM Pro ones. With IPS at level 5 and DPI on, he measured 454/22 Mbps on his 400/20 line, so his connection showed no bottleneck. For comparison, Ubiquiti's IPS figures are 85 Mbps for the USG, 250 Mbps for the USG Pro, 1 Gbps for the XG and 850 Mbps for the base UDM. He asked viewers with gigabit lines for results. The UDM-only DNS filtering was still an alpha feature and, in his view, needs more customization.

Verdict. He dismisses the complaint about the empty chassis. He calls omitting PoE the right trade-off, since buyers will add a UniFi PoE switch anyway. What he wanted was a dual-drive RAID 1 version, which he would pay about $100 more for, around $479. His central reservation remains putting every critical service on one appliance.

  • The host likes the UDM Pro but hesitates to recommend it. For home use he calls it overkill unless you are a Ubiquiti enthusiast. For a small business, running UniFi, Protect, Access and Talk on one 1U box is a single point of failure, so he would only deploy it with a spare on the shelf, or as an MSP holding stock. Ubiquiti sent the unit free; he says his opinions are his own.
  • It combines controller, gateway and switch, without PoE. At an MSRP of $379 it has eight gigabit ports, one WAN and one LAN 10G SFP+ port, and a drive bay for Protect that takes 2.5- or 3.5-inch drives. The host accepts the lack of PoE as the price of keeping it cheap. He says he would have paid $479 for a version with RAID 1 dual drives.
  • IPS at maximum still delivered his full 400/20 connection. With threat management at level 5 and DPI on, he measured 454/22 Mbps. Ubiquiti's IPS figures are 85 Mbps for the USG, 250 Mbps for the USG Pro, 1 Gbps for the USG XG and 850 Mbps for the base UDM; the UDM Pro reportedly does about 3 Gbps. He could not test gigabit, and expects heavy Protect, Access or Talk use to cut throughput.
  • It drops several standard UniFi capabilities. It runs a single site, cannot be adopted by a hosted controller, and has no config.gateway.json. It allows one WAN IP per interface and has no graceful shutdown that he could find. Login uses Ubiquiti SSO, but with the WAN unplugged he logged in without 2FA, which he flags as a risk if someone has physical access.
  • Dual-WAN failover worked in about ten seconds, with no load balancing. Failback was similarly quick. The host notes that LTE failover (U-LTE, $15 a month for the first GB and $10 a GB after, on AT&T) and RPS power redundancy are UniFi or pro-line features rather than UDM Pro ones. Ubiquiti's 8 TB drive option is $190, against $223–233 on Amazon for the WD Purple and Seagate SkyHawk, so he suggests the factory install.
Scott HanselmanBasic Text Editing and Hotkeys in VS Code - Computer Stuff They Didn't Teach You #3
  • Every trip to the mouse is a small context switch. Hanselman's rule is to notice each time a hand leaves the keyboard and ask whether it added value. A quick double-click on a word is fine, but reaching for menus to copy and paste is the kind of habit that slows newer developers down.
  • Arrow keys plus modifiers cover most movement and selection. Shift selects, Ctrl moves by word and Shift+Ctrl selects by word, while Home, End and Shift+Page Up/Down handle lines and pages. Alt+Up/Down moves a line, Shift+Alt+Up/Down copies it, and Ctrl+Up/Down scrolls. For the mouse, a double-click takes a word, a triple-click a paragraph and four clicks everything.
  • VS Code's code-aware selection beats selecting by hand. Shift+Alt+Right expands the selection along the syntax tree, widening block by block in JSON or JavaScript, and Ctrl+Shift+\ jumps between matching brackets, for example when the partner bracket is pages away from line 653.
  • Multiple cursors are a smarter search and replace. Alt-click places extra cursors, Shift+Alt-drag makes a box selection, and Ctrl+Shift+L selects every occurrence of the current selection (13 in his sample text) so they can all be edited at once. Ctrl+F, Ctrl+H and Ctrl+Alt+Enter remain the conventional route.
  • About ten hotkeys are enough, and they travel. He says not to memorize dozens. The handful shown, demonstrated in VS Code with the Carnac key display, work in "99 percent" of text editors.
GCastConditional Logic in Power Automate [GCast 80]
  • A Condition control step is Power Automate's if statement. Control steps include loops, if statements and switch statements; Giard adds a Condition, which evaluates to true or false and runs an "if yes" or an "if no" branch.
  • Trigger values must be initialized as variables first. Giard could not select the quantity directly in the condition, so he added Initialize variable steps, an integer "quantity" and an integer "order ID", taken from the SQL insert trigger's output; this makes them available to later steps. He renames each step to say which variable it initializes.
  • The demo branches the file name on a quantity of 50. If the quantity is greater than or equal to 50 the flow creates a second OneDrive file named "big_order_" plus the order ID plus ".txt"; otherwise "small_order_" plus the order ID plus ".txt". Both go in the same folder as the standard order file, which he also changes to end in .txt so it opens without downloading first.
  • A flow can be tested against a previous run's data. This avoids inserting another row; re-running the last run (quantity 55) took the yes branch and produced the big-order file. Triggering it live with a new order of quantity 5 took the no branch, and the run view shows whether the condition was true or false and which branch ran.
Crosstalk SolutionsUniFi Smart Power Plug
  • The plug exists only to reboot the ISP modem automatically. The USP-Plug-US, at about $19, sits between the wall or UPS and the ISP's modem or router and power-cycles it when the UniFi controller detects the internet is down. It has almost no settings: name, DHCP or static IP, and a side button for power on/off and a five-second factory reset.
  • Ubiquiti's stated requirements are wrong in two places. The product page says it needs a Dream Machine, but the host confirmed with Ubiquiti that any controller on 5.12.42 or newer works, plus an access point, since the plug adopts over Wi-Fi. The quick-start guide's "5.12.32" he takes to be a typo: his Cloud Key Gen2 Plus on 5.12.35 would not detect the plugs.
  • Running it required beta controller software at recording time. As of 28 January 2020 the latest stable release was 5.12.35, so the host moved his UDM to the beta release channel (new settings, Updates, Advanced) with private release channels enabled on his Ubiquiti account.
  • The controller does not yet treat it as its own device type. It appears with an access-point icon, reports its model as "UP1" rather than USP-Plug-US, and an unplugged unit shows on the dashboard as an offline access point. The host also saw a STUN connectivity error he could not resolve and hopes a firmware update clears it.
  • No scheduling or appliance control, which the host calls a missed opportunity. Unlike typical smart plugs it cannot be switched or scheduled, and he speculates (with no inside knowledge) that firmware could add this. He had not tested an actual outage recovery or learned how it retries; it fits only US Type B outlets, and his modem's Type A plug sat loose in it.
GCastCreating a Workflow from Scratch in Power Automate [GCast 79]
  • A blank flow starts as one of four types. Under My Flows > New at flow.microsoft.com: automated fires on a trigger, instant on a button click, scheduled on a timer, and business process includes some templates. Giard picks automated and names it DG Test Flow.
  • The SQL Server insert trigger needs a table with an identity column. The "when an item is created" trigger watches a table for inserted rows; Giard says the identity column is "just a rule". He adds a new connection using SQL Server authentication to an Azure SQL database, with no gateway, which he says is for servers behind a firewall.
  • Testing lets you perform the trigger action yourself. The Test button starts the flow waiting for its trigger; inserting a row produced a successful run whose inputs and outputs, including the row data from SQL Server, can be inspected.
  • A OneDrive Create file action drops one file per order. The file goes in a folder named "flow stuff", named "ORD_" plus the order ID, with the order text as its contents. An inserted order ran within seconds and the file appeared; Giard says he should have appended .txt so it would open properly. The flow's page lists test and triggered runs and its connections, and the flow can be turned off there.
GCastCreating a Workflow from a Microsoft Power Automate Template [GCast 78]
  • Flow is a graphical workflow engine for non-coding power users. The narration calls the product Microsoft Flow throughout, not Power Automate as the title does. Giard describes its audience as "power users or citizen developers" who understand software but don't want to write much code; it lives at flow.microsoft.com and comes with an Office 365 subscription.
  • Templates are the simplest way to build a flow. Under New, Create from Template there are hundreds of templates, each wired to connectors for Office 365, SharePoint, OneDrive and third-party applications. Giard picks "Save Office 365 Email Attachment to OneDrive for Business", which uses the Office 365 Outlook and OneDrive for Business connectors; you may need to sign in to both before clicking Create Flow.
  • The flow's page shows its connections, owners and run history. Owners can be added beyond the creator. The history lists each run with its date, time and status (running, succeeded or failed).
  • The trigger's advanced options filter which emails fire the flow. The "on new email" trigger defaults to the inbox and can point at another folder. Under Advanced it can filter by recipient, CC, sender, importance, attachment and subject; Giard sets subject equals "Flow" so only those emails trigger it.
  • The second step saves each attachment to a chosen OneDrive folder. "Apply to each attachment" creates a file using the email's attachment name and contents; Giard points it at a folder he had already made. In the demo a test email with the subject "Flow" and a photo attached triggered the flow about 60 seconds after it arrived, and the photo appeared in that OneDrive folder.
Crosstalk SolutionsDNS Server Lockdown
  • Firewall rules can force clients onto whitelisted, filtering DNS servers. The aim is to stop savvy users bypassing Pi-hole or content-filtering DNS by setting 1.1.1.1 or 9.9.9.9 manually; it can be applied per VLAN, such as a guest or student network only. Statically addressed devices, including the router itself, must have the allowed DNS servers set by hand since they skip DHCP.
  • Use address groups so DNS servers change in one place. On EdgeOS the host keeps a group of his three Pi-holes (192.168.200.201, a Docker Pi-hole on his Synology NAS at .210, and a test one at .206) and an RFC 1918 group; changing a group updates every rule that uses it.
  • Three ordered rules do the work: allow, let filters out, drop. On LAN in: allow established/related, accept TCP and UDP to port 53 on the whitelisted group, allow the Pi-holes themselves to reach any DNS server (they forward to Cloudflare's 1.1.1.1), then drop all other port-53 traffic. Order matters because rules are processed top-down; he notes the Pi-hole forwarding rule could be tightened to 1.1.1.1 only.
  • An IoT VLAN can use main-LAN Pi-holes while staying otherwise isolated. Its rule set allows port 53 to the Pi-hole group, drops other DNS, then drops all traffic to RFC 1918 ranges, so devices reach the secure LAN only for DNS. No outbound rule for the Pi-holes is needed there since they sit on the main LAN.
  • UniFi does the same with an address group and a port-53 port group. On a Dream Machine (Internet Security, Firewall) the host whitelisted 1.1.1.1, 9.9.9.9 and the UDM for demonstration, saying a real lockdown would use Pi-hole or OpenDNS. Testing showed whitelisted servers resolving and 4.2.2.2 timing out, matching his EdgeOS nslookup tests.
Technology and FriendsArthur 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.
Technology and FriendsCourtney 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.
GCastConnecting Azure Synapse to External Data [GCast 77]
  • Synapse can query external Hadoop-style data in place through external tables. Giard follows a Microsoft Docs tutorial using SQL Server Management Studio and SQL Server Authentication, against the Synapse database (formerly Azure SQL Data Warehouse) created in the previous episode. The external data is a Microsoft-hosted, comma-delimited dataset on New York City public transportation.
  • Setup needs a master key, file formats and a separate schema. The master key encrypts the database and is created once per database. He then defines uncompressed and compressed delimited file formats describing the data, and creates a schema named "ext" to hold the linked tables.
  • Creating external tables links the data rather than copying it. The dataset is split into multiple tables (dates, geography, taxi licenses, trips with pickups and drop-offs, weather and others). Creation ran quickly because nothing was copied, and the tables then appear under External Tables in Management Studio.
  • Giard copies the external data into local tables because querying it remotely is slow. A plain select from the date table took a few seconds. He creates local tables, about seven by his count, from each external table with indexes added, which took several minutes. Comparing ext against dbo versions showed matching first rows and identical row counts.
  • System request tables show the history of external work. A query in the master database joining request details on request ID lists the tables, number of files affected and gigabytes processed for external operations. The unjoined request table shows everything run on the server, which Giard says on a busy server includes work by other users and background processes.
GCastCreating an Azure Synapse database [GCast 76]
  • Azure Synapse is the renamed Azure SQL Data Warehouse. Giard says it is not a new product but has a few new features; in the portal it is found under Create a resource as "Azure Synapse Analytics (formerly SQL DW)".
  • The database sits on a logical server, existing or new. Giard uses the logical server from the previous episode, in West Central US, which is where the data will be stored, and a resource group he describes as a logical container for managing related assets together.
  • The performance level sets scale and cost. Gen 1 is no longer available and Gen 2 is required; a slider shows performance against cost, and Giard lowers it for testing while saying an enterprise might raise it. Additional settings offer sample data and tags, and the review page shows the hourly compute cost, which he finds useful. Deployment took about a minute.
  • Connect from SQL Server Management Studio with the server name. The server name is copied from the database's overview page and used with SQL Server authentication in SSMS, which Giard notes is a free download. Sample tables appear because he chose the sample data; a blank database would be empty.
GCastCreating an Azure SQL Server Logical Server [GCast 75]
  • A logical server can be created in advance, empty. Creating a SQL database or data warehouse otherwise prompts for a new or existing logical server; Giard creates one on its own from the portal's "SQL Server (logical server)" resource.
  • The server name must be globally unique and lowercase. The server is addressed as name.database.windows.net, so a name someone else has used is rejected; reserved words and capital letters are not allowed, and the portal flags violations immediately.
  • The admin login and password have rules. "admin" was rejected as too common, and the password must meet a length requirement and mix numbers, letters and special characters.
  • "Allow Azure services" lets other Azure resources reach the server. Giard says it is generally a good idea, for example when an app service uses the server's databases. He skips advanced security, an extra-cost option; the review page flags problems and disables Create until they are fixed, and offers a template for scripting the deployment with the CLI or PowerShell. Deployment took about two minutes.
  • The firewall blocks any IP address not explicitly allowed. In the server's firewall settings, Add Client IP allows the current machine so local tools such as SSMS or Visual Studio can connect; any server that needs access must have its IP address added too.
Crosstalk SolutionsRaspberry Pi Touchscreen
  • The official Pi touchscreen swapped in for the surveillance monitor without reconfiguration. After breaking the micro-USB connector on his old HDMI 7-inch display, the host moved his existing Raspberry Pi 3 camera-feed setup onto the official Raspberry Pi 7-inch touchscreen (about $75), connected by ribbon cable; it booted straight into the four camera feeds.
  • The only change needed was setting the output to 800×480. The new screen's resolution was noticeably lower than the old one's, so he logged in and matched the display output to it. Touch was left unused, since the surveillance view needs none; he says it would suit Raspbian with the full GUI or any touch application.
  • The PoE HAT became redundant because one cable powers both. In the SmartiPi Touch 2 case, a supplied splitter (dual micro-USB for a Pi 3, USB-C for a Pi 4) feeds both display and Pi, so a PoE HAT would only power the Pi and still leave a second cable. He kept a wired network connection, saying hardwired is always better for camera feeds.
  • The host likes the SmartiPi Touch 2 case. It holds the Pi under a removable fan door with no screws, offers a low- or high-speed fan on the GPIO, accommodates a Pi camera with a longer ribbon cable, and has 100×100 VESA holes as an alternative to its stand. Product links in the description are Amazon affiliate links, which he discloses.
GCastContinuous Deployment with Azure DevOps [GCast 74]
  • Two triggers automate commit-to-deploy in Azure DevOps. Building on the build and release pipelines from earlier episodes, which deploy an ASP.NET Core app to an Azure web app, Giard's goal is that every commit to master is compiled and tested and, if it passes, deployed.
  • Build pipelines enable continuous integration on the Triggers tab. A checkbox starts a build on every commit to master, with an option to combine commits that arrive while a build is in progress rather than build each one. He saves without queueing and adds a save comment to keep track of pipeline changes.
  • Release pipelines use the artifact's continuous deployment trigger. The lightning-bolt icon on the release pipeline's first artifact turns it on, so a successful build starts a release automatically.
  • One commit ran both pipelines without further action. Giard edited the welcome page directly on master in the browser; the build ran, release 5 was created and deployed, and the change showed in Azure. He notes committing straight to master is not the desired way; you would probably use a pull request.
  • Giard argues CI exists to catch combined changes breaking. Diligent developers who compile and test locally can still break each other's code when their changes meet, his "butterfly effect"; CI gives feedback on compile and test results as soon as a commit lands.
GCastCreating an Azure DevOps Build Pipeline [GCast 72]
  • A build pipeline automates pull, compile, test and publish. Giard says automating these steps lets them run often and find problems early. His demo is an ASP.NET Core web app with a test project holding one unit test that always passes (asserting 1 + 2 = 3).
  • Giard prefers the classic editor to YAML. He says it is more graphical and some things are easier there, but YAML is fine to use. The ASP.NET Core template supplies the steps: get the code from the master branch, restore the .NET environment and NuGet packages, build, run tests (it assumes test projects end in "Tests"), and publish. Save and queue runs it on an agent, a computer that executes the job.
  • A failed step stops the run; the useful error is higher up. The first run failed at restore with an unhelpful "packages failed to restore"; the line above said the agent's .NET SDK did not support targeting .NET Core 3.1. Giard retargeted both projects to 3.0, rebuilt and ran locally, synced, and the rerun passed in about a minute and a half.
  • A failing test halts the pipeline before publishing. After he added a test asserting 1 + 2 = 4, the code compiled but the test step failed (2 tests, 1 passed, 1 failed) and nothing was published. Giard says that is what you want: compiled code that fails its tests should not continue through CI/CD.
GCastBuild an Azure DevOps Release Pipeline [GCast 73]
  • A release pipeline deploys what the build pipeline produced. Giard says a build verifies the app compiles and passes tests but does nothing for end users; the release pipeline takes the published binaries and pushes them to an Azure app service.
  • The Azure App Service deployment template needs its task configured. Under Pipelines > Releases > New pipeline, stage 1 uses the "Azure App Service deployment" template; a red exclamation mark shows until the task has a subscription, the app type (web app on Windows) and the app name. The app service must already exist.
  • The artifact points the release at the build pipeline's output. Giard takes the defaults, the latest version, then renames the pipeline from "New release pipeline" to something descriptive and saves with a comment, treating pipeline changes like source control.
  • Releases are numbered and still started by hand. Release 1 queued on an agent and deployed the default welcome page. After he edited the page to say "Welcome to GCast", he ran the build (1 minute 38 seconds) and then created release 2, which deployed quickly and showed the change.
Crosstalk SolutionsRaspberry Pi Network Troubleshooting
  • A Pi can capture packets only while the internet is down. The host's script pings 8.8.8.8 once every 5 seconds; on a failed ping it kills any running tcpdump and starts a new capture to a date-stamped file, stopping when connectivity returns, so the pcap can be read later in Wireshark. Any Linux box would do; a Pi 4 with 4 GB is overkill, and a Pi Zero W or Pi 3 would suffice.
  • Three script improvements were in progress at recording. The ping target and the network interface (wired or wireless) are being made variables, and pcaps taken during an outage will be uploaded automatically to an FTP server once connectivity returns, replacing his manual retrieval. The script is offered for download.
  • The firm's phone-home system gives remote access without firewall changes. Crosstalk devices check in with what it calls its RMS system on boot; ticking "connect with VPN" makes the Pi open a VPN tunnel to the RMS server the engineer is also connected to. He planned to leave it on site for a week or two and check for captures remotely.
  • The client fault takes down only wired clients, sporadically. In a roughly seven-person office with under 30 devices, wired clients lose both internet and LAN (including a Synology NAS) for 5 to 20 minutes, from three times a day to once a week; wireless clients are unaffected. During outages the UniFi controller loses the downstairs US-24 switch but still sees the USG and the UAP-AC-Pro.
  • Swapping both switches and testing the cable ruled nothing in. Firmware was current, the junky upstairs switch was replaced with a TP-Link 8-port, the roughly 100-foot cross-connect tested clean, and a spare replaced the US-24 with no change. His suspicions, all unconfirmed, are a broadcast storm, malware, a rogue device ARPing as gateway, or the large Canon copier, which staff once power-cycled to clear an outage.
GCastIntegrating a Visual Studio Solution with an Azure DevOps Repo [GCast 71]
  • Team Explorer connects Visual Studio to the Azure DevOps organization. In Visual Studio 2019 the Manage Connections icon, a plug, connects to a project in the organization. Giard uses a new ASP.NET Core app but says the process is the same for any project type.
  • "Add Solution to Source Control" creates only a local Git repository. Lock icons appear on the files, but nothing is in Azure DevOps yet.
  • The first Sync asks whether to publish to GitHub or Azure DevOps. Choosing a Git repo in Azure DevOps, with the repository name defaulting to the solution name, and clicking Publish repository creates the project in the organization with the files under Repos.
  • Git changes are committed locally, then synced to the server. Giard commits with a comment on the Changes page, then syncs; he prefers syncing both ways, though one direction is an option. To simulate a teammate he edits a file in the browser, and syncing again (or a fetch or pull) brings that change down.
Technology and FriendsTibi 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.
GCastDeleting an Azure DevOps Project [GCast 70]
  • Project deletion is in Organization settings, not the project. Giard says it took him a long time to find because the project's own menus have no delete; from the Azure DevOps main page, Organization settings (bottom left) > Projects lists every project with a Delete button, and deletion must be confirmed by typing a name.
  • A deleted project can still be restored. Organization settings > Overview lists recently deleted projects, and selecting one and clicking Restore brings it back. Giard's verdict: not hard to do, but placed where it is not intuitive.
Crosstalk SolutionsGen2 UniFi Switches - USW-24-POE
  • Only the Pro Gen2 switches get 10G uplinks and layer 3. Of four released models, the USW-16-PoE ($299: 8 PoE+, 8 non-PoE, two 1G SFP) and USW-24-PoE ($379: 16 PoE+, 8 non-PoE, two 1G SFP) are layer 2. The USW-Pro-24-PoE ($699: 16 PoE+, 8 PoE++, two 10G SFP+) and USW-Pro-48-PoE ($1,099: 40 PoE+, 8 PoE++, four SFP+) get layer 3 in a future software update, Ubiquiti says.
  • The USW-24-PoE is fanless and shallower than Gen1. Its depth is 7.9 inches against 11 for the older fan-cooled switches; the host's Gen1 24-port needed its loud fans replaced with Noctuas. He relies on others' reports, including a teardown video by another channel, for its heat dissipation.
  • Gen2 drops 24V passive PoE output. The port settings no longer offer it, so a 24V passive device such as the host's camera now needs a PoE injector. The first 16 ports are 802.3af/at.
  • Update the firmware before judging the touchscreen. The switch arrived on 4.0.49, where tapping the screen only cycled a few statistics; 4.0.66 brought large improvements, and the host recommends updating. UniFi site settings cover LED and screen on/off, brightness, a 300-second timeout and rack multi-screen synchronization for stacked switches.
  • The touchscreen gives useful per-port detail at the switch. It shows which ports are linked and at what speed, real-time traffic and PoE watts per port (3.4 W for a ClearlyIP phone, 7 to 11.5 W for a Cloud Key Gen2 Plus), total throughput, CPU and RAM, PoE draw against capacity, and IP, uptime, MAC and firmware. A speed test on his roughly 400/20 connection showed on the live graph; background colour is settable only on the switch.
Technology and FriendsEpisode 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.
Crosstalk SolutionsSnom M85 Ruggedized DECT Handset
  • Snom's system costs far more than the Yealink kit Crosstalk usually sells. The Yealink W60P kit is $189 with base and one handset (extra handsets about $92), whereas the Snom M700 base is $259 and the M85 handset $329, almost $600 for the first phone. The host plans to add the Snom gear to the phones he sells.
  • The premium buys multi-cell scale. The M700 supports up to 253 base stations with handsets roaming between them and up to 1,000 handsets, against the single base (plus repeaters) of the older Yealink kit; Yealink's own multi-cell product the host has not tried. The base is PoE-powered.
  • Many vendors' DECT phones are the same rebranded hardware. The host shows the Snom M25 office handset and base matching Sangoma's and Mitel's single-cell DECT products, built by one licensing manufacturer, so shopping around between them changes little. Snom also offers the mid-range M65.
  • The M85 suits harsh sites needing emergency features. It is IP65 dust- and weather-resistant, with Bluetooth and a 3.5 mm headset jack, a hard-to-press red alarm button that dials a preset number, a man-down motion sensor and a wrist-loop pull alarm, which the host has not tried. His deployment was a retirement home that wanted handsets able to survive heavy abuse; one of five arrived defective and was replaced by RMA.
  • The M700 setup has a few non-obvious steps. Its web interface failed for him in Chrome but worked in Firefox; the default login is admin/admin. Set country and time zone by region plus an NTP server, enter the SIP server as registrar, and create extensions with the PBX SIP credentials and *97 as the FreePBX voicemail number. The handset registers using the base's access code, default 0000.
GCastAzure DevOps Branch Policies [GCast 69]
  • Without branch policies anyone can push straight to master. Giard pulls, edits the readme, and commits and pushes directly to master, which succeeds.
  • A minimum-reviewers policy blocks direct pushes to master. Policies are set from Branches > the three dots on master > Branch policies, which Giard calls a little hard to find. He requires at least one reviewer and allows requesters to approve their own changes; his next push to master was rejected.
  • Changes then reach master only through a pull request. He creates a branch with git checkout -b, pushes to it, and opens a pull request; it cannot be completed until approved, and after he approves it himself it merges into master.
  • "Check for linked work items" blocks completion until one is linked. With that policy added, an approved pull request still showed "no work items linked" marked as required but not satisfied. Linking an existing work item, searchable by name or number, let it complete.
Technology and FriendsEpisode 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.
Crosstalk SolutionsClearlyIP Phone Provisioning
synopsis

The host walks through auto-provisioning ClearlyIP phones onto FreePBX with ClearlyIP's free device module, ending with a factory-reset phone that finds its PBX through ClearlyIP's redirect server and comes back up as its extension untouched. Once the setup is in place, he says, it is close to bulletproof and lets a reseller drop-ship phones that configure themselves.

The module. Provisioning takes four steps: an extension, the module, a MAC-to-extension mapping, and a way for the phone to find its file. The module is uploaded once from ClearlyIP's wiki URL and then updates like any other. He sets the phone-apps and provisioning servers to the FQDN over HTTPS with a Let's Encrypt certificate, so a later migration needs only a DNS change. He opens TCP 2579–2580 in the FreePBX firewall to the local zone only.

Defaults, templates and models. The hot-desk wizard creates a logout extension, 999, taking up to 100 registrations and able to dial 911, so a logged-out phone never loses emergency calling. Templates carry per-location global settings: host FQDN, a 24-hour resync, backlight, line labels, time zone, and BLF presses (long press *80 to intercom, in-use short press * to transfer to voicemail). Models carry a phone's keys and expansion modules; a mapping ties extension, template, MAC and model together.

Getting the phone to its file. Manually, the provisioning URL is pasted into the phone's web interface, and an echo test on *43 confirmed registration. At scale, ClearlyIP's reseller-only redirect server holds each location's server details and the phones' MACs, by hand or CSV. After a factory reset, his CIP 270 checked in, was redirected and returned as extension 225. The portal also shows check-ins and firmware, and can lock out a non-paying customer's phones.

  • Auto-provisioning lets phones configure themselves, even when drop-shipped. Phones download configuration files built from a MAC-to-extension mapping, so button changes push out to every phone; as a reseller the host drop-ships phones and they set themselves up when plugged in. The ClearlyIP device module is free, unlike Sangoma's paid Endpoint Manager, and works similarly.
  • Point provisioning at an FQDN, not an IP, and open its ports. The module is uploaded once via Module Admin from ClearlyIP's wiki URL, using a newer version than the link gives, then updates like other modules. Using the server's FQDN lets phones follow a later migration by a DNS change. TCP 2579 (phone apps) and 2580 (provisioning) must be opened in the FreePBX firewall, unless Sysadmin Pro's ports are used instead.
  • Logged-out phones should fall back to an emergency-capable extension. The hot-desk wizard creates a default logout extension (the host's is 999, allowing up to 100 registrations) that can dial 911 and internal extensions but not outside lines. An unmapped phone shows a "not registered" image and a login button, so staff can log in with extension and voicemail password instead of a MAC mapping.
  • Templates hold global settings, models hold per-model keys. The host uses one template per customer location, with resync every 1,440 minutes and its own time zone, and models for key layouts (here a CIP 270). He sets BLF long-press to prefix *80 for intercom and in-use short-press to prefix * for transfer to voicemail, which he says helps receptionists.
  • ClearlyIP's redirect server provisions factory-fresh phones by MAC. At devices.clearlyip.com, which needs reseller sign-up, MACs entered singly or by CSV redirect a defaulted phone to the customer's PBX; the host was adding about 30 this way. It shows check-ins and firmware, which module updates push to phones, and offers a reseller lock-out for customers on per-extension monthly plans who stop paying.
GCastGCast 68: Azure DevOps Work Items
  • Work items are created from the Boards section, by type. In an Azure DevOps project, Giard expands Boards in the left menu, opens the Work Items subsection, and clicks New Work Item, which offers types including task, bug, feature and epic. A title is the only required field he names.
  • Some fields depend on the type; others appear on every item. Giard says the type-specific questions differ, while fields such as priority, estimated hours, remaining hours and completed hours are common to all work items. Priority numbers have no meaning in themselves; only their order relative to each other matters.
  • Linking items as parent and child builds a hierarchy that rolls up. He creates an epic ("a grand container" for other work items), a feature under it, and a task under the feature. Each link is made under Related Work with "Add link" to an existing item, setting the other item as parent. Giard says how you structure the hierarchy is up to you.
Crosstalk SolutionsRaspberry Pi 4 Getting Started
  • The host recommends a CanaKit starter kit as the easiest start. It sells at $79.99, $89.99 and $99.99 for the 1 GB, 2 GB and 4 GB Pi 4 respectively, through links in the description that are Amazon affiliate links. He calls 1 GB fine for testing but would take 4 GB for any graphics or desktop use. The kit includes a 32 GB class 10 microSD card, heatsinks and an inline power switch he uses constantly to avoid wearing out the USB-C port.
  • The kit ships only one micro-HDMI cable for two ports. Dual monitors need a second micro-HDMI-to-HDMI cable; with one monitor, use the port labelled HDMI 0, nearer the power connector. He puts keyboard and mouse on the USB 2.0 ports to keep the blue USB 3.0 ports free for fast devices like external drives. He also prefers wired Gigabit Ethernet over the onboard Wi-Fi for initial setup.
  • Triple-check the drive letter before formatting the microSD card. SD Card Formatter will just as readily wipe a USB drive, unrecoverably. A brand-new card can skip formatting. The host then copies the unzipped NOOBS files onto the card. Without a network connection, NOOBS offers only Raspbian Full; other operating systems appear once it can reach the internet, wired or over Wi-Fi.
  • The first-boot wizard's software update can fail; update manually instead. It has failed for the host before, though it worked on this recording, so he shows the manual fallback: sudo apt-get update then sudo apt-get upgrade -y. The wizard is also where to replace the default pi user's password, "raspberry", and tick the black-border box to fix overscan.
  • Disable auto-login, then enable SSH and VNC for remote access. Both settings are under Raspberry Pi Configuration. Windows 10's command prompt can now SSH natively, but the host prefers PuTTY because it saves sessions. RealVNC Viewer reaches the desktop, and he advises against saving the password in it, as less secure.
Technology and FriendsEpisode 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.
Technology and FriendsEpisode 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.
Crosstalk SolutionsUniFi Industrial Switch
  • The UniFi Industrial Switch is a niche part for high-power PoE. The USW-Industrial has 10 ports: two non-PoE gigabit uplinks and eight that auto-sense 802.3af, 802.3at or 802.3bt (PoE++). With the 450 W power supply it can deliver 60 W per port on all eight at once. At $499 MSRP ($506.15 on Amazon at recording), the host says he can think of few of his own projects that would have needed it.
  • Its value is the ruggedized build, not its UniFi features. It is fanless and plenum rated, mounts horizontally or vertically in a wall, and has a die-cast aluminium case powder-coated against corrosion. It weighs 8.5 lb (3.85 kg). It runs at −40 to 50 °C on the 450 W supply, or −40 to 60 °C on 240 W. The host found nothing special in the UniFi controller beyond the PoE++ flag, and pitches it as a set-and-forget switch for rafters and attics, or in place of the Netonix ruggedized switches his firm uses on wireless ISP jobs.
  • Its intended loads are 802.3bt devices such as the USW-Flex. It can feed the USW-Flex outdoor switch with 60 W, or power the UniFi BaseStation XG (for stadium coverage) and the XG access point. The host says that on 802.3at power alone, the USW-Flex had only managed one G4 camera before devices started rebooting.
  • In his test, one 802.3bt port ran five devices through a USW-Flex. One port fed a USW-Flex, which powered a G4 Pro camera, a Cloud Key Gen 2, an In-Wall HD and a UAP-HD access point, and all of them stayed up. The host says the switch stayed cool to the touch under that load.
Crosstalk SolutionsUniFi FlexHD
  • The FlexHD is a nanoHD in an indoor/outdoor body. The host says the UAP-FlexHD-US has essentially the same specifications as the UAP-nanoHD: 802.11ac Wave 2, 4x4 MU-MIMO at about 1.7 Gbps on 5 GHz, and 2x2 MIMO at 300 Mbps on 2.4 GHz. It has one gigabit Ethernet port and a reset button, and is rated for −30 to 70 °C.
  • It is weather-resistant only when mounted upright. It carries no IP66/IP67-style rating and its mounts leave the Ethernet port exposed. The datasheet says outdoor units must be mounted vertically, right side up, so gravity keeps water off the port. Mounting upside down in a drop ceiling is for indoor installs only.
  • For $12 more than the nanoHD, it adds mounting options. It cost $186.20 on Amazon at recording, and comes with a tabletop stand, a wall/pole mount and an 802.3af PoE injector. A recessed ceiling mount exists, but the host could not find it on sale. He guesses it will cost about $20, like the $19 G3 Flex camera ceiling mount.
  • The host calls it steep for home users but good for business or outdoors. His example is covering a pool area. In his test it adopted and provisioned through the UniFi phone app in just over two minutes, with firmware 4.0.69 offered. He expects it to behave like any other UniFi AP, and plans to swap it in for the In-Wall HD in his office, mainly because it looks better.
Technology and FriendsEpisode 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.
GCastGCast 67: Azure DevOps Repos, Branches, and Pull Requests
  • Files can be added, edited and committed entirely in the browser. Under Repos (Files is selected by default) in the project from the previous episode, Giard adds a file with New File, edits it, and commits it to the master branch with a comment. He notes a commit can also be associated with a work item, which he leaves for a later video.
  • With several users, commit to a branch rather than to master. Giard's reason is that committing straight to master may break what others are doing or collide with their commits. He creates a branch from the branch selector, commits a change there, and shows that master's copy of the file stays unchanged until the merge.
  • A pull request is what merges the branch into master. He creates one under Repos, Pull Requests. The title defaults from the commit when there is a single change and can be overridden. Policies can be set to require review before merging. Because he has none set, he completes the merge himself, and master then shows his change.
  • The same flow applies from Git commands or an IDE. Giard says most developers will do this at the command line or in Visual Studio or Visual Studio Code rather than the browser, but the process is the same: edit, commit to a branch, open a pull request, and have someone approve the merge.
GCastGCast 66: Creating a Repo in Azure DevOps
  • A new project takes a name and a visibility setting. Giard describes Azure DevOps as an application lifecycle management suite available to anyone with an Azure or Office 365 subscription, reached at dev.azure.com. A project gets a name, an optional description, and one of three visibilities: private (invited people only), public (anyone on the internet), or available only within your enterprise.
  • A project's repo can be initialized with a README and edited in place. Under Repos, Files, he clicks "Initialize" to add a README containing boilerplate text. Giard says the repo can be cloned to the desktop and used with Git tools, or edited in the browser, as he does here, replacing the placeholder text and committing directly to the master branch.