Souk's Notes - Unofficial Summaries
Crosstalk SolutionsWiFi 6E U6-Enterprise Announced!
- The U6 Enterprise is Ubiquiti's first announced Wi-Fi 6E access point. Per Ubiquiti's launch video it adds a 6 GHz radio to 4x4 MIMO, claims over 10 Gbps combined over-the-air throughput and 600+ clients, runs on PoE+ rather than PoE++, and upgrades the LAN port to 2.5 Gbps, which the host calls its most notable feature.
- Over-the-air speed ratings exceed what single-gigabit ports can deliver. The host explains Ubiquiti's 1.5 Gbps U6 Lite and 5.3 Gbps U6 Pro (300+ clients) figures are client-to-client totals behind 1 Gbps ports. He calls the $99 U6 Lite the best bang-for-buck AP he has tested, enough for most homes at one or two units; he has not yet reviewed the U6 Pro.
- Ubiquiti's Enterprise switches target small-enterprise cores, not homes. The host cites $1,298 for the Enterprise XG24 (24 x 10G RJ45, two 25G SFP28) and about $1,599 for the Enterprise 48 PoE. He believes all but the Enterprise 8 have layer 3 features, though not yet a full layer 3 implementation.
- Ubiquiti appears to be moving toward home automation. All U6 APs carry Bluetooth Low Energy for UniFi IoT devices such as the $59 UP Sense multi-sensor; the U6 In-Wall, U6 Extender and UniFi Protect door lock were early access at recording, while the U6 Mesh is available. The host's expectation of more such devices is his suspicion.
- WiFiman's signal mapper now maps coverage room by room. The host says it works with a UDM Pro or UDM SE on the latest firmware plus the current WiFiman phone app, walking a floor plan to find dead zones; he defers his assessment to a later video.
Polis Pandit$5 Considerations Before Investing in Meta ($FB) and Its Metaverse Future
- This post includes paid content that is not available publicly. See the original source.
Technology and FriendsBrent Ozar on What Every Developer Needs to Know About Databases [TECHNOLOGYANDFRIENDS 694]
- Pick the database you already know and stick with it. Ozar, a SQL Server performance consultant, says learning a new database for each project leads to botched basic implementation decisions and slower shipping. He says it does not matter whether that is SQL Server, Azure SQL DB, MySQL, Postgres or SQLite.
- Base architecture on your data-size tier, not famous sites. He sorts databases into 1–10 GB (architecture barely matters), 10–100 GB and 100 GB–1 TB, and says his advice differs by tier, so copying Stack Overflow, a top-50 website, is copying a different problem. He calls the biggest early decision whether to put each client in its own database, which he favours: one shared database is easier to develop but harder to tune as it grows.
- Keep data you never join out of the relational database. Ozar compares relational databases to Ferraris: fast but expensive to run and maintain with specialists. Caches, queues, files, and XML or JSON data can go to cheap cloud file and queuing services, which scale far more easily than relational servers.
- Query rate sets how careful you must be. He sorts load into 1–10, 10–100 and 100–1,000 queries per second: at the low end even SQLite is fine, while from 100–1,000 a single bad query can take the database down, so that is the point to cache in the front end or in Redis. He says relational databases can go far higher, citing a client running over 100,000 queries per second.
- Lean on managed services for work that doesn't make money. Ozar says developers must know early which regulations their data falls under, since some databases make compliance easier; in his view quickly built NoSQL databases such as MongoDB lack the compliance and security features of enterprise databases. In 2022, he argues, the default should be a database someone else manages and patches; though a DBA of over two decades, he uses hosted cloud databases for his own applications.
Crosstalk SolutionsNetwork Rack Installation - Start to Finish!
- The host split test gear into its own rack to protect production. He bought a NavePoint 15U Performance Series rack for about $320, kept his 12U StarTech rack for production, and took about 1.5 hours to assemble it. Its sides lock and lift off for access, the back is bolted, and it rolls on casters or bolts down.
- The rack's shallow depth limits it to networking gear. At 450 mm deep, the host found the Patchbox 365 needed about 1.5 cm more, its cable arms would hit the door, and the deeper of two shelves clashed with rear power cables. He moved the Patchbox and the USP RPS to the deeper rack, and shifted the front rails back to give fiber room to bend; a 600 mm version exists.
- The rack's bundled fans are loud enough to leave off. His meter read about 55–56 dB ambient and about 70 dB with the fans on. He runs them from an early-access UniFi PDU so they can be switched from UniFi, keeps them off for now, and may swap in quieter fans.
- Old phone jacks wired with Cat5e made easy cross-connects. The host traced two RJ11 runs to the attic and re-terminated them as Cat5e keystones into a USW Industrial switch carrying all his house VLANs. He recommends the Untwist Tool version 2 from TechToolSupply, with six channels, a rubberized back and an optional Wow Stick driver, for anyone terminating cable regularly.
- Any toolless cage-nut replacement beats standard cage nuts. The host used Rack Studs Series 2 Duo, which Rack Studs sent him, holding both screws of a 1U device in one piece, and also showed Patchbox's metal clip-on alternative. He found both worked and did not know which is cheaper.
Technology and FriendsBarry Stahl on Patterns for Reliable Systems [TECHNOLOGYANDFRIENDS 693]
- Changing system state twice in one execution context cannot be reliable. Stahl calls this the dual-write anti-pattern, e.g. a Web API call that both sends an email and updates a database; distributed transactions would fix it but "absolutely destroy scalability". He says wrapping the email send inside an open SQL transaction makes things worse, since the transaction can fail after the email has gone, and even sending the email first (it is the less reliable step, roughly "three nines") leaves an inconsistent state whenever the database write then fails, with no compensating action possible for an email.
- Split the steps from the start rather than patching failures afterwards. A side process that retries only the failed second step duplicates that step's code and runs only under rare conditions, so Stahl argues it atrophies; since that separate service is needed anyway, he would chain both steps as separate services from the beginning.
- Streaming, Outbox and change data capture all persist first, then act downstream. Stahl prefers streaming: push the message to a topic (Kafka, Azure Service Bus, Redis streams), return a GUID or token to the caller once it is on disk, then fan out to consumers that retry until eventually consistent, coordinated either by a saga orchestrator or by choreography where each service consumes, transforms and republishes. He discourages Outbox (two records written in one database transaction) because it uses the database as a queue, and praises Cosmos DB's change feed for CDC; he says SQL Server supports CDC in many SKUs but not the Azure cloud instance. Giard adds that dropping a message on a bus also frees the client quickly, which Stahl accepts as a speed and scalability benefit alongside safety.
- Making downstream actions idempotent lets a failed process simply retry. Stahl contrasts an email send, which produces a second copy if repeated, with a database upsert given the same data, which ends in the same state; if the first step is idempotent, the whole process can be rolled back and rerun safely. He ties this to maintainability, since every unknown state and separate failure path makes troubleshooting harder.
- Never add a new requirement onto an existing execution context. Bolting an email onto a working database-write API is the simplest thing that could work, but Stahl says the inconsistent states grow exponentially as steps reach five, six or seven; instead, subscribe to an event that already exists. He says this fits the single responsibility principle and lets each piece be deployed and scaled independently, e.g. when one is far more CPU-intensive.
GCastAzure Data Explorer Materialized Views [GCast 122]
- Materialized views trade slower inserts for faster aggregate queries. An ADX materialized view stores a query's already-summarized result, so the count, min, max and average are computed in advance rather than at query time; each insert takes a performance hit to redo the aggregation. Giard says it is meant for aggregations run repeatedly, especially slow ones over millions or hundreds of millions of rows, not his 10-row demo table.
- The view must be an aggregation query, or creation throws.
The syntax is
.create async materialized view with (...), then the view name, the source table and the query; Giard always creates them asynchronously. His demo summarizes a customers table's year-to-date sales by postal code (10 rows, six postal codes). - Backfill defaults to false, so existing rows are skipped.
With
backfill=falseonly data arriving after creation is summarized; Giard generally setsbackfill=trueto cover the whole table, warning that a large table with heavy calculations can take a long time to backfill. Other properties he points to are adocstringfor a longer description and a folder for organizing many views. - The view is queried like a table and altered or dropped by command.
It can be ordered, filtered and further summarized just like a table, and
appears in the database's object list.
.alter materialized viewtakes near-identical syntax to change the query (he drops the min column), and.drop materialized viewremoves it, after which querying it errors.
GCastAnalyzing Geographic Data with KQL [GCast 121]
geo_distance_2pointsgives the distance between consecutive positions. It takes the longitude and latitude of two points and returns meters. Giard sorts a vehicle-location table by vehicle ID and timestamp, pulls the previous row's coordinates withprev(), and gets distances such as 1,659 m and 260 m between readings; he notes this is straight-line distance, not the route actually travelled.geo_point_in_polygontests whether a point lies inside a shape. A polygon is a dynamic object built from an array of longitude/latitude pairs, with the first point repeated to close it; the function returns true or false. He drew a rectangle in Manhattan at geojson.io to get the coordinates, and two of one vehicle's readings (10:45 and 11:30) fell inside. He suggests uses such as detecting a restricted zone or leaving an area.- S2 cells divide the globe into rectangles at chosen precision levels.
Per the s2geometry.io material he shows, level 0 is six cells about 7,800 km
across and level 30 is about 7×10^18 cells of 8–9 mm; level 9 is roughly
18–20 km.
geo_point_to_s2celltakes longitude, latitude and level and returns a cell token, so asking whether something stayed in the same cell can be faster than measuring how far it moved. At level 9 one vehicle's readings all shared a cell; at level 30 every reading was unique. - Pre-filtering by S2 cells speeds point-in-polygon queries on large data.
geo_polygon_to_s2cellsreturns the minimum set of cells at a given level that covers a polygon; Giard filters rows to those whose level-12 cell is in that set before runninggeo_point_in_polygon. The result matched the unfiltered query, and he says it should run much faster on millions of points scattered worldwide, though his nine-row demo cannot show that. - Giard calls the geospatial function family a KQL strength. He points to related functions: distance from a point to a polygon, point-in-circle tests, and converting an S2 cell back to its central point. He says other query languages generally lack these.
Polis Pandit$Was My Facebook Marketing Article Ageist?
- This post includes paid content that is not available publicly. See the original source.
GCastAnalyzing Time Series Data with KQL [GCast 120]
- The prev function reads a value from the preceding row.
It works only after an
order by; the first row returns null. On drone telemetry logged about every 15 minutes, Giard extends a battery-life-change column as battery life minusprev(battery life), exposing how much charge dropped in each interval, which he says could be plotted against other factors. He says this is hard in SQL and most query languages; KQL also has anextfunction and a cumulative-sum function. - The bin function rolls rows up into fixed-size buckets.
Used inside
summarize ... by,bintakes a column and a size: a time span for time series, or a number such as every 5 or 10 for numeric data. Giard bins 15-minute readings by one hour to get one row per hour, as a way to avoid showing millions of rows. - arg_max keeps the whole last row of each bucket.
Rolling up forces a choice of which value represents the bucket; besides averages,
arg_maxandarg_minreturn all the values of the row with the highest or lowest value, here the last reading in each hour. Giard's hourly results were not exactly on the hour because some sample data was missing.
grantsandersonSolving Wordle using information theory
synopsis
The video builds a Wordle solver around entropy, the expected number of bits a guess will reveal. A version that also weights common words and trades information against the chance of winning now averages about 3.6 guesses. Under perfect play an average of 3 is out of reach, because two guesses cannot supply the roughly 11 bits needed.
Scoring a guess. Rules of thumb like "hit frequent letters" ignore letter position, so he wants a number. Hitting a rare W with "weary" can cut about 13,000 allowed words to 58, but informative patterns are by nature unlikely. Information is defined as log₂(1/p), the count of halvings. Averaging it over all 243 patterns gives the guess's entropy: 4.9 bits for "weary", 5.8 for "slate".
Version one. The first bot picks the highest-entropy guess at every step, with every word equally likely. Over the 2,315 real answers it averages 4.124. It plays the endgame poorly, chasing information even when two candidates remain.
Weighting common words. A sigmoid over Google Books frequency rankings gives each word a probability of being the answer. Entropy then also measures the uncertainty that remains: four plausible words among sixteen matches come to 2.11 bits, not 4.
Version two. For each candidate, the bot weighs the probability that it is the answer (58% for "words" in the example) against the uncertainty left if it is not. The remaining guesses come from a function fitted by regression to version-one games; one bit, for example, needed about 1.5 more guesses on average. The average falls to about 3.6, with occasional losses.
The ceiling. Using the true answer list and a two-step search, he reaches about 3.43, with "crane" as the best opener. Two guesses yield at most about 10 bits, which leaves about one bit of uncertainty.
- Information measures surprise: count how many times possibilities are halved. An observation with probability p carries log₂(1/p) bits, so a fact true of about half of five-letter words (containing an S) is 1 bit and one true of a quarter (a T) is 2. The log is used because information adds where probabilities multiply: a 2-bit guess followed by a 3-bit guess gives 5 bits.
- A guess is scored by its entropy, the expected information over patterns. Each of the 3⁵ = 243 colour patterns is weighted by its probability times its bits. "Weary" gets 4.9 bits, since all-grey turns up about 14% of the time; "slate" gets 5.8, with all-grey at about 6%. Entropy rewards a flat distribution and many outcomes; a uniform spread over all 243 patterns would give the 7.92-bit maximum.
- The same entropy measures remaining uncertainty once common words are weighted. He builds a prior from Google Books word frequencies, passed through a sigmoid on the sorted list so that common words all count as plausible rather than in proportion to frequency. Four likely words plus twelve one-in-a-thousand words give 2.11 bits, not 4. Likewise 526 matches at 8.02 bits behave like about 259 equally likely answers.
- Maximising information alone loses to minimising the expected score. The pure entropy bot averaged 4.124 guesses over all 2,315 real answers. Version 2 adds the chance of winning outright: "words", at 58% likely, is valued as a win on that guess, otherwise as a later finish. The extra guesses are estimated by a function fitted to version-1 games. It averages about 3.6, but occasionally needs more than six.
- Two guesses cannot supply enough information to average three. Using the true answer list and a two-step lookahead, his best average was about 3.43, and "crane" came out as the best opener. The list starts with a little over 11 bits of uncertainty, but brute force finds at most about 10 bits from two guesses. That leaves about one bit, so he argues an average of 3 is unreachable.
GCastKusto Query Language Basics [GCast 119]
- KQL chains operators with pipes, starting from the table name.
A table name alone returns every row and column; a
|feeds that output into the next operator, as in a bash script.take 5returns just a sample, which Giard uses to inspect a table's structure quickly, noting ADX limits how much data it will return.order byfollowed bytake 3gives a top-N query, here the top three customers by year-to-date sales. order bysorts descending by default, unlike SQL. Ascending needsascadded. Giard says he writesdescexplicitly anyway, because he expected SQL's ascending default when he started.projectlimits columns, and later operators only see projected ones.wherefilters rows, for example last order date greater than adatetimeof 2022-01-09. Because each step's output is the next step's input, awhereon a column left out of a precedingprojectfails with an unknown-column error.extendadds calculated columns without dropping the rest. A calculated column can be written insideproject(profit as year-to-date sales minus year-to-date expenses) or withextend. Giard saysextendis needed when one calculated column feeds another, and when you want every column plus the new one without listing them.summarizeaggregates, andexplaintranslates SQL into KQL.summarizewith the sum of year-to-date sales by postal code returns one row per postal code. Prefixing a SQL query withexplainreturns an equivalent KQL query, which Giard calls a great tool for SQL users learning KQL, though he says it is not one-to-one and suits simple queries.
Crosstalk SolutionsStarlink Premium?!? What's this all about??
- Starlink Premium costs five times standard service. Starlink's announcement lists a larger dish with more than double the antenna capacity, 150–500 Mbps down, 20–40 ms latency, 24/7 priority support and delivery from Q2 2022, at a $500 deposit, $2,500 dish and $500 a month. Standard service is a $100 deposit, $500 dish plus $50 shipping and $99 a month.
- The host judges Premium not worth the extra cost for homes. The extra is $400 a month. His own standard dish gets about 80–160 Mbps (162.9 Mbps that morning), fine for a home user. He sees little in priority support for a set-and-forget dish, having needed only about two email RMAs for a modem or power brick.
- Unlimited service locations is the real business benefit. Managing many dishes from one account suits firms moving between sites, the host argues, such as construction crews on six-to-eight-month projects or a Crosstalk client, a TV and film production company that shoots at remote locations for a few weeks at a time.
- The host suspects throttling and a cash grab. He asks whether standard users will be deprioritized to deliver Premium speeds. He notes buyers waiting since early 2021 may be overtaken, and that someone estimated the original dish cost $2,000–2,400 to make against a $500 price. Talk of SpaceX financial trouble he labels pure speculation.
- A static IP and bridge mode would make Premium attractive. Standard Starlink uses CGNAT, which the host says hampers VoIP and inbound access to a NAS or intranet. Businesses also want the modem to bridge through to their own firewall, and neither feature had been announced at recording.
GeoHussarHow Algorand avoided SEC scrutiny
- The skit's punchline: a Dutch auction keeps the SEC away. In a comedy sketch about launching a faster, cheaper, more scalable rival to Ethereum, the answer to releasing an ICO without regulators "coming to kill me or my coin" is a Dutch auction, because the market sets the price. The claim that the SEC could not go after it is delivered as a joke, with no supporting evidence.
Crosstalk SolutionsPATCHBOX - Simplify Cable Management
- Patchbox replaces loose patch cables with retractable cassettes. Its frame holds 24 cassettes of Cat6A UTP or STP copper or fiber, which extend to length and lock; the Patchbox 365 suits shallower network racks and the Patchbox Plus spans a 42U rack. The host configured 20 Cat6A and four OM4 multimode LC-LC cassettes. Patchbox, an Austrian company, sent him one unit plus a second for a giveaway.
- A fully populated unit costs several hundred dollars. A Patchbox 365 with Cat6A cassettes is $540 from Synergy Micro Solutions, the only US distributor the host found. Built piecemeal, cassettes are $17 each for Cat6A and $20.50 for fiber on top of the frame. He also liked Patchbox's Setup.exe arm, a temporary shelf for seating heavy servers.
- The short-depth model would not fit his shallow test rack. In the 450 mm-deep 15U rack the Patchbox 365 needed about 1.5 cm more depth and stuck out enough to hit the door, so he moved it to his deeper production rack. There its side-mounted cable management arms do not fit because the rack's sides are closed.
- The host calls it overkill for a small rack. It works best beside a 24-port patch panel. In his rack it gives exact-length runs to four link-aggregated NAS ports, an EdgeRouter 4 and Raspberry Pis, and serves as a quick temporary patch for adopting new UniFi gear.
- The price is justified only by admin time in large racks. Against the cost of 24 plain patch cables, the host argues the savings come from labelled cassettes, tracing a link with a tug, and always having the right cable length. The heavy packaging he received was an ordering mistake; Patchbox says units normally ship pre-assembled in one box.
GCastManaging Azure Data Explorer Tables with ADX Commands [GCast 118]
- Production tables should be scripted with commands, not wizards. That is Giard's case for this episode's Azure Data Explorer commands. He adds a database (gcastdb, all defaults) from the cluster's overview blade, then works in the fuller web UI at dataexplorer.azure.com, reached from the database's query blade via "Open in Web UI". Commands run with the Run button or Shift-Enter. He mentions ARM templates and the Azure CLI as other ways to automate, possibly for a later video.
- Creating a table means declaring an enforced schema.
.create tabletakes comma-separated name:type pairs, here string, datetime and decimal columns for customers. Giard says ADX resembles a NoSQL store in not enforcing relationships or primary keys, but each table's schema is enforced. - Inline ingestion takes comma-delimited rows in column order.
.ingest inline into tablefollowed by one row per line inserts data typed in directly; values must match the column types, using the built-indatetime()function for dates. Giard pastes 10 rows of well-known technologists as sample customers. - Re-running create table on an existing table silently changes nothing.
Adding a column to the
.create tablestatement and running it again appears to work, but the column is not added because the table already exists..create-merge table, with almost the same syntax, creates the table if absent or else adds the new columns. - Renaming a column does not break positional ingestion.
.rename columnchanged postal code to zip code, and a later inline ingest still loaded correctly because the rows do not name their columns.
Polis Pandit$Why Russia's Cyber Attack on Ukraine Forebodes What's to Come
- This post includes paid content that is not available publicly. See the original source.
Polis Pandit$Social Media Driver Licenses - Why We Need Them
- This post includes paid content that is not available publicly. See the original source.
Technology and FriendsJeff Blankenburg on AI Assistants in the Future [TECHNOLOGYANDFRIENDS 692]
- Future assistants will act on your behalf without being asked. Blankenburg, who joined the Amazon Alexa team just over five years ago, says the Star Trek computer analogy is too narrow and compares the future to a human assistant who brings the coffee before the 10 o'clock meeting unprompted. His example is a notification that a dental appointment is booked for Tuesday at 9 a.m., because the system knows your calendar, the dentist's, the six-month interval and your healthcare provider; he says all of this is possible today and the obstacle is context.
- Companies hoarding data in walled gardens will make this hard. Blankenburg says firms keep data and APIs to themselves because "data is king". A grocery chain told him it has the store-layout data to sort a shopping list into walking order but will not share it, because it wants shoppers to get lost and find products they would not otherwise buy.
- An assistant could manage finances, not just pay bills. Blankenburg imagines it moving money to savings, a 401k and IRAs first, deciding which bill can wait for the next paycheck, and reporting that it refinanced your mortgage and saved $80 a month; he leaves open whether a person or an AI drawing on thousands of others' outcomes decides better. Giard says he already automates most of this but sets the rules in advance and keeps changes, such as a bonus, as his own decision.
- Trust is foundational, and he argues users should own their data. At a healthcare startup before Amazon, Blankenburg built a medical record system around a single patient-owned record, shared selectively (a psychologist need not see unrelated conditions), and he proposes extending that model to all personal data. Giard raises privacy and an employer seeing a past cancer diagnosis; Blankenburg argues that, as with cell phones, people accept tracking once utility outweighs the concern, and concedes to Giard that it happens gradually, not instantly.
- Amazon builds around things customers will never ask for. Blankenburg cites Jeff Bezos's "absolute truths": no one asks for slower delivery or longer checkout, which he says led to fast delivery and Amazon Go stores. He says his team raced to buy a sandwich, snack and drink in under 10 seconds, and his attempts to fool the system by hiding products in his coat or moving them around the store failed; he has heard unconfirmed stories, "not internally", of the technology going into full grocery stores.
Crosstalk SolutionsUniFi Dream Machine SE - Unboxing and Setup
- The UDM SE is worth its premium only for PoE or faster-than-gigabit internet. At $499 against the UDM Pro's $379, the host says the extra $120 pays off if you want to power a few cameras, access points or VoIP phones without a separate PoE switch or injectors, or if your connection is 1 Gbps or more; his 600 Mbps plan tested at 712/42 Mbps.
- The SE fixes the UDM Pro's most-requested gap: PoE on the LAN ports. All eight front ports are gigabit RJ45; two are 802.3at PoE+ and six are 802.3af PoE. The WAN port moves from 1 Gbps to 2.5 Gbps, the two 10G SFP+ ports remain, and the power cord now locks in, which the host's older UDM Pro lacks.
- The built-in 128 GB SSD is too small for real Protect use. The host says even one or two 1080p cameras fill it quickly and recommends adding a drive of around 8 TB (he guesses that is the maximum), such as a WD Purple. With only the internal SSD, Protect offered no always-on recording, just "never" or "detections", in his test.
- Opened up, the SE carries a much larger power section and a separate PoE board. Side by side with the UDM Pro, he found a bigger power board (he assumes for PoE), a raised PoE management board, a Kingston M.2 SSD and a revised display board; the airflow layout is unchanged. He notes he is not a component expert.
- He disables automatic updates during setup and runs them manually. Setup works via the UniFi app or 192.168.1.1; the default is a daily 3 a.m. update check, which he turns off so that any breakage can be tied to an update he just ran. Updating the base UniFi OS on his unit also updated Network and Protect.
Technology and FriendsArthur Doler on Giving and Receiving Feedback [TECHNOLOGYANDFRIENDS 691]
- Receiving feedback is the neglected half of the skill. Doler says manager training concentrates on giving feedback and "shoving" it at people, so his eight-hour CodeMash workshop centres on how brains receive it, which he argues also makes people better at giving it. He works at Aviture, a software consulting firm in Omaha, Nebraska, coming up on eight years in March.
- Coaching feedback drowns out appreciation, so the feedback sandwich backfires. Doler separates appreciation (which must be sincere, specific, and in a form the person values; calling a stage-shy person up at an all-hands is a punishment), coaching, and evaluation, and says each is "louder" than the one before. Wrapping coaching in praise means the praise is not heard, and employees learn to brace for a hit whenever they are appreciated.
- Deliver the evaluation first and discuss it days later. Doler says a score is the loudest feedback, so coaching given in the same meeting goes unheard while the employee chews on the rating. He suggests emailing the evaluation and meeting about two days later, once the person has had the argument in their own head.
- Feedback labels like "be more assertive" must be unpacked into behaviours. Doler says words such as assertive are categories each person builds differently, so someone can act on their own idea of assertiveness and go the wrong way. Ask what the giver means and drill down to the data behind the label, such as a salesperson handing over a card, mentioning the 30-day guarantee and asking for the sale, rather than cornering the customer.
- Truth, relationship and identity triggers block feedback from landing. Doler says people discount feedback by finding fault with it or the giver (a manager who does not know React, a jerk's tone), fixate on what it says about the relationship, or let it flood a self-image built on being a good developer. He recommends a sturdier self-story ("a developer who tries hard" rather than "smart"), and in the workshop he deliberately manipulates the Lego-building instructions so partners' feedback provokes these triggers in a safe setting.
Technology and FriendsChris DeMars on Accessibility [TECHNOLOGYANDFRIENDS 690]
- Web accessibility covers everybody, not only blind or deaf users. DeMars lists partial vision loss and colour blindness, partial deafness, cognitive disabilities such as dyslexia and autism, mobility conditions such as cerebral palsy, arthritis and MS, temporary injuries, and hidden ones such as his own diagnosed health anxiety. He argues anyone with a hand in a web or software application, back-end developers and VPs included, should care; his own motivation came from a Marcy Sutton talk and from his mother, who has multiple disabilities.
- Colour contrast and alt text are the low-hanging fruit. DeMars says light grey on white fails an audit, and a larger font can make it pass while the contrast is still poor. Alt text should describe the image specifically (which car, which dog) without running to a paragraph; a decorative image needs no text, but the alt attribute must still be present, as an empty string, or automated audits flag it.
- Never remove the focus ring without restyling it back in. DeMars says designers and marketing often ask to remove the browser's default ring as ugly, which breaks the experience for keyboard-only users, such as someone with an injured hand, and for screen-reader users who are told which element has focus. Restyle it to match the brand rather than dropping it.
- Captions serve hearing loss; plain language and font choice serve cognition. DeMars says audio and video without captions or transcripts are unusable to deaf users, and auto-generated captions are better than nothing. For cognitive disabilities he advises avoiding long technical jargon, and says dyslexic users read slanted or slightly wavy fonts more easily, which makes Comic Sans a good fit.
- Automated tools catch only part of the errors, so test manually too. DeMars uses axe from Deque, available in CI/CD as axe-core and as a free browser extension, which he puts at catching 20% to 50% of automated accessibility errors; the rest needs screen readers, keyboard-only navigation and contrast simulators. Lighthouse runs axe-core underneath and gives a score out of 100, and he warns that its results can differ from the extension's where enterprises pin browsers several versions behind.
Network Chuckcreate the ULTIMATE hacking lab in 5min!! (Docker Containers STREAMING Kali Linux to your browser)
synopsis
By the end, Chuck has a working Kasm Workspaces server that launches disposable, isolated Kali Linux, Ubuntu, or browser sessions in seconds, lets him test hacking tools inside a container instead of his own machine, and deletes the evidence when he's done — free, on the community edition.
What Kasm does. Kasm streams Docker containers to any browser using its open-source KasmVNC engine. Chuck's core use cases are a fresh Kali Linux instance for hacking tests and opening risky links inside an isolated container tied to the server's IP, then trashing the session.
Setting up the server. Minimum specs: 2 vCPUs, 4 GB RAM, 50 GB storage, cloud or on-prem. Chuck provisions a $20/month Linode 4GB plan on Ubuntu 20.04 — 21 failed him — while Cameron mirrors it on Proxmox; Cameron creates a swap partition, downloads and unzips the installer, then runs it with sudo bash for admin credentials. Kasm Workspaces sponsored the video.
Isolated browsing. Kasm's Chrome extension adds a right-click "open in Kasm" option that launches a chosen default image — Chuck picks Brave — for any link, keeping cookies, history, and IP address off his machine; deleting the session leaves no trace.
Enabling Kali and going root. Kali ships as a disabled image; Chuck enables it in the admin panel and adds {"user": "root"} to its Docker run config, then runs su - inside to get root.
Users, filtering, and limits. Chuck adds accounts for his daughters and a web-filter policy denying all sites by default except a whitelisted domain, with per-user activity visible in the admin dashboard. The free community edition matches nearly all Enterprise features but caps five sessions and withholds branding and web categorization. Cameron notes businesses use Kasm to replace VDI tools like Citrix, with no endpoint installs, nightly-updated images, and DevOps APIs.
- Kasm Workspaces streams isolated, ephemeral Docker containers straight to a browser. Chuck demos launching Chrome, Kali Linux, or Ubuntu instantly, then deleting the session entirely so a risky link or malware never touches his own machine, IP address, cookies, or history.
- Kasm's server requirements are modest enough for a budget VPS. Chuck sets his up on a $20/month Linode 4GB plan (2 vCPUs, 4 GB RAM, 50 GB storage) running Ubuntu 20.04 — he warns 21 didn't work — while Cameron mirrors the same specs on a Proxmox VM at home; Kasm Workspaces sponsored the video.
- Kali Linux ships disabled, and root access needs a manual JSON tweak. In the admin panel's image editor, Chuck checks the disabled Kali image on and adds
{"user": "root"}to its Docker run config, then runssu -once inside to get full root. - The free community edition matches almost every Enterprise feature. Chuck notes it's capped at five simultaneous sessions and excludes branding and web categorization; he demonstrates adding user profiles for his daughters and a web-filter policy that denies all sites by default except a whitelisted domain, with per-user browsing tracked in the admin dashboard.
Polis Pandit$Disenfranchising Democratic America
- This post includes paid content that is not available publicly. See the original source.
Technology and FriendsGreg Huber on Maker Space [TECHNOLOGYANDFRIENDS 689]
- The CodeMash Makerspace began as an experiment and will continue. It started at the 2020 conference. Huber, an IT director at agricultural supply-chain company The Andersons and a CodeMash volunteer for about 10 years, says the space returned for its second year after good feedback. He argues that, as IoT and operational technology converge with software, companies want people who mix electronics with software, which makes it a skill worth learning even if less mainstream than the latest JavaScript library.
- Soldering mistakes become lessons in desoldering. Jamie Hampton runs a guided or self-paced learn-to-solder session on a beginner kit that blinks LEDs; Huber says attendees who put transistors in backwards or resistors in the wrong place are then taught to desolder or use hot-air rework. His daughter, on staff for the first time, built the beginner kit one day and the advanced UFO board, with its surface-mount decade counter and 555 timer, the next.
- A conference demo can start a child on a years-long path. Huber tells of Andrew Fuller, who at about nine saw Bill Steele printing chess sets on a 3D printer at CodeMash, later got a printer, learned CAD, and at 19 exhibited a Portal 2-inspired piece and gave a kids' session on 3D printing.
- A tightly constrained hobby-built printer prints far faster. Huber says his Voron 0.1 prints roughly two to three times faster than his other printers at high quality, against about three and a half hours for a controller case on a stock machine. He describes the workflow as designing in CAD, slicing layer by layer, and sending G-code that the printer processes in real time.
GeoHussarJanuary 11, 2022
- The clip makes no argument and offers no analysis. The 14-second transcript is a few lines of shouted dialogue ("Grab my hand", "Now we wait", "Keep moving!") with no stated context, claims, figures or named parties.
GeoHussarJanuary 11, 2022
- This is a comedy sketch, not commentary. In the 20-second clip, someone confronted during a break-in says they were "just looking at crypto" and tries to keep the other person there with an offer of beer and chocolate. It makes no claim and gives no figures.
Scott HanselmanMy Top Tips for using Windows Terminal like a Pro
- Modifier-clicking Settings opens the raw JSON files. Hanselman shows that Shift-clicking Settings opens settings.json, the text version of the graphical settings, while Alt-clicking opens defaults.json; he notes the editor flags invalid entries, so "don't be afraid" of breaking the file.
- Tabs can be renamed and coloured to mark environments. Right-clicking a tab renames or recolours it (his example labels one "production" as a warning), and the same tab colour can be set permanently per profile in the JSON, where VS Code supplies a colour picker.
- Mouse and drag-and-drop shortcuts are commonly overlooked. Ctrl+scroll zooms the font for the session and Ctrl+Shift+scroll changes background opacity; a "use acrylic in tab row" setting, which he describes as not quite official yet, makes the tab bar transparent too. URLs in output are Ctrl+clickable, and dropping a folder onto the tab bar opens a tab in that folder.
- Experimental HLSL pixel shaders restyle the whole terminal. Beyond the built-in and custom colour schemes and a scan-line retro effect he finds "a little bit in my face", an experimental pixel-shader path setting with no UI yet loads a shader per profile. Editing one (turning tint off, a black-and-white variant) crashed the terminal once, which he blames on his own shader rather than the terminal.
- Rebind new tab and close pane to browser keys. He recommends Ctrl+T and Ctrl+W in place of the defaults Ctrl+Shift+T and Ctrl+Shift+W, so tabs and panes open and close one-handed; he also binds split-pane keys (Ctrl+Shift+minus for horizontal, pipe for vertical), though he is unsure of the default split shortcut on camera.
Scott HanselmanExploring COVID Vaccine response in your Lab with Dr. W. Shawn Carbonell, MD, PhD - Hanselminutes
synopsis
Carbonell, an MD PhD who runs Brazen Bio and the nonprofit Cure Glioblastoma, ends up arguing that his own lab data vindicate the vaccines: a booster raised his antibodies about fourfold, the science was never rushed, and an annual combined flu and COVID shot is the likely destination, though not yet.
Teaching science on TikTok. TikTok recruited him into its educational accelerator after years of Instagram micro-blogging. His most viral, July's four-month data, reached 16.6 million views and over 20,000 mostly negative comments; he stepped back for a month, and stays for viewers who say he is why they got vaccinated.
The assay. Nervous about mRNA himself, he has tested his serum since his first dose on Valentine's Day 2021, noting self-experimentation is normally barred and he can do it as CEO. His sandwich ELISA layers recombinant spike protein, diluted serum and a marked detection antibody in 96-well plates; a standard curve gives the reference, and acid stops the reaction, turning blue wells yellow for the plate reader. Hanselman restates it as a gradient with a fixed y-axis and a timed stop.
What was rushed. Regulation and logistics, he says, not science: mRNA has decades behind it, first as a cancer vaccine, so design took about a week after sequencing. His own brain-cancer drug, from 10 years' work, is still in phase one.
Waning and the booster. Levels fell below 50 by five months, which he calls the body not wasting resources. The booster gave a roughly 400% rise, four times rather than 400 times, more than he would have bet; he credits memory B cells and says both those and circulating antibodies matter. Against a reported 95% efficacy, more has diminishing returns but could decide hospitalisation.
Outlook and his own work. He expects another booster in 2022, possibly modified, depending on Omicron, before any yearly combined shot. His glioblastoma drug has enrolled several patients at Moffitt Cancer Center, and Brazen Bio gives STEM creators equity.
- He measures his own vaccine antibodies with a sandwich ELISA. Carbonell, an MD PhD who co-founded Brazen Bio and the nonprofit Cure Glioblastoma, says he began testing his serum because he was himself nervous about mRNA vaccines; he coats 96-well plates with recombinant spike protein, adds diluted serum and a marked detection antibody, reads absorbance against a standard curve, and stops the reaction with acid, which turns blue wells yellow. He caveats that self-experimentation is normally not allowed and he can do it as CEO.
- Only regulation and logistics were rushed, not the science. He says mRNA technology has existed for decades, first tested as a cancer vaccine, so a design followed within about a week of sequencing; everything after was manufacturing, logistics and regulatory. By contrast his own brain-cancer drug, from about 10 years of work, is still in phase one.
- The booster raised his antibodies about fourfold, beyond his expectation. He measured roughly a 400% increase over post-second-dose levels, stressing that this is four times, not 400 times, after levels had waned below 50 by five months. He attributes the jump to memory B cells, calls waning normal resource-saving, and says gains have diminishing returns against a reported 95% efficacy at six months but could still decide hospitalisation.
- He expects an eventual yearly combined flu and COVID shot. Carbonell says many groups are working on one but it is not yet feasible mid-pandemic; his forecast is another booster in 2022, possibly modified, depending on how the Omicron variant goes.
- Viral reach brought mostly hostile comments but real persuasion. His most viral TikTok, July's four-month data, drew 16.6 million views and over 20,000 comments he believes were mostly negative, and he stepped back for a month. He stayed for the dozens of "you're the reason I got vaccinated" comments; Brazen Bio now signs STEM creators for equity, and his glioblastoma drug has enrolled several patients in a phase one trial at Moffitt Cancer Center.
Polis Pandit$Elizabeth Holmes Was Different From Other Founders
- This post includes paid content that is not available publicly. See the original source.
Scott HanselmanMy WebAPI broke! Using Azure Functions, C#, and Blob Storage w/ JSON in a new format for my Web App
synopsis
Hanselman restores azurefriday.com after its upstream API vanished by putting a scheduled Azure Function between Microsoft Docs and the site: it reshapes Docs' paged data into a single JSON blob in Azure Storage, so the site itself did not change. His point is that the work was mostly trade-offs, not code.
What broke. The site cached one JSON dump of every show from Channel 9's API. When Azure Friday moved to Microsoft Docs, which also cut the catalogue from about 700 shows to roughly 350, the site showed "error loading".
The new API. Docs pages at most 30 results and returns only title and URL; thumbnails and video links need a details call. Batching 30 IDs a call still means about 25 calls instead of one, which he does not want his website or its visitors' browsers making.
The design. A timer-triggered function, described as a cron job in the cloud, makes those calls and writes the JSON he wants to a public, nearly free blob. He argues this decouples data shape from the site, could feed RSS or an app later, and need only be as fresh as a twice-weekly show.
The code and deployment. A C# loop pages until an empty page, collects episode records, then fills thumbnails and YouTube URLs from batched details calls. One dump method serves a console app and the function, which runs daily at 3 AM with run-on-startup on (recommended off), takes its connection string from configuration, and uploads as application/json, not octet-stream. He tests locally with Functions Core Tools, publishes from Visual Studio, and plans GitHub-driven deployment and a fix for his podcast site.
- azurefriday.com broke when its upstream API moved. The site, built with a friend, cached a single JSON dump of shows from Channel 9's API; when Azure Friday moved to Microsoft Docs it showed "error loading". Docs also pruned the catalogue from about 700 shows to roughly 350.
- The replacement API turned one chunky call into many chatty ones. Docs pages results at a maximum of 30 and returns only title and URL, so thumbnails and video links need a separate details call; batching 30 IDs per call still means about 25 calls where one used to do, which Hanselman says is not his website's job.
- A scheduled function reshapes the data into blob storage. His fix is a timer-triggered Azure Function, described as a cron job in the cloud, that calls Docs, projects the result into the JSON shape he wants and writes it to a public Azure Storage blob the site reads. He argues this decouples data shape from the site, costs pennies, could later feed RSS or an app, and only needs to be as fresh as a show released a couple of times a week.
- Shared C# code runs as both console app and function. The code loops pages until one comes back empty, fills a dictionary of episode records, then fills in thumbnails and YouTube URLs from batched details calls; the same dump method backs a console app (about 3,500 lines of output) and the function. The function runs daily at 3 AM with run-on-startup on, which he notes is recommended off, takes its connection string from configuration, and uploads with an application/json content type rather than octet-stream.
- Most of the work was trade-offs, not code. He lists alternatives (an ASP.NET background worker, a Logic App, a batch file on his own machine) and says the thinking was about availability, error handling and data shape. He published straight from Visual Studio for the demo and plans continuous deployment from GitHub and a similar fix for his podcast site next.
Crosstalk SolutionsG4 Doorbell Pro - Finally Announced!
- Ubiquiti's official announcement confirms the leaked G4 Doorbell Pro's dual cameras. Per the announcement video the host reacts to, it pairs a 5 MP main camera with a downward-facing package camera; he reads it as the main camera doing person and vehicle detection while the package camera does motion only, and judges its wide view big enough for most porches.
- The reader is fingerprint plus NFC, so it should pair with UniFi Access. Ubiquiti says you can unlock the door by finger or card swipe but does not say how it ties to a lock; the host suspects Ubiquiti smart locks are coming soon, while admitting he has no inside knowledge, and wonders whether it works directly with Access-controlled door strikes.
- Power options now include PoE via an adapter, answering earlier complaints. It runs from existing doorbell wiring, USB-C, or a USB-C-to-Ethernet PoE adapter; the host defends the original's lack of PoE because few homes have Ethernet at the door, and notes the adapter shown is bulky to leave inside the wall.
- Other announced features: custom screen messages, chime support, flashlight and weatherproofing. The 1.3-inch colour screen shows custom messages (the promo also shows weather), it works with mechanical and digital chimes, has IR night vision and a motion-triggered white LED, and two-way audio.
- At $299 the host calls it reasonably priced, and it sold out fast. It went on sale in Ubiquiti's Early Access store around 7:30 a.m. Hawaii time and sold out in under 20 minutes; he notes EA pricing is subject to change and says he would have bought one to replace his G4 Doorbell.
Crosstalk SolutionsUniFi Protect AI 360 Camera - Unboxing, Setup, and Testing
- The AI 360 is a top-down ceiling camera the host loves for wide spaces. It is UniFi Protect's first 360 camera: 5 MP, a square 1920x1920 fisheye image at 30 fps, 802.3af PoE, IPX4 and IK08 rated, $299 from Ubiquiti. He sees it suiting retail stores, cash registers and mechanics' shops.
- De-warping works on live view and on recorded playback. Using arrow keys or the mouse he could pan around footage already recorded and follow a subject, or look somewhere other than the main action; a chosen view can be saved into a live view.
- Software limits at launch: one shared angle, and no de-warp on Viewport. Whatever direction you set in one live view carries over to all live views, and the UniFi Viewport shows only the raw fisheye circle; he hopes firmware fixes both.
- Smart detection only appeared after reopening the camera's settings. The host also gives his fix for a UNVR that stopped person and vehicle detection: add a new smart detection zone covering the whole frame, set sensitivity to about 80 with both types selected, then delete the default zone.
- The vandal-resistant dome cover made no visible difference to the picture. The box includes a second, IK08 dome cover and a rubber wrench for swapping it; side-by-side screenshots looked almost identical. Adoption was automatic, but the firmware update took five to six minutes, longer than any camera he has seen.
Polis Pandit$Reminder: What Republicans Said About January 6, 2021
- This post includes paid content that is not available publicly. See the original source.
Crosstalk SolutionsInsty Connect Mobile Internet Router - The Best RV WiFi Solution?
- The host rates Insty Connect well for RVers who need fine control. He likes that it gives nomadic users tools to tune their signal, built by an RV owner unhappy with existing products; it is a small company with 3D-printed antennas. The base 4G package (router, LTE modem, 15 ft USB cable, omnidirectional Angel Wings antenna) is $549; a 5G version was expected in Q1 2022.
- The directional Binoculars antenna roughly doubled his roadside speeds. Off Interstate 5 in Oregon, under a quarter mile from a tower, his iPhone 13 on LTE got 4.7/4.7 Mbps; Angel Wings gave 19.8/8.8 Mbps, and Binoculars (about $250, LPDA antennas) pointed at the tower gave almost double. He expects a bigger gain farther from towers.
- Tower and band locking lets you hold the best connection found. The wizard lists nearby towers and bands with RSRP/RSRQ colour-coded; you pick an all-green option and lock it so the modem does not drift. Towers can be cross-referenced on CellMapper to aim the directional antenna.
- In the field it failed to see the SIM until factory reset. It worked perfectly in his office (about 55/17.5 Mbps on Angel Wings indoors), but on the road it lost the SIM and internet; he suspects the cold, possibly the SIM, and a reset and rerun of the setup wizard fixed it.
- Crosstalk sells the SIMs he recommends, AT&T-backed and unthrottled. The host advises a major-carrier SIM and pitches Crosstalk's own unlimited, unthrottled AT&T-based SIMs, the one he used in testing (it registered as FirstNet LTE). Setup is phone-friendly via an open "Insty Connect Setup" SSID that the wizard removes at the end; run a software update first.
Scott HanselmanBad Date Comparisons in C# - if (DateTime.Now.ToString() == "01/01/2022 00:00:00")
- The brand's New Year snippet could never have run true. The code, tweeted by an unnamed popular brand, compared
DateTime.Now.ToString()to "01/01/2022 00:00:00"; running it on his en-US machine (recorded 1/3/2022 on the US west coast) shows the culture's short-date format omits leading zeros, so the strings could not match even at midnight. - Culture and time zone are hidden inputs to date code. ToString draws its format from Windows region settings, and
Nowuses the ambient time zone; switching toUtcNowalready returned the next day. He advises doing date comparisons and arithmetic in UTC, warning that code that works locally fails on a server set to UTC. - Compare dates as dates, never as strings or ints. He suggests constructing a
new DateTime(year, month, day)or using ParseExact, since ordinary parsing has the same implicit inputs (month-day versus day-month). Dates should be stored and passed as dates, written as ISO 8601 if they must be strings, and converted to the user's format only at display. - The output line shows signs of being pasted from Word. He points out an escaped quote the string did not need, possibly a JavaScript habit, and a single Unicode ellipsis character in place of three dots, which he and Safia Abdalla both noticed; it rendered oddly when run.
Polis Pandit$To Rein in Big Tech, First Check Congress
- This post includes paid content that is not available publicly. See the original source.
Crosstalk SolutionsUbiquiti's 6U Toolless Mini Rack - Unboxing, Setup, and Review
- The rack genuinely needs no tools to assemble or load. The Ubiquiti U-Rack-6U-TL lists at $249 and ships with a blank 1U 24-port patch panel, locking casters and handles; side rails push into slots and carry captive screws, with engraved alignment lines, that also take Phillips or flathead drivers for snugging.
- It fits only newer UniFi hardware, not mixed racks. The captive screws match newer UniFi rack-ear patterns; older UniFi gear with built-in ears will not mount, and the host's QNAP NAS sat loose because its length and ear pattern don't match. Only non-UniFi gear with identical width and screw pattern would fit.
- Short-depth UniFi gear can also mount at the rear. The back rails carry captive screws too, so equipment designed to go in either the front or rear of a rack can be secured from behind.
- Desktop use works but the feet may scratch. With the casters removed, hard, non-rubberized plastic nubs remain underneath and can mark wood surfaces; the host knows of no wall-mount option, though a shelf would do.
- The host sees it suiting all-UniFi networks and customer staging. He suggests it for matching UniFi aesthetics and for staging small-business or prosumer deployments, not for racks mixing in a NAS, EdgeRouter or pfSense box. The patch panel takes standard keystone jacks; he wishes Ubiquiti sold silver keystones or blanks, a larger (e.g. 15U) version, and advises removing casters once wall cabling is punched down.
Polis Pandit$The Biden Antitrust Shift Against Big Tech
- This post includes paid content that is not available publicly. See the original source.
GeoHussar#Minorities benefit the most from #crypto #poc #equality #defi
- The banking system exploits minorities instead of serving them. He argues that the banking system, whatever one's politics, does not welcome people of color. In his view it profits from exploiting them and keeps racial groups divided so that banks can bribe politicians to pass laws in their favor.
- Tuition was brought in to keep minorities out of college. He asserts that college in America was free until the 1960s. He presents tuition, which he says has risen "exponentially" every year since, as a response to minorities starting to attend university. This is his own claim, and he cites no source.
- Governments cannot shut people of color out of crypto. He reports that people of color are increasingly moving into cryptocurrency and DeFi as an avenue to financial independence. Unlike education and traditional assets, he argues, crypto is something the government cannot block them from, which makes it a disruption of the status quo that governments and banks do not want.
Crosstalk Solutions13 - Updating the UDM-Pro - UDM-Pro Complete Setup
- Update UniFi consoles now because of Log4j. Recording in mid-December 2021, the host urges updating any UDM Pro, Cloud Key or hosted controller, and specifically getting UniFi Network to 6.5.55, which he says addresses two separate Log4j vulnerabilities.
- Back up first, then update UniFi OS before the apps. He downloads a configuration backup from Advanced settings, updates UniFi OS from 1.10.0 to 1.10.4 (the console reboots, which he watches with a persistent
ping -tto 192.168.1.1), then updates Network, Protect (to 1.20.1, under two minutes), and even uninstalled Access and Talk so they're current when installed. - Stay on the official release channel in production. The release-candidate channel carries builds still being tested, and the beta channel is bleeding-edge software that has not been properly QA'd and may cause problems.
- The host turns auto-update off so breakage is traceable. If an unattended update breaks something, he might not realize the update was the cause and would troubleshoot the wrong thing; he prefers manual updates followed by checking that each app still works.
- New app versions can bring device firmware updates. After the Network update his USW Pro 24 PoE showed a firmware update, which he applied; the UniFi OS update also added UID, a beta identity-as-a-service access-control app he has not yet explored.