Souk's Notes - Unofficial Summaries
Crosstalk SolutionsG4 Bullet
- The G4 Bullet upgrades the G3 Bullet's resolution and housing. It is 1440p (2688×1512) against the G3's 1080p, with an aluminium-alloy body, IPX4 and IK04 ratings, an operating range of −20 to 40 °C, 802.3af PoE only (no 24 V passive), and UniFi Protect only. MSRP is $199 against $149. The host says the G3 was the camera Crosstalk sold most, around five times any other, back when it sold UniFi Video systems.
- In daylight the G4 and G3 Bullets look about the same. With all three cameras set to a 6,000 kbps bitrate, the host found little difference in sharpness between the two Bullets. The roughly $450 G4 Pro (4K) gave a much wider field of view and more saturated default colour. He cautions that his footage was re-encoded to 1080p for YouTube.
- The G4 Bullet's onboard IR is far better than the G3's. On his night test the G3 showed ghosting and went dark beyond a few feet, which he says makes the G4 worth the extra $50. The G4 Pro's onboard IR was much clearer than either Bullet's, but at about 25 feet he could not recognise a person on either G4.
- The host recommends adding an external IR illuminator to the G4 Bullet. He sets the camera to switch to night mode without its own IR LEDs and lets a $35–40 illuminator light the scene. That setup, just under $250 in total, matched the G4 Pro's night clarity and brightness in his test. The Pro still wins on resolution and field of view, for example for reading licence plates.
Crosstalk SolutionsMoCA Made Easy!
- MoCA adapters turn a house's existing coax into Ethernet. The host's 1990s house has coax to most rooms, so he used a two-pack of MoCA 2.5 adapters ($179, 4.7/5 on Amazon) to reach his garage. Each adapter has two gigabit ports and runs on 5 V micro-USB. MoCA 2.5 is backward-compatible with 2.0 and 1.1. The video carries Amazon affiliate links.
- Simple inline wiring makes the adapter a single point of failure. In a point-to-point setup the cable service runs through the adapters' in/out ports, and the adapters are not passive. If the garage adapter loses power, which is not on a UPS there, the whole house loses internet.
- The host recommends coax splitters so internet bypasses the adapters. A two-way splitter at each end sends one leg to the cable modem and one to the adapter's MoCA port. That keeps the modem path and the MoCA link separate on the same wiring, so a dead adapter cuts only the garage LAN. Splitters cost a couple of dollars and can fan out to more adapters.
- He measured about 95 Mbps across the MoCA link. The figure was the same on a speed test and on iperf: full upload, but about a sixth of the expected download. He offers no explanation and calls it ample for one or two access points and cameras needing 5–10 Mbps. A G4 Bullet streamed 1440p over the link, which reported a 1 Gbps port connection.
- Change the adapter's default password and IP address. The adapters ship at 192.168.144.200 with admin/admin, so you reach the GUI by giving your PC an address in that subnet. He set a strong password and a static IP on his own LAN. Network changes take effect only after a reboot.
Scott HanselmanHow do you use the Command line? PowerShell, cmd, bash? - Computer Stuff They Didn't Teach You #13
synopsis
Hanselman's primer, episode 13 of his "Computer Stuff They Didn't Teach You" series, ends where it starts: shells differ in detail but share the same pattern of typing a command and pressing enter, so a beginner should learn a dozen basics and then pick whichever shell makes them happy.
Terminal versus shell. He splits Windows Terminal into panes running PowerShell, the Windows command prompt and bash on Ubuntu under WSL2, with his keystrokes shown on screen. A terminal is to a shell what a browser is to the web. The same mistyped command gets a different response from each shell.
Aliases. PowerShell maps ls, dir and gci to Get-ChildItem so visitors feel at home. He wrote a clear.bat for cmd and later aliases please to sudo.
Moving around and handling files. He covers cd, pwd, tab completion, cd - (which works only in some shells), mkdir, touch against New-Item, and cat against type. > clobbers a file and >> appends to it. Quoting rules differ between shells.
History. Up arrow works in all three shells, cmd adds F7 and bash adds Ctrl+R. He expects people to want the best feature of each and to drift between shells over a career. He mostly uses PowerShell.
Pipes and processes. He searches a file with grep, findstr and Select-String, lists processes with ps, Get-Process and tasklist, and finds help with man, --help or /?.
Administrator. Elevation depends on the OS: an elevated Windows Terminal on Windows, sudo on Linux.
- A terminal is just the window; the shell does the work. Hanselman compares terminals (Windows Terminal, xterm, iTerm) to web browsers and shells (PowerShell, cmd, bash, fish, zsh) to what they talk to. He dismisses the "religious argument" over which shell is best: use the one that makes you happy. He says he ends up in PowerShell most often, but likens the choice to Honda against Toyota.
- Every shell differs, and aliases smooth over the gaps. He runs the same commands side by side in PowerShell, cmd and bash (Ubuntu under WSL2): in PowerShell,
ls,dirandgciare all aliases forGet-ChildItem, so newcomers from DOS or Linux "suddenly feel comfortable". He wrote aclear.batcontainingclssoclearworks in cmd, and aliasedpleasetosudo. A familiar command in an unfamiliar shell is "like going to Italy and saying a Spanish word": it may or may not work. - A handful of commands is enough to get around. He covers
pwd/cd(withcd .., tab completion andcd -, which doesn't work everywhere),mkdir,touchagainst PowerShell'sNew-Item/ni, andcatagainst cmd'stype. A single>redirect clobbers a file and>>appends to it. Shells also handle quotes differently: cmd wrote the quote marks into the file, which a bash user would not expect. - Pipes chain small tools into bigger work. Text search is
cat … | grepin bash,type … | findstrin cmd, andGet-Content … | Select-String(aliasesgc,sls) in PowerShell. Process lists come fromps,Get-Processandtasklist; bash showed fewer processes because he wasn't administrator. Help comes fromman,--helpor/?, which again differ per shell. He notes that whole books cover bash and PowerShell scripting. - History tools and administrator rights vary by OS. Up-arrow history works in all three shells. cmd's F7 draws a history list, a feature he wishes his other shells had, and bash has Ctrl+R reverse search. Administrator rights depend on the operating system underneath: on Windows he Ctrl+Shift-clicks in Windows Terminal to open an elevated shell, while on Ubuntu it is
sudo.
Crosstalk SolutionsUniFi Lite Switches - 8 & 16 Port
- The UniFi Lite switches are light-duty PoE switches. The USW-Lite-8-PoE ($109 MSRP) has eight gigabit ports, four of them 802.3at PoE+ at 30 W each. The USW-Lite-16-PoE ($199) has 16 gigabit ports, eight of them PoE+. Both share a single 60 W power budget, which the host says suits phones and cameras drawing 4–5 W each. Neither offers 24 V passive PoE.
- The host prefers the Lite 8 to the older US-8-60W. Both cost $109 with the same PoE layout; he favours the Lite for its easier snap-on wall mount and newer looks. For heavier PoE loads he points to the US-8-150W ($199), which has PoE on all eight ports, 150 W, two SFP ports and 24 V passive.
- The Lite 16 has no direct UniFi equivalent. It is a desktop, non-rackmount switch. The rackmount alternative is the Gen 2 USW-16-PoE at $299: 1U, a 1.3-inch touchscreen, the same eight PoE ports and two SFP ports.
- Buy the UniFi switch if your network already runs UniFi. The host compares a $79 unmanaged TP-Link 8-port PoE switch, a $135.49 layer-2 managed Cisco 8-port PoE switch and a $137.99 managed Netgear with SFP. The competitors offer PoE on all eight ports but no UniFi central or remote management. He judges both Lite switches reasonably priced.
- Adoption took under 60 seconds, with firmware newer than his controller. The controller found the switch automatically; SSH with ubnt/ubnt is available for manual set-inform. The switch shipped with firmware newer than the host's controller (5.13.32), which offered a downgrade; he was holding off 6.x because of reported issues. The topology map wrongly showed his NAS on the new switch at times.
Scott HanselmanStack/Heap Allocation, Frames, Call Stacks, Recursion - Computer Stuff They Didn't Teach You #12
synopsis
Hanselman builds up four meanings of "stack" in C# and Visual Studio and ends at stack overflow. A recursive countdown from one million overflowed after about 19,000 calls. The same work done as a loop uses no stack and finishes. He made the video in answer to a viewer's tweet, pitches it at beginner level, and says programmers need not know every edge case.
The data structure. A pile of books shows last-in-first-out push and pop. A Stack<string> holding "hello", "world", "!" dumps in reverse, and popping removes "!", which he shows in the debugger's watch window.
Stack versus heap. Local values such as a, b and c live on the current thread's stack, and each thread has its own. A Person object lives on the shared heap; a memory snapshot shows one instance of 40 bytes. When he passes both to a method, the person's age change to 100 is visible to the caller because it was passed by reference. The integer was passed by value, so the method's copy is discarded and the caller's stays at 99.
Call stacks and frames. Chained functions that each wait on the next deepen the call stack window, which he notes is not yet recursion.
Recursion and overflow. The countdown calls itself until the fixed-size stack runs out; the heap, by contrast, is bounded by the process architecture. He asks whether recursion was the right design ("spoiler alert, no") or whether the compiler should have handled it. F# does tail-call optimization automatically. C# does not, though he says it could.
- "Stack" names four related ideas that build on each other. Hanselman separates the stack data structure, stack memory allocation, stack frames in the call stack, and the stack overflow recursion can cause. He pitches the video at "100 level". Edge cases such as tail-call recursion are nice-to-know rather than need-to-know if "your job is putting text boxes over data".
- A stack is last in, first out. He pushes books onto a pile, then a C#
Stack<string>with "hello", "world", "!". The dump lists them in reverse order, and one pop removes "!" and leaves two items, which he steps through in the Visual Studio debugger. - Locals live on the stack; objects live on the heap. Each thread gets its own stack, so local values can differ between threads, while an object on the heap is shared by everything holding a reference. A Visual Studio memory snapshot shows one
Personof 40 bytes. Passed by reference, the person's age change to 100 is seen everywhere. An integer passed by value is copied onto the method's stack, so the caller's copy stays at 99 after the method increments it. - Nested calls deepen the call stack without being recursion. He watches Visual Studio's call stack window as
Maincalls functions that each wait for the next to return. In the chained version (happy, then little, then function) the call stack grows deeper, but he notes this is not recursion. - Deep recursion overflows a fixed-size stack; loops avoid it. A countdown from one million that calls itself overflowed after about 19,000 calls. He says the stack is fixed in size, unlike the heap, which is bounded by the processor architecture. An iterative loop, which he says is what a compiler would generate, finishes using no extra stack. He says F# applies tail-call optimization automatically and C# does not, "even though it possibly could".
Technology and FriendsScott Hanselman on Productivity [TECHNOLOGYANDFRIENDS 634]
- Productivity comes from intentionality, not more hours. Hanselman says wasting time is fine when chosen, and the problem is losing four to six hours while frustrated at not doing the thing you wanted; his example is time-boxing a newly re-released Super Mario to a half-hour timer, then spending 90 minutes on a YouTube video. Saying no is "the biggest control" you have, and he books himself two-hour "focus time" meetings on his calendar.
- A trusted list frees the mind that undone tasks occupy. He compares unrecorded to-dos to the "System" process using 20% CPU in Task Manager, and says writing them down, on paper when overwhelmed (his "Sync to Paper" article), gives you permission to stop worrying; he also consciously lets go of things like never watching The Wire. In Microsoft To Do he keeps a pool of about 70–76 items and adds three to five to "My Day" rather than 30.
- Turn off every notification that isn't worth an interruption. Hanselman says we granted each app permission to pop a toast and can revoke it per app; anything truly important would come by a phone call, not a toast sitting at the same level as a BuzzFeed item. His phone is on silent, Teams has scheduled quiet hours, and his wife and kids have their own text sounds.
- Multitasking is a lie; people are single-threaded. He says multitasking is just fast context switching with a real if unmeasured overhead per switch, so four 30-minute tasks in two hours go better as four uninterrupted sprints than as 14 switches. The only useful background thread is the subconscious that solves problems in the shower.
- Operationalize or hand off recurring chores to reclaim time. He pays a local kid $20 to mow his lawn, which he says buys back an hour and a half of his weekend, and calls getting an editor for his podcast a "game changer" that lets him focus on content. He concedes the setup cost of a new system often feels bigger than just doing the task yourself, and says to push past it.
Crosstalk SolutionsUniFi Access IS HERE!
- The "everything you need" starter kit is not standalone. As of recording, a UDM Pro is the only device running UniFi Access software, so one is required; the hub also needs 802.3bt (PoE++) power because it drives the lock, readers and a camera. The host found this out after preparing a 16-port Switch Lite that cannot supply it.
- Extra doors needing a Pro reader are cheaper as whole kits. The kit is $499 against $637 for the parts separately (hub $199, Access Reader Pro $299, Reader Lite $99, 20 NFC cards $40). That is roughly the hub plus the Pro reader, so a second kit brings the Lite reader and cards free.
- The hub keeps door control away from the door, which the host rates a security plus. Each hub controls one door and wires to mag locks, powered or unpowered strikes, or a siren through side contacts, and it powers each reader over its own Cat5e/Cat6 run. He contrasts integrated units such as an Axis reader with built-in strike, which could be hotwired if pulled off the wall.
- The hub has separate reader ports, and the host cannot explain why. It has ports for the indoor NFC/Bluetooth Reader Lite, the weatherproof Reader Pro and a camera (a G3 Flex in the diagram). He guesses at different power needs or doors scanned on both sides, and assumes Bluetooth means phone-app unlocking.
- The host thinks the Reader Pro reuses Ubiquiti's FrontRow camera design. That is his own speculation from the matching form factor; he does not know whether Ubiquiti sold the product off. This video is an unboxing only, with setup and configuration left for a follow-up.
Technology and FriendsGlenn Block on Racial Justice [TECHNOLOGYANDFRIENDS 633]
synopsis
Block's position is that racism in the US is structural, so white people who hold privilege are accountable for using it: by listening, examining themselves, widening their circles and acting intentionally, including in how tech hires, builds AI and names things. He frames it as a lifelong commitment with no certificate at the end.
Woken up, but will it last. Giard opens by saying 2020 is shining a light on these issues. Block replies that they are not new; George Floyd was simply caught on camera in a way that could not be denied. He worries that those who spoke up will "go back to sleep." Both men grew up in segregated white communities, Giard in Detroit and Block on Long Island.
Institutional racism and equity. Block, who says he is in a social justice and leadership programme as part of an MBA, describes racism as woven into policy and upbringing, citing redlining and his grandmother's remarks. Drawing on Kendi, he says no one is neutral. He separates equity, which levels the field according to experience, from equality. He puts denial down to avoided accountability and to privilege, and recounts a Black colleague's account of teaching his children how to handle a traffic stop.
What allies can do. His advice is to listen, not take up the airspace, look inward, and form real relationships across race. Giard adds a preacher's line from a church meeting: you are the one missing out, not the one bringing something to the friendship. Block notes data that diverse organizations perform better, but says fairness is the point.
Technology. Block lists hiring bias (requests to touch hair, callbacks for Black-sounding names), unequal mentoring, and referral networks, including his own past habits. He cites Amazon's 2018 résumé AI and a face check that failed on a Black woman. On master/slave terms and GitHub's "main", he says perceived harm outweighs original intent.
His own experience. Block, a Muslim convert at 19 from a Jewish family, describes bias against himself and harassment of his daughter, who chose to cover. He says this fed his empathy without being equivalent to what Black people face.
Reading and closing. He recommends Kendi, Ijeoma Oluo's So You Want to Talk About Race, Minda Harts's The Memo and Peggy McIntosh's "Unpacking the Invisible Knapsack". He closes by saying mistakes are inevitable and good intentions do not undo harm.
- Racism is built into institutions, not just individual hatred. Block, citing Ibram Kendi's How to Be an Antiracist, says there is no middle way and that "I don't see race" denies the problem; he points to redlining as zoning written so Black people could not live in neighbourhoods, which he says produced the segregated Long Island towns he grew up near. He puts denial down to avoided accountability and to privilege, contrasting a Black colleague who teaches his children how to survive a traffic stop with his own assumption that a stop is about a cop's quota.
- The goal is equity, not equality. Block says equality gives everyone the same thing, while equity takes account of different experiences and barriers to access in order to level the field; asked for an example, he and the host settle on workplace jokes that land differently on their target.
- Allyship starts with listening and looking inward, then intentional action. Block's steps are to listen without rushing to judgment, admit you do not know, avoid taking up the airspace, and get to know people who do not look like you outside diversity meetings. He also says to expect mistakes and approach them with a growth mindset, and that good intent does not reduce the harm done.
- Tech's bias shows in hiring, mentoring, referrals and AI. Block cites an interviewer asking to touch a Black woman's hair, callback data on Black-sounding names, people mentoring those who look like them, and his own past referral hiring as structural racism. On AI he cites Amazon shelving a résumé-screening system in 2018 over bias, and an ID-verification service that failed to recognize a dark-skinned Black woman's face.
- Renaming "master" terminology matters because perception outweighs intent. Block says people objecting to master/slave terms and GitHub's move to "main" are what counts, whatever the original authors meant, and he rejects calling the change performative: small changes add up. He notes he works for Microsoft, which owns GitHub, and created his first repo with "main" as its default.
Scott HanselmanKubernetes and Container Orchestration 101 - Computer Stuff They Didn't Teach You #11
- Orchestration means giving containers roles and managing their life cycle. Hanselman frames it as an orchestra or "herding cats": a cluster manager (the "master") coordinates nodes, which are worker machines that may be physical or virtual, and each node runs pods. A pod is a group of containers plus the IP addresses and storage they need. The container stays "the doer" and never knows it is being scaled, restarted or constrained.
- Kubernetes is driven by declarations, not programs. A YAML file is "a bill of lading", in his words: name a pod, its image and its port, and cap its CPU and memory without the container knowing. For local development he stresses
imagePullPolicy: IfNotPresent, so the cluster does not go looking for the image in a cloud registry. He contrastscreate(make a new one) withapply(make it or change it), and demos a replica set of three .NET containers. - The cluster is a sealed box until you punch holes in it. Pod IPs are internal, so you group pods into services. Kubernetes runs its own internal DNS, so code can call
http://shoppingcartwithout knowing how many instances sit behind it. He reaches the apps throughkubectl proxyon port 8001, a temporary port-forward from local port 81 to port 80, and a NodePort (31914 outside, 80 inside). He shows that Kubernetes itself is "a bunch of other containers" in namespaces other than the default. - Docker Desktop on WSL 2 gives you a local cluster. His setup is WSL 2, Docker Desktop and its "enable Kubernetes" checkbox, followed by a few minutes' wait. In the demo a .NET service and a Node service run side by side in separate pods, because "containers don't care" what language they are written in.
- Should you learn Kubernetes? "Can't hurt," he says. The hard parts, in his view, are the vocabulary and YAML, and the commands he finds most useful are
describe,explainandget. He also mentions rolling deployments that drain traffic from version 1 pods onto version 2. His prediction is that much of this "will be hidden from you" in future, and you will just deploy your app.
Crosstalk SolutionsSynology DS1520+ Unboxing and Setup
synopsis
The host replaces his full two-bay DS218+ with a DS1520+ that Synology sent him free. He ends up with a bonded 4 Gbps NAS running backups, Docker and G Suite archiving, and recommends it as a mid-range home and IT-enthusiast unit. The one-bay models suit buyers who only back up files.
Hardware and cost. The unit has five hot-swap bays (3.5-inch SATA, 2.5-inch SATA or SSD), two NVMe cache slots, four gigabit ports and no 10 GbE. The 10 GbE option means stepping up to a model with a PCIe slot. He starts with three 8 TB IronWolf drives and one 970 EVO, $1,384 in all, and plans to move in the two drives from his old NAS.
Setup and caching. DSM installs in about 10 minutes. He skips QuickConnect because he uses the NAS only on his LAN, and adds a storage widget to the desktop. He then finds that one NVMe drive is a read cache only and that write caching needs the second.
Networking. He sets a static IP and builds an 802.3ad bond across all four ports. Once the UniFi switch ports are aggregated, it reports 4,000 Mbps.
Services. Active Backup for G Suite took a complicated but well-documented API setup and worked on the first try. Nightly robocopy scripts back up his PCs. He moved a four-camera Surveillance Station licence off the old NAS by copying the key and deleting it there. A bridged Pi-hole container needed a pfSense static route and broke when the NAS IP changed, so he intends to rebuild it on the LAN. Plex is next.
Choosing a model. Backup-only buyers should take a DS220+ or DS620slim. Application use calls for NVMe caching in a DS420+, DS720+ or larger. Older models such as the DS1618+ carry a 2.1 GHz quad-core CPU against the newer 2.7 GHz Celeron.
- NVMe caching matters for application servers, not backup-only use. The host recommends the DS220+ or DS620slim, with no NVMe slots, for plain backup. He recommends the DS420+ (four bays, not expandable) or DS720+ (expands to 7 drives) as starter application servers for Docker, VMs, Plex or Surveillance Station. He rates the DS1520+ (five bays, up to 15 drives with two DX517 expansions) a strong mid-range home NAS.
- A starter DS1520+ build came to $1,384. Synology sent the unit free, and the host gives its price as about $650. He bought three 8 TB Seagate IronWolf drives at $215 each and one Samsung 970 EVO NVMe at $90. Filling all five bays and both NVMe slots adds about $530, for roughly $2,000.
- A single NVMe drive gives a read cache only. The host had not known this before buying his drives. The first drive is read-only cache, and a second adds a write cache; the pair is neither mirrored nor striped. So he advises fitting both slots to fully deck it out, depending on how write-heavy the workload is.
- Four-port 802.3ad bonding works only once the switch side is set. After the NAS bond was created it kept answering pings but reported a failed 802.3ad connection until he set ports 17–20 to aggregate on his Gen 2 UniFi 24-port switch. It then showed 4,000 Mbps, and desktop backups ran at near the PC's 1 Gbps wire speed.
- Pi-hole in bridge mode was more trouble than putting it on the LAN. The bridged container sat on a 172.17 subnet, which needed a gateway and static route in pfSense. It went down for about two hours when the NAS IP changed and the gateway was not updated, so he plans to recreate it on his main LAN.
Technology and FriendsMagnus Martensson on the Cloud Adoption Framework [TECHNOLOGYANDFRIENDS 632]
- The Cloud Adoption Framework is a library to draw from, not rules. Martensson describes it as Microsoft's curated guidance from customers running Azure at scale, covering business and organizational change as well as technology. Implemented "A to Z" as written, he says, it fits no one, and a full Azure landing zone as described is probably not what anyone needs at first; the framework itself has a "start small and expand" section.
- Adopting cloud needs anchoring in the organization, not just a boardroom decision. He says a top-down "we have to do this cloud thing" decision causes major internal fallout, with jobs changing and training needed. The framework's planning guidance is meant to address this, and he says teams years into Azure can still find gaps with it.
- Plan access and onboarding early, or unwinding it later hurts. In his experience developers are often given access to everything because it is easier, which within six months leaves unexplained changes and fails any compliance or security audit. Taking access away later upsets people. He says to work out early how a new team gets access and who may deploy to production, and to lay out subscriptions and management groups expecting to change them.
- Start with a small real application in production. Martensson says a sandbox teaches little, whereas a real workload produces monthly bills that can be weighed against business value. Large decisions, such as whether to buy an ExpressRoute dedicated connection at a "hefty price" or connect over the internet, can come later. Giard adds that a first project should avoid the most mission-critical systems because it will make mistakes.
- Bring in experienced help before going far down the wrong road. Martensson, an Azure MVP for over 10 years and a regional director, acknowledges that as a consultant he is promoting his own trade. He says tens of thousands of words of guidance do not tell an inexperienced team what to skip, and he has seen organizations whose late fixes cost far more than early guidance would have.
Technology and FriendsGary Short on The Mathematics of COVID19 & the Hero You've Never Heard Of [TECHNOLOGYANDFRIENDS 631]
synopsis
Short argues that the pandemic is being fought with tools William Farr built in the 19th century, and that reading COVID-19 numbers well means separating information from data. On that basis he favours targeted local lockdowns over national ones, and personal decisions based on actual risk rather than averages.
Prediction. Short, who builds analytics infrastructure and data-science teams, says the pandemic was predictable but its timing was not, the reverse of tomorrow's weather, which matches today's about 75% of the time but is of little use to a farmer.
Farr. Farr joined the General Records Office for the 1841 census and became its "compiler of scientific abstracts". Short credits him with recording cause of death, which allows risk to be compared by occupation and place, and with Farr's Law, the steep bell curve that "flattening the curve" aims to lower.
Absolute numbers. Looking at live figures, Short says totals depend on whether a country's reporting can be trusted and whether it can count at all. Comparison needs deaths per million, and totals are useful only as historical context.
Mortality. The global 3.5% rate is an average. Citing UK work, Short says risk doubles every five years beyond an age he places at about 35–40, with comorbidities adding to it.
Testing as soft evidence. He grants Trump's narrow point that more testing finds more cases, but says testing measures surveillance, not prevalence. He distinguishes prevalence from incidence, which he likens to debt and deficit. The positive rate can be inflated by case hunting, as in Manchester, and unknown false-negative rates and viral-load thresholds add uncertainty. Emergency calls and hospital admissions are the hard evidence.
Economy and individuals. Citing a figure he says he cannot vouch for, about 10,000 extra US deaths per point of unemployment, Short rejects a choice between lives and the economy. He favours local lockdowns with financial support, and individuals who judge a grandparent's real risk instead of the average.
- William Farr is the unsung statistical hero of COVID-19. Short says Farr, who joined the UK's General Records Office around the 1841 census and died in 1883, began recording cause of death, which lets occupations such as nurses and bus drivers be ranked by risk. Short says the "curve" politicians want to flatten is Farr's Law: infection rises exponentially, then drops quickly once everyone who can be infected has been, giving a sharp bell curve.
- Absolute death counts only give historical context. Short says reported totals, which he reads on air as 174,000 US deaths and 777,000 worldwide after first misreading them, raise questions of trust (Russia's under 16,000) and of the ability to measure (rural India). They cannot compare countries, which requires deaths per million. The one thing they allow, he says, is a comparison such as US COVID deaths having passed US soldiers killed in Vietnam.
- An average mortality rate hides steeply age-dependent risk. Short says the global rate of around 3.5% is an average. Citing UK work, Short says risk is roughly flat up to an age he puts at perhaps 35–40, then doubles every five years, and comorbidities such as obesity and type 2 diabetes raise it further. Young people who feel safe still endanger the people around them, and he praises younger generations for largely "taking one for the team".
- Testing figures are soft evidence; emergency calls and admissions are hard. Short says more tests find more cases without changing prevalence. The positive rate is what matters, and it can be inflated by "case hunting", such as door-to-door testing in the Manchester hotspot. No one knows the tests' false-negative rate, or how the viral load that tests positive compares with the load that infects. Hard evidence is COVID-related 999/911 calls and hospital admissions.
- Saving lives versus the economy is not either/or. Short recalls, without checking, a statistic that each percentage point of US unemployment adds about 10,000 deaths. He argues for local lockdowns, made possible by Farr-style statistics, with financial support for the locked-down areas, because the economy will not survive another six- or seven-month national lockdown. He says individuals who separate information from data make better decisions.
Crosstalk SolutionsUAP BeaconHD
- The BeaconHD only extends an existing UniFi network. The UAP-BeaconHD-US is a wall-plug 4x4 MU-MIMO mesh unit, not a standalone access point, so it needs an existing UniFi AP or Dream Machine. The host found no European version online, though he hints that something similar sits in Ubiquiti's early-access beta store.
- Adoption took about two minutes on a hosted controller. The unit found the host's hosted UniFi controller by itself and needed only a click to adopt. Next to his Flex HD, it reported a −40 dBm uplink and an estimated 540 Mbps transmit/receive rate.
- It markedly improved his G4 Doorbell's weak Wi-Fi in his own test. The doorbell had been at 60–70% signal to the upstairs Flex HD. With the Beacon about 25 feet away it reached 93%, and a G3 Micro reached 100%. The mesh uplink read 47% (270/324 Mbps) before a firmware upgrade to 4.3.20 and 97% after it.
- The host finds UniFi's per-client Wi-Fi experience figures inconsistent. A client showed 100% while the Beacon's own uplink showed 96%. He suspects the client figure counts only the hop to the Beacon.
- At $129 it undercuts a wired access point. The host compares it with a NanoHD at about $179 and a UAP-AC-Pro at about $139, before the cost of cabling either. He likes it and says he will watch for wireless problems among nearby clients.
GCastAccessing MinIO with the AWS S3 SDK [GCast 97]
- The captions are a different episode from the one titled. This text never mentions the AWS S3 SDK. It is the same walkthrough as "Using the MinIO Java Client SDK [GCast 96]", step for step: MinIO's own Java SDK in a Spring Boot app, uploading and downloading the same test.txt, with the same "the last two videos" opening.
Crosstalk SolutionsClearly Anywhere Mobile Softphone
- Crosstalk's previous pick, Bria Enterprise, is costly and cloud-dependent. The host says Crosstalk has sold and recommended CounterPath's Bria Enterprise for its easy install and admin provisioning. But it costs $29 per year per mobile device, and every user's SIP credentials must be entered into CounterPath's cloud portal, where a breach could expose tens of thousands of them.
- The host, whose store sells it, rates Clearly Anywhere better. ClearlyIP launched it for Android and iPhone at $9.99 per user per year, a launch price grandfathered for the life of the licence. Built on the PJSIP stack, it installs on any number of a user's devices, which all ring alongside a desk phone.
- Provisioning stays inside FreePBX, with no third-party cloud holding credentials. Users log in with FreePBX User Control Panel credentials and a domain, or scan a QR code from a ClearlyIP UCP widget. The host suggests a softphone-users group in FreePBX group permissions for central administration.
- Its features go beyond calling, with one firewall prerequisite. It supports BLF quick dials and SMS shared and synchronized across a team's phones, plus video calling, multi-channel call recording and scheduled do-not-disturb. It hands calls from LTE to Wi-Fi seamlessly. Push notifications require the FreePBX responsive firewall to let ClearlyIP's push servers authenticate.
- The host sends 911 to the cellular carrier through number rewriting. He says softphone emergency calls fail to convey location under Kari's Law and the RAY BAUM'S Act regime. His main gap is the lack of company-wide BLF templates, which he has heard are coming but without a date.
GCastUsing the MinIO Java Client SDK [GCast 96]
- The MinIO Java SDK comes in as a Maven dependency. Giard runs a MinIO server in Docker on port 9000, with his own access key and secret key as environment variables (set up as in episode 94). He then generates a Spring Boot project with no dependencies from Spring Initializr and adds the MinIO SDK dependency to pom.xml. He says he learned the approach from the Java Client API Reference and the Java Client Quick Start Guide under Docs at min.io.
- A service class wraps the MinIO client for upload and download. The client is built from the endpoint, access key and secret key. The code checks whether the bucket exists, creates it if not, and uploads with the client's upload-object method, passing args built with the bucket and file name. Download works the same way with download-object args and saves into the same local folder with a "d_" prefix so the original is not overwritten. Giard notes that hard-coding the credentials "isn't the most secure thing" and that they probably belong in environment variables, but this is a demo.
- A component plus getBean connects the static main method to the service. Giard says it is difficult in Java to call a non-static class from a static method. So a component class autowires the service and holds one read-write method. In main he captures the ApplicationContext that the run call returns, calls getBean for the component, and adds the required throws declarations.
- The first run failed because the service lacked the @Service annotation. The exception said the service could not be found for autowiring, and adding @Service fixed it. Stepping through, the new bucket appeared in the MinIO browser, then the uploaded file appeared in it, and then a d_test.txt identical to the original appeared locally.
GCastCreating a MinIO Agent for Azure Blob Storage [GCast 95]
- A MinIO gateway fronts another storage service instead of holding data itself. Giard calls it a MinIO agent and contrasts it with the server from the previous episode. The MinIO docs list five gateways, and he uses the one for Azure. It is a docker run command exposing port 9000 under the name "azure-s3", with the argument "minio gateway azure" where the server used "minio server".
- The gateway's access and secret keys must be the Azure storage credentials. In server mode you invent your own keys. Here the access key is the Azure storage account's name and the secret key is the storage account key (he uses key 1 and says key 2 works too). The prerequisites are an Azure account (he thinks the free trial is 30 days) and a storage account created at portal.azure.com.
- Every change made in one interface appears in the other. A bucket created in the MinIO browser shows up as a blob container in Azure Storage Explorer, and a container created in Azure shows up as a bucket in MinIO. Uploads and deletions made on either side are reflected on the other.
GCastCreating a MinIO Server [GCast 94]
- MinIO is object storage comparable to Azure Blob Storage or Amazon S3. It stores objects and other semi-structured data. In server mode it creates a storage repository plus a browser interface for uploading, listing, downloading and managing objects. Giard points to the quick start guide under Docs at min.io, which he says got him running in a hurry.
- Server mode is one docker run command from PowerShell. Docker must be installed (on Windows that needs a reboot) and running. Giard says that if the command fails, Docker may not be set to auto-start or may still be starting up. The container is exposed on port 9000 and needs two environment variables, an access key and a secret key. The defaults work, but he says you probably want your own, and he uses "access key 2" and "secret key 2".
- The MinIO browser organises objects into buckets. Giard logs in at the endpoint with the keys he set, in a private window in case credentials are cached. Buckets are MinIO's term for what he calls containers from Azure Blob Storage, and he likens them to folders. He creates two buckets, uploads files to each (several at once with Ctrl-select), then downloads and deletes objects.
Technology and FriendsHeather Downing on Developer Burnout [TECHNOLOGYANDFRIENDS 630]
synopsis
Downing's position is that developer burnout, made worse in 2020 by the pandemic's holding pattern, can be recovered from, but only deliberately: with a therapist, by setting priorities and boundaries, and by finding people and work that bring back the reason for coding.
Context. Downing, a .NET evangelist at Okta, expects permanent changes like those after 9/11, with fewer in-person events, though she is busier speaking remotely. She defines burnout as exhaustion with reduced accomplishment, usually caused by unresolvable job stress, now combined with rolling lockdowns and life lived at one desk. The pressure was already there in constant change, roles absorbing DevOps and database work, missing handoffs, and demand for seniors over juniors.
Symptoms. From a survey-based checklist she lists cynicism, lack of energy, irritability, avoidant or addictive behaviour, compulsive overwork and the "bus factor" belief that the team needs you. She shares her own snarky slip and pandemic drinking, and a capable friend who learned to share context.
Coping. Therapy comes first. After that, she mentors boot-camp juniors to borrow their excitement, picks the one "dragon" that matters most, fosters dogs, limits screen time, sets boundaries and takes micro-vacations and hikes.
Women and stakes. She describes the pressure to disprove diversity-hire assumptions and the extra scrutiny of caregiving absences. She also cites the high stakes of code, from self-driving cars to the 737 MAX, and the industry's harsh standards. She closes by urging burnt-out developers to make the attempt to "fall back in love with technology".
- Pandemic stress is now compounding job stress for developers. Downing, Okta's lead .NET evangelist, says the world has been in a "holding pattern" of rolling lockdowns since about February (she is speaking in August), and that people now do work, socializing and everything else at the same desk. She coped by throwing herself into building applications, but says she sees exhaustion across the industry. She adds that this predates the pandemic: constant change and roles absorbing DevOps, Docker and database administration have been wearing down even developers with 20 years' experience.
- Burnout shows up as cynicism, avoidance, irritability and overwork. From a blog's checklist based on a survey of about 55 developers, she lists cynicism about writing code, lacking the energy or motivation to turn up, irritation at coworkers, avoidant or addictive behaviour, compulsive overwork to keep up, and a belief that the team will collapse without you. She gives her own examples: a snarky remark that prompted a colleague's check-in, and drinking that rose early in the pandemic, which she ties to a family history of alcoholism. She notes that highly capable developers often fail to see burnout coming.
- Recovery starts with a therapist, then deliberate changes. Downing, who says she is not a doctor, says to see a therapist first and to switch if they are not the right fit; she found hers on the fourth try. Her own steps were mentoring excited junior developers from boot camps, putting her limited energy into the most important few of 20 tasks, helping outside tech by fostering huskies and malamutes, limiting online exposure, setting boundaries with her boss, taking micro-vacations and hiking. She cites Tim Ferriss's The 4-Hour Workweek.
- Women in tech face extra pressure to disprove diversity-hire assumptions. Downing says that, depending on where they live, women face an assumption that they were hired to fill a diversity quota, so they feel they must perform at a higher level. Absences for pregnancy or for caring for elderly parents also carry a worry that a man would not "bring that inconvenience" to the company.
- Developers' high stakes and high standards add to the strain. She points to self-driving cars and the Boeing 737 MAX as examples of how code matters, and says even a small JSON library might end up on a plane. Developers hold each other to harsh standards, as in pull-request comments on major SDKs, while knowing how much of the internet is held together "with bubblegum and tape" by a short supply of senior developers, many of them burnt out.
Technology and FriendsWilfried Motchoffo on A Path to a Tech Career [TECHNOLOGYANDFRIENDS 629]
- Background is a form of diversity that tech forgets. Motchoffo, a Black man who grew up in Cameroon and lived in France, says he came to the US about four years ago as a French speaker who barely knew English, with no plan to study computer science. He contrasts this with the usual four years of college followed by a job application. He is now finishing a summer Microsoft internship in a programme he describes as diversity-oriented, which mixes program management and software engineering.
- Losing his family's support left him homeless. He was homeless in Seattle for about a year. Six months after arriving, his family's financial support ended and, as an international student barred from working, he lost his apartment and left school. He slept by a bus station, showered at the gym where his membership still worked, and after about seven months applied for a work permit, which took about four months to arrive. He then worked in a fast-food kitchen in Bellevue.
- He chose rideshare driving to practise English, and it led him into tech. After saving for about a year to buy a car, Motchoffo drove for Lyft and Uber full time so he could talk to people. One passenger told him to "be comfortable in a discomfort position". Passengers who were software engineers introduced him to the field, and he began learning online and working toward an associate degree in computer science.
- A ride he accepted by accident produced the Microsoft internship. At the end of a long day he tapped "accept" by mistake. His passenger's husband worked on the Microsoft internship programme, and her call to him revealed applications closed that day at 5 p.m., two hours away; he applied and started in June. In the internship he found he prefers program management, for its focus on solving customers' problems, while still liking to code.
- Finance blocks university, so he is taking a bootcamp first. He was accepted at the University of Washington but could not get a loan because of his status. An instructor pointed him to the Code Fellows bootcamp, which gave him a full-ride scholarship, and he plans to work and save before returning to school. His advice to people struggling is to keep hope and keep going.
Scott HanselmanWhat is the Cloud? Soft and Fluffy Edition - Computer Stuff They Didn't Teach You #10
- The cloud is someone else's computer, at scale. Hanselman starts from the joke definition and his rental-car analogy: people treat other people's machines roughly because breakage is "their problem". He then argues that what matters is scale: thousands of standardized machines in warehouse-sized buildings, in dozens of regions around the world.
- Stacked small computers show what redundancy buys and misses. His rack of six Raspberry Pis, each with four cores (24 in total), can lose a board and keep working while he swaps its SD-card "disk" later. Because every board shares one power supply, though, that supply can take the whole stack down. A Synology box with five removable drives and a backup battery is, in his words, where it "starts looking like a server".
- A 1U Azure Stack Edge is a rentable slice of Azure. He opens a unit that was loaned to him and must be sent back. Inside are two processors, 16 GB sticks of ECC RAM with room for 384 GB, an NVIDIA GPU for machine-learning work, redundant power supplies, and fans and drives that pull out like drawers. It is leased by the month rather than bought. He explains rack units with the shipping container: they are standardized so they can be stacked.
- Software that treats the machines as one unit makes it a cloud. Your data is copied to racks far apart in the building and to other regions (his examples are Seattle, Japan and South Africa), and when a part fails "the cloud should heal". His definition: "a combination of redundant hardware and smart software."
- The "edge" is a local piece of cloud linked to the big one. You run it on your own premises and connect it to the wider Azure cloud, which is why it is called the edge. He adds that the cloud needs no particular processor, ARM or Intel, and can run Linux or Windows.
Crosstalk SolutionsGrecian Port PTMP Wireless Design
- Two 90° sectors beat one 120° sector across the port mouth. A 120° sector would only skirt both sides of the port, where sector signal is weakest. So the host splits 180° between two Rocket 5AC Prism Gen 2 radios on AM-5G20-90 sectors, GPS-synced because they share a pole. This is an unpaid overview for a viewer, Demetrius, at Kos port in Greece.
- airLink estimates 300 Mbps per station; the host expects 150–200. He plans 40 MHz channels to NanoBeam 5AC Gen 2 stations on the port's light poles, every 10 m and about 6 m tall, with the AP about 20 m up on the internet building's roof. The roughly 300 m distances over water give clear line of sight. He calls 100–150 Mbps per station ample for boat Wi-Fi.
- Client coverage favours 2.4 GHz, and one stretch stays weak. UAP-AC-M-Pro access points share each station pole because 2.4 GHz penetrates boats better. A stretch along an ancient wall has only hand-reachable lamp posts, so it gets about −60 to −70 at 2.4 GHz and likely no 5 GHz. He buys two five-packs for nine sites, a spare included, for about $20 less than singles.
- The head-end choices hinge on power types and future cameras. The host chose the Netgate SG-3100 ($399, 2.4 Gbps firewall) and the US-8-150W because it powers both 24 V passive and 802.3af. The Cloud Key Gen2 Plus costs about $18 more than the non-Plus and could add Protect cameras on the sector pole. Each station gets a roughly $50 Altelix NEMA enclosure with two piggybacked PoE injectors.
- The whole design prices at $4,956. That includes an RF Armor UCM-4T four-way sector mount and an optional $100 RF Armor USK9025X shield. The shield cuts interference between the side-by-side sectors and seals the Prism against port weather, and a $10 UGAH-234 holds the GPS antenna.
Technology and FriendsAlexandria Storm on Natural Language Processing and Inclusion [TECHNOLOGYANDFRIENDS 628]
synopsis
Storm, an undergraduate who has just finished her second Microsoft internship, argues that AI is only as good as its data and that the data must represent everyone who will use it. That conviction runs through her Bing language work, her cancelled founders' conference and her criticism of performative diversity.
The Bing project. After a first internship in UX engineering, she worked alone on natural language understanding for Bing's answer boxes. She built two binary classifiers, one for region sensitivity and one for time sensitivity, using labelled data she collected from paid judges, and says she raised precision significantly.
Diverse data. Storm says Bing lags on non-Latin languages, and that models trained only on broadcast "standard" English may fail AAVE speakers. She argues NLP needs linguistics and diverse teams, noting her team had no Spanish speakers.
The conference. She and two Berkeley colleagues planned a conference with a VC-judged pitch competition to connect underrepresented founders with investors. They had sponsorship and travel scholarships, but the pandemic cancelled it, and she stepped back to protect her health.
Performative diversity. She closes by criticizing Pride-month gestures that lack substance, and praises companies that are honest about their numbers. She rates Microsoft better than most.
- Storm built classifiers to flag region- and time-sensitive Bing queries. In her second Bing internship in Bellevue, a solo project on a team where many held PhDs or master's degrees, she fine-tuned two binary classification models. One marks a query as region-sensitive (should a user in India see the same answer as one in the US?), the other as time-sensitive, as with "how do I delete my Zoom account", which needs the current version's answer. She says she raised the model's precision significantly and presented to the VP of WebXT; the project was ready to ship but she does not know whether it has.
- Data quality, not model-building, drives improvement in industry AI. Storm says that at large companies the base models already exist and engineers mostly tweak them, so the critical gains come from large volumes of quality labelled data. She gathered hers through internal sites where paid judges and vendors labelled queries. Her own addition to "quality" is that the data must represent the real, diverse user base.
- NLP models fail users when they ignore dialects and non-Latin languages. She says Bing's answer quality lags for non-Latin-script languages such as Arabic and Chinese. Drawing on her study of linguistics, she argues that models trained only on "standard" broadcast English, which she calls a made-up dialect, may not understand speakers of African-American Vernacular English. She also says her team had no Spanish speakers, which she believes keeps Bing US-centric.
- Underrepresented founders need concrete funding links, not just community. With two Berkeley colleagues, Storm planned a conference for entrepreneurs of colour, women and queer and trans founders, centred on a pitch competition judged by VCs. It had Microsoft sponsorship (HubSpot was in the works) and travel scholarships. It was cancelled in early April because of the coronavirus, and she says she would only try again through a better-funded organization.
- Much corporate diversity work is performative, she argues. As a queer woman of colour, often the only one of her demographic on a team and once one of two women at a startup, Storm criticizes rainbow avatars each June without support, promotion or pay equity behind them. She prefers companies that admit their numbers are poor and say how they will improve. She says Microsoft is significantly better than many, citing its funding of her conference.
Scott HanselmanVirtual PowerPoint Greenscreens! Change a PowerPoint Slide and Change an OBS Scene - automatically!
- A green box on a slide becomes a window for the presenter. In OBS, Hanselman display-captures the screen showing PowerPoint and applies a chroma-key filter to cut out the green. He then places his shrunken camera feed in the hole. He tunes the similarity setting to fix artefacts and points out green "spill" on one slide that still needs work.
- Animated slide layouts left him changing slides and scenes by hand. Every time a slide moves the green box, the OBS scene has to change so that his image fits it. He found pressing "two buttons" annoying. A Stream Deck is one fix, but he wanted the slide itself to drive the scene.
- Scene names in the slide notes now switch OBS automatically. A note line starting
obs:names the scene. A small C# app listens for PowerPoint's next-slide event, reads the notes, and callsSetCurrentSceneon OBS's websocket server, which he says listens on port 444. Notes text oddly begins at shape index 2. The code builds on samples from CSharpFritz and Jimmy Engström and on the OBS websocket .NET library he credits to Alexander Schmid. - It is "not a product": about two hours of code. He gives the effort as about 90 minutes, and later "two hours", and posted it as a PowerPoint OBS scene switcher with no executable yet. He plans CI/CD to produce builds. He says it could become an OBS or PowerPoint plug-in, and that storing the scene in the notes field was an arbitrary choice.
Technology and FriendsIrma Mesa on Cafecito [TECHNOLOGYANDFRIENDS 627]
- Cafecito pairs remote tech workers with strangers for short video breaks. Mesa, who has worked remotely since 2017, built it to solve her own isolation: members sign up, are matched on their interests, role and industry, and meet on a 30-minute video call. She planned it as a local coffee meetup in Indianapolis; COVID made it virtual, and she says it now has members on five continents.
- The product is the matching algorithm, not the video. Mesa says video comes through daily.co's API, which took less than a day to set up. The core is a matching algorithm, built from scratch by a developer in Mexico City and tested since July, that now starts from shared industry and then narrows by interests. Post-call feedback on enjoyment (1–5), relevance, whether to meet again and how the caller felt is meant to train the matching over time with machine learning, which she describes as still lightweight.
- She launched on no-code tools and is rebuilding to scale. Mesa says she launched in March on Zapier for automations and Airtable as the database, to validate the idea, and is moving to a proper backend with a React frontend, hosted on AWS. She has about 500 members and hopes for 1,000 by year end. Because she fears another 5,000 at once would be "shaky", she is considering a waitlist, and she is putting quality ahead of growth because competitors who grew fast have shaky quality.
- Cafecito is free for now, with freemium planned. Mesa describes the current service as a beta with no revenue. Her plan is a trial of perhaps 14 days, then a premium tier with precise targeting such as "engineers in Chicago". As a first-time founder she says running a free product is stressful, and marketing so far has been organic, through Product Hunt, newsletters and users' posts.
- A business version would help people ops onboard and keep remote hires. Mesa says a B2B prototype, aimed at an August 31 or early-September pilot, would give people ops data on which employees and departments are engaging, so they can act on retention and well-being. Fellows from a programme for people who lost internships to COVID are building it. Giard adds that turnover is expensive and that not feeling connected is one reason people leave.
Technology and FriendsNayonna Purnell on Changing to a Career in IT [TECHNOLOGYANDFRIENDS 626]
- Purnell left teaching for software after talking her way into an internship. She taught K–12 Spanish in Philadelphia for six years, holds a dual master's in special education and Spanish, and made the change about three years ago, around age 30. She had built point-and-click sites, learned through Girl Develop It meetups costing $20–$50, and took an online course. She then asked a startup for a summer internship and was paid $500 a month after the founders said they could not match her teacher's salary. She resigned from teaching, went on to community college and an online programme for software engineering, and now works as a consultant on Salesforce admin and development.
- The "developer in three months" story did not hold for her. Purnell says the bootcamp promise of a $60,000-to-six-figure job after three months ignored who it worked for. She says data shows Black women are not being hired in Silicon Valley. With two master's degrees, a bachelor's and a software engineering certification, she has been told at interviews that she was "perfect, but yet not enough", and she has never had an uncle or friend to call for a role. She attributes this to being a woman of colour.
- She focuses on problem-solving rather than one language. Her stack has spanned JavaScript, Python, Apex on Salesforce, Java, C++ and, recently, Blazor with C#. A senior developer's remark that developers are problem solvers changed her approach. Giard agrees, saying his own job is solving business problems, sometimes without technology.
- Teaching skills transfer directly to development. Purnell calls them her superpower: explaining technical work through analogies to non-technical people while being precise with peers, writing documentation for whoever comes next, and planning code the way she wrote lesson plans, starting from the objective and breaking it into chunks. Her hardest part has been interviews, where hiring managers say passion is enough but then ask her to code and to articulate her thinking.
- She built her network and experience by volunteering and asking. Purnell volunteers at and organizes conferences to get in free and meet people. She joined Temple University and conference mentorship programmes, plans to attend a virtual Grace Hopper, and found a Python group through Systers. Building a conference website on Firebase with senior developers gave her hands-on work her job did not. She advises entering tech through non-engineering roles or employers that train people from other backgrounds, and not giving up.
Technology and FriendsPeter de Tender on Azure Certification [TECHNOLOGYANDFRIENDS 625]
- Cloud certification can no longer be crammed in a five-day class. De Tender, an Azure technical trainer at Microsoft since September last year, after about 10 years running his own consultancy, says his team trains top and "compete" customers each week for Azure skills, with certification as a side effect. He says Azure is too broad for anyone to master, and that over the last two or three years exams have tested practical, day-to-day knowledge rather than memorization.
- Azure certifications are now built around job roles. He says Microsoft Learning introduced the model about three years ago, around September 2018. It starts from AZ-900 Azure Fundamentals and moves to role exams such as administrator, developer (AZ-204), security and IoT, nine or ten in all, which combine into role credentials such as architect. Exams are revised every four to six months, so the administrator exam has gone from AZ-100 to AZ-104. He says the credential stays valid for life but an exam counts for two years.
- Certification proves competence to yourself and employers. De Tender says Microsoft trainers and Microsoft Certified Trainers must be certified to teach. For others it is evidence of invested effort that can help a career, though not a guarantee of expertise. When he managed a partner firm, consultants who passed got a bonus, a gift card or a pay raise. Giard adds that a certification gives a candidate a leg up, all else being equal.
- Prepare with free Microsoft Learn labs and each exam's weighted objectives. He points to microsoft.com/learn for free training, documentation and hands-on labs, and suggests running even the smallest VM, about $30 a month, for five minutes. Each exam has a PDF of objectives with weightings; his example is networking at 5% against web-app deployment at 30% for developers. He takes beta exams because they show what to focus on, and their scoring can be revised after feedback within two to six weeks, so a fail can turn into a pass.
- Exams turn on reading details and spotting distractors. De Tender describes the question types: yes/no, multiple choice with up to seven or eight plausible options, drag-and-drop ordering of steps, and case studies, the hardest, where technical and business requirements such as performance against cost must be balanced. Scenario detail such as "17 offices, 120,000 employees" is often irrelevant. He says live-environment tasks were added about a year ago but recently removed, which he believes is partly because of COVID capacity. Exams can be taken at home under webcam supervision at a completely clear desk; he once had to cover a hotel TV with towels.
Crosstalk Solutions"the office" Network Design
- The UniFi Design Center plans a whole UniFi deployment on a floor plan. At design.ui.com, the host scaled a floor plan of the Dunder Mifflin office from the TV show by setting a doorway to 3 feet. He drew outer and inner walls because they drive the Wi-Fi and camera coverage estimates.
- The host doubles the switching for redundancy rather than max one switch. He fits a UDM Pro for an office under 50 connections with surveillance, plus two USW 48 PoE switches, later upgraded to two Pro 48 PoE at $1,099 each. The design needs exactly 48 ports, and auto mode would give one switch. Split half and half, either switch can carry the office while a failed one is replaced.
- The host deploys fewer drops than the tool's two-per-person assumption. He mostly uses four-port workspaces per desk cluster, plus two each in two offices and four in the conference room and break room. Running spare cable during the install is cheaper than adding it later.
- Two NanoHDs cover the office, and dome cameras cover only entrances. 5 GHz coverage shrinks but still reaches where needed. Five G3 Dome cameras watch every door and stairway entrance rather than employees, though he notes flat-mounted domes may need bullet or G3 Micro cameras for angled views.
- The tool's topology and bill of materials need correcting by hand. Cables can only home-run to the rack, not daisy-chain from a workspace, and the bill of materials adds 96 patch cables. It estimates three 1,000-foot boxes of cable, where the host expects about four once runs go through walls and ladder rack.
GCastHandling Spring Boot Errors with ControllerAdvice [GCast 93]
- Per-method try-catch scatters and duplicates error handling. Giard says the try-catch pattern from his previous videos works, but catching the same exception in 20 methods means copying the handler into 20 places and maintaining all 20. Controller Advice, built into the Spring Framework, moves that handling into one place.
- A ControllerAdvice class holds one handler method per exception type. He adds a new class (his name for it is his own choice) annotated with
@ControllerAdvice, and in it a method annotated with@ResponseBodyand@ExceptionHandlerforArithmeticException. The method builds the endpoint's usual output model with a null quotient and the message "math error: " plus the exception message, and returns it in aResponseEntitywithHttpStatus.BAD_REQUEST(400). He says a separate status annotation is redundant because theResponseEntityalready carries the status. - With the advice in place, controller try-catch blocks can simply go. Posting 100 divided by 0 to the divide-numbers endpoint, with no try-catch left in it, lands in the advice method and returns a 400 with quotient null and "math error: / by zero". He adds handlers for his custom missing-arguments exception and for the generic
Exceptionclass, which he says should sit at the top or bottom as the handler of last resort, so it catches any exception the others miss. - Validation code shrinks to throwing the custom exception. In add-numbers he deletes the inline checks and their try-catch and just throws a new missing-arguments exception with a message; Java requires
throwsin the method declaration for that exception. A missing person name returns a 400 with "missing args error: missing input, person name is required", and a missing first number, thrown deep inside the math service, is caught by the same handler.
GCastMore Error Handling in a Spring Boot Application [GCast 92]
- A divide-numbers endpoint shows Java integer division truncating. Giard adds a divide-numbers POST endpoint, called on localhost port 8080 under the app's GCast path, with input and output models copied from his add-numbers ones and a quotient in place of a sum, plus a divide method on the math service interface, its real implementation and its mock. Because an integer divided by an integer returns an integer, 10 divided by 2 returns 5 but 100 divided by 3 returns 33: the fraction is dropped, not rounded.
- An uncaught divide-by-zero returns an unhelpful HTTP 500. Dividing by 0 throws an exception and the response has a 500 status, no useful information, and not the JSON format the endpoint normally returns.
- Catch built-in exceptions rather than pre-checking every input. Giard says checking parameters up front, as in his last video, is not always possible: the division might be one step in a longer workflow with complex logic, perhaps one he did not write. He wraps the service call in the controller in a try-catch for
ArithmeticException, plus a genericExceptioncatch for anything else, and how to handle each is up to the business logic. - The error comes back in the same format as a success. The catch returns the output model with a null quotient and a message saying an arithmetic error has occurred, with the requester's name and the exception's own message ("/ by zero") appended. His first run still returned a quotient of 0 because the output was set again after the try-catch; the assignment had to move inside the try. He says the consistent format means clients need not change their code radically, and that the next video shows a more elegant way to handle exceptions in one place.
Crosstalk SolutionsUniFi Protect G4 Doorbell
- The G4 Doorbell is Ubiquiti's first smart-home device since mFi. The UVC G4 Doorbell for UniFi Protect lists at $199 MSRP and was sold out at recording; it records 2 megapixels at 30 frames per second, has a polycarbonate enclosure, entrance lighting and a display, and is rated IPX4: spray from any direction is fine, sustained water pouring over it is not.
- Installation took the host about 30 minutes, not the advertised 15. He counts five or six minutes finding the breaker and the time spent filming, and puts a typical install at 15–25 minutes with only a Phillips screwdriver; the hardest part was pushing stiff old doorbell wires back into the wall, and the unit works out which wire is which itself.
- The quick-start guide includes a chime-box step Ubiquiti's video skips. The kit ships a wiring block for the interior chime box; the host first tried without it, then fitted it anyway. The app warns that enabling the chime-box setting without a chime box "can cause serious damage to the device", and the setting also affects power usage.
- The doorbell's interactive features work only through the mobile app. The Protect app found it on the same Wi-Fi as his UNVR, flagging a weak signal. A ring pushed to his phone, and a custom message can show on the display for one minute; two-way talk worked from the app but not from the web live view, and the speaker was hard to hear over traffic and wind.
- The host reserves a verdict but calls the price reasonable. He guesses $199 is in line with Ring-type doorbells without having checked. In Protect it supports RTSP and logged a UPS driver's ring as an event, and he says a separately sold $29 doorbell power supply is coming, letting it run without the doorbell wiring.
Scott HanselmanPorts and Processes! What Process has that Port open? - Computer Stuff They Didn't Teach You #9
- Understand why a pasted fix works, not just that it does. Hanselman frames the video against copying Stack Overflow answers blind: the computer "is not a black box", and, like changing a tire, it is worth knowing how even if you sometimes call for help.
- "Address already in use" means another process got the port first. His demo Node app fails to bind port 1337 because something is already listening on it; he stresses that a port is a computer concept, not a Windows, Mac or Linux one, and that ports are first come, first served.
- On Windows, get the PID without elevation, then kill it.
netstat -b -anames the executable but needs administrator rights and is slow;netstat -a -o -npiped throughfindstr 1337gives the process ID without elevation,tasklistwith a PID filter identifies it as node, andtaskkill /f /pidstops just that one process (the PID can also be found in Task Manager's PID column). - Linux uses different flags for the same tools. In WSL 2,
netstat -ltnp(listening, TCP, numeric, program name) showed node without sudo,grepstands in forfindstr, and he preferskill -15to the "very aggressive"kill -9. - Sysinternals TCPView gives the same view graphically. It needs administrator rights, sorts connections, shows the PID and file location and can end the process; he argues such tools matter for malware hunting too, since a program listening on a port as an ordinary process finds it hard to hide.
Technology and FriendsDamian Brady on MLOps [TECHNOLOGYANDFRIENDS 624]
- DevOps practices fit machine learning poorly as they stand. Brady says ML projects are experimental, with dead ends and corrupt data, and may run weeks or months before anything is worth releasing. A training run "might take days of training on petabytes of data" and thousands of dollars of compute, against minutes for a normal build, so retraining on every change is not practical.
- Everything except the data belongs in source control. That means the Python, R or C# training code, the data-cleaning steps, the infrastructure definition (VM size, GPUs, RAM, OS, library versions) and the pipeline, which saves each model to a repository with metadata such as accuracy. He says data scientists are often not developers, so models still pass around by USB key and email; he wants an automated pipeline that packages a model as a library or, commonly, a Docker container exposing an API.
- Monitoring should test whether a new model changes behaviour. For a recommendations engine he would check whether the new model gets more clicks than the old one; for image captioning, whether users correct captions less often. He says this is only partly automatable, because validation against your own test data "doesn't necessarily represent the real world".
- Track individual experiments, not user stories toward the goal. Brady says he has been "struggling with" planning, since a project's single aim (a recommender hitting a target click-through) cannot be broken into steps. He suggests one work item per experiment, such as a linear regression on a given data set, closed with its result even when it is a dead end, so the team sees what was tried.
- Azure Machine Learning runs training; GitHub Actions or Azure Pipelines trigger it. He describes Azure ML's experiment and model tracking, compute that scales from zero to five or six instances and back, mounted blob storage, hosted Jupyter notebooks, AutoML and a drag-and-drop designer. General CI tools cannot easily run an unattended two-day job and don't know what a model or accuracy metric is, so he uses them to start a training run when code changes and to deploy once the model is done.
Technology and FriendsGlenn Block on Astrophotography [TECHNOLOGYANDFRIENDS 623]
synopsis
About two years into the hobby, Block argues that astrophotography is now within an amateur's reach. Mounts, cameras and software have become far more affordable, though a serious start still costs a couple of thousand dollars. The way in, he says, is the local astronomy community rather than the equipment.
Mounts and optics. He starts with the mount: a tracking mount follows the Earth's rotation, and an equatorial mount at about $800 tracks better than an alt-azimuth one at the same price. Aperture sets how much light a scope gathers, and the eyepiece sets magnification. Reducers widen the field of view and a Barlow zooms in, each with a trade-off, which he says appeals to the engineer in him.
From eyepiece to camera. Faint deep-sky objects need long exposures, around 30 seconds, from a dedicated camera tethered to a PC, which then stacks many frames, sometimes from several nights. He says a Canon EOS is also popular. Sessions last six to eight hours, so power matters, and he chose an Intel NUC over a Mac drawing about 80 watts. Post-processing is part automated and part checked by hand.
Where and when to shoot. He leaves Seattle's light pollution for darker sites an hour or more away, judges them by the Bortle scale, and plans trips with deep-sky weather apps covering seeing, humidity and cloud. His proudest image is of the Whirlpool Galaxy.
His gear path. He went from a cell-phone adapter to a Celestron NexStar Evolution 8, a used ZWO ASI294, then a Celestron AVX mount, a RedCat 51 and a guide scope. Each upgrade, he says, needed about 10 more purchases.
Getting started. He recommends the book NightWatch and the Cloudy Nights forum, and above all a local star party, where newcomers can look through other people's scopes.
- The tracking mount matters more than the telescope sold in kits. Block says children's scope kits disappoint, because a stable mount that moves with the Earth's rotation is what keeps an object centred. He puts a really good alt-azimuth mount at about $5,000 alone, against roughly $800 for an equatorial mount that tracks tightly; equatorial mounts align on Polaris and need counterweights, so he started on alt-azimuth because it was easier to learn.
- Deep-sky astrophotography is long exposures stacked and post-processed on a computer. The eye sees the Orion Nebula as a grey smudge; a 30-second exposure brings out colour. He describes sessions of six to eight hours, sometimes over several nights, with a dedicated camera streaming frames over USB to a PC, then stacking in Photoshop, Deep Sky Stacker or PixInsight, with perhaps 10 hours of processing behind a finished galaxy image. Imaging drains laptops, so he bought a low-power Intel NUC mini PC rather than a Mac drawing about 80 watts.
- Dark skies and atmospheric conditions decide the shot. He says the Bortle scale measures sky darkness, lower being darker. From Seattle he drives about an hour to Gold Creek (Bortle three or four, he thinks), and names Goldendale, about three and a half hours away, with an observatory. He uses deep-sky weather apps for seeing, humidity and cloud up to about 10 days out, and says city-light filters help from home.
- Start cheap and upgrade as the hobby takes hold. He began with a cell-phone adapter on the eyepiece and shot the Moon and the Orion Nebula from his driveway. His gear went from a Celestron NexStar Evolution 8 (an 8-inch scope that aligns on three stars from a 50,000-star database) to a used ZWO ASI294 camera (almost $1,000 new), a Celestron AVX mount, a portable RedCat 51 and a guide scope. He puts a serious start at a couple of thousand dollars, or about $300 for a tracker if you already own a camera, and recalls one person who spent $100,000.
- Join the local community before buying anything. Block says a star party hooked him about two years before recording, and that you don't need a telescope to attend one. For learning he recommends the book NightWatch, the Cloudy Nights forum ("the de facto site"), his local shop Cloud Break Optics and local Facebook groups, and says beginners are not made to feel dumb.
Scott HanselmanContainers? So What? Docker 101 Explained - Computer Stuff They Didn't Teach You #8
- Hand-configured machines drift, and VMs fix that expensively. Hanselman starts from setup documents (install nginx, Apache, Python, PHP, .NET) that go wrong across 1 to 256 machines; virtual machines solve this but each carries a whole guest OS on a hypervisor, perhaps 20 GB, duplicating what the host already provides.
- Containers share the host OS, carrying only their own binaries and libraries. In his diagram the hypervisor and guest OSes are replaced by a thin Docker daemon that brokers system calls; a
FROM scratchimage holding his statically linked C hello world was about 1 MB, the size of the binary itself. - Containers are ephemeral by design. Files he created inside an interactive busybox container were gone on the next run; he calls this a feature, since the machine is always exactly what the Dockerfile describes, and says state belongs in mounted volumes or, as with his podcast site, an external database.
- Cached layers make images fast to build and start. Each Dockerfile step is a layer stacked on base images (scratch, busybox, ubuntu, nginx built on Debian Buster slim) pulled from Docker Hub; nginx came down as five layers of about 30 MB and ran with port 81 on the host mapped to 80 in the container.
- His production site builds, tests and publishes entirely inside Docker. The Hanselminutes site's multi-stage Dockerfile uses Microsoft's .NET SDK image, so no SDK is needed locally; it has 23 layers, an 11-second step is reused when unchanged, and the final image is 256 MB. He calls containers the future of shipping software and defers orchestrators like Kubernetes to a later video.
Scott HanselmanWhat is .NET? What's C# and F#? What's the .NET Ecosystem? .NET Core Explained, what can .NET build?
- .NET is an ecosystem of languages, runtimes and libraries, not one product. Answering newcomers including Kelsey Hightower, who likened it to "a mini operating system", Hanselman lists C#, F# and VB; the common language runtime (like the JVM); a large base class library; and NuGet (like npm or Maven), which he puts at 57 billion downloads.
- The separate .NET flavours are merging into one SDK. .NET Framework runs on Windows and is "basically done"; .NET Core is open source and cross-platform; Mono/Xamarin is a clean-room reimplementation. As of 2020 .NET Core 3.1 is the long-term-support release with three years of support, .NET 5 is in preview for later in 2020, and he says LTS releases then follow every other year.
- The
dotnetCLI is the entry point, with templates and side-by-side versions.dotnet newscaffolds console, WPF, Razor Pages, MVC, React and gRPC projects; the bin and obj folders are disposable build artifacts; installed versions sit side by side, so one app cannot break another; the project file reflects C#'s enterprise use. - Language versions move separately from the runtime. Using a C# 9 preview, he rewrites a recursive Fibonacci (fib(20) = 6765) as a top-level program with no namespace, class or
Main, then as a pattern-matching switch expression; he stresses the newer style is optional. - F# and C# borrow features from each other and interoperate. F# is the functional, OCaml-style language; all .NET languages compile to an intermediate language run by the CLR, so each can call the other, which he admits is "a bit of an oversimplification". His own podcast site runs on .NET Core 3.1 on Linux in Docker.
Scott HanselmanRaw Tech User Group Talk - How does the Windows Terminal, WSL, and other shells all fit together?
synopsis
Recorded remotely over Teams for the Omaha Azure user group and posted unedited, this talk builds from terminal history to Hanselman's case that WSL 2 is not "just a VM" but a level of integration that "blurs the lines between operating systems". He ends by claiming that a Windows machine set up this way, even an old laptop, is "the best developer laptop". He works at Microsoft, which makes the tools he presents.
Console, terminal and shell. He separates the three: the shell (cmd, PowerShell, Git Bash, Cygwin) makes the strings, and the terminal paints them. The old console host is synchronous, so a dir /s runs only as fast as the screen accepts output and builds run fastest minimized. Mintty existed because of that. The open-source Windows Terminal renders with DirectX at around 500 frames a second, asynchronously, and any shell can run in it through the ConPTY pseudo-terminal interface.
Fake Linux and lied-to Linux. Cygwin is GNU user-space recompiled against Win32 with #ifdefs, so its ls calls Windows APIs. An attendee called it "syntactic sugar" and Hanselman adopted the phrase; his example is that you still cannot follow a Redis install guide with it. WSL 1 instead runs unchanged ELF binaries as pico processes, a lightweight process type invented because forking on Windows is expensive, and intercepts their Linux syscalls and redirects them to Windows. It breaks down on the file system: the Linux file system sits on NTFS, one syscall can become up to ten NTFS writes, access was about 10 times slower than native, and npm install could take 15–20 minutes. He calls WSL 1 obsolete but notes it needs no hypervisor, so it still serves older PCs without virtualization extensions.
WSL 2 as a utility VM. WSL 2 runs a real Linux kernel on the Windows hypervisor platform, which was split off from the paid Hyper-V product so that Windows 10 Home users, students with cheap laptops included, can run it. He calls getting that through the organisation "a huge win". Distros start in under a second, five ran within about half a gigabyte, less memory than Teams, and wsl.conf sets mounts, memory, processor limits or a custom kernel. Distros can be exported and imported as tar files; his example is a Microsoft colleague shipping a preconfigured IoT build environment that way.
Integration across the boundary. From Linux he launches notepad.exe (the .exe must be explicit, which he says prevents exploitation), pipes ls to clip.exe, and opens Linux folders in Explorer through a Plan 9 file server each distro runs. VS Code stays a Windows app while its extensions, such as the C# language service, run in a server inside Linux on a well-known port; he says other editors could copy the open protocol. Linux's localhost port 5000 is forwarded to Windows, so a breakpoint set in Windows debugs .NET Core running in Linux.
Docker, dev containers and Codespaces. Docker Desktop now runs on its own hidden WSL distro rather than a Hyper-V VM "on puppet strings", and his podcast site builds and runs its Selenium tests in Linux containers from either side. A dev container file lets a new hire open a Go project with no Go installed locally, and Visual Studio Codespaces moves the same setup to a cloud VM reachable from a browser or desktop VS Code. He adds that one person with free tools can now run CI/CD more maturely than many enterprises.
What was still coming. As of the August 2020 talk, Linux GUI support had been announced at Build with full support due that autumn, CUDA GPU access for TensorFlow was planned, and the WSL kernel was to move from Windows Update to Microsoft Update. His stated goal was cutting WSL setup from three or four steps and a reboot to one step and a reboot.
- A shell makes the strings; a terminal paints them. Hanselman, a Microsoft employee, says the old console host is synchronous, so output can go no faster than the screen paints it and builds run fastest minimized; mintty was a "vote of no confidence" in it. The open-source Windows Terminal renders with DirectX at around 500 frames a second, asynchronously, and talks to any shell through ConPTY.
- Cygwin is recompiled comfort food; WSL 1 lies to real Linux binaries. Cygwin is the GNU utilities rebuilt against Win32, "syntactic sugar" on Windows in an attendee's phrase he adopts. WSL 1 runs unchanged ELF binaries as lightweight pico processes and translates their Linux syscalls to Windows, but file access was about 10 times slower than native, with one syscall becoming up to ten NTFS writes, so
npm installcould take 15–20 minutes. - WSL 2 is a real kernel in a lightweight utility VM. It runs on the Windows hypervisor platform, separated from the paid Hyper-V product so it works on Windows 10 Home, which he calls a hard-won internal change; distros start in under a second, five ran in about half a gigabyte,
wsl.confcaps memory and processors, and distros export and import as tar files. WSL 1 still serves PCs without virtualization support. - Deep Linux–Windows integration, not the VM, is the selling point. He runs
notepad.exefrom Linux, pipeslsintoclip.exe, browses Linux files from Explorer through a Plan 9 server, splits VS Code so the UI stays in Windows while language servers run in Linux, and forwards Linux's localhost port 5000 to Windows. Docker Desktop keeps its own hidden WSL distro, and dev containers and cloud Codespaces remove machine setup for new hires. - More was promised for that autumn. As of the August 2020 talk, Linux GUI support had been announced at Build, CUDA GPU access for TensorFlow was coming, the WSL kernel was to move to Microsoft Update, and his goal was a one-step-plus-reboot install, down from three or four steps. He argues that, so set up, Windows is "the best developer laptop".
Technology and FriendsJon Skeet on Programming an Electronic Drum Kit [TECHNOLOGYANDFRIENDS 622]
synopsis
Skeet, who builds Google Cloud's .NET client libraries, describes V-Drum Explorer, an open-source app for configuring Roland electronic drum modules from a computer. A year on, it works much as he first pictured it and has grown into Blazor, Bluetooth and a second instrument. He calls it silly and also useful: it taught him tools he has since used elsewhere, and it supplied conference and user-group talks.
The idea. A Roland module holds 100 kits, each configurable down to two instruments per trigger, behind a tiny display. Seeing the USB port in the store, he imagined a tree-view editor. He compares seeing an idea through to the end with directing An Inspector Calls about 14 years earlier, when the cast finally played his cheerful Inspector "to 11" on the last night.
Talking to the module. It speaks MIDI SysEx, which he says is one-way in MIDI 1.0, so he built a request-response layer on top. He moved from a console app to WinForms to WPF, then rewrote the WPF app properly with view models.
Structure. Separate projects hold the model, with schemas for the TD-17, TD-27 and TD-50 and interfaces for MIDI and audio, plus the device implementations and the view model. A view-services interface keeps the view model testable, though he says he has written few tests. People with similar kits have shown interest.
The silly parts. Prompted by user-group listeners, he built a Blazor demo using the Web MIDI API that reaches the kit over Bluetooth from a phone. He also found that Roland's Aerophone wind instrument shares the protocol. A bar trigger turns the pages of his sheet music.
What it gave him. He learned installers, code signing and documentation. His WPF work led to a Zoom SDK app, and the project became an NDC London talk and many remote user-group talks. He says it works better over Zoom because the kit stays at home.
- A tiny module display prompted him to configure the drums in code. Skeet's Roland TD-17 (later upgraded to a TD-27 module) holds 100 kits, and in each one every trigger can take two instruments with their own volume, attack and crossover. Seeing the USB port, he pictured a Windows app with a tree of settings. He says the open-source V-Drum Explorer still looks much as he imagined it just over a year earlier.
- MIDI SysEx had to be wrapped to behave like request and response. He says MIDI 1.0 is unidirectional: the module answers on its own output with a block of memory at an address, and sends the same message when settings change on the device. His abstraction sends a request, waits for data for that address and ignores everything else. He credits Roland's detailed documentation of each module's schema.
- The design separates model, view model and devices so the view model stays testable. A model project holds the schemas for the TD-17, TD-27 and high-end TD-50 and interfaces for MIDI and audio, implemented in separate projects; the audio one records samples of all 300 instruments. Dialogs go through a view-services interface with one-line implementations, so tests can fake a save or a cancel, though he admits there are few tests. The app went from console to WinForms to WPF, then a full WPF rewrite with view models, and he notes there had been no new WPF books since about 2010.
- User-group audiences suggested the extensions he finds "wonderfully silly". After one suggestion he spent a weekend on a Blazor demo that runs the same .NET model code in the browser through the JavaScript Web MIDI API, which can reach the kit from his phone over Bluetooth MIDI. Another question led him to find that Roland's Aerophone digital wind instrument uses the same protocol, so the app lists its saxophone and pipe-organ kits too.
- A spare pad turns the pages of his sheet music. Hitting the bar trigger sends a MIDI note that his console app turns into a page-turn on a four-page PDF of "Livin' on a Prayer". An earlier hack copied the current kit to slots 99 and 100 and treated a switch to 100, made by the pedal, as a page-turn. He says the project taught him Windows installers, Authenticode signing and documentation, and its WPF work made his later Zoom C# SDK app practical.