Fork Me on Gitlab


Jesse Wilson - Public Object

Building on the Wrong Abstraction

Writing sturdy software is hard work. Sometimes it’s very hard work, but it doesn’t need to be.

Very Hard Problem: ORM

I have a confession: I like Hibernate. The @Version feature is my favorite; it makes optimistic locking easy and safe. I also like how simple it is to do CRUD operations.

But I also hate Hibernate. I hate the limits of what I can express with it and I hate throwing out working code to drop down to SQL. I struggle to debug Hibernate: the implementation is full of abstractions and indirection. It’s well documented but the users guide is 500 pages!

SQLDelight addresses the same problem as Hibernate but with a different abstraction. Instead of generating SQL from Java at runtime, SQLDelight generates Kotlin from SQL at compile-time.

Hibernate’s ORM solves a more difficult problem than SQLDelight’s SQL binding. It’s runtime .jar is 164x larger! But even though ORM is much bigger problem, it isn’t really a problem I need solved! All I want is a concise and typesafe way to query & update my database.

Hibernate is an extremely good implementation of an ORM, but an ORM isn’t something that should be implemented.

Very Hard Problem: Reactive Engine

RxJava changed Android development dramatically and permanently. Screens used to be updated clumsily from manual observers. With RxJava, screens are computed on-demand from a live dataset. It’s fucking great.

The implementation of RxJava is heroic. It solves several difficult problems that are tangled up: thread-jumping, lifecycle, declarative APIs, and error handling. RxJava’s flatMap() shows just how subtle this is:

  @Override public void onNext(@NonNull T t) {
    if (done) return;
    try {
      try (Stream<? extends R> stream = mapper.apply(t)) {
        Iterator<? extends R> it = stream.iterator();
        while (it.hasNext()) {
          if (disposed) {
            done = true;
          R value = it.next();
          if (disposed) {
            done = true;
          if (disposed) {
            done = true;
    } catch (Throwable ex) {

Kotlin’s Flow address the same problem, but it’s built on a richer abstraction: coroutines! This pushes thread-jumping, lifecycle, and exceptions into the infrastructure. Here’s the whole thing:

public fun <T> Flow<Flow<T>>.flattenConcat(): Flow<T> = flow {
    collect { value -> emitAll(value) }

Flow is simple because its platform supports it so well. RxJava does more work to achieve a similar result because it doesn’t use coroutines or structured concurrency.

Very Hard Problem: Declarative and Interactive Layout

ConstraintLayout is built with a deep appreciation for the difficulty of the problem it addresses: dynamic UI layout. It introduces clever ideas and features to solve this problem well: guidelines, chains, and even an interactive editor.

But despite that, ConstraintLayout is difficult to use because it has a cohesion problem: my layout is in XML but I need to operate it from Kotlin.

Contour just shipped 1.0 and it’s big insight is that Layout XML is a bug, not a feature. Putting everything into Kotlin dramatically reduces the size of the problem I’m solving!  No more findViewById(), no more mismatch between views in the XML and views on the screen, no more limitations on what I can express in my layout.

Contour is stable and widely-used within the app my team works on. It’s an incremental migration from XML layouts. They’ll be going away permanently with Compose; Contour is a useful step in that direction.

Avoid Very Hard Problems

When a problem is very difficult sometimes the best solution is to reconsider the premise. Adding an abstraction (yay coroutines) or taking one away (boo XML) may shrink the problem!


Zsolt Stojcsics posted a comment on ticket #60

Something came to mind! The saved pictures goes to "O:\Csomagolo_Uzem_K\Csomagolo_csoport\EFR\Áttekintő kép\%year%\%year%%month%\%timeofday%.jpeg".If it is a month anniversary again, the filename will be correct, but the directory will not. Do you have an idea for this or leave it at that?

Carrie Snyder: Obscure Canlit Mama

Abandoned twitter thread

The darkest hour is before the dawn (says who?), but I don’t think we’re there yet. Our planet flares with alarms, and I keep scrolling the news like it’s entertainment. Like it’ll make a difference to know more and more, somehow. Like I’ll reach the end and go: there, done, at last, problem solved! 1

(Anonymous commenter: “The darkest hour is actually midnight.”)

The equality we’ve fought for is tenuous, incomplete, and may erode further. What hope is there that we humans on planet Earth will work together, pull together, row in a direction that honours difference, blesses the frail, lifts up everyone who is in pain? Where does it hurt? What’s your story? 2

Vote? Of course! I’ve got my ballot filled in, ready to mail back to Ohio. I will take deep breaths and hope. One voice, one gesture, one act of faith. But VOTE is not enough to fix what’s broken. Dividing, degrading, self-dealing; cynicism. What does democracy mean? For the people, by the people? Also, a corporation is a person?? Also, send more money? 3

Don’t pretend the end justifies the means. We live in the means! If you lie and cheat to win, you’re not a winner, you’re a liar and a cheat. If the only way to win is at all-costs, I’d rather be the sucker who spoke her heart and lost. 4

My heroes are the ones who saw the long road ahead and walked onward toward a light and promise they knew wouldn’t be found in their own lifetimes. Or maybe ever. But they saw it and articulated it. Our better selves. Where everyone will have enough, and dignity too. 5

Where love not greed rules. What I see: my brothers sisters friends strangers the ground underfoot the air trees stars the living oceans are of me and I of them. All of us humans are flawed, broken, in need. To share is to receive but also to give. 6

Look at this bountiful world. End

xo, Carrie

The Museum

Agents for Change Artist Update: Spirits of Wasteland with Maayke Schurer


The Museum

Agents for Change Artist Update: Sounding with Caroline McCaw & Vicki Smith


The Museum

Agents for Change Artist Update: The Shoreline Project with Liz Miller


Code Like a Girl

LED Display

Components required for this:

Continue reading on Code Like A Girl »

Code Like a Girl

I built a robot that paints my nails


I believe engineering should be fun, tech should help people with different abilities and bodies and failure is part of every journey.

Engineering should be fun.

Not all projects need to be revolutionary or serious. A robot that paints nails is very silly and not useful at all, but engineering should be fun! You can start a project just to learn how things work, which is what I did. Yes, there are challenges and often lots of unknowns but the fun is solving little bugs and getting close to the end goal.

Tech should help people with different abilities and bodies.

I first got interested in tech after seeing my younger brother, who is on the autism spectrum use PECS (Picture Exchange Communication System) and communicate with my family. I kept thinking, if tech can enable non-verbal people to communicate, who knows how else we can help those with different abilities and bodies! While I was building this, I was thinking of individuals who have lost limbs. I learned that 2.1 million people in the country who are living with limb loss today. That’s 0.63% of the population. I was trying to put myself in their shoes and think about how they deal with everyday problems. My robot is currently not helpful at all but I hope that these small questions and small silly projects lead to right questions and right solutions.

Failure is part of every journey.

At first, I wanted to program the arm to pick up lipstick and help me put on makeup. However, the lipstick was too heavy for the arm to hold.

Later, I decided on holding the nail polish but the claw was falling apart. The claw arm was screwed on to the servo motor on one side, and the other side was supposed to move when the servo motor moved the one that was attached to it. However, mine was fidgety and the side that wasn’t screwed on kept falling out.

Ohh, also the robot attacked me few times 🤖🥊


This project can be better. A lot better, but this is my journey. This is what I was able to do currently with the knowledge that I have. I had a different vision but had to pivot my MVP but hey, that’s ok. All part of the learning process.

How it works:

This robot was completed with one Arduino board and 4 servo motors.

  1. First servo motor controls the left and right movement of the robotic arm.
  2. Second servo motor controls half of the arms ability to move up and down.
  3. Third servo motor controls the up and down movement of the second half of the arm that holds the claw.
  4. Fourth servo motor controls the claw to open and close.

There are 4 buttons on the board that allows the user to control the servo motors and program movements for the arm to repeat by itself with a press of a button.

I built a robot that paints my nails 💅🤖 was originally published in Code Like A Girl on Medium, where people are continuing the conversation by highlighting and responding to this story.

Kitchener Rangers

Joe McDonnell Gets “Another Crack” At Winning His Fifth Stanley Cup

How is Joe McDonnell spending his downtime in the "bubble"? There's a good chance the Director of Amateur Scouting for the Dallas Stars is chopping wood. That's because the Rangers alum has hunkered-down at his family's cottage in northern Ontario to enjoy the last bit of favourable weather while his squad battles the Tampa Bay Lightning in the Stanley Cup Finals. Don't be mistaken, though. Being apart from his team hasn't made him any less excited; in fact, he may be slightly more on edge than usual. "I've been fortunate to have won it four out of the five times in my NHL career. It's been so long since the last time though (12 years), but I'm spoiled that way," McDonnell said with a laugh just before the start of the series. Before being hired by the Stars in 2013, the Kitchener native won the Stanley Cup four times with Detroit (1997, 1998, 2002 and 2008). "I know scouts who have been around for 30 or 40 years and never got a sniff at getting to the Final, and here I am again taking another crack at it. I'm very fortunate, that's for sure. It's exciting every time." Aside from it being a first-time finals appearance with Dallas, it's seeing individuals he's picked in the drafts over the past six seasons "being a big reason why we're in the position we're in." He specifically highlighted Miro Heiskanen (Dallas' playoff points leader), Roope Hintz (third in goals during the regular season), and Denis Gurianov (team leader in goals during the regular season). The latter also scored a memorable overtime goal in the Western Conference Finals against Vegas to advance. "As a scout, it's gratifying when you see a kid that you've selected coming through for your team," McDonnell said. That's especially true considering the grind an NHL scout goes through in any "normal" season to find those future assets. "I guess what sets you apart is how much you work and how many games you're going to travel to," McDonnell said. "In scouting, that's the hardest thing; getting from game to game. It's a long year, and you're travelling through a lot of airports and challenging weather. It's hard on the families, too." The scouting schedule allows him to come back to his old stomping grounds at The Aud, though. He is currently the only alum to play for, manage, and lead the Rangers as its head coach. ♦ The 59-year-old former defenceman sits fifth all-time in games played for the franchise (272), which included a memorable run to the 1981 Memorial Cup Final. "At Christmas that year, we were in last-place. After they gave the captaincy to Brian Bellows, all of us older guys just banded together and ended up in first place." For the 1986-87 season, he was back as an assistant coach but would take over as head coach later that year. Two seasons later, he won the Matt Leyden Trophy as CHL Coach of the Year Award. He also led the Rangers to another Memorial Cup Final in 1990, but the team would fall short once again; 4–3 in double overtime to the Oshawa Generals. McDonnell coached the Rangers for nine seasons into total until 1994-95. "The Rangers are a big part of my life. The people and fans are fantastic. I always think about those good times," he said. Now when he visits The Aud to watch from the stands, he appreciates some of the things in RTown that will never change. "The familiar faces, the building, and the jersey; those things always stand out to me. The organization is second to none, in my mind." "I think about my time with the Rangers all the time, especially when I get back to The Aud. Anything I do, I'm a Kitchener boy at heart."

Communitech News

Trusscore announces partnership with HGTV home renovation stars Bryan and Sarah Baeumler 

KITCHENER, Ontario — Trusscore, the material science company that makes sustainable, improved alternatives for drywall, plasterboard, and fiber-reinforced plastic panels, today announced an exclusive partnership with do-it-yourself renovation TV stars Bryan and Sarah Baeumler. The Baeumlers, a husband-and-wife team who have been featured on HGTV for more than a decade and currently star in the hit HGTV show Island of Bryan (in Canada) and Renovation Island (in the U.S.) will serve as brand ambassadors showcasing Trusscore’s products to homeowners, contractors and, architects. “Trusscore’s products are going to revolutionize the building trades,”said Bryan Baeumler. “Trusscore Wall&CeilingBoard is durable, cost effective, and […]

The post Trusscore announces partnership with HGTV home renovation stars Bryan and Sarah Baeumler  appeared first on Communitech News.

Elmira Advocate


In its most basic, NDMA can be formed by the chemical interaction of dimethylamine ((CH3)2 NH2) and nitrites (N02) forming N-nitrosodimethylamine or (CH3)2NNO with the C being carbon, the H being hydrogen, the N being nitrogen and the O being oxygen. Therefore the two most important precursers are dimethylamine and sodium nitrite (NaNo2). Both nitrites (NO2) and nitrates (NO4) are very common in the natural environment especially in rural, agricultural areas. They can be found in fertilizers as well as in septic tanks and animal feedlots. Dimethylamine can also be found in urine and feces as well as in sewage treatment plants and the leather, rubber and pesticide production industries. One can certainly see how Elmira and Uniroyal Chemical (rubber additives, pesticde prod'n) ticked all the boxes when our authorities were looking for the source of NDMA in Elmira's drinking water in 1989. ............................................................................................................ There are other factors involved in NDMA production. An acidic environment is one of them. Production wastewaters filled with various acids such as both 2,4-D and 2,4,5-T (2,4 dichlorophenoxyaceticACID and 2,4,5-trichlorophenoxyaceticACID) are an example. .................................................................................................. Soil moisture is yet another factor. Drier soils will produce more NDMA than wetter soils as one would find say on both sides of the Canagagigue Creek where Uniroyal Chemical was located. ...................................................................................................... A high carbon source in soils increases the production of NDMA as long as the two precursers are available (i.e. dimethylamine and nitrite). I suspect one high carbon source would be sugars perhaps such as automotive antifreeze. Any chance that pig feedlots would feed stale doughnuts or pastries to pigs? ...................................................................................................................... So besides Uniroyal Chemical in Elmira were there any other local industries that ticked all the boxes? The answer I believe is yes and that would be Varnicolor Chemical, just down the road (Union St.). They handled and used dimethylamine, antifreeze, acids (H2SO4), and had drier soils as they were at a higher elevation on Union St. than Uniroyal. They also were located on the site of a former pig farm plus they had a septic tank in their backyard that while formerly enriching the soils with nitrites (same as the pig farm) also discharged both sulphuric acid after a spill from a tankertruck inside the building connected to the septic tank and a buried road tanker and discharged dimethylamine that was used in a can coating process. Lastly this same underground discharge from inside their building on Union St. also discharged antifreeze (carbon source). ......................................................................................................... Perhaps if our authorities (MOE/MECP, Region & Township) had honestly provided this information in 1989 to 1991 then I might have at least a little confidence in their excluding Varnicolor Chemical from consideration of even contributing to the NDMA in our Elmira Aquifers. Keep in mind that the very same municipal aquifer that runs below Uniroyal Chemical also runs below Varnicolor Chemical. Keep in mind that the Ministry of Environment reneged on their promise to investigate and examine the "...full aereal and vertical extent of contamination on the Varnicolor site.". They waited for twenty-five years to release anything about the deeper subsurface contamination on the site. They also lied like dogs and were caught so doing multiple times by citizens in those early days (1989-1992). ................................................................................................................... Citizens have learned the hard way. Our authorities lie to us routinely. You can call it a coverup, a conspiracy or whatever you want. I look at it this way: Once I've caught you lying to me more than once, than your word is meaningless and you deserve both my contempt and my disbelief of whatever other misinformation you are trying to sell. Fool me once shame on you. Fool me twice and shame on me.

Katy Fulfer

Variations on thinking: Keats and Arendt

“‘Beauty is truth, truth beauty,’ that is all / Ye know on earth, and all ye need to know.”

—John Keats, from Ode to a Grecian Urn

Poetic imagination

I’ve been thinking about the English Romantic poet John Keats for the past month or so as I prepared to moderate a panel on Keat’s concept of “negative capability.” The panelists included poet Luke Hathaway, visual artist Gwenessa Lam, and Buddhist scholar Jeff Wilson. The event is part of a virtual series entitled Café Philo, organized by Inter Arts Matrix.

Keats developed the concept of negative capability to describe the poetic or artistic imagination. But, our panel approached negative capability more expansively, not only in relation to creative processes.

In this post, I will not provide an interpretation of negative capability. Rather, I think through some of the insights I gleaned from the panelists and their discussion with the audience.

The meaning of “truth”

Two definitions of negative capability jumped out at me. First is how negative capability is a different kind of mental activity than cognition. As he defines it in a letter to his brothers:

It struck me what quality went to form a man of achievement, especially in literature, and which Shakespeare possessed so enormously. I mean negative capability; that is, when man is capable of being in uncertainties, mysteries, doubts, without any irritable reaching after fact and reason. (21 December 1817)

It’s not just rational thought that Keats seems to target as contradictory to poetic imagination. He also questions empiricism. In a letter to Benjamin Bailey, Keats confesses, “I have never yet been able to perceive how anything can be known for truth by consequitive reasoning—and yet it must be. [. . .] However it must be, oh for a life of sensations rather than of thoughts!”

The dichotomy he draws between imagination and experience on the one hand, and cognition and intellect on the other, reminds me of Hannah Arendt’s distinctions in the Life of the Mind between truth and meaning. Scientists investigate experience to uncover hidden truths about the world. In contrast, the quest for meaning—the activity of thinking—is about what it means for something to be in the world.

The poetic paradox of the annihilation of the self

The poetic imagination is stimulated by experience, and more specifically, by feeling. Keats wrote to his friend, the lawyer Richard Woodhouse, of a poetical character as thus:

It has no self—it is everything and nothing—it has no character—it enjoys light and shade—it lives in gust, be it foul or fair, high or low, rich or poor, mean or elevated. It has as much delight in conceiving an Iago as an Imogen. What shocks the virtuous philosopher delights the chameleon poet. It does no harm from its relish of the dark side of things, any more than from its taste for the bright one—because both end in speculation. A poet is the most unpoetical of any thing in existence, because he has no identity, he is continually in for—and filling—some other body. (27 October 1818, my emphasis)

Drawing on Japanese Buddhist traditions, Jeff described this non-identity as letting go of the ego or control. Instead of seeking to impose concepts on experience from the get-go, one opens oneself up to listening to the world. He described two ways mental cultivation gets framed in his areas of study. One way is analytical and questioning. Another is spaciousness. With the latter, attention focuses on something embodied, like the breath, and involves an emptying of the mind. But, this allows for insights to emerge that a person might miss if they were too focused on something specific.

In some ways, Jeff’s description of spaciousness and the expansiveness of Keat’s poetic imagination remind me of the unbound nature of thinking, as Arendt describes it. Thinking cannot be contained by accepted categories. It questions and destroys familiar or habitual assumptions.

The two-in-one

What is harder for me to make sense of, however, is how negative capability entails an annihilation of the self. For Keats, a great poet achieves a way of dwelling within beauty such that their art channels and embodies it. He states, “That with a great poet the sense of beauty overcomes every other consideration, or rather obliterates all consideration” (letter to Tom and George Keats, 21 December 1817).

For Arendt, thinking emphasizes the duality of the self. As she says in the Life of the Mind, thinking is a conversation one has with oneself, “the partner who comes to life when you are alert and alone is the only one from whom you can never get away—except by ceasing to think.” This internal thinking partner, or conscience, can be ignored or forgotten, which would be one way of translating Keat’s “annihilation of the self” into Arendt’s terminology. And, ignoring your conscience means removing a condition which makes thinking possible in the first place.

A haunting and a toggling

Although the panel focused more on the “dwelling with uncertainty” aspect of negative capability, I found the panelists’ contributions productive in interpreting the annihilation of the self.

As Luke described it, negative capability is a haunting. It is a condition of anticipation, both patient and desiring, a willingness to be delighted and surprised. Perhaps then negative capability is not so much an annihilation of the self, but rather, a getting over oneself. This resonates more with the sensibilities I have developed from reading Arendt, particularly her work on judgment and how we much enlarge our perspective to consider pluralistic points of view.

Gwenessa described negative capability as a toggling between an openness or receptivity and an active search. Openness generates questions, but a question is an invitation to a conversation. Here is an excerpt from an August 2020 interview with Gwenessa:

When I’m making a painting or drawing — or, for my colleagues and friends who are writers or poets, that blank page, that blank screen — we are actually placed in relation to an absence,” she says. “You begin with an absence, and the process of making is trying to make whatever you want to communicate become present. That’s an oversimplification of a more complicated experiment in the studio. But the studio is a space for that negotiation, of trying to communicate.

The studio as a space of negotiation captures something like Arendt’s two-in-one, the duality of thinking process when making sense of an experience. Where Gwenessa speaks of “toggling,” Arendt speaks in terms of withdrawing from the world. When we withdraw from the world we enable ourselves to question our presuppositions. Hence, thinking can begin.


One final metaphor. Until I revisited passages from the Life of the Mind in writing this post, I had forgotten that Arendt describes the two-in-one of thinking as akin to friendship. Socrates and Aristotle describe dialogue as taking place between friends. This provides Arendt with a metaphor for thinking and conscience, “the anticipation of the fellow who awaits you if and when you come home” (p. 191).

Love, humility, and grace

One thing that stood out to me from the discussion is the affective way in which the panelists described dwelling with uncertainty. For Luke, following Simone Weil, imagination is a kind of intelligence illuminated by love, uncertainty a mode of humility. According to Jeff, letting go of the self and being open is a moment of grace and an opportunity for co-creation with the world. And for Gwenessa, negative capability provides a consolation between self and world.

Love, humility, grace, consolation—these all remind me of the humanizing quality Arendt associates with friendship in Men in Dark Times (well, perhaps not love).

For Keats, the experience of beauty was paramount. It is, as Luke put it, constitutive of reality. Keats said, “That with a great poet the sense of beauty overcomes every other consideration, or rather obliterates all consideration” (letter to Tom and George Keats, 21 December 1817). The sensation of beauty is truthful, for Keats, in a way reason cannot be.

Arendt too was skeptical of the primacy of science and reason. Science excuses any belief in the name of objectivity. But what, she questions, would happen if someone were able to scientifically establish that there was a hierarchy between humans? What if racism were scientifically proven? Her response, which she puts in italics: “Would any such doctrine, however convincingly proved, be worth the sacrifice of so much as a single friendship between two men?” (Men in Dark Times, p. 29).

Dwelling with mystery, unsettling the need we feel for certainty—these might be capabilities that great poets embody, but that all of us need to cultivate.


Photo by “My Life Through A Lens” on Unsplash

Thanks to Gwenessa, Luke, and Jeff for such a fascinating conversation. And a special thanks to Inter Arts Matrix, and especially Hannah Gardiner, for inviting me to be the moderator for the Café Philo series.

The next Café Philo is on the subject of masks and will feature two very special surprises! Mark your calendars for October 27, 5-6 p.m. Follow Inter Arts Matrix on Facebook or Twitter to stay in the loop.

Notice: JavaScript is required for this content. var formDisplay=1;var nfForms=nfForms||[];var form=[];form.id='1_1';form.settings={"title":"Contact Me","created_at":"2020-06-26 19:34:19","form_title":null,"default_label_pos":"above","show_title":"1","clear_complete":"1","hide_complete":"1","logged_in":"","seq_num":"30","_seq_num":"30","conditions":[],"objectType":"Form Setting","editActive":"1","wrapper_class":"","element_class":"","add_submit":"1","not_logged_in_msg":"","sub_limit_number":"","sub_limit_msg":"","calculations":[],"formContentData":["name","email","message","spam_1","submit"],"container_styles_background-color":"","container_styles_border":"","container_styles_border-style":"","container_styles_border-color":"","container_styles_color":"","container_styles_height":"","container_styles_width":"","container_styles_font-size":"","container_styles_margin":"","container_styles_padding":"","container_styles_display":"","container_styles_float":"","container_styles_show_advanced_css":"0","container_styles_advanced":"","title_styles_background-color":"","title_styles_border":"","title_styles_border-style":"","title_styles_border-color":"","title_styles_color":"","title_styles_height":"","title_styles_width":"","title_styles_font-size":"","title_styles_margin":"","title_styles_padding":"","title_styles_display":"","title_styles_float":"","title_styles_show_advanced_css":"0","title_styles_advanced":"","row_styles_background-color":"","row_styles_border":"","row_styles_border-style":"","row_styles_border-color":"","row_styles_color":"","row_styles_height":"","row_styles_width":"","row_styles_font-size":"","row_styles_margin":"","row_styles_padding":"","row_styles_display":"","row_styles_show_advanced_css":"0","row_styles_advanced":"","row-odd_styles_background-color":"","row-odd_styles_border":"","row-odd_styles_border-style":"","row-odd_styles_border-color":"","row-odd_styles_color":"","row-odd_styles_height":"","row-odd_styles_width":"","row-odd_styles_font-size":"","row-odd_styles_margin":"","row-odd_styles_padding":"","row-odd_styles_display":"","row-odd_styles_show_advanced_css":"0","row-odd_styles_advanced":"","success-msg_styles_background-color":"","success-msg_styles_border":"","success-msg_styles_border-style":"","success-msg_styles_border-color":"","success-msg_styles_color":"","success-msg_styles_height":"","success-msg_styles_width":"","success-msg_styles_font-size":"","success-msg_styles_margin":"","success-msg_styles_padding":"","success-msg_styles_display":"","success-msg_styles_show_advanced_css":"0","success-msg_styles_advanced":"","error_msg_styles_background-color":"","error_msg_styles_border":"","error_msg_styles_border-style":"","error_msg_styles_border-color":"","error_msg_styles_color":"","error_msg_styles_height":"","error_msg_styles_width":"","error_msg_styles_font-size":"","error_msg_styles_margin":"","error_msg_styles_padding":"","error_msg_styles_display":"","error_msg_styles_show_advanced_css":"0","error_msg_styles_advanced":"","ninjaForms":"Ninja Forms","changeEmailErrorMsg":"Please enter a valid email address!","changeDateErrorMsg":"Please enter a valid date!","confirmFieldErrorMsg":"These fields must match!","fieldNumberNumMinError":"Number Min Error","fieldNumberNumMaxError":"Number Max Error","fieldNumberIncrementBy":"Please increment by ","fieldTextareaRTEInsertLink":"Insert Link","fieldTextareaRTEInsertMedia":"Insert Media","fieldTextareaRTESelectAFile":"Select a file","formErrorsCorrectErrors":"Please correct errors before submitting this form.","formHoneypot":"If you are a human seeing this field, please leave it empty.","validateRequiredField":"This is a required field.","honeypotHoneypotError":"Honeypot Error","fileUploadOldCodeFileUploadInProgress":"File Upload in Progress.","fileUploadOldCodeFileUpload":"FILE UPLOAD","currencySymbol":"$","fieldsMarkedRequired":"Fields marked with an *<\/span> are required","thousands_sep":",","decimal_point":".","siteLocale":"en_US","dateFormat":"m\/d\/Y","startOfWeek":"1","of":"of","previousMonth":"Previous Month","nextMonth":"Next Month","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"weekdaysMin":["Su","Mo","Tu","We","Th","Fr","Sa"],"embed_form":"","currency_symbol":"","beforeForm":"","beforeFields":"","afterFields":"","afterForm":""};form.fields=[{"label_pos":"above","required":1,"order":1,"placeholder":"","default":"","wrapper_class":"","element_class":"","objectType":"Field","objectDomain":"fields","editActive":"","container_class":"","input_limit":"","input_limit_type":"characters","input_limit_msg":"Character(s) left","manual_key":"","disable_input":"","admin_label":"","help_text":"","desc_text":"","disable_browser_autocomplete":"","mask":"","custom_mask":"","wrap_styles_background-color":"","wrap_styles_border":"","wrap_styles_border-style":"","wrap_styles_border-color":"","wrap_styles_color":"","wrap_styles_height":"","wrap_styles_width":"","wrap_styles_font-size":"","wrap_styles_margin":"","wrap_styles_padding":"","wrap_styles_display":"","wrap_styles_float":"","wrap_styles_show_advanced_css":0,"wrap_styles_advanced":"","label_styles_background-color":"","label_styles_border":"","label_styles_border-style":"","label_styles_border-color":"","label_styles_color":"","label_styles_height":"","label_styles_width":"","label_styles_font-size":"","label_styles_margin":"","label_styles_padding":"","label_styles_display":"","label_styles_float":"","label_styles_show_advanced_css":0,"label_styles_advanced":"","element_styles_background-color":"","element_styles_border":"","element_styles_border-style":"","element_styles_border-color":"","element_styles_color":"","element_styles_height":"","element_styles_width":"","element_styles_font-size":"","element_styles_margin":"","element_styles_padding":"","element_styles_display":"","element_styles_float":"","element_styles_show_advanced_css":0,"element_styles_advanced":"","cellcid":"c3277","label":"Name","key":"name","type":"textbox","field_label":"Name","field_key":"name","id":"1_1","beforeField":"","afterField":"","value":"","parentType":"textbox","element_templates":["textbox","input"],"old_classname":"","wrap_template":"wrap"},{"label_pos":"above","required":1,"order":2,"placeholder":"","default":"","wrapper_class":"","element_class":"","objectType":"Field","objectDomain":"fields","editActive":"","container_class":"","admin_label":"","help_text":"","desc_text":"","wrap_styles_background-color":"","wrap_styles_border":"","wrap_styles_border-style":"","wrap_styles_border-color":"","wrap_styles_color":"","wrap_styles_height":"","wrap_styles_width":"","wrap_styles_font-size":"","wrap_styles_margin":"","wrap_styles_padding":"","wrap_styles_display":"","wrap_styles_float":"","wrap_styles_show_advanced_css":0,"wrap_styles_advanced":"","label_styles_background-color":"","label_styles_border":"","label_styles_border-style":"","label_styles_border-color":"","label_styles_color":"","label_styles_height":"","label_styles_width":"","label_styles_font-size":"","label_styles_margin":"","label_styles_padding":"","label_styles_display":"","label_styles_float":"","label_styles_show_advanced_css":0,"label_styles_advanced":"","element_styles_background-color":"","element_styles_border":"","element_styles_border-style":"","element_styles_border-color":"","element_styles_color":"","element_styles_height":"","element_styles_width":"","element_styles_font-size":"","element_styles_margin":"","element_styles_padding":"","element_styles_display":"","element_styles_float":"","element_styles_show_advanced_css":0,"element_styles_advanced":"","cellcid":"c3281","label":"Email","key":"email","type":"email","field_label":"Email","field_key":"email","id":"2_1","beforeField":"","afterField":"","value":"","parentType":"email","element_templates":["email","input"],"old_classname":"","wrap_template":"wrap"},{"label_pos":"above","required":1,"order":3,"placeholder":"","default":"","wrapper_class":"","element_class":"","objectType":"Field","objectDomain":"fields","editActive":"","container_class":"","input_limit":"","input_limit_type":"characters","input_limit_msg":"Character(s) left","manual_key":"","disable_input":"","admin_label":"","help_text":"","desc_text":"","disable_browser_autocomplete":"","textarea_rte":"","disable_rte_mobile":"","textarea_media":"","wrap_styles_background-color":"","wrap_styles_border":"","wrap_styles_border-style":"","wrap_styles_border-color":"","wrap_styles_color":"","wrap_styles_height":"","wrap_styles_width":"","wrap_styles_font-size":"","wrap_styles_margin":"","wrap_styles_padding":"","wrap_styles_display":"","wrap_styles_float":"","wrap_styles_show_advanced_css":0,"wrap_styles_advanced":"","label_styles_background-color":"","label_styles_border":"","label_styles_border-style":"","label_styles_border-color":"","label_styles_color":"","label_styles_height":"","label_styles_width":"","label_styles_font-size":"","label_styles_margin":"","label_styles_padding":"","label_styles_display":"","label_styles_float":"","label_styles_show_advanced_css":0,"label_styles_advanced":"","element_styles_background-color":"","element_styles_border":"","element_styles_border-style":"","element_styles_border-color":"","element_styles_color":"","element_styles_height":"","element_styles_width":"","element_styles_font-size":"","element_styles_margin":"","element_styles_padding":"","element_styles_display":"","element_styles_float":"","element_styles_show_advanced_css":0,"element_styles_advanced":"","cellcid":"c3284","label":"Message","key":"message","type":"textarea","field_label":"Message","field_key":"message","id":"3_1","beforeField":"","afterField":"","value":"","parentType":"textarea","element_templates":["textarea","input"],"old_classname":"","wrap_template":"wrap"},{"processing_label":"Processing","order":5,"objectType":"Field","objectDomain":"fields","editActive":"","container_class":"","element_class":"","wrap_styles_background-color":"","wrap_styles_border":"","wrap_styles_border-style":"","wrap_styles_border-color":"","wrap_styles_color":"","wrap_styles_height":"","wrap_styles_width":"","wrap_styles_font-size":"","wrap_styles_margin":"","wrap_styles_padding":"","wrap_styles_display":"","wrap_styles_float":"","wrap_styles_show_advanced_css":0,"wrap_styles_advanced":"","label_styles_background-color":"","label_styles_border":"","label_styles_border-style":"","label_styles_border-color":"","label_styles_color":"","label_styles_height":"","label_styles_width":"","label_styles_font-size":"","label_styles_margin":"","label_styles_padding":"","label_styles_display":"","label_styles_float":"","label_styles_show_advanced_css":0,"label_styles_advanced":"","element_styles_background-color":"","element_styles_border":"","element_styles_border-style":"","element_styles_border-color":"","element_styles_color":"","element_styles_height":"","element_styles_width":"","element_styles_font-size":"","element_styles_margin":"","element_styles_padding":"","element_styles_display":"","element_styles_float":"","element_styles_show_advanced_css":0,"element_styles_advanced":"","submit_element_hover_styles_background-color":"","submit_element_hover_styles_border":"","submit_element_hover_styles_border-style":"","submit_element_hover_styles_border-color":"","submit_element_hover_styles_color":"","submit_element_hover_styles_height":"","submit_element_hover_styles_width":"","submit_element_hover_styles_font-size":"","submit_element_hover_styles_margin":"","submit_element_hover_styles_padding":"","submit_element_hover_styles_display":"","submit_element_hover_styles_float":"","submit_element_hover_styles_show_advanced_css":0,"submit_element_hover_styles_advanced":"","cellcid":"c3287","label":"Submit","key":"submit","type":"submit","field_label":"Submit","field_key":"submit","id":"4_1","beforeField":"","afterField":"","value":"","label_pos":"above","parentType":"textbox","element_templates":["submit","button","input"],"old_classname":"","wrap_template":"wrap-no-label"},{"objectType":"Field","objectDomain":"fields","editActive":"","order":4,"label_pos":"above","required":1,"placeholder":"","default":"","container_class":"","element_class":"","input_limit":"","input_limit_type":"characters","input_limit_msg":"Character(s) left","manual_key":1,"disable_input":"","admin_label":"","help_text":"","desc_text":"","spam_answer":7,"label":"What is ten minus 3?","key":"spam_1","type":"spam","field_label":"What is ten minus 3?","field_key":"spam_1","id":"5_1","beforeField":"","afterField":"","value":"","parentType":"spam","element_templates":["textbox","input"],"old_classname":"","wrap_template":"wrap"}];nfForms.push(form);

The post Variations on thinking: Keats and Arendt appeared first on Katy Fulfer.

Funnel Cake

How to Measure Revenue Operations

  How to Measure Revenue Operations

We know a few things about Revenue Operations.

  • We know Revenue Operations, as a department, is growing at a rapid pace.

  • We know Revenue Operations identifies the areas of improvement in our process that will have the biggest impact.

  • We know Revenue Operations aligns, focuses, and simplifies things for our business.

But something we don’t know … how do we measure Revenue Operations? 

It’s not as easy as an MQL target you might have for Marketing, a pipeline coverage number you might have for Sales, or a churn rate target you might have for Customer Success. 

Revenue Operations helps all three departments be more efficient by identifying gaps in the process, streamlining operations, and improving alignment – but how do you measure that?

We’re talking about Revenue Operations, so does that mean revenue should be the first and only metric to look at? Or are there interdepartmental metrics we can use to help us see how RevOps is performing? 

The Key Metrics of Revenue Operations

At the end of the day, Revenue Operations is focused on one thing: revenue. Duh, it’s in the name. 

They do that by influencing and mix of the four key metrics: value, volume, velocity, and conversion rates. An increase or decrease in any one of these metrics results in a change to revenue. 


The value of the deals, also known as the average deal size, moving through the sales process and turning into revenue. 


The total volume of deals moving through the sales process and turning into revenue. 


The speed at which deals are moving through the sales cycle and turning into revenue. 

Conversion rates

The rate that deals are moving from stage-to-stage in the sales process from lead-to-revenue. 

You might look at the four key metrics of Revenue Operations and just see levers that impact revenue. Which they are. But it’s important to know and understand how you got to that revenue and how it compares to previous months, quarters, or years, but what’s more important than value, volume, velocity, or conversion rates improving is revenue improving. 

For example, you could have a year when your average deal size decreases from $20,000 to $15,000. That’s looks bad alone. But that’s because you decided to enter a new market so you were able to increase your volume from 250 deals to 450 deals and you were able to get your sales cycle length down from 9 months to 6. 

It’s also important to track and compare these to the goals set out by the Revenue Operations team or the business as a whole. If at the start of a quarter, the Revenue Operations team has identified gaps in the process that will improve deal velocity as well as boost conversion in the funnel – does that line up with the results at the end of the quarter? Did they accomplish what they set out to do? Was there unexpected increases or decreases with the value or volume of deals?

More metrics to measure Revenue Operations

Beyond revenue, and the four main levers we have to increase or decrease it, there are a few metrics to focus on to see how Revenue Operations are performing in your business:

Sales rep efficiency

Carry capacity

Through efficiency gains you can grow the amount of revenue each rep can carry, increasing revenue growth with fewer resources.

Ramp time

Through better Enablement and onboarding, you can reduce ramp time for new hires, such as SDRs and AEs, scaling growth faster, and shortening your rep payback period.

Predictable growth

RevOps brings predictability to your growth through consistent, accurate measurement. You’ll have the confidence to invest in new markets, new headcount, or new strategies – and be able to know early when they’re working and when they’re not.

This could mean:

  • Sales and Finance agree on how to use eARR to measure sales rep profitability, or the profit and loss required to support hiring a new rep.

  • Customer Success and Product agree on how to identify revenue at risk due to product requirements.

  • Sales and Marketing agree on a new market segment to enter, such as a new vertical.

Respond to market changes

As your business grows it requires some big changes, such as:

  • CRM re-implementation

  • Restructuring your teams, territories, and compensation models

  • Introducing and launching new products

RevOps manages internal change by providing communication, training, and project management to make transitions seamless. This reduces your risk of losing deals, losing staff, and losing time.

Measuring Revenue Operations

Revenue Operations creates benefits for Marketing, Sales, and Customer Success – but more importantly, RevOps aligns, focuses, and simplifies the company around the needs of the customer. The trouble is, it’s hard to measure the alignment, focus, and simplicity that the Revenue Operations team is building. 

The start is obvious … revenue. The Revenue Operations team is looking to increase revenue by streamlining operations and filling gaps that have the biggest impact. To get a little more granular than just revenue, we recommend looking at the 4 key metrics of revenue operations: value, volume, velocity, and conversion rates. 

Beyond the main focus of revenue, there are a few areas to look at:

  • Sales rep efficiency

  • Predictable growth

  • Response to market changes

The Revenue Operations Platform for Revenue Operations People to Answer Revenue Questions

FunnelCake is designed for RevOps teams to measure and improve efficiency across the full funnel – like how SLAs in your lead hand-off impact pipeline generation.

Or how deals are getting stuck in Stage 3 with no next steps, impacting pipeline coverage.

Or how reps playing kick-the-can-down-the-road with bad deals impact your forecast.

Book a demo ›  

James Davis Nicoll

<span class="pull-single">‘</span>Til I’m Gathered Safely In / Mystic Pop-up Bar By Ha Yoon-Ah &amp; Jeon Chang-Geun

Written by Ha Yoon-ah and directed by Jeon Chang-geun, 2020’s Mystic Pop-up Bar (Ssanggabpocha) is the South Korean television adaption of Bae Hye-soo’s webtoon Twin Tops Bar. It stars Hwang Jung-eum, Yook Sung-jae, and Choi Won-young.

Han Kang-bae (Yook Sung-jae) is, through no fault of his own, an outcast. Left in an orphanage as a child and rejected by every potential foster parent, he is a hard-working young man with few friends. His troubles are thanks to an unwanted gift: anyone who touches Kang-bae becomes embarrassingly frank about their inner thoughts. Unable to control this ability, Kang-bae assiduously avoids contact with other people. They in turn dismiss him as creepy. 

Weol-ju (Hwang Jung-eum) does not see Kang-bae as creepy. She sees him as a potentially valuable asset in her quest to settle 100,000 grudges lest she be consigned to the Hell of Extinction. 

Jane Mitchell

Thank you for Thoughts and Prayers

Good news. My husband has an appointment for a CT scan on Oct. 5. However, through my social media channels, I have learned that there are a number of people who are waiting a long time for their scan. It maybe that it is not considered “urgent” but of course it is for the person involved. They may be caught in the limbo of the hospital being closed a few months ago.

Before COVID, people were able to get a CT scan in good time. Since everything, including testing, was closed during the quarantine, scans can be behind by two months as the hospitals catch up. I have learned there are no private labs with CT scans in Ontario and, of course, the border is closed. The machines are very expensive to buy and maintain, unlike blood tests.

The number of COVID cases are climbing again and many people are getting tested, as they should. If this second wave fills up the ICU and hospitals, we may end up with tests stopped. Routine tests for breast cancer have actually never started up again. Update: breast cancer tests have started again.

You know where I am going. Wear your mask and keep 6 feet apart from other people. Follow the rules for parties, events and services. Listen to public health. My husband’s aunt died of COVID in March. My cousin is still suffering from it. COVID isn’t just killing those with the disease, the side effects of another quarantine will kill others.

My husband has asked me to keep his health journey private. So I won’t be blogging about this again. Thank you so much everyone for your caring and prayers.

Jen Kuntz

Issues with Word Templates

Recently, there have been issues with Dynamics GP and Word Templates, due to some changes to the most recent Microsoft Office build releases. Specifically, documents generated in Word Templates cannot be opened in Microsoft Word, once you’re running a build from Sept 8/9th or newer. Today’s post is an attempt to clarify what the situation is, and what is and is not affected and clarify some of your options.

Issue Recap

The Microsoft Office releases around September 8th and 9th, 2020 affected the ability for users to open Word Template generated documents. The details of the issues were posted on the Dynamics GP Team’s support blog here. I will not recap all of the details in this post, the support team’s post covers the details plus more recent workarounds to consider.

Who’s affected?

The most commonly used Word Templates are Purchase Orders, Sales Invoices and EFT remittances. What specifically happens is users receiving those documents or users attempting to open those documents cannot open them. The error message, as indicated in the blog post linked above, states “Word experienced an error trying to open the file.”.

The effects are both internal to your organization and external, if you send docs out via the Email Document functionality in Dynamics GP.

Issue 1 – the users generating the documents cannot print/view them if they are on one of the affected builds of Office. That’s a significant issue for organizations who need to print to mail documents to vendors or customers, or simply to be able to print/save copies of these documents for their own internal use.

Issue 2 – if you utilize the Email Document functionality, users who receive those documents won’t be able to open them either if they are using one of the affected builds of Microsoft Office.

It gets worse…

If you saved previously generated documents, or attempt to open previously emailed documents, you will be unable to. For example, a few of my clients pay me via EFT (Electronic Funds Transfer). When I went back to previous emails received from the customers, documents I was able to open in the past I could no longer open on this new build of Microsoft Office. The issue isn’t occurring during generation of the documents, it’s the document format itself (the XML structure, from the latest support team update).

How to mitigate the risk part 1

If you use the Email Document functionality in Dynamics GP, the best way to mitigate the risk for your vendors and customers is to switch to emailing in PDF format only. The good news? You do not need a special version of Adobe on a user’s computer to do this, you merely need to ensure they have Office 2010 or later. (I’ll add “apparently” as I don’t have an Office build that old to test).

Here’s where things get confusing…

In the olden days (saying this tongue in cheek), it was hammered into us (consultants) that you needed to have full Adobe Writer/Distiller on a machine to utilize PDF functionality. Honestly, until this Word Template issue happened, I thought that was still the requirement for emailing Word Templates and I was guilty of implementing functionality like EFT at clients with emailed remittances and leaving them on the default format of Word .docx formats. Boy, I’m glad I was wrong.

If you are using the functionality in Dynamics GP to email Purchase Orders, EFT Remittances or Sales Documents, you do not need full Adobe to make this work. It uses Microsoft Office’s own PDF functionality to convert Word Templates to PDF and email them to your customers or vendors. More importantly, there are NO error messages for the user generating these, even if you cannot even open the native Word template.

That’s just plain weird, but a true story.

Now, if you want to save a report using the “File” shortcut to PDF, or “Sent To” shortcut on a Report Writer report to send as PDF, those functions you DO need full Adobe. Sorry… this isn’t all good news. ♦

How to mitigate the risk part 2

The above is only useful for the documents you are emailing to others, not for the very common situation of needing to actually view/open/print the documents internally, within your own organization. It also doesn’t help the users who are unable to open previously emailed documents.

For now, the best solution is to rollback your version of Microsoft Office to a supported build. If you’re lucky, you can identify a few people in your office that need to be able to generate/save/print documents internally and only roll back for those people. They can then generate the Word Templates and print/save to PDF. That’s short term at best though, although if you are OK with rolling back and disabling future Office updates for a while, this solution could work until a fix is released for Dynamics GP.

That option isn’t possible for all users/organizations I realize. The second best option right now is to look at the blog post linked above, and look for the Sept 22/2020 update. There is information there about a batch processing fix that could work. I have not tested this but the gist is it’s “fixing” the XML in the Word Templates in order to be able to open the template/document.

Will this be fixed?

Initially this was identified as an Office issue. It turns out the Office issue is addressing a security concern, which means it’s now a Dynamics GP issue and how templates are generated needs to be fixed.

The plan at the moment is to have a fix ready for the rollout of GP 18.3, the October 2020 release of Dynamics GP. That’s tentatively planned for October 1st but keep in mind this change may bump that release date by a few days. If you are on Dynamics GP 2018 but didn’t update to 18.2 yet, consider updating to 18.2 and 18.3 when released if this affects you. It’s an 18.x code base so it’s not a major upgrade like it would be going from GP 2016 to GP 2018.

For those on Dynamics GP 2016, the Microsoft Dynamics GP team is looking at rolling it back to GP 2016 but no guarantees there until further information is published.

For those on older versions of Microsoft Dynamics GP, you’re on an unsupported version so unfortunately, this will not be fixed for you.

After all that I’ve said above, if this not what you want to deal with, it may be time to consider a reporting solution where you can replace the out of the box reports with SSRS and avoid Word Templates entirely. Two products I’m aware of that you can look into are Victoria Yudin’s company Flexible Solutions (GP Reports Viewer), and Liaison Messenger.


In closing, there’s not a lot of “good news” in this post. It’s a bit of a crappy situation with no notice and very little in the way of permanent or easy solutions to fix it. Rolling back the version of Office is pretty painless, based on what I saw at a client who was affected. The bigger challenge is now that this isn’t deemed something that will be fixed in a future Office build, you now have to decide between 3 no-so-great solutions – rolling back Office updates for the foreseeable future, updating Dynamics GP when a fix is released, or considering an ISV solution to replace Word Templates entirely.


Gavin Kendall posted a comment on ticket #60

oh good! :) i'll close this ticket but i look forward to your return if there are bugs again :)


Zsolt Stojcsics posted a comment on ticket #60

I have tested it! I think it works :-) If not, "i'll be back" :-D Many thanks!

Communitech News

McRock joins Clearpath Robotics’ US$34M Series C round

Toronto, Ontario – McRock Fund II LP, the latest Industrial Internet of Things (IIoT) venture capital fund managed by McRock Capital, announced today that it has joined the previously announced Series C financing in Kitchener-based Clearpath Robotics (Clearpath). McRock’s US$5M participation increases the Series C round to USD$34 million. McRock joins Kensington Private Equity Fund, BMO Capital Partner, […]

The post McRock joins Clearpath Robotics’ US$34M Series C round appeared first on Communitech News.

Elmira Advocate


This time the evidence comes from the following report: "Elmira-St. Jacobs Water Supply Project Volume II- Elmira Aquifer System: Contaminant Plume Mapping And Source Investigation" prepared by CH2M HILL Engineering Ltd., Waterloo, Ontario, February 1991, on behalf of the Region of Waterloo. While I haven't completed my review as yet a few choice items have however leaped out at me. These speak to more than just the east side (Stroh property). ....................................................................................................................... On page iii (right at the start) we are advised that CH2M HILL assumes presumably based upon timing and production records that NDMA actually entered the municipal aquifer (MU) in the 1950s. Now this would also be due to the nature of the semi-impermeable aquitard being missing below one or two of the west side lagoons on the Uniroyal property hence allowing quick migration from the shallow aquifer directly into the MU. Between private wells in those days still in Elmira, as well as the municipal drinking water system from the nearby north wellfield drawing Uniroyal contaminated groundwater towards itself, I believe that it is highly likely that Elmira citizens were drinking NDMA contaminated water from likely as early as 1960 and maybe as late as 1970 until and after the Elmira water Crisis of November 1989. .............................................................................................. Indeed on page 1 we are advised that after the south wellfield (started in 1970) was shut down (wells E7 & E9) and well E2 shut down as well in the north wellfield that a contaminated with NDMA well (E8) was still in operation however allegedly it was diluted by the other north wellfield wells namely E5, E5A, and E6. I wonder if the tap water was below the current standard of 9 parts per trillion or the then interim standard of 14 ppt or perhaps neither. ....................................................................................................................... Two Figures in this report show heavy phenol contamination from the Uniroyal east side pits (north & south) had crossed over onto the Stroh farm property. The two Figures are 7.7 and 7.8 and they show significant contamination in the Municipal Aquifer (100 parts per billion) and incredibly high concentraions in the shallow aquifer right on the property line between 25,000 and 119,000 parts per billion (ppb). ........................................................................................................ Have no fear, Uniroyal/Lanxess apologists, fellow travellors, politicians and assorted others with axes to grind will continue to deny, deny, deny, and deny.

House of Friendship

You Helped Children Stay Connected This Summer!

Children at Courtland Shelley Community Centre attended camp in small groups at scheduled times with family members and members of their social “bubble.” Here, Maryam, Precious and Devon enjoy a fun afternoon in a local park

It wasn’t a typical summer for children in Waterloo Region – but camp still happened for many of them, thanks to you!

While camp this year looked a little different, children living in low-income neighbourhoods still had the chance to connect, to learn, and grow through an innovative mix of in-person and virtual camp sessions throughout Waterloo Region.

We know that for children living on low income, camp is a lifeline, not a luxury. This summer, it became even more critical for families who felt the impact of the isolation created by COVID-19.

“It gave us a bit of normalcy this summer. It made my children feel that they weren’t still going through a pandemic. This helped tremendously,” said Elisa, a mother of children who attended a special camp at Greenway Chaplin Community Centre, thanks to your support.

Your support of Summer Camp Sponsorship ensured that children had the chance to take a break from the stress of the last few months and simply be kids, whether it was support to participate in “Camp in a Box” offered at Greenway Chaplin Community Centre, or modified day camps provided by House of Friendship at Courtland Shelley Community Centre.

Thank you!

The post You Helped Children Stay Connected This Summer! appeared first on House Of Friendship.

Cherry Park Neighbourhood Association

Community Bread Oven Bakes

Our next bake will be Sunday, October 4th.  The fire will be lit at 11 AM and the oven should be ready for baking by 1 PM.  This bake will go ahead rain or shine.

We are always in need more people to lead baking sessions.  You would not be responsible for teaching baking, but caring for the fire to heat the oven and cleaning up afterwards.  In order to be trained you need to attend a baking session from the lighting of the fire until cleanup is finished (about 4 hours).
If you would like to be trained please contact us.

For those of you who don't know where the Oven is located - it is in the middle of Willow Green Extension Garden in the middle of Raddatz Park (which runs between Gage Avenue and Cherry Street).  It is not on a street, you will need to walk in from Cherry Street along the creek path that goes out the back of the Old Willow Green Garden or come in from Gage Avenue along the little path that leaves the Iron Horse Trail at Gage and follows the creek.

Cherry Park Neighbourhood Association

Outdoor Bread Oven

We will heat up our Outdoor Bread Oven again this Sunday, October 4th.  The lighting of the fire will be at 11 AM and we will be able to start baking at 1 PM.

This bake will go ahead rain or shine, so dress appropriately.You should prepare your dough at home before you come.


Gavin Kendall posted a comment on ticket #60



Gavin Kendall posted a comment on ticket #60

There is also %timerange% or create a new tag using the Time Range tag type.


Gavin Kendall posted a comment on ticket #60

Have a look at your %timeofday% tag. Your %timeofday% macro tag will now use four macro fields ... Macro 1 should be 06:01:00 - 14:00:00 for %year%%month%%day%de Macro 2 should be 14:01:00 - 22:00:00 for %year%%month%%day%du Macro 3 should be 22:01:00 - 23:59:59 for %year%%month%%day%éj Macro 4 should be 00:00:00 - 06:00:00 for %yesterday%éj

James Davis Nicoll

She Got the Power / The Scapegracers (Scapegracers, book 1) By Hannah Abigail Clarke

2020’s The Scapegracers is the first volume in Hannah Abigail Clarke’s projected Scapegracers series. 

Offered forty dollars to spice up a pre-Halloween party with magic, social outcast Eloise ​“Sideways” Pike takes what turns out to be the first step towards forming her own coven. Sideways’ magic is no sleight of hand. It is very real. 

Real magic always has consequences.


Lutherwood Employment Job Search Quick Tips #15 - Spread the Word



Zsolt Stojcsics posted a comment on ticket #60

I've downloaded the linked verion, started it but i don't see the 4th macro! Why?


Zsolt Stojcsics posted a comment on ticket #60

Okay, I will test it as soon as possible


Gavin Kendall posted a comment on ticket #60

Yes :)


Zsolt Stojcsics posted a comment on ticket #60

Sorry, but i have time for this just now. So. If i understand correctly, the new %yesterday% macro tag use the complete date of yesterday, not just the day?


50 Years of Lutherwood - Bill Allen


Cherry Park Neighbourhood Association

ESL Book Club

The CPNA has a book club for adults (14+ yrs) that meets the second Tuesday of each month at 7 PM in Victoria Hills Community Centre.  It is designed for people for whom English is their second language.  We are always open to new members.  Please email reading123@hotmail.com to let us know you are coming.

The Book Club next meeting will be October 13th.  Reminder that because of Covid19 rules, you will need to wear a face mask.  We will also not be able to share snacks for the time being.


Elementary Teachers’ Federation of Ontario Waterloo Region

Orange Shirt Day 2020

  • ETFO is committed to promoting Reconciliation in our schools, across the province, and beyond.  As an organization, we have endorsed the recommendations of the Truth and Reconciliation Commission (TRC).  Wednesday, September 30 is Orange Shirt Day and it provides us with another opportunity to recognize the survivors of the residential school system and teach our students the truths of Canadian history.  

    What is Orange Shirt Day?

    In 1973 six-year old Phyllis Webstad was gifted a brand new orange shirt from her grandmother and wore it to the residential (mission) school she attended in British Columbia. Upon her arrival, school officials removed and discarded the shirt from her and replaced it with a school uniform. This greatly impacted the mental and emotional well-being of Webstad and symbolized that "her feelings never mattered." September was chosen as the time to commemorate all the children that attended residential schools as it was also the time of year that children had to leave their homes and communities to attend the schools. This annual campaign began in 2013 after Webstad shared this experience at a reunion with other survivors.

    How should we observe Orange Shirt Day?

    There are many options to choose from depending on whether you are planning a lesson for your classroom, organizing for your school, or planning a community event.  Some possible suggestions include:

    • write announcements to be shared with the school
    • plan to wear orange
    • distribute orange cloth patches, ribbons, or buttons that can be worn in solidarity
    • read books that share the experiences of Indigenous children who attended residential schools.  Examples include:
    • plan a virtual assembly using Google Meet or classroom lessons (link to sample lesson plans in both English and French)
    • watch videos to learn more:
      • St. Joseph’s residential school 
      • Phyllis Webstad Orange Shirt Day Presentation
    • check our additional ideas and resources online:
      • ETFO Orange Shirt Day
      • orangeshirtday.org

    Consider sharing your Orange Shirt Day initiatives on Twitter or Instagram using the #etfowr hashtag or by mentioning @etfowaterloo.

Bridgit Solutions

10 Reasons for cost overruns in construction projects


The effects of cost overruns in construction projects can be devastating. Construction is a very capital intensive industry, which means overruns on even a single project can jeopardize payroll and equipment rentals elsewhere.

In this post, we’ll look at the reasons for cost overruns in construction projects to help you better avoid them.

10 reasons for cost overruns in construction projects#1. Inaccurate estimates

An estimator’s job is among the most important in construction. By accurately projecting costs for materials, labor, and equipment, they can help companies price jobs to ensure profitability. When estimates are inaccurate, however, project financials can go off the rails very quickly. 

In fact, according to a survey, roughly 30% of construction companies experience regular overruns as a result of profits being less than what they expected based on the estimate. Additionally, 25% of respondents reported that just two or three inaccurate estimates could put them out of business.

You can avoid this by making better use of construction management software. Procore, for example, has an entire suite of financial tools that will help you ensure accuracy in project costing and bid management.

In addition to making better use of technology, watch out for these common estimating mistakes:

  • failing to fully understand the project’s scope

  • not taking risks into account

  • making uneducated predictions

  • sending estimates out before properly reviewing them

  • neglecting to read subcontractor estimates thoroughly

  • being overly optimistic about currency exchange rates (when applicable)

#2. Poor planning and design

Cost overruns in construction projects are also often the result of poor designs and questionable planning. These mistakes can necessitate last-minute modifications, which can hold your project up substantially, costing thousands of dollars.

Again, a very easy way to avoid this sort of hassle is to use technology more effectively. Building information modeling programs can pinpoint potential problems long before workers begin construction.

It’s also much easier to change digital designs than to have physical sketches redrawn. In the latter scenario, you’d additionally need to distribute those changes efficiently to avoid workers relying on outdated information.

#3. Failing to account for hidden costs

Not every cost is easy to predict, especially when you’re dealing with human beings. 

Labor, in particular, can be hard to price thanks to inefficiencies such as time theft, which can be a lot more subtle and hard to detect than many construction companies think. Check out this article for some tips on accurately calculating labor costs with these hidden expenses in mind.

Other hidden costs some companies often fail to account for include permits, spontaneous changes, and unexpected increases in costs between the estimating and procurement stages. This is where having an experienced construction financial team really comes in handy.

#4. Assuming change orders won’t happen

Change orders are a common occurrence in construction yet they still catch some companies by surprise. This can lead to cost overruns in construction projects when inadequate resources (including time) have been allocated to compensate for adjustments.

Matters are only made worse when a construction company isn’t using adequate software that can disseminate change orders to the appropriate parties soon enough.

In such a scenario, even a small change order can have ripple effects that throw the entire project’s financials out of balance.

Good project planning techniques and programs include the capacity to simulate various types of scope changes during the preconstruction phase. This proactive approach can help companies avoid the effects of cost overruns on construction projects.

#5. Poor scheduling

Construction resource management is among the most important aspects of any project. Done effectively, it can ensure resources are available when needed and help with forecasting as well as tracking.

Without good construction resource management, you’ll find workers are either chronically over or under-utilized and kept waiting around for resources that aren’t where they should be.

Programs like Bridgit Bench can help you avoid this by tracking resource utilization, dependencies, and much more.

#6. Not having the right workers in place

Not having the right workers in place can manifest itself in a few different ways. 

For one, it can mean having the wrong workers around, which might lead to inefficiencies on the job site and inferior work, which can lead to cost overruns.

Construction companies also increasingly find themselves impacted by labor shortages that have made workers in particular trades difficult (and therefore costly) to find.

Check out this article for some tips on leveraging data to reduce construction skill gaps at your company.

#7. Failing to adapt quickly enough

The world changes at a breathtaking pace. As one of the biggest and most integral industries on earth, construction faces many of these changes head-on. The companies that thrive are those which promptly adapt to these changes.

COVID-19 is a classic example of a time when being nimble offered substantial benefits for construction companies around the world. Less-flexible companies found themselves struggling to navigate the new world of material shortages and social distancing guidelines. 

The increased reliance on remote workforce management technology also negatively impacted companies that have been slow to adopt digital technology into their workflow.

Digitization, in particular, tends to be a common roadblock among older construction companies. As we discussed in this article, it’s one of a few areas in which analysts have been calling for serious change. Prompt digitization could save the industry billions of dollars every single year, including thanks to reduced cost overruns on construction projects.

#8. Poor on-site management

Ineffective management on the job site can make inefficiencies like time theft even worse. Workers in the front office and physical laborers don’t always see eye-to-eye on things, which is why companies need good job site management to bridge the gap and keep everyone happy.

Beyond managing interpersonal conflicts, job site management needs to have a keen understanding of the project’s scope and what it will take to deliver on-time. Management should be able to make quick decisions using the correct tools and up-to-date information.

#9. Poor communication

Construction projects have numerous moving parts. If those parts aren’t synchronized, cost overruns are very likely. Your company will lack a single source of truth, which is one of the pitfalls of ineffective remote manpower planning.

Workers should have the skills and tools to facilitate proper communication between various stakeholders. This will ensure your project stays on track and on-budget.

#10. Administrative errors

Last on our list of reasons for cost overruns on construction projects, we have administrative errors. These can include things like:

  • miscommunication concerning accounting

  • poor document management

  • inappropriate micromanagement (instead of allowing professionals to make decisions based on their expertise)

Administrative errors can be greatly reduced by establishing a data-driven culture rather than one that relies on guesswork.

The effects of cost overruns in construction projects can be devastating. We hope this article has given you some valuable insights into avoiding these pitfalls.

To summarize, avoiding cost overruns comes down to better management. Companies should strive to conduct better estimating, planning, and communication to keep projects moving forward on-time and on-budget.

  ♦ Lauren Lake

Lauren Lake is the COO and co-founder at Bridgit. She holds a degree in Civil Structural Engineering and is well-versed in construction workforce management and resource planning processes. Lauren has been named to the Forbes Manufacturing & Industry 30 Under 30 and Best Of Canada Forbes Under 30 Innovators lists. Lauren has presented at industry events and conferences, including BuiltWorlds, Canadian Construction Association, Procore Groundbreak, and more. Follow Lauren on LinkedIn and Instagram.

See Bridgit Bench in action

Set up your free tour of Bridgit Bench.


Elmira Advocate


First off on a barely semi-related note: This report above has a number of references to local landfills and Uniroyal Chemical and other industries contributing to them. This includes (pg. 33) part of the M2 landfill now on the Lanxess property being reburied in the First St. Landfill immediately downstream of Lanxess and right on the Canagagigue Creek. Pg. 26 & 33 also reference DPA (diphenylamine) tars being buried in M2. Plus more. .................................................................................................................. Page 37 references "vegetative stress" both along the Canagagigue Creek as well as to the east of RPE-1. Well to the east means the Stroh farm and this "vegetative stress" was visible for decades in planted crops next door as well as being proven a few short years back when the soil was (barely) tested i.e. 15 cm or 5.9 inches deep. .............................................................................................. Page 16 has a reference to "...recontouring the area in 1989." This area referenced was the extreme eastern side of the Uniroyal/Lanxess site right beside the Stroh farm. Despite this "recontouring" there were lots of high detections of DDT, dioxins/furans there and even some PCBs in a test pit. ............................................................................................................... There are further references to overflow from the east side pits being collected in open ditches and drained towards the gravel pit on page 39. The next page (40) suggests that many of the used drums deposited in RPE-4 & 5 ruptured at the time of disposal. An estimate of 3,400 drums were in these two pits with the majority in the southern pit RPE-5 which of course is closest to the SDDB (Stroh Drain, Ditch & Berm). These two pits (RPE-4 & 5) were not excavated until the fall of 1993. .............................................................................................. There is no honest way around the huge probability of a sink of DDT, dioxins/furans and possibly PCBs and more in the lower lying area to the immediate east of the SDDB. Dishonest people with a financial conflict of interest will however maintain otherwise and their fellow travellors (politicians etc.) will support them.

James Davis Nicoll

The Flame That’s in Her Eyes / The Universe Against Her (Telzey Amberdon, book 1) By James H. Schmitz

James H. Schmitz’s 1964 The Universe Against Her is a fix-up and expansion of the novelette Novice(1962) and the novella Undercurrents (1964).

Telzey Amberdon is a bright, fifteen-year-old second-year law student at the prestigious Pehanron College on Orado. Unfortunately for her, Telzey is not currently on Orado. She is on Jontarou, visiting her least-lovable aunt, Halet. Halet is full of saccharine spite; she has plans for her excessively intellectual niece. 

Halet is not the only person in whose schemes Telzey features.

Elmira Advocate


My review of the overland flow of wastewaters from the east side pits (RPE 1-5) continues. Two reports I am examing are "A History of Uniroyal Waste Management At Elmira" and the Environmental Audit. Phase I Report, August 1991. The first report was authored in 1985 by Wayne Jackman and Al Ralston of the Ministry of Environment (MOE) along with Tony Smith of the Grand River Conservation Authority (GRCA). The second (Environmental Audit) was produced by Conestoga Rovers & Associates on behalf of Uniroyal Chemical and as mandated by the Ontario MOE. .......................................................................................... Quoting from page 11 of the first report "There was in all likelehood surface drainage to the stream from the east side waste ponds as well as groundwater seepage to the stream from both east and west ponds." This quote is very important as it indicates the volumes of overflowing wastewaters leaving the east side ponds several hundred metres away from the Canagagigue Creek. Lesser volumes would have totally soaked into the ground over that significant distance and not gravity flowed both onto the Stroh and Martin farms as well as into the creek. .................................................................................................. The Environmental Audit delivers some fascinating information on pages 43 to 44 namely: "Seepage and overflow from the pits RPE1 to RPE5 was directed by drainage ditches into gravel pits located in the southeast portion of the Site. This practice began in the early 1940s until approximately 1970, when the east side ponds were closed and/or lined. Liquids would pond in the gravel pits and eventually seep down into the subsurface soils. Liquid waste water was continually standing in the gravel pits until the east side pits were closed. When seepage from these pits subsided in the early 1970s, the gravel pits dried up. The area of the standing water in GP-1 and GP-2 was approximately .23 and .36 hectares, respectively." Wow! Conestoga Rovers (CRA) are claiming that the volumes of wastewaters overflowing from the east side pits were so significant that wastewater "...was continually standing in the gravel pits...". That is an astounding statement in that it applies to any lower ground surface elevation areas along the paths of these overflowing wastewaters such as the area to the immediate east of the Stroh Drain, Ditch & Berm (SDDB). Also of great interest is the part of the quote which stated "Liquids would pond in the gravel pits and eventually seep down into the subsurface soils." Of course they would whether in GP-1 and GP-2 or wherever else they had ponded such as the low elevation area, basically a very large bowl, (345 -345.5 metres above sea level) to the immediate east of the SDDB. ..................................................................................................................... Stories have changed somewhat over the decades not based upon better evidence or scientific understanding but based upon the self-serving wishes of the polluter and the MOE not to have to spend more money on much needed cleanup.


Auto Screen Capture released /


Carrie Snyder: Obscure Canlit Mama

Welcome to my studio

I’m sitting on Great-Aunt Alice’s tiny rocking chair, wearing wool socks and a scarf, hoodie up, half-frozen; but the window is open because it’s September! Because I need fresh air. My studio is a different space than it was just a week ago, when I still called it “my office.”

Last Friday, I spent the entire day reading my friend Emily Urquhart’s new book, The Age of Creativity, which is part-memoir, part-exploration of the idea that age does not destroy or diminish creativity, even as it may alter it in significant ways. The book is about Emily’s relationship with her father, a visual artist. I was struck by the detail that, no matter where he’s lived, her dad has an ever-present corkboard on which he pins sketches and ideas for works-in-progress; I like that it is always hung on the wall beside where he eats his meals, a sign, for Emily, that he never really stops practicing his craft.

Last Saturday, I biked across town to celebrate the launch of Emily’s book, at a delightful event in her driveway. Emily shared early scenes from the book with me and Tasneem (all of us, above, at the launch), and it was wonderfully exciting to discover how Emily had structured the book in full; equally fascinating to discover — what was left out of the final version. Proof that letting go of material is as important as managing smooth transitions (note: these two elements may be the most challenging of any revision; and Emily has accomplished both brilliantly).

What’s the difference between an office and a studio?

When I decided on a whim last weekend to buy some paint and make myself a yellow door, I wanted to create a space that invited me in; the opposite of “going to work.” My studio, I hope, will be welcoming, rich with changing visual inspiration, with space to stretch and do yoga, and to spread out and draw with crayons, too; but also, organized, tidy, holding just the essentials (as defined by me!). On Saturday, I cleaned out files and drawers. I said goodbye to some projects that have aged past their time; now stored on shelves in the attic. And on Sunday, I reunited with my younger self, the self who moved often, and who always claimed her new space with a few coats of fresh paint. I painted for hours, finding the joy in the task, letting my inner-perfectionist take over; while I worked, I listened to 1619, an essential podcast from The New York Times that centres slavery at the violent heart of American history.

The new yellow door belongs to a studio.

So does the corkboard wall, the final piece to the puzzle, installed just last night by Kevin, who also researched it for me, and found a Canadian company that makes and sells all things cork. As you can see, I haven’t been brave enough to fill it with much, yet. But I hope to, and hope, too, that I will be brave enough to remove sketches and ideas when they’ve grown past their time.

Knowing what to remove, what to take down, what to edit out is as essential to completion as invention itself.

Completion is not something I’ve gotten a handle on, recently (or even in the last number of years). I’ve been making, making, making new things, raw and muddled and messy. Now to learn (re-learn) how to finish projects, too.

Welcome to my studio.

xo, Carrie

Kitchener Rangers

Fill The Rangers Bus In Support Of The Food Bank of Waterloo Region

Throughout Waterloo Region, there is a consistent need for food assistance. Let's work together to support #RTown. In lieu of not having a home game during this year's Thanksgiving weekend to collect non-perishable food items for The Food Bank of Waterloo Region, we're asking fans to help Fill the Rangers Bus! Partnering with Rangers Reach, Zehrs Laurentian, and Great Canadian Holidays & Coaches, a team of volunteers will be on-site at Zehrs Laurentian (750 Ottawa St S, Kitchener) from 10 am-1 pm on Saturday, October 10th to receive donations. Social distancing and personal protection protocols will be in place (masks, hand sanitizer, and/or gloves). Fans are encouraged to pack their donations in a plastic bag. The drop-off location will be set up near the Rangers team bus, which will be parked along the sidewalk at the store’s exit. A table will be set up to leave your food items for collection. If you don't have any non-perishable food items on-hand, consider stopping inside Zehrs Laurentian to purchase some of what's needed most: ♦ A limited number of posters will be given to fans who make an in-person food donation. To make a monetary donation through The Food Bank of Waterloo Region's website, CLICK HERE. Thank you for helping us make a difference in our community!  

Jane Mitchell

Will COVID Kill My Husband Even Though He’s Not Infected?

In the month of August, I noticed my retired husband began to nap twice a day with a full eight hours of nightime sleep. He lost his appetite, giving half of his favourite pork chop to the dog and not eating the mashed potatoes with gravy. Veggies have never been a favourite.

We made an appointment with the doctor. His heart, lungs, blood pressure, really everything seemed fine. Negative to COVID. We suspect but hope not cancer.

Our doctor sent in a requisition for a CTscan. Due to the labs catching up from the pandemic restrictions, it could be two months before my husband gets a CTscan. The doctor has put URGENT on the requisition and we are willing to travel for a test that will be sooner. Still it may take awhile.

I know as the retired director of HopeSpring Cancer Support Centre, plus all the people around me that have or have had cancer, that two months to diagnose cancer means the difference between life and death.

Provincial Government, is there not some way to increase the capacity of the medical system so people can be diagnosed in a timely fashion?

I am sick of heart that my wonderful husband may end up a victim of COVID without having the disease.

Addendum: Please wear a mask, social distance and don’t go out if you are unwell. Don’t have big parties or go to large gatherings. If the COVID cases soar again, we could have another lockdown. We are now learning what the lockdown meant when everything was closed. A two month wait for people to have necessary medical tests. Breast cancer tests are still not happening.

Elmira Advocate


First off kudos to Ms. D'Amato. The "civilian" police board has been fundamentally a sacred cow forever and it never should have been. Instead of three regional councillors, as well as regional council appointed citizen members and a provincially appointed citizen member all sitting on their duffs collecting their per diem and socializing, this Board has been needed to improve our local police force. It has failed miserably. ............................................................................................................. The title of Luisa D'Amato's Opinion piece is "Police Board members can't be silent about racism" and was published on September 11, 2020. I know what Ms. D'Amato means however literally she is incorrect. The police board can and is silent about racism. They have been silent about "carding". They have been silent about misconduct and harassment of female members of the force. They have been silent about police shootings and killings in Waterloo Region. Being silent, keeping their heads down and not rocking the police boat is what they do best. .................................................................................................... Ms. D'Amato singles out the following Board members namely Woolwich Mayor Sandy Shantz, Ian McLean, Karin Schnarr and Tony Giovinazzo for asking questions regarding spending by the police but nothing about racism, racist behaviour and or any difficult or awkward questions that oops might be construed as being provocative, embarassing or critical of the police. As Ms. D'Amato states "The silence is deafening. And heartbreaking." She later adds "Systemic racism in police services is inextricably woven into systemic racism in society." "In this task, polite silence is not our friend." .................................................................................................................. Full disclosure: I have in the past applied to be a civilian appointee to this Board. Apparently outspoken, hard working and opinionated people need not apply. No surprise at all.

House of Friendship

From Living to Drink to Finally Living

Liz lost so much weight while drinking that she couldn’t walk without help. Now, she can make plans for her future.

“I had no idea how bad my drinking had become.”

It took a conversation with caring neighbours for Liz to realize that she had a problem.
“They told me, ‘you’re a skeleton.’ I hadn’t realized it until they pointed it out.”

Liz, 58, had always been a social drinker. She had spent years in a difficult marriage with a husband who had his own struggles with alcohol. When he was hospitalized for mental health challenges, Liz was on her own. She turned to alcohol.

“It’s ironic, isn’t it?” said Liz.

The drinking became the main focus of her days. Liz was able to work in her role as a teacher in an adult education program. She would get through the day without any alcohol, but it was always on her mind.

It got so bad for Liz that she lost interest in anything else. She forgot to eat.

“I knew I could get through the day without a drink. But by the end of the day, I had to get home. I needed to drink.”

“I was drinking for the sake of drinking. I would sit in my chair and listen to music, and drink.”

Liz endured several hospitalizations because of her alcohol consumption. She lost so much weight that she was down to 100 lbs. She couldn’t walk without the help of a walker.

“My daughter Gillian saw me in hospital and thought I was going to die. It was that bad.”

And each time that she got out of the hospital, after going through a painful withdrawal process, she would drink again. Liz didn’t know how to stop.

Finally, during her last hospitalization, she  met with a counsellor that connected her with HERE-24/7. It was through this service that Liz found out about the Addiction Treatment programs available through House of Friendship.

“I had no idea these programs existed,” said Liz.  “It was the best place I could have ended up.”

Liz participated in the intensive Day Treatment program, as well as our after care and various workshops. Through these programs, Liz has learned what triggers her need for alcohol – and how to manage it.

“I learned some good tools I didn’t have before. I haven’t had a drink since.”

Now, Liz is keeping active, returning to her  loves of yoga and gardening, and enjoying the companionship of her dog, Peter Parker, while caring for her husband.

“I’m looking forward,” said Liz. “I’m happy I can do that.”

The post From Living to Drink to Finally Living appeared first on House Of Friendship.

Andrew Coppolino

“Taste the Countryside” on September 25

Reading Time: < 1 minute

As a kick-off to fall — and to remind everyone of the amazing and surprising range of food available in our own backyard — the Townships of Woolwich, Wellesley and Explore Waterloo Region are working with local food establishments to host a dining event in the Region’s Countryside from September 25 to October 4.

#TastetheCountryside is a 10-day event where participating businesses offer a delicious prix fixe menu for $15 or $35.

As part of the event, you are encouraged to dine your way through the countryside for a chance to win prizes.

You can enter a ballot each time you enjoy a #TastetheCountryside meal: the more you dine, the more chances you have to win!

To enter a valid ballot, you must post a photo of their meal and share it to Instagram or Facebook using the hashtag #TastetheCountryside.

Visit tastethecountryside.ca and follow @TastetheCountrysideWR on Instagram for menus, prizes and locations as they become available.

[Image/Taste the Countryside]

Check out my latest post “Taste the Countryside” on September 25 from Andrew Coppolino - World of Flavour.

James Davis Nicoll

Thy Fearful Symmetry / When the Tiger Came Down the Mountain (Singing Hills Cycle, book 2) By Nghi Vo

Nghi Vo’s 2020 When the Tiger Came Down the Mountain is a secondary universe fantasy. It is the second volume in her Singing Hills Cycle.

Cleric Chih and their guide Si-yu ride on mammoth-back to an isolated way station. They hope to find a place to rest for the night. Instead, they find an unconscious man and three tigers. Tigers are generally bad news for travellers. These particular tigers are of the shape-shifting, talking variety, they are also very hungry tigers. 

Adam Wathan

Composing the Uncomposable with CSS Variables

Many CSS properties are shorthands for a set of other properties, for example the margin property is a shorthand for setting margin-top, margin-right, margin-bottom, and margin-left all at once.

Because the margin property decomposes into those four separate properties, it translates well to a utility class system like Tailwind CSS, where we can create separate utility classes for each property, then compose them arbitrarily in HTML:

  .mt-2 {
    margin-top: 0.5rem;
  /* ... */
  .mr-6 {
    margin-right: 1.5rem;
  /* ... */
  .mb-8 {
    margin-bottom: 2rem;
  /* ... */
  .ml-4 {
    margin-left: 1rem;

<div class="mt-2 mr-6 mb-8 ml-4">
  <!-- ... -->

Without this composability, it would be essentially impossible to do all of the things you can do in pure CSS because of the combinatoric explosion of classes that would have to exist to support every combination of values.

For example, look at this absurdity:

.mt-2_mr-0_mb-0_ml-0 {
  margin: 0.5rem 0 0 0;
.mt-2_mr-0_mb-0_ml-1 {
  margin: 0.5rem 0 0 0.25rem;
.mt-2_mr-0_mb-0_ml-2 {
  margin: 0.5rem 0 0 0.5rem;
/* ... */
.mt-2_mr-0_mb-1_ml-0 {
  margin: 0.5rem 0 0.25rem 0rem;
.mt-2_mr-0_mb-1_ml-1 {
  margin: 0.5rem 0 0.25rem 0.25rem;
.mt-2_mr-0_mb-1_ml-2 {
  margin: 0.5rem 0 0.25rem 0.5rem;
/* ... */
.mt-48_mr-48_mb-48_ml-48 {
  margin: 12rem 12rem 12rem 12rem;

If we had to do this in Tailwind, the development build would be like 4gb (instead of a lean and mean 3mb, har har).

Sadly, some CSS properties do not decompose into separate properties. One example is transform (although there are proposals for splitting it up!)

.awesomeify {
  transform: translateX(3rem) rotate(90deg) scale(1.5);

If we want to translate an element by X, rotate it by Y, and scale it by Z, there's no way to do it using three separate utility classes.

Or is there?

A brief introduction to CSS variables

CSS custom properties (more commonly referred to as CSS variables) allow you to create a single source of truth for a value and refer to it in other parts of your CSS:

:root {
  --color-brand: #0d84ff;

.btn-primary {
  background-color: var(--color-brand);

.link {
  color: var(--color-brand);

The cool things about CSS variables is that unlike in Sass/Less/Stylus/potato, they are computed at run-time rather than at build-time, so they can change.

For example, you might set your headline color to black by default:

:root {
  --headline-color: #000;

.headline {
  color: var(--headline-color);

...then magically override it white any time it's within a parent with a class of dark:

.dark {
  --headline-color: #fff;
<h1 class="heading">My text is black</h1>

<div class="dark">
  <h1 class="heading">My text is white</h1>
Using CSS variables for partial values

This is cool on its own, but what's even cooler is that CSS variables don't have to represent a complete value — they can be used for partial values, too.

For example, you can store just the RGB channels of a color in a variable, and stick it into the rgba() function along with an opacity value:

:root {
  --rgb-brand: 13, 132, 255;

.btn-primary--faded {
  background-color: rgba(var(--rgb-brand), 0.75);

This is how Tailwind's text opacity utilities work.

Every text color utility sets a --text-opacity variable to 1, then references it for the alpha channel of an rgba value:

.text-blue-300 {
  --text-opacity: 1;
  color: rgba(144, 205, 244, var(--text-opacity));

Then the actual text opacity utilities simply change that variable to another value:

.text-opacity-50 {
  --text-opacity: 0.5;

Since we define the text opacity utilities after the text color utilities, the variable value in the text opacity utility always takes precedence over the value set in the text color utility:

<h1 class="text-blue-300 text-opacity-50">
  I'm blue at 50% opacity.

Without this technique, it would be impossible to control the color and opacity independently using classes, because all the work needs to be done in one CSS property.

Filling "slots" using CSS variables

So what about our original issue, trying to make the transform property composable?

The way we do it in Tailwind is by creating variables for the various transform features, and combining them together to create the entire transform value.

Here's a slightly simplified version (we also let you scale X and Y independently, as well as skew):

.transform {
  --transform-translate-x: 0;
  --transform-translate-y: 0;
  --transform-rotate: 0;
  --transform-scale: 1;
  transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) scale(var(--transform-scale));

You'll see that what we're doing here is creating "slots" in the transform value, one for each of: translateX, translateY, rotate, and scale.

We fill each slot with a "no-op" value by default, like rotating by 0 degrees, or scaling by a factor of 1.

Then we define additional classes that manipulate only the CSS variables:

.translate-x-2 {
  --transform-translate-x: 0.5rem
.translate-y-3 {
  --transform-translate-x: 1.5rem
.rotate-45 {
  --transform-rotate: 45deg
.scale-150 {
  --transform-scale: 1.5;

Again, since those utilities are defined after the transform utility, they override the variables, without actually blowing away the transform property itself:

<div class="transform translate-y-3 rotate-45 scale-150">
  <!-- ... -->

The transform class "enables" transforms, and the classes for each variable just manipulate one of individual transform "slots".

This takes a traditionally non-composable property, and makes it perfectly composable using multiple classes in your HTML.

Concatenating optional values using empty variables

This is where things get really wild.

Say you're trying to make something like the font-variant-numeric property composable.

It's made up of a bunch of different optional chunks:

font-variant-numeric: {ordinal?} {slashed-zero?} {figure-value?} {spacing-value?} {fraction-value?}

So all of these are valid:

.my-class {
  font-variant-numeric: ordinal;
  font-variant-numeric: slashed-zero;
  font-variant-numeric: ordinal slashed-zero;
  font-variant-numeric: ordinal tabular-nums;
  font-variant-numeric: slashed-zero lining-nums;
  font-variant-numeric: slashed-zero diagonal-fractions;
  font-variant-numeric: ordinal tabular-nums diagonal-fractions;
  font-variant-numeric: ordinal slashed-zero oldstyle-nums tabular-nums diagonal-fractions;
  /* Etc. */

Taking what you've learned above, you might think to try something like this:

.variant-numeric {
  font-variant-numeric: var(--variant-ordinal) var(--variant-slashed-zero) var(--variant-figure) var(--variant-spacing) var(--variant-fractions);
.ordinal {
  --variant-ordinal: ordinal;
.slashed-zero {
  --variant-slashed-zero: slashed-zero;
/* ... */
.stacked-fractions {
  --variant-fractions: stacked-fractions;
.diagonal-fractions {
  --variant-fractions: diagonal-fractions;

The problem is that doing things this way, our variables like --variant-ordinal have no default value, which means when var(--variant-ordinal) tries to resolve, it will be what the spec calls the invalid value, which actually invalidates the whole rule, so the CSS isn't applied at all.

So you might think, "well maybe we can default to an empty string?"

--variant-ordinal: '';

The problem is that's not actually an empty string at all — in CSS that's the literal value ''. Remember, CSS values aren't quoted.

So what can we do? Well it turns out whitespace is a valid CSS value.

--variant-ordinal: ;

Yep, that's not a syntax error, that's perfectly valid CSS that sets --variant-ordinal to a literal space character.

Now when var(--variant-ordinal) resolves, we'll get a space, which is totally allowed in a list of values.

Here's what a working solution looks like:

.variant-numeric {
  --variant-ordinal: ;
  --variant-slashed-zero: ;
  --variant-figure: ;
  --variant-spacing: ;
  --variant-fractions: ;
  font-variant-numeric: var(--variant-ordinal) var(--variant-slashed-zero) var(--variant-figure) var(--variant-spacing) var(--variant-fractions);
.ordinal {
  --variant-ordinal: ordinal;
.slashed-zero {
  --variant-slashed-zero: slashed-zero;
/* ... */
.stacked-fractions {
  --variant-fractions: stacked-fractions;
.diagonal-fractions {
  --variant-fractions: diagonal-fractions;

The only problem with this is that it probably won't work in your production build.

If you're using any kind of CSS minifier, it is almost guaranteed to strip these variables out in my testing. In fact, this is the only thing that actually worked:

.variant-numeric {
  --variant-ordinal: var(--not-a-real-variable,/*!*/ /*!*/);
  /* ... */

What the fuck? Yeah I agree. Basically what we're doing here is tricking the minifier into keeping that space that appears between the two comments. We have to put ! in the comments to tell minifiers not the strip them, and we have to do all of that as the default value of a non-existent variable, otherwise the minifiers will see the value as empty and strip the whole declaration.

The nice part is this should actually be fixed when PostCSS 8 gains mass adoption, so we'll be able to go back to this slightly less weird looking syntax instead:

.variant-numeric {
  --variant-ordinal: ;
  /* ... */

CSS, what a riot.

Kitchener Rangers

OHL Announces Key Dates for 2020-21 Season

  Toronto, ON – With a planned return to play less than three months away, the Ontario Hockey League continues to work with government and health agencies to plan the safe return of OHL action while also finalizing outstanding issues such as safe attendance at venues and cross border travel for teams. In preparation for the 2020-21 playing season, the League today announced a number of key dates to be circled on the calendar. OHL Training Camps are scheduled to open on Sunday, November 15, with Exhibition play commencing on the weekends of November 20-22 and 27-29. Other notable dates for the 2020-21 season include a February 10, 2021 trade deadline, the conclusion of the Regular Season on April 29 and the 2021 OHL Playoffs for the J. Ross Robertson Cup taking place from May 2 to June 14. The 2021 Memorial Cup presented by Kia is scheduled for June 17-27 and will be hosted by either the Oshawa Generals or the Soo Greyhounds. With an eye to the future, the 2021 OHL Priority Selection presented by Real Canadian Superstore is scheduled for Saturday, May 8 followed by the OHL Under-18 Priority Selection on Wednesday, May 12. The OHL plans to open the 2020-21 Regular Season on the previously announced target start date of Tuesday, December 1. About the Ontario Hockey League The Ontario Hockey League is a proud member of the Canadian Hockey League which is the world’s largest development hockey league with 60 teams in nine Canadian provinces and four American states. In addition to the OHL, the CHL is made up of the Quebec Major Junior Hockey League and the Western Hockey League. The CHL supplies more players to the National Hockey League and U SPORTS than any other league.

Kitchener Rangers

Season Ticket Holder Survey Results and Return To Play Update

We hope that you and your families continue to stay safe and healthy.

As we continue preparing for the return of Rangers hockey to The Aud, we wish to have continued communication with our fans as best as we can. We had an incredible response to our Season Ticket Holder survey, with just over 1,000 Season Ticket Holders participating.

We wish to share with you the survey results in the graphic below (click on the image to magnify).

This valuable information will assist us in finalizing our ticket strategy for the 2020-21 season.

More information is still to come in regards to schedule specifics and associated health and safety protocols, but we are certainly excited to get back on the ice!

When we have more information to share, we will be sure to communicate this to you. In the interim, we will continue to prepare for the start of the season under the guidance of protocols set out by our local medical officers and the province.

We can’t thank you enough for your ongoing support of our players and organization. See you all back at The Aud soon!


Joe Birch Chief Operating Officer