WRDashboard

Fork Me on Gitlab

Articles

Kitchener Panthers

Panthers-Jackfish postponed due to field conditions

KITCHENER - Another day, another postponed game.

The Kitchener Panthers and Welland Jackfish game at Jack Couch Park Sunday has been postponed due to field conditions, brought about from Saturday's rain.

A makeup date has yet to be announced.

Kitchener is back in action Tuesday in Barrie, before hosting London on Thursday at 7:05 p.m.

GET YOUR TICKETS NOW and #PackTheJack!


Elmira Advocate

WORKING FOR ORGANIZED CRIME

 

There's an old joke about a young boy telling his father that when he grows up he wants to work in organized crime. His father pauses then asks: "Government or private?" In my opinion it's not that the system per se is totally past redemption it's that just like private industry it's not necessarily the cream that rises to the top. Too often its' the yes men, the loyalists, the cronys and the good old boys who rise . Those already at the top will talk about the intangibles, the willingness to follow all orders no matter how bizarre, the blind loyalty to either the company or the face of the company. 

There is also an old joke about the head of the company talking to an upcoming executive regarding promotion possibilities.  "We need a man of vision, a man of action, a man capable of surreptitiously disposing of 2,000 barrels of alleged toxic waste."  

In other words loyalty first, second and third with knowledge and experience coming in a strong fourth and fifth. That is the route to the top in both private industry and in government. 

Our local legal system has impressed me twice within the last few days. Could it be an advanced right wing conspiracy solely for he purpose of undermining my opinions and positions? Not likely in this dimension or on this particular planet. I have recently spoken here about the corruption within our local Justice System with a focus on that idiot Justice Craig Parry versus any idiot who is a doctor and their name ryhmes with Cola . Notice just like the K-W Record who now have unnamed reporters (i.e. "Record Staff") writing about this case since the obviously guilty or innocent accused (you choose) was recently acquitted of all criminal charges thus opening the door to civil lawsuits for Libel against any folks who might have prejudged his guilt and  directly or indirectly said so. Well I too am covering my (m)ass by now referring to him as Cola not @*ola. 

Back to my point. I puke at that "decision" by Justice Parry and I applaud the homeless people at the tent encampment at Weber and Victoria St. and Judge Gibson who has given them literally a small, tiny place to hang their hats. Obviously a community of this size can and should do better for our homeless who through layoffs, firings, mental health issues, drug addictions, ridiculous housing costs and so much more are trying to live without even the bare minimum of a roof overhead to keep off the rain and snow.  It behooves me to again say that corruption may be the norm but there are still many within the system who try and who care. 

P.S. The other recent positive impression I've received from the Justice System is their darn quick announcement that they are appealing the Dr. Sloka case to the Ontario Court of Appeal.




James Davis Nicoll

Forward Into The Past / Spring 1980 Destinies (Destinies, volume 7) Edited by Jim Baen

The Spring 1980 Destinies was the second issue in the second volume of the Jim Baen edited Destinies science fiction bookazine, which made it the seventh issue overall.

It has been forty-six years since I first read this issue. On rereading, I discovered that I had forgotten much of the contents. I did remember a novella by Christensen and essays by Spinrad and Sheffield (the Sheffield wasn’t featured on the cover) — but I did remember reading this on a bus, on my way back to New Hamburg1.


Code Like a Girl

Why Auto-Increment Is Slowly Killing Your Database (And What Smart Developers Use Instead in 2026)

Every developer has written this line at some point:

id INT AUTO_INCREMENT PRIMARY KEY

It looks clean. It feels logical. It works perfectly on your laptop. But in 2026, as systems scale, distribute, and expose APIs to the public, this simple line is quietly introducing bugs, security holes, and performance problems that can take down entire production systems.

This article is your complete guide to understanding auto-increment: what it is, why it was loved, where it breaks, and what the best developers are using instead today.

What Is Auto-Increment? (The Simple Explanation)

Imagine you go to the bank. Every person who walks in gets a token number: 1, 2, 3, 4, and so on. The counter on the wall does this automatically. Nobody has to keep track. Nobody can give the same number twice.

Auto-increment in databases works exactly the same way.

When you insert a new row into a table, the database automatically assigns the next available number as the ID. You do not have to think about it. The database handles it.

Here is what it looks like in SQL:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);

-- Insert a user without specifying id
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
-- The database automatically assigns id = 1, then id = 2
SELECT * FROM users;

Output:

+----+-------+-------------------+
| id | name | email |
+----+-------+-------------------+
| 1 | Alice | alice@example.com |
| 2 | Bob | bob@example.com |
+----+-------+-------------------+

Simple, clean, and readable. This is why developers loved it for decades.

Different databases have slightly different syntax for the same idea:

MySQL / MariaDB:

id INT AUTO_INCREMENT PRIMARY KEY

PostgreSQL:

id SERIAL PRIMARY KEY
-- or the modern way:
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY

SQLite:

id INTEGER PRIMARY KEY AUTOINCREMENT

SQL Server:

id INT IDENTITY(1,1) PRIMARY KEY

All of these do the same thing: they count up automatically.

Why Did Developers Love Auto-Increment?

To be fair, auto-increment solved a real problem. Before it existed, developers had to write code to figure out the last ID, add one, and hope nobody else inserted a row in the same millisecond. That was risky and messy.

Auto-increment gave us:

Simplicity. One keyword and the database handles the entire ID generation process.

Speed. Sequential integers are tiny in memory (8 bytes for a BIGINT). Databases store primary keys in a B-Tree index, and sequential inserts are extremely fast because each new record goes right at the end of the tree.

Readability. When a bug report says “error on order ID 4521,” you can immediately look that up. Nobody can read a UUID in a bug report.

Joins are fast. Integer comparisons are among the fastest operations in any database engine.

For small applications on a single server, auto-increment is still perfectly reasonable. A personal blog, a small internal tool, a startup MVP — for these, auto-increment does the job.

The problems begin the moment your system grows beyond a single server or exposes IDs to the outside world.

The Problems With Auto-Increment (The Part Nobody Talks About)Problem 1: It Leaks Business Intelligence to Anyone Watching

This is the most immediately dangerous issue and the easiest to overlook.

When your API returns a URL like this:

yourapp.com/api/orders/1042

You have just told the entire internet several things:

  • This order system has at least 1,042 orders.
  • If someone checks /orders/1041, they will likely find another real order.
  • If the API has any access control bug, someone can enumerate every order in your system by simply incrementing the number.

This attack is called IDOR — Insecure Direct Object Reference. It is consistently ranked in the OWASP Top 10 most critical web application security risks.

A real-world example of the risk:

import requests

# An attacker simply loops through IDs
for order_id in range(1, 10000):
response = requests.get(f"yourapp.com/api/orders/{order_id}")
if response.status_code == 200:
print(f"Found order: {response.json()}")

If your authorization logic has even a single bug, this loop harvests your entire customer database. With auto-increment, the attacker does not need to guess anything. The IDs are perfectly predictable.

Problem 2: It Falls Apart in Distributed Systems

This is the scalability problem that silently kills growing applications.

Modern applications rarely live on one server. You might have:

  • Multiple application servers writing to the database
  • A primary database with several read replicas
  • Microservices, each with their own database
  • Database sharding (splitting one large table across multiple servers)

Auto-increment assumes there is one central counter. The moment you have more than one server writing to the same table, that assumption breaks.

Here is a concrete example. Imagine you have two database shards handling users:

Shard A starts at 1: users with id 1, 2, 3, 4...
Shard B starts at 1: users with id 1, 2, 3, 4...

Now you have two users both with id = 1. If you ever try to merge, report across, or migrate between these shards, you have a collision disaster.

MySQL tries to handle this with a step setting:

-- Server 1 generates: 1, 3, 5, 7 (odd numbers)
SET @@auto_increment_increment = 2;
SET @@auto_increment_offset = 1;

-- Server 2 generates: 2, 4, 6, 8 (even numbers)
SET @@auto_increment_increment = 2;
SET @@auto_increment_offset = 2;

This works, but it is fragile. You must decide in advance how many servers you will ever have. Add a third server and you have to reconfigure everything.

Problem 3: The Integer Overflow Cliff

This one sounds unlikely until it happens to you, and when it happens, it is a production emergency. A standard INT in MySQL holds a maximum value of 2,147,483,647. That is about 2.1 billion rows. Sounds like plenty, right?

Consider a high-traffic event table logging every user action. At 10,000 inserts per second, you hit that limit in about 2.5 days. When the counter hits the maximum, the database throws an error on every single insert. Your application goes down. Here is what the error looks like:

ERROR 1062 (23000): Duplicate entry '2147483647' for key 'PRIMARY'

The fixes are painful:

-- Emergency fix: alter to BIGINT
-- WARNING: This locks the table and can take hours for large tables
ALTER TABLE events MODIFY COLUMN id BIGINT AUTO_INCREMENT;

-- Better: use BIGINT from the very start
CREATE TABLE events (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
event_type VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

A BIGINT holds up to 9.2 quintillion rows — far more headroom. But the deeper lesson is: you should not be relying on a counter whose limits you have to actively worry about.

Problem 4: Gaps in the Sequence Confuse Developers

Auto-increment IDs are not always perfectly sequential in practice. Gaps appear regularly due to:

  • Rolled-back transactions (the ID was consumed but the row was never committed)
  • Deleted rows
  • Failed inserts
-- Insert a user inside a transaction that gets rolled back
BEGIN;
INSERT INTO users (name, email) VALUES ('Ghost User', 'ghost@example.com');
-- This consumed id = 5
ROLLBACK;

-- Next insert gets id = 6, not 5
INSERT INTO users (name, email) VALUES ('Real User', 'real@example.com');
-- id = 6, not 5
SELECT * FROM users WHERE id = 5;
-- Empty result set -- id 5 is gone forever

Gaps are technically fine. The database does not care. But developers sometimes write code that assumes IDs are consecutive, which introduces subtle, hard-to-trace bugs.

Problem 5: You Cannot Generate the ID Before the Insert

With auto-increment, you cannot know what ID a record will have until after you insert it. This sounds minor but creates real headaches in complex workflows.

// With auto-increment in PHP/Laravel, you must insert first, then get the ID
$user = User::create(['name' => 'Alice', 'email' => 'alice@example.com']);
$userId = $user->id; // Only known AFTER the insert

// Now you need to use this ID in related tables
$profile = Profile::create(['user_id' => $userId, 'bio' => 'Hello world']);
// What if the Profile insert fails after the User was created?
// You now have an orphaned User record with no Profile

This creates awkward two-step logic and makes it harder to prepare related records in advance or insert them as a single atomic batch.

What Are Developers Using Instead in 2026?

The industry has largely converged on a few strong alternatives, each suited for different situations.

Option 1: UUID (Universally Unique Identifier)

A UUID is a 128-bit random identifier that looks like this:

550e8400-e29b-41d4-a716-446655440000

The key property: it is generated by your application code, not the database. This means you know the ID before you insert the row.

// PHP: using Laravel with UUID
use Illuminate\Support\Str;

// Generate the ID in your application code - before touching the database
$userId = Str::uuid()->toString();
// "550e8400-e29b-41d4-a716-446655440000"
// Prepare everything upfront
$userData = ['id' => $userId, 'name' => 'Alice', 'email' => 'alice@example.com'];
$profileData = ['user_id' => $userId, 'bio' => 'Hello world'];
// Insert both atomically - no two-step awkwardness
DB::transaction(function () use ($userData, $profileData) {
User::create($userData);
Profile::create($profileData);
});

In your database migration:

// Laravel migration with UUID primary key
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});

UUIDs are globally unique, unpredictable, and work perfectly in distributed systems. The problem is that random UUIDs are bad for database performance. Because they are random, each new insert goes into a random position in the B-Tree index, causing “page splits” — expensive operations that fragment the index over time.

Option 2: UUIDv7 — The 2026 Standard

UUIDv7 was finalized as an RFC standard in 2024 and has become the default recommendation for new projects in 2026. It solves the core weakness of random UUIDs by embedding a millisecond timestamp at the beginning.

01927a3e-4b2c-7xxx-xxxx-xxxxxxxxxxxx
^^^^^^^^^^^^^^^^
Timestamp prefix (milliseconds since Unix epoch) — always increasing

Because the timestamp prefix is always increasing, new UUIDv7 values sort to the end of the B-Tree just like auto-increment integers would — but they are also globally unique and do not expose your record counts to the outside world.

// PHP: using ramsey/uuid ^4.7
use Ramsey\Uuid\Uuid;

$id = Uuid::uuid7()->toString();
// "01927a3e-4b2c-7d3e-8f1a-2b3c4d5e6f70"
// The first segment is a timestamp - new inserts always go to the end of the index
// Node.js: using uuid package v10+
import { v7 as uuidv7 } from 'uuid';

const id = uuidv7();
// "01927a3e-4b2c-7d3e-8f1a-2b3c4d5e6f70"
# Python 3.12+ has uuid7 built-in
import uuid

id = str(uuid.uuid7())
# "01927a3e-4b2c-7d3e-8f1a-2b3c4d5e6f70"

UUIDv7 gives you:

  • Globally unique IDs that work across any number of servers
  • Sequential ordering (excellent B-Tree index performance — close to auto-increment)
  • Embedded timestamp (you can tell when a record was created from the ID alone)
  • Unpredictable to outsiders (no IDOR risk)
Option 3: ULID (Universally Unique Lexicographically Sortable Identifier)

ULIDs are similar to UUIDv7 in concept but use a more compact, URL-friendly format:

01ARZ3NDEKTSV4RRFFQ69G5FAV

The first 10 characters encode a millisecond timestamp. The remaining 16 characters are random. ULIDs are always sortable, always unique, and look far cleaner in URLs than UUIDs with their hyphens.

// Node.js
import { ulid } from 'ulid';

const id = ulid();
// "01ARZ3NDEKTSV4RRFFQ69G5FAV"
# Python
from ulid import ULID

id = str(ULID())
# "01ARZ3NDEKTSV4RRFFQ69G5FAV"
Option 4: Snowflake IDs (For High-Throughput Distributed Systems)

Invented by Twitter/X for handling millions of tweets per second, Snowflake IDs are 64-bit integers that encode a timestamp, a machine ID, and a sequence number. They are sortable, compact (8 bytes — same size as a BIGINT), and can be generated by any machine independently without coordination.

Bit layout of a 64-bit Snowflake ID:
+--------------------------------------------------+
| 1 sign | 41 timestamp | 10 machine ID | 12 seq |
+--------------------------------------------------+
// Java: simplified Snowflake ID generator
public class SnowflakeIdGenerator {

private static final long EPOCH = 1420070400000L; // Jan 1, 2015
private static final long MACHINE_BITS = 10L;
private static final long SEQUENCE_BITS = 12L;
private final long machineId;
private long sequence = 0L;
private long lastTimestamp = -1L;
public SnowflakeIdGenerator(long machineId) {
this.machineId = machineId;
}
public synchronized long nextId() {
long timestamp = System.currentTimeMillis() - EPOCH;
if (timestamp == lastTimestamp) {
sequence = (sequence + 1) & 4095L; // max 4096 IDs per millisecond
} else {
sequence = 0L;
}
lastTimestamp = timestamp;
return (timestamp << 22) | (machineId << 12) | sequence;
}
}

Snowflake IDs are the foundation for ID generation at Discord, Twitter, Instagram, and Mastodon. If you need millions of IDs per second, this is the architecture to reach for.

Practical Decision Guide: What Should You Use Today?

Use auto-increment if you are building a small internal tool, a prototype, or an application that will only ever run on a single database server and where IDs are never exposed in URLs or public APIs.

Use UUIDv7 if you are building anything that might scale, anything with a public API, or anything distributed. It is the most balanced, well-supported choice for general-purpose applications in 2026.

Use ULID if you want cleaner, more readable IDs in URLs and logs, and you prefer a more compact format than the standard hyphenated UUID notation.

Use Snowflake if you are building a system that needs to generate millions of IDs per second across many machines — a social platform, a logging pipeline, or a real-time messaging service.

How to Migrate Away From Auto-Increment (Without Breaking Production)

If you already have a production system using auto-increment, you do not have to change everything at once. The safest approach is the “dual key” strategy.

-- Step 1: Add a new UUID column alongside the existing integer ID
ALTER TABLE users ADD COLUMN public_id CHAR(36) NOT NULL DEFAULT '';

-- Step 2: Backfill existing rows with unique UUIDs
UPDATE users SET public_id = UUID();
-- Step 3: Add a unique index on the new column
ALTER TABLE users ADD UNIQUE INDEX idx_users_public_id (public_id);
-- Step 4: In your application, switch all external-facing references to public_id
-- URLs, API responses, and inter-service calls all use public_id
-- Internal database JOINs still use the integer id (they remain fast)
// Laravel: override the route key to use public_id for all URL lookups
// In your User model:
class User extends Model
{
/**
* Use public_id for route model binding instead of the integer primary key.
* This keeps the integer id internal and exposes only the UUID externally.
*/
public function getRouteKeyName(): string
{
return 'public_id';
}
}
// Now /api/users/550e8400-e29b-41d4-a716-446655440000 works automatically
// The integer id is never exposed in any URL

This pattern lets you migrate incrementally: new records get proper UUIDs, old records get backfilled, and your database joins remain fast throughout.

The Verdict

Auto-increment was a brilliant solution for a simpler era of software. For single-server applications with no public API, it is still perfectly fine. There is no need to over-engineer a hobby project.

But for anything that needs to scale, anything that exposes IDs in URLs or API responses, or anything built on microservices or distributed databases, auto-increment introduces real security and scalability risks that are entirely avoidable today.

The good news is that better alternatives — UUIDv7 in particular — are now well-supported across every major database, every major language, and every major framework. The migration path is clear, incremental, and battle-tested.

The most important thing you can do today is stop treating your primary key as an afterthought and start treating it as an architectural decision. In 2026, it very much is one.

Why Auto-Increment Is Slowly Killing Your Database (And What Smart Developers Use Instead in 2026) was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


Kitchener Panthers

Road game in Barrie postponed to Tuesday

KITCHENER - For the first time this season, Mother Nature had other plans rather than Kitchener Panthers baseball.

Today's Kitchener Panthers road game against Barrie, much like every other game in the CBL Saturday, has been postponed due to the weather.

The Panthers-Baycats matchup has been rescheduled to Tuesday, May 26 at 7:35 p.m. in Barrie.

The Panthers (3-1) are back in action Sunday at home against the Welland Jackfish (2-1). 

First pitch is scheduled for 2:05 p.m.

GET YOUR TICKETS NOW and #PackTheJack for a 2025 first-round playoff rematch!


Github: Brent Litner

brentlintner starred android/skills

♦ brentlintner starred android/skills · May 22, 2026 20:40 android/skills

5.3k Updated May 21


Github: Brent Litner

brentlintner starred homeassistant-ai/ha-mcp

♦ brentlintner starred homeassistant-ai/ha-mcp · May 22, 2026 20:00 homeassistant-ai/ha-mcp

The Unofficial and Awesome Home Assistant MCP Server

Python 3.1k Updated May 24


Code Like a Girl

Love vs Hate: Capturing Emotions from Words

A quick guide to sentiment analysis and NLP♦Photo by Luke Chesser on Unsplash

Currently, large language models are at the forefront of natural language processing.

There was a time when simple things like sentiment analysis amazed people.

I thought it would be a nice time to revisit some old yet interesting concepts that are still relevant in the LLM-dominated era.

Natural language processing

Or let's call it NLP, for short. It is a branch of artificial intelligence that helps computers understand human language (like English, French).

Simply put, NLP teaches machines how we communicate.

Every time you:

  • ask Siri a question,
  • translate text using Google Translate,
  • use autocomplete while typing,
  • or chat with an AI assistant,

you are interacting with NLP systems in background.

But before the GPT, Claude and all the AI agents, NLP existed in different forms. Even in those simpler times, NLP was fascinating.

One of the most interesting applications of NLP was understanding emotions through text, or sentiment analysis.

Sentiment analysis♦Photo by Claudio Schwarz on Unsplash

This is simply teaching emotion to machines. Sentiment analysis determines if a piece of text is happy, sad, or neutral.

A basic sentiment analysis is classifying a text, tweet, or a phrase into:

  1. Positive sentiment
  2. Negative sentiment
  3. Neutral sentiment

For us humans, this sounds trivial or even silly.

If someone says:

“This movie was absolutely amazing!”

We instantly recognize it as positive.

If someone writes:

“Worst customer service ever.”

We understand the frustration behind the words.

But for machines, language is not emotional. They cannot feel (yet).

It is a bunch of numbers, a sequence of tokens, patterns, and probabilities.

The challenge of sentiment analysis is in converting messy human language into structured information that algorithms can understand.

This is another way of saying “we’re gonna be doing a multi-class classification task.”

Why Was Sentiment Analysis Important?

Before Gen AI exploded in popularity, sentiment analysis was one of the most valuable NLP tasks.

Many companies wanted to know:

  • What customers thought about their products
  • Whether social media reactions were positive or negative
  • How people reacted to political campaigns
  • Whether reviews indicated customer satisfaction

Platforms like Twitter (now X) became goldmines of public opinion.

For brands, it was easier to do sentiment analysis than conduct expensive surveys to understand user emotions on their products.

The Traditional Approach

Long ago, sentiment analysis just used word matching.

The model had a list of positive and negative words. If a sentence contained more positive words, it was classified as positive.

Seems simple, yuh?

But language is complex. We have slang, jokes, and a whole lot of things going on, which is not so straightforward.

Look at this sentence:

“The movie was so bad that it became good.”

Or:

“I expected this phone to be terrible, but it was surprisingly decent.”

They have negative words, but the overall meaning is positive.

This is where, my friend, context becomes important.

NLP and Machine Learning

Machine learning models crunch data: not textual data but numerical data.

But NLP is text, how can we train a machine learning model and understand the context of text?

We do it by converting text into numbers. This is done using:

  • Bag of Words (BoW)
  • TF-IDF (Term Frequency Inverse Document Frequency)

At the time, these techniques were revolutionary.

These techniques worked surprisingly well. It was state-of-the-art then.

NLP and Deep Learning♦Ref: Attention is all you need

Traditional ML was good with NLP, but we wanted better things. That's when deep learning came in. It was a game-changer.

Models like:

  • RNNs (Recurrent Neural Networks)
  • LSTMs
  • GRUs

were extremely capable of understanding sequences and context much better than traditional machine learning models.

Another game changer was Transformers. The holy grail of LLMs is the paper titled Attention Is All You Need. Good old days when Bert was state-of-the-art.

Today, models such as:

  • OpenAI’s GPT,
  • Google’s Gemini,
  • and Claude’s sonnet models

can understand sarcasm, context, tone, and even subtle emotional nuances far better than older systems. They sometimes talk better than humans ;)

Ironically, many modern AI systems still rely on the foundational idea introduced by early NLP tasks such as sentiment analysis.

Is Sentiment Analysis dead, bro?

Nuh uh, not yet!

Even in the age of LLMs, sentiment analysis is important as it is fast, computationally cheaper, easier to deploy, and highly effective for specific tasks.

If you are a company and want any of the following things:

  • customer feedback analysis
  • brand monitoring
  • recommendation systems
  • market research
  • social media analytics

You would want to use sentiment analysis.

Our Language Is Messy

Life isn't fun if things are simple and straightforward. Our sarcasm, slang, cultural references, irony, and humor confuse the heck out of these NLP algorithms.

Look at this sentence:

“Great. Another Monday morning meeting.”

The machine might think it is a positive sentiment. I would tell you that it is, in fact, not. I could smell the sarcasm miles away.

We humans understand tone naturally.

Machines struggle.

Even today, despite massive advances in AI, language understanding is far from solved. Last year, GPT could not count the number of R’s in the word strawberry (OpenAI had to hardcode the correct answer into the model as it was “super dumb”).

Final Thoughts

In this modern AI era, sentiment analysis seems like a thing of the past. Maybe it is like comparing a new Tesla with a vintage car.

Sentiment analysis is one of the earliest attempts to teach machines our language. It was beautiful.

And perhaps that is what makes it so fascinating. Before AI learned to speak, it first tried to learn how we feel ;)

I have more such stories in my upcoming articles. Follow me and stay tuned!

And as always, thanks for reading. And have a nice day!

Want to connect on LinkedIn or GitHub?

Love vs Hate: Capturing Emotions from Words was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.

Eyedro

Eyedro vs EnergyCAP: Which Energy Management Platform Covers Your Needs?

Eyedro vs EnergyCAP comes down to one question: do you need real-time, device-level monitoring or enterprise-wide utility bill management? Eyedro delivers live data from submeters, solar arrays, and EV chargers. EnergyCAP centralizes and audits bills across large portfolios. The right pick reshapes how quickly you can see and act on energy use.

Table of Contents

  • Eyedro vs EnergyCAP: The Key Difference
  • How We Compare Energy Management Platforms
  • Eyedro vs EnergyCAP: Side-by-Side Feature Comparison
  • Eyedro vs EnergyCAP: Which Should You Choose?
  • Common Mistakes When Choosing an Energy Management Platform
  • Why Eyedro Stands Out for Real-Time Energy Monitoring
  • How Real-Time Data Transforms Energy Management
  • The Role of Hardware in Energy Monitoring
  • Frequently Asked Questions
Eyedro vs EnergyCAP: The Key Difference

The two platforms approach energy data from opposite ends. Eyedro starts at the circuit level with wireless submeters and three-phase energy meters. It sends that data to the MyEyedro Cloud, where MyEyedro Pro turns it into a command center view. If you want the underlying idea, our explainer on real-time electricity monitoring walks through it.

EnergyCAP starts with the utility bill. It ingests bill data, flags errors, and centralizes reporting across properties. It also offers Watts AI for quick data insights and a Carbon Hub for emissions tracking.

One platform gives you granular, real-time operational data. The other gives you portfolio-wide financial oversight. Both have value. They simply solve different problems.

Hardware is the other dividing line. Eyedro includes physical monitoring equipment. EnergyCAP is software focused on bill management, though it connects to some third-party systems.

Businesses that need to track specific equipment, allocate energy costs per tenant, or monitor solar and EV production lean toward Eyedro. Organizations juggling hundreds of bills across many sites find EnergyCAP more natural.

How We Compare Energy Management Platforms

Five criteria matter most when you choose an energy management platform.

Real-time monitoring capabilities

Can you see energy use as it happens? Eyedro refreshes data every few seconds through the MyEyedro Cloud. EnergyCAP works from bills, which arrive monthly or quarterly. When you need instant feedback to change behavior, that gap is large. The framework behind ISO 50001 energy management leans on exactly this kind of continuous measurement.

Hardware and submetering integration

Does the platform support physical sensors? Eyedro ships wireless submeters for electricity, water, and gas, and it tracks solar production and EV charging. EnergyCAP includes no hardware. It relies on existing meters and bill data.

Reporting and analytics depth

Eyedro offers fiscal and usage benchmarking, multi-tiered financial forecasting, and automated alerts. EnergyCAP provides BI-style reporting, utility bill audits, and emissions tracking through its Carbon Hub. The depth is comparable. The focus is not.

Target audience and scalability

Eyedro scales from a single home to a multi-tenant commercial building. EnergyCAP targets large enterprises with many utility accounts.

Ease of deployment

Eyedro asks you to install submeters and connect to the cloud. EnergyCAP asks you to upload bills and link utility data feeds. The setup curves differ in kind, not just degree.

These criteria help you judge which platform fits your operation.

Eyedro vs EnergyCAP: Side-by-Side Feature Comparison FeatureEyedroEnergyCAPReal-time monitoringYes, high-resolution analytics from submeters and metersNo, based on periodic bill dataUtility bill auditingNo, focuses on live dataYes, built-in bill auditing and error detectionHardware and submeteringYes, wireless submeters for electricity, water, gas; three-phase meterNo, no hardware providedSolar monitoringYesNot specifiedEV charging monitoringYesNot specifiedCarbon and ESG toolsVia benchmarking and forecasting reportsYes, Carbon Hub for emissions trackingReporting and analyticsFiscal/usage benchmarking, multi-tiered forecasting, automated alertsBI reporting, Watts AI insightsTarget marketHomeowners, small-to-medium businesses, multi-tenant commercialLarge enterprises, public sector, utility portfoliosEase of setupRequires installation of hardware and cloud connectionUpload bills, connect utility data feeds

Sources: Eyedro product facts, EnergyCAP product page.

This table shows how rarely Eyedro and EnergyCAP land in the same row. One is strong where the other is absent.

Eyedro vs EnergyCAP: Which Should You Choose?

Your primary energy management goal decides this.

Choose Eyedro if you need real-time device-level data

If you run a commercial building and want to see which circuit, machine, or floor is drawing power right now, Eyedro gives you that view. It suits multi-tenant billing where costs follow actual sub-metered use. Solar owners and EV station operators get dedicated monitoring, and our solar energy monitor overview shows how generation and consumption sit side by side. Homes and small businesses run on the same platform through the MyEyedro Cloud.

Choose EnergyCAP if you manage a large bill portfolio

If you process hundreds of utility bills each month and need to catch billing errors, centralize data, and report on ESG metrics, EnergyCAP fits that workflow. Its Carbon Hub tracks emissions, which maps to the federal reporting expectations the U.S. Environmental Protection Agency sets out. EnergyCAP also offers Bill Capture Services, a separate service level that handles bill payment on your behalf.

Our take

If you operate a building where real-time insight drives immediate action, start with Eyedro. If you oversee a large property portfolio and need bill oversight and carbon compliance first, evaluate EnergyCAP. To see live data in a facility, explore Eyedro’s energy monitoring solutions and contact the team for details. To review bill audit workflows, request a demo from EnergyCAP.

Common Mistakes When Choosing an Energy Management Platform Buying bill management when you need operational data

Many buyers pick a platform on bill auditing alone. Later they realize they cannot see why a specific circuit spiked last Tuesday. Without real-time data, diagnosing equipment failures or changing behavior mid-cycle becomes guesswork.

Overlooking hardware compatibility

Some energy software assumes meters already exist. If your building lacks sub-metering, a software-only platform has no circuit-level data to analyze. Eyedro includes the hardware, which simplifies deployment when you start from scratch.

Assuming one platform fits home and commercial equally

Most tools specialize. EnergyCAP targets the enterprise. Eyedro serves homes and commercial sites, yet its commercial strengths, multi-tenant billing, EV monitoring, and three-phase metering, are where it stands apart. Decide what matters to your operation before you compare features.

Why Eyedro Stands Out for Real-Time Energy Monitoring

Eyedro was built to turn complex utility data into actionable savings. The platform pairs hardware and software in one ecosystem.

High-resolution real-time analytics

Wireless submeters capture electricity usage every few seconds. The MyEyedro Cloud processes that data and presents it in a customizable command center, so facility managers see changes the moment they happen.

Multi-tiered financial forecasting

Eyedro predicts energy costs from current usage patterns. Budgets get more accurate, and month-end surprises shrink.

Fiscal and usage benchmarking

Compare a building’s performance to its own history or to baselines. The view shows where you improve and where you slip.

Submetering for electricity, water, and natural gas

The hardware supports all three utilities, so you can allocate costs per tenant, per department, or per machine without guesswork.

EV charging and solar monitoring

Track solar production and EV charger consumption alongside every other load for a complete picture of your energy ecosystem, an integrated approach echoed by research from the National Renewable Energy Laboratory.

Automated alerts and professional reports

Set thresholds for demand or cost, and Eyedro alerts you when you cross them. You can read more in our guide to advanced alerts, then generate reports for stakeholders or compliance. The MyEyedro Pro license unlocks the advanced features commercial users rely on.

How Real-Time Data Transforms Energy Management

Real-time data changes how you respond to energy use. Monthly bills tell you about a problem weeks later. Live data tells you now.

Detect anomalies early

A sudden jump in a motor’s draw can signal mechanical failure. Real-time alerts let you act before production stops, a pattern we documented in a machine utilization case study.

Optimize demand

Many utilities bill on peak demand. With live visibility, you can stagger equipment startup and avoid the short spikes that raise your rate. Guidance from ENERGY STAR treats demand management as a core efficiency lever.

Support tenant billing

Submetered tenants expect accurate invoices. Real-time data bills actual consumption, not estimates, which cuts disputes and builds trust.

Validate energy projects

After a solar install or an HVAC upgrade, you need proof the savings are real. Eyedro shows pre- and post-implementation data side by side, as one commercial energy savings case study illustrates.

Continuous monitoring is widely recognized by energy authorities, including the U.S. Department of Energy, as a low-cost path to efficiency. The shift from monthly review to daily practice is where much of that value lives.

The Role of Hardware in Energy Monitoring

Hardware is easy to overlook during platform selection. Many assume software solves everything. If a building lacks the right sensors, though, the software has nothing to analyze.

Why hardware matters

You cannot manage what you do not measure. A platform that reads only utility bills misses what happens inside a facility between meters. Hardware closes that gap.

Eyedro hardware ecosystem

Eyedro provides wireless submeters that clamp onto individual circuits. They work on single-phase and three-phase systems up to 600V and 3000A, and the data travels to the MyEyedro Cloud over your internet connection. Homes use Eyedro Home Energy Monitors for circuit-by-circuit visibility. Commercial buildings use three-phase meters for larger loads.

Comparison to competitors

EnergyCAP does not sell hardware. It works with existing meters and bill data, which is fine if sub-metering is already in place. If it is not, you buy and integrate meters separately.

Integration with solar and EV

Eyedro hardware connects to solar inverters and EV chargers, so production and consumption appear in one dashboard. That is harder to achieve with a software-only platform.

Hardware is not the flashiest part of energy management. Without it, you work with estimates rather than facts.

Frequently Asked Questions How does Eyedro work?

Eyedro uses wireless sub-meters and three-phase energy meters that clamp onto your circuits, then streams that data to the MyEyedro Cloud. There, MyEyedro Pro analyzes usage, generates reports, and sends alerts. It works for both homes and commercial buildings.

Is Eyedro a good EnergyCAP alternative?

For teams that need real-time, device-level data and hardware-based submetering, yes. EnergyCAP centers on utility bill auditing and portfolio reporting, so the better choice depends on whether your priority is operational visibility or bill management.

What should I look for in energy management software?

Match the tool to your core need. Weigh real-time monitoring depth, hardware and submetering support, reporting and ESG features, target-market fit, and how much effort deployment takes.

Does EnergyCAP include hardware or submetering?

No. EnergyCAP is software focused on utility bill auditing, BI reporting, its Carbon Hub, and Watts AI. It relies on existing meters and bill data rather than supplying sensors.


Code Like a Girl

Strengthen the Workplace for All

Better allyship starts here. Each week, Karen Catlin shares five simple actions to create a workplace where everyone can thrive.♦1. Strengthen the workplace for all

Last week, I attended a webinar jointly hosted by Catalyst and the Meltzer Center at New York University. They covered some of the key points from their joint report A New Path to Inclusion: How to Overcome Legal and Cultural Constraints on Building Fair Workplaces.

One heart-warming finding is that, contrary to the popular narrative that DEI is “dead,” they found widespread support for inclusion efforts, strong ongoing commitment to advancing fairness and inclusion, and enduring business benefits from pursuing this work.

They also identified that 50% of survey respondents want to emphasize how a diverse and inclusive workplace benefits everyone. As a result, the study authors recommend focusing on where bias and structural barriers limit employees’ performance and addressing those barriers in ways that strengthen outcomes for all.

Keep reading for examples of actions you can take to create change that benefits everyone.

Share on Instagram, LinkedIn, or YouTube.

This week’s Better Allies content is sponsored by:

As our industry evolves, Femgineer is here to help you stand out as a technical leader who can communicate and influence — not just build. We do that through coaching, courses, and content. Visit femgineer.com and subscribe to our newsletter to learn more!

2. Create better meetings

I save links to certain LinkedIn posts because they are so darn good. One of them is Kim Scott discussing Bloviating BS. (You may know Scott for her books Radical Candor and Radical Respect.) She wrote,

“This is what happens when one person, usually not the most informed person in the room, has the unearned confidence to make things up and take more than their fair share of the airtime in a meeting.”

Scott gave examples of how this behavior can be destructive. One was from Citigroup, where an executive told her,

“Though women tended to come to meetings better prepared than men, a few of the men did most of the talking, often speaking over the women. This was not only bad for the women’s careers, he explained, it was bad for decision-making at the bank. The best prepared people in the room were silenced by the bloviating BSers.”

She also cited research that shows that when one person does all the talking, the team’s performance suffers.

I’ll add the obvious. It’s no fun attending a meeting with a Bloviating BSer.

To create more inclusive meetings where all voices are heard, here are some actions you can take:

  • When someone is interrupted, interject and say, “I’d like to hear them finish.”
  • Endorse points made by people being talked over: “100% agree with what Priya just said.” (This can be done easily via chat in a virtual meeting or out loud for more impact.)
  • Recommend creating a shared agenda document where attendees can add comments before or during the meeting.
  • Create openings for people to speak: “Let’s pause and hear from anyone who hasn’t yet had a chance to provide their input.”
3. Share insider information

While researching my book Belonging in Healthcare, I interviewed Dr. Chang (not her real name), an emergency medicine physician. After noticing a colleague looking especially tired after an overnight shift, she said, “If you don’t mind, may I ask how old you are?” He answered, “66.”

Since many emergency departments have policies that allow physicians over a certain age to avoid overnight shifts, Chang decided to see whether their hospital had such a policy.

When she asked their shift scheduler about it, they said, “Yes, we have a policy where staff over 55 don’t have to work overnight, but someone needs to request it.” They didn’t automatically take people off the schedule based on age. And since it wasn’t well advertised, most people didn’t know to ask.

Chang was floored and immediately told her colleague he could ask not to be assigned overnight shifts. She also mentioned it to another older colleague. These one-off moves helped them both.

But that’s not all. Chang ensured the policy was widely shared with all the physicians. By doing so, she and her colleagues learned about another aspect of the policy: pregnant people in their third trimester could request an exemption from these shifts.

Chances are, your organization has some insider information. Policies or benefits that are in place but not widely known. Offerings that could benefit more employees if only they knew about them.

How can you share them more widely?

4. Request salary equity reviews

A few years ago, I had a coaching client, whom I’ll refer to as Amanda, who led a large department of data scientists and analysts. While working on performance rankings, she noticed that one woman’s salary was significantly lower than that of her male peers.

With one quick edit to a spreadsheet, Amanda could have easily increased that employee’s salary. But she realized she could and should do more. So she dug in further, reviewing everyone’s salary for equity.

She then uncovered some unexpected data: In addition to identifying other underpaid women, she found a handful of men whose salaries were significantly lower than their peers. And she adjusted each one to be more equitable.

If your organization hasn’t recently conducted a pay equity review, consider how to advocate for one that could benefit all employees.

5. Advocate for better bereavement leave

Here’s one last example of an ally action that can benefit all: advocate for better bereavement leave.

In Decentering Whiteness in the Workplace, Janice Gassam Asare, Ph.D., wrote about a company that offered bereavement leave for the death of an immediate family member only. They initially refused to grant it to an employee whose uncle had passed away. Yet, that person grew up in a culture where aunts and uncles are considered immediate family, often living together. Asare explained,

“Her company had created a seemingly neutral policy that actually centered the white American family structure to the detriment of other cultures.”

Similarly, I’ve started hearing about companies offering longer bereavement leave, which is especially important for employees who might have to travel internationally for funerals and memorials.

Take a minute to look up your organization’s bereavement leave. If it’s non-existent, covers only a few days, or is limited to a strict definition of immediate family, consider how you can advocate for an improved policy. One that better meets everyone’s needs.

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
♦♦

Strengthen the Workplace for All was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


Elmira Advocate

AN IMPROVED APPEALS COMMITTEE-HOO BOY MAYOR SALONEN & THE REGION REALLY DON'T RESPECT WILMOT CITIZENS

 

Well this time I have to disagree with Record reporter Luisa D'Amato. She feels that Waterloo Region are stepping up by rearranging their water interference Appeals Committee to at a minimum give the appearance of fairness and transparency. Well yes likely the Region are willing to go that far: i.e. give the appearance of fairness and transparency. I'd almost be willing to bet my last dollar that Mayor Salonen and her regional colleagues are laughing their heads off right now. They have just bought more time and lots more water from Wilmot all for the price of ...a promise. Has the Region ever reneged on a promise, verbal or written, to Wilmot before? Not only have they but just last month they voted to rescind the 1980 agreement limiting water taking from Wilmot AFTER having been taking that water surreptitiously for the last nine years. And guess what: Do you think Wilmot council are so stupid that they didn't know that their water was being pumped steadily from beneath their feet by the Region? Of course they did but politics is all about getting your way while lying to the majority of citizens and bribing those in the know to stay on side with you.

Good will? Good faith? Give me a break. Just look at the past water interference appeals committee.  It was unilaterally appointed by regional council. Complainants had a grossly inadequate maximum $4,000 ceiling on a claim for a new (deeper) well AND they had to sign a release of future claims against the Region if their wells ran dry again.  Furthermore all aspects of the appeal and investigation were handled by regional staff. As Samantha Lernout of Citizens for Safe Ground Water stated that was not an impartial process it was a structural conflict of interest. And guess what? IT WAS DONE SO INTENTIONALLY by professional liars and manipulators called politicians.  


Github: Brent Litner

brentlintner starred GoogleChrome/modern-web-guidance

♦ brentlintner starred GoogleChrome/modern-web-guidance · May 22, 2026 06:30 GoogleChrome/modern-web-guidance

837 Updated May 22


Aquanty

Advances in HydroGeoSphere (HGS) Over The Last Decade - Aquanty Webinar

We’re pleased to share the recording of our recent webinar exploring the evolution of HydroGeoSphere (HGS) — from its origins as an ambitious integrated hydrologic modelling experiment to a widely trusted, industry-leading platform for groundwater and surface water simulation.

Presented by Dr. Hyoun-Tae Hwang, Director of HydroGeoSphere at Aquanty Inc., this session offers a comprehensive retrospective on the development of HGS since its initial launch in 2002 and its continued advancement under Aquanty since 2012. The webinar highlights key milestones, technical innovations, and the expanding capabilities that have positioned HGS at the forefront of hydrological modelling.

Key Highlights:

  • Explore the evolution of fully integrated groundwater–surface water modelling approaches.

  • Learn how high-performance and parallel computing have shaped HGS capabilities.

  • Discover advancements in physics-based modelling and numerical methods.

  • Review new features and applications, including particle tracking, dynamic meshing, and water management simulations.

This session is especially valuable for hydrologists, researchers, and water resource professionals interested in the development of integrated modelling tools and the future of hydrologic simulation.

Watch the recording now to gain insight into the past, present, and future of HydroGeoSphere, and see how it continues to drive innovation in water science and engineering.

Watch The Recording


Brickhouse Guitars

Olson James Taylor Signature 2007 Demo by Roger Schmidt

-/-

James Davis Nicoll

Non-Stop! / The Republic of Memory (The Song of the Safina, volume 1) By Mahmud El Sayed

Mahmud El Sayed’s 2026 The Republic of Memory is the first volume in his The Song of the Safina series.

The Safina is arguably the Network Empire’s most ambitious project, perhaps even more-so than the Empire’s ongoing efforts to bring the entire Earth under one government. The Safina is a vast generation ship, intended to establish humans on the exoplanet Hurriya. It is a step towards a galactic-scale Network Empire.

Ten years into the four-hundred-year voyage, the grand plan falls apart.



Kitchener Panthers

Panthers win third game in a row

KITCHENER - The Kitchener Panthers are on a roll.

After losing the season opener, the Panthers have won three straight, including a 7-4 victory over the London Majors Thursday night at Jack Couch Park.

London had a 3-1 lead, when Jamie Cabral launched a three-run home run over the fence in the fourth inning to give Kitchener a lead it would not surrender.

Malik Williams also hit his first home run as a Panther in the win. He was three-for-three. Mateo Zeppieri went two-for-two with a walk.

Samuel Quintana was credited with the win, going two innings of shutout baseball.

Evan Elliott went 4.1 innings, giving up three runs on five hits. He walked one and struck out two. Bawin Colon got the save for a scoreless ninth.

Maikol Escotto led London with a four-hit effort in the loss.

Kitchener improves to 3-1 on the season. London suffered its first loss of 2026, falling to 2-1.

Kitchener head into the weekend with two games against last year's league finalists.

First, it's a road trip up Highway 400 for a Saturday afternoon tilt in Barrie at 4:05 p.m. Welland visits Jack Couch Park Sunday afternoon at 2:05 p.m.

GET YOUR TICKETS NOW and #PackTheJack for a rematch of last year's first round tilt!

BOXSCOREGAME REPLAY

The Backing Bookworm

It's Different This Time


This was a wonderful contemporary romance set in New York City filled with two of my favourite romance tropes: second chance romance and friends to lovers. Add in great tension, some spice and found family, and I was totally swooning over this debut book by Canadian author Joss Richard.
This is a story about two ex-roommates who are forced back into each other's lives after their former landlord leaves them his amazing brownstone in NYC. Naturally. It gives serious RomCom movie vibes with its setting, awesome banter, romantic NYC setting and unresolved feelings between two people who have a LOT of history. 
The story is told in dual timelines, both of which were equally compelling and the complications between the two felt so REAL! Adam was *sigh* perfection and June was ... complicated. She had a lot of insecurities, but I appreciated how Richard helped the reader understand June's internal struggles and how her emotional baggage continued to impact her life. 
This is a page-turner of a romance for readers who like some humour, heart, complicated feelings and a couple you'll totally root for. I don't know who recommended this book (I have a feeling it was a fellow bookstagrammer) but THANK YOU!
I am delighted to have found this author and was in awe that this was her debut.  I cannot wait to read Joss' upcoming book Let's Kiss and Tell which hits stores in August 2026! 
My Rating: 4.5 starsAuthor: Joss RichardGenre: Romance, CanadianType and Source: Trade paperback from public libraryPublisher: Viking (PRHC)First Published: Sept 30, 2025Read: May 14-17, 2026

Book Description from GoodReads: In this sweeping, second-chance romance, a twist of fate forces two former roommates to move back into their beloved New York City brownstone and face the events that led to their estrangement—and confront their unresolved feelings for each other.
Subject 74 Perry Street

So begins the email that turns June Wood’s entire world on its head. Five years ago, she lived on Perry Street with her former best friend Adam Harper. But why is the management company reaching out to her about it now? 

Still smarting from the news of her hit TV show being canceled, June has nothing else to lose. She boards a plane from Los Angeles to New York City to find out more about the mysterious email and the promised opportunity it alludes to. It turns out that, thanks to an unbelievable legal loophole, if she and Adam can live together in the stunning West Village brownstone for a month, it’s theirs. Any true New Yorker knows you don’t pass up prime city real estate, and that fall in the city is magical—so what’s there to think about?

And yet, though most things have changed in the time since they last spoke, one thing hasn’ June and Adam have unfinished business. They didn’t exactly end on good terms when they each went off to chase their dreams. Now, confronted with the consequences of their choices, they must navigate the minefield of their past the best way they know together.
Every day they move closer to owning Perry Street reveals misunderstandings, long-term resentments, and long-buried feelings . . . which are suddenly feeling very, very not so buried. But they’ve already lost their friendship once before, devastating them both. Can they risk losing it again for something a little different this time?



Github: Brent Litner

brentlintner starred pallets/click

♦ brentlintner starred pallets/click · May 21, 2026 14:49 pallets/click

Python composable command line interface toolkit

Python 17.5k Updated May 24


Ball Construction

Ball Preston Arena Roof

-/-

Cordial Catholic, K Albert Little

A priest forgives sins?! #apologetics #Christian #Catholic #bible

-/-

Angstrom Engeneering

3 Dimensional (3D) Sputter Coating Platform | Angstrom Engineering

-/-

Brickhouse Guitars

Pierre Explaining Assembly Mold - Interview From Boucher Guitars

-/-

David Alan Gay

Why it may not be a good idea to advance to Operations 15 in #StarTrekFleetCommand

-/-

Code Like a Girl

The Lies Engineers Tell PMs

There’s a moment almost every software engineer has experienced. A PM slides into your chat, or swings by your cube (with a snack as a peace offering) and asks for something that sounds tiny. Even worse, in a meeting with the customer, you’re ask-told:

“Can we just add an extra field before tomorrow?” (PM subconsciously nodding to get agreement while the customer watches with critical eyes)

And the developer, after what I now recognize as a brief internal spiritual battle, says:

“Yeah, shouldn’t be too bad.” (Translation: Guess I’m working late.)

As a former PM, I’d think, “Sweet. Basically done.”

As an engineer, I now understand this sentence actually translates to:

“I’m slowly identifying different ways this could accidentally affect production, but explaining all of them would derail this meeting for forty minutes.”

The issue that inspired this article sounded harmless. That should’ve been my first red flag.

New ticket. Let’s open this up and see…
click
“We need to optimize the yada yada yada…”
(eyes immediately stop reading full sentences and begin skimming for actual danger)
Mhmm. Okay. So basically…
Okay.

Mmmkay instead of logging the same status repeatedly:

WAITING 202605201250

WAITING 202605201255

WAITING 202605201300

we just want a cleaner aggregated format:

WAITING | 3 | 202605201300

Status. Retry count. Last timestamp.

Ok cool. Either this will be super quick or ruin my afternoon.

I’m sure that sentence alone just caused at least one engineer reading this to laugh tiredly into their coffee.

The “field” wasn’t really a field.

♦Enterprise systems rarely react proportionally to “small changes.”

The data was stored as a Protocol Buffer message, which meant I first had to track down the correct .proto contract buried somewhere in enterprise archaeology. Then came regenerating classes, dealing with environment-specific tooling that absolutely nobody documented correctly, and trying not to accidentally break services depending on the existing schema.

At one point I opened the table expecting readable values and instead found what looked like encrypted alien soup.

\x08\x96\x01\x12\x07WAITING\x1a\x0f20260520%1250\x2a\x04\x08\x01\x10\x00
\x08\x96\x01\x12\x07WAITING\x1a\x0f20260520%1255\x32\x06\xb1\x7f\x00\x14\x08
\x08\x96\x01\x12\x07WAITING\x1a\x0f20260520%1300\x4a\x03\xf0\x9f\x92
\x08\x96\x01\x12\x07WAITING\x1a\x0f20260520%1305\x52\x05\x13\x88\xa1\xcc\x02

Nothing builds character faster than realizing your database column is technically a blob.

And this is the part PMs usually never see.

Developers often intentionally compress complexity during conversations. Not because they’re hiding things, but because translating the full chain reaction behind a change is exhausting.

“Adding a field” can quietly mean:

  • verifying backward compatibility
  • checking downstream consumers
  • validating batch jobs
  • updating mocks and tests
  • ensuring older records don’t fail parsing
  • confirming another service somewhere isn’t making dangerous assumptions about the schema

Half the job is coding. The other half is preventing collateral damage.

The funny part is that becoming an engineer didn’t make me think PMs are unreasonable.

It actually made me think good PMs are incredibly valuable… when they understand where complexity lives.

Not every difficult task looks difficult from the outside.

Some of the riskiest work starts with:

“Oh, that should be simple.”

That perspective completely changed how I think about estimation, delivery timelines, and team pressure.

Because now when an engineer pauses before answering a “small” request, I can practically see the dependency graph materializing behind their eyes.

And honestly?

Sometimes the most senior thing a developer says in a meeting is:

“Let me investigate first.”

-Tiffany

//still debugging

The Lies Engineers Tell PMs 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 Programming Language Syntax Catches Bugs

Smalltalk’s Syntax: More Than Just Elegance

Continue reading on Code Like A Girl »


Elmira Advocate

HOW MANY MORE JUSTICE CRAIG PARRY'S ARE THERE?

 

Is he the last one left or are most of our judges as stupid as he is? Other than taking the word of self-serving, well paid sycophants is there some fool proof way to judge our judges? Maybe put them on trial for a change and see how they like it.

We now have two candidates running for mayor in Woolwich Township. At fist blush I believe that either one of them will be an improvement over whom we've had for the last twelve years although that bar is set quite low. It is also possible that as life is rarely all black or all white (no racial slurs/undertones intended here) that Ms. Shantz may actually have some attributes and behaviours that have actually been in the public interest. Time usually tells.

Here is another thought concerning Justice Craig Parry. Maybe he's not an out of touch, old phart, sexist, self-serving member of the court. His attitudes towards 49 women (48 complainants, 1 Neurologist) might not be one hundred years or more out of date as it certainly appears. What if he simply is stupid, thoughtless and lazy? Just as bad what if he's senile or actually suffering from past mini strokes or some other brain injury? As a senior myself I do not wish that upon anyone but unfortunately it does happen and maybe Judges' vaunted independence is what is keeping him behind the bench ruining people's lives. Equally bad is there any possibility that he has been blackmailed or extorted somehow? Seriously I think a formal investigation to ascertain whether or not he's been a victim of criminal activity or pressure is called for. Again I would hope not but his behaviour appears bizarre.

Further issues abound. Anyone remember Tumblur Ridge in British Columbia? Anyone remember the weird circumstances surrounding the shooter's home life and diagnosed mental health struggles? She/he did not have a valid firearms license yet clearly had access to firearms as the authorities had returned them to the home and presumably to the registered owner. The shooter killed themselves afterwards which is a common occurrence in mass shootings. Right now our federal government continue to sell the myth that registered and licensed firearms owners are a threat to Canadian citizens. Could it be that the bigger threat is the government's own failures and refusal to enforce their own safety and firearms laws  especially those dealing with violent criminals and or mentally unstable individuals both of which must not have access to firearms ? 


Brickhouse Guitars

Roger Receiving His New Pellerin Folk C

-/-

Cordial Catholic, K Albert Little

An Evangelical Convert to Catholicism Reflects on Confession

-/-

Cordial Catholic, K Albert Little

Believers vs. Disciples: What's the Difference? #shorts

-/-

James Davis Nicoll

Never The Nets / Hyperion (Hyperion Cantos, volume 1) By Dan Simmons

1989’s Hyperion is the first volume in Dan Simmons’ Hyperion Cantos.

By 2732, hundreds of worlds are linked by farcaster. Hyperion is not one of them. Therefore, visiting Hyperion involves mundane starships and the accompanying time dilation. Inconvenient. However, Hyperion is home to an artifact that justifies pilgrimage: the Time Tombs!

As interstellar invasion looms, a party of pilgrims make their way to the Time Tombs.

But first: some worldbuilding.


artsawards Waterloo Region

Taylor Graham (2021 Arts Awards Waterloo Region Winner, Emerging Artist Award)

-/-

Cordial Catholic, K Albert Little

An Atheist Doctor's Miraculous Conversion to Catholicism (w/ Dr. Robert Collins)

-/-

artsawards Waterloo Region

CAFKA (2021 Arts Awards Waterloo Region Winner, Arts Award)

-/-

Ball Construction

Ball Construction: York University Neuroscience Project June 2024

-/-

Github: Brent Litner

brentlintner starred microsoft/RAMPART

♦ brentlintner starred microsoft/RAMPART · May 20, 2026 19:01 microsoft/RAMPART

A pytest-native safety and security testing framework for agentic AI applications

Python 177 Updated May 21


Github: Brent Litner

brentlintner starred spotify/annoy

♦ brentlintner starred spotify/annoy · May 20, 2026 18:59 spotify/annoy

Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk

C++ 14.2k Updated Oct 29, 2025


Github: Brent Litner

brentlintner starred NVIDIA-NeMo/Guardrails

♦ brentlintner starred NVIDIA-NeMo/Guardrails · May 20, 2026 18:57 NVIDIA-NeMo/Guardrails

NeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems.

Python 6.2k Updated May 24


artsfols

Grass Tax perform Wagon Wheel, author Dylan/ Secor

-/-

Ball Construction

Ball Construction Caledon East Community Response

-/-

David Alan Gay

My First Full Adder In Logic World

-/-

David Alan Gay

Fiddling Around In #LogicWorld

-/-

Brickhouse Guitars

Coffee Break with Kyle & the Godin Century

-/-

Greater Kitchener Waterloo Chamber of Comerce

Greater KW Chamber Supports Members at 2026 Ontario Chamber AGM

The 2026 Annual General Meeting of the Ontario Chamber of Commerce (OCC) was conducted in Ottawa from April 23-25.  Chambers of Commerce, Boards of Trade, government officials and business leaders from across the province assembled to discuss current and emerging issues impacting small and large enterprises.

The Greater Kitchener Waterloo Chamber of Commerce, in partnership with the Cambridge Chamber of Commerce, championed two policy resolutions addressing priority workforce challenges affecting both local employers and the broader provincial economy.

Resolution #1: Retaining and Attracting more Women in Skilled Trades

The resolution focused on attracting and retaining more women in Ontario’s skilled trades sector to help address ongoing labour shortages across construction, infrastructure, and other in-demand industries.

With hundreds of thousands of skilled trades workers expected to retire in the coming years, the resolution highlights the need to expand pathways for women entering the trades while addressing barriers related to workplace culture, childcare accessibility, retention, and job site supports.

The resolution calls on the province to continue strengthening programs that encourage young women to pursue skilled trades careers, improve workplace supports and training, and work with industry partners to create more inclusive and accessible opportunities across the sector. Supporting greater participation of women in skilled trades will help strengthen Ontario’s workforce pipeline and support long-term economic growth across the province.

Resolution #2: Removing Barriers to Boost Ontario’s Labour Pool

The resolution focused on helping address Ontario’s ongoing labour shortages by improving pathways to employment for individuals accessing Ontario Works (OW) and the Ontario Disability Support Program (ODSP), while also reducing training-related costs for employers.

As workforce shortages continue across sectors including skilled trades, healthcare, manufacturing, and technology, the resolution highlights the opportunity to better connect skilled and educated OW and ODSP recipients with employment opportunities through clearer guidance, improved access to support programs, and reduced barriers tied to benefit clawbacks.

The resolution also calls on the province to explore cost recovery supports for employers required to provide provincially mandated workplace training, including WHMIS and Occupational Health and Safety Act training, along with associated onboarding costs such as equipment and uniforms.

Strengthening workforce participation and supporting employers with training costs will help expand Ontario’s labour pool while creating greater opportunities for businesses and workers across the province.

What it Means / What Comes Next?

Both resolutions were adopted by the OCC and will now become part of their policy compendium, helping shape advocacy efforts with the Ontario government in the year ahead. Together, these resolutions focus on strengthening Ontario’s workforce by addressing labour shortages, expanding opportunities within the skilled trades, and reducing barriers that prevent individuals and employers from fully participating in the economy.

The Greater KW Chamber will continue advocating for policies that support workforce development, economic growth, and long-term business competitiveness across Waterloo Region and Ontario. As updates on these resolutions and related advocacy efforts become available, we will continue sharing them with our members.

The post Greater KW Chamber Supports Members at 2026 Ontario Chamber AGM appeared first on Greater KW Chamber of Commerce.


Capacity Canada

Niagara Health – Board of Directors

Niagara Health – Board of Directors

Niagara Health (NH) believes that every person in its region deserves to live every day of their life in the best health possible. As a community-based academic centre, its focus on teaching and learning, research, innovation and partnership propel it to continually improve care and make a difference in people’s lives.

NH is part of Ontario Health West, a region with broad boundaries, encompassing the former Hamilton Niagara Haldimand Brant Local Health Integration Network. Additionally, NH is one of more than 45 health care partners who comprise the Niagara Ontario Health Team – Équipe Santé Ontario Niagara (NOHT-ÉSON), which is committed to building a more integrated, inclusive and seamless health care system with a goal of improving the overall experience and health outcomes. Together, partners are working to create an inclusive, efficient health care system that integrates and streamlines the delivery of health care services, for the residents of Niagara.

NH’s Strategic Plan for 2023-2028 entitled “Transforming Care” is aimed at designing modern and coordinated care around the needs of patients and their caregivers, making it easier to access quality healthcare services that meet patient needs and improve their experiences and outcomes.

It is within this context that Niagara Health welcomes applications for appointment to its Board of Directors, commencing Fall 2026, or soon after.

The Board of Directors
Oversight of Niagara Health is provided by a community-based, volunteer Board of Directors, which focuses on the effective and efficient delivery of healthcare services for the communities NH serves.

The Board of Directors has 15 elected Directors, plus 4 ex-officio members. The by-laws can be found here: Niagara Health Corporate By-Law

The Board has the following roles:

  • Governance oversight by monitoring and assessing NH’s key processes and outcomes, with a view to continuous quality improvement to ensure the best quality of care for our patients and clients.
  • Formulating NH’s strategic direction, including vision, purpose, and key goals.
  • Ensuring NH’s financial viability and meeting its obligations in key Accountability Agreements.
  • Policy formulation to provide guidance to those empowered with the responsibility to manage NH’s operations.

The Board has the following responsibilities:

  • As required, recruiting the President and CEO and the Chief of Staff/ Executive Vice-President (EVP), Medical Affairs.
  • Ensuring executive performance management and succession planning.
  • Ensuring the quality of clinical and operational performance.
  • Ensuring NH’s financial viability and meeting its obligations in Accountability Agreements with Ontario Health West and the Ministries of Health and Long-Term Care.
  • Ensuring the Board’s own effectiveness and efficiency.
  • Building relationships and collaborative partnerships, internally and externally.

Duties and Term:

  • Board members are expected to be active and full participants at meetings, with regular attendance, a commitment to good governance, and a belief in the purpose and vision of Niagara Health.
  • Board members serve a 1-3 years initial appointment, renewable to a maximum of 9 years.
  • Board members must also serve on at least one committee of the Board.

Time Commitment:

  • To fully contribute to the Board, a minimum time commitment of approximately 15-20 hours per month is anticipated. This encompasses one Board meeting and at least one Committee meeting per month. Attendance at special meetings may be required.
  • The Board and its Committees meet six (6) times per year unless a special meeting is required.

Geographical Representation:

  • As in-person board meetings are preferred, candidates must be within a
    reasonable commuting distance to Niagara, and those who live or have lived within the Niagara region are encouraged to apply.
  • The primary meeting location is the St. Catharines Site but may be held at other sites as determined by the Chair.

Term:

  • Directors are elected by the members for terms of one to three years and may serve a maximum of nine years.

Candidate Profile

To complement the skills and experience of its current Board, NH is seeking an Independent Director to join the Board of Directors. NH is particularly interested in hearing from leaders currently working with marginalized and vulnerable populations in the social services sector.

Compensation

Directors serve in a voluntary capacity, without financial remuneration. Approved travel expenses which are inline with the Board policies, will be reimbursed.

Niagara Health is participating in the federal government’s 50 – 30 Challenge to increase diversity in positions of influence and leadership across the organization. The goal of the Challenge is to give all Canadians a seat at the table by improving access for members of equity-deserving groups including: women, Indigenous peoples, racialized persons including Black Canadians, people who identify as gender and/or sexually diverse, and or persons living with disabilities. For more information on the 50 – 30 Challenge, please visit: The 50 – 30 Challenge: Your Diversity Advantage (canada.ca).

NH also continues to make best efforts to increase Indigenous representation on the Niagara Health Board by demonstrating significant efforts towards the recruitment of more than one Indigenous member on the board and through ensuring a plan for successful future recruitments.

Application Process

To be considered for a Board position, please submit a comprehensive board resume along with a cover letter in confidence to Jane Griffith (jane@griffithgroup.ca) and/or Caroline McLean (caroline@griffithgroup.ca).

Niagara Health and Griffith Group are committed to an inclusive, accessible and welcoming hiring process that provides reasonable accommodation to all applicants. Please advise Jane Griffith (jane@griffithgroup.ca) should you require any accommodation to participate in the recruitment and/or assessment processes.

All qualified candidates are encouraged to apply, however, preference will be given to Canadian citizens and permanent residents.

The post Niagara Health – Board of Directors appeared first on Capacity Canada.


Elmira Advocate

OUR LOCAL (Waterloo Region) JUSTICE SYSTEM IS CORRUPT

 

This by definition could be merely  "riddled with errors "which in and of itself frankly is disgusting.  A little passing shot to our previous long term Regional Chair, Ken Seiling. This has occurred on your watch, you pissant. Got that out of my system albeit while I know that the Region of Waterloo for example have major responsibilities with local policing (WRPS) and all their failures towards their female officers a lot of that blame should lie with female regional councillors who've kept their heads down and let their gender counterparts in uniform get treated shabbily. Another passing shot is to our (thank God) departing and currently lame duck Woolwich mayor Sandy Shantz who's been a regional councillor for the last twelve years and probably felt that her political career would not be advanced by supporting and assisting female police officers. Oh and by the way while I've never made a big deal out of it but that same *#%*$ was my Trustee back in 1996 and she didn't lift a finger to help this parent constituent or others when the WRDSB  was protecting bad teachers such as Ron Archer (convicted pedophile).

I do not know all the connections between our Justice System and regional government. I do know that the Region have responsibilities in regards to providing facilities and infrastructure for our various courts. Furthermore I believe that certain prosecuters may be federal  prosecuters and others provincial prosecuters. Whether they are actually paid by the feds or the province versus the Region I am not certain. I do know for a fact that judges are appointed by goddamn politicians and that alone should scare most honest citizens. Nothing like stacking the deck in favour of the already entitled .

Today's K-W Record advises us that the Crown are filing an appeal in the Dr. Sloka case.  Corrupt or not the Crown and the entire system know when a stupid Judge has gone way too far. It's called putting the administration of justice in disrepute which is exactly what Justice Craig Parry has done when he called out 48 female, adult witnesses plus one expert witness for the prosecution, a practicing and respected Neurologist. By the way that Neurologist just happened to be female. The Judge described her and all 48 witnesses as unreliable, some dishonest and all mistaken in their testimony. But that's O.K. because he found the accused, Dr. Jeffrey Sloka credible. 

I too have experience with a biased, idiot Judge (Robert Reilly) unilaterally throwing out multiple witnesses' testimony in order to find me liable in a civil case. Based upon his behaviour the same Judge may have conspired with the Plaintiff's lawyer to try and manipulate my wife onto the stand in order to give testimony that he could twist against her and I. He and the Plaintiff's lawyer also used subterfuge to deny me a trial by my peers i.e a jury trial that I wanted and deserved.  

Who should have reined in both these Judges decades ago? Are these cases a one off whereby a normally rational, sane and honest Judge has simply been broken for one case each, alone? It seems very unlikely. Why does the Justice system not correct gross injustices by their own judges? What the hell has happened to common sense? News flash Justice system.  There are lots of honest, educated people out there who know when liars and filth are hiding behind walls that they've helped put up. How dare you judge citizens when you yourselves won't even clean house of dishonest people within your ranks.     


James Davis Nicoll

Somewhere Far Away / If We Cannot Go at the Speed of Light By Kim Choyeop

Kim Choyeop’s 2019 If We Cannot Go at the Speed of Light is a collection of science fiction stories. Anton Hur’s translation came out in 2026.


Cordial Catholic, K Albert Little

An "On Fire" Evangelical Encounters the Catholic Church (w/ Eyram Klu)

-/-

The Backing Bookworm

All Rise For Murder


All Rise For Murder is the latest book by Canadian author Roz Nay and is a bit outside of Nay's usual twisty thriller genre and I was happy to see her stretch her literary muscles! This is a Canadian small-town mystery that allows Nay's sense of humour to shine.
The story is centred around three generations of Kirby women: Matriarch Val, the fashionable clothing store owner looking for love, her daughter Maude who has come home after her marriage imploded, and Maude's teenage daughter Rhette who isn't happy about being dragged to a small town. When Maude gets a job as a court clerk and believes a young man is wrongly accused of murder, the trio decide to prove his innocence, each having her own ideas on how to solve the murder.
With a hearty dose of messy family life, small-town drama and a trio of women who can't keep their noses out of trouble, this was an entertaining and quirky small-town mystery. For me, the family dynamics overshadowed the mystery a bit in the middle, but Nay gives wonderful depth to her characters, some poignant moments and an ending that surprised this seasoned mystery lover.
Heartwarming, with bouts of humour, this first book in a new whodunnit series doesn't take itself too seriously and brings readers along for a fun ride of family dynamics and small-town mystery.
Disclaimer: Thanks to Viking Books for the complimentary digital advanced copy that was given to me in exchange for my honest review.

My Rating: 3.5 starsAuthor: Roz NayGenre: Mystery, Cozy, CanadianSeries: Madam Clerk Mystery 1Type and Source: ebook from publisher via NetGalleyPublisher: Viking (PRHC)First Published: May 12, 2026Read: May 2-13, 2026

Book Description from GoodReads: A truly Canadian cozy mystery, All Rise for Murder finds three generations of Kirby women suddenly under one roof in charming West Elk—just as the peaceful town seems to become the centre of a devious plot to frame an innocent young man for murder.
Maude Kirby has recently been dumped by her diplomat husband and has moved back to her quirky hometown of West Elk, BC, to live with her ever-optimistic, fashion-forward mother, Val. On the ropes financially, and with her confrontational fifteen-year-old daughter, Rhette, to look after, Maude applies for a clerking job at the local courthouse, and to her surprise, gets it. How hard can it be?

Told to remain professional during court cases, Maude nevertheless finds it impossible not to get emotionally invested when eighteen-year-old Levi is charged with poisoning a local gym owner. No one else seems concerned that the prosecution’s case rests on dubious "facts," but Maude can’t help speaking up for the quiet teen. Things get more complicated when Maude runs into her first love, who appears to have aged very well—and also appears to be dating Maude's prime suspect!

Reminiscent of beloved mysteries such as The Maid, The Thursday Murder Club, and Finlay Donovan is Killing It, All Rise for Murder features quirky characters, old grudges, hidden crushes, surprising twists, and a satisfying ending that will leave the reader eager for the next installment of the Madam Clerk series.

Cordial Catholic, K Albert Little

Not Just Catholics… but Disciples of Christ (w/ Fr. Sammie Maletta)

-/-

David Alan Gay

Dance-Off On Risa 2023 Edition #startrekonline

-/-