Articles
Github: Brent Litner
brentlintner starred visa/visa-vulnerability-agentic-harness
Visa Vulnerability Agentic Harness
Python 1.7k Updated Jul 3
Github: Brent Litner
brentlintner starred Crosstalk-Solutions/project-nomad
Project N.O.M.A.D, is a self-contained, offline survival computer packed with critical tools, knowledge, and AI to keep you informed and empowered—…
TypeScript 34.9k Updated Jul 26
Kitchener Panthers
Panthers get roughed up by league-leading Welland
KITCHENER - It was a memorable Sunday for all the wrong reasons for the Kitchener Panthers.
The Panthers gave up 11 home runs to the league-leading Welland Jackfish in a 30-8 loss at Jack Couch Park.
The game got out of hand early, as Welland had 23 of its 30 runs on the board after the fourth inning, lighting up Panthers pitching and batting around the order in three straight innings.
Starter Owen MacNeil was yanked after recording just five outs, giving up 11 runs (eight earned) on six hits. He walked four in the loss.
Teodoro Ortega gave up two runs on six hits, but struck out eight in five innings of work for the win.
The bright spots for Kitchener came late, scoring six runs in the eighth inning, including home runs from Raffi Gross, Jackson Cooke, Trent Lawson and Petey Kiefer.
Kiefer was a single shy of hitting for the cycle.
The 38 runs scored in the game was a CBL season high, breaking the record of 37 scored in Kitchener's 23-14 win over Brantford on June 18.
Logan Grant had three home runs for the visitors. Ethan Mann, James Smibert and Justin Gideon all had two home run games.
Kitchener drops to 10-20 on the season. Welland improves to 22-10.
With the transaction deadline looming Monday, Kitchener sits seven games out of a playoff spot.
The Panthers are back at it Tuesday at home against Hamilton. First pitch is scheduled for 7:05 p.m.
GET YOUR TICKETS NOW and #PackTheJack!
BOXSCOREGithub: Brent Litner
brentlintner starred vercel-labs/scriptc
TypeScript-to-Native Compiler
TypeScript 866 Updated Jul 27
Github: Brent Litner
brentlintner starred jazzzooo/buz
A fork of Bun based on modern Zig
Zig 155 Updated Jul 27
The Backing Bookworm
Best Offer Wins
The housing market can be crazy competitive and anxiety-inducing. Best Offer Wins asks what lengths would you go to to get your dream home?
The Gist: 30-something Margot Miyake finds her dream home in a perfect neighbourhood but takes things waaaay too far, spiraling into obsession and nefarious ways to get the house and life she's always wanted.
This was outlandish, unhinged and entertaining(ish). Main character Margot has not one redeeming bone in her body, and I was in it to see her crash and burn. She's not a likeable character and she's not supposed to be, but readers may enjoy seeing the dark and horrible things she'll do to ensure she gets her perfect house. That said, her entire personality is obsession, and I would have liked more depth to her character. The wee dog Fritter was my favourite character. 'Nuff said.
Personally, I wouldn't call this a suspense read, more of a 'watching just how far an unhinged character can sink' kind of read. The unhinged feeling eeks into uncomfortable as Margot sinks deeper and deeper into obsession and manipulation, forcing readers to suspend disbelief (and go along with a story focusing on privileged people whining about not getting their $1 million+ dream home).
This book gets rave reviews from many other readers, but this was just an okay read for me.
My Rating: 3 starsAuthor: Marisa KashinoGenre: Suspense, DebutType and Source: hardcover from public libraryPublisher: Celadon BooksFirst Published: Nov 25, 2025Read: July 16-29, 2026
Book Description from GoodReads: An insanely competitive housing market. A desperate buyer on the edge. In Marisa Kashino’s darkly humorous debut novel, Best Offer Wins, the white picket fence becomes the ultimate symbol of success—and obsession. How far would you go for the house of your dreams?
Eighteen months and 11 lost bidding wars into house-hunting in the overheated Washington, DC suburbs, 37-year-old publicist Margo Miyake gets a tip about the perfect house, in the perfect neighborhood, slated to come up for sale in one month. Desperate to escape the cramped apartment she shares with her husband Ian — and in turn, get their marriage, plan to have a baby, and whole life back on track — Margo becomes obsessed with buying the house before it’s publicly listed and the masses descend (with unbeatable, all-cash offers in hand).
A little stalking? Harmless. A bit of trespassing? Necessary. As Margo infiltrates the homeowners’ lives, her tactics grow increasingly unhinged—but just when she thinks she’s won them over, she hits a snag in her plan. Undeterred, Margo will prove again and again that there’s no boundary she won’t cross to seize the dream life she’s been chasing. The most unsettling part? You’ll root for her, even as you gasp in disbelief.
Dark, biting, and laugh-out-loud funny, Best Offer Wins is a propulsive debut and a razor-sharp exploration of class, ambition, and the modern housing crisis.
♦
Code Like a Girl
All about my very first technical talk
One of the greatest resources for me when starting out was attending events or conferences hosted by senior engineers.
I used to and still watch many such conferences available on YouTube or attend them in person, as they helped me gain deeper insights into how things actually work. Be it Cloud, DevOps, Golang, or even Linux internals, these tech talks have always fascinated me.
While watching such videos, I would always think that someday I would also be giving a talk in front of many people and sharing my knowledge with them.
And honestly, that day wasn’t very far away. At the start of 2026 itself, in March, I got the opportunity to give a technical talk at Opstree Solutions.
The session was titled “Building CI/CD Pipelines for Infrastructure: From Automation to Testing.”
It focused on my ideas and perspectives based on the book Infrastructure as Code Dynamic Systems for the Cloud Age written by Kief Morris.
That book introduced some really interesting ways of looking at Infrastructure as Code. The point that intrigued me the most was how to test and implement a CI/CD pipeline for IaC, especially for provisioning code.
Although there were times while preparing for this talk when I couldn’t fully understand a few concepts, I now think I should have consulted a senior. But anyway, I searched online, and Reddit turned out to be a huge help. I also couldn’t complete the demo, which, in hindsight, should have been my highest priority.
Anyway, here are some lessons I learned from my experience and from watching the other speakers at several events:
Always introduce yourselfSome people really struggle with this, and honestly, so do I. I get confused about what to say about myself. Well, that mainly depends on how well you know yourself. But when you’re starting out, you can simply say something like:
“Hey everyone, I’m Rajeshwari. I’m a freelance Cloud Engineer, and I love brewing coffee.” (Or not, if you actually don’t. 😄).
And that’s it. You don’t have to make it fancy.
Keep the audience engagedThis is probably the most important aspect of giving a talk. If you just keep talking and describing your slides, it starts feeling like a boring office meeting.
Instead, at regular intervals, ask the audience if they have any questions. Or even better, while introducing a topic, ask if someone already knows the answer before explaining it yourself. It naturally makes people more involved.
I wasn’t able to keep my audience as engaged as I wanted, but honestly, Sandeep sir made the session much more interactive by asking me thoughtful questions throughout the talk. It also helped me deepen my own understanding of the topic.
Always prepare the demo!!One drawback of my talk was that I couldn’t prepare the demo completely. As I mentioned earlier, there were a few concepts that I couldn’t fully grasp while preparing, which resulted in an incomplete demo, and I couldn’t present the code.
Thankfully, I had created a pipeline flow diagram as a backup and presented that instead.
Do not overprepareActually, I’d say prepare at all! I didn’t prepare the night before the talk or even 15 minutes before it. You already know the topic, and you’ve created the presentation, so why memorize everything? You can prepare a few key points that you want to cover, but don’t lock yourself into a script.
Just keep the conversation flowing while you’re on stage. I stayed calm and didn’t think much about the session beforehand. I was simply excited to attend the event itself. Trust me, it relieves a lot of pressure.
Write small pointers, not big sentencesThe point of a talk isn’t to show off your PowerPoint; it’s to show your understanding of the topic. For me, the best feeling is talking naturally, with ideas coming to my mind at that very moment instead of reading what’s written on the slides and explaining it again.
Even I couldn’t do this perfectly. Some of my slides were filled with too much text, and that definitely shouldn’t have happened.
So these were some of the lessons and experiences from that day.
The opportunity to give tech talks is one of the best things this field has given me. ❤️
Looking forward to many more such experiences!
And all the best for your first session!! 🙌🌟
Originally published at www.linkedin.com.
♦All about my very first technical talk was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Code Like a Girl
Trust Is a Toggle, Not a Feature: Why AI Should be Shipped With an Off Switch
(Not a Medium paid member…no worries, read for free here)
♦Image owned by Author (Created using Google Gemini)You know the AI feature is done “right” when someone asks the obvious question and the room goes quiet.
What happens if we turn it off? (Not many have really planned for that)
Concepts like “backward compatibility” or “two-way door decision” have kinda lost their charm in the so-called “AI-first race”.
And even if teams treat “add AI” as a two-way door (reversible at any time) and build it that way, it's usually only in name.
In practice:
Once old system’s gone, it’s a one-way door wearing a two-way door’s reputation.The Assumption Baked Into Most AI Features
Behind every AI feature you can see, there used to be a boring system that just worked. Rules. If-this-then-that. Not exciting, but solid.
But as AI entered the picture, instead of standing alongside the old system, it stood atop it and pushed it out of the way.
And the boring (non-AI) version didn’t get kept. It got deleted.
So now the model is the system. And the day it hallucinates, or the API times out, or someone’s config drifts, there’s nothing behind it to catch the fall. Just the user, staring at whatever the model handed them.
What Building It the Other Way Looks LikeThe fix isn’t complicated. It’s just unfashionable because it means shipping the boring version first on purpose and treating it as permanent infrastructure, not a rough draft you throw away once the AI works.
Here’s the shape of it, using a plain example: a system that reviews a piece of text and flags issues before it ships (could be a support macro, a config file, a product description, doesn’t matter).
Step 1: Build the deterministic core (this is the system, not a placeholder for the system).
# core.py
def deterministic_review(text: str) -> dict:
"""
Rule-based review. No AI. No external calls.
This is the source of truth. Everything else is optional on top of it.
"""
issues = []
if len(text) < 20:
issues.append("Content too short to be useful.")
if text.strip().endswith((".", "!", "?")) is False:
issues.append("Missing terminal punctuation.")
banned_terms = ["TBD", "TODO", "placeholder"]
for term in banned_terms:
if term.lower() in text.lower():
issues.append(f"Contains unresolved placeholder: '{term}'")
return {
"source": "deterministic",
"issues": issues,
"passed": len(issues) == 0,
}
Nothing clever here. That’s the point. This function will give you the same answer every time, forever, regardless of what any model provider does to their API next quarter. It’s not exciting. It’s load-bearing.
Step 2: The AI layer sits beside it (and not inside it).
# enhancer.py
import os
from openai import OpenAI
client = OpenAI()
def ai_review(text: str) -> dict:
"""
AI-assisted review. Adds judgment the deterministic layer can't.
Never the only line of defense. Never load-bearing on its own.
"""
prompt = f"""
Review the following content for clarity, tone, and ambiguity.
Do not invent facts. Do not rewrite the content.
Return a short list of specific concerns, or "No concerns" if none.
Content:{text}
"""
response = client.chat.completions.create
(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0,
)
return
{
"source": "ai",
"notes": response.choices[0].message.content.strip(),
}
Notice what this function does not do. It doesn’t decide pass/fail. It doesn’t touch the original text. It doesn’t get called unless something upstream explicitly asks for it. It adds a second opinion. It never replaces the first one.
Step 3: The toggle (the focus point of this article).
# pipeline.py
from core import deterministic_review
from enhancer import ai_review
def review(text: str, use_ai: bool = None) -> dict:
"""
The public entry point. Deterministic result is always computed
and always returned. AI is additive, and fails safe.
"""
use_ai = use_ai if use_ai is not None else os.getenv("USE_AI", "false").lower() == "true"
result = deterministic_review(text)
if not use_ai:
return result
try:
ai_notes = ai_review(text)
result["ai_notes"] = ai_notes["notes"]
except Exception as e:
# AI failed. The deterministic result is already computed and valid.
# We log it, we don't crash, and we don't silently pretend AI ran.
result["ai_notes"] = None
result["ai_error"] = f"AI layer unavailable: {str(e)}"
return result
Three things are true about this function that weren’t true about the “AI-as-the-feature” version most teams ship:
- The deterministic result is computed unconditionally, before AI is even considered. It’s not a fallback path bolted on after the fact. It’s the actual return value, every time, and AI either adds to it or doesn’t.
- The toggle is a real toggle. USE_AI=false doesn't mean "the AI feature is disabled and something is missing." It means the system runs exactly as it did before AI existed. Nothing degraded. Nothing broken. Just the version that was always there.
- Failure is visible, not silent. If the AI layer breaks, the response says so, explicitly, rather than quietly returning a worse answer and hoping nobody notices. ai_error is a field a caller can check. It's not swallowed by a bare except: pass.
Now here’s the thing about off switches important to remember.
You can’t add one retroactively, not really, not once a system has been live long enough that people have started trusting the AI-touched version as the version.
By the time something goes wrong, an “off switch” you build under pressure is really a panic button wired to a system that was never designed to run without the thing you’re now trying to remove. It’ll work, technically. It’ll also break three things you didn’t know depended on the AI layer being there.
The toggle in the code above costs almost nothing to build, if you build it on day one. It costs a full re-architecture to build after the fact, once “the AI version” has quietly become “the only version.”
So build the boring layer first. Keep it running underneath, permanently, not as a bootstrapping step you delete once the AI works. Let AI sit on top, opt-in, fail-safe, and honest about its own failures.
To conclude, I would say:
The real measure of whether a team understands AI governance isn’t whether they added guardrails.
It’s whether they could turn the AI off tomorrow, mid-incident, and still have a working system underneath.
Most teams, if they’re honest, would find out the hard way that they can’t.
Better to find that out in a design review than in production.
Thanks for reading this article; don’t forget to clap and follow ❤️
You can send me an invite @ LinkedIn or Substack 😎
Looking forward to connecting with you 🤝
You may also like to read:
- When RAG Fails, Look Beyond the Vector Database
- You Can’t Scale Content Without Scaling Its System!
- Your AI Agent Is Only as Confident as Your Least Confident Page
Trust Is a Toggle, Not a Feature: Why AI Should be Shipped With an Off Switch was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Agilicus
NIS2 Multi-Factor Authentication VNC compliance
Andrew Coppolino
Masa: dough at Latin American restaurants
♦
Masa harina: this ingredient is a foundational one for the many terrific Latin American restaurants — Salvadoran, Colombian and Mexican, for example — that are out there for us to enjoy.
You will find it in the food you eat their restaurant dining rooms and, in bags, on the shelves of the grocery store sections often found in these restaurants and small eateries. As such, these businesses are warm and casual community hubs that add much to the rich fabric of our food culture.
The word masa is “dough” in Spanish (masa harina is, literally, “dough flour”). It’s a traditional and key ingredient for Latin American cooking.
Taking sun- or fire-dried corn that’s been cooked and treated in lime water (calcium oxide), the soaked kernels are ground into a flour.
That flour is used to make the tortillas that make your wonderful tacos.
Check out my latest post Masa: dough at Latin American restaurants from AndrewCoppolino.com.
Cordial Catholic, K Albert Little
A Protestant Pastor Explains Binding and Loosing in Scripture
James Davis Nicoll
Who Dares / The Tangent Objective (Tangent, volume 1) By Lawrence Sanders
Lawrence Sanders’ 1976 The Tangent Objective is the first volume in the Tangent thriller duology.
Wedged between Ghana and Togo, tiny Asante is a seemingly unremarkable African nation. Independent since 1958, the former French colony is home to eight hundred thousand people. The nation is being bled white by its ruler, King Prempeh the Fourth — the Avenging Leopard of Bosum-twi! — and his family.
US-based Starrett Petroleum knows something about Asante that the king does not know. Asante sits on top of a vast lake of oil. It’s Peter Tangent’s job to make sure Starrett gets the extraction rights.
As long as he is in power, Prempeh has the Americans over a barrel and he knows it. What he does not know is that by making this clear to Tangent, he has signed his own death warrant.
Github: Brent Litner
brentlintner starred tokio-rs/topcoat
A batteries-included framework for building web apps
Rust 3.3k Updated Jul 26
Github: Brent Litner
brentlintner starred microsoft/Mage
Python 685 Updated Jul 27
Elmira Advocate
LETS MAKE A DEAL - HOW THE ONT. MIN. OF ENVIRONMENT NURTURES DIRTY POLLUTERS
First of all contrary to every credentialed sod and suit who have lost their credibility and integrity and agree with Lanxess Canada and the Ontario Min. of Environment that there is not any chlorobenzene in the Bedrock aquifer; I say this. Intellectual prostitution is no more glamorous than the real thing. In some aspects it is worse.
The reason that this lie suggesting that sure there is NDMA in the Bedrock Aquifer but not chlorobenzene is because NDMA is more easily dissolved and more easily pumped. It can be removed much easier from both aquifers and aquitards than chlorobenzene, a DNAPL chemical. Hence just as the leadership of APTE (Susan B. & Sylvia) were coopted in the early 1990s into becoming DNAPL deniers so both Uniroyal Chemical and the Ont. Min. of Environment (MOE/MECP) colluded in their October 1991 Agreement and November 4, 1991 Control Order to pretend that there were no free phase DNAPLS (Dense Non Aqueous Phase Liquids) either on the Uniroyal site or off their site having migrated into all the aquifers below the town of Elmira.
It is obvious to honest people with even a little bit of hydrogeological knowledge. Looking at the "Schematic Of Hydrogeologic Units Lanxess Canada Co." which are produced by Uniroyal/Crompton/Chemtura and now Lanxess over the last thirty-six years makes it very clear. These one page subsurface "maps" are also known as Conceptual Site Models. From the top right corner showing the Creek ("Gig") and the UA (Upper Aquifer) one can follow the blue coloured aquifers downwards into the MU (Municipal Upper) then follow the blue MU leftwards (west & south) until it reaches more blue (marked LGR -low gamma resistivity) and descends further downwards into the ML (Municipal Lower) . From there moving to the right (i.e. north and a little east) one comes to the following FOUR wells all pumping NDMA, chlorobenzene and so much more namely W6A, W5A, W9 and W8. By the way there is also likely a window just to the right of W8 which corresponds to OW58 as stated in yesterday's Blog posting. It goes through the MAT (Municipal Aquitard) and connects the MU with the ML.
Meanwhile and here's the kicker. THE BEDROCK AQUIFER IS DIRECTLY CONNECTED TO THE MUNICIPAL LOWER AQUIFER exactly where three of the four pumping wells (W5A, W6A, W9) well screens sit directly on top of the Bedrock. They are pumping both ML water and BR water albeit the free phase chlorobenzene (& more) DNAPL that gravity flowed into this location are from either or both the north-east window (near OW58) or from the south-west window (near W4, OW57-32R, Howard St. water tower); is likely long gone into the fissures and cracks of the fractured Bedrock Aquifer. There could be some free phase DNAPL still left in the ML or not but certainly that which is into the Bedrock Aquifer is there forever.
This is but part of the coverup, collusion and corruption between Uniroyal Chemical and the Ontario Ministry of Environment (MECP). Surviving APTE members may some day be able to figure out how early on their leadership betrayed them. Or not. Time will tell.
Brickhouse Guitars
Hozen Blue Label #91 Demo
Brickhouse Guitars
Coffee Break with Kyle & the Hozen Black Label SJ-KO
Cordial Catholic, K Albert Little
Democracy vs. Apostolic Succession: What the Bible REALLY Says! #shorts
Kitchener Panthers
Panthers register four hits in blowout loss
HAMILTON - The Kitchener Panthers offence hit a brick wall Friday night in Hamilton.
The Panthers garnered just four hits all night in what was a 13-1 loss to the Cardinals.
Two of the four came in the first inning, but they weren't able to get anyone across. Meantime, Hamilton scored four runs in the first to establish a lead they wouldn't relinquish.
Yosvani Penalver, Malik Williams, Raffi Gross and Josh Williams got the four hits.
The lone Panther run came in the fifth when newcomer Jackson Cooke grounded out, allowing Gross to score.
Dionys Rodriguez gave up eight runs on nine hits in 4.1 innings in the loss. He struck out six and walked one.
Kitchener has lost three straight and is 10-18 on the year. Hamilton improves to 17-9.
The Panthers continue its busy weekend Saturday at 4:08 p.m. in Barrie.
Then, they host Welland Sunday at 5 p.m.
GET YOUR TICKETS NOW and #PackTheJack!
BOXSCOREGithub: Brent Litner
brentlintner starred colinhacks/zod
TypeScript-first schema validation with static type inference
TypeScript 43.3k 1 issue needs help Updated Jul 26
Github: Brent Litner
brentlintner starred remarkjs/remark-gfm
remark plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists)
JavaScript 1.2k Updated Feb 10, 2025
Chaslinux's blog
Hp ProLiant DL380p Gen8 newer logical drives error [fix]
Several months ago one of the Computer Recycling Project at The Working Centre’s donors donated some 2U HP server hardware. One of those machines was a nice HP ProLiant DL380p Gen8 server. The server came complete with 128GB of RAM, and it had 6 x 146GB SAS (Serial Attached SCSI) drives.
While it’s always nice to get any storage and RAM with donations, I needed a bit more storage for what I had in mind. Luckily we had an HP storage array at the back with a bunch of 300GB SAS drives I could just pull out of the array, and plug into the ProLiant DL380p Gen 8, or so I thought…
Elmira Advocate
LANXESS & MECP FINDING IT HARDER TO COVERUP THE TRUTH AS PLUMES SHRINK BACKWARDS TO THEIR SOURCE
You know most children by the age of six or seven have learned that lying usually only makes things worse. Statements like the dog did it or the baby did it rarely fly with parents. Unfortunately as a society we have learned to condone dishonesty in many forms.
Yesterday's July 23, 2026 report by GHD sent to the Min. of Environment (MECP) and titled "Municipal Aquifer Steady State Conditions Trial" is an example of what my Blog title is all about. I understand that exceptions to the fibbing rule exist which include two dishonest parties sending knowingly false information back and forth in order to reinforce their agreed upon self-serving "truths". No one is offended because both parties have long ago agreed to the deception. Examples abound such as President Bush lying about Iraq's Weapons of Mass Destruction (WMD). England and the U.S. needed some justification for attacking Iraq so they jointly made sh*# up. Countries do it, individuals do it and polluting corporations do it.
There are a host of made up falsehoods regarding the Elmira Water Crisis. Only a very few to date have been debunked or admitted to such as Allan Deal (GHD) admitting to TRAC that Varnicolor Chemical contributed chlorinated solvents to the Elmira drinking water aquifers (MA) as per the Minutes of their September 12, 2024 meeting in Council Chambers. This was on page 7 and on page 6 of these Minutes is also finally the admission of DNAPL existing near pumping well W4 by the Howard St. Water Tower and beside monitoring well OW57-32R.
The page 6 admission regarding off-site DNAPL presence is important in the context of yesterday's report as it clarifies why Figures 5 & 7 clearly show both the remaining Municipal Upper and Municipal Lower Aquifer locations of chlorobenzene in Elmira's subsurface. They are located to the immediate east of former pumping well W4 as well as of monitoring wells OW57-32R and OW57-38 . The remaining plumes in both aquifers (MU, ML) are directly beneath the former Varnicolor Chemical site with Howard Ave. on their south side and First Ave on their north side. Both plumes cross under Union St. as they are slowly pulled towards pumping wells W5A/B in each aquifer. Also of interest in yesterday's report is the statement on page 15 in the Conclusions that "GHD notes that extraction wells were drilled in the core of the existing plumes at the time of installation.". This explains the location of pumping well W4 beside the free phase DNAPL clearly discovered prior to the startup of the off-site pumping in August 1998 but denied originally at a CPAC meeting around 2004-5 when I presented a writeup about it found in a monthly Progress Report. It was then denied repeatedly for years until the admission of its' presence at the September 12, 2024 TRAC meeting.
DNAPLS (chlorobenzene & more) left the Uniroyal Chemical site decades ago in at least two locations ending up by the Howard St. Water Tower and by monitoring well OW58-24 on the property line with Nutrite/Yara via a "window" through the Municipal Aquitard. Both Uniroyal and the Ontario M.O.E. colluded to hide and deny this fact from the public in order to preserve their sweetheart deal which covered up the Ministry's negligence and incompetence and which reduced Uniroyal's cleanup costs by millions of dollars.
Sorry for the upset and disruption to thin skinned individuals at Woolwich Township who insist on playing nice with those who don't play nice, much less legally.
Code Like a Girl
Break the Silence Around Compensation, and Other Actions for Allies
July 21, 2026, was Black Women’s Equal Pay Day here in the U.S. It’s a symbolic date that marks how far a Black woman must work into the current year to make the same amount that a white, non-Hispanic man earned last year.
Another way to look at it? Imagine finding out you’ve been earning just 65 cents for every dollar paid to a coworker. That’s the current wage gap for Black women working full-time, year-round in the U.S.
And there are more equal pay day milestones coming up, each revealing deep disparities:
- Moms’ Equal Pay Day — August 6
- Native Hawaiian and Pacific Islander Women’s Equal Pay Day — September 15
- Latina Equal Pay Day — October 8
- Disabled Women’s Equal Pay Day — October 20
- Native Women’s Equal Pay Day — November 19
While I hope your organization conducts regular pay equity reviews and addresses any inequities, there’s also something we can do on a personal level: Discuss our compensation.
It’s uncomfortable territory for many of us, but when we tell others what we make, we provide them with valuable data points. And data is a helpful tool in any negotiation process.
Share this action on Instagram, LinkedIn, or YouTube.
2. Don’t expect someone to use a personal credit cardShould employees and job candidates have to use their own credit card for business travel and other expenses?
Paolo Gaudiano and Cynthia Overton argue in their new book Meritocracy that this common workplace practice is one of many that quietly undermine merit.
They explain that structural enablers and organizational biases prevent meritocracy all around us. For example:
- The enabler: The organization requires individuals to pay business travel costs upfront and request a reimbursement later.
- The bias: This creates bias among employees at different socioeconomic positions. Not everyone can float hundreds — or thousands — of dollars in company expenses. Some people don’t have a credit card. Others have low credit limits or can’t afford to carry the balance while waiting weeks for reimbursement.
- The solution: Hire a company travel agent, provide corporate credit cards paid by accounting, give cash advances.
If someone needs to travel or make purchases for work, don’t assume they can “just put it on their credit card.” Instead, provide another option.
For example, use virtual credit cards (VCCs) or temporary prepaid corporate cards, available from many financial institutions. They allow your business to instantly issue temporary 16-digit card numbers for specific trips, set firm spending limits, and restrict charges to travel categories such as flights and hotels.
3. Help people notice harmful stereotypes“It’s taking longer because the decision maker is older and more cautious.”
I heard a leader make this comment during a recent virtual meeting.
My first instinct was to let it go. I had another meeting starting soon. This leader was someone I respected. He was thoughtful and empathetic. Maybe it wasn’t worth bringing up.
But I try to practice what I preach.
So, as the call was wrapping up, I asked the leader if he could stay on the line for a few more minutes because I had something I wanted to share with him.
After everyone else left, I said, “I hope you’re open to some feedback” and then summarized what I had heard him say. I pointed out that he had reinforced a negative stereotype about older people, and that while I didn’t think he meant any harm, he sent a subtle message to others on that call that it’s okay to assume older folks are going to be slower and more cautious with decision-making or other aspects of their job.
I added, “You could simply have said the decision was taking longer than expected, without attributing it to their age.”
He nodded in agreement and sincerely thanked me for the feedback.
It reminded me that these conversations don’t have to be confrontational. A respectful conversation after the meeting can be enough to help someone notice a stereotype they hadn’t realized they were reinforcing.
I hope you’ll do the same the next time you witness one.
4. Call out disgusting jokesLast week, the US Defense Secretary Pete Hegseth mandated testing testosterone levels for service members over 30 and recommended hormone therapy if needed. Afterward, Fox News host Jesse Watters made an awful joke on air about it. He chuckled, saying,
“Women on base: you better be careful. Port calls, women in Asia: you better be careful. Because these guys are going to be wild animals, and you better watch out.”
Sexual violence is not something to joke about.
And as I shared in a previous newsletter, research shows that when someone tells a denigrating joke, it signals that behavior is acceptable. People who might normally conceal their feelings feel freer to express them.
As better allies, let’s speak up. For example, “We don’t joke about rape here.”
5. Community spotlight: Pay attention to the people around youA subscriber from Berlin wrote to tell me about something she’s been noticing on public transportation: there’s a general lack of awareness of people with disabilities and access needs.
Here are some examples she regularly sees:
- A blind person navigating roads, using the markings for blind people, which are fully occupied by people walking with rolling suitcases.
- A parent juggling a stroller, a child, and shopping bags, with no one offering their seat or making space for the stroller.
- A wheelchair user trying to navigate a crowded train, weaving around bags and feet that never move because no one looks up.
She urges all of us to, “Look up and be aware of your surroundings so you’re able to offer help in situations where it’s needed.”
Most people are perfectly capable of managing on their own. But knowing someone noticed and cared enough to make space or ask how they might help can make all the difference.
🙏
If you’ve taken a step towards being a better ally, please reply to this email and tell me about it. And mention if I can quote you by name or credit you anonymously in an upcoming newsletter.
That’s all for this week. I’m glad you’re on this journey with me,
Karen Catlin (she/her), Author of the Better Allies® book series
Copyright © 2026 Karen Catlin. All rights reserved.
Together, we can make a difference with the Better Allies® approach.
- Say thanks to Karen and buy her a coffee ☕ (Need a receipt for educational reimbursement? Reply to this email, and we’ll take care of it.)
- Sponsor an edition of this newsletter
- Follow @BetterAllies on Instagram, Medium, or YouTube. Or follow Karen Catlin on LinkedIn
- Read the Better Allies books
- Tell someone about these resources
Break the Silence Around Compensation, and Other Actions for Allies was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Cordial Catholic, K Albert Little
The Protestant Succession Problem... #shorts
James Davis Nicoll
Willing Accomplice / The Intrigue By Silvia Moreno-Garcia
Silvia Moreno-Garcia’s 2026 The Intrigue is a stand-alone period-piece thriller.
As long as he had his career conman father to guide him, the man known to some as Ulises Linares prospered. The old man is dead, leaving twenty-nine-year-old Ulises to fend for himself. Thus far, Ulises has not done well in his illicit career, although he has at least managed to elude the Widow Aguirre’s angry sons.
Too old to learn a new trade, Ulises continues to pursue his vocation: bilking lonely women out of their money. His latest target is Perla Inclán, not least because she lives far from Mexico City and from the men Ulises fears are looking for him.
…
Kitchener Panthers
Maple Leafs spoil Kegtappers debut party in Kitchener
KITCHENER - On K-W Oktoberfest night, the Berlin Kegtappers and Toronto Maple Leafs played through more twists and turns than a pretzel.
But in the end, the Leafs emerged victorious 9-3 at Jack Couch Park Thursday night.
It didn't start pretty for Berlin starter Jorge Minyety, who gave up a solo shot to Brando Leroux on the fourth pitch of the game.
It was the first of two home runs on the night for Leroux.
He broke open what was a 5-3 Leaf lead in the eighth with a two-run shot in what was an otherwise nail biter of a game.
Minyety struck out seven and gave up four runs (two earned) on seven hits in six innings of work.
The story of the game became the errors that led to runs being scored.
A wild pick-off attempt off the glove of Yosuke Fujie at third allowed Toronto's second run to score in the first inning.
Fujie redeemed himself later with a pair of spectacular defensive plays at third, and hit a solo home run to make it 4-3 in the sixth inning.
In the eighth, Crix Taveras was caught in no man's land between first and second, but a throwing error and attention away from Yordan Manduley allowed the former Panther to come in to score.
Marcus Knecht hit a two-run homer in the ninth inning to round out the scoring.
Kitchener drops to 10-17 on the season, while Toronto improves to 9-18.
Kitchener is on the road in Hamilton Friday, Barrie Saturday and back home Sunday to take on Welland at 5:05 p.m.
It begins a tough stretch for the Panthers, who play their next seven games against opponents currently in playoff positions.
GET YOUR TICKETS NOW and #PackTheJack!
BOXSCOREElmira Advocate
EXACTLY HOW MANY YEARS HAS THE GREENBROOK WELLFIELD BEEN SHUT DOWN SINCE 2000 ?
This is but one of the retreaded wellfields that Waterloo Region are reopening in their desperation to keep builders and developers happy. Don't worry they do the risk calculations and theoretically at least while your risk of getting cancer will certainly rise with all these contaminated aquifers being put back in service; the numbers may be tiny such as an increase from 2 or 3 "excess" cancers in a million to a marginally greater 4 "excess" cancers in a million. No worries there especially as hardly any of us have friends, colleagues or relatives suffering cancers, past cancers or fatal cancers. Right?
The Greenbrook Wellfield wells, K1, K2, K4B, K5A and K8 located near Homer Watson Blvd. and Stirling Ave. in Kitchener were all on standby status from at least 2003 until 2007. Newspaper accounts also advise us that that situation has continued during the 2020s whether from a chlorine/ammonia screwup and explosion or from the 1,4 dioxane contamination that came from the Ottawa St. Landfill. Now there have also been well redrills and replacements in this wellfield as the current wells are now known as K1A, K2A, K4C, K5A and K8. These machinations if you will are common practice for the Region when they have "problematic" wells and examples in Cambridge for example include drilling past and through a contaminated zone of a well in order to pump water from a deeper less contaminated or uncontaminated zone.
It is my opinion that this Grand River Source Protection Area Assessment Report Chapter 8, July 29, 2025 is unnecessarily thick and inflated with data that is at best filler or meant to make reading difficult and tedious. That said with enough patience and tenacity and overall knowledge a serious person can find much to be concerned with regarding this wellfield. Firstly the chances of 1,4 dioxane being the only toxic contaminant to reach the Greenbrook Wellfield from the Ottawa St. Landfill is somewhere between zero and nil. Look for benzene, chlorinated solvents and all the usual array of industrial solvents that were dumped there including by Elmira industries such as Varnicolor Chemical and if I might hazard a guess probably Uniroyal Chemical as well back in the day. Paper restrictions were strong whereas physical restrictions were not.
Other issues include high chlorides and high sodiums maybe from road salt but also common from industrially contaminated aquifers. Also I should applaud at least a couple of the Figures in this report as they do identify the Total Number of Significant Threat Activities as well as the Total Number of Properties with Significant Threats. Those numbers are huge (630, 379). They also indicate both High Unadjusted Intrinsic Vulnerability levels for this wellfield as well as High Adjusted Intrinsic Vulnerability threats to water quality.
Waterloo Region are desperate to keep the water flowing and in my opinion they are risking your and my health for their own benefit. What else is new when it comes to water protection.
Github: Brent Litner
brentlintner starred jesseduffield/lazydocker
The lazier way to manage everything docker
Go 52.2k Updated Apr 19
Glynn Stewart
Alien Olympus is out now!
Mars needs allies, intelligence and time.
Only blood and fire can earn them all three.
Read Alien Olympus in ebook, audiobook or paperback now!
♦
Despite sacrifices and even victories, the Protectorate of the Mage-Queen of Mars is losing the war against the Reezh Kazh, the fascist theocracy that rules the only aliens they’ve ever met.
Ambassador Connor O’Hannagain has been sent to find allies among the reezh home worlds, the old and mighty systems that defied the Kazh once—but a centuries-long cold war has left the enemies of his enemy paranoid and violent.
Mike Kelzin, husband, pilot and spy, is the Protectorate’s eyes and ears, seeking every scrap of intelligence that can be found on the Kazh. But access to the enemy worlds is nigh impossible, leaving his best chances in the occupied Chimera System—where even the Resistance is entirely cut off from Mars.
Mage-Admiral Jane Alexander, Crown Princess and fleet commander, knows that they need time more than anything else. Time their enemy is unlikely to give them.
To turn the tide, Mars must buy allies, intelligence, and time—and only the oldest currency can pay for all three.
Blood.
The post Alien Olympus is out now! appeared first on Glynn Stewart.
Children and Youth Planning Table of Waterloo Region
2026 Youth Impact Survey Prize Winners
- Unique A.
- Anvika A.
- Skylar-Jade B.
- Michaela B.
- Lucas C.
- Ivanna C.
- Sanya G.
- Jaxon G.
- Gretchen G.
- William G.
- E.H.
- Tamara J.
- Leo K.
- Jesse L.
- Beckham M.
- Nyakhan N.
- Alice N.
- Tobi O.
- Ayoyimika O.
- Faiz P.
- Colton P.H.
- Ella S.
- Kinsley S.
- Miabella S.
- Nate V.
- Riley W.
- Xoey W.
- Adam W.
- Evelyn W.
- Elisha W.
- Cindy Z.
- Sami A.
- Nathan B.
- Abi B.
- Jill C.
- Mya D.
- Ayra E.
- Myshaa G.
- Dagyeong K.
- Quesara K.
- Yara K.
- Aliyah S.
- Emily S.
- Treasure S.
- Reyansh B.
- Vincent B.
- Piper G.
- Riley H.
- Amaya I.
- Mitchell L.
- Hudson O.
- Fatimah R.
- S.R.
- Gurnadar S.
- Emily T.
- Joanna T.
- Twyla V.
- Marinda W.
- Elyse X.
- Rhetton L.
Nusaiba A.
Everly M.
Shriya S.
Sam G.
Level 1 Prize Winners (Due date to claim prize: Friday, August 14)
- Kaiden H.
- Morire E.
- Sonnet A.
- Sierra H.
- Taylor M.
The post 2026 Youth Impact Survey Prize Winners appeared first on Children and Youth Planning Table.
Cordial Catholic, K Albert Little
Protestant Pastor Defends Literal Bible Interpretation #shorts
James Davis Nicoll
Chosen One / Radiant Star By Ann Leckie
Ann Leckie’s 2026 Radiant Star is a stand-alone science fiction novel. Radiant Star takes place in Leckie’s Imperial Radch setting.
Although he was not aware of this fact when he was growing up, Jonr of the planet Aaa is the chosen one. Although not in the messianic sense. Jonr was chosen as the payment for a debt that Jonr’s parent Zaved ran up during Zaved’s unsanctioned wanderjahr.
Despite Jonr’s best efforts to elude being sent far from home to serve a stranger of uncertain temperament, Jonr is popped into cold sleep in preparation for shipping.
Suddenly, the Imperial Radch invade! Aaa and its only city Ooioiaa are occupied territory.
Fast-forward thirty years.
…
The Backing Bookworm
The Correspondent
The Correspondent has been the belle of the book nerd ball. It was published in 2025 and has gained quite a following over the past year. Not one to be left out, I bought a copy six months ago ... and finally got around to reading it.
Told in epistolary (letters) format, the story centres around Sybil Van Antwerp, a septuagenarian who uses letters to communicate and connect with those around her, as well as celebrities, authors and anyone else she thinks needs to know her thoughts.
Sybil is not everyone's cuppa tea. She's a retired lawyer who is opinionated and far from perfect. She has her flaws, her struggling relationships and tends to keep the people closest to her at arm's length. She finds it much easier to communicate via letters and, at times, she can be obstinate and prickly while also oversharing with random strangers she meets - notably a customer service rep, famous authors, and a poor university Dean who is the focus of Sybil's doggedly persistent wrath.
This is a story that veers a bit into melodrama but has a heartwarming scene or two that made me tear up. It's a story about grudges, grief, love, mistakes, reconnection, regrets and secrets. Evans put my initial concerns about the epistolary format to rest early on and I know I will reread this book at a later time since I get the feeling I missed some layers that the author skillfully wove into the story.
My Rating:4.25 starsAuthor: Virginia EvansGenre: Literary Fiction, EpistolaryType and Source: Hardcover, personal copyPublisher: Crown PublishingFirst Published: April 29, 2025Read: July 13-16, 2026
Book Description from GoodReads: “Imagine, the letters one has sent out into the world, the letters received back in turn, are like the pieces of a magnificent puzzle. . . . Isn’t there something wonderful in that, to think that a story of one’s life is preserved in some way, that this very letter may one day mean something, even if it is a very small thing, to someone?”
Filled with knowledge that only comes from a life fully lived, The Correspondent is a gem of a novel about the power of finding solace in literature and connection with people we might never meet in person. It is about the hubris of youth and the wisdom of old age, and the mistakes and acts of kindness that occur during a lifetime.
Sybil Van Antwerp has throughout her life used letters to make sense of the world and her place in it. Most mornings, around half past ten, Sybil sits down to write letters—to her brother, to her best friend, to the president of the university who will not allow her to audit a class she desperately wants to take, to Joan Didion and Larry McMurtry to tell them what she thinks of their latest books, and to one person to whom she writes often yet never sends the letter.
Sybil expects her world to go on as it always has—a mother, grandmother, wife, divorcee, distinguished lawyer, she has lived a very full life. But when letters from someone in her past force her to examine one of the most painful periods of her life, she realizes that the letter she has been writing over the years needs to be read and that she cannot move forward until she finds it in her heart to offer forgiveness.
Sybil Van Antwerp’s life of letters might be “a very small thing,” but she also might be one of the most memorable characters you will ever read.
♦
Github: Brent Litner
brentlintner starred prabal-rje/latentscore
Python library for generating ambient music from text descriptions. No GPU required. Turn text into sound with a single line of code.
Python 41 Updated May 29
KW Motion
Restaurant Spotlight on 271West in Kitchener
Source
Code Like a Girl
The Courage Nobody Talks About
What does your life look like when you are living at your courageous best?
That question came from a leadership coach during a women’s leadership program I was part of at work. The room went quiet, then people started naming their fears. Talking to a large audience. Doing something new outside their comfort zone. Networking with unknown people.
I sat there realizing I did not share any of those fears. Mine was self-advocacy.
For years my mantra was to let the work speak for itself. It felt like the safer, more dignified choice. But in a world of shrinking attention spans, is it fair to expect someone else to notice what I built? That question sent me into a why-why analysis on what I was missing.
Two problems surfaced immediately. Firstly, I do not always know what I should be advocating for. I do the work, but I rarely stop to name what it proves about me. Moreover, even when I know what to say, I do not know how to say it without sounding like I am bragging.
And I am living this right now. I led a product build that went from zero to one with a successful beta run in three months. We are now moving towards general availability. Scaling it from here on needs more people on my team. But when I raise this with my leaders, I can see they do not instinctively get why.
Because I never told them what it actually took to get here. I never walked them through the build, the partner negotiations, the scaling decisions, the ongoing support, all of it stacked on top of each other for months. I assumed the beta success would speak for the effort behind it. It did not. Success is visible. The work underneath it is not, unless you name it.
This article is my attempt to work through both, using what I learned in the session and what I have tested since.
Problem one: knowing what to advocate forSelf-advocacy begins with self-trust, and self-trust is shakier than it looks.
Every evening a voice shows up and tells me the day did not amount to much. It does not pause to check; it just delivers the verdict. I used to treat that voice as the final word.
But there is a second voice, if I actually let it speak. It does not argue with the critic directly. It just asks one question first. What did I actually get done today? Most evenings, when I stop and answer that honestly, the list is longer than the critic gave me credit for. The day was not wasted. I simply never stopped to notice it before moving on to the next thing.
Call it the critic and the mentor. The critic is fast and loud. It shows up uninvited every single day. The mentor only speaks if you deliberately ask it a question, which is exactly why it loses so often.
Here is the fix I am using. Every time the critic makes a claim, I call in the mentor to check it against evidence, not feeling.
And evidence comes in two forms. Functional evidence talks about what I actually produced. That is a fact, not a feeling, and it directly counters the critic's claim. Emotional evidence involves what I got through. Moments I stayed steady, or recovered from something hard.
The reason self-trust feels shaky is not that the evidence does not exist. It is that we never log it. The critic keeps a precise record of every shortfall. The mentor gets no record at all, unless you build one.
So the practical answer to problem one is simple. Keep a running log, even three lines a week, split into two columns. What did I produce. What did I get through. That log becomes the material your mentor uses to talk back to the critic. It is also, directly, the raw material for what you advocate for later.
Problem two: saying it without braggingKnowing your evidence is only half the problem. The other half is saying it out loud without it sounding like self-promotion.
Here is the distinction that unlocked this for me. Self-advocacy is stating a fact. Self-promotion is trying to win approval. The two get confused because they can use the same words. The difference is in what you attach to the sentence.
If I say, I turned around this initiative despite the constraints, and stop there, that is advocacy. It is a fact, stated plainly, with no ask attached.
If I add, so I hope people notice, or, so I deserve more credit, that same sentence turns into a request for approval, and it starts to feel uncomfortable to say, and to hear.
The technique is to separate the update from the ask. State what happened. Do not hedge it with a joke, do not shrink it with a qualifier, do not attach a request unless you actually have one. If you do have an ask, make it separately, and make it direct.
In practice, this sounds like: This shipped, and it took solving three specific constraints. Not: I don’t know if this matters, but I guess I managed to get this out despite everything. The first is advocacy. The second is an apology wearing the clothes of an update.
The two-part practice♦Self-advocacy is not one skill. It is knowing what to say, built from evidence you deliberately collect, and knowing how to say it, built from separating fact from request.
- Log your evidence weekly, split into what you produced and what you got through.
- When the critic speaks, ask what the mentor would say, using the log as proof, not opinion.
- When you communicate an update, state the fact plainly, with no self-deprecating qualifier and no unstated ask.
- If you have an actual request, make it as its own sentence, separate from the update.
I turned this log into a skill called daily self-advocacy log, open source on GitHub: github.com/kaantibshetty/skills-library/tree/main/career/daily-self-advocacy-log. You can schedule a task using this skill on Claude Cowork or Perplexity, and it will auto-trigger a conversation at the end of your day. Each evening it asks two questions: what did you produce and what did you get through, then saves the entry to a running log so the mentor always has evidence on hand.
The courageous version of me is not the one who talks the loudest about her work. It is the one who keeps the receipts and hands them over without apologizing for it.
♦The Courage Nobody Talks About was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Code Like a Girl
Tracing isn’t observability: why your LLM needs eval and alerting in the same loop
You traced 4 million LLM requests last month. You can pull up any prompt, any completion, any latency percentile. And you still got…
Continue reading on Code Like A Girl »
Brickhouse Guitars
Touring The National School Of Lutherie (Part 1)
Elmira Advocate
WAS AND IS THE MANNHEIM EAST WELLFIELD IN WATERLOO REGION A BUST ?
This wellfield is located on Kitchener's west side near Trussler Rd. and the boundary with Wilmot Township. It consists of multiple Supply Wells (i.e. pumping wells K21A, K25, K29) along with Recovery Wells (RCW1-2) originally and now RCW 2-4. Aquifer Storage & Recovery Wells (ASR1-5) are to accept treated Grand River water for storage to be pumped later into the distribution system by the Recovery Wells RCW 2-4 . There are also a set of wells known as Peaking wells and they are designated K91-94).
I would very much like to see audited up to date pumping rates for all these wells because the data I do have does not jive with the reality of a system constantly needing to expand along with our population. I have long suspected that the entire Mannheim Aquifer Storage and Recovery System has not lived up to expectations whether through misadventure, bad luck or poor planning. Regardless again the data for all these wells that I have shows pumping rates well below the permitted volumes. This alone without ever greater population growth would cause pressure on other nearby well systems to take up the slack. This would include the Mannheim West Wellfield in Wilmot Township as well as the just down the road further west Wilmot Centre Wellfield which has been causing well interference complaints from local residents.
Under all the circumstances well interference is hardly surprising but what is, is the Region's hardas# attitude towards these residents and their water shortages possibly caused by again misadventure, bad luck or poor planning.
Code Like a Girl
Reducing Buffering and Downtime: Operational Best Practices for OTT Platforms
The OTT industry continues to grow rapidly as streaming consumption increases across global markets. In 2026, consumers are looking for seamless playback, a continuous streaming experience, and broadcast-quality service on every device. Streaming reliability has become a key factor influencing user retention, which is why businesses are prioritizing high-quality OTT platform development services to drive long-term growth.
According to the latest market estimates by Ampere Analysis, global OTT revenues are already in the hundreds of billions of dollars, despite ever-growing consumer expectations.
Why is stream quality a major consideration for businesses today?On the OTT platform side, a few moments of delay may cause loss of subscribers, loss of viewing duration, lower ad completions, and reputational damage. With increasing competition and growing numbers of users, operational reliability has become a major competitive differentiator for streaming platforms.
Quality of streams is no longer a technical characteristic that concerns backend systems alone. Rather, stream quality is now considered a key business KPI tied directly to client retention and monetization.
According to industry studies by Conviva in its State of Streaming report, buffering and playback problems have been found to affect viewer engagement and session completion for OTT platforms.
Why is the multi-CDN architecture approach required now?The multi-CDN approach remains one of the most efficient ways of lowering buffering and reducing downtime.
Relying on a single CDN provider creates operational risks. Regional CDN outages, ISP routing issues, and sudden traffic spikes can negatively affect streaming performance if traffic cannot be dynamically redirected.
By implementing multi-CDN infrastructure, an OTT provider may route customers to a high-performance CDN depending on various factors such as:
- Customer’s location
- Network traffic
- Network latency
- Performance of CDN in real time
- Network demand
A 2025-study on CDN-based live-streaming architectures stated that a drop in buffering rate can be achieved due to optimization of edge delivery and CDN routing practices.
Building resilient OTT infrastructure for peak traffic eventsKeeping video playback smooth when millions of people log in at once is tough. Live sports, big movie releases, or breaking news can bring in huge crowds in just a few minutes. If a platform isn’t ready, these sudden traffic spikes cause buffering, crashes, login delays, and network overloads.
To handle these crowded moments, advanced OTT app development services focus on a few key operational steps:
- Smart Scaling: Using past data to prepare servers before the crowd arrives.
- Traffic Spreading: Sharing the user load across different regions and servers.
- Auto-Backup Systems: Instantly switching to a backup network if the main one fails.
- Edge Storage: Storing content closer to the users so videos load faster.
- Fast Processing: Speeding up how live video is broken down and sent to devices.
- Stress Tests: Testing the system with fake traffic before the real event starts.
Running these tests helps companies find and fix weak spots in their streaming setup ahead of time. This proactive approach prevents annoying disruptions when viewer numbers — and ad revenues — are at their highest.
Real-time QoE monitoring is essentialStandard infrastructure monitoring is not adequate for today’s streaming services.
Earlier, the main concerns of OTT operations managers were uptime, bandwidth, and server availability. But these indicators don’t capture the full picture of the viewer’s experience.
The recent trend in the streaming world is Quality of Experience (QoE) monitoring that analyzes the performance of content delivery from the viewer’s perspective.
Here are the key factors that successful OTT organizations currently monitor:
- Rebuffering ratio
- Video load time
- Failure rate
- Adaptive bitrate switch
- Session abandonment
- Performance based on specific devices
- Streaming degradation related to ISPs
This allows OTT teams to detect and resolve playback issues proactively before they impact viewer satisfaction. Moreover, modern monitoring tools utilize AI technologies to analyze potential problems and take immediate action automatically.
The importance of optimizing adaptive bitrate streamingAdaptive bitrate (ABR) streaming dynamically adjusts video quality based on network conditions to maintain stable playback. However, improper configuration of bitrate ladders results in fluctuating quality issues, unnecessary buffering, and unstable playback experience for users.
Current best practices for improving OTT streaming are as follows:
- Well-tuned bitrate ladders
- Device-dependent encoding profiles
- Optimized segments
- Increased efficiency of manifest delivery
- Low-latency packaging
- Fast transcoding process
Codec optimization is now gaining popularity among OTT service providers to minimize data usage while preserving high visual quality.
Codec efficiency becomes especially important for global OTT apps serving millions of concurrent users.
Low-latency streaming requires a careful balanceUltra-low-latency streaming demand is increasing rapidly, especially in:
- Live sports coverage
- Streaming interactivity
- Gambling integration
- Gaming content
- Real-time user interaction
Yet, ultra-low latency creates operational challenges.
Lowering latencies aggressively without building resilient systems may lead to higher levels of playback disruptions, synchronization problems, and segment delivery failures.
Successful OTT services focus on balancing latency and reliability rather than chasing the minimum latency possible.
How is AI changing OTT operations?Artificial intelligence is becoming an increasingly important part of OTT infrastructural management.
Advanced AI technologies have the ability to predict:
- Spikes in traffic
- CDN congestion
- Degradation of playback quality
- Potential risks of viewer churn
- Regional network instability
- Infrastructural bottlenecks
AI can also enhance adaptive streaming by taking advantage of user behavior and network conditions. As a result, the quality of bitrate distribution, traffic routing, and fault recovery becomes much better.
OTT infrastructure is gradually evolving toward self-healing systems capable of detecting and resolving issues automatically.
Conclusion: The future of OTT will be reliability-drivenFor OTT providers in 2026, minimizing buffering and downtime is no longer just a technical objective — it is a business necessity.
As competition intensifies, investing in reliable OTT app development services is the best way for brands to secure interruption-free streaming, stronger viewer retention, and long-term growth.
♦Reducing Buffering and Downtime: Operational Best Practices for OTT Platforms was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Kitchener-Waterloo Real Estate Blog
Waterloo Region Real Estate Market Report | July 2026
June brought a modest increase in real estate sales across Waterloo Region, but buyers remained highly selective and home prices continued to soften.
A total of 650 homes sold during the month, representing a 2.7% increase from the 633 sales recorded in May. However, sales remained 4.4% below June 2025 levels. Both the average and median sale prices also declined year-over-year.
The Waterloo Region real estate market remains active, but it is not forgiving. Buyers are responding when they see clear value, while homes that are overpriced, poorly prepared or incorrectly positioned are having a much more difficult time generating meaningful interest.
June 2026 Waterloo Region Real Estate Market at a GlanceCompared with May 2026 and June 2025:
- 650 homes sold: Up 2.7% from May, but down 4.4% year-over-year
- $730,668 average sale price: Down approximately 1.9% from May and 6.5% year-over-year
- $690,000 median sale price: Down 5.0% year-over-year
- 1,401 new listings: Down 3.8% from May and 7.5% year-over-year
- 2,053 homes available for sale: Up 1.5% from May, but down 6.7% year-over-year
- 27 average days on market: Unchanged from June 2025
- 4.1 months of inventory: Down slightly from 4.2 months one year ago
- 100.9% of the most recent list price received: Compared with 101.2% in June 2025
Cornerstone Association of REALTORS®
The month-over-month picture was mixed. More homes sold in June, but prices softened and selling timelines generally lengthened compared with May.
Year-over-year, sales, prices, new listings and overall inventory all remained lower.
What We Are Seeing in the Waterloo Region Housing MarketBeyond the statistics, buyers continue to respond most strongly to homes that are properly prepared, accurately priced and effectively positioned from the beginning.
Today’s buyers have access to more market information than ever. They are comparing each property against competing listings, recent sales, neighbourhood trends, condition, location and overall value.
Strategic pricing is no longer simply about attracting online views or showing activity. It is about creating enough interest and confidence to motivate qualified buyers to act.
The sellers achieving the strongest results are generally those who fully commit to the selling process. They follow the recommended preparation and staging plan, address the details that matter and price according to current market conditions rather than past expectations.
We saw this firsthand with 2 recent listings priced above $1 million. Both homes were priced at current market value rather than intentionally underpriced, and both sold within days, above asking and in multiple offers.
In each case, the sellers fully committed to the recommended preparation, staging, pricing, marketing and launch strategy.
Not every home requires extensive renovations or a major financial investment before selling. The key is understanding which improvements will influence buyers, where money should and should not be spent, and how to position the property so it stands out from competing homes for sale in Waterloo Region.
Single-Family Home Sales in Waterloo RegionSingle-family homes continued to outperform the townhouse and condominium segment in June.
- 430 sales: Up 2.9% from May, but down 2.5% year-over-year
- $838,386 average sale price: Down 1.7% from May and 7.0% year-over-year
- $775,000 median sale price: Down 0.8% from May and 6.1% year-over-year
- 23 average days on market: Up from 20 days in May and unchanged from June 2025
- 3.4 months of inventory
- 101.4% of the most recent list price received
Cornerstone Association of REALTORS®
Year-to-date single-family home sales were essentially unchanged from 2025, increasing by just 0.1%.
With fewer months of inventory and shorter selling timelines than other property categories, the single-family segment continues to experience stronger relative demand.
Detached homes that are well maintained, properly presented and priced in line with recent neighbourhood sales can still attract significant buyer interest. However, buyers remain highly sensitive to condition and perceived value, particularly when comparing similar homes within the same price range.
Townhouse, Semi-Detached and Condominium SalesThe townhouse, semi-detached and condominium segment continues to offer buyers more choice and greater negotiating power.
- 220 sales: Up 2.3% from May, but down 7.9% year-over-year
- $520,128 average sale price: Down 2.8% from May and 7.0% year-over-year
- $525,000 median sale price: Down 4.5% from May and 5.4% year-over-year
- 35 average days on market: Up from 30 days in May and unchanged from June 2025
- 5.4 months of inventory
- 100.0% of the most recent list price received
Cornerstone Association of REALTORS®
With more inventory and longer selling timelines than the single-family segment, this portion of the Waterloo Region housing market remains especially price sensitive.
Accurate pricing and strong presentation become even more important when buyers have several comparable properties to choose from. Small differences in monthly fees, updates, layout, parking, location and overall condition can have a meaningful impact on buyer interest.
Sellers in this category should also be prepared for buyers to take more time, compare more options and negotiate more carefully than they may have during previous markets.
Canada’s Broader Housing and Economic OutlookNationally, Canada’s housing market continued to improve gradually in June.
Home sales increased by 0.5% from May, marking a third consecutive monthly increase and placing activity approximately 7% above March levels. The National Composite MLS® Home Price Index was unchanged from May, while national housing inventory remained close to its long-term average.
The Canadian Real Estate Association also revised its housing-market forecast in July. CREA now expects national home sales to decline modestly by 1.4% in 2026 following a weaker first half of the year, but anticipates a more active second half.
Importantly for the Waterloo Region real estate market, Ontario is now the only province forecast to record an annual increase in home sales in 2026.
National sales are then forecast to rise by 3.7% in 2027 as stable interest rates, modest economic growth and pent-up demand gradually bring more buyers back into the market.
On July 15, the Bank of Canada held its overnight rate at 2.25% for a sixth consecutive meeting. Canada’s annual inflation rate also eased to 2.8% in June from 3.2% in May.
Taken together, these developments support a cautiously optimistic outlook. A dramatic rebound is not expected, but stable interest rates, moderating inflation and improving activity in Ontario may help strengthen buyer and seller confidence as we move toward the fall market.
What Does the June Market Mean for Waterloo Region Sellers?June demonstrated that strong selling results are still possible, but they are not automatic.
The homes performing best are generally those that are:
- Thoughtfully prepared before reaching the market
- Priced according to current conditions
- Professionally staged and photographed
- Marketed directly to the most likely buyers
- Positioned clearly against competing properties
- Launched with a coordinated strategy from the outset
A home does not need to be perfect, but it does need a clear plan.
That plan should consider the property itself, the surrounding neighbourhood, competing listings, recent sales, the target buyer and the realities of the current market.
Overpricing a home to “test the market” can be especially risky. The first days of a listing are often when buyer interest is strongest. If the price does not align with the home’s condition and competition, buyers may move on before a price adjustment is made.
What Does the Current Market Mean for Buyers?For buyers, the current Waterloo Region housing market continues to offer more choice, more time to make informed decisions and greater negotiating opportunities than the highly competitive markets of recent years.
That does not mean every home will sell below asking or without competition. Well-priced homes in desirable neighbourhoods can still sell quickly and receive multiple offers.
However, buyers generally have more opportunity to complete proper due diligence, compare available properties and negotiate based on condition, recent sales and market value.
Working with a knowledgeable local real estate team remains important, particularly when evaluating whether a property is priced fairly or determining how aggressively to approach an offer.
The Bottom LineJune brought slightly stronger sales activity than May, but Waterloo Region home prices remained under pressure and buyers continued to be selective.
The opportunity for a strong result still exists. However, preparation, pricing, presentation and marketing matter more in this market than they did when limited inventory was driving nearly every property toward a quick sale.
Whether you are considering buying, selling, downsizing or relocating, your strategy should be based on current neighbourhood-level information rather than broad headlines or sale prices from several months ago.
If you are wondering what your home may be worth in today’s Waterloo Region real estate market, our team would be happy to provide a personalized market assessment and help you understand the best strategy for your property.
The post Waterloo Region Real Estate Market Report | July 2026 appeared first on Kitchener Waterloo Real Estate Agent - The Deutschmann Team.
Code Like a Girl
The Leadership Qualities Nobody Puts on the Job Description
If you’re a leader, or in any kind of leadership position, of course, you need vision, integrity, communication & emotional intelligence. But honestly, we have been saying the same things about leadership since the invention of LinkedIn. And while all of those qualities matter, there is genuinely so much more to being a good leader.
As a coach, when I read some of the conversations around leadership, I sometimes wonder whether we are developing leaders or simply finding creative ways to describe the ability to just be a decent human being. So, I want to talk about some of the more basic qualities that don’t always make it onto a leadership competency framework. The things that may sound simple, but actually mean a lot to your team.
You should be able to say, “I don’t know.”Not: “I don’t know, but let me find out.” Just: “I don’t know.”
You are a leader. You are not Google with a job title.
You do not need to have every answer, know every detail or be the smartest person in every room you walk into. Your job is not to know everything.
Your job is to create an environment where people feel comfortable enough to ask questions, share ideas & work out the answers together.
There is something deeply reassuring about a leader who can say: “I’m not sure. Let’s figure it out.” Because the moment you stop pretending to know everything, you give everyone else permission to stop pretending too & honestly, that is usually when the best thinking begins.
You should be patient.This sounds obvious. It isn’t. Especially when:
- You have already explained something three times.
- The person in front of you is making a mistake you made five years ago.
- You are under pressure & everything feels urgent.
A good leader understands that people do not all learn at the same speed, process information in the same way, or gain confidence on the same timeline. Patience does not mean lowering your standards. It means giving people enough space to meet them. Also, if you have to give feedback, you should be able to do it without making the person feel like a personal inconvenience.
You can be honest without being condescending. Or you can be direct without being difficult & you can hold people accountable without making them afraid of you. Because feedback should help people become better at what they do. It should not be an opportunity for you to demonstrate how much you know, how frustrated you are, or how quickly you would have done it yourself.
You should know the difference between urgency & your own anxiety.Everything cannot be urgent. Sometimes the deadline is genuinely critical & sometimes you’re just stressed. A real leader knows the difference. Because your anxiety can quickly become everyone else’s workload.
You should be able to survive someone else being better than you.If your team can only succeed when you are the smartest person in the room, you have not built a team. You have built a very expensive fan club.
A good leader hires people who know things they don’t. People who challenge them & occasionally have better ideas. And then they don’t take it personally.
Your team succeeding does not make you less important. In fact, that is the point.
You should be able to apologise without adding a “but.”“I’m sorry I spoke to you that way.” Not: “I’m sorry, but you were also being difficult.” That is not an apology. That is a performance review with emotional lighting.
You should remember what it felt like before you had power.Remember being new or being nervous before a meeting? Remember making a mistake & waiting for your manager’s reaction. Remember not knowing who to ask or wanting to speak but being afraid you would sound stupid?
If you forget what it felt like to be at the beginning, you may eventually become the reason other people are afraid to begin.
You should be able to let other people have the moment.Sometimes your team wins. Not you. Your team.
You do not need to remind everyone that you were in the room when the idea happened. You do not need to explain how you approved it. You can just say: “That was their work. They did an excellent job.” And mean it. Your LinkedIn profile will survive.
Not every quiet employee is disengaged. Not every person who doesn’t speak in meetings lacks confidence. Not every person who doesn’t want to join Friday drinks has a culture problem.
Sometimes people are tired. Sometimes they are introverts, they have a life outside work. A good leader supports people without constantly trying to redesign their personalities.
And perhaps most importantly, you should be able to laugh at yourself.Because leadership is humbling. You will send an email with the wrong attachment. You will confidently say something that makes absolutely no sense. You will walk into the wrong meeting.
You will have a deeply profound leadership moment & then immediately trip over a chair. It happens. You should be able to laugh. Because the best leaders I have encountered are not the ones who have perfected leadership. They are the ones who are self-aware enough to notice when they are getting it wrong.
They know when to speak.
When to listen.
When to push.
When to step back.
When to give feedback.
When to give people time.
When to say, “I was wrong.”
And when to stop calling every problem a “learning opportunity” & admit that everyone is simply very tired.
And perhaps this is where emotional intelligence matters most. In my opinion, it is probably the most important quality a leader can have. Not because it sounds good on a leadership competency framework, but because it affects everything.
How you speak to people.
How you give feedback.
How you handle pressure.
How you respond when you are wrong.
How you make people feel when they are still learning.
Because leadership is not about becoming the most impressive person in the room.
It is about making the people around you feel more capable, more confident & more able to do their best work.
People may not remember every strategy you created or every meeting you led. But they will remember how they felt around you. I’ve worked with some truly exceptional leaders, & I know I’ve done some of my best work around the leaders who made me feel trusted enough to do it. Whether they felt safe enough to ask questions. People will remember;
Whether they could make mistakes & recover.
Whether your feedback helped them grow or simply made them feel small.
Whether you gave them time.
Whether you gave them credit.
Whether you were patient when they were still learning.
And whether, somewhere along the way, you made them believe they could do more than they thought they could.
Because ultimately, the most underrated leadership quality of all is simply this: Being a human being before being a leader.
That, to me, is leadership.
♦The Leadership Qualities Nobody Puts on the Job Description was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Code Like a Girl
I Said “We’d Use Kafka” in a Dozen Interviews Before I Actually Understood It
I used to think Kafka was one of those tools you just name-drop in interviews and hope nobody asks a follow-up question. “We’d use Kafka for that” is a sentence that has gotten a lot of engineers through a lot of rounds without anyone actually explaining what happens after you say it.
So here’s my attempt at the version I wish I’d had going in. Top down, starting from a dumb example and ending at the stuff that actually separates a senior answer from a staff answer.
Start with the World Cup, not the whitepaperImagine you’re running a website that shows real-time World Cup stats. A goal happens, you push an update. A player gets booked, you push an update. Simple enough with one server: a producer puts events on a queue, a consumer reads them off and updates the site.
♦Now blow the tournament up to a hypothetical 1,000 teams, all playing at once. Your single queue is drowning. Your consumer has its mouth under a firehose. You need more servers.
♦Here’s where it gets interesting. If you just randomly spray events across new servers, you get chaos. Goals get scored before kickoff. Players get booked for fouls that haven’t happened yet, because ordering just broke.
The fix is almost embarrassingly simple once you see it: distribute events by game ID. Every event for one game always lands on the same partition, so within that game, order is preserved. This is the entire idea Kafka is built around. Everything else is commentary.
♦The vocabulary, fast- Broker — one server in the cluster. More brokers, more storage, more clients served.
- Partition — an ordered, append-only log. This is the actual unit of scale.
- Topic — a logical grouping of partitions. This is what you publish to and subscribe from.
- Producer / Consumer — write to topics, read from topics. Kafka doesn’t care what’s inside the message.
One thing that trips people up: a topic and a partition are not the same axis. Topic is logical, partition is physical. A topic can span partitions across many different brokers.
♦Message queue or event stream? It’s the same system, different jobKafka can be either, and the difference comes down to consumption pattern, not the underlying mechanics. Both modes track progress with offset commits.
♦As a queue: one consumer in a group handles a message, and it’s effectively done (Kafka still holds onto it based on retention, but logically it’s consumed).
As a stream: the log sticks around, it can be replayed, and multiple independent consumer groups can read the same data at their own pace.
Reach for the queue pattern when you have async work (transcode this video whenever), or when order matters (a virtual waiting room), or when you want producer and consumer to scale independently.
Reach for the stream pattern when you need continuous real-time processing (aggregating ad clicks as they happen), or when several totally different consumers need to see the same events (pushing live comments to multiple downstream services).
What actually happens when you hit “send”The Message Body
- Four fields, all technically optional: value (the actual payload), key, timestamp, and headers.
- Order within a partition is decided by offset (position in the log), not by timestamp.
How a message finds its partition (two steps)
- Step 1: Kafka hashes the key and hash(key) % num_partitions to pick a partition. No key? It falls back to a default partitioner that spreads messages round the partitions.
- Step 2: the cluster controller’s metadata tells the producer which broker holds that partition, and the message is sent straight there.
Once it lands: the immutable log
- Messages are appended only, never edited in place.
- Old data leaves only through retention (time/size limits) or compaction (keeping just the latest value per key).
- That immutability is what makes replication simple, recovery fast, and avoids a whole class of bugs that come from mutable state.
Durability: leader-follower replication
- One broker is the leader for a partition, handling all writes (and by default, reads).
- Followers replicate passively in the background.
- If the leader dies, an in-sync follower gets promoted.
- acks=all is the strongest guarantee: a message is only acknowledged once every in-sync replica has it.
Consumers pull, they’re never pushed to
- A deliberate design choice: consumers set their own pace, failure handling stays simple, and one slow consumer can’t take down the whole pipeline.
Key path: the message’s key gets hashed to pick a partition, the leader broker for that partition takes the write, followers replicate it, and it lands in the log at the next offset — ordered by position, not by timestamp.
The part that actually shows up in senior and staff interviewsThis is the section that’s easy to skip when you’re first learning Kafka, and the section that gets asked about the moment you’re past mid-level.
Scale, roughly speakingOne broker on decent hardware holds around 1TB and can push something like a million messages a second. That number is doing a lot of hand waving, since it depends heavily on message size and hardware, but it’s a reasonable anchor to reason from.
A couple of hard rules that come up fast in practice:
- Keep individual messages under 1MB.
- Never put a video file or a big blob directly into Kafka. Drop it in S3, and put the S3 pointer in the message instead.
Kafka is a log, not a filesystem. Treat it like one.
Scaling is mostly about partitioning, not brokersAdding brokers only helps if your topics already have enough partitions to spread across them. This is where an interview answer should live: not “we’ll add more brokers,” but “here’s how I’m choosing the partition key.”
Hot partitions will get asked about, guaranteedThe classic setup: you’re aggregating ad clicks, partitioned by ad ID, and a celebrity ad drops. One partition melts while the rest sit idle.
There are four moves here, and a good answer picks the right one for the situation instead of reciting all four:
- Salt the key — append a random suffix (or a hash of something high-cardinality) to spread one hot key across multiple partitions.
- Repartition with a better key — if one dimension is naturally skewed, partition on something more evenly distributed instead.
- Over-partition upfront — provision more partitions than you think you need, so a spike has somewhere to spread to.
- Isolate the hot key — give known hot entities (a celebrity account, a major ad campaign) their own dedicated partition or topic, so they don’t drag down everyone else’s throughput.
Worth internalizing: Kafka is always available, sometimes consistent.
If an interviewer asks “what happens when Kafka goes down,” that’s honestly not a very realistic question, and it’s fine to push back on it gently. What’s actually realistic is a consumer dying.
When that happens:
- Its partitions get rebalanced across the surviving consumers.
- On restart, it picks up from its last committed offset.
The catch: don’t commit that offset until the real side effect (writing to blob storage, whatever it is) is actually durable, or you’ll lose work on a crash.
Retries are only half built in- Producers get automatic retries. Pair that with idempotent producer mode so retries don’t create duplicates.
- Consumers get nothing out of the box. SQS gives you this for free, Kafka doesn’t. You build it yourself: a retry topic, a dedicated consumer for it, and a dead letter queue for anything that fails too many times.
This is actually why some designs pick SQS over Kafka outright, just to skip building this by hand.
Performance tuning starts and ends with the partition keyBatching messages and compressing them (GZIP, Snappy, LZ4) both help, but neither moves the needle as a good key does. If you only have time to talk about one lever in an interview, make it this one.
Retention is just a dialDefault is 7 days, controlled by retention.ms or retention.bytes. Need longer history for a design? Turn the dial up, and be ready to talk about the storage cost that comes with it.
The one-sentence version, one more timeIf you remember nothing else: producers write to topics, topics are made of ordered append-only partitions spread across brokers, consumers pull from them, and almost every interesting design decision in the system comes down to how you pick your partition key. Everything above is really just detail on that one idea.
I used to think the interview-ready version of Kafka was knowing the vocabulary. It’s not. It’s being able to say “here’s how I’d pick the key” without blinking, and being honest that Kafka going down is a less interesting question than a consumer dying mid-batch.
Kafka is always available, sometimes consistent. Design accordingly!
♦I Said “We’d Use Kafka” in a Dozen Interviews Before I Actually Understood It was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.
Code Like a Girl
How to Become an AI Engineer in 2026: The Complete Learning Roadmap
♦
Whether you’re starting from scratch or transitioning from software engineering, here’s a structured roadmap to learn the skills companies…
Continue reading on Code Like A Girl »
Code Like a Girl
Structured Outputs with LLMs: JSON Mode, Function Calling, and When to Use Each
♦
Getting reliable, readable responses out of your LLM and knowing which tool to reach for
Continue reading on Code Like A Girl »
Code Like a Girl
How to Think Beyond Today’s Deadlines
♦
When daily chaos pulls all your focus, you may fail to think strategically and act in ways that aligns your long-term goals with…
Continue reading on Code Like A Girl »