WRDashboard

Fork Me on Gitlab

Articles

Carrie Snyder: Obscure Canlit Mama

notes from a Friday

Today I am hardly doing anything right.

I left the library a few minutes later than I wanted to, the drive home is at least 15 minutes, plus I stopped to get gas (that was a good idea). I walked Rose when I got home. I took us further than usual, all the way to the Seagram buildings because I had a hankering to walk through the swooping park with the grassy hillocks. It is very windy and quite sunny and the wind felt terrific on my face and in my hair. I changed into exercise clothes so I’m ready for my weights class at 5:30. I threw in a load of laundry as soon as we got home, and I toasted a bagel and then spilled pepper everywhere when I tried to grind pepper on a sliced tomato, so I had to pull out the vacuum and clean that up (or it felt like I had to).

By then it was well after 2PM,

I’ve been pretty faithful about starting the writing at 2:30, even when I’ve taken a little nap, like yesterday (so tired, up almost an hour earlier than usual, and that just did me in, but I came directly home, and napped immediately, waking at 2:30). Anyway, it is now 2:48 and I am not writing fiction. I might still need a nap, I’m not sure. I wanted to hang the laundry in the breeze because it will dry quickly, but will I have time?

I had my first class into the library this afternoon. It was nice to be reminded of why I do this job. There’s nothing quite like it. It’s a little kindergarten class, and they definitely have some impulsive talkers in the group, but on the whole, it was a really great story time and one of the children returned a book she’d lost during the last school year, and she brought me a card she’d made, with hearts and butterflies and two stick figure people—that’s me and that’s you, she said. I hung it on the wall over my book repair area.

I’m not sure how I feel about the job generally this year. I don’t feel as confident. I feel like I lost my sense of competence over the summer, like it’s weirdly and thoroughly disappeared, and I’ve been avoiding people, especially in groups. I just want to do my tasks at the library and hide away to write fiction and go to the gym and make supper for my family. Nothing extra.

I have loved the fiction writing I’ve been doing, it’s surprised me and delighted me, even when I didn’t think I was in the mood to write, I’ve just kept at it and continued, and the words seem to arrive. Yesterday I let my mind wander as I drifted off to sleep (for my 14-minute nap) and the images that arrived became the starting place for a new scene.

Today, I’m distracted and very very tired. I hate this predictive text — in very faint letters, if I’m not typing at max speed or if the word is long, some AI program embedded in this app will add in the letters that it believes should finish my word or thought. And mostly it’s wrong! Even when it’s right, I perversely (personally, it just wrote!!!) want to write something different, original. I need to turn this feature off. It is not serving me or my imagination. All this effort—delightful effort—to become a confident skilled writer and there’s something offensive about being “predicted”. Predicable.

Don’t become predictable, a mentor told me, when I was 18 or so. I heard it as a terrible warning, a rebuke—You are in danger of becoming boring, Carrie. You will lose your edge, your creativity. But I’m not sure that’s still applicable. Was I writing to prove myself interesting? Probably, when I was 18, that was true to some degree; now my youngest child is nearly 18, and proving myself interesting seems the least of my concerns. I wonder how many writers (and other artists) do their work for therapeutic reasons they may not acknowledge or recognize? I think that is most likely why I took to writing, and why I continue to write. I feel better when I write, much of the time. I also feel better sitting down to write something like this, nothing special, just pouring out what’s on my mind, a mental tidying, maybe.

And I don’t want AI attempting to do the tidying for me. Didn’t ask for it, gotta figure out how to opt out. Predictive text spells a life of tedium, where every thought is finished for me. No thank you.

I wonder why I started this by writing “Today I am hardly doing anything right”?

I can see, having written this down, that’s not accurate. Today, I did not meet every single one of the goals that I set for myself. That is accurate. I’m so tired, my eyes are closing. I will have to nap. I will nap too long, and be fuzzy-headed and unable to write very much upon waking, and I won’t like what I wrote yesterday, even though it thrilled me in the moment, and I’ll remind myself that first drafts are ugly and unwieldy, and rolling with the ideas that come is important to the process. I’ll go to the gym and lift heavy weights and my endorphins will take over and I’ll feel good again, and I’ll go out for dinner with my youngest child, just the two of us, and we’ll end up talking about big subjects and watching tennis and baseball on the big screens, and I’ll know that today, I showed up, again and again, even when it felt hard, or I felt uncertain, or anxious, or like I was hardly doing anything right.

Today I am showing up, consistently (which is sort of like being predictable, isn’t it?).

xo, Carrie

PS I turned off the predictive text. It was the doing of my web browser, and I had to figure out how to turn off “inline predictive text.” Now I can write without feeling like my screen is shouting answers at me. (And telling me that my gut instinct is wrong? That’s how I keep interpreting it … and I definitely don’t need any reinforcement of that self-defeating little voice in my head.)


Code Like a Girl

Bytes of Brilliance: Code Like a Girl’s Next Chapter

In 2015, I spoke at a STEM workshop for girls in grade nine called Think About Math. I wanted my message to stick, so I made a bold little sticker that said Code Like a Girl. I printed 80, thinking it would be plenty. It wasn’t. The girls loved them, the women in the room loved them, and I quickly realized I had tapped into something more.

♦Me at the Think About Math event in 2015. You can see the original sticker on the table.

That sticker was just the beginning.

As I spent more time encouraging girls to explore STEM and supporting other women in tech, I began writing about those experiences on Medium. But when I searched for a publication that focused on stories like mine, I couldn’t find one.

A year after creating the sticker, in 2016, I launched Code Like a Girl on Medium. It became a place to amplify the voices of women and non-binary folks in tech, share resources for parents and teachers, and invite allies to learn how to support change. Since then, we’ve grown into a thriving community with more than 4,000 stories, over 1,000 writers, and 58,000+ followers.

Now, the journey continues.

Code Like a Girl on Substack

We are excited to announce that we’ve opened up a new space on Substack. Think of it as a highly curated version of our publication. On Medium, we publish 10–20 stories each week. On Substack, we will publish up to three carefully selected pieces per week. Our goal is to share the most compelling, thoughtful stories by women and non-binary folks in tech.

♦Code Like A Girl on SubstackFollow Us There

We’d love for you to join us on Substack and be part of this next chapter. You can subscribe for free to get each story straight to your inbox.

👉 Follow Code Like a Girl on Substack

Thank you for being here, and for helping us keep building something meaningful together.

— Dinah Davis

Founder, Code Like a Girl

Bytes of Brilliance: Code Like a Girl’s Next Chapter was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


James Davis Nicoll

Softly Creeping / Galaxy: Thirty Years of Innovative Science Fiction Edited by Martin H. Greenberg, Joseph D. Olander & Frederik Pohl

Martin H. Greenberg, Joseph D. Olander, and Frederik Pohl’s 1980 Galaxy: Thirty Years of Innovative Science Fiction is a retrospective anthology honoring Galaxy Magazine. But that’s not all it is.

As you know,



Brickhouse Guitars

Hozen Gold Label SJ 2HO 1451 Demo by Roger Schmidt

-/-

The Backing Bookworm

Every Step She Takes


Every Step She Takes is set in beautiful Portugal and follows Sadie, a late bloomer who suddenly finds herself exploring the famous Camino de Santiago trail as part of a quirky queer women's travel group and falling in love along the way.
The couple: Mal is a confident world traveler with a complicated family life and more baggage than Samsonite. Sadie is a 30-something who is questioning who she is. At the last minute, Sadie takes her sister's place on the trip and must document her travels on her sister's social media. There's a delightfully awkward meet cute between the couple on the plane to Portugal where Sadie (drunkenly) reveals much about herself and asks Mal to be her sapphic mentor on the trip. 
This sapphic RomCom started off strong and the initial fish out of water aspect and the meet cute had me giggling. I loved the Porto setting and easily pictured the cobbled streets and the beginning trail marker at the cathedral from my trip there in Sept 2024. From the delicious descriptions of pasteis de natas (yom!!!) and beautiful settings, Cochrun brings readers into the heart and culture of Portugal.
But ... the romance and chemistry were weak, and I didn't know what I wanted Mal and Sadie to be to each other - lovers and soul mates or just friends. I felt like I was being told about Mal and Sadie's connection rather than seeing it - which came off as more physical than romantic. Honestly, I felt more chemistry between Mal and her latest stepmom. 
Overall, I enjoyed the found family elements and Sadie's self-discovery, but this RomCom wasn't as strong as I expected and left me wanting a little bit more in the romance department (and a strong yearning for pasteis de Nata!!)
Disclaimer: Thank you to the publisher for the advanced digital copy of this book which was given in exchange for my honest review.

My Rating: 3 starsAuthor: Alison CochrunGenre: LGBTQIA2S+ RomanceType and Source: ebook from publisher via NetGalleyPublisher: Atria BooksFirst Published: September 2, 2025Read: Aug 25-30, 2025

Book Description from GoodReads: Thirty-five-year-old Seattleite Sadie Wells needs an escape. She’s desperate to escape her monotonous routines, the family business that has consumed her entire life, and the unexpected gay panic that has her questioning everything she thought she knew about herself. So when her injured sister offers Sadie her place on a tour along Portugal’s Camino de Santiago, she decides this is the perfect chance to get away from it all.
After three glasses of wine on the plane and some turbulence convince Sadie she won’t even survive the flight, she confesses all her secrets to her seatmate, Mal. The the plane doesn’t crash, and it turns out Mal is on her Camino tour. Worst of all, Sadie learns that she is on a tour specifically for queer women, and that her two-hundred-mile trek will be a journey of self-discovery, whether she wants it to be or not.

Fascinated by the woman who drunkenly came out to her on the plane, Mal offers to help Sadie relive the queer adolescence she missed out on as they walk the Camino. As Sadie develops her newfound confidence, Mal grapples with a complicated loss and unexpected inheritance. But as their relationship blurs the lines between reality and practice, they both must decide if they will forever part at the end of the tour or chart a new course together.

With “funny, poignant” (Publishers Weekly, starred review) prose, Alison Cochrun explores the power of letting go of your past and realizing that it’s never too late to live as your authentic self.



Elmira Advocate

HOLY CRAP! DNAPL ADMITTED TO BE AT W4 OFFSITE & VARNICOLOR PUBLICLY ALLEGED BY LANXESS'S CONSULTANTS TO HAVE POLLUTED ELMIRA'S DRINKING WATER AQUIFERS!

 


Sometimes it's hard to see the gold because of the extent of the dross (i.e. scum or as in mining the tailings or leftovers). So that swinehund  (possibly German for swine) Allan Deal absolutely denied the presence of DNAPLS anywhere off the Uniroyal Chemical site at a TRAC meeting a year ago. Or is it possible he actually suggested that there weren't any under the former Uniroyal site which would be even more asinine. He also misstated the concentration of dissolved chlorobenzene necessary to indicate the presence of DNAPL nearby. Meanwhile a closer examination of the online Minutes of that meeting indicate that there used to be DNAPLS very close to W4 which is located beside the Howard St. water tower as well as beside the well (OW57-32) in which DNAPL was found by me and denied in 2006 and 2012 by Chemtura, CRA and the MOE. 

So let's be blunt here. Chemtura and the Ontario Ministry of the Environment lied to me, CPAC and the public in 2006 and 2012 regarding chlorobenzene free phase DNAPL in the Elmira Aquifers and apparently released from Uniroyal Chemical. They also flexed their muscles in 2008 with their two friends on CPAC as well as with Woolwich Council to get me removed from CPAC. Of course the usual quantity of lying was required to get the dirty job done. 

At the same TRAC meeting GHD on behalf of Lanxess threw Varnicolor Chemical under the bus at long last. They fingered Varnicolor as having added at least five chlorinated solvents to Elmira's drinking water aquifers none of which includes chlorobenzene and which kind of beggars belief. Not bad in that it only took from 1989 until last year to publicly name Varnicolor Chemical as probably having polluted the Elmira Aquifers along with Uniroyal Chemical and Nutrite (ammonia). 

                                Can anybody say COVERUP   ?



Brickhouse Guitars

Boucher BG 41T G MYT 1009 OMHB Demo by Roger Schmidt

-/-

Jesse Wilson - Public Object

Inside Burst’s Test Interceptors

I recently posted on the Cash Code Blog announcing Burst’s new test interceptors feature. They are similar to JUnit rules in API and capability.

A Small API

A typical use case is connecting some lifecycle to a test’s execution. Perhaps we want a chess engine to be available while a test is running:

class ChessEngineTest {
  @InterceptTest
  val chessEngineInterceptor = ChessEngineInterceptor()
  
  val chessEngine: ChessEngine
    get() = chessEngineInterceptor.chessEngine

  @Test
  fun moveValidation() {
    assertThat(chessEngine.isLegalMove(E2, E4)).isTrue
  }
}

Writing an interceptor is straightforward:

class ChessEngineInterceptor : TestInterceptor {
  lateinit var chessEngine: ChessEngine

  override fun intercept(testFunction: TestFunction) {
    stockfish = StockfishChessEngine()
    try {
      testFunction()
    } finally {
      stockfish.close()
    }
  }
}

Critically, the interceptor calls testFunction() to execute the test body. This gives it lots of power:

  • It can differentiate test successes (testFunction() returns normally) from test failures (testFunction() throws)
  • It can skip tests by not calling testFunction()
  • It can repeat tests by calling testFunction() in a loop
  • It can collect timing metrics by calling testFunction() inside a measureTime() block

JUnit rules have the same capabilities. JUnit rules are implemented with Java reflection, which is a great fit for both simplicity and capability.

One Possible Implementation

But Burst implements the same behavior without reflection. Burst is a Kotlin Multiplatform library and uses a  compiler plugin to connect interceptors to the tests they execute.

Here’s a sketch of how Burst could have transformed ChessEngineTest to hook up its single interceptor:

class ChessEngineTest {
  @InterceptTest
  val chessEngineInterceptor = ChessEngineInterceptor()

  val chessEngine: ChessEngine
    get() = chessEngineInterceptor.chessEngine

  @Test
  fun moveValidation() {
    chessEngineInterceptor.intercept(
      object : TestFunction(
        packageName = "com.publicobject.chess",
        className = "ChessEngineTest",
        functionName = "moveValidation",
      ) {
        override fun invoke() {
          assertThat(chessEngine.isLegalMove(E2, E4)).isTrue
        }
      }
    )
  }
}

But this isn’t how Burst does it...

Implementation Challenges

One test function and one interceptor is no sweat! But we’re building Burst to power a particularly thorough set of tests that have more requirements.

Multiple interceptors. We want these to execute in declaration order.

Inheritance. We can have interceptors in the base class, and in each subclass. When a test function runs we want to execute all the interceptors. Different subclasses could declare different interceptors!

abstract class AbstractChessEngineTest {
  @InterceptTest
  abstract val engineInterceptor: ChessEngineInterceptor

  val chessEngine: ChessEngine
    get() = engineInterceptor.chessEngine

  @Test
  fun moveValidation() {
    assertThat(chessEngine.isLegalMove(E2, E4)).isTrue
  }
}

class StockfishChessEngineTest : AbstractChessEngineTest() {
  override val engineInterceptor = StockfishEngineInterceptor()
}

class GenerativeAiChessEngineTest : AbstractChessEngineTest() {
  override val engineInterceptor = StockfishEngineInterceptor()

  @InterceptTest
  private val flakyTestInterceptor = FlakyTestInterceptor()
}

In this example, moveValidation() runs with one interceptor in StockfishChessEngineTest, and two in GenerativeAiChessEngineTest.

Module isolation. Each file in our test’s class hierarchy can be compiled independently. We can introduce a new interceptor in the base class without recompiling the subclass, or vice-versa.

The Actual Implementation

Each test that defines interceptors aggregates those interceptors up into its own intercept() function, that calls them in the appropriate order.

If the superclass has interceptors, we call its intercept first, passing the subclass stuff as an argument.

The net effect is that we get to apply a chain-of-responsibility pattern for each interceptor in a test, and apply that pattern again for each class in the type hierarchy.

Check it out

I had a lot of fun finding a way to build this thing that’d have ‘reflection-like behavior’ without any reflection.

Get Burst on GitHub.

Code Like a Girl

Share How Promotions Work, and Other Actions for Allies

Better allyship starts here. Each week, Karen Catlin shares five simple actions to create a workplace where everyone can thrive.♦1. Share how promotions work

The Wall Street Journal recently reported that while unemployment in the U.S. is at a historically low 4.2%, Black workers face a very different reality. Unemployment for Black Americans has surged to 7.2%. While the exact causes of this disparity aren’t clear, the gap is troubling. And it can feel far beyond our individual control.

In past newsletters, I’ve recommended checking the demographics of affected employees before finalizing a layoff plan to ensure they reflect your overall workforce.

And here’s one more action we can take in our workplaces to help retain and support Black coworkers: Share how promotions work.

Research from Coqual shows the impact. When companies clearly communicate their promotion process, 31% of Black women report being satisfied with their career growth and plan to stay. In companies that don’t share it? That number drops to just 9%.

Clarity isn’t only good for retention — it’s a signal of fairness. And I’m convinced that transparent promotion processes help not just Black women, but many people from overlooked and underestimated groups.

Let’s commit to making advancement pathways visible. It’s a small step that can have an outsized impact.

Share this action on Bluesky, LinkedIn, Instagram, Threads, or YouTube.

2. Practice everyday acts of sponsorship

September 15-October 15 is National Hispanic Heritage Month in the U.S.

In her book Inclusion Revolution, Daisy Auger-Domínguez reminds us to approach heritage months with thoughtfulness, rather than clichés. As she puts it, “Having Taco Tuesday during Hispanic heritage month is one big eye roll.”

Her advice? Do something impactful instead.

Rocio Medina van Nierop, the co-founder and CEO of Latinas in Tech, offers a powerful suggestion: Practice everyday acts of sponsorship.

That means:

  • Advocating for someone to lead a project.
  • Suggesting them for a promotion.
  • Publicly giving them kudos or a great review.
  • Putting in a good word when they’re not in the room.

As Medina van Nierop notes, anyone can do this — if you’re present when opportunities are being discussed. “Having our name floated at a table that we are not part of can make a HUGE difference in our life and career.”

Let’s be that person. Not just during Hispanic Heritage Month, but every day, year-round.

3. Set up meetings for success

In her article The Meeting Revolution, Thais Compoint asks:

“Have you ever sat silently through an entire strategy meeting? Not because you had nothing to contribute, but because the meeting structure made it nearly impossible for you to share your insights?”

Many of us have been there — and not just in strategy meetings.

One of Compoint’s key tips for building more inclusive meetings starts well before anyone enters the room: Send objectives, agendas, and materials in advance.

Why? Some participants are “processors” who generate their best ideas after reflection. Others may be navigating language barriers that make real-time contributions difficult. By sharing information ahead of time, you give everyone a fair chance to show up prepared and contribute meaningfully.

Before your next meeting, consider sending the agenda and materials early. It’s a small step that can lead to better participation and better outcomes.

4. Know when to capitalize Deaf

Here’s the latest installment of “things I hadn’t yet learned” about being inclusive.

In last week’s newsletter, I wrote about how to support the deaf and hard of hearing community. Subscriber Grace Saunders wrote back with this helpful feedback: “Usually, you capitalize Deaf if someone identifies as part of that community.”

I learn from subscribers regularly, and I sincerely appreciate every person who takes the time to reach out. In this case, I hadn’t been paying attention to when I should capitalize the word.

Here’s guidance from The Diversity Style Guide:

“Lowercase when referring to a hearing-loss condition or to a deaf person who prefers lowercase. Capitalize for those who identify as members of the Deaf community or when they capitalize Deaf when describing themselves.”
5. Community Spotlight: Point out gendered language

This week’s spotlight on an ally action from the Better Allies community comes to you from Mary Barratt who wrote,

“I was the Chair of a sports organisation and making regular use of the resources available from the Sports Governance Academy (SGA). As I was browsing one of blogs, I came to this sentence: ‘It might be up to a year before the Chair is due to hold his one-to-ones with directors.’”

His one-to-ones.

Barratt added,

“This really stuck out as the SGA is committed to using gender non-specific language to welcome and speak to all readers. I wasn’t comfortable ignoring it, as changing the demographic of sports leadership is so important, and difficult. While this was just one word, it carried so much weight.”

She wrote an email letting SGA know about this instance of gender bias, and that she presumed it was simply an oversight.

SGA replied thanking her and sharing that they had corrected the post. They explained,

“Regrettably, this one slipped through, so many thanks for bringing it to our attention. Rest assured that we will be doubly vigilant in future to avoid this being repeated.”

Barratt told me, “It was such a tiny step but it felt worthwhile.”

I 100% agree!

If you’ve taken a step towards being a better ally, please reply to this email and tell me about it. And let me know if I can quote you, either by name or credit you anonymously, in an upcoming newsletter.

That’s all for this week. I wish you strength and safety as we all move forward,

Karen Catlin (she/her), Author of the Better Allies® book series
pronounced KAIR-en KAT-lin, click to hear my name

Copyright © 2025 Karen Catlin. All rights reserved.

Being an ally is a journey. Want to join us?

  • Follow @BetterAllies on Bluesky, Instagram, Medium, Threads, or YouTube. Or follow Karen Catlin on LinkedIn
  • This content originally appeared in our newsletter. Subscribe to “5 Ally Actions” to get it delivered to your inbox every Friday
  • Read the Better Allies books
  • Form a Better Allies book club
  • Get your Better Allies gear
  • Tell someone about these resources

Together, we can — and will — make a difference with the Better Allies® approach.

♦♦

Share How Promotions Work, 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.


Ball Construction

Saugeen Shores August 2025 Update

-/-

Andrew Shackleton

Back to 2021? August Market Review

We’re back to 2021 with regard to real estate prices here in Waterloo Region. This August was the slowest in 11 years, down 21% on volume compared to the 10 year average. But this is nothing new, our market has been more or less flat or slowly declining for 2 years now. And this in on top of a much more precipitous drop brought on by huge rate increases by the Bank of Canada in the spring of 2022.

Of course, August is one of the slowest months for real estate aside from winter so it isn’t surprising we saw month over month declines across the board aside from apt condos, which were hammered in July and in May. On a yearly basis, prices fell in every category, with detached and semis down 5%. Towns fared a bit better, at -3%, with apt condos falling the most, down 6%.

Again, as in previous months, inventories are in great shape for buyers. Conditions are balanced for detached, with just over 3 months of stock, and for towns at just under 5 months. Semis are still a sellers’ market with under 2 months of listings. Apt condos have moved well into a buyers’ market with over 7 months of available units for sale.

Days on market is roughly a month for detached, with semis moving quicker, at 3 weeks. Towns are taking 5 weeks to sell with apt condos needing a full 7 weeks for the average sale. Looking at these figures it’s clear that there’s a direct correlation with inventory levels. 

The fall market will pick up once everyone is back in school. Sales and listings will increase although I’d expect price activity to remain somewhat muted, a trend that has been on-going for month now. The cautious behaviour we’ve seen from the Bank of Canada will continue as events unfold south of the border. Read my local board’s press release here.

The post Back to 2021? August Market Review appeared first on Andrew Shackleton.


Capacity Canada

THEMUSEUM

♦ Opportunity to Awe, Inspire & Enlighten with THEMUSEUM’s Board of Directors or as a Committee Member

THEMUSEUM is a charitable organization which awes, inspires and enlightens almost 100,000 guests each year. We pride ourselves on being a new type of emerging museum – one of ideas and experiences based on Art & Technology @Play.

We are dedicated to scanning the globe for fresh cultural content and using it to stage experiences that stimulate transformative connections for our audiences. Our values are Experiential Learning, Unexpected Intersections and Diverse Voices.

THEMUSEUM recently received 3-year funding from the City of Kitchener allowing us to execute a plan for sustainability and growth. In doing so we intend to continue to contribute to the downtown core vibrancy, and broader economic and social growth across the Region.

THEMUSEUM is currently looking for new members to join the volunteer Board of Directors or sit on one of its committees. THEMUSEUM welcomes and encourages representation from all areas of our diverse community as we believe our organization must reflect our community.

We welcome all applicants and seek a range of skills sets and expertise.

Above all, we are seeking commitment, enthusiasm, and a passion for delivering fresh cultural content to our guests in Waterloo Region and beyond.

Opportunities:
  • The Board of Directors – Meets six times a year plus a day long strategy session
  • The commitment is based on two, three-year terms with the expectation of becoming a member annually or donating in lieu of.
  • Standing Committees of the Board that meet quarterly:
    • Governance & Nomination
    • External Relations & Development
    • Finance & Audit Committee
  • Ad hoc Committees that meet at the Call of the Chair: Fundraising / Special Events
    • Curatorial Strategy
    • Curriculum Advisory Team (CAT)
    • Marketing/ Communications
    • Equity, diversity, exploration of thought and creating an inclusive community are key priorities of THEMUSEUM now and into the future.
How to Apply

If you are interested in further exploring this dynamic opportunity to be a part of THEMUSEUM’s Board of Directors or serve on one of the committees, please direct questions or forward a detailed CV supporting your area of interest to BoardofDirectors@THEMUSEUM.ca by Monday, September 15, 2025.

The post THEMUSEUM appeared first on Capacity Canada.


Elmira Advocate

IS THERE OTHER EVIDENCE OF CHLOROBENZENE DNAPLS OFF OF THE FORMER UNIROYAL CHEMICAL SITE?

 


Yes as a matter of fact there is. There is also evidence of what I view as gross incompetence by CRA and Uniroyal. Now keep in mind that CRA work for Uniroyal and are paid by them. Hence it's difficult to know what CRA may or may not have recommended to Uniroyal versus what Uniroyal's decision ($$$) on the matter may have been. 

I love the following terminology namely "the weight of the evidence" and "on the balance of probabilities". Yes that second one is also used by our judicial system in all their non perfection. Long story short it is the authors of investigations/reports who decide what the weight of the evidence is and or what the balance of probabilities is. Do you know what that means? It means that it is a totally subjective decision entirely based upon the integrity and the biases of the authors of the report. If that means either Uniroyal and successors plus CRA/GHD who are paid by Uniroyal etc. then the decision is guaranteed to be a self-serving one. Ditto for the M.O.E./MECP.  Wouldn't you just love to be the Judge or jury at your own trial?

Newer evidence has included the approximate "excess"  2,000 kilograms of chlorobenzene already pumped out of the off-site aquifers. This "excess" was found by Dr. Neil Thompson of the University of Waterloo and published in his 2017 Conceptual Site Model.  He claimed the source of 2,000 kilograms of chlorobenzene was unknown. Probably it was unknown to him but sure as hell Uniroyal/Chemtura  and CRA all knew that it was off-site free phase DNAPL either from Uniroyal or other nearby industry. 

Other new evidence includes the six to eight potential chlorobenzene off-site sources found and publicly stated by Jesse Wright (Arcadis Inc.) at the June public TRAC meeting.  Finally there are two letters from two of the co-conspirators namely the Ont. Ministry of Environment and CRA written in 2012 approximately six years after I went public to CPAC (Chemtura Public Advisory Committee)  about the DNAPL found at the bottom of observation well OW57-32. These letters were in response to pressure from CPAC for them to formally respond to the public advisory committee.  This is the kind of behaviour from CPAC that mayor Sandy Shantz and councillor Mark Bauman declared to be "dysfunctional" . Both co-conspirators (CRA & M.O.E.) did their best to ignore the very strong DNAPL evidence in favour of much weaker evidence (?)  to support their plausible DNAPL deniability goals. Oh and just for the record CRA themselves had in 1998 in writing declared that it was DNAPL that they had found. Only eight years later when confronted by me at CPAC with their 1998 statements did they decide to change their tune. 

This is but a taste of the obfuscation, excuses, delays and deflections that are part of the arsenal of the modern polluter. Do I believe that 100% of polluters exhibit this kind of serious lack of ethics or integrity? I do not and I hope not. Remember that the issue of off-site DNAPL, either free phase or residual, in the Elmira Aquifers will determine the length of time to properly remediate them. Thirty years of not properly treating/remediating DNAPLS both on and off site have been wasted. Plus keep in mind that all the corporate entities plus the M.O.E./MECP have proven themselves repeatedly incapable of being honest  parties willing to do the right thing for the public interest whether human health or overall environmental health. They do not deserve the privilege or duty of being involved any further in the cleanup. 


Capacity Canada

Equal Voice

2025 Board Director Recruitment Information Package Thank you for your interest in joining the Equal Voice Board of Directors.

This package provides information about the role and responsibilities of Board members, what Equal Voice is looking for in 2025, and how to apply. We hope it supports your decision to bring your skills, experiences, and voice to our national governance team!

About Equal Voice

Equal Voice is a national, bilingual, multi-partisan registered charity working to advance gender equity in Canadian politics. Since 2001, we’ve been a leading voice in the movement to elect, support, and retain more women and gender-diverse individuals in public office—from Parliament Hill to town halls and Indigenous governance spaces.

Through training, research, awareness, and network-building, we help women and gender-diverse leaders lead, connect, compete, and govern in political life. Our programs have directly supported thousands of Canadians and helped shape national conversations about representation, democracy, and the systems that determine who holds power.

Our Vision: A Canada where gender equity in politics is the norm.

Our Mission: To champion democracy and political diversity by creating multi-partisan spaces that advance gender equity in Canadian politics.

Board Opportunity: Summary

Equal Voice is seeking new Directors to join our national Board in fall 2025. Directors serve a two-year term, renewable once, and are elected by Equal Voice’s national membership.

We are specifically seeking individuals with expertise in:
  • Finance and Accounting
  • Fundraising and Philanthropy
  • Legal and Risk Oversight
  • Human Resources and Organizational Development
  • Governance and Policy

We strongly encourage applications from individuals who identify as Black, Indigenous, racialized, 2SLGBTQIA+, persons with disabilities, youth under 29, or from rural and northern communities. We welcome candidates from all regions of Canada and across the political spectrum who share Equal Voice’s mission to advance gender equity in politics.

About the Equal Voice Board

Equal Voice is governed by a national volunteer Board of Directors that provides strategic direction, fiduciary oversight, and governance for the organization. The Board works closely with the Executive Director (ED), the sole employee of the Board, who leads staff and day-to-day operations.

Key Responsibilities of the Board:
  • Oversee the implementation of Equal Voice’s 2025–2030 Strategic Plan, meeting the core objectives and milestones
  • Ensure sound financial management, legal compliance, and reputational risk and management.
  • Uphold good governance practices and oversee key organizational risks like human resources
  • Support the ED through strategic counsel, evaluation, and accountability
  • Act as ambassadors and connectors within political, corporate, and community networks, as required.
Expectations of Board Directors

Directors of Equal Voice play a vital role in stewarding the mission, strategy, and long-term sustainability of the organization. As a national charity with a small staff and growing network of grassroots volunteers, the Board is expected to provide high-level governance, thought leadership, and visible support across regions and sectors.

Equal Voice Directors are expected to:
  • Attend at least six (6) virtual Board meetings per year (approximately 1.5 hours per meeting)
  • Serve on at least one standing committee, such as Audit & Finance, Governance, or Human Resources
  • Contribute 6–8 hours per month, on average, with additional time required during key moments in the organizational calendar (to be provided as part of on-boarding)
  • Attend and participate in the Annual General Meeting (AGM) and strategic retreat (virtual or in-person)
  • Make a personally meaningful annual financial contribution in support of Equal Voice’s mission
  • Adhere to Equal Voice’s Code of Conduct, confidentiality and conflict of interest policies
  • Participate in governance and board training at least once per year to strengthen board effectiveness and alignment with legal and sectoral best practices
  • Represent Equal Voice at 1–2 regional or national events annually, such as the Equal Voice Gala, Calgary Stampede Reception, campaign schools, or local Chapter engagements, where applicable.
Renewal & Organizational Sustainability

In 2020, Equal Voice transitioned away from a formal membership model to eliminate financial barriers and broaden accessibility and increase inclusivity to our programming and network. Building on that evolution, in June 2025, Equal Voice has launched a one-year Governance Renewal Initiative to:

  • Review and strengthen the organization’s national and chapter governance structures
  • Ensure alignment with legal and charitable compliance
  • Rebuild and re-engage our grassroots volunteer network across the country
  • Develop a more sustainable, inclusive, and modern model for participation and impact.

Board Directors will be expected to actively participate in this governance renewal process. This includes contributing strategic oversight, liaising with advisory committees and consultant, as needed, and committing approximately 6-8 hours over the 8-month project period.

Governance Excellence & Compliance

Equal Voice’s Board is committed to meeting or exceeding all requirements of the Canada Charities Act and the Income Tax Act for registered charities.

We prioritize:
  • Transparency through audited financials, annual reports, and AGM elections
  • Accountability through strategic planning and reporting on progress and deliverables, Board self-assessment, and ED performance reviews
  • Diversity and inclusion in both governance structure, organizational culture and political thought
  • Charitable compliance, including political activity guidelines, record-keeping, and proper oversight of restricted funds and grants.

All Directors receive onboarding, including resources on fiduciary duties, charity law, and Equal Voice’s strategic context and programming.

Organizational Structure

Equal Voice is powered by a small but impactful five-person national team. Our secretariat is remote based and located across the country.  We are supported by a network of contractors, program facilitators, volunteers, and partners across the country. This lean operational model enables us to deliver high-impact programming and national and local awareness campaigns while remaining agile and cost-effective.

We are currently rebuilding and reinvesting in our regional chapter network, which is volunteer-led and central to our grassroots reach and national relevance. These chapters have been the foundation of Equal Voice’s success for over two decades, offering localized engagement, cross-partisan collaboration, and direct connections to aspiring leaders in communities across Canada.

Current Context: Strategic Renewal

In 2026, Equal Voice will celebrate 25 years of championing gender equity in Canadian politics. As we approach this milestone, our work is guided by a renewed vision and strategic roadmap: “Lead. Connect. Compete. Govern. A Strategic Plan for Gender Parity in Canadian Politics (2025–2030)”.

This five-year plan is the result of a diverse 18-month consultation period with volunteers, alumni, elected officials, political partners, community organizations, and supporters. While perspectives varied, the message was clear: women and gender-diverse individuals don’t come to Equal Voice to be judged for their political beliefs—they come to be accepted, to learn, and to connect with others who may not think like them but share a common goal of advancing gender parity in Canadian politics.

LEAD: Sharing Knowledge, Building Confidence

Leadership is more than being elected—it’s about lifting others as you rise. Equal Voice will champion diverse forms of leadership by connecting emerging candidates with past and current political leaders, campaign professionals, and mentors from across the political spectrum. In a crowded and complex communications environment, we aim to be a trusted source that highlights what leadership looks like—today and into the future.

CONNECT:  Leveraging the power of networks

We will expand our outreach, training, and networks to ensure politics is seen as an accessible and viable path for women and gender-diverse individuals. Through formal and informal networking, campaign schools, online resources, and cross-partisan engagement, we will equip emerging leaders with the tools and confidence to take the first step—from local elections to the highest office.

Time and time again, our stakeholders and our network have emphasized that these connections—both formal and informal—are among the most powerful and valued aspects of their involvement with Equal Voice.

COMPETE: Ensuring Success at the Ballot Box

Winning elections takes more than just putting your name on the ballot—it requires preparation, strategy, and support. Equal Voice will continue to enhance our training to reflect evolving political realities, equipping candidates and their teams with the tools, leadership skills, and strategies needed to succeed. Win or lose, candidates will leave our programs with the knowledge, leadership skills, and connections needed to compete confidently at any level of government or public office.

GOVERN: Winning Is Just the Beginning

Campaigning is very different from governing. Politicians represent their communities, shape policy, and make decisions that impact every aspect of public life. While governing is essential, it can also be complex, isolating, and deeply demanding—especially for women and gender-diverse leaders. We are uniquely positioned to leverage our expertise, national network, and partners to develop targeted resources—providing women in public office with access to trusted, reliable support throughout their time in elected roles.

How to Apply

Deadline to apply: September 14, 2025

To be considered:

  • Complete the Application Form
    • Optional: Self-identify as part of an equity-seeking group or indicate regional representation.
    • Upload resume, cover letter and any references.
    • www.equalvoice.ca/board_recruitment_package?utm_campaign=ev_board_recruitment_deadline&utm_medium=email&utm_source=equalvoice 

Shortlisted candidates will be contacted by Equal Voice’s Nominations Committee for a brief virtual conversation the last two weeks of September.

The post Equal Voice appeared first on Capacity Canada.


James Davis Nicoll

See The Light / The Memory of the Ogisi (The Forever Desert, volume 3) By Moses Ose Utomi

2025’s The Memory of the Ogisi is the third volume in Moses Ose Utomi’s secondary universe fantasy series, The Forever Desert.

The scholars of the City of a Thousand Stories’ scholars are called ogisi. Most of them focus on tales of Obasa the Wise. Ogisi Ethike has long studied the insignificant Osi, a choice that has made Ethike something of a pariah.

Ethike’s diligent research is rewarded with revelation.

Kitchener-Waterloo Real Estate Blog

Why Home Staging Matters When Selling Your Home in Waterloo Region

When preparing to sell your home in Waterloo Region, one of the biggest questions sellers face is whether to invest in home staging. In today’s market where buyers have more choice and are carefully comparing homes, staging can make all the difference.

Staging Creates That “Fall in Love” Moment

From my perspective as a Waterloo Region real estate agent, vacant homes can sometimes feel a bit less inviting. Buyers often move through them more quickly, make less of an emotional connection, and don’t “fall in love” the same way they do with a staged or occupied home. That emotional connection is powerful.

When buyers fall in love, it usually leads to fewer days on market and, at the end of the day, stronger offers. Since today’s market is very much a buyer’s market, we want to do everything possible to stand out from the competition.

I believe in this so much that when we sold our own home on Pinery, we staged it—because we practice what we preach.

The Data Backs it Up

According to the 2025 Profile of Home Staging by the National Association of REALTORS® (NAR):

  • 83% of buyers’ agents said staging made it easier for buyers to visualize the property as a future home.
  • 17% of buyers’ agents reported staging increased the dollar value of offers by 1–5% compared to similar unstaged homes.
  • Sellers’ agents echoed this, with nearly one in five also reporting a value increase of 1–5%.
  • Staging the living room, primary bedroom, and kitchen were found to be the most important areas to focus on.

In other words, staging doesn’t just make a home look nice—it can help it sell faster and for more money.

♦ Strategic Staging in Waterloo Region

Full staging isn’t always necessary. We often recommend a strategic mix to maximize return while being cost-effective:

  • Focus on high-impact rooms like the living room, bedroom, and kitchen.
  • Use professional photography paired with staging for strong online presence.
  • Consider virtual staging in secondary spaces where physical staging may not be practical.
Bottom Line

If you’re planning to sell your home in Waterloo Region, staging can be a game-changer. It helps buyers see the property as their future home, encourages emotional connection, reduces days on market, and often results in stronger offers.

As an experienced local real estate agent, I’ve seen firsthand how staging pays off—not just for clients, but in my own home sale too. In today’s competitive buyer’s market, staging is one of the smartest investments you can make when preparing to sell.

Source: 2025 Profile of Home Staging, National Association of REALTORS®

The post Why Home Staging Matters When Selling Your Home in Waterloo Region appeared first on Kitchener Waterloo Real Estate Agent - The Deutschmann Team.


Code Like a Girl

GenAI for PMs: 12-Week Roadmap + Governance Templates

Ship AI that users trust, and your GC signs, without losing speed.

PMs are being asked to “ship AI” yesterday. I’ve sat in those sprint reviews where the board asks, “Where’s our copilot?” and the team glances at the prototype that sort of works… if you hold it the right way. Ship too fast and you create bloat and mistrust. Go too slow and you look stuck.

♦Image generated by the Author using AI

Here’s the path that keeps both speed and safety. It’s the same path I use when I’m asked to turn a flashy demo into a dependable feature people actually use.

The pressure is real, and so is the trust gap

Adoption is racing ahead in boardrooms: over half of C-suite leaders say they regularly use GenAI at work. Yet only 1% of companies describe their rollouts as “mature.” That’s the gap your roadmap has to close.

Users aren’t blindly cheering, either. Only about a third of U.S. adults say they’ve used a chatbot at all, and many remain skeptical. Trust is earned, not assumed.

Now add regulation. The EU AI Act has firm dates on the calendar — no pauses, no grace period — which means governance isn’t a “later” task. It’s part of the build.

Rule #1: Balance speed with guardrails

Ship fast, but never “freehand.” For every backlog item with “AI” on it, pair it with a guardrail:

  • Data boundaries: What data the feature can and cannot touch.
  • Behavior boundaries: What the model must never say or do.
  • User boundaries: What consent and controls the user gets.

If you need a framework language to point to in your PRD, adopt ISO/IEC 42001 terms, simple, auditable, and recognisable by security teams.

A quick lens to kill the wrong ideas early

Before a pilot becomes a product, score it on three axes: Business Impact, Technical Readiness, and Compliance Risk.

The grid:

  • High value / High feasibility → Build now.
    Example: AI search across your knowledge base with clear permissions.
  • High value / Low feasibility → Park it.
    Example: Multimodal summarisation across private + web data on day one.
  • Low value / High feasibility → Resist.
    Example: “AI joke” button inside an enterprise dashboard.
  • Low value / Low feasibility → Drop.

Keep the scoring blunt: 1–5 for each axis. Anything under a total of 10 doesn’t make this quarter.

Where AI belongs: inside real journeys, not in a side tab

The fastest path to adoption is to inject AI at the point of friction your users already feel.

Ask three questions:

  1. Where do users get stuck or abandon flows?
  2. Which steps are repetitive, error-prone, or mind-numbing?
  3. How can AI assist decision-making without stealing control?

Instead of spinning up a shiny “Copilot” page, put the model next to the form people dread, or inside the report they struggle to read. Adoption follows context.

A worked example: from “ChatGPT prototype” to shippable feature

The pilot: A ChatGPT-style helper to draft Product Requirements (PRDs).

Make it production-ready:

  1. Define the smallest useful scope
    “Generate requirement drafts for existing epics, not full epics, not acceptance tests.”
  2. Design the prompt once, then template it
  • System prompt: the house style and what “good” looks like.
  • Task prompt: fields pulled from the UI (objective, constraints, stakeholders).
  • Red-flag patterns: detect PII, legalese, or forbidden terms before we show output.

3. Add guardrails at three layers

  • Input: PII scrubbing, token limits.
  • Model: Safety filters, rate limits.
  • Output: Policies for “block,” “blur,” or “warn” states + human-in-the-loop.

4. Test like it’s a teammate
Side-by-side A/B with human drafts for a week: clarity, completeness, and edit time saved. Keep a decision log.

5. Feedback loop lives in the UI
Thumbs up/down with a required “why,” plus a one-click “insert citation” fix when the draft lacks sources.

6. Governance notes live with the code
Data flows, retention, vendors, DPIA references, and SOC 2 mapping. Security signs once; you don’t re-debate it every release.

7. Rollout in rings
Internal teams → 10 design partners → GA. Put a feature flag behind it and instrument everything.

The uncomfortable stat you can use to your advantage

A flurry of 2025 coverage quotes an MIT project claiming 95% of GenAI pilots don’t return measurable value. Methodology debates aside, the market heard the signal: random pilots flop; disciplined programs win. Use that urgency to tighten your bar for “ready.”

The 12-Week GenAI Launch Plan (snapshot)♦12 week GenAI Launch Plan | Image Created by the Author

Week 1–2: Problem & guardrails

  • Pick one journey and write a 1-page Opportunity Thesis.
  • Draft data/behavior/user boundaries. Confirm with Security & Legal.

Week 3–4: Template & stub

  • Lock the system + task prompts.
  • Build the stub UI that will survive to GA (no throwaway hack tabs).
  • Set up the evaluation rubric and the golden test set.

Week 5–6: Thin slice in production

  • Ship to the internal ring behind a flag.
  • Instrument: adoption %, edit time saved, re-prompt rate, block/warn events.

Week 7–8: Reliability & review

  • Add caching, retries, and graceful fallbacks.
  • Weekly eval: top 20 failures → prompt or UX fix.

Week 9–10: Compliance & docs

  • DPIA/AI Act notes, SOC 2 mapping, user disclosures, opt-out.
  • Write your Runbook: failure modes, rate limits, on-call paths.

Week 11: Beta

  • 10–20 design partners. Collect qualitative wins and objective deltas.

Week 12: GA

  • Pricing/packaging decision, SLA, support scripts, and known-issues list.
Want the full week-by-week worksheets, prompts, and checklists? Grab the kit linked at the end.
What to measure (so you can defend the roadmap)
  • Adoption: % of eligible users who trigger the AI action at least once per week.
  • Time saved: Median minutes saved on the target task (self-reported + observed).
  • Quality uplift: Reviewer score vs. human baseline on your rubric.
  • Safety: Block/warn rate trend and mean-time-to-fix top violations.
  • Trust: Net trust score from a 3-question in-product survey.
  • Cost to serve: Cost per successful generation, cached hit rate.

Match these to business outcomes you already track — ticket deflection, funnel conversion, and expansion revenue. That’s how you avoid “cool demo, no P&L.”

Anti-patterns that kill GenAI rollouts
  • The “AI Tab.” It feels novel; it dies in a week. Integrate where the pain is.
  • Shadow prompts. If your best prompt lives in someone’s Notion page, you don’t have a product.
  • Model-first decisions. Start with the job-to-be-done, then pick models.
  • No human fallback. If the model hiccups, users need a graceful path, not a dead end.
  • Vague governance. “We’ll review later” becomes a launch blocker when Legal sees the GA note.
Copy-and-paste items for your PRD

Non-functional acceptance criteria

  • All model inputs pass PII scrub.
  • 99th-percentile response time ≤ 4s with cached hits.
  • Output safety: zero “block” leaks in the last 2 weeks of beta.
  • Observability: trace ID links model call to user session and feature version.

Disclosure microcopy

“This draft was generated by an AI assistant. Review and edit before sharing. Learn how we protect your data.”
♦Risk MitigationFAQs you’ll get from your CPO and GC

“Is this AI Act-ready?”
Map your feature to a risk category, document data flows, add user controls, and keep model cards. Many companies are aligning with the EU timeline now to avoid rework later.

“Can we mention SOC 2?”
Yes — explain how AI controls appear in your SOC 2 scope (change management, logical access, data retention). Your audit partner likely has a playbook for this.

“How do we keep outputs safe?”
Use prompt templates with guardrails, red-flag detection, and block/blur/warn states. Treat this as product behavior, not “best effort.”

The close

Your job isn’t to “add AI.” Your job is to remove a user’s pain faster than last quarter, without creating a new one for Legal or Support. That means: a tiny use case, strong guardrails, ruthless measurement, and a launch plan with dates.

If you want the step-by-step worksheets that make this predictable, scoring matrix, guardrail templates, DPIA notes, model eval rubric, rollout checklists, executive comms, and a pricing one-pager, grab my GenAI Launchpad Kit.

Download the playbook:
GenAI Launchpad Kit: From Pilot to Product in 12 Weeks: Governance templates, evaluation tools, and role-based playbooks for PMs.

Sources and further reading
  • McKinsey: state of AI use and maturity (Mar 2025), plus the “1% mature” note. (McKinsey & Company)
  • Pew Research: public vs. expert chatbot use and sentiment (Apr 2025). (Pew Research Center)
  • EU AI Act timeline and enforcement stance. (IAPP, Reuters)
  • ISO/IEC 42001 primer for AI governance. (Amazon Web Services, Inc.)
  • Guardrails best practices for LLM features. (Lasso Security)
  • On the much-discussed “95% fail” claim and critiques. (Fortune, Marketing AI Institute)

Ready to ship with confidence?
Download the GenAI Launchpad Kit: the same templates I use to keep velocity high and surprises low.

GenAI for PMs: 12-Week Roadmap + Governance Templates 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

Google Docs-Style App for Live Text Synchronization

Building a Real-Time Collaborative Editor with JavaScript WebSockets♦Generated by Author

For the longest time, I wanted to understand how apps like Google Docs pull off that real-time magic of multiple people typing at once, edits syncing instantly, and zero messy conflicts.

So, I set out to build my own version from scratch.

What started as a weekend experiment turned into a fully working collaborative editor powered by JavaScript, WebSockets, and CRDTs.

Along the way, I discovered how surprisingly approachable these concepts can be when you break them down. In this article, I’ll share exactly how I built it step by step so you can spin up your own Google Docs-style editor with live cursors, undo/redo, offline support, and persistence.

Project Structure
collab-docs/
├─ server/
│ ├─ index.ts
│ ├─ persistence.ts
│ ├─ auth.ts
│ ├─ package.json
│ └─ tsconfig.json
├─ web/
│ ├─ src/
│ │ ├─ main.tsx
│ │ ├─ Editor.tsx
│ │ └─ types.d.ts
│ ├─ index.html
│ ├─ package.json
│ └─ vite.config.ts
└─ Dockerfile
Server: y-websocket with persistence & (optional) auth

Install

cd server
npm init -y
npm i y-websocket y-leveldb ws express cors jsonwebtoken
npm i -D typescript @types/ws @types/express @types/jsonwebtoken ts-node
npx tsc --init

persistence.ts persist Yjs docs in LevelDB so edits survive restarts.

// server/persistence.ts
import * as Y from 'yjs'
import { LeveldbPersistence } from 'y-leveldb'
const db = new LeveldbPersistence('./yjs-data')
export const getDoc = async (docName: string): Promise<Y.Doc> => {
// LeveldbPersistence manages state & updates for you
// NOTE: y-websocket calls persistence.storeUpdate under the hood
// when bound via setupWSConnection (see index.ts)
await db.getYDoc(docName) // ensure initialized
return db.getYDoc(docName)
}
export const persistence = db

auth.ts (optional) validate a JWT when clients connect.

// server/auth.ts
import jwt from 'jsonwebtoken'
const SECRET = process.env.JWT_SECRET || 'dev-secret'
export const verifyToken = (token?: string) => {
if (!token) return null
try {
return jwt.verify(token, SECRET) as { sub: string; name?: string }
} catch {
return null
}
}

index.ts bootstrap y-websocket, wire persistence & awareness, gate with JWT.

// server/index.ts
import http from 'http'
import express from 'express'
import cors from 'cors'
import { WebSocketServer } from 'ws'
import { setupWSConnection } from 'y-websocket/bin/utils' // util from y-websocket
import { persistence } from './persistence'
import { verifyToken } from './auth'
const PORT = process.env.PORT || 1234
const app = express()
app.use(cors())
app.get('/health', (_req, res) => res.json({ ok: true }))
const server = http.createServer(app)
const wss = new WebSocketServer({ server })
wss.on('connection', (ws, req) => {
// auth: expects ?token=... (or use headers)
const url = new URL(req.url || '', `${req.headers.host}`)
const token = url.searchParams.get('token') || undefined
const claims = verifyToken(token)
if (!claims) {
ws.close(4401, 'unauthorized')
return
}
// IMPORTANT: doc name is path segment after '/yjs/'
// e.g. ws://host/yjs/<docId>?token=...
const docName = url.pathname.replace(/^\/yjs\//, '')
// setupWSConnection wires yjs, awareness, & persistence
setupWSConnection(ws, req, { docName, persistence })
})
server.listen(PORT, () => console.log(`y-websocket on :${PORT}`))

Run:

TS_NODE_TRANSPILE_ONLY=1 npx ts-node server/index.ts
Client: Vite + React + TipTap + Yjs

Install

cd ../web
npm create vite@latest web -- --template react-ts
npm i @tiptap/react @tiptap/starter-kit yjs y-websocket y-indexeddb randomcolor

src/Editor.tsx TipTap bound to a shared Yjs document.

import React, { useEffect, useMemo, useState } from 'react'
import { EditorContent, useEditor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import * as Y from 'yjs'
import { WebsocketProvider } from 'y-websocket'
import { IndexeddbPersistence } from 'y-indexeddb'
import randomColor from 'randomcolor'
// Minimal awareness cursors using CSS selection + awareness meta
type Presence = { name: string; color: string }
interface Props {
docId: string
serverUrl: string
token?: string
userName: string
}
export default function Editor({ docId, serverUrl, token, userName }: Props) {
const [status, setStatus] = useState<'offline'|'connecting'|'online'>('connecting')
// 1) Create a shared Y.Doc per editor
const ydoc = useMemo(() => new Y.Doc(), [docId])
// 2) Offline cache: IndexedDB (instant reload, offline-first)
useEffect(() => {
const idb = new IndexeddbPersistence(`doc-${docId}`, ydoc)
idb.on('synced', () => console.log('IndexedDB synced'))
return () => idb.destroy()
}, [docId, ydoc])
// 3) WebSocket provider (sync + awareness)
const provider = useMemo(() => {
const url = `${serverUrl.replace(/\/$/, '')}/yjs/${docId}?token=${token ?? ''}`
const p = new WebsocketProvider(url, docId, ydoc, { connect: true })
p.on('status', e => setStatus(e.status === 'connected' ? 'online' : 'offline'))
// set presence
const color = randomColor({ luminosity: 'bright' })
p.awareness.setLocalStateField('user', { name: userName, color } as Presence)
return p
}, [docId, serverUrl, token, ydoc, userName])
// 4) Create a Yjs-backed ProseMirror document
const editor = useEditor({
extensions: [StarterKit],
onUpdate: () => { /* local hooks if you want */ },
editable: true,
content: '<p>Type with friends...</p>',
})
// 5) Bind TipTap ↔ Yjs (simple approach using XML fragment)
useEffect(() => {
// ProseMirror/Yjs binding via y-prosemirror is the robust way.
// For brevity, we'll map editor <-> yXmlFragment using TipTap's built-in built on prosemirror-model
// Quick'n'clean approach:
// @ts-ignore: access ProseMirror state
const { state } = editor ?? {}
if (!editor || !state) return
// Create a Y.XmlFragment to hold the doc
const yXmlFragment = ydoc.getXmlFragment('prosemirror')
// Dynamically import to keep bundle smaller
import('y-prosemirror').then(({ ySyncPlugin, yCursorPlugin, yUndoPlugin, undo, redo }) => {
// Reconfigure editor with collaborative plugins
editor.chain().setContent('').run()
editor?.view?.setProps({
state: editor.state.reconfigure({
plugins: editor.state.plugins.concat([
ySyncPlugin(yXmlFragment),
yCursorPlugin(provider.awareness),
yUndoPlugin()
])
})
})
// expose undo/redo
;(window as any).yUndo = undo
;(window as any).yRedo = redo
})
return () => provider.destroy()
}, [editor, provider, ydoc])
// Presence list
const [peers, setPeers] = useState<Presence[]>([])
useEffect(() => {
const handler = () => {
const states = Array.from(provider.awareness.getStates().values()) as any[]
setPeers(states.map(s => s.user).filter(Boolean))
}
provider.awareness.on('change', handler)
handler()
return () => provider.awareness.off('change', handler)
}, [provider])
return (
<div className="editor-wrap" style={{ maxWidth: 900, margin: '2rem auto', fontFamily: 'Inter, system-ui' }}>
<header style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
<h3>Doc: {docId}</h3>
<div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>
<span style={{ width: 10, height: 10, borderRadius: '50%', background: status === 'online' ? 'limegreen' : 'gray', display: 'inline-block' }} />
<small>{status}</small>
</div>
</header>
<div style={{ display: 'flex', gap: 12, alignItems: 'center', margin: '0.5rem 0' }}>
{peers.map((u, i) => (
<span key={i} style={{ background: u.color, color: '#111', padding: '2px 8px', borderRadius: 12 }}>
{u.name}
</span>
))}
<button onClick={() => (window as any).yUndo?.(ydoc)}>&larr; Undo</button>
<button onClick={() => (window as any).yRedo?.(ydoc)}>Redo &rarr;</button>
</div>
<div style={{ border: '1px solid #ddd', borderRadius: 12, padding: 16, minHeight: 280 }}>
<EditorContent editor={editor} />
</div>
</div>
)
}src/main.tsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import Editor from './Editor'
const token = new URLSearchParams(location.search).get('token') ?? undefined
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<Editor
docId="team-notes" // try changing this to create more docs
serverUrl="ws://localhost:1234" // your y-websocket server
token={token}
userName={`User-${Math.floor(Math.random()*1000)}`}
/>
</React.StrictMode>
)

Run the client

npm run dev

Open two browser tabs type in one, see it in the other, complete with live cursors, undo/redo, and offline support.

Why this works (CRDTs in one minute)
  • Yjs represents your doc as a CRDT. Each user’s edits are merged without locks or a central “source of truth.”
  • If a client goes offline, edits are buffered and reconciled when it reconnects.
  • Awareness (presence) is a side-channel that broadcasts lightweight metadata user name, color, cursor selection not part of the document history.
Quote: “The only way to get rid of conflicts is to embrace them.” every CRDT paper, basically.
Add read-only & roles

Simple rule: assign roles in your token claims, check before enabling editing.

// client (pseudo)
const claims = parseJwt(token)
const canEdit = claims.role === 'editor'
editor.setEditable(canEdit)

On the server, reject connections or send awareness flags based on role.

♦Generated by Author6) Basic versioning & snapshots

For legal or audit trails, persist periodic snapshots (e.g., every N updates) by storing encoded Yjs state:

// server: take snapshot
import * as Y from 'yjs'
import { persistence } from './persistence'
async function snapshot(docName: string) {
const doc = await persistence.getYDoc(docName) // from y-leveldb
const state = Y.encodeStateAsUpdate(doc)
// save 'state' to S3 or DB with timestamp
}

Restoring = load a fresh Y.Doc and apply the update.

Comments & annotations

Add a parallel Y.Map for comments keyed by block id:

// in client, once you have ydoc:
const comments = ydoc.getMap('comments')
// comments.set(commentId, { text, user, pos: { from, to }, createdAt })

Render anchored UI in TipTap using decorations.

Mentions & slash commands

TipTap supports custom extensions. Create a / command palette; store mentions as inline nodes with attrs { id, label }, and resolve to profiles via API.

Search, replace, & highlights

Keep full text with y-prosemirror helpers or derive it on the fly. For large docs, index blocks (headings/paragraphs) for faster find-in-doc.

Media & Images

Store images in object storage (S3, Cloud Storage). Insert nodes with { src, width, height }. Do not embed base64 in the CRDT keeps doc diffs tiny.

Access Control: doc scoping

Namespace docs per team: /yjs/{teamId}:{docId} and validate claims: claims.teams.includes(teamId).

Rate Limiting & DoS Safety

Behind a reverse proxy (NGINX/Caddy), enable:

  • WS connection caps per IP
  • Message size limits
  • Idle timeouts
Observability
  • Server: log connection counts, doc update throughput, memory footprint.
  • Client: track provider status transitions; report reconnect storms.
Testing collaboration
  • Open 3–4 tabs, apply random edits, disconnect one tab, edit others, reconnect → confirm no lost updates.
  • Fuzz test: apply interleaved inserts/deletes; verify document equality across peers.
Dockerize & ship

Dockerfile (server + static web in one image is fine for demo; in prod, split)

# build web
FROM node:20 AS web
WORKDIR /app
COPY web/package*.json web/
RUN cd web && npm ci
COPY web/ web/
RUN cd web && npm run build
# server
FROM node:20
WORKDIR /srv
COPY server/package*.json server/
RUN cd server && npm ci
COPY server/ server/
COPY --from=web /app/web/dist /srv/public
ENV PORT=1234
EXPOSE 1234
CMD ["node", "server/index.js"]

(If you keep TypeScript, compile in the image or run with ts-node in dev.)

Swap-ins & extensions (choose your flavor)
  • Editor: Quill, CodeMirror 6, Slate, Plate, Lexical
  • Transport: y-webrtc (peer-to-peer), y-socket.io
  • Persistence: Postgres (via y-redis + worker), S3 snapshots
  • Auth: NextAuth/JWT, Clerk, Auth0
  • Features: track changes, per-block permissions, export to Markdown/PDF
What you’ve got now
  • True real-time collaborative editor with:
  • Conflict-free merging (CRDT)
  • Presence & cursors
  • Offline edits → auto-merge
  • Server persistence
  • Optional JWT auth
  • A clean path to production: observability, roles, snapshots, Docker.

Google Docs-Style App for Live Text Synchronization 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

FURTHER REVIEW OF CHLOROBENZENE DNAPL EVIDENCE AS FAR BACK AS 1998

 

One of my favourite quotes(?) eh statements (I can find the quote if needed) is that the purpose of off-site pumping well W4 was to pump large amounts of dissolved chlorobenzene from the Elmira Aquifers. Early on (1998) this pumping well was screened in both the Municipal Upper (MU) and the Municipal Lower (ML)  Aquifers. Indeed this pumping well pumped a couple of thousands of kilograms worth of chlorobenzene from its' location beside the Howard St. water tower and observation well OW57-32(R). Oh and I might add it was pumping high strength chlorobenzene with early concentrations including 3000, 3300, 3400, 4400 and 5600 parts per billion (ppb.) These concentrations equal or exceed the 1% Solubility Rule which states that concentrations greater than 1% of the compound's (chlorobenzene) solubility in water means that most likely free phase DNAPL is nearby!

Which it was and was actually pumped up from where it was sitting on the aquitard 33 metres below ground surface during the replacement of observation well OW57-32 with OW57-32 (R) . "R" stands for replacement. This occurred around June 1998. As it took me some time to find this out I can only surmise that I was otherwise occupied with a $2,000,000 libel suit filed against me and my wife by an ignorant bitch with support from her schoolboard. She got zero ($) and sure as hell no apology.

Further chlorobenzene DNAPL evidence has emerged over the years which I have been posting about here particularly the last week or so. All the guilty parties have denied these DNAPLS and others since the early 1990s at least. Oh and what is even more ironic/hypocritical is Dr. Neil Thompson's Conceptual Site Model (2017) in which he stated that there was an excess 2,000 kilograms of chlorobenzene over expectations and calculations in the Elmira Aquifers. Allegedly nobody knew where it came from.

BULLS*IT it was free phase DNAPL that gravity flowed most likely from the south-west corner of the Uniroyal Chemical site and which recently has been identified by Jesse Wright (Arcadis Inc.) has a number of potential chlorobenzene sources near First St., Union St. and Howard Ave. in Elmira.


Code Like a Girl

CSS Colour Chaos

Why do we have so many ways to represent colours?

You know what always cracks me up? The fact that in CSS you can write the same exact colour four different ways, and the browser just nods along like, “yep, that’s valid.” Imagine if you could spell “blue” as blu, blew, bloo, or bl00 and your English teacher gave you an A every time. That’s basically what CSS is doing with colours.

♦Photo by Robert Katzki on Unsplash

My go-to is HEX codes, because it is easy to write and look simple, what more could I ask for as a web developer!? But recently I’ve been digging into how all the formats actually work, and honestly, it’s fascinating in a very “why did no one explain this sooner” kind of way.

♦Screenshot from HTML Color Codes (htmlcolorcodes.com/).

Let’s start with RGB. On the surface, it looks like nonsense, three numbers in parentheses, separated by commas. But really, it’s just a recipe. Red, green, blue. Mix them in different intensities and voilà! Every colour on your screen. The numbers go from zero to 255, which sounds random until you realise computers love working in chunks of 8 bits. Eight bits give you 256 possible values, so zero is “no light at all,” and 255 is “blast me with max brightness.”

♦Screenshot from ePackprinting, “What Is RGB Color?” (www.epackprinting.com/support/what-is-rgb-color/).

So if you write rgb(255, 0, 0), you’re screaming “red only, thanks,” while rgb(0, 0, 0) is pure black because there’s no light. Add them together. like rgb(255, 255, 255),and you get white, because that’s how light works. Suddenly, those numbers stop being scary and start making slightly more sense.

Now, once you’ve got your head around RGB, you meet the cooler sibling: RGBA. The “A” stands for alpha, and it controls how see-through the colour is. That last number is basically a transparency slider. Write rgba(255, 0, 0, 0.5), and you get red at half-strength, blending with whatever’s behind it. It’s like putting tracing paper over your colour.

♦Screenshot from RGBA Color Picker (rgbacolorpicker.com)

The term “alpha” isn’t just random; it comes from early computer graphics, where people were figuring out how to layer one image on top of another.

They came up with this formula that looks terrifying at first glance:

// The Alpha Blending Equation
result = alpha * foreground_color + (1 - alpha) * background_color

But what it really means is simple. If alpha is one, you only see the thing on top. If alpha is zero, you only see the thing underneath. If it’s somewhere in the middle, you get a mix. It’s kind of like making a smoothie: one banana, half a mango, a splash of yoghurt, but with pixels instead of fruit.

Then we’ve got HEX codes. These are the little six-digit Labubu monsters that start with a hashtag: #FF5733 or #00FF00. They’re just another way to write RGB, except in hexadecimal, which is base-16 instead of base-10.

Don’t panic, though. All it means is the numbers run from zero to fifteen, and since computers are obsessed with powers of two, it makes sense to them. For humans, it’s less intuitive, but it looks neat. FF is just 255 in disguise, and 00 is zero. So #FFFFFF is white, and #000000 is black.

♦Image Color Picker (imagecolorpicker.com)

There’s also shorthand, where #FFF magically becomes #FFFFFF. It’s like writing “lol” instead of “laughing out loud.” Convenient, but only works for certain colours.

Finally, we have HSL, which stands for hue, saturation, and lightness. This one feels more human-friendly because instead of juggling scary numbers, you’re basically describing a colour like you would to your friend. Hue is the actual colour on the rainbow wheel (red, blue, green, etc.). Saturation is how intense it is (greyed-out pastel versus neon nightmare). And lightness is whether it’s closer to black, white, or somewhere in between.

So if you write hsl(200, 100%, 50%), you’re saying, “Give me a bright, bold blue.” Dial the saturation down to 20% and suddenly it’s a soft, muted baby blue. Slide the lightness up to 90% and you’re in pastel land. It’s intuitive, like turning knobs on a paint mixer rather than calculating secret robot numbers.

♦Screenshot from www.w3schools.com/colors/colors_hsl.asp

Now, the real question: why does CSS give us all these choices? Honestly, it comes down to context.

  • Some developers might like RGB because it’s close to how computers think.
  • Designers often like HSL because it’s easier to tweak a colour without messing everything up.
  • HEX became the internet’s shorthand because it’s compact and copy-pastable (my favourite)
  • RGBA is there for when you want transparency without pulling your hair out.
♦Photo by Ruvim Noga on Unsplash

Outside of CSS, the colour party doesn’t stop. Printers use CMYK because they’re working with ink, not light. Scientists and hardcore colour nerds use LAB because it matches human vision more closely. And the latest versions of CSS are even introducing fancy new options like color() and lch() for super-precise shades. It’s like the universe looked at our four choices and went, “nah, not enough.”

So yeah, you get to choose your flavour. There are endless ways to pull it off. At the end of the day, colours in CSS are kind of wild, chaotic, yes, but also lowkey magical.

No matter which route you take, you end up with the same vibe on your screen, just tinted your way. It’s a solid reminder that there’s never just one “right” path… and honestly, that’s the heart of coding. I mean, just peek at all the totally different answers people drop on LeetCode.

CSS Colour Chaos was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


House of Friendship

A Taste of Home – and Community

Every Thursday morning, Victoria Hills Community Centre fills with loud laughter and the aroma of a home-cooked meal.

The Multicultural Cooking program is one of many Neighbourhood programs offered at House of Friendship. Each week, people come together to cook, laugh, 

♦and spend time with others in the community.

For many, it’s more than just recipes; it’s about finding a community. Many of the participants are newcomers to Canada, so having a safe, relaxed place to share their week gives them a chance to practice their English without feeling nervous or judged.

“It gives people a reason to come out, to feel like they’re part of something,” said one of the participants. “Some folks have been coming for years. They really feel at home here.”

Houwaida and Fereshte are two familiar faces in the group. What started as a chance to cook together each week turned into something more. Both now volunteer with the program and help create the same warm, welcoming space they once received.

While the cooking program brings everyone together over a shared meal, it’s the lasting friendships that continue outside of Thursday mornings that are helping build a network of support for individuals who call this community home.

Programs like this are only possible because of generous supporters like you. Your gifts help create welcoming spaces. Your donations help create a caring community where people can connect, learn, and belong. Thank you for helping build a community where everyone can belong and thrive!

The post A Taste of Home – and Community appeared first on House Of Friendship.


House of Friendship

Food Fun and Friendship

Food, Fun and Fellowship, a weekly program at Sunnydale, wrapped up for the summer with a vibrant community potluck. Tables overflowed with homemade dishes from around the world, each one carrying the rich aromas, favorite flavors, and heartfelt stories of the people who made them. More than just a meal, it was a joyful way for participants to share a piece of who they are.

Cooking was never the main focus of the program. It’s about uniting individuals from diverse backgrounds and fostering a genuine feeling of community. Every new member has a unique journey and story to tell, and individuals who were once strangers now encourage one another, laugh together, and exchange recipes.

As everyone gathered together, sampling different cuisines and sharing their country’s customs, a strong sense of community filled the room. It was a place where people felt welcome, could learn from one another, gain appreciation for other cultures, and take pride in their own.

Many thanks to everyone who prepared, shared, and contributed to making it such a special day. It was the ideal way to commemorate all that this group has accomplished together this summer.

Thank you for making programs like this possible. Your generous support creates safe spaces for newcomers to feel at home, connect with others, and build relationships that will last a lifetime.

The post Food Fun and Friendship appeared first on House Of Friendship.


Andrew Coppolino

Carbonara for exquisite pasta (with recipe)

Reading Time: 2 minutes

Carbonara is likely a Roman dish of egg, cheese and some sort of pork. The word itself comes from the Latin word for “coal.” So, theoretically, a carbonara has to do with any piece of meat cooked over charcoal.

Over time, the dish became pretty firmly entrenched in its use of pancetta or guanciale and usually with a spaghetti or fettuccine.

As for the cheese, well that’s traditionally Pecorino-Romano or Parmigiano-Reggiano — or a luscious combination of the two.

With so few ingredients, the dish is actually tricky to make successfully and takes some trial and error to get just right.

♦Carbonara: a supremely luscious dish (Andrew Coppolino).

Here’s a recipe from chef Kyle Rennie, who has cooked at Auberge de Pommier, Thuet Bakery, Splendido and with Jason Parsons and David Lee. He knows his stuff and brings a solid pedigree with him.

I’ve tried several of Rennie’s dishes when he was in Waterloo Region and have his version of carbonara a few times at home. Give it try! I think you’ll enjoy it too.

Kyle Rennie’s spaghetti carbonara

Spaghetti carbonara
Serves 4

Ingredients
1 lb. spaghetti or other long pasta
4 large eggs
8 oz. guanciale (or bacon or pancetta), small dice
3 tablespoons extra virgin olive oil
3 cups Parmigiano Reggiano, finely grated
1 tablespoon kosher salt (plus more to taste)
Freshly cracked black pepper
1 shallot, minced
1 garlic clove, crushed
1 half cup parsley, chopped
Lemon juice to taste

Method
Bring 6 quarts of well-salted water to a boil.

Crack eggs into a large mixing bowl and add cheese, salt and a good helping of black pepper. Lots of pepper and cheese are key to this pasta. Beat together with a fork.

Heat olive oil on medium heat. Add diced guanciale and cook until the fat has rendered, and the guanciale is crispy. Keep fat in the pan. Add shallot and garlic clove and add a pinch of salt. Turn to low heat and cook shallot until translucent.

Add pasta to boiling water. Stir. Cook to al dente. Put your pan on medium high heat. Add a 3-oz ladle of pasta water to your pan. This starchy water will help coat sauce to your pasta. Add pasta to your pan and reduce until water is mostly evaporated away. Remove garlic clove.

Add hot pasta with bacon to your mixing bowl with your eggs. Toss vigorously. The heat from the pasta will cook the eggs slightly, creating a creamy cheesy sauce as you toss in the bowl. Add parsley and a small squeeze of lemon juice.

Grate some fresh Parmigiano on top and serve.

Check out my latest post Carbonara for exquisite pasta (with recipe) from AndrewCoppolino.com.


Cordial Catholic, K Albert Little

How to Convert to Catholicism without Destroying Your Marriage (w/ Dr. Ray Guarendi)

-/-

James Davis Nicoll

<span class="pull-single">‘</span>Til The Night Is Gone / Queen Demon (The Rising World, volume 2) By Martha Wells

Queen Demon is the upcoming second entry in Martha Wells’ secondary-world fantasy series, the Rising World.

The Hierarchs dominated most of the world before they were overthrown. Whence they sprang, from what place and culture, is something of a mystery. There are no local Hierarchs to question; if any survive, they fled beyond the reach of Kai and his allies in the Rising World Coalition.

If any survive, they will no doubt try to regain their empire. Therefore, it is vitally important to learn all that can be learned about the Hierarchs. Unfortunately the Hierarchs made a point of destroying any universities and libraries they found1. Libraries are slowly being rebuilt, but at their current stage will be of little help in the matter. What’s left? Fieldwork.


KW Motion

All the Happy Hour Deals in Kitchener–Waterloo

Looking for the best Happy Hour in Kitchener–Waterloo? We’ve pulled together a master list of bars and restaurants offering discounted drinks and eats across the region. Whether you’re planning a...

Source


Brickhouse Guitars

Boucher Guitars at The Fretboard Summit 2025

-/-

Code Like a Girl

Why Backup & Archiving Matter for Every Organisation

Even the cloud can fail you. Here’s how to protect what matters most.

♦Image created using CanvaCloud’s a Lifesaver, Until It Isn’t

Let’s be real: we all love the cloud. Stash your files, share them, work with teammates who live on other continents; pretty sweet, right? Especially when everyone’s working from their kitchen table these days.

But guess what? Easy doesn’t mean bulletproof.

Yeah, we just got burned.

The One Click We Didn’t Make (And Paid For It)

So, we’re on this well-known cloud platform, right? Docs, plans, all our stuff living happily in the digital sky. No more USB sticks or “Is this the latest version?” drama. Felt like we were finally living in the future.

Then boom, our subscription quietly expired. Didn’t even notice the “Your payment failed!” emails. Next thing you know, poof. Years of documentation…gone. No warning, no “last chance,” just a digital black hole where our work used to be.

Oops.

The Dumb Stuff We Told Ourselves

“We have auto-renew, it’ll just work.” “We haven’t had problems, so we never will.” “The cloud’s got us covered!”

Famous last words. Turns out, the universe doesn’t care about your assumptions. We spent days frantically trying to piece stuff back together from scraps and memory. It failed. Big time.

Here’s the cold truth: thinking you’re safe is not the same as being safe.

When a Toddler Outsmarts You (And Destroys Your Photos)

This wasn’t my first rodeo with lost data. Flashback: my kiddo, age two, decides my phone looks “dirty” and dunks it in a water filled bucket. Genius move. Hadn’t synced my photos to the cloud. No backup drive. Nothing.

Memories? Gone forever. Thanks, kid.

So yeah, now I cough up for a backup drive. I let the auto-backup run. It’s worth every penny and every minute spent setting it up. Trust me.

You Think It Won’t Happen To You? Think Again.

I see it all the time, people online posting desperate pleas like, “Missed my renewal, help! Can I get my files back?” Sometimes the answer’s yes, but honestly, it’s usually nope. Not happening.

Even the “big fishes” trip up. Google Cloud once nuked the backups of a $135 billion Aussie pension fund. Nobody’s immune.

Bottom line: your backup plan is on you. Not your cloud vendor.

Backups: Not Cool, But Seriously Necessary

Everybody gets that you should back up your source code or client data. But what about the other stuff?

  • Project docs
  • Logos and ads
  • Design files
  • Meeting recordings
  • Those random “just in case” notes

Lose those and you’re toast. Ransomware, accidental deletes, a missed payment, any of that can ruin your week (or year).

Here’s What We Do Now (And You Should Too)

  • Daily backups from the cloud to our own system
  • Extra copies on encrypted drives
  • We actually check the backups work (wild, right?)

Not exactly thrilling. But it keeps us sleeping at night.

And if you’re outsourcing? Make sure they actually test recovery, not just set and forget.

Don’t Just “Trust the Cloud.” Make It Bulletproof.

If you’re running a bigger shop, or your data’s the secret sauce, look at the serious gear:

  • Veritas
  • Veeam
  • Commvault
  • Dell EMC
  • IBM
  • Acronis

Those guys bring the redundancy, the alerts, the bells and whistles you just don’t get from the basic cloud stuff.

Back Up or Regret It Later

Data loss doesn’t care how smart you are or what you pay for cloud storage. Want to keep your business or your memories safe? Make backup a habit, not an “oops, maybe tomorrow” thing.

So yeah:

  • Back up your cloud.
  • Back up your devices.
  • Back up your business.
  • Do it everywhere you can. Automate it. Start now.

Got your own horror story? Or a genius backup tip? Drop it below. Misery loves company, and maybe we’ll all get a little smarter.

Why Backup & Archiving Matter for Every Organisation was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


Github: Brent Litner

brentlintner starred awslabs/amazonq.nvim

♦ brentlintner starred awslabs/amazonq.nvim · September 3, 2025 08:04 awslabs/amazonq.nvim

Neovim Plugin for Amazon Q Developer

Lua 137 Updated Sep 3


Elmira Advocate

WHY DO THEY ADMIT THAT NDMA IS IN THE BEDROCK AQUIFER BUT DENY THAT CHLOROBENZENE IS?

 

Well let's see now. Could it be because chlorobenzene is a "sinker" i.e. it is a DNAPL chemical with a density greater than water (1.0) and it sinks downwards through aquifers and aquitards and because of that is even more likely than NDMA to pollute the Bedrock Aquifer beneath the two drinking water aquifers namely the Municipal Upper (MU) and Municipal Lower (ML)?  Or could it be because courtesy of  Arcadis (Jesse Wright) we have more evidence of chlorobenzene DNAPL having left the Uniroyal site, presumably a long time ago, and gravity flowing to the First St., Union St. and Howard Ave. area? Now Arcadis at the June 19/25 public TRAC meeting indicated potential multiple (6-8?) locations of chlorobenzene sources off the former Uniroyal site. I really don't expect them to name six to eight different additional dirty polluters and rightly or wrongly I guess that I'm assuming that this is chlorobenzene DNAPL that gravity flowed off the Uniroyal site decades ago.  

That makes no sense to be denying dissolved chlorobenzene in the Bedrock Aquifer for those reasons. Similarly to deny chlorobenzene's presence because we know that pumping well W4 closed off their well screen in the Municipal Upper Aquifer (MU) many years ago and focused solely on their lower well screen in the Municipal Lower Aquifer (ML) is ridiculous. Oh and by the way at this location near the Howard St. Water Tower the ML is in direct contact with the Bedrock Aquifer. No low permeability aquitard between the two. Finally way back in 2006 I discovered an interesting tidbit in a monthly Progress Report describing the discovery of free phase DNAPL at the bottom of well OW57-32 later known as OW57-32R. Now of course Chemtura at the time just like GHD and Lanxess today won't use the term "free phase" DNAPL. The written words in the Progress Report were clear whereas Conestoga Rovers (CRA) did their ever loving best to muddy and make unclear the situation. They absolutely did not want to admit that which seemed obvious and their excuses and reasoning were weak.

O.K. so if it's not for all the above reasons then why lie about dissolved chlorobenzene in the Bedrock Aquifer.? Is that aquifer not being pumped and treated like all the others? Well in fact it is as they need to clear the NDMA out of it as well as the other aquifers. Maybe the real problem for them is the fear and likelihood that the same chlorobenzene DNAPL found at OW57-32 also flowed through the nearby window between the ML and the Bedrock Aquifer (BR). If indeed that occurred then rest assured free phase DNAPL which is very bad in sand and gravel aquifers is a thousand times as bad lodged in the fissures and fractures of weathered Bedrock. DNAPL is always difficult and expensive to deal with properly. Uniroyal and fellow travellors, thanks to the joys of corrupt politicians making decisions for their benefit versus the public's, have not been ordered to clean up the DNAPLS either on their site or off their site. 

This is why the next Control Order and phony "mandated"  cleanup date has been forecast out another thirty to even fifty years. At that time likely our authorities will continue yet again lying to the public. I believe that chlorobenzene DNAPL is in the Bedrock Aquifer under Elmira but I am confident that Lanxess and fellow travellors will use all possible means NOT to find it. That is the tried and true method of polluters avoiding proper cleanups. 


Agilicus

Password Stuffing

-/-

Agilicus

Outbound Only Networking: What Does That Mean? Why Do I Want It?

-/-

Code Like a Girl

Is Your Leadership Too Reactive?

Reactive leadership takes away your ability to lead with a vision, prioritize what matters and prevents you from building an organization where fewer fires need to be put out in the first place.♦Credit: Author

When daily urgencies and immediate results take priority over long-term goals, when quick fixes are the default mode of execution instead of big-picture thinking or when you spend most of your time firefighting issues — putting out fires, responding to crises and reacting to challenges that surface unexpectedly — it may feel like you’re accomplishing a lot. Problems are being solved, challenges are being resolved and things are getting done. You’re highly engaged, super involved and extremely busy in trying to keep things under control and prevent them from turning into chaos.

But, reacting to problems instead of anticipating them, making decisions in a haste instead of being deliberate and responding to shifting demands after they’ve occurred instead of planning and shaping the future makes you lose your effectiveness as a leader. Being constantly busy, overwhelmed and stressed does not lead to forward progress, it keeps the possibility of a better future out of reach.

Reactive leadership takes away your ability to lead with a vision, prioritize what matters and prevents you from building an organization where fewer fires need to be put out in the first place — same issues keep resurfacing, teams feel directionless and being stuck in survival mode for too long leads to exhaustion and burnout.

Reactive leadership is not always bad though. Responding quickly and decisively when dealing with difficult circumstances is important as a leader because irrespective of how well you’ve planned, some things are bound to fall through the cracks. You can’t predict every scenario. You can’t foresee every challenge. In such moments, reactive leadership is not only necessary, but useful — it helps you pivot quickly and seize unexpected opportunities, the ability to stay calm under pressure builds resilience and reacting quickly when conditions change rapidly can be a competitive advantage. Problem occurs when it’s your default leadership style — when what you do is shaped by external pressures and short-term impulses instead of being grounded in values and foresight.

“If you find what you do each day seems to have no link to any higher purpose, you probably want to rethink what you’re doing.”
― Ronald Heifetz

Here are the five questions I would ask myself every month to determine if my leadership style was too reactive. Try them out as you might be surprised with the answers:

Do you let external triggers control your schedule?

Proactive leaders start each day with a clear agenda — tasks to complete, meetings to attend and problems to solve such that every small step is aligned with a long-term goal. They do address unexpected challenges as they arise and may also carve out time to handle chaotic situations, but unplanned activities like these are a one-off event and not something that consumes their days and weeks.

Their schedule may look packed, but it’s not filled with useless meetings or time-wasting activities. They say “no” to many things so that they can say “yes” to work that matters. By pre-blocking thinking time and factoring in effort required to lay out a clear strategy for the organization, proactive leaders do not let external triggers control their schedule.

Reactive leaders, on the other hand, start their day by reacting to emails, messages and calls instead of following a clear plan. They wait for problems to arise before acting, instead of proactively planning and preparing for them. They’re so busy addressing the issues that show up each day — production issues, customer escalations, unhappy stakeholders and delivery delays — that there’s hardly any time left to think about the future.

Filling days with unplanned activities keeps them busy and creates an illusion of productivity — they’re working hard, things are getting resolved and requests are being fulfilled. But, letting their schedule be governed by external events does not lead to progress. They miss critical opportunities because they don’t plan for them. They continue operating with old methods because they don’t invest in new practices. They keep building products that are not in demand because they don’t foresee future needs.

To identify if you’re a reactive leader, answer these questions:

  1. Is your calendar filled with meetings, issues and requests from other people or is it carefully organized to include time for reflection, strategy and forward planning?
  2. How much of your time each day do you spend on unplanned activities and how much is it based on a pref-defined agenda?
  3. How frequently do you say “no” to things that don’t add value to make space for work that matters?
  4. Do you end the day feeling accomplished or do you complain about not achieving anything significant?
  5. Do you feel exhausted and drained out each day from constantly putting out fires or do you feel a sense of calm from staying in control?
“Most of us use our calendars all wrong: we don’t schedule work; we schedule interruptions. Meetings get scheduled. Phone calls get scheduled. Doctor appointments get scheduled. You know what often doesn’t get scheduled? Real work. All those other things are distractions. Often, they’re other people’s work. But they get dedicated blocks of time and your real work becomes an orphan.”
― Eric Barker

If you don’t intentionally plan and schedule important things on your calendar, external circumstances, conditions and other people will control your schedule. Reacting to things as they show up will keep you forever running without reaching anywhere. Stop playing a catch-up game. Set your own agenda and lead with it.

Do the same issues keep resurfacing again and again?

When issues show up at work, proactive leaders show genuine curiosity to understand the problem and then identify ways to fix it. They aren’t interested in the symptom because they want to dig deeper into the root cause that triggered it. Root cause analysis, though a little time consuming, is worth their effort. It not only prevents them from jumping into short-term solutions or quick fixes, but also find creative ways to tackle the root cause and prevent it from resurfacing again and again.

Root cause analysis is hard — they need to look beyond the evidence right in front of them to uncover hidden issues. They need to fight the urge to quickly fix the problem and make it go away. They also need to secure a buy-in from stakeholders to invest more time and resources into it. In a fast-paced environment, this comes with a cost, but proactive leaders understand that not addressing the right problem at the right time is often more costly.

Reactive leaders thrive on new problems that show up at work. It gives them something to solve and keeps them busy. With two main goals of instant gratification and short-term relief, they try to salvage the situation by patching it with quick, dirty solutions without any regard for its long-term impact. They silence people who question their quick-fix mentality, ignore concerns raised and promote a culture of superficial thinking and never-ending chaos. Teams spend most of their time mending problems instead of building systems that prevent them.

Fixing the symptom gets them a temporary applause, but when the same issue keeps popping up every now and then, people in the team begin to question their credibility. After all, a leader who keeps prioritizing immediate results over long-term stability can’t be trusted — there’s growing frustration and resentment from people in the team who can’t keep up with this attitude. Some stop listening to their leaders, others quietly settle in and accept mediocrity, while those who can’t stand it eventually quit.

To identify if you’re a reactive leader, answer these questions:

  1. Do you accept superficial analysis or encourage your team to dig deeper into problems to identify the actual root cause?
  2. Do you prioritize short-term fixes without considering their impact in the long-run?
  3. How do you react when people in the team request more time to investigate an issue?
  4. How often do you plan to put a long-term solution for a quick fix approved to address an urgent situation?
“Solving a problem without solving its root cause is like taking a step forward and then one back. Many enjoy the dance, but then complain it doesn’t bring them anywhere.”
— Luca Dellanna

If you keep applying band-aids to problems, they’ll soon rip off, leaving a bigger gap for you to fill. More time, resources and energy will be wasted in trying to resolve recurring issues. Don’t default to damage control with a short-term fix. Identify the root cause and lead with a long-term perspective.

Are your decisions driven by mood and emotions?

When making decisions, proactive leaders make a conscious attempt to keep their biases, emotions and personal beliefs from clouding their judgment. They invite multiple perspectives, encourage those who disagree with them and take into account current and future expectations before locking down on the path to take. Their decisions aren’t grounded in random assumptions or personal opinions — careful analysis, multiple data points, past experience and many other factors are taken into consideration.

When making high stakes decisions, proactive leaders slow down instead of rushing through the process because important details can be overlooked when people are in a haste. This does not mean they take forever to decide or don’t set aside a deadline to commit. It just involves being careful, cautious and intentional in reaching a conclusion. They don’t succumb to pressure or unnecessary demands from others — making a good decision is their job, not pleasing others.

Reactive leaders think and decide impulsively. When something appeals to them or aligns with their beliefs, they quickly move on with the decision instead of taking a moment to step back and vet it thoroughly. They also have the tendency to flip-flop between decisions — an excellent idea when they were in a great mood may no longer be worthy when dealing with a frustrating situation at work. Intuition is good when backed with knowledge, experience and data. But, it can be disastrous when it’s solely driven by moods and feelings.

When dealing with stress and pressure, reactive leaders make even more blunders. They commit to aggressive deadlines, say yes to projects that don’t make sense and may let go of a great opportunity that requires time and commitment. Achieving anything significant becomes a real battle in the team — there’s a lot of confusion and uncertainty involved as projects are abandoned, priorities are changed and people in the team lack clear goals. The whole organization suffers when a leader makes abrupt decisions that aren’t backed by data and logic.

To identify if you’re a reactive leader, answer these questions:

  1. Do you have the habit of making decisions in the spur of a moment without taking the time to think it through?
  2. Do you factor in multiple perspectives and alternative views into your decision-making process or do you solely rely on your personal beliefs and opinions?
  3. How often do you change decisions and is it backed by data or based on a hunch?
  4. How do your decisions typically turn out — do they achieve the desired outcomes or end up being a poor choice?
“Leadership requires one to make decisions that may not be liked by everyone, but great leaders always ensure that the choices they make will benefit anyone.”
― Gift Gugu Mona

Emotions aren’t necessarily bad and can be useful signals to guide decision-making. But you have to use them as your anchor, not a weapon. Stop rushing into decisions. Pause and make a deliberate choice.

Do you often jump in to gain control?

Proactive leaders not only delegate work, they trust and empower their teams to take control, make decisions and do the work necessary to succeed. Delegation does not mean abdication — they work closely with their teams by guiding and coaching them along the way without micromanaging and trying to assert authority and gain control.

With the right balance of freedom and support, people in the team excel — designing their own solutions enhances creative thinking skills, learning to navigate complexity builds problem solving skills and confronting obstacles develops resilience. Empowerment leads to infectious positive energy that charges up the team to go above and beyond.

Reactive leaders like to be in charge even at the expense of their team’s learning and growth. When an issue occurs or things don’t work out as expected, instead of giving freedom to their teams to identify what went wrong and determine the next best possible course of action, they jump in and try to gain control. They start fixing things on their own, dictating solutions and stop listening to people. They assert authority to silence people and justify their involvement. This behavior stems from insecurity, superiority complex or someone who has a problem trusting others.

Getting involved is not a problem as long as it’s done with the intent to help their team, but when it involves lack of trust in their team’s abilities and competence, it makes them feel weak and powerless. Taking away their sense of empowerment leads to low morale and destroys their confidence. People stop pushing themselves to find better solutions, they stop identifying alternative strategies to navigate complexity and not getting the opportunity to learn from challenges makes them more prone to mistakes and failures.

To identify if you’re a reactive leader, answer these questions:

  1. What’s your default instinct to problems at work — do you act as a savior for your team or do you challenge them to solve their own mess?
  2. Do you empower your team to navigate challenges or do you get involved because you don’t trust them enough?
  3. How do people in the team feel about you — do they feel micromanaged or being supported?
  4. How much are you involved in day-to-day work priorities — do you lead with a high level view or demand every small detail?
“A leader is best when people barely know he exists. When his work is done, his aim fulfilled, they will say: We did it ourselves.”
― Lao Tzu

You’re not valued as a leader by the number of problems you solve yourself, but by the number of people you enable to solve those problems. Stop dominating others. Illuminate their potential by letting go of control.

Do you make everything seem urgent?

Though proactive leaders plan well ahead of time, they can’t foresee every challenge or ignore urgent requests that show up at the last minute. Instead of pushing important work aside whenever an urgent request shows up at work, they seek a fine balance between them. They ruthlessly prioritize, set clear expectations and provide complete clarity on which requirements deserve immediate attention and which ones must be pushed aside to make space for important work. They don’t pressure their teams with unreasonable demands by categorizing everything as urgent and leaving no room to innovate, experiment and do more meaningful work.

This isn’t always easy as there’s constant pressure to do more, but proactive leaders know that creating a false sense of urgency won’t help the team perform better. Rather, it will only blur the line between inconsequential activities and work that will push the team forward. Instead of trying to get more done, they focus on what matters. They coach their teams to manage expectations, say “no” when something does not align with their goals and not give in to undue requests without challenging them first.

Reactive leaders lead with the belief that keeping people on their toes is the only way work gets done. They treat every request as a priority creating a sense of ever-present panic, anxiety and fear. Attaching a heightened sense of urgency to every request makes it difficult for their teams to get any meaningful work done. Being bombarded with a false sense of urgency makes them operate like a mad powerhouse — people in the team keep running in many different directions without actually reaching anywhere. There’s little space for creativity and innovation as people feel stuck in execution-only mode.

Jumping from one task to another and being in a constant state of overwhelm and reactivity can drain team energy, increase stress and can even lead to burnout. When employees don’t get time to do deep work or experience the joy and pleasure of being in a state of flow, they feel unhappy, stuck and dissatisfied. Mindless busyness due to a false sense of urgency does not lead to progress, it only adds to stress. Expecting people to take urgent requests seriously and attend to them in a timely manner isn’t wrong. It’s counterproductive when every other request is given a high priority and the team is expected to jump at the chance.

To identify if you’re a reactive leader, answer these questions:

  1. How much of your team’s time goes in urgent requests and how much time is spent on planned important activities?
  2. Are you careful in the language you use to communicate priorities to ensure people don’t get the wrong message?
  3. Does your team look engaged, energized and happy or do they look overwhelmed, exhausted and burnt out?
  4. Is your team clear about what truly matters? How do they typically decide what gets their attention and what does not deserve it?
“If leaders don’t articulate their priorities clearly, then the people around them don’t know what their own priorities should be. Time and energy and capital get wasted.”
— Robert Iger

False urgency misleads employees by keeping them super busy, stressed and anxious without doing impactful work or creating any value. Build the right culture in your organization — one where impact, creative thinking and long-term value creation is valued over unwanted chaos, firefighting and reactive thinking.

Summary
  1. You’re a reactive leader if you spend most of your time reacting to the things in your environment — customer complaints, production issues, delivery delays, last minute change requests and market shifts — instead of proactively planning and shaping the future. Take control of your schedule — when you don’t prioritize what matters, you let go of the opportunity to create a better future.
  2. You’re a reactive leader if superficial analysis, quick fixes and short-term solutions are your goto strategy to deal with problems at work. Getting problems out of the way quickly may seem like progress, but when the same issues keep repeating again and again, you move backward, not forward. Dig deeper into the root cause. Lead with a long-term view.
  3. You’re a reactive leader if your decisions are driven by your moods and emotions as opposed to data and logic. You don’t pause to think or take time to reach a conclusion even though the stakes may be high or the decision may be irreversible. Stop being impulsive. Don’t make decisions in the spur of the moment.
  4. You’re a reactive leader if you’re impatient and have a hard time trusting your team to fix issues or letting go after delegating important work. Getting involved with the intent to take over destroys your team’s confidence and morale. Empower them. Don’t diminish their potential.
  5. You’re a reactive leader if you demand everything “now” or try to create a false sense of urgency in your team. Categorizing everything as urgent not only sidelines important work, constantly dealing with panic and stress compromises on your team’s mental health. Identify what matters. Communicate it clearly.

Follow me here and on LinkedIn for more stories. This story was originally published at www.techtello.com.

Is Your Leadership Too Reactive? was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


KW Habilitation

September 3, 2025: What’s Happening in Your Neighbourhood?

♦Hunger No More
Sunday, September 14
1:00 PM – 4:00 PM
FREE
Tiny Home Takeout – 56 Duke St. W, Kitchener

Join us for the 5th annual Hunger No More, a joyful and inclusive community event that brings together local flavours, generous hearts, and a shared mission to ensure that everyone has access to nutritious, delicious meals. More than 20 local chefs and restaurants from across the region will be on site, offering up free samples of their signature dishes — from gourmet bites to comfort food classics. Whether you’re a foodie or just looking for a good meal in good company, there’s something for everyone to enjoy. This is a donate-what-you-can event, with no tickets, no registration, and no barriers. A crew from The Hangout with be there at our information booth. Be sure to drop by and say hello!

Click here for more info

 

♦KW Knitters Fair
Saturday, September 13
9:30 AM – 3:30 PM
$8
Kitchener Memorial Auditorium – 400 East Ave. Kitchener

Come check out the Knitter’s Guild’s Annual Knitters Fair! See what’s hot at the fashion show or browse the many different vendors. You can visit the ball-winding service to have your mess of yarn neatly wound for a donation to the Food Bank of Waterloo Region. Want to get into the Fair for free? We need 2 hours of your time to help make the fair a friendly, welcoming place. Then spend the rest of the fair shopping and basking in the yarn glory. Jobs include giving information to attendees, running the ball-winding service, giving out door prizes, door security, or modelling in the fashion show!

Click here for more info

 

♦Forest Heights Community Day
Saturday, September 13
5:00 PM – 9:30 PM
FREE
Forest Heights Community Centre – 1700 Queens Blvd. Kitchener

All welcome to join us for a fun community day event. There will be lots of fun things to do including Mini Putt, Large inflatable slides, and photo booth. Snack on some free popcorn or buy some grub from the food trucks. Red Racoon Bike Rescue will be there make free bicycle tune-ups. Make your evening colourful with some face painting or a special creation from balloon artists. There will also be a special visit from Spider man! This is sure to be an evening of making memories with your neighbours and friends.

Click here for more info

 

♦♦ ♦

Advocate for Yourself
Wednesdays, September 10 to Nov 26
12:00 PM – 2:00 PM
FREE – Registration Required
Rockway Mennonite Church – 47 Onward Ave. Kitchener

Advocating for yourself is a vital skill that can be learned and strengthened through support. Advocating for yourself allows you to make your own decisions while experiencing self-confidence. Learn to build allies who support your decisions and who will help you to achieve your goals. Join other people from diverse backgrounds in this peer-led support group as you learn and practice the skills necessary to live the life you want.

Click here for more info

 

Music at Noon
Friday, September 12
12:00 PM – 1:00 PM
FREE
Maureen Forrester Recital Hall – 75 University Ave. W, Waterloo

Music at Noon is Laurier’s free daytime concert series, featuring performances by students, faculty, alumni and guest artists throughout the academic year. These concerts offer a chance to hear diverse musical styles in a relaxing setting.

Click here for more info

 

Musical Hike
Saturday, September 13
10:30 AM
FREE
Huron Natural Area – 801 Trillium Dr. Kitchener

Get ready for an outdoor adventure filled with singing, marching, and storytelling. This free event is open to everyone. It’s a great way to experience what Great Lakes Music Together is all about, meet our teaching team, connect with our music-making community, and enjoy a small treat at the end of the hike. We’ll walk a beautiful trail (paved/packed gravel), with live acoustic performances and spontaneous sing-alongs along the way. Whether you’re a walker, a singer, a toe-tapper, or just someone who loves fresh air and joyful sound, this event is for you.

Click here for more info

 

Dandelion Paper Making
Saturday, September 13
1:00 PM – 5:00 PM
FREE – Registration Encouraged
KW Art Gallery – 101 Queen St. N, Kitchener

During this program, attendees will use Dandelions to make pulp, sift that pulp from water into the shape of paper, and embed seeds, dried Flowers, and fresh botanicals into the paper. Attendees have the option of adding botanical scents and natural dyes to their paper. Participants will take home handmade paper!

Click here for more info

 

Puzzle, Book and Game Exchange
Saturday, September 13
2:00 PM – 4:00 PM
FREE
Country Hills Library – 1500 Block Link Rd. Kitchener

Upcycle your gently used books, games and puzzles to make room for new ones at our community exchange. Ensure books, puzzles and games are in good condition and have no missing pieces. The swap is 1 for 1. If you drop off one puzzle to swap, you can take one puzzle. Then all that’s left is to enjoy your “new to you” puzzles, games and books!

Click here for more info

♦Crescendo Choir
Starts Wednesday, September 10
Wednesdays
10:00 AM – 11:00 AM
FREE
Glencairn Church – 725 Erinbrook Dr. Kitchener
Click here for more info

Volleyball Drop-In
Mondays, Wednesdays and Friday
Sept 8 to December 12
1:00 PM – 3:30 PM
FREE – Register at the front desk
Country Hills Community Centre – 100 Rittenhouse Rd. Kitchener
Click here for more info

Crokinole
Tuesday, Sept 9 to Tuesday, Nov 18
Tuesdays
9:00 AM – 10:25 AM
FREE – Registration Required
Stanley Park Community Centre – 500 Franklin St. N, Kitchener
Click here for more info

The post September 3, 2025: What’s Happening in Your Neighbourhood? appeared first on KW Habilitation.


James Davis Nicoll

Measure of My Days / Monkey King: Journey to the West By Wu Cheng’En (Translated by Julie Lovell)

Wu Cheng’en’s 1580(ish) Monkey King: Journey to the West is a historical fantasy epic. The 2021 abridgement and translation are by Julie Lovell.

Born from the egg of a mystically nurtured stone1, Sun Wukong may be a monkey, but he is also a paragon among mortal beings: strong, fast, brilliant, and determined.

However, the Monkey King has a small flaw in his character.


Github: Brent Litner

brentlintner starred TibixDev/winboat

♦ brentlintner starred TibixDev/winboat · September 2, 2025 18:17 TibixDev/winboat

Run Windows apps on 🐧 Linux with ✨ seamless integration

TypeScript 2.1k Updated Sep 6

Github: Brent Litner

brentlintner starred kazetaos/kazeta

♦ brentlintner starred kazetaos/kazeta · September 2, 2025 16:50 kazetaos/kazeta

Retro 90s style gaming operating system

Rust 413 Updated Aug 21


Brickhouse Guitars

Hozen Guitars Fretboard Summit 2025 - Introducing Gold Label

-/-

KW Peace

Protest Rally to Demand the CRA Stop Subsidizing Genocide, CRA Offices in Kitchener, Noon on Wednesday 3 September 2025

  • What: Demand the CRA Stop Subsidizing Genocide Protest Rally
  • When: Noon to 1:00pm on Wednesday 3 September 2025
  • Where: Outside the Canada Revenue Agency offices
  • Location: 166 Frederick Street, Kitchener, Ontario
    Map
  • Online: bdscoalition.ca/2025/08/22/cra-national-week-of-action-2025/

In 2024, the Canada Revenue Agency (CRA) revoked charity status for the Jewish National Fund and Ne’eman Foundation for violating CRA policy, but that is not enough! Canadian charities are still sending hundreds of millions of dollars per year to Israel, to fund its genocide and expansion of its settler colonial project. These charities are used as front to finance an illegal occupation, apartheid, and genocide—and the CRA allows this to continue.

Join us as part of a National Week of Action to Demand the CRA Stop Subsidizing Genocide. Actions are scheduled from coast to coast between September 2 and 5. You can join our action at lunchtime on Wednesday 3 September 2025 — we’ll be gathering outside the CRA office in downtown Kitchener to call for the CRA to ensure that not a cent of our Canadian tax dollars helps to fund a genocide.

What to bring: Signs and banners.

Parking is available nearby at Centre in the Square. All ages welcome.

♦We hope to see you there,
Neighbours for Palestine: Waterloo Region

Capacity Canada

Moving Forward with Artificial Intelligence (AI)

Earlier this year, a team of our Executives in Residence (EIRs) began researching the use of AI in nonprofits and worked to develop an AI policy for Capacity Canada. It was approved by our Board of Directors on July 25, 2025 and we’re pleased to share it in case it can be a helpful resource for other organizations.

The work included discussions on philosophy and the ethics of using Large Language Models (LLMs) and Generative AI as they exist now. You’ll see that our policy includes 12 “We believe” statements through which we attempt to articulate Capacity Canada’s philosophy on AI. It then moves on to procedures including examples of acceptable and unacceptable use.

A resource we found helpful was the UNESCO Recommendation on the Ethics of Artificial Intelligence.

The AI landscape is evolving so quickly that we are committed to ongoing review of the policy to help ensure it remains current.

In terms of providing training to our team on the use of AI, we found a helpful set of e-learning modules on LinkedIn that cover the usage of Microsoft Copilot. You can find them here.

If your organization is interested in developing your own AI Policy and looking for facilitators to help with the process, our EIRs are available to assist for an hourly fee. Connect with Andrew Wilding at andrew@capacitycanada.ca for more information.

 

 

Written by: Scott Williams, Executive in Residence, Capacity Canada

 

 

The post Moving Forward with Artificial Intelligence (AI) appeared first on Capacity Canada.


Elmira Advocate

THE FOLLOWING IS A PARTIAL LIST OF DNAPL CHEMICALS - ALL ARE AT THE FORMER UNIROYAL CHEMICAL IN ELMIRA

 

trichloroethylene (TCE), tetrachloroethene (PCE), 1,1,1-trichloroethane (TCA), carbon tetrachloride (CTC), methylene chloride (DCM), chloroform (TCM), 1,2-dichloroethane (EDC), 1,2-dichloropropane, vinyl chloride, 1,2-dichloropropene, coal tar, creosote, 1,4-dioxane, polychlorinated biphenyls (PCBs), polycyclic aromatic hydrocarbons (PAHs), chlorobenzene (MCB)


Upon second look the coal tars and creosote are suspect. Yes PAHs are found within coal tar and creosote and yes the PAHs are throughout the downstream Canagagigue Creek.


Agilicus

The Air Gap and Certificate Revocation / CRL / OCSP / Code-Signing

-/-

Kitchener-Waterloo Real Estate Blog

Waterloo Region Luxury Market Report – August 2025

The luxury real estate market in Waterloo Region is showing steady resilience as we close out the summer. This month’s report from the Institute for Luxury Home Marketing (ILHM) paints a picture of balance: neither buyers or sellers are dominating the market. Instead, both sides are adjusting to a more level playing field after years of stronger seller conditions.

This is good news—it means buyers can be more selective, while sellers who take the time to price and present their homes properly are still achieving strong results.

♦ ♦ Single-Family Luxury Homes
  • Balanced Market: With a 19% sales ratio, conditions remain level.
  • Median Sale Price: $1,215,000—slightly below last July’s $1.35M.
  • Sale-to-List Ratio: Sellers are achieving an impressive 98.7% of their asking price.
  • Days on Market: Homes are selling in about 22 days, just a touch longer than last year’s 20.
  • Hot Price Band: The $1.1M–$1.149M range is strong, with a 59% sales ratio.
  • By Size: Five-bedroom homes are moving fastest, with a 28% sales ratio.

Well-priced homes are still attracting strong offers, and buyers are ready to act quickly when they find the right fit.

♦ ♦ Attached Luxury Homes
  • Balanced Market: With a 13% sales ratio, attached homes are also balanced.
  • Median Sale Price: $775,000, just under last year’s $790,000.
  • Sale-to-List Ratio: On average, attached homes sold for 97.9% of list.
  • Days on Market: Properties averaged 34 days, up from 28 a year ago.
  • Hot Price Band: The $900K–$949K range stood out—every listing in this band sold.

While the attached segment is smaller, specific price points are seeing strong demand and quick turnarounds.

What Buyers and Sellers Need to Know

Right now, the luxury housing market in Waterloo Region is balanced, with neither buyers or sellers holding a major advantage over each other. Homes that are priced strategically continue to sell close to list price, showing that accurate pricing is one of the most important factors in this market. While median prices have eased slightly compared to last year, activity remains steady in the most sought-after price ranges. Homes are also taking a bit longer to sell, reflecting the fact that buyers are being more selective before making a move.

For sellers, this is not a runaway seller’s market, but serious buyers are still active and ready to purchase. Presenting your home well and pricing it correctly is key to attracting those qualified buyers. For buyers, the current conditions provide more breathing room to consider options, but it is important to be prepared to act quickly when the right home appears—especially if it falls into one of the hot price bands where demand remains strong.

As we head into September and October, activity is expected to pick up. This seasonal increase typically happens as families return to routine after summer and plan for year-end moves. If you are thinking of making a move this fall, the market is set to remain balanced but active, offering opportunities for both buyers and sellers.

The post Waterloo Region Luxury Market Report – August 2025 appeared first on Kitchener Waterloo Real Estate Agent - The Deutschmann Team.


Elmira Advocate

THE SKIES ARE CLEARING AFTER DECADES OF UNIROYAL & FRIENDS DNAPL DENYING AND OBFUSCATION

 


DNAPLS are nasty buggers! Something like intellectual prostitutes in my mind. Since 1990 a conspiracy of polluters and politicians has been in operation in Elmira. Their goal was to keep the filthy polluter here in town, paying taxes, employing locals and shutting down legitimate opposition to the conditions under which Uniroyal and later successors operated. These conditions included serious polluter cover and protection via both the province (Min. of Environment) and from our local Woolwich councils. 

DNAPLS such as the absolutely common and iconic chlorobenzene releases do more than just contaminate groundwater with chlorobenzene. They greatly assist in mobilizing other chemicals and compounds which are much less likely to migrate on their own. This includes polycyclic aromatic hydrocarbons (PAH) as well as DDT/DDD/DDE and numerous dioxins including the most toxic 2,3,7,8 TCDD. All of these of course are found throughout Elmira, Ontario courtesy of Uniroyal Chemical with the able ongoing assistance of our Woolwich Councils, MOE/MECP , Region of Waterloo plus a myriad of consulting companies most notably CRA/GHD.

PAHs, Dioxins and DDT compounds are common in our downstream Canagagigue Creek soils, sediments and fish. They are less well known to be in our drinking water aquifers due to a plethora of deception, manipulation and obfuscation by all the parties mentioned previously. The first and earliest lies from Uniroyal and their then consultants was the alleged lack of DNAPLS in, on and under the Uniroyal Chemical site.  Yours truly started the opposition rolling by getting one consultant "consolidated" by Uniroyal after I caught him playing fast and loose with the truth by quoting hydrogeologist Stan Feenstra out of context. The lying however has never ended.

The chlorobenzene DNAPL likely with a myriad of other toxic chemicals mixed in, flowed off-site from Uniroyal's south-west corner. Careful examinations of the subsurface shows the general slope of the stratigraphic layers to be southwards with a tad of westward included. This corresponds to the many potential chlorobenzene source spots determined last June by Arcadis Inc. in and around First St, Union St. and Howard Ave.  

Current average concentrations after almost thirty years of pumping are 123 ppb. in the Municipal Upper Aquifer and 173 ppb. in the Municipal Lower Aquifer.  These concentrations as well as past concentrations have always represented a very tiny amount of the total chlorobenzene leaked, spilled and dumped into the natural environment. Pumping increasingly smaller concentrations of chlorobenzene will simply assure that pumping off-site will continue forever as it is planned to do on site. 

Intelligent people want to clean up both the onsite and offsite contamination. Greedy and stupid people merely want to make money from the site through development etc. 


Code Like a Girl

How I Use Research to Solve Real Work Problems in My Team

Team PerformanceWhy better inputs matter more than faster processes in knowledge work♦Photo by Cherrydeck on UnsplashIntroduction

In 2025, creating something will often take less time than reading and understanding it. This means it will be harder to find useful information because there is so much noise. The internet is full of posts and blogs that are optimized for clicks but hold little value.

So the real question is: how do we rise above this?

We need to move higher in the chain of knowledge work. The good news is that better tools can help us get there.

The Four Steps of Knowledge Work

Knowledge work always follows four basic steps.

  1. Collect input such as facts, data, and ideas.
  2. Process this information to build something new.
  3. Share the output in the form of results.
  4. Review the feedback so we can improve the next input.

Each round makes us better. Over time, this cycle becomes an upward spiral of growth.

The Problem of Outsourcing Thinking

Many people now try to hand over their thinking to tools.

They say, “Write this for me” or “Do that for me.”

But the results often feel flat. Why does this happen? Because the information these tools rely on is average. It is collected from the internet, where a little is good, but most is weak. As the saying goes, if garbage goes in, garbage comes out.

So we must shift our focus, and instead of replacing our process, we should improve the quality of our input. Better inputs always lead to better outputs.

Why Research Still Matters

One strong way to improve input is to use proper research. At first, this might sound dull. You may even think, “I need practical results, not long papers.” But pause for a moment. Look at respected publications like Harvard Business Review or MIT Sloan Review. They are not inventing new work from scratch. They take complex studies and turn them into valuable lessons for professionals.

Here is the real key.

We do not want to just read these reviews because machines can do it faster.
We do not want to spend decades writing them either.
What we want is to become that review for our team.

This means we take trusted sources, apply them to our own context, and share them in clear words.That is how we bring value to people who do not have the time to dig deep.

Example: Fixing a Team Performance Issue

Imagine you are leading a group that is underperforming. Your team is full of smart people, but they seem unmotivated and unhappy. You want to fix this.

If you search online, the advice you get will be too broad. It will tell you to “set clear goals” or “communicate better,” but this is not enough to bring real change. Instead, let us look at tools that connect us to stronger input.

Tool 1 # Elicit

Elicit is a platform that finds research papers. You type in your question, and it shows you the most relevant studies. For example, “How to improve team performance at work?” It highlights papers on team design, leadership, and task structure. You can sort by the most-cited works for trust. You can download PDFs for deeper reading. This gives you solid ground instead of surface-level advice.

Tool 2: Notebook LM

The next step is Notebook LM. This tool works only with sources you upload. So it avoids the risk of mixing random internet content. You can drop in a paper, and it builds a table of contents for you. You can ask it questions and get answers with exact references. This makes it easy to spot what matters most — team size, task design, or leadership styles — without reading every page.

Tool 3: Claude

Once you have insights from research, you can move into Claude. Here, you turn those insights into action. For example, you can ask for a 12-month plan. Or you can get a short 80/20 list of the most important steps. You can even request a framework for task design. This is where academic depth meets practical action. You now have strategies that are specific, clear, and ready to use.

Why This Matters

If we only use surface-level tools, we will get recycled advice. The same old buzzwords appear again and again. But when we combine these three tools, Elicit, Notebook LM, and Claude, we unlock something better. We are no longer just consumers of information. We become translators of knowledge for our teams. That is how we rise in the knowledge work value chain.

Final Thoughts

The future of work will not be about outsourcing all our thinking. It will be about thinking with sharper inputs. We will connect ideas better and create more original work. This is an excellent time for generalists. They can mix insights from different fields and create new value. So the choice is clear.

Do we stay stuck with average inputs, or do we rise higher with stronger sources? The tools are in front of us, and the path is open.

How I Use Research to Solve Real Work Problems in My Team 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

Women in Cybersecurity Why Representation Still Matters

When people find out I work in CyberSecurity, they are always a little bit shocked. In their eyes, I should be a man in a hoodie, typing away in the dark and being all mysterious. That stereotype exists for a reason. According to ISC²’s 2023 report, women still make up less than a quarter of the global cybersecurity workforce.

That number is rising compared to a decade ago, but far too slowly. And this isn’t just about headcount. When women are missing from a field that shapes the digital future, the consequences are real.

♦Image created by AuthorThe Challenges We Face

Here are some of the challenges that I and many other women have seen firsthand:

  • Stereotypes. I once had someone say, “You don’t seem like the hacker type.” Comments like that still happen.
  • Visibility. Growing up, I never saw a woman introduced as the lead security expert in the news or at career fairs. It mattered more than I realized.
  • Imposter syndrome. My first SOC shift, I was the only woman in the room. The ten other analysts are all men. No one said anything unkind, but the silence was heavy enough to make me wonder if I belonged.
  • Gatekeeping. I sat in interviews that didn’t feel like skills tests, but endurance tests, like “Can you work under pressure? Can you work 24/7? You're a woman, you have many commitments like family and kids, will you do a good job?” Men have those too, and fyi, I am single, but I am speaking for many women here.
These are not abstract barriers, they accumulate over time and quietly push women out of the industry.
♦Image from IT MastersWhy More Women Make Cybersecurity Stronger

Firewalls and exploits are just a tiny fraction of cybersecurity. It is creative problem-solving, anticipating human behaviour, and protecting people’s data.

When everyone in the room looks and thinks the same, blind spots(Grey areas) multiply. Diverse teams bring different perspectives, challenge assumptions, and cover gaps that would otherwise be missed in front of our eyes. I have seen this in practice: teams with women tend to catch social engineering angles earlier and question risky decisions more directly.

Different perspectives reduce blind spots. Fewer blind spots mean stronger security.
♦Photo by Ross Findon on UnsplashWhat Needs to Change

Progress is happening, but slowly. To move faster, here’s what helps:

  • Mentorship. The best advice I got in my first year came from another woman who had already navigated the same path. That single conversation kept me in the field.
  • Inclusive hiring. Job descriptions overloaded with acronyms and rigid credentials filter out talent. Skills-based assessments highlight ability better.
  • Start earlier. Girls in school should know that cybersecurity is not reserved for boys. Early awareness matters.
  • Visibility. When a woman thrives in this field, her story needs to be shared. Others will see themselves in it.
♦Photo by Sierra Koder on UnsplashTo the Woman Wondering If You Belong

If you are questioning whether you are technical enough, smart enough, or ready enough, I understand. I asked myself similar questions.

The truth is, no one begins as an expert. Everyone starts as a beginner, and making mistakes doesn't mean we break and give up. Learning from them and making sure we grow as we learn slowly builds our confidence. I questioned myself on my first day as a cybersecurity analyst, but I stayed, and I learned.

Your perspective matters. Your voice matters. Cybersecurity doesn’t just need more people; it needs different kinds of people.
Before we move further….

The digital world is increasing every day, new technologies are forming, leading to threats that are multiplying. This field needs all the talent it can get, and there is no reason women should remain underrepresented.

So here’s my ask:

  • If you are already in cybersecurity, mentor another woman.
  • If you are hiring, examine your biases.
  • And if you are aspiring, take the first step — whether that’s a certification, a lab, or sending in your first application.

Cybersecurity is for you. The more of us who claim that truth, the stronger and more inclusive this industry becomes.

Women in Cybersecurity Why Representation Still Matters was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


James Davis Nicoll

Red Sun / Sunfall By C J Cherryh

C. J. Cherryh’s 1981 Sunfall is a themed collection of science fiction short stories.

The Sun is old and dimming. Humans long ago spread to the stars and few now visit the home world. A handful remains. These are their stories.

Brickhouse Guitars

Furch Pioneer ERa #127840 Demo by Kyle Wilson

-/-

Code Like a Girl

How I Built My Own AI Agent Ecosystem

From Simple Chatbots to Autonomous Multi-Agent Workflows♦Generated by Author

When I first started with AI, my entire focus was on making a single chatbot work. I thought AI was just about asking a model a question and getting an answer. But once I stepped deeper, I realized that real power comes when multiple AI agents work together, each specialized for a task: research, summarization, decision-making, automation, and even execution of code.

Here’s how I gradually built my AI agent ecosystem, with real examples and code along the way.

1. The First AI Agent, a Simple Chatbot

I started with a single chatbot built using OpenAI’s API:

from openai import OpenAI
client = OpenAI()
def chatbot(query):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": query}]
)
return response.choices[0].message.content
print(chatbot("Hello AI, how are you today?"))

It worked but it wasn’t enough.

2. Adding Memory to the Agent

A chatbot without memory feels “forgetful.” So I added a memory mechanism:

conversation = []
def smart_chatbot(query):
conversation.append({"role": "user", "content": query})
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=conversation
)
answer = response.choices[0].message.content
conversation.append({"role": "assistant", "content": answer})
return answer
print(smart_chatbot("My name is Mariyam."))
print(smart_chatbot("What's my name?"))

Now the agent remembered context.

3. Creating a Research Agent

Then I built an agent that fetches real-time data from the web:

import requests
from bs4 import BeautifulSoup
def research_agent(topic):
url = f"en.wikipedia.org/wiki/{topic}"
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
content = " ".join([p.text for p in soup.find_all("p")[:3]])
return content
print(research_agent("Artificial_intelligence"))
4. Summarization Agent

Instead of dumping raw data, I used a summarization agent:

def summarizer(text):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Summarize the following text clearly:"},
{"role": "user", "content": text}
]
)
return response.choices[0].message.content
raw_data = research_agent("Machine_learning")
print(summarizer(raw_data))
5. Connecting Agents Together

This is where it got exciting chaining the research agent and summarizer:

topic = "Neural_networks"
raw = research_agent(topic)
summary = summarizer(raw)
print(f"Summary of {topic}:\n{summary}")
6. Adding a Decision-Making Agent

Next, I built a planner agent that decides what step to take:

def planner(task):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a planner AI. Break the task into steps."},
{"role": "user", "content": task}
]
)
return response.choices[0].message.content
print(planner("Write an article about AI agents"))
7. Execution Agent for Automation

Some tasks needed automation (like code execution). So I added a Python execution agent:

def executor(code):
try:
exec(code, globals())
return "Execution successful"
except Exception as e:
return f"Error: {e}"print(executor("print(5*5)"))
♦Generated by Author8. Orchestrating with LangChain

To properly chain everything, I turned to LangChain:

from langchain import OpenAI, LLMChain, PromptTemplate
prompt = PromptTemplate(
input_variables=["topic"],
template="Research and summarize the topic: {topic}"
)
llm = OpenAI(model="gpt-4o-mini")
chain = LLMChain(prompt=prompt, llm=llm)
print(chain.run("Reinforcement learning"))
9. Building an Autonomous Multi-Agent Workflow

Finally, I connected everything into a multi-agent ecosystem:

  1. Planner Agent → decides the task flow
  2. Research Agent → fetches data
  3. Summarizer Agent → condenses it
  4. Execution Agent → runs commands/code
  5. Memory Agent → stores everything for reuse

This setup felt like having a team of AI assistants, not just one.

10. The Takeaway

AI becomes much more powerful when you stop thinking about single models and start building agent ecosystems. Each agent handles a specific responsibility, and when they collaborate, they feel almost like human teams working together.

How I Built My Own AI Agent Ecosystem was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.


Brickhouse Guitars

Furch Yellow Deluxe Gc-CR #117790 Demo by Kyle Wilson

-/-