The Print House

Reader

Read the latest posts from The Print House.

from heliotrope

I just smoked a bowl. On the TV, Doechii's Tiny Desk Concert plays. 2024 has been an incredible year for women in and around hip-hop. AmaaRae got featured in GQ, Elle, and Vulture magazines; Doechii is finally getting the attention she deserved after years of pushing it; Sexxy Red is reminding everyone about the thorough-line that connects the 5 tenets of hip-hop; and GloRilla dropped so much good music, her home city of Memphis, TN forgot all about her DUI arrest and awarded her the keys to the city. Matter of fact, I could probably write a whole paragraph on how 2024 was the year of GloRilla. She had a whole song go viral with a TikTok snippet. My dear reader, DJs downloaded a 45 second snippet off of TikTok and had crowds yelling out the lyrics at live shows, ALL BEFORE THE SONG OFFICIALLY DROPPED.

I have followed the rise of all these artists but I've been most impressed by the rise of Amaarae. Artists from Ghana barely make it to where she is but even less manage to stay in the limelight for as long as she has. Combined with truly incredible lyrics and production, I don't know if there are more than 5 artists from Ghana I like more than Amaarae. I can confidently say I've been listening to her music from the very beginning and she is undoubtedly a big influence in my music.

I started making music in the early 2010s (first with my best friend Henry Richardson, then in a band in high school and now solo). These years were a golden age for hip-hop in Ghana. The popularity of Twitter and widespread access to the internet gave rise to a burgeoning underground hip-hop scene made up of older teenagers and young adults. These artists took most of their inspiration from western acts as opposed to African musicians and as such the subject matter of the music shifted from light-hearted, folksy to something darker and metaphoric. There was definitely a downside to this, as most artists chose to abandon African ways storytelling tendencies entirely in favour of something that would appeal more to the big boys in Newark.

The scene was intricately tied to Twitter. The social media site blew up relatively early in Ghana (I created my account in August 2011) and the first few hundred users garnered thousands of followers quickly by doing regular Twitter shit: dunking on people. Maybe this is a symptom of my jealousy in how popular these accounts were, but some of these guys would talk such a big game on Twitter and I'd see them in church youth service acting all bashful and shit. No energy in the house of the Lord I guess.

My favourite artists from this era were a duo who went by Cruk'dStr8. They would collaborate with a range of artists in Ghana and the States and it was some of the best music I'd heard in a long long time. First making a name for themselves by dropping singles on Friday sampling popular songs (hip-hop fans might see the influence from Kanye West's GOOD Friday drops) and putting Ghanaian rappers on them. These drops were huge, and got 1000s of listens per post (if you don't get how big a deal this is, you just weren't there) and the group would the social media site to drop hints of an upcoming album.

My best friend, Henry, and I would listen to these drops religiously and I (admittedly) would bite from them here and there for our own little rap group in primary school: Royal Rappers. A lot of people are embarrassed by their rap stories in middle school, but not I. That shit was awesome. We started with just banging on desks with 5 or 6 people around and we ended with a performance in front of the whole school. Our first song, We Need A Beat, was so popular that it spawned another rap group in our class and they hit back with a diss, Beat Without A Bass. We were lucky the rapping was trash because their chorus was way better and title of the song alone almost cleared us... but this is a story for another time.

On February 2nd, 2013, Cruk'dStr8 dropped the album, Heliotrope. God. What a project. I didn't realize as an artist, you were allowed to do what they did on that album. Themes of travelling through Dante's inferno to find a missing piece of yourself, combined with production that was years ahead of what anyone else was attempting to do, and the bars. THE BARS. I am tempted to put some of my favourite lines here but I don't think it matters now. If you're curious here is a Genius link to all the album. I downloaded a copy of Heliotrope from DatPiff and I've had it on every hard drive I owned until last year, when I accidentally deleted my personal copy. Very few moments in my life have affected me on a personal level. Even to this day I get very sad thinking about it.

My dear reader, you might wonder why I don't just go to Spotify or Apple Music. Unfortunately Heliotrope, by Cruk'dStr8 is now lost media. The album has been scrubbed off the internet and now the only way to even know it existed at some point is Cruk'dStr8's Twitter page. I found a Hulkshare link (from a reply on that twitter page) but only 1 of the songs on there is actually playable (Dead Fantasy | Kizzy Kane). So the copy I deleted might have been the last copy. Like me, you might be wondering why the group would do this despite their success.

Well after Heliotrope, the group would go dark. Nothing to be heard from the core duo, but affiliated acts like Shabazz, Quesi B, and BrainyBeatz would keep going. By 2016 however, Cruk'dStr8 and affiliated acts would all stop making music. But in November 2017 I saw something strange. A new act from Ghana had dropped an incredible album and it was turning heads. I listened to it a few times and while the music was incredible I couldn't shake the feeling that I've heard this before. Now I have taken care to withhold the names of the core duo of Cruk'dStr8 , because maybe someone smarter than me would make the connection immediately. Their names were ERA and RAE.

Passionfruit Summers is the debut album from Ghanaian-American singer, songwriter Amaarae. If you knew about Cruk'dStr8 and Heliotrope, the sound is all there. Sonically it's extremely polished and the production quality was incredible. I couldn't believe it. One of my favourite Ghanaian musicians dropped a commercial tape, and its highly acclaimed! This album came with a new sounds and techniques that were slowly bubbling in the underground hip-hop and hip-life scene in Nigeria, a genre now known as alté. This was similar to what Cruk'dStr8 were doing a few years back but with a clear distinction and better execution. You see while Cruk'dStr8's sound was African inspired but clearly built on top off American hip-hop tendencies, alté music is built on top of hip-life tendencies with American style sprinkled here and there.

At this point I still had my copy of Heliotrope but I did a quick search online and that's when I realized it was all gone. As a matter of fact, Cruk'dStr8 is not mentioned anywhere by Amaarae as where she got her start. It's almost as if she doesn't want to be associated with that anymore. Few years ago, Moliy Music (co-writer and performer of Sad Girlz Luv Money) took to Twitter to accuse Amaarae of not sharing proceeds with her. This didn't seem to go anywhere and was forgotten about quickly, but I couldn't help but think of Cruk'dStr8 and ERA.

I've been keeping up with Amaarae partially because I want to see her rise to fame in first person but also I really want her to say something about Cruk'dStr8. Why delete the old music? What happened to ERA? What happened to Cruk'dStr8? I'm still not done looking for this tape. My plan is to reach out to former Cruk'dStr8 affiliates and hope they can send me a copy and/or explain what happened between 2014 and 2017.

Anyway here is a version of FunkyFlavaDopeShit posted on Quesi B's SoundCloud page: https://soundcloud.com/otis_7/crukdstr8-funkyflavadopeshit

 
Read more...

from e-den

The Q3 version of this roundup was sitting in the archives and never got uploaded. As a (not-so) special treat, here is my round up for the entire second half of 2024. Please enjoy the read for the hater behaviour, but sadly I don't have any new winners to suggest this time around

Stats breakdown from July – December 2024

  • Total books read: ~5
  • Reading mediums: 4 audiobooks & 1 combination of physical & audiobook
  • Time spent reading: ~24.5 hours

Books Read + Reviews

Call Me By Your Name by André Aciman Medium: audiobook

I usually write these once I finish the book but I need to note my thoughts right now as I finished the first third on the Via Rail to Montréal.

I – – Listen, I've seen the movie which gave me secondhand embarrassment then but uhh… The book is something else. Elio is horrendously HORRENDOUSLY down bad for Oliver. I'm listening to this on the train like 😶😳🫣 I may be able to make better sense of my thoughts later but

  1. I'm astonished by everything Elio projects onto Oliver, like he is this master of social interactions and understanding others better than themselves. I guess this is maybe meant to be part of the perspective he would have as a 17-year old idolizing an older man but I think he's giving him entirely too much credit. He's literally just some guy.
  2. Knowing that they get together later, the 17 vs 24 year old thing is extra EXTRA weird now that I myself am 24 (at time of writing). Oliver, he is literally a child. What the hell do you want with him? Leave him alone!!
  3. Elio is actually unhinged and like past the point of usual yearning, agony & shame I would think.

Okay we're at the peach scene and it's so much more uncomfortable to listen to the book version 😖

My hold lapsed so I’m revisiting this again a month later to finish it. And I’m regretting it lol. More uncomfortable scenes and it's just getting a bit too pretentious for me.

Okay I powered through and finished it. I cannot in good conscience recommend this. Others may like it but I think I could have lived with just having seen the movie adaptation (which at least you get to see the beautiful Italian views and the great soundtrack). But I think Elio's inner monologue was just a bit too unhinged and pretentious to me.

Klara and the Sun by Kazuo Ishiguro Medium: Audiobook

Hmm… I'm not really sure what to say about this one. I think it was meant to be a heartfelt story about AI but it felt kind of meandering at times and too vague about the setting and circumstances. I enjoyed the childlike, egoless perspective of the narrator but it did make the novel overall feel like it was written by an elementary school student. Am I saying it's bad? No. It literally won the Nobel Prize in Literature. Did I feel any type of way about it? Also no.

I think the points and takeaways of this book are not so profound, especially for it having been published in 2021. There was one point where I thought things were going to take an interesting turn but it didn't amount to much. Personally, I would skip this one.

I'm Glad My Mom Died by Jeanette McCurdy Medium: Audiobook

This memoir wasn't quite what I expected, which is neither good nor bad. Despite the initial press buzz on the cheeky book name, and the literal review on the book cover that this was “Impressively funny”, I did not find much humour in this book (not even the dark kind). More than anything, I felt sad and sorry for Jeanette McCurdy and the various things she went through (additional to the Nickelodeon/Dan Schneider stuff). If you are curious about reading this, I would consult the content warnings first. While I didn't find the content triggering, it definitely could be for some.

Obviously, it's a memoir about a very public life but I feel like the few press interviews I saw when it come out covered/spoiled the big events and themes of the book. For that reason, I'm not sure it's worth the read? Idk I feel conflicted. If you're curious to know the details, you could probably read an article instead. On the bright side, it was nice to hear that she and Miranda Cosgrove had an actual friendship for many years, even after iCarly ended.

The Assassination of Fred Hampton by Jeffrey Haas Medium: Audiobook

I was still kind of in a book slump when I was reading this but thankfully it was a welcome change. I appreciated being able to learn more about Fred Hampton, the Black Panthers and their ideology, the FBIs involvement in the assassination + their other attempts to dismantle or thwart the civil rights movement. I watched Judas and the Black Messiah (2021) in the midst of reading this and it helped me do a better job of organizing the different people involved. It got a bit overwhelming at times to manage all the names + legal events when listening via audiobook.

Additionally, I would have preferred if Jeff Haas centred himself less in the telling of these events. It was kinda whiplash-inducing when he would drop in some details about who he was dating at that time and just get back to talking about the court case.

Happy Place by Emily Henry Medium: Physical (Kaitlyn’s copy) + Audiobook

Although I finished this book at the end of the year, I started reading the copy Kaitlyn lent me back in April. Because I read it sporadically across the months, I don't have the clearest memory of everything. This was also the only true romance book I read in 2024.

I really loved the cozy vibes of the costal town setting and the friendship in this book. Emily Henry always excels in setting the vibe that way. In truth, I think I liked the friendships in this book quite a bit more than the romantic relationship between the main characters. The miscommunication trope was kind of annoying too and the reconciliation didn't come together in the best way in my opinion. But the friendships and the way certain characters talked about their upbringings resonated with me most. I also quite liked the passage where she describes the meditative process of pottery wheel throwing. All in all, a nice little read to close out the year.

And now... the Round Up to the Round Up!

My Top 3 Reads of the Year: Dune, Cultish, Everything I Know About Love

Dishonourable Mentions: Call Me By Your Name, Everyone in This Room Will Someday Be Dead, Klara and The Sun + a handful of books I DNF'd

And as always, thanks for reading if you got this far!

2024 reads

 
Read more...

from elisa

This month I read 4 ebooks, 1 eaudiobook, and 1 physical book from the Toronto Public Library, totaling to 6 books.

Dishonourable Mentions

Blood Rubies by Mailan Doquang

Blood Rubies

Synopsis: Rune thought that this would be her biggest score yet: a bag of Charles Lemaire’s prized rubies. If she fenced it, the money would change her and Kit’s (her boyfriend) lives. But Kit’s younger sister Madee has gone missing, last seen in the slums of Bangkok. And Charles Lemaire is holding Kit hostage until Rune returns his rubies, which she lost while looking for Madee. Will Rune be able to rescue her friends, and herself? Or will she be forced to make an impossible decision?

My thoughts: Readers will know that I love a heist novel, but this one didn’t grab me at all. I didn’t find it engaging, nor were the characters that compelling, and the events of the book were starting to stress me out. So I didn’t feel the need to keep reading it.

You may like this book if: you, like Rune, are mixed race (she’s half American, half Thai)

And now for the Real Reviews:

Ruthless Vows by Rebecca Ross

Ruthless Vows

Synopsis: It’s been two weeks since Roman and Iris were married at the front lines (the happiest day in Iris’ life). But it’s also been two weeks since the town was attacked, Iris was captured by her brother Forrest (MIA from Dacre’s army), and Roman’s presumed death. Iris has been forced to retreat back to Oath, and has continued writing articles for the Inkridden Tribune. The paper has asked for her and Attie to return to the front lines to continue their reporting. Meanwhile, Roman has been killed, captured, and brought back to life by Dacre and his forces. He doesn’t remember much of his past life, but he knows that he doesn’t trust Dacre. Will Iris and Roman ever survive this war and reunite?

My thoughts: I might have been influenced by reading some bad reviews of this book but I didn’t really like it that much. The first book in the series was driven primarily by Iris’ and Roman’s relationship, which kind of created rose-coloured glasses for the rest of the story. For this book didn’t have the same driving force, and was much more lackluster. I also listened to this book as an audiobook, and I definitely did not like either of the narrators. Usually this isn’t a problem for me, but their voices irritated me and their accents felt pretentious. To me, it definitely detracted from the story. But the main issue with this book isn’t really the presence of something bad, but more the absence of anything that was really good or interesting.

Rating: 2/5 enchanted coffee shops, where your drink never gets cold

The Art Forger by B. A. Shapiro

The Art Forger

Synopsis: After a scandal that rocked the Boston art world, no one is willing to give Claire Roth a chance. Despite her talent, the only work that she can get is painting reproductions of classic paintings. But suddenly, it seems as though her luck may have changed. Renowned gallerist Aiden Markel waltzes into her studio with a proposition: he’ll stage a show of Claire’s paintings at his gallery. All she has to do is paint a reproduction for him. It’s too tempting to refuse, so Claire agrees. But when she sees the painting that she’s supposed to reproduce, she’s shocked. It’s Edgar Degas’ After the Bath, which was famously stolen from the Isabella Steward Gardiner museum during a robbery in 1990. Claire should report this to the police, but Aiden assures her that the authorities will eventually be notified, once the reproduction is finished. However, Claire isn’t sure. As she falls in love with Aiden, she grows more and more paranoid that this After the Bath is also a reproduction, and that the original one must be somewhere else. And when Aiden is arrested on charges of art fraud, Claire panics, and starts desperately searching for the real version of After the Bath in order to exonerate Aiden. Will she like what she finds? Or is this an art mystery that is best left unsolved?

My thoughts: Overall I thought this book was pretty interesting. Probably its biggest feature was the window into Claire’s mind, where she constantly expresses her love for art and paintings. She’s absolutely transfixed by Degas’ works, and it’s really interesting to see all of the emotion that she feels. However, I was pretty shocked to see Aiden’s (and other’s) perspectives that collecting art was addicting, and that having the only copy of a certain work of art is so intoxicating that it would compel you to commit crimes. It’s the kind of language that I would more associate with addictions like drugs or gambling. As a final note, I was somewhat disappointed that After the Bath was not a real painting. Obviously, if the author is going to speculate about the personal relationships of the artist and his contemporaries, then it makes sense to invent a work of art to be discussed. But I can’t help feeling a bit disappointed that there weren’t more connections to existing works of art.

Rating: 3/5 secret rooms in the Gardner Museum that might just contain the answer we’ve been looking for

Ghost Story by Jim Butcher (Dresden Files #13)

Ghost Story

Synopsis: Harry Dresden is dead. Or is he? After being shot in the chest, and falling into the icy waters of Lake Michigan, Harry wakes up in a strange place with a familiar face. It’s Ron Carmichael, a former CPD cop who was killed by a loup-garou in Fool Moon (see my June 2023 roundup). He leads Harry through the Between to a special office building, where Harry meets Jack Murphy (Karrin Murphy’s deceased father). Apparently, there was an irregularity with his death, Jack asks him to investigate his own murder, hinting that his loved ones may be killed if he doesn’t. Harry agrees, and finds himself thrust into a very different Chicago. In the real world, 6 months have passed since his death, and the city has fallen to pieces since it’s no longer under the protection of the White Council’s most notorious wizard. And to make matters worse, Harry is a ghost. He can’t interact with the mortal world, and he can’t perform magic. Will he really be able to solve his own murder and rescue his friends? Or is this really the end of Harry Dresden?

My thoughts: This book was really good, except for one major flaw (which I will discuss momentarily). I liked that Harry had to reflect on his actions that took place in the previous book, especially how he had harmed so many people in his quest to be chivalrous and “do the right thing.” I look forward to seeing how the ramifications of his actions play out in the future. I also liked how this book was drastically different from every other Dresden Files novel. Harry being a ghost severely limited his normal powers, and also showed Chicago from a really unique perspective. However, I thought that the Uriel/Kincaid plotline was really weak, which is a huge problem because it’s the whole reason that Harry became a ghost at all. It just feels like Jim Butcher had a cool concept for a book and had to shoehorn in a reason for it to have occurred. It’s not just that Harry was manipulated, but that the internal logic of the story didn’t really make a lot of sense. The resolution of that whole plotline was a big disappointment for me.

Rating: 4/5 empty graves that have been beautifully maintained for you for this whole time

March Roars by Maureen Jennings (Paradise Cafe Series #4)

March Roars

Synopsis: Private Detective Charlotte Frayne has recently received a peculiar letter. After the well publicized arrest of two young Black boys for robbery, a woman at Toronto’s House of Industry (the poor house) claims that they are innocent. She says that she witnessed the true thieves (two White men) acting suspicious shortly after the robbery took place, and that she now fears for her own safety by reporting them. Charlotte is forced to interview this woman and try to piece together what exactly is going on.

My thoughts: This book was decent, although it felt somewhat superficial. Charlotte suddenly becomes aware of the struggles of Black Torontonians in the 1930s (some of whom she has been friends with for many years), but doesn’t really use her station to make a difference (besides freeing the two boys from prison). I also feel like this series lacks a “B” plot, where the relationships between the main cast of characters would usually develop. It’s supposed to revolve around the Paradise Cafe, but Charlotte rarely, if ever, appears there. We didn’t develop deeper relationships with anyone else at the cafe, nor really see what was happening there, and that’s a major reason why I felt that this book lacked substance.

The Vortex: A True Story of History's Deadliest Storm, an Unspeakable War, and Liberation by Scott Carney and Jason Miklian

The Vortex

Synopsis: This book describes the lead up and the after effects of the Great Bhola Cyclone, which killed an estimated 500 000 people in the Bay of Bengal in November 1970. The cyclone can be considered the catalyst for the revolutionary movement (and brutal crackdown) that took place in East Pakistan, eventually leading to the formation of Bangladesh.

My thoughts: I thought this book was super interesting and really well written. Readers will know that I am a fan of narrative nonfiction, and I thought it was a great choice by the authors to bring parts of the true story to life. I know that not everything happened irl the way that it’s depicted in the books, but it was much more digestible for me (especially because I didn’t know anything about East Pakistan and the formation of Bangladesh before reading this book). I liked how the authors focused on several different perspectives in order to create a full picture of what was purportedly going on, and it was super impressive to see all the research that they had done.

Rating: 4/5 planned capital cities that were built ahead of schedule and under budget (but were unfortunately the only good thing that you ever accomplished).

Barcelona Red Metallic by Christine Cosack

Barcelona Red Metallic

Synopsis: The hit-and-run death of a small child in Oyster Hill, British Columbia shocks residents of the sleepy small town. The RCMP sends a team to investigate the accident site, and the only tangible clue they find is a fragment of Barcelona Red Metallic paint. Even after the initial investigation, the case stays with Luci Miller. But more than the family of the victim, the family of Jo Nelson (plus her son Oliver and grandson Nico) stays with Luci. Will she ever find out what happened on that fateful morning?

My thoughts: I found this book to be pretty different than other crime novels. The tone was very gentle but not cozy, which is a fine line to walk in mystery fiction. I also appreciated how the majority of the book was about Jo, and how she raised her chronically ill son (Oliver has cystic fibrosis). I also thought the ending was very unexpected (which isn’t generally great), but in a way that made sense with Jo’s character and the information that we already knew about her.

Rating: 4/5 paintings of lung-shaped lichens

 
Read more...

from e-den

Introduction

In his book on the subject, Cal Newport defines Digital Minimalism as “a philosophy of technology use in which you focus your online time on a small number of carefully selected and optimized activities that strongly support things you value, and then happily miss out on everything else” (Newport, 2019). The key principles of this approach are:

  1. Value Alignment - appraising each technology you keep in your life based on its utility and alignment with your values. Ideally, only engaging with digital tools that meaningfully enhance your life.
  2. Optimization - determining how you will use a particular technology (i.e. boundaries, limitations, etc).
  3. Intentionality - prioritizing active and purposeful use of technology over passive content consumption.

To set yourself on the metaphorical road to recovery, Newport prescribes what he calls a Digital Declutter. It involves taking a 30-day break from all optional technologies to reset habits and gain clarity on how technology affects your life. This is not simply a “digital detox”, but a structured exercise to evaluate and rebuild your digital habits intentionally. The objective is not to reject technology outright but to reclaim autonomy and align digital usage with personal priorities.

  1. Step Back: Identify and temporarily remove all optional technologies for 30 days. This might include social media, entertainment apps, and even certain communication tools, depending on your personal needs and goals.
    • Rewire: During the 30 days (and beyond), you also need to engage in some key practices & behaviours to bolster this exercise and enable it to be sustainable long-term.
      • Embrace Solitude - when you are spending time alone with your own mind, you are free from the input of others. As a result, you are then using this time for self-reflection or thinking through things. This boredom often leads to creativity.

      • Meaningful Connection/Conversation - prioritizing talking/calling and face-to-face connections with others as opposed to likes or comments on a social media platform.
        • Newport suggests creating or identifying “office hours” where you regularly open up time to connect with others. For example, taking advantage of the downtime in your daily commute and encouraging family & friends to call you during that time. Alternatively, having a routine where you’re always at a certain coffee shop at a certain time on a certain day of the week and friends can find you there (sound familiar? 😉).
      • High-Quality Leisure
        • Honing Your Craft - identifying a “craft” you want to get good at. You convert the time and energy spent on passive consumption to high-quality leisure that is ultimately more energizing and validating (ex. making something tangible with your hands). This doesn’t have to be an art-focused craft.

        • Super-Charged Socializing - participating in activities that require real-world, structured, social interactions where the structure takes the pressure off how you will socialize. My personal example would be my dance classes each week.
    • Reintroduce Selectively: After the declutter, carefully reintroduce only those technologies that add substantial value to your life and define clear boundaries for their use.

      Methods

      In July, I somewhat covertly underwent a digital declutter experiment of my own. I elected not to talk about exactly what I was doing in order to focus on the journey myself with no outside input. Additionally, I wanted to set up a sort of control and not have others act differently to accommodate my choice.

      For context, I work a predominantly remote job in tech where I stare at a screen for roughly 8hrs a day. As a result, I am seldom compelled to then spend time on my personal laptop or watch TV after work. The little screen in my hand is another story, however. Naturally, my goals for this digital declutter were focused on my phone use. Truthfully, I should have done a better job noting down what I gave up as I cannot recall everything now months later. Regardless, my reflections will be on the key players and not the forgettable apps I removed.

      Notable apps I had that I got rid of: YouTube, Facebook, Pinterest, Snapchat, TikTok

      The boundaries I set around their use: When I occasionally needed to use the first three, I could access them through a web browser/on my laptop. The others were to remain off of my phone for the 30 days.

      Results

      During the duration of this experiment, some interesting results were observed. For starters, there were no logins to Pinterest the entire month, not even on my laptop! Facebook, however, was redownloaded a few times for dance-related communications that I would have otherwise missed as I do not have an Instagram account. In the spirit of full transparency, I did fall into scrolling a few times when I had it reinstalled for brief periods.

      Regrettably, I wasn’t able to capture great stats on the results of this experiment. iPhone’s Screen Time tracker unfortunately has many blindspots when it comes to usage data that I did not realize until late in the game. Most notably, if you uninstall an application, the usage data related to it from previous weeks also gets wiped and provides an inaccurate record of how much time was spent on the app. Additionally, iPhone only stores the past month’s screen time. Thankfully I took some screenshots as I went. However, I was unable to compare my results to a broader time range to assess how much things had changed from my average behaviour in the past.

      Putting the data tracking issues aside, I did observe a significant drop in daily screen time of about 34% in the first week. Additionally, the number of times I picked up my phone kept decreasing week over week. There was no discernable difference in sleep quality, duration, or schedule according to my Fitbit data. However, I did not set a boundary on before-bed phone usage during this experiment. While I wasn’t scrolling or watching content before bed, I had a lot of things to sort through or plan in July. I often needed to spend some time before bed looking things up (Chrome, Google Calendar, etc) to quell the swirling thoughts in my head so I could sleep.

      Post 30-Day Declutter

      I am pleased to share that most things have remained the same pertaining to my technology use, but there have definitely been pitfalls. I have not reinstalled YouTube, Pinterest, or Snapchat since. I have also taken additional measures on the phone browser version of YouTube (that I check at most once a month) to make it even less appealing and addicting. I have logged onto Pinterest via my laptop only a handful of times since then. Recently, I even deleted my Snapchat account entirely after months of not having been active on it.

      I have, however, fallen victim to Facebook and TikTok scrolling syndrome several times since August when the digital declutter ended. I am in a cycle of reinstall and uninstall with these two apps, but I am at least curbing the habit by not having them on my phone the majority of the time. I’m planning to be better about it and set better boundaries and systems.

      Discussion

      Coming out of this experiment, there were a handful of personal positives and takeaways that stood out to me. Firstly, and most obviously, not being served up sludge content on an infinite scroll allowed me not to fall into a massive timesink. The few times I did get presented with it, I did not feel the same addictive pull and was able to resurface much quicker than I usually would. It was interesting to me how the urge to scroll was the strongest when I was looking for a coping mechanism. Some café users may recall that I suffered a serious burn on my leg in July. After the incident, I just wanted to scroll so that I could self-soothe and take my mind off the pain. It made me stop and reflect on how passive media consumption has become a normalized response to tune out unpleasant feelings or experiences, as well as the escapism of it all.

      Secondly, this experiment affirmed that I don’t have to search or validate everything I am doing. Typically, I would have flocked to Pinterest to seek inspiration for my outfit when I was going to my first-ever Renaissance Faire; or to TikTok/YouTube to get some ideas on what to do for my travel plans that month. I got the chance to be more creative about how I approached situations like this, more confident in my own decisions without external input, and just more comfortable with the overall not-knowing as the Type A person I am. Also, it was just really humbling have to Google these things and then go watch a YouTube video at a maximum of 480p on my Chrome browser app. It made me question if it was even worth searching up.

      The third, and also obvious but now affirmed takeaway, was that being unaware of all the new trends dulled the consumerist pull. It’s no surprise just how much product peddling happens on social platforms, especially Tiktok, but it’s easy to become desensitized to it with just how ubiquitous it is. When you distance yourself from it a bit, it’s also hard to fathom just how many content creators exist out there to post the same type of consumerist content in the name of selling an aesthetic or a lifestyle. Like surely we don’t need this many, and it’s all so pointless anyway...

      Criticisms

      While this has been an eye-opening experience and one I recommend to everyone, I have a few criticisms based on what I observed. Firstly, I did not feel as much creative or action-inspiring boredom from this declutter as when I have my Unplugged Days. Once a week for Unplugged Days, I put my phone in a drawer and work off a paper to-do list of things I want to get done that do not involve a phone or computer. Personally, I find that more effective because I am not aimlessly bored and I have structure through the menu of things I can do. In some measure, this does link back to what Newport says about having a game plan for the time that will be freed up.

      Secondly, I observed that in my personal life, it’s easy to become disconnected to current events. I’m not really on social media and I am seldom tuning into TV or radio news. Not being constantly bombarded with news stories is better for your mental state overall, but it overlaps with the privilege to opt out of injustice happening in the world. As a result, you have to be more intentional to seek out (ideally quality) sources of information and ways of staying informed. This is an area that I’m still trying to sort out for myself.

      Lastly, there is potential for isolating behaviours or narrowing of your social sphere. Newport shares in his book that most people cite a fear of being disconnected when removing optional social media from their lives. It’s a valid concern based on how our society has previously put these applications on a pedestal and made it seem like they are the pinnacle of connectivity. When you pull back the curtains, you see how shallow and superficial most of these friendships are. Speaking from the experience of not having most social media accounts for the last few years, it has created a funnel where only the most meaningful and quality friendships have remained active in my life. However, not being plugged into the digital realm where social interactions happen and plans are sometimes made can keep your social circle small and stagnant. To overcome this, there has to be more involved effort to seek out events or make new friends. This ultimately is a good behaviour to reinforce but it requires more will, planning, and intentionality to combat the various obstacles and deterrents.

      Conclusion

      In summation, I would recommend Cal Newport’s Digital Minimalism and the 30-day Digital Declutter to any and all that are the slightest bit curious. I see it being more impactful and sustainable to do this declutter and boundary-setting around technology use, rather than going for more acute measures. I, myself, had considered getting a dumb phone and at this point, I don’t feel the need to do that so long as I work through what my technology use rules are and slowly work towards bringing my screen time down more. In preparation for 2025, I have been looking into how I can optimize my phone to help support these goals. I have linked a video on that, and some other resources that inspired this article in the section below.

      References & Resources

       
      Read more...

      from TeamDman

      Hello, wildcats.

      Using Google Takeout, you can export your Google data.

      I use this specifically to export just my YouTube watch history.

      I frequently find myself in situations where I am doing data science on my own activity history because some brainworm tells me “hey I'd like to revisit this thing I once visited” even though it was years ago and it will be a pain in the ass to find it again.

      A screenshot of me, 6 years ago, posting on Discord a YouTube link to a video and lamenting that I cannot find another meme video which uses this video as source material – https://youtu.be/ZKxhI4I5kq8

      To export your YouTube history as JSON, follow these steps.

      1. Visit https://takeout.google.com/
      2. Top right, profile switcher, switch to your brand account (my YouTube account is separate from my Google account)
      3. Deselect all
      4. Scroll to the bottom, YouTube > Enable
      5. “Multiple formats” > switch to JSON
      6. “All YouTube data included” > Deselect all, check history
      7. Next step > File type=.zip, File size=50gb
      8. Create export

      Congrats. You now have, locally, slice of your watch history, instead of being beholden to the YouTube interface which is rarely sufficient for querying purposes.

      What does the data look like?

      {
        "header": "YouTube",
        "title": "Watched The monkey is furiously knocking at the door - Обезьяна неистово стучит в дверь - 猴子是疯狂地在敲门",
        "titleUrl": "https://www.youtube.com/watch?v\u003d3-_OIDRL91c",
        "subtitles": [{
          "name": "Seen that! Видал, чо!",
          "url": "https://www.youtube.com/channel/UCnEelfUE8SE_rZtwaRzUzyQ"
        }],
        "time": "2020-04-19T03:08:27.981Z",
        "products": ["YouTube"],
        "activityControls": ["YouTube watch history"]
      },
      {
        "header": "YouTube",
        "title": "Watched https://www.youtube.com/watch?v\u003dnmcuoaqdJ9w",
        "titleUrl": "https://www.youtube.com/watch?v\u003dnmcuoaqdJ9w",
        "time": "2020-04-17T18:22:47.173Z",
        "products": ["YouTube"],
        "activityControls": ["YouTube watch history"]
      }
      

      The URL and the timestamp are present. Great!

      The video title is inconsistently present. Less great!

      This helpful StackOverflow comment tells us that we can use the following YouTube endpoint to get some metadata

      // https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=nmcuoaqdJ9w
      {
          "title": "Weird Al SHREDS!!!",
          "author_name": "alyankovic",
          "author_url": "https://www.youtube.com/@alyankovic",
          "type": "video",
          "height": 113,
          "width": 200,
          "version": "1.0",
          "provider_name": "YouTube",
          "provider_url": "https://www.youtube.com/",
          "thumbnail_height": 360,
          "thumbnail_width": 480,
          "thumbnail_url": "https://i.ytimg.com/vi/nmcuoaqdJ9w/hqdefault.jpg",
          "html": "<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/nmcuoaqdJ9w?feature=oembed%5C#34; frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Weird Al SHREDS!!!\"></iframe>"
      }
      

      So I guess that would be a fairly straightforward way to enrich the data.

      That's not what I'm deep in right now though.

      The Takeout service responds in a matter of minutes when we have scoped the export to just our YouTube watch history and nothing else.

      It is still a manual process and will quickly become outdated given that I frequently watch videos.

      I find myself having multiple exports, each with a different slice of my history.

      To free up disk space, is it truly safe to simply delete the oldest export?

      Using ChatGPT (conversation link), I whipped up a quick validation program that takes the search and watch history json files from the latest export and an older export to check some assumptions.

      1. The newest export MUST contain every entry in the older export.
      2. The newest export MUST NOT contain an entry older than the newest entry in the older export which is not also present in the older export.

      I didn't get to number 2 because number 1 was exceedingly disproven.

      THERE IS MISSING DATA BETWEEN EXPORTS.

      The exports are from 2024-10-30 and 2024-12-07.

      Summary: 993 total missing entries in the Watch History file.
      Summary: 42 total missing entries in the Search History file.

      This is not surprising, just disappointing.

      Thankfully, using ChatGPT I was able to build a tool to identify the problem quite easily.

      Banana Loof – NSA Releases Internal 1982 Lecture by Computing Pioneer Rear Admiral Grace Hopper

      00:08:30

      “No work, no research has been done on the value of information. We've completely failed to look at it. And yet it's going to make a tremendous difference in how we run our computer systems of the future. Because if there are two things that are dead sure, I don't even have to call them predictions. One is that the amount of data and the amount of information will continue to increase, and it's more than linear. And the other is the demand for instant access to that information will increase, and those two are in conflict. We've got to know something about the value of the information being processed. Everybody wants their information online.”

      I think about that video a lot.

      My browser extension + local server tool, Onboarder, lets me take notes in a text area it adds below the video player. The notes then get synced to a plaintext file on the disk.

      https://github.com/TeamDman/Onboarder

      I can use ripgrep to search through my notes incredibly efficiently.

      I also made a program that lets me easily capture my system audio output to a .wav file, toggled on and off by hitting enter in the terminal.

      https://github.com/TeamDman/audio-capture.git

      I also have WhisperX running, which can transcribe a 1 hour video in 1 minte with incredible fidelity.

      https://github.com/TeamDman/voice2text

      The process of finding that Grace Hopper video, capturing her saying that sentence, and transcribing it was a collaboration between several disjoint tools I have added to my arsenal.

      We've all heard of Big Data.

      I want my own Big Data that works for me.

      Storage is cheap, and I want a copy of all my data so that when I say “computer, find me the meme from within the last 4 years matching XYZ criteria” it can do so.

      The problem with building a grandiose system like this is not the work that it will take, but the charting of the course.

      How do I want to structure the data so that all these tools can play nice together?

      The answer is probably Postgres.

      It has support for vector embeddings, json columns, and generally all the stuff I'd need to proceed.

      However, not everything should/can live in the database.

      I should probably get building, or at least go to bed lol

       
      Read more...

      from quiglingual

      In recent years, I've become enamored with voluntary, participatory violence. Big talk for someone who spends eight hours a day on the computer, but hey – I'm a deep believer in self expression, and what greater form of expression is there than that performed by the body itself? (Similar arguments can be made for other forms of expression, of course. And that’s art!)

      When I say that I've become enamored with “violence”, I mean, um, violence. The turbulent jostle of hundreds of bodies: all sweaty, though not all are sweating. The flight of elbows and full body tackles, executed in the name of mutual love. Love: love for the music of the moment, audible through decorations of SCREAMED OFF-TUNE LYRICS from the liquid crowd. Lyrics; coupled with pirouettes, line dancing, rowing, circles of running concertgoers, or maybe just a great amount of collision. When I say that I’ve become enamored with “violence”, I’m saying that I fucking love the mosh pit.

      Pits are primal. In the anonymity of a crowd, I can let go of inhibition. I happily relinquish my identity, succumbing to the flow of others. As my neighbors jump and shove, the futility in any kind of resistance emerges. I revert to operating on half survival instinct, half pure electricity of the moment. Limbs revel; eyes open and close as the rest of this body collides with other bodies. A brawl between no opponents. Everybody wins.

      At what other moments in life do you ever get to engage so freely in movement? Sports are limited by rules. Martial arts require control and refinement; dance can feel bound by social rules. Violent activity only surfaces in the everyday as remote situations of fear, anger, or extreme excitement; and how often does the average person experience these emotions? Not often. (Ideally.)

      But in the pit, savagery is everywhere. And so the pit becomes a special place. A butcher's block, designed to reduce you to your animalism.

      Animalism. Our roots. Each concert I attend convinces me that the most humanly valuable experiences are those that evoke any kind of animalistic primality out of us, because they are freeing.

      I do not live freely. I find that I have walked much of life guided by inhibitions and fears of mistakes, harm, and pain. Worried of displeasing others, I would constantly prune my behavior and words, holing myself further into a tunnel of a character to meet some sort of model me that never needed to exist. In my day-to-day life, this causes suffering. I wish to live authentically.

      In the pit, though, nobody cares about whether or not I am seemingly intelligent, charming, agreeable, insightful, or me. I can let go and be, and I do so knowing everyone around me will accept me with unconditional love. At the end of the day, that’s the pit. A rippling body of love.

      I recently found myself at an IDLES show, an elbow slamming into my chin as I tried to sing the same song as my unintentional assailant. As the welcome impact subsided, I noticed the joy around me, and realized that I desperately wanted this same relentless harmony in my everyday life. I want to show myself and be accepted for that, leaving no room for hesitance towards pain. I want the me in the pit to be outside of the pit too. I want her to be unafraid as she collides with others and as others clash with her.

      I want to love freely. After all, what else do I have?

       
      Read more...

      from Eddie's Appendices

      I watched “The Substance” yesterday with Tetyana as our Halloween night spooky movie.

      poster

      The premise was really interesting; a company offers a service where you can inject yourself with a serum to create a “better” version of yourself. You are the matrix, they are the other. It's not a clone, it's basically just sprouting another human being out of you. You do not share the other's memory (and them yours), and yet only one of you can be conscious at a time. There are rules:

      • You/Your other must feed your other/its matrix with IV while unconscious
      • Your other must stabilize every day, which involves the other extracting some cerebrospinal fluid out of you (the matrix) and injecting it to themselves
      • You must switch every 7 days, no exceptions
      • Remember you are one

      Our protagonist, Elisabeth, goes through with this procedure. Sue is born. The movie explores the dynamic between Sue and Elisabeth. The cinematography is where this movie really shines in my opinion, it is original and striking without every feeling too needlessly artsy. There were a ton of interesting shots, or ways the camera was used, positioned, or how the movement/lack of it was used. While being overall consistent for the movie, the cinematography was very noticeably different when following Elisabeth or Sue. While Elisabeth's was very sober, plain almost minimalist for the most part, Sue's was hectic, glamourous with very, very close-up shots.

      close up lips

      The sound design was also very claustrophobic in a way, with a lot of low pass filter creating an effect of being underwater, while having some bodily sounds being unfiltered. This ties in to the body horror part of the movie. There are a bunch of disgusting sounds in there.

      Another part of the body horror was nudity. There was so much ass. My notes for this portion of the review are simply “ass ass ass ass ass ass ass ass [...]“. This is when Sue is on-screen, and she is extremely sexualised, not only by the movie, but by the entertainment industry, which plays an important part in the story. The other side of body horror comes in during the stabilizing requirements, and during other scenes that I cannot spoil. Most of it is during the last 20min of the film, which are so wild I would never in a million years predicted it.

      still movie

      The script is the weakest part of this movie in my opinion, with glaring plot holes and overall not being airtight, never giving you the “wow that is so clever” feeling from seeing something unfolding. It is not bad, but apart from the premise, it is serviceable. However, the movie does not take itself seriously (without the satire being too in your face most of the time), so the weakness of the scenario is not a fatal flaw. The music is not the main focus of the movie, and does its job here. Apart from one or two tracks, it doesn't do anything special. The acting is to be commended, both actresses (Elisabeth – Demi Moore & Sue – Margaret Qualley) are doing a great job and selling a believable performance. The director, who also wrote, co-edited, and co-produced the film, Coralie Fargeat, is also to be saluted, as I especially liked the direction. And I also have to mention Benjamin Kracun who was responsible for the much appreciated cinematography.

      The themes of the use of women by the entertainment industry (sole focus on beauty, youth, and unrealistic standards as well as rampant sexualization for monetisation purpose) and parenting, are very unsubtly present here. The second one was dealt with more depth and almost nuance, while the first was pretty simplistic. I don't believe the movie could have gotten away without mentioning the first though, so it is understandable. What the movie says about the former and self-hate, self-loathing, things taken for granted/lack of appreciation for the things we have, aging... were really interesting in my opinion, even if I can't fully relate to the last one yet. Overall, this movie touches on multiple subject, without being too verbose. A lot of them are mostly indirectly approached, which is nice to see; the movie is not afraid of the viewer not understanding/getting everything.

      still

      I would recommend this movie, it is a nice breath of fresh air in the horror genre, which — last I checked — was pretty stale. But don't expect too much horror. 16/20

       
      Read more...

      from Alex Black

      The Toronto Blue Jays, fresh off a last place finish in 2024 but finishing with 91, 92, and 89 wins from 2021-2023, have pieces to make a deep push in the playoffs, but need some much needed help to do so. Their young talent is the biggest question mark, as some of them need a lot of work that might not fit their “win now” mentality. Bo Bichette and Vlad Jr. are both on the tail end of their Blue Jays tenure, both reaching free agency in 2026. Pitchers Kevin Gausman, Chris Bassitt, and outfielder George Springer will also reach free agency around that time. Pitcher Jose Berrios has an opt out in 2027, and can choose to go into free agency in his age 33 season. Because of this, and the incentive to build a successful team as Canada's only baseball team (rip Montreal), I begin my optimistic wish list for Toronto's future. I will break it down position by position and try to make it as digestible as possible, while providing 3 “tiers” of thought: cheap, average, and lucrative. I will try to add definitions for terms I use that not everyone would know to help with this.

      BREAKDOWN OF MINOR LEAGUES: MLB AAA AA High A Low A

      ARBITRATION: player has reached enough service time to advocate for themselves if they believe they deserve a larger contract, if both sides cannot agree, it is taken to a third party arbitration hearing, not good for player-team relations

      SPOTRAC.COM: website that evaluates player contracts and estimated player market value

      PLAYER OPTION: clause in additional years of a contract where the player can choose to opt in or opt out, going to free agency

      TEAM OPTION: clause in additional years of a contract where the team can choose to opt in or opt out, sending player to free agency

      FANGRAPHS.COM: website that gives super in depth looks at each team and players, projections, and evaluations

      CY YOUNG AWARD: best pitcher award

      TEAM BREAKDOWN/WISHLIST ——————————————————————

      CATCHER: Alejandro Kirk, Tyler Heinemen, Brian Serven

      After trading away Danny Jansen this past season, it's clear that Captain Kirk is the primary catcher for the years to come, now in his arbitration years and set to reach free agency in 2027. Originally signing as an international free agent way back in 2016, he is just now getting his spot as the no1 catcher. Taking a step back offensively in 2024 however, the Blue Jays should nix having Tyler Heinemen and Serven as the backups (kind of nothing players outside of being able to play catcher), and instead sign a no2 catcher that can also serve as a pinch hitter when needed. This is when trading your top catching prospect hurts you. Gabriel Moreno, traded from Toronto to Arizona, has become a top catcher in the game at only 24 years old. Traded with outfielder Lourdes Gurriel Jr. for Daulton Varsho, this trade still baffles me as you traded a top catching prospect and a quality outfielder for a decent outfielder who can play catcher but probably won't ever again.

      The catcher free agent class is usually pretty weak, as a good catcher is one of the more important pieces to keep around. Ironically, Danny Jansen is a free agent again, but will probably be asking for a multi-year deal worth more than I would spend on a no2 catcher. After departing with Moreno, their catching prospect list is basically non-existent, as none of their catchers rank.

      Cheap: Yasmani Grandal

      Grandal will be entering his age 36 season, and has fallen off significantly after his time in Milwaukee. Injuries and poor performance filled out his 4 year contract with the White Sox, having just one good year from 2020-2023. Signing with the Pirates this year on a 1 year, 2.5mil contract, he put up better numbers than his last year with Chicago hitting more homers in less games. His best years are behind him, but as a switch hitting bench bat, he could provide some offense on a game to game basis. Spotrac has his projected market value to be 1.3m/y but I think matching his previous contract with another 1 year, 2.5-3 mil deal is a good cheap option for a no2 catcher.

      Average: Gary Sanchez

      Gary Sanchez is a veteran of the AL East division, playing with the Yankees for the majority of his career before stints with the Twins, Mets, Padres, and most recently, the Milwaukee Brewers. Batting .220 in 2024 with 11 homers in 89 games isn't anything special, but only 31, I can see him recovering some of his power lost from his Yankee days, and would sign him to a 2 year, 8 mil deal. Having him as a bench option/secondary catcher seems like the better option as his average and on base percentage is up from his last year with the Yankees, having played half as many games.

      Lucrative: Elias Diaz

      Diaz will “only” be 34 in 2025, and has more than 6 years of service time as a major league catcher. Starting with the Pirates but having his best seasons in Colorado, Diaz is a good backup option, batting .270 with Colorado this year before being traded to San Diego. He only hit half as many homers this year as he did last year, but still hit for a decent average. His market value is projected to be much higher than I think it should be at 13.1m/y, coming off of a 3 year, 14 mil extension and taking a step back in his production during those years, I can see signing him to a 2 year, 15mil deal.

      SUMMARY: Yasmani Grandal – 1yr,2.5-3 mil Gary Sanchez – 2yr, 8mil Elias Diaz – 2yr, 15mil

      FIRST BASE: Vlad Jr, Spencer Horwitz

      The biggest question mark for the Blue Jays is whether Vlad Jr. can return to his 2021 season production or if this could be the final days of Vlad Jr. in a Blue Jays jersey. By far the most expensive player to evaluate, it's hard to see the Blue Jays not at least trying to keep Vladdy on the Jays. In his last years of arbitration and making almost 30 mil in arbitration in 2025, it's hard to see both sides agreeing on a number for a long term deal. Hitting 30 homers and batting over .300, he is edging closer to his best season with Toronto (40 homers, .300+ average), but with little time remaining on his tenure, the Jays should be putting him as their top priority. Spotrac has him valued as a potential 10 year, 250mil player, akin to the Braves' Matt Olson (8yr, 168 mil) which would become the largest contract in Blue Jays history, beating out George Springer's 6 year, 150 mil contract. Only missing 18 games since 2021, I think he is a safe person to bet big on, and at the very least, maintain his production for the majority of his career. In this game of ifs, I have to picture a reality where they don't get Vladdy to resign, either due to the front office's own mismanagement or because of a more lucrative deal from another team, most likely a routine contender.

      Cheap: Spencer Horwitz

      Just starting his tenure as a major leaguer and having a good first season in Toronto, the Jays can continue to develop Horwitz as their first baseman following a potential departure from Vladdy. Under contract until 2031, and not arbitration eligible until 2027, he is the perfect cheap, homegrown option to invest in and make their starting first baseman of the future. Hitting over .300 for the first months of his career and ending with a .265 average and 12 home runs is more than quality for a 24 year old drafted in 2019. His pre arbitration contract is only 741,000/y and he has the tools necessary to become a main piece of the Blue Jays future.

      Average: Anthony Rizzo/Rhys Hoskins

      This one is a little different because both players have options (Rizzo team option, Hoskins player option) so this is assuming both players have their options opted out of, sending both to free agency. Much like the signing of Brandon Belt last season, an added first baseman option will let Vladdy play games at DH and let him rest a little throughout the season without having to take him out of the lineup.

      Anthony Rizzo, a World Series champion in 2016 with the Chicago Cubs and back in the World Series with the Yankees this year, hasn't had the same production since his time with the Cubs, and has been sidelined with injury during his tenure with the Yankees. The Yankees are expected to decline his option, I think Rizzo is a good left handed option, and if healthy, can still have quality performance on offense and defense. Signing a 32 mil contract from 2022-23 and another contract for 2023-25, the Yankees are expected to buy out the last year of his 40mil contract for 6 mil. From the start of his Yankees tenure to now, his market value has plummeted from 17/mil to an estimated 2 mil/y salary. Because of this, and his notable defense, I think he is a good option to have as a backup/bench bat. His last full season was 2022, where he hit 32 homers to a .224 average, and if he can get close to this production as a first baseman/DH/bench bat, can be a good signing for the Blue Jays. Despite him being 36 next season, I would give him a 2yr, 10 mil contract with an option for a third year.

      Rhys Hoskins is kind of the opposite. Missing all of 2023 due to injury, and signing a short-term deal with the Milwaukee Brewers and proving he is still a quality player, I think Hoskins will opt out of his contract to pursue a more lucrative deal. Hitting 26 homers to a .214 average is nothing to scoff at after missing an entire year. His last full season was with the Phillies in 2022 where he hit 30 homers to a .246 average, pretty close to his most recent season. His estimated market value sits at 11.8mil/y, and I think that's fair given his current 17mil/y contract. At 31 years old, I would give him a 4yr, 50 mil contract, or a shorter 2 year, 30 mil contract with a player option for a third year.

      Lucrative: Vladdy Jr.

      Obviously, the lucrative option would be to sign Vladdy long term. Returning to form after a down year in 2023 where he only hit 26 homers to a .264 average, and only 25, the Blue Jays almost have to re-sign Vladdy, a generational cornerstone when at his best, an above average player at his worst. I would give him an 8yr, 200mil deal with options for a 9th and 10th year for a total of 250 mil.

      SUMMARY: Horwitz – 747,000/y, Team control until 2031 Rizzo – 2yr, 10 mil, option for third year Hoskins – 4yr, 50mil or 2yr, 30mil with an option for a third year Vlad Jr. – 8yr, 200mil with options for 9th and 10th year

      SECOND BASE: Will Wagner, Ernie Clement, Leo Jimenez

      With a plethora of unproven infielders, it's hard to say how they will navigate 2nd base. Like Spencer Horwitz, Will Wagner performed well during his first few months with the Jays after being acquired from Houston. Batting over .300 in his first 25 games, it's still hard to tell what he will do in a full season given the chance. Ernie Clement has been a flexible infield option as well, playing 2nd, 3rd, and SS last season. He is on his way to being a productive everyday player, having played his career high in games last season and hitting to a .263 average. To compete for a championship in the next couple years however, they may need more. I can see Clement as the starting second baseman to begin the season, and depending on his production, reevaluate from there. He is almost 30 which is a bit old to develop as an infielder, and he will make 2.5mil next season. Leo Jimenez is too young and too green to evaluate as an everyday player, and has not performed well in his time given at the major league level. I believe he will start in the minor leagues and get called up when needed. Playing in only 60 games mostly due to injuries to the main core, he averaged .229 last season. Second base doesn't always have to be an impact position, but someone who should be in the field as many games as possible with some flexibility in their ability to play other positions. The top second baseman last season was Ketel Marte for Arizona, hitting 36 homers to a .292 batting average, by far an outlier on the offensive front. Former Blue Jay Marcus Semien is a close second place, who with Toronto broke the single season home run record for a second baseman but took a step back offensively with the Texas Rangers' collapse in the second half, only hitting to a .237 batting average.

      Cheap: Use what they have in Wagner, Clement, Jimenez

      Having an excess of middle infielders makes it easy to plug in someone you already have in your system, without the need to look elsewhere. Wagner showed promise and with Jimenez, are young and cheap with many years of team control. Ernie Clement showed success at the major league level but is getting older for someone who is just now getting significant playing time. He will be entering his age 29 season.

      Average: Jorge Polanco

      Switch hitting second baseman has a 12 million club option with Seattle for 2025, but only hitting 16 homers to a .213 average, I see Seattle declining his option, sending him to free agency. In the last year of his contract extension from 2019 with Minnesota, Jorge Polanco was a key piece of the Twins' success and still relatively young at 31 years old. Because of this, and his former success , hitting 33 homers to a .258 average in 2021, I think he would be a good short term, win now contract if he can return to form. His market value is a little higher than I would give him at 13.7/y, but a short term deal could be beneficial for both sides. Because of his past and as a switch hitter, I think a 2 year, 25 mil deal with an option for a third year worth 15mil would work well.

      Lucrative: Gleyber Torres

      Yankee mainstay Gleyber Torres hits free agency this winter, and depending on the Yankee's success in this year's World Series, the team might not re-sign Torres with young infielders on the rise in their minor league system. He's only missed a handful of games in his last 3 seasons, and a veteran of the AL East, could be a good steal for the Jays, even if at a hefty price. The Jays have a lot of young infielders, but could sign Torres to a multi-year deal to have some offensive stability while the young players develop. He took a step back offensively this year, dropping his homers from 25 to 15, and his average from .273 to .253, but looking at his first half vs second half stats, he performed much better in the second half as the leadoff hitter, hitting over .300 the last few months of the season. The Blue Jays' known issues with production in the leadoff spot puts Gleyber in a good spot to provide some early offense for Bo and Vladdy, who will get more opportunities to drive in runs early. Torres is only 27, and will fetch a high price. He received 14.2mil in arbitration last season, and due to his step back offensively, could be signed to a 3 year, 50 mil deal with options for more on the hope that he can return to his 20+ homer, .250+ average with consistency.

      SUMMARY: Wagner, Clement, Jimenez – <4 mil/y and a lot of team control Jorge Polanco – 2y, 25mil with option for third year at 15mil Gleyber Torres – 3y, 50mil with options for fourth and fifth year

      THIRD BASE: Clement (projected starter on FanGraphs), Addison Barger, Orelvis Martinez

      The Blue Jays haven't had a consistent third baseman since acquiring Matt Chapman from Oakland in 2022, departing with Cavan Biggio and Santiago Espinal and settling on deals for Justin Turner and Isiah Kiner-Falefa last year. Their top third base prospect, Orelvis Martinez, hit to a .267 average in the minor leagues before getting called up to the Jays, and promptly suspended for 80 games after violating the PED policy. In years previous, he's been nothing special, but is only 22 years old. Another third base prospect, Addison Barger, got significant playing time last year but hit to a <.200 average, and will most likely start 2025 on the minor league roster. Another third base prospect, Cutter Coffey, one of the players acquired from Boston in the Danny Jansen trade, hit 14 home runs in the minor leagues before being traded, where he only hit 1 the rest of the season. This position is very much a work in progress, and in a win now scenario, needs significant improvement unless you move Vladdy back to third base, something he did a little bit last year but hasn't played full time since 2019. Moving Vlad to third would allow Horwitz or another first baseman (think Rizzo or Hoskins) to play everyday and still let someone play DH without removing much from the field defensively.

      Cheap: JD Davis

      Because of the unreliability from the Jays third basemen in their organization already, the best cheap option to acquire would be JD Davis, who has shown power in the past but didn't perform well last year where he only played in 50 games. He hit 18 homers to a .248 average with San Francisco in 2023, and could return to that 15+ homer form given a full season. In seasons where he played more than 100 games, he has hit at least 12 home runs and at least a .248 average. A 1yr, 2.5 mil deal, same as last season, should be good enough for him.

      Average: Yoan Moncada

      Riddled with injuries these past few seasons, Yoan Moncada needs a “prove it” deal, the opportunity to show the league you still got it on a short 1 year contract, to get back on the right track. As a switch hitting third baseman who was touted as a top prospect with Red Sox and later the White Sox, he is only a few years removed from his best campaign, where he hit 25 homers to a .315 average in 2019. Still young at 29, and most likely to have his 25mil team option opted out of, he will be looking for somewhere to show his stuff. Playing poorly from 2020-2024, only playing in a handful of games the last couple seasons, his price tag will be much lower than his contract was, and a 1 yr, 4 million dollar deal would be a good prove it deal for him.

      Lucrative: Alex Bregman

      Bregman is tricky, because there is a big possibility that the Astros resign Bregman, who has played his entire career in Houston, winning 2 championships in 2017* and 2022 respectfully. He is coming off a 5 year, 100mil extension signed in 2020, and will probably be asking for close to that if he hits free agency. Hitting 41 home runs in 2019, it's no question why he got the contract extension, but since 2020 has performed to a slightly above average statline, as a 20+ homer .250+ average player. If he can't get a deal done because his asking price is too high or Houston's offer is too low, I can see a 4 year, 80 million dollar deal for a quality third base option who has only missed significant time once in his career.

      SUMMARY: JD Davis – 1yr, 2.5mil Yoan Moncada – 1yr, 4mil Alex Bregman – 4yr, 80 mil

      SHORTSTOP: Bo Bichette, Ernie Clement, Josh Kasevich

      Bo Bichette has been a mainstay at the shortstop position since 2019, hitting for a .300+ average almost every season, with his lowest coming this year due to injury at .225, but only playing 81 games (also important to note that it was a hand injury, so offensive struggles were likely because of that). He is set to earn 17.5mil in 2025, his last season before reaching free agency. During his stint on the injured list, Ernie Clement and others held down his position, but not performing nearly as well as Bichette had in years prior. Josh Kasevich has yet to debut on the Blue Jays roster, but performed to a .325 average in 41 games at AAA. I think he will start in the minor leagues, and probably only debut due to injuries or late in the season, so I think signing someone who can slot in to multiple positions while also taking over on rest days for Bo if needed.

      Cheap: Amed Rosario

      A flexible INF/OF, Rosario has had consistent success at the major league level, with most of his 9 seasons consisting of .260+ averages and 5-15 home runs. He has played most of the season each year, with stints on the Dodgers, Guardians, Mets, and Reds. Not a huge impact player offensively, but his value is in his versatility and ability to stay on the field, not to mention his low cost. Rosario signed a 1.5mil deal in 2024 with Tampa Bay before being sent to the Reds. His estimated value is 2.3m/y, so a 1y, 2.5 mil deal is more than doable.

      Average: Ha-Seong Kim

      San Diego has at least 50 shortstops last time I checked, Kim one of them, and his contract for 2025 rests on a mutual option. The Padres need to cut payroll, and Kim is expected to opt out of his side, despite a down year offensively. He only hit 11 homers to a .233 average, but at 29 years old and a veteran of the Korean league, Kim is still a worthy player. Kim missed 40 games this year due to injury, but played in 150 games in 2022 and 2023. He is coming off a 4 year, 28 mil contract signed in 2021, and his market value is estimated at 12.3mil/y. I wouldn't spend that much on someone who's best season was only 17 homers at a .266 average, but a 3 year, 33 mil deal with an option for a 4th works well for me, as he has also played second base in San Diego, another spot the Jays need to fill.

      Lucrative: Bo Bichette

      It's no mystery that Bo Bichette is talented, and that last year was an outlier to his overall production, but signing him to a long term deal would still come with some ifs. 26 years old is super young for a shortstop, and is coming off a 3 year, 33.6mil extension signed in 2023. Set to reach free agency after this next season, signing him now on the idea that he returns to form instead of waiting until after the 2025 season in case his stock rises so much he chooses to hit the open market is the best bet for a solid infield for years to come. Not counting 2024, where he missed half the season, he has hit over 60 home runs to a .300+ average since his debut in 2019. After a down year, you could probably get him to sign a long term deal for less than if he had played a full season, and a 7yr, 150mil contract is somehow on the cheaper end for a player like Bobear.

      SUMMARY: Amed Rosario – 1yr, 2.5mil Ha-Seong Kim – 3yr, 33 mil with an option for a 4th year at 15mil Bo Bichette – 7yr, 150mil

      OUTFIELDERS: George Springer, Daulton Varsho, Nathan Lukes, Joey Loperfido, Jonatan Clase

      Instead of doing 3 players for each outfield position, I will present 5 outfielders, 2 cheap, 2 average, and 1 lucrative.

      The Blue Jays outfield has seen massive turnover in recent years, going from proven sluggers like Teoscar Hernandez and Lourdes Gurriel to defensive standouts like Kevin Kiermaier and Daulton Varsho, but the constant member of the outfield, George Springer, has fallen off completely from his best years. The highest Blue Jays contract in history at 6yrs, 150mil, Springer is a shell of his former self, hitting to a .220 average last season. George will be 35 during the 2025 season, and a 35 year old outfielder is like one of those dogs with the training wheels because their legs are shot. A worthy candidate to replace George Springer as the top outfielder is Daulton Varsho, and while he was acquired through a horrible, lopsided trade, has proven he can patrol Center Field to a gold glove standard. Lukes, Loperfido, and Clase are young and unproven, but can fill out Left and Right field if needed. Outside of these names, there aren't a lot of impact players for the Jays' outfield. Minor leaguer Alan Roden would be the first one called up if needed, hitting to a .314 average in 71 games at AAA. There are always a lot of quality outfielders on the market, we'll see if the Jays can snag anyone of note for next season.

      Cheap: Michael Conforto

      Conforto has been through injury hell since he hit over .300 in the shortened covid season, missing all of 2022. He signed a 2 year deal with San Francisco, and performed well enough, playing most games during those two seasons and matching his production from 2021, even surpassing his home run numbers this last season, hitting 20 and batting .237. I can also see him taking somewhat of a prove it deal, improving last season but still needing to return to his 2019 standard, where he hit over 30 home runs for the first and only time in his career. His market value is set at 4.7mil/y, but I don't think he would go for anything less than 10 mil/y. A 1 yr, 15mil deal should be good enough value for what he is hoping to do in 2025. Conforto is a primary Right Fielder but can play Left and Center if needed.

      Cheap: Harrison Bader

      Besides a short run during his time with the Yankees, Bader has been a defense first outfielder for his career. I would compare this signing to the signing of Kiermaier a couple years ago, adding great defense but with Bader having slightly better offensive numbers. Having Bader as a Center Fielder allows Varsho to rest vs lefties, or allows him to slide to Left with Springer in Right for a more complete outfield. At 30 years old, and valued at 7.1m/y, I think a 1yr, 10 mil or a 2yr, 18 mil deal, comparable financially to Kiermaier's contract (1yr, 10.5mil).

      Average: Tyler O'Neill

      Canada's own Tyler O'Neill hit 31 homers last year, and would provide much needed power to the middle of the order for people not named Vlad Jr. He made just under 6 mil in arbitration in 2024, and is valued at 16.2mil/y after this great season. He did miss time with injury the past 3 years, which could lower his value a bit, but that makes the 31 homers this season stand out that much more. A corner outfielder, he can slot in as the everyday Left or Right fielder, and also DH when needed. Only 29, I can see signing him to a 4yr, 60 mil contract.

      Average: Alex Verdugo

      As a member of both the Red Sox and the Yankees, Verdugo is no stranger to the AL East, and has proven to be a +defender with solid offensive output. Only 28, he will probably be looking for a multi-year deal. Making 8.7mil last season in arbitration, I think a 5 year, 60 mil contract with options can be beneficial for both sides, as he provides a left handed bat and solid defense at the corner outfield positions.

      Lucrative: Juan Soto

      Juan Soto is on the fast track to the Hall of Fame. Only 25 years old, he won the World Series in 2019, and has over .300 for almost his entire career. Hitting for average and power, Juan Soto is the upper echelon of offensive production. His “worst” season is still a 25+ homer season, and had a career high 41 homers in 2024. The Yankees will do everything in their power to re-sign Soto, but why shouldn't the Jays do the same? Making a whopping 31 mil in arbitration this season, he will no doubt be a $500 million dollar man. Slotting in Right or Left, and as a power hitting left-handed bat, Juan Soto will be at the top of the list for every team worth their salt. A 15yr, 500mil contract is an insane amount of money, and is well deserved for a man of Soto's caliber.

      SUMMARY: Michael Conforto – 1yr, 15mil Harrison Bader – 1yr, 10mil or 2yr, 18mil Tyler O'Neill – 4yr, 60 mil Alex Verdugo – 5 yr 60 mil Juan Soto – 15yr, 500mil

      DESIGNATED HITTER: Vlad Jr., Spencer Horwitz, George Springer

      As far as offensive production goes, the Jays need a significant improvement in their DH slot, having an everyday power presence while allowing Vladdy, Horwitz, and Springer to play their normal positions. DH's vary more year to year and don't receive long term contracts because they only hit. (The Yankees' Giancarlo Stanton is one of the only DH's to make significant money and only hit, as Ohtani will return to pitching in 2025). Because of this and the tendency to not sign a DH only player, the options are usually slim.

      Cheap: Eloy Jimenez

      Debuting with the Chicago White Sox and starting off strong with a 30+ homer season, Jimenez has never been the same player since, struggling with injuries and poor performance. He actually played the same amount of games in 2021 as he did in the shortened 2020 season because of injuries, but put up decent enough numbers in 2023, but not to the standard of his debut season. Because of his strong first season in Chicago, he was signed to a 6yr, 43 mil contract extension, and never lived up to the price tag. He has a team option for 2025, but at 16.5mil, he will most certainly have it declined. He's only 27, and could benefit highly from a 1yr prove it deal, if he can stay healthy. His estimated market value is only 2.3m/y, and a 1yr, 3mil contract for a DH on the hopes they can get back to their 25+ homer days is perfect for a Jays team that wants results without spending big.

      Average: JD Martinez

      Veteran slugger JD Martinez has produced his entire career, and at 37 years old, is only now starting to slow down. From 2014-2023 (not counting the shortened covid season) Martinez has played over 100 games each season, hitting to a .270+ average. 2024 has arguably been the worst of his career, only hitting 16 homers to a .235 average, but can still provide a power bat at the DH spot, not having to play every day either. At 38, a big money deal is risky, but with 7.5mil of his most recent contract deferred until 2034, could be attracted to a 1yr, 12 mil deal.

      Lucrative: Joc Pederson

      Another proven power bat, this time from the left side, Joc Pederson hit 23 homers to a .275 average in 132 games in 2024, one of his more consistent offensive seasons. A notorious power bat and two time World Series champion, he will most likely opt out of his 14 mil deal for 2025 and look for a multi-year contract in his age 32 season. His market value is estimated close to what he would earn this year, I think a 3yr, 50mil contract given he still produces is more than beneficial for the Jays.

      SUMMARY: Eloy Jimenez – 1yr, 3mil JD Martinez – 1yr, 12mil Joc Pederson – 3yr, 50 mil

      STARTING ROTATION: Kevin Gausman, Jose Berrios, Bowden Francis, Chris Bassitt, Yariel Rodriguez

      The Blue Jays lucked out with Bowden Francis. When Kikuchi was traded, that opened up a spot in the rotation, and Francis broke out. Pitching to a 3.30 ERA and flirting with a no hitter on multiple occasions, Francis is an excellent pitcher for the future of the Jays. With an all righty rotation however, I think signing a lefty will be good for variety. With Rodriguez' struggles in his first season and subsequently pushed into a bullpen role, a spot is able to be opened up if needed. Alek Manoah (although also right-handed) should return for the second half of 2025 after his UCL surgery. Unfortunately their top lefty pitching prospect, 22 year old Ricky Tiedemann also is recovering from surgery and will miss the first half with Manoah. Lefty Ryan Yarbrough was traded for last season, so there is a possibility that he gets re-signed as a first half replacement for Manoah and Tiedemann.

      Cheap: Ryan Yarbrough

      Although mostly used from the bullpen this past season, Yarbrough was a starter for his first few years, pitching over 140 innings in 2018, 2019, and 2021 with Tampa Bay. Finishing last season with a 3.19 ERA in 44 games, Yarbrough could be a good lefty option to platoon that no5 starter spot with Rodriguez. Valued at 4.5mil/y renewing his tenure with the Jays on a 1yr, 4 mil contract should hold down the rotation until Manoah and Tiedemann can return from injury.

      Average: John Means

      The Baltimore lefty has been through injury hell, Only pitching more than 25 games in 2 seasons since 2019. In 2023 and 2024 he only pitched 4 games, and performed well with a a <3 ERA. Now a free agent, John Means will be looking for another 1 year prove it deal to show he can stay healthy and produce at a quality standard, which he did in 2019 and 2021, pitching over 140 innings to a 3.60 ERA. Making 3.3mil in 2024, a 1yr, 6 mil deal can help him show that he can still produce.

      Lucrative: Blake Snell

      The two time CY Young award winner got off to a slow start in 2024, not signing with a team until after Spring Training, which significantly halted his performance early on. Recovering tenfold and throwing a no hitter this year, Snell is expected to opt out of his last minute contract and hit free agency for the second consecutive season. In what has historically been an up and down statline on a year to year basis, Snell has shown consistency his last 3 seasons, pitching over 100 innings to a <3.50 ERA and winning the CY Young in 2023. He would slot in as the new ace, and a power lefty pitcher would round out the rotation nicely. Snell will most likely want to go to a regular playoff contender, and is valued at 26.3m/y. His biggest question mark in his career has been consistency, but after a third year of consistent performance, a 4yr, 150mil contract is well worth the cost.

      SUMMARY: Yarbrough – 1yr, 4mil John Means – 1yr, 6 mil Blake Snell – 4yr, 150mil

      BULLPEN: Jordan Romano, Chad Green, Erik Swanson, Genesis Cabrera, Ryan Burr, Brendon Little

      Outside of closer Jordan Romano, setup man Chad Green, and lefty Genesis Cabrera, the bullpen is riddled with holes. In what was seemingly a revolving door of L talent, the bullpen is by far the part that needs the biggest change. The next guys up from AAA would be Zach Pop, Luis Frias, or Dillon Tate, all of which had poor performance in 2024. While not every pitcher in the bullpen needs to be an A+ guy, you should at least have consistency. There are always relief pitchers on the market, and on a wide range of price tags.

      Cheap: Jose Leclerc

      2024 was a step back for Leclerc after winning the World Series with Texas in 2023, pitching to a 4.32 ERA in 64 games. The veteran right hander is a consistent arm however, pitching over 50 innings in 6 of his 8 seasons. Coming off a big extension signed in 2019, and because relievers don't usually fetch a high price, a 2yr, 8 mil deal for Leclerc would add another stable arm in the bullpen.

      Average: Kirby Yates

      Yates was a Blue Jay for all of 6 seconds before injuring himself and sitting out his 2021 contract, but has since proven himself to be a top reliever in the game again. Cooking up a 1.17 ERA in 61.7 innings for Texas this year is outstanding for the veteran now entering his age 38 season, but age doesn't seem to have affected him as he put up his best numbers of his career. Because he is most likely on his way out of the league, I can see him settling for a 1yr, 8 mil deal.

      Lucrative: Jeff Hoffman

      Coming off a career year with the Phillies, pitching to a 2.17 ERA in 66 innings, his second consecutive season with an ERA in the 2's, Hoffman is a great choice to be that no1 guy out of the bullpen. Age 31, he will be looking for a multi-year deal. Estimated value set at 6.2m/y, I think a 3 year, 20 mil deal would give the Jays their A+ guy out of the bullpen to set up for Green and Romano in the 8th and 9th.

      SUMMARY: Jose Leclerc – 2yr, 8mil Kirby Yates – 1yr, 8mil Jeff Hoffman – 3yr, 20mil

      this has been my most ambitious post by far, and if any of these happen, I am the GOAT.

       
      Read more...

      from Oncle

      Last year's summer was not amazing for me. I was forced out of university before it was done, and where I was excited to spend one more summer in Kingston, it all vanished with my dad getting brain cancer and later dying. The separation caused a final rift in my relationship and I got broken up with. There were some people I saw here and there but with the move I felt I lost my consistent social life. On top of that, moving to the big city from Kingston, I had no idea how navigate meeting people. Everyone was so good at shutting everyone out and I had no clue how to get in. To add to this, I got an injury that caused a nerve shock, creating a ton of pain shooting through my left arm, destroying my sleep and ability to exercise. I was working all the time, because I felt I had to be there, but I wasn't doing much or accomplishing anything.

      After a week of every day feeling more vulnerable, weak, and isolated than the last, I remember going to my home gym, trying to lift some weights, and being unable to lift 2 pounds with my left shoulder, and I mentally collapsed. This collapse lasted several hours, and because it became so late, when I reached out for help, I didn't get much response from anyone. Not really to fault them, even at rock bottom I knew it was 1 30 AM on a work night. Getting no responses I started to reach out to more people, including my ex, who had called me multiple times since the breakup due to her mental health reasons. I knew I was in a bad spot, and knew it was my time where I needed help. Her response was “Don't come to me about this” which is somewhere close to as bad as you can be when replying to someone in a mental health crisis asking for help. She had also recently gotten an award that was offered to me. Queen's Athletics shut me out as the recipient because I dropped a semester to be with my sister in the hospital. The award represents supporting the cheer team in memory of a teammate and dear friend of mine who had helped me in the past, but ended up taking her own life some years back. The person with the award now turning me away in my time of need was another layer to the crisis. This whole everything was pretty brutal. Luckily, a bit later, Elisa got back to me and we chatted for a while.

      When talking to Elisa I expressed that I felt like everything had collapsed. My friends groups, my support systems, my family, my prospects for further education, really just all of it. It felt like every aspect of my life was measurably worse, and things were not improving. She expressed that loneliness in Toronto is pretty tough and had been struggled with it a lot over her life too. Maybe it was just the fact that both of us understood how hard it is to be long-distance with Bennet, but we decided that we could tackle this head-on. We set up some plans to hang out, she had some ideas, and we got to work. Plan one was a Fall time event at Square One. This was October 2nd, 2023.

      Naturally, we called it operation friendsmaxxing. We decided that to tackle this loneliness thing we would come up with more plans, and I made a goal of hanging out with someone every day. Liam, Elisa, and I started hanging out in some capacity very frequently, sometimes doing cool and interesting things, sometimes watching movies that weren't even the most interesting with nothing to say to each other (since we last saw each other a day or two before). I grabbed some food with some old family friends, and in particular, I remember going to Joey's with Rob, the dad of a family friend who knew my dad but they fell out near the end. We talked. He asked about my dad and said his side of things and wanted to know mine. We talked about his life and times when he thought it was truly over for him. We talked about my life and how it seemed like my life was truly done for. My old coach Shaver called me a couple days later (I had called her that fateful night too) and we chatted about everything, including the award which was weighing on my mind. Dumping everything on everyone else helped a bit, and hanging out a lot helped a bit. Things were brutal, but something had kind of started, and it was time to make it what it could be.

      I don't really remember it much. Maybe my mind was just in overdrive simmering in everything that was so overwhelming. I realized that there were indeed people around before this. There were the vampire nights, which require a shout-out to Eddie and Tetyana for those costumes, they seem to be the best at dressing up and I need to get better. These were a blast, but in my head, I had been so isolated and out of it that I felt like I was grasping at straws to make something happen. From now on, plans would be the default state unless they fell through.

      There were a ton of plans for the next while, and after hanging out with people so much, I realized that socializing was, as I still say, like a muscle. Like hitting the gym, going once or twice makes you super sore and tired, and it's kind of foreign, and it's easy to just forget to do. Like going to the gym, if you do it all the time, make space for it, and make it happen, it starts to become natural, it keeps happening, and it makes you feel better. We had a book club back in Kingston (Vgh) that I missed, but I needed to appreciate that it was here too! Not only that, but the people in the book club tended to have lots of cool ideas for things to do. I decided I didn't have to do something every day, but would focus on making higher-quality plans. Where before I felt like I was grasping at straws to hang out, my social life started to become more regular and more successful.

      I remember Pattycom. I remember getting my first coffee by accident, taking Nick's order that they got wrong, and feeling like I was glowing. While I was still glowing, we would be chatted up by a random table saying it was international talk to a stranger day, and a guy started talking about his security work and helping a woman recover her sex tapes from her porn recording room at her ex's house. I remember missing the first giant Pattycom visit where 10+ people could make it and being a little angry. I remember the next week there being even more people and feeling so relieved that it wasn't going to be a one-off thing. The small weeks where it was two or three of us. The big weeks where we took up half the place. As someone who was always scared of caffeine after watching my mom go through caffeine withdrawal, coffee became a big player in my new social life.

      Things were looking well up, but the terrible events continued to pile up. Losing more friends and family was the default state. My grandpa had a stroke and lost his memory. He slowly started to recover, then had a heart attack and died. Both of these hit me very hard. An old family friend who I hadn't seen in a while, but went to Queen's, died of an infection. My capstone project mate who did most of our project and still happily helped me out with my section when he heard about my dad also died in a car crash. I am very familiar with death, but you still can only handle so much at once. It affected me heavily, but this time, I had friends. I was on a cheer team that I didn't like that was going pretty terribly, and while that team didn't help, I had friends there behind me to air out my frustrations who I knew I could be excited to see no matter what. Worst case scenario, I just had to stick it out till Saturday. Frankly, there was so much happening and I was so stressed that I can barely remember when things happened, or sometimes even much of what happened. I don't even remember it being winter at all. On one hand, it's strange, but on the other hand, maybe that meant that the winter didn't make me miserable like it has in many different years.

      I remember writing my Father's Day article where I let myself be vulnerable, which as someone with a solid dose of PTSD, doesn't happen very often. This allowed an introspective and emotional outlet in the Printhouse, and my friends were supportive and not just freaked out by me, which was cool. The Muggies happened! I proposed to my now ex-wife, the drama surrounding the slap, the delicious food and drink, the award for my Father's Day article, and the cigarette in the taxi on the way home was a night of living the high life. We truly could not get much higher.

      We made plans for the summer in Edna's backyard, and there were so many ideas from everyone. We did even more than we could have planned for, and I think probably half the plans haven't even been crossed off. I can't even remember when this summer started. So much has been happening so often with so many people that it has just been the best. People say time speeds up as you get older, and I think it's partially true. Having so many plans that are so diverse changes that. Week by week and month by month can go so fast if you do the same thing every day, but we did everything. This summer feels like it has lasted years. Looking back, I can't even recount all the amazing things I did with so many amazing people. I would think I would dread winter because it means this summer is winding down, but I know I'm going to be looking around for even more plans and things to do, and with the right people, it can happen.

      We read Dune. We read Dungeon Meshi. Now, we are more than halfway through Fred Hampton. All of these books have been amazing experiences. Dune was the first sci-fi that I really enjoyed as an adult. I didn't know they made them like that. Dungeon Meshi was this weird readable anime that you read backwards? It was funny reading a comic like a kid again, but I loved the adventure and the inspiration it gave me to cook more. It was a great experience. Fred Hampton is my recommendation and it's great seeing how people understand and interact with so many of the concepts in our discussions. We talk about the injustices and the learning what the movement was like and what they were about. I love when people are curious about the same things as me. I love reading.

      I think I learned that doing things and socializing is not optional. You can't just wake up and not go to your job for a while. You shouldn't be able to with your own time, but you technically can. You should be doing things by default, and occasionally booking a rest. I would rather meet up with people and fall asleep by accident over not meet up with people. Schedule things ahead of time, book them into your calendar, and try to book more things later. If you have a night of nothing, try to make two plans. If you can make something happen, book it in and make it happen. You can show up and be tired or out of it, I've fallen asleep at a couple of coffee meetups, but I was there, which was better than not being there. It's also restful. If you go home from work and lie down to recover for the next day, you will be tired. If you socialize or do something cool, you will not only have done something but have something to look forward to to do again. This is a way better state to be in. There are little things everywhere, shows, deals, diners, fairs, festivals, trails, clubs, sports, etc. There is always something.

      Last night, I went out for dinner with Rob again. We went to Joey's and I told him that it had been around a year since the time we went out, when I was down and out, and he had helped me a ton. We had an amazing time, and it was a nice full-circle moment for me. A year ago, I thought it was just misery from here on out. I thought the fun part of my life was over, and it would just be slowly rotting from then on. It turns out, a lot can change in a year. A place that I thought was leaving me isolated, as it turns out, had some more life in it. With a lot of effort, that turned into more than I could have possibly imagined.

      Things aren't perfect, I still have a lot of unresolved issues simmering in my head from the struggles I've been through over the years, but I've found something that really is pretty nice.


      You can't stop the rain The friends that come around To talk about the highs and lows, the ups and downs


      Oncle

       
      Read more...

      from Noah

      An anthropological investigation of a dead, pandemic-era Discord server

      Portrait by Nick Verrelli

      If I had a nickel for every Discord bot I have programmed, I would have two nickels.

      The first was Verrelli Bot. Inspired by the bot work of Dom in our QCompSci messenger group chats, Verrelli Bot posted Markov-chains of Nick’s scraped (and now deleted) Twitter account. Good for a couple laughs and even as inspiration for a few tweets.

      The second, Verrelli Bot 2, was my Javascript magnum opus.

      What started as a replacement for the dogshit ranking system of MEE6 bot, soon spiralled into a full-blown economic and political model, spanning several eras and dynasties. It was the best of times, it was the worst of times. It was December 2020 to March 2021; and deep in the midst of an international lockdown, we had nothing better to do than log onto Discord every day. The whole period was a blur to me. I can’t remember doing much except sitting in my basement office, my remote work on one screen and Discord open on my Lenovo gaming laptop¹.

      At the core of Verrelli Bot 2 was NoahCoin – the digital upgrade of my fiat, Dollar Store brand currency, NoahBuck. In the beginning, it only had a few commands. v-mine was utilized to gain a small, random amount of NoahCoin. v-transfer would send NoahCoin to another person. v-slots would gamble a choice number of NoahCoin in the emoji casino. This was enough to kickstart a grand economic rat race and a bot project ending with dozens of commands.

      Recounting each server event that took place in the three months between the introduction of Verrelli Bot 2.0 (December 29th, 2020) and the end of the server (March 11th, 2021) would be as futile as it would be boring. But I would like to present an anthropological, archeological, and sociological analysis of one of the recovered artifacts from the server: The infamous decree which became known as The Char Accords.

      NOTE: From here onward, “Verrelli Bot” and “v-bot” will be used interchangeably, referring to the Verrelli Bot 2.0 (and all subsequent versions).

      The Accords

      On January 22nd 2021, Char ascended to the role of sole ruler of the server, and pronounced his decree. The full text is featured below and was later reprinted in the Nick York Times issue of that same day.

      Upon further analysis within its original cultural context, the Char Accords reveal a great amount of detail regarding day-to-day life within Discordian society under the Machine Age of Verrelli Bot.

      1. Rather than Charcord, the city as a whole will establish the new name of the discord to promote democracy.

      The First Accord reveals that democracy and democratic values were at the forefront of the public discourse on server ownership. The server, up until this point, was filled with backstabbing tyranny over the digital throne. Everyone wanted to be the king, and no one trusted anyone.

      This raises the question: How did one become the server ruler?

      If their NNCBC (National Noahcord Bank of Commerce) account equaled or surpassed one million NoahCoins (held in NNCBC accounts by v-bot), their account would be reset back to zero and they would be granted the ‘Supreme Chancellor’ role, replacing whoever held it last. With the Chancellor role, they would be able to access specific v-bot commands that others could not: v-decree, v-tax, v-gag, and v-deputy – to name a few.

      Originally, the Supreme Chancellor role would be given to whoever had the most NoahCoins. However, this led to extreme NoahCoin wealth disparity, with some users ranking in the millions while some only had hundreds. To solve both the inequality and rising NoahCoin inflation, the Verrelli Bot 2.5 [Definitive Golden Edition] update came with an economic overhaul that would both even the playing field and remove excess NoahCoins from circulation.

      In this text, Char is referring to v-name, a command that allowed the Chancellor to rename the server. Of course, they could do it manually with the Supreme Chancellor role, but there was greater fanfare in having the bot do it publicly.

      By not immediately renaming the server to “Charcord”, Char attempted to distance himself from the narcissistic regimes that came before him – including his own previous Charcord.

      Ancient Discordian professor and scholar Dr. Nicholas commented, “The Chancellor was so desperate to distance himself from his past self that he claimed it was a divergent personality responsible; a Dark Char, if you will.”

      2. Curfew has been lifted.

      The “curfew” was the NoahCoin Farming Curfew imposed by the prior Jagcord Administration. Notoriously unpopular among the general populace, it banned the use of the v-farm command between the hours of 8pm and 11am.

      An explanation of the v-farm command from the Verrelli Bot 2.5 [Definitive Golden Edition] patchnotes (published January 11th, 2021) can be found below:

      This v-farm command became a very popular alternative to the widely used v-mine. Though slower (the cool-down on v-mining changed from time to time, but generally remained around 5 minutes), the profit was worth the risk of others potentially stealing your hard-earned crops².

      The curfew that the Jag Regime had imposed was to stop so-called “overnight tryhards” who clogged up everyone’s notifications with 3am v-farm and v-mine attempts.

      When asked for a comment on the curfew, Jag said “You can call them tryhards, I call them bots. I couldn’t escape Alex and Nick’s partnership. They had a strong bond. This was my wrench.”

      By undoing the curfew, Char made himself friendly to the average farming citizen, as well as the aforementioned Bambino-Nicholas Alliance.

      3. V-Tax, following an inauguration taxation, has been abolished.

      v-tax was one of the most contentious v-bot commands that a Chancellor could use. Once daily, a Chancellor could type v-tax [integer between 1 and 5] to withdraw that percentage from every active NoahBank account and place it within their own account. Universally despised, it was still used by almost every Chancellor to keep their pockets stuffed. Anything less than v-tax 5 was seldom used.

      Even Char couldn’t escape the allure of one final tax payout.

      As Nick adds, “The hypocrisy of final taxation did not do much to ingratiate the new Chancellor to his citizens and was met with bipartisan uproar.”

      4. I will be launching v-grant, a system which grants 10,000 NoahCoin to the citizens of the cord.

      v-grant was added to solve a particular problem in the server at the time – there wasn’t much to do once you ran out of NoahCoin. This was a common problem, given that many vagrants gambled away their life savings in the v-casino on the v-slots.

      v-mine, which users could do once every 5-10 minutes, took too long and produced little gain. v-daily and v-startup were recently banned following an Anti-Communism Committee investigation.

      Char attempted to make himself a provider, a saviour of the people, doling out free money day-by-day, granted that you keep him in power.

      Bambino in Growing Up in Kaitcord: Life as a V-Farmer sarcastically comments, “The irony in watching later Chancellors start each morning with v-grant and then v-tax 5…”

      5. V-Request abolished, to prevent those from sneakily peaking at opposing parties balances.

      To become Chancellor, your NNCBC account had to equal or surpass one million. This would empty your account and give you the Supreme Chancellor role with all its admin privileges. This economic overhaul from the 2.5 update also spawned a new host of strategies designed to take control of the server. To start was the obvious: political factions would form and donate money to a single person, allowing them to become the leader. The donors would normally be granted some high ranking role in the new society, generally the Sheriff position.

      There were more advanced tactics too. The Bambino-Nicholas alliance was notorious for offloading hundreds of thousands of NoahCoins into ‘offshore’, inactive member accounts, to be later v-heisted back.

      Another common tactic was ‘Pushing over’, whereby rival factions would push an enemy bank account over the one million mark, zeroing out the account, and then immediately pushing an allied account over the million mark to snatch away the throne.

      For example: Account A has 700,000 NoahCoin Account B has 800,000 NoahCoin Account C has 900,000 NoahCoin

      Account A and B are allied against Account C. They could easily combine funds and take the Chancellor role. However, they want to make sure Account C has no easy way to stop their new rule. Account B first v-transfers 100,000 NoahCoin to Account C. Account C passes hits one million, becomes Chancellor, and their balance is back to 0.

      Account A has 700,000 NoahCoin Account B has 700,000 NoahCoin Account C has 0 NoahCoin

      Now, Account B v-transfers 300,000 NoahCoin to Account A, making them the new Chancellor, with their political rival now bankrupt.

      These strategies heavily relied on knowing how much each person had in their bank account. Originally, users could see their balance with v-balance or v-bal. Eventually, it had to be patched in to allow privately messaging Verrelli Bot this command, as users would check their balance in chat and immediately delete it, leaving a string of empty Discord notifications.

      Evenso, a loophole was found with the command v-request. This command was used to request money from someone else on the server. If the requested account did not have available funds, the request was automatically – and publicly – cancelled with an error message.

      By sending varying v-request amounts, users could check which requests went through and which produced insufficient fund errors. This allowed the attacker to estimate within precise amounts the exact bank balance of their target.

      With the Fifth Accord, Char aimed to nullify this tactic entirely.

      6. V-transfers must now be accepted to prevent forceful overthrowing.

      Girl in a jacketGirl in a jacket

      See Section 5 for the “pushing over” political strategies.

      This Accord was never implemented due to the cultural significance of v-transfer politics.

      “We had more NoahCoin than we knew what to do with. We couldn't fit all our cash under our own mattresses safely – so we did the next best thing, we hid it under our neighbor's mattress. Of course, we never told them about it. There were risks, but it was the secret that allowed us to ensure the safety of our dynasties. Who doesn't stash away a little cash for a rainy day?” – Nick, on offshoring NoahCoin in inactive accounts

      7. V-trial in place, launching a jury system which will democractically [sic] vote for a punishment rather than imprisonment without trial.

      Culturally, the Supreme Chancellor was not the only bot role. The other was “Sheriff”, which could be granted to any user by the Chancellor (including themselves) by using the v-deputy command. The Sheriff had access to v-imprison and v-release. V-imprison stripped a user of all their roles and banned access to all voice calls and chats except one: Prison Yard.

      This power was abused. Many mass imprisonments followed regime changes. Sometimes, though, the Sheriff used their power for good, imprisoning those who stole v-farm crops or other such crimes (which varied from one ruler to the next).

      In later versions of the prison, timeouts could be set on prisoners' chats. One message per hour, or even per day. Some prisoners used their one message to petition for release. Others used it for a rebellious v-mine command.

      Due to technical limitations, this Accord was never implemented. Yet it was, in the opinion of the author, by far the most progressive of all the Accords – trying to put an end to the often dual tyrannies of Chancellor and Sheriff.

      8. To prevent citizens to overwhelm [sic] the farm sites, a minimum of 1000 NoahCoin must be used to purchase seeds.

      v-farm was the main alternative to gain NoahCoins, aside from v-mine. Even within this system, there were strategies to keep money in your account and out of your enemies. There were ten virtual farm “plots” which could be filled by using v-farm. People who were rich and wanted to keep others from gaining money filled all those farms with v-farm 1, ensuring that for the next hour no one could farm and the resulting harvest would only be between 0 and 10 NoahCoins. See Section 2 for further explanation on the mechanics of v-farming.

      Char aimed to put an end to this practice and leave the farms open for those with a genuine seed investment.

      9. Nick News will continue to come out daily. V-Pay will be used to pay workers for their piece, 20k a news article, to promote creativity. Minimum requirements determined by the editor. This balance will not be taken from anyone's wallet.

      The support of “Nick News” came to the Discord server as a surprise. One week earlier (decades in Discord time), Char had actually banned Nick’s Discord newspaper, The Nick York Times, under suspicion of Anti-Char and Pro-Communist propaganda. By the time that the Char Accords rolled around, it was evident that he was desperate to undo the actions of his past and set himself up as a new man in the eyes of the public.

      The Nick York Times is a topic for its own Printhouse article, but must be mentioned here. Started by Nick while v-imprisoned under the Jagcord Regime, it was his series of plaintext articles on Discordian news, culture, and the NoahCoin economy. It grew in popularity, eventually having its own v-bot command (v-news) and a series of writers. It also spawned the widely acclaimed “wa wa wee wa” strip series by Bambino. A true testament to the free time many had under lockdown, publishing nearly daily editions for multiple weeks.

      “Like any journalist publication, it was both loved and hated. I like to think we did a lot of good work in those days. We brought people news that mattered to them as it happened, just barely keeping ahead of the daily grind required to run a paper. I’m proud to say we had quite the diversity of columnists, and I was just happy to see people expressing themselves in the art of writing. Of course, like any paper, we had a political leaning...” – Nick, Editor-in-Chief of the Nick York Times

      10. ENJOY!

      Suspiciously, this 10th Accord was absent in the Nick York Times version printed the same day.


      The Aftermath

      Not even 24 hours had passed before Nick, the newly appointed Sheriff under Char, v-transferred Bambino enough NoahCoins to make him the new Chancellor.

      The Char Accords had only just begun their implementation before a Caesarean betrayal shot Char back down to nothing. He all but removed himself from the political sphere of the server afterwards.


      A Snapshot in Time

      This was only the tip of the iceberg. Not mentioned here are the v-lotteries, v-mines closing due to auto-miners, the v-duels (and the infamous PANSHOT! bug), the v-slots odds update controversy, v-dawg (the server pet), v-prison break by suicide technique, the earth being mined dry, and of course, The Nat Job.

      Of all these, The Char Accords remain one of the most intriguing relics to survive the Discordian Bot era. Scholars today still debate on the cultural impact of the Accords and what may have happened if they fully went into effect.

      “It would have been a utopia if it happened.” – Char

      The server itself persisted for another two months, with countless unrecorded political upheavals, purges, and revolutions. V-bot continued to be upgraded, until version 2.8 [THE LAST COMETH], which ironically finally re-implemented the Twitter Markov chains that the original v-bot was known for.

      On March 11th, 2021, by collective user action, all NoahCoins were v-incinerate’d. This fulfilled the prerequisite conditions for v-killswitch. The killswitch was activated. The server logs were dumped and Verrelli Bot kicked all users, forever fossilizing the server in 2021.

      All this is to say,

      We don’t have roles or bots in our Discord servers anymore.



      Everybody had their hands out, Everything was for the taking, Now it’s all over.

      Stay frosty, Noah


      Thanks to Nick, Jag, Char, and Alex for all the commentary. And special thanks to Kaitlyn for the proofread and revisions.


      ¹ The Lenovo gaming laptop which was running 24/7 on a wall socket to host the bot

      ² “I’m not ashamed to say it: back in my day, in my youth before Kaitcord, I was a notorious crop thief. I would monitor my Discord notifications for others v-farming, and would set a timer on my phone to remind me when their crops were ready for harvest. I would swoop in and rob them blind. It wasn’t an honest living, but a girl’s gotta eat.” – Kaitlyn, The Last Supreme Chancellor before Fossilization

       
      Read more...

      from jaeg

      Coffee is awesome. I drink it everyday and it makes me feel super fucking good. I have about 3-5 cups a day, sometimes less if I get a bit too jittery and sometimes more if I'm feeling extra awesome. A couple of friends who will remain nameless keep ‘detoxing’ from coffee every so often and I struggle to understand why they do this. While we were hanging out I may have been a tad schizophrenic but I believed I heard them say things along the lines that it isn’t good for you. Or that being dependent on coffee is a no no. To make sure I wasn’t schizophrenic I asked them about their coffee breaks.

      Q: Why do you 'detox' or take breaks from drinking coffee? A1: I've only done it twice, once during Lent when u are supposed to give up something and now because [redacted] is and its nice to do things with friends :3 A2: To avoid migraines from withdrawals, so I don't like to be too dependent on it because if I am drinking like three cups a day, but then i have a day where I don't drink around that amount it fucks me up.

      Strange.. It seems like being dependent on it and then manually taking it away for a week would just induce withdrawals without any benefits of detoxing for a prolonged period of time, yet this is what A2 chooses to do from time to time. A1… well A1 is a troller.

      Is my argument disingenuous? Probably. I did what any titan of academia would do. I googled “is coffee bad for you?” This is what I found:

      “High intake of boiled, unfiltered coffee has been associated with mild increase in cholesterol levels. The bottom line? Your coffee habit is probably fine and may even have some benefits. But if you have side effects from coffee, such as heartburn, nervousness or insomnia, consider cutting back.” – Mayo Clinic (First google result obviously)

      “Regular coffee consumption may reduce your risk for certain health conditions, including diabetes, stroke, depression, cardiovascular disease, and even some types of cancer. However, having too much caffeine can cause you to be jittery and anxious and make it difficult to sleep at night.” – Verywellhealth.com (random ass stupid health site idk?)

      ““The overall evidence has been pretty convincing that coffee has been more healthful than harmful in terms of health outcomes,” said Frank Hu, chair of the Department of Nutrition at Harvard T.H. Chan School of Public Health, in an April 5, 2021, article in Discover. “For most people, moderate coffee consumption can be incorporated into a healthy diet.” Hu said that moderate coffee intake—about 2–5 cups a day—is linked to a lower likelihood of type 2 diabetes, heart disease, liver and endometrial cancers, Parkinson’s disease, and depression. It’s even possible that people who drink coffee can reduce their risk of early death. – Harvard mfer Frank Hu (Harvard Idk man whatever)

      Do I actually have a real point here? Not really. That being said, I want to say that coffee is delicious and lovely. I think we all should be drinking many cups a day. As for A2 if they are really getting migraines or having panic attacks then they should stop and I should stop trolling them. However, to prepare for a rare time where no caffeine would be readily available to you is silly. If you have a day where you don’t drink your normal amount of coffee then that’s unfortunately a skill issue and you deserve to suffer. If you are randomly detoxing from coffee for a week in preparation for a caffeine doomsday then you also deserve to suffer. I guess I do have a point.

      You deserve to suffer.

       
      Read more...

      from Alex Black

      I've gone through many stages of “pro wrestling” enjoyment, starting at genuine “wow this is really real and cool” to “nahh this is fake and dumb” to now appreciating it as a niche performance art and trying to understand it on a technical level. With iconic characters throughout history, professional wrestling has become a generational pastime, with both participation and enjoyment passed down through families.

      Originating in the era of carnies during the late 1800s and adapted from Greco-Roman wrestling, the “kayfabe” or “worked” art of wrestling was quickly popularized in the 1920s, with the first “Golden Era” of wrestling emerging in the late 40's. The first wrestling “celebrity” to be known nationwide would be “Gorgeous George”, known for his flamboyant attire, he was an early predecessor to characters like “Mr Wonderful” Paul Orndorff and “The Nature Boy” Ric Flair.

      Mostly involving grappling and various holds, early wrestling, aided by the lacking technology, allows the performers to cover the face or mouth and communicate with the “referee” and their opponent on what to do next. This is now referred to as “calling a match” or “calling spots”. With any performance art, time only allows for more interpretation and adaptation of the industry, creating flashier showmanship and larger events following its inception. In the era of technology, camera cuts are utilized to maintain that charade.

      WWE has become synonymous with pro wrestling, often used as a replacement for pro wrestling (think UFC for MMA). Before the corporate entity, pro wrestling was separated into territories. In the late 1940s, during this first golden era, the “National Wrestling Alliance” was formed (and exists to this day). Often just called the “NWA” for short, they established a “World Champion” agreed upon by the various promoters, who would then travel to the various territories and face off against the biggest draws in those places. Because of this, many promoters would want their star to stay local to create the most profit for them, leading to many promoters separating from the NWA. One of these promoters, Vince McMahon Sr. would create the WWWF, and after selling it to his son, Vince McMahon Jr. would transition it into WWF and purchase many of the territories by the late 80s, and is now known worldwide as WWE.

      With the eminent takeover of cable television, Vince McMahon Jr. would “poach” the top stars in the failing territories. Now under one corporate umbrella, American professional wrestling was now mostly controlled by one supreme being, Vince McMahon. It would be under McMahon's guidance that characters such as Hulk Hogan and Macho Man Randy Savage became household names in the 80s and 90s, with the over the top, outlandish way of speaking becoming a staple of professional wrestling. There have been different iterations of the same characters or “gimmicks” throughout wrestling's existence, but for every gimmick that works and clicks with the fanbase, there are 10 that don't and fail. For every Hulk Hogan there is a “Shockmaster” and for every Undertaker there is “OZ”.

      The late 80's and early 90's were a breaking ground for new ideas, some good, some horrible, most racist, but at its very simplest, it was the era of ego. Everyone thinks they should get paid more and get more opportunity in the spotlight, and this was highlighted by the creation of “WCW”, backed by billionaire Ted Turner and TBS. With the WWF shifting to a revolutionary weekly program with the debut of “Monday Night RAW” in Jan. 1993, WCW would shift to this method in Sep. 1995 under the guidance of new VP Eric Bischoff, their debut episode of “Monday Night Nitro” was broadcasted from Minnesota <3. Shifting to a more reality tv based form of storytelling and utilizing the backing of billionaire Ted Turner, WCW Nitro would become the first real competitor to WWE and Monday Night RAW. This was the beginning of the “Monday Night Wars” and would go on to create some of the most iconic characters in its history.

      Top stars like Hulk Hogan and Ric Flair would revive their careers left lacking in the WWF, while homegrown characters like Sting and Goldberg would achieve their biggest success in the “new” WCW. Wrestlers who believed themselves to be misused or underutilized in WWF would “jump ship” to WCW to try and find better success, including Jeff Jarrett, Brett Hart, Mr. Perfect, and many, many, more. For almost 2 years straight WCW was beating the WWF, forcing McMahon and his cronies to think outside of the box. No more could they rely on the do good, boy scout, dynamic and opted for an edgier, more mature business model. Called the “Attitude Era”, characters like “The Rock” and “Stone Cold Steve Austin”, would become icons of the era but it would be WCW's “Mean” Mark Calloway that might be the biggest name in wrestling history, after he was hired by the WWF and turned into “The Undertaker”. While WCW headed downhill, The Undertaker became the biggest name in wrestling. Longevity became Calloway's biggest strength, wrestling well into the 2020's.

      Below is a small sample size of iconic characters who left WCW for WWF and became household names. WCW ————— WWF The Giant – The Big Show Eddie Guerrero – no name change Oz/Vinnie Vegas – Diesel (then back to WCW as Kevin Nash, and back to WWF as Kevin Nash) Damon Striker – Edge Cactus Jack – Mick Foley (Mankind, Cactus Jack, Dude Love) Chris Jericho – no name change Terra Ryzing – HHH “Stunning” Steve Austin – “Stone Cold” Steve Austin

      By 2000, the WWF had won the “Monday Night Wars” and WCW had gone bankrupt, with the blame game still being played today by various entitles (Hogan, Flair, Bischoff, Hart, and more) with many of its top stars already having left for McMahon's company. McMahon would purchase WCW and work it into a “kayfabe” storyline with his son and daughter, having WCW stars “invade” the WWF and attack their top stars.

      History would repeat itself in 2002, with the creation of “Total Nonstop Action” or TNA Wrestling under the NWA umbrella. Helmed by the previously mentioned Jeff Jarrett, TNA would become the next place where talent can go to achieve the success they think they deserve. Hogan would again become part of a WWF (now WWE) derivative, and TNA would repeat the same steps by WCW in hiring people from the competition. Wrestlers like Christian, Kurt Angle, The Dudley Boyz and Scott Steiner created a second wave of success in their careers, getting rehired by WWE down the line. Much like WCW, however, as the company began to go downhill in the 2010s, various stars in TNA (shortly rebranded as Impact Wrestling) were picked up by WWE and given a larger platform to perform.

      TNA ———– WWE Abyss- Chris Park (producer, joined 2019) Eli Drake – LA Knight (joined 2021) Rosita – Zelina Vega/Queen Zelina (joined 2017) AJ Styles – no name change (joined 2016) Bobby Roode – no name change (joined 2016) Samoa Joe – no name change (joined 2015) CM Punk – no name change (joined 2006, rejoined 2023)

      But now we reach the modern day. WWE is flourishing under billion dollar network deals. Although ideas change, some things always work. A Hulk Hogan becomes a John Cena, an Undertaker becomes Bray Wyatt, and the wheel keeps turning.

      The more things change, the more things stay the same, as they say. Another billionaire, another company, this time “All Elite Wrestling” or AEW. Founded by Tony Khan in 2019, AEW is the modern day WCW, offering big money to former WWE wrestlers and broadcasted on TBS and TNT. WCW had Nitro, AEW has Dynamite. WWE has Smackdown, AEW has Rampage. Helmed by Khan, AEW hired some of the top wrestlers on the independent wrestling scene, as well as the top “free agents” formerly with WWE. Starting out as the wrestling fanatic's alternative to WWE, AEW found quick success but has faltered, with wrestlers having creative control over their characters (nobody wants to look bad). The first wave of AEW wrestlers joining WWE has begun, with Jade Cargill, Hamilton, Ontario's own Ethan Page, and Brian Pillman Jr. now in WWE.

      More deeply embedded in pop culture than ever, its becoming increasingly interesting for me to attempt to navigate this niche section of “sports entertainment”, now viewing it through a creative lens, taking note of the quality of writing or storytelling within matches, the character arc, and overall presentation of it all. I long joke that it's “redneck Shakespeare” or a “stuntman's soap opera”, but in this current state I genuinely enjoy where pro wrestling is today.

      Thank you for sticking with me on this, I know its not something people are itching to read but if you made it this far, have a brew on me.

       
      Read more...

      from kaitlyn z.c.

      Thank you to the ever-lovely Elisa and Edna for inspiring me to write this ❤

      I'm writing this intro on Thursday August 1st — I just finished reading my 11th book of 2024. As I was walking to the Newmarket Public Library to return my book (go support your local library NOW), I couldn't help but feel a little burst of happiness and pride in my chest.

      In 2023, I set a personal goal on my StoryGraph account to read 12 books within the year — 1 book each month. Sounds easy, right? I finished 2023 with 10 books read, and I just barely made it to that 10th book.

      Now, a little over half way through 2024, and I've read more books than I read in the entirety of 2023. Lets go! Woohoo! What a return to form!

      Anywho, as I continue my goal to get back into regular reading, I've decided to share my thoughts on my reads with you — via the trusted format of the Reading Round-Up.

      So here we go!

      Reading Stats for January to June 2024

      • Total Books Read: 10
      • Reading Mediums: 9 physical books, 1 online
      • Books Owned vs. Borrowed: 6 books owned, 2 books borrowed from friends, 1 book borrowed from library, 1 book read for free online

      Stories of Your Life and Others by Ted Chiang

      Stories of Your Life and Others

      Reading Medium: Physical

      Owned vs. Borrowed: Owned

      Synopsis: What if men built a tower from Earth to Heaven-and broke through to Heaven's other side? What if we discovered that the fundamentals of mathematics were arbitrary and inconsistent? What if there were a science of naming things that calls life into being from inanimate matter? What if exposure to an alien language forever changed our perception of time? What if all the beliefs of fundamentalist Christianity were literally true, and the sight of sinners being swallowed into fiery pits were a routine event on city streets? These are the kinds of outrageous questions posed by the stories of Ted Chiang. Stories of your life... and others.

      My Thoughts: Recommended to me by Noah and Elisa, I was looking forward to reading this collection of sci-fi short stories. I hadn't read much sci-fi (readers will know that I have a bit of a reputation of being a serial romance reader), so this felt like a good introduction into the genre. The fact that it was a collection of short stories was also appealing to me at the time, as I was struggling to get out of a bad reading slump.

      I have to say, I am definitely interested in reading more science fiction now. Each one of Ted Chiang’s short stories is wonderfully unique, tonally diverse, and moving in different ways. I’m honestly impressed that Ted Chiang wrote all of these short stories, since each one feels like it could have been penned by different authors with different writing styles, beliefs, interests, etc.

      Here are my quick thoughts on each short story:

      Tower of Babylon (4 / 5) — An incredibly well-written retelling of the construction and journey up the tower of Babylon. I thoroughly enjoyed the writing style and the voice of the main character. Such a great introduction into Ted Chiang’s work.

      Understand (5 / 5) — This story reminded me of Flowers for Algernon in the best way (one of the few sci-fi stories I've read before, I love it). I’m a sucker for stories about a main character who is gaining superhuman levels of intelligence and losing themselves mentally as a result, and the writing style reflects that. Definitely one of my favourite stories in this collection.

      Division by Zero (2 / 5) — Found myself kind of skimming through this one. Didn't find it too interesting or memorable.

      Story of Your Life (4 / 5) — The story that inspired the film Arrival ! Reading this made me appreciate how well the film captured just how mind-bendy the whole concept is. Very well executed, very well-written.

      Seventy-Two Letters (5 / 5) — LOVED the Victorian-England-but-steampunk setting in this story! Also loved the concept of golems and how they would be used in this alternate universe. Great pacing and tension throughout the plot, I was engaged throughout the entire story. Definitely one of my favourite stories in this collection.

      The Evolution of Human Science (2 / 5) — Extremely short and I'm not gonna lie, I barely remember what it was about. Not very interesting or memorable, especially considering that the story before and the story after it were such bangers.

      Hell Is The Absence of God (5 / 5) — THIS BANGER. My #1 favourite story in this collection! WOW. Set in a world where God, Heaven, Hell, souls, miracles, and angels actually exist / are universally known, this story explores how actually devastating this world would be. Imagine, you could see a loved one suffering in hell if you look down at the right spot?! You could know people who have lost their eyes (or worse...) due to accidentally seeing an angel?! Insanity. The collateral damage described during an angel's visitation, wow... So incredibly well-written — it was one of those stories that are so good, you lose yourself a little bit when it's over. If you want to read any of Ted Chiang's works or just dip your toe into sci-fi short stories, I cannot recommend Hell Is The Absence of God enough.

      Liking What You See: A Documentary (4 / 5) — I liked the documentary script format of this story, as well as its exploration into themes of society's (kind of fucked up) relationship with physical beauty and our perception of others/ourselves. A very good story, but a little underwhelming to be the last story in the collection.

      My personal ranking of Ted Chiang's short stories in Stories of Your Life and Others :

      1. Hell Is The Absence of God
      2. Understand
      3. Seventy-Two Letters
      4. Tower of Babylon
      5. Story of Your Life
      6. Liking What You See: A Documentary
      7. Division by Zero
      8. The Evolution of Human Science

      My (Overall) Rating: 4 / 5

      You, Again by Kate Goldbeck

      You, Again

      Reading Medium: Physical

      Owned vs. Borrowed: Owned

      Synopsis: When Ari and Josh first meet, the wrong kind of sparks fly. They hate each other. Instantly.

      A free-spirited, struggling comedian who likes to keep things casual, Ari sublets, takes gigs, and she never sleeps over after hooking up. Born-and-bred Manhattanite Josh has ambitious plans: Take the culinary world by storm, find The One, and make her breakfast in his spotless kitchen. They have absolutely nothing in common... except that they happen to be sleeping with the same woman.

      Ari and Josh never expect their paths to cross again. But years later, as they're both reeling from ego-bruising breakups, a chance encounter leads to a surprising connection: friendship. Turns out, spending time with your former nemesis is fun when you're too sad to hate each other — and too sad for hate sex.

      As friends-without-benefits, they find comfort in late-night Netflix binges, swiping through each other's online dating profiles, and bickering across boroughs. It's better than romance. Until one night, the unspoken boundaries of their platonic relationship begin to blur...

      My Thoughts: Before I go on, yes... This book was originally Reylo fanfiction... Shut up! I didn't know until I finished the book, leave me alone! Anyways...

      I will admit that I did tear through this book. I'm a fan of romances that take place over the span of years, which this book does quite well. The premise / introduction was hilarious and very “classic rom-com” — they meet because they're both sleeping with the same woman?! C'mon, that's funny.

      I really enjoyed how Ari and Josh's friendship was developed, and how it slowly became romantic. It felt realistic, or as realistic as a rom-com could be. I loved the way New York City was described throughout the story as well: Obviously romanticized, I know, but it felt cozy — like the New York City we know and love from You've Got Mail (1998) and When Harry Met Sally (1989).

      The sex scenes... I admit, they were hot as hell. They also felt earned, the story didn't rush into them, which I appreciate.

      The third act conflict that happens in every romance — you know, the one that forces them to separate for a bit before they inevitably get back together — didn't feel completely forced either. It made sense, it sounded like something I would hear a friend go through. The only thing that annoyed me was the main girl Ari's logic / reasoning towards the end of the book. Ari's character was kind of all over the place, but especially towards the end. The ending made me roll my eyes a bit, but it was still satisfactory enough that it didn't ruin the whole story for me. However, for that kinda awkward ending and Ari's character being a bit annoying towards the end, I did remove a star from my final rating.

      My Rating: 4 / 5

      Roaming by Jillian Tamaki & Mariko Tamaki

      Roaming

      Reading Medium: Physical

      Owned vs. Borrowed: Borrowed from my friend Nick

      Synopsis: Spring break, 2009. High school best friends Zoe and Dani are now freshman college students, meeting in a place they’ve wanted to visit forever: New York City. Tagging along is Dani’s classmate Fiona, a mercurial art student with an opinion on everything. Together, the three cram in as much of the city as possible, gleefully falling into tourist traps, pondering so-called great works of art, sidestepping creeps, and eating lots and lots of pizza (folded in half, of course).

      My Thoughts: WOW this graphic novel has such beautiful artwork! Such simplistic yet gorgeous colouring, I loved the orange and purple tones that were used throughout the book. There were full pages that I would just stare at without reading anything, just admiring the artwork — the sign of a high quality graphic novel.

      Plot-wise, I enjoyed this story. It was a sweet, slice-of-life story about 3 friends (well, 2 friends and some bitch, more on that in a second) exploring New York City for the first time together. I loved the way New York City was depicted as well, it felt as grand and wonderful (and a little bit seedy but still cool) as these sweet characters were seeing it.

      The third character in this story, Fiona, caused the majority of the conflict in this book. At the end of the book, I guess I was supposed to empathize with her... but SIKE, I hated this bitch! You want me to feel bad for her? She was so horrible to Zoe and Dani, and nearly ruined their trip! Fuck her!

      I guess this book did a good job at making me feel defensive for Zoe and Dani, so kudos to the authors there. However, if you were trying to make me feel bad for this Fiona bitch — valiant effort, but not this time.

      My Rating: 3.5 / 5

      Ducks: Two Years in the Oil Sands by Kate Beaton

      Ducks

      Reading Medium: Physical

      Owned vs. Borrowed: Borrowed from my friend Nick

      Synopsis: Before there was Kate Beaton, New York Times bestselling cartoonist of Hark! A Vagrant, there was Katie Beaton of the Cape Breton Beatons, specifically Mabou — a tight-knit seaside community where the lobster is as abundant as beaches, fiddles, and Gaelic folk songs. With the singular goal of paying off her student loans, Katie heads out west to take advantage of Alberta’s oil rush — part of the long tradition of East Coasters who seek gainful employment elsewhere when they can’t find it in the homeland they love so much. Katie encounters the harsh reality of life in the oil sands, where trauma is an everyday occurrence yet is never discussed.

      My Thoughts: Wow. Wow wow wow wow wow. If I could only recommend one graphic novel to everyone, it would be this one. Wow.

      Ducks is a phenomenal autobiography by Kate Beaton. Her art style is remarkable, striking a wonderful balance between coyly simplistic and stunningly detailed. She really did capture the Albertan landscape so well.

      Cut off from the rest of civilization, Beaton depicts oil sands workers as an insular community — lonely, part of a misogynistic boys' club, often depressed but unable/unwilling to talk about mental health. Beaton showcases this world in which loneliness drives many men to behaviours they wouldn't even consider in their “real lives” back at home. Harassment and sexual assault are either considered normal or brushed under the rug while working at the oil sands — trigger warning there for potential readers.

      Beaton worked at the oil sands for two years, and she makes the scars that the experience left on her clear. Her artwork being in all shades of grey really adds to the environment's dreary feel.

      Beaton also touches on the environmental impact of the oil sands, but her focus is primarily on the human impact of living in such extreme isolation and being expendable... all to make a decent wage.

      The ending really left its mark on me — it's wonderfully done. Highly, highly recommend.

      My Rating: 5 / 5

      Hark! A Vagrant by Kate Beaton

      Hark A Vagrant

      Reading Medium: Physical

      Owned vs. Borrowed: Owned

      Synopsis: Hark! A Vagrant is an uproarious romp through history and literature seen through the sharp, contemporary lens of New Yorker cartoonist and comics sensation Kate Beaton. No era or tome emerges unscathed as Beaton rightly skewers the Western world’s revolutionaries, leaders, sycophants, and suffragists while equally honing her wit on the hapless heroes, heroines, and villains of the best-loved fiction.

      My Thoughts: I needed something a little bit more lighthearted after Ducks, and I was very curious about Kate Beaton's past work, so I picked up this anthology of her funny comics!

      Kate Beaton has great comedic timing, it's seriously an impressive skill to have as a comics artist. I deeply admire her art style — it's so distinct, it's loose and light but she is such a master at facial expressions.

      This was a quick, lighthearted read — while a couple of the comics fell a bit flat for me, it was overall a fun and funny collection.

      My Rating: 3.5 / 5

      Dune by Frank Herbert

      Dune

      This review has been removed in protest.

      Dune Messiah by Frank Herbert

      Dune Messiah

      This review has been removed in protest.

      Funny Story by Emily Henry

      Funny Story

      Reading Medium: Physical

      Owned vs. Borrowed: Owned

      Synopsis: Daphne always loved the way her fiancé Peter told their story. How they met (on a blustery day), fell in love (over an errant hat), and moved back to his lakeside hometown to begin their life together. He really was good at telling it... Right up until the moment he realized he was actually in love with his childhood best friend Petra.

      Which is how Daphne begins her new story: Stranded in beautiful Waning Bay, Michigan, without friends or family but with a dream job as a children’s librarian (that barely pays the bills), and proposing to be roommates with the only person who could possibly understand her predicament: Petra’s ex, Miles Nowak.

      Scruffy and chaotic — with a penchant for taking solace in the sounds of heart break love ballads — Miles is exactly the opposite of practical, buttoned up Daphne, whose coworkers know so little about her they have a running bet that she’s either FBI or in witness protection. The roommates mainly avoid one another, until one day, while drowning their sorrows, they form a tenuous friendship and a plan. If said plan also involves posting deliberately misleading photos of their summer adventures together, well, who could blame them?

      But it’s all just for show, of course, because there’s no way Daphne would actually start her new chapter by falling in love with her ex-fiancé’s new fiancée’s ex... Right?

      My Thoughts: Oh, Emily Henry, the woman that you are. Readers may know (and if you don't yet, take note) — Emily Henry is my all-time favourite romance writer. Everything she touches turns to romance gold. I cannot recommend her books enough.

      I adored Funny Story — I read it all within 48 hours. Each and every character felt real and unique, she has such a talent for writing realistic yet lovable characters.

      The plot was fun and well-paced, the main couple's chemistry was great (I had a crush on Miles too), the sex scenes were hot yet sweet, the environment / town descriptions were so cozy, I just loved everything about this book. Definitely another comfort read that I am very happy to add to the Emily Henry section of my bookshelf.

      In case you are curious, my current personal ranking for Emily Henry's books are:

      (Note, these are all very close in ranking and are all 5 / 5 for me)

      1. People We Meet On Vacation
      2. Book Lovers
      3. Beach Read
      4. Funny Story
      5. Happy Place

      My Rating: 5 / 5

      Emily Wilde's Encyclopaedia of Faeries by Heather Fawcett

      Emily Wilde

      Reading Medium: Physical

      Owned vs. Borrowed: Owned

      Synopsis: Cambridge professor Emily Wilde is good at many things: She is the foremost expert on the study of faeries. She is a genius scholar and a meticulous researcher who is writing the world's first encyclopaedia of faerie lore. But Emily Wilde is not good at people. She could never make small talk at a party — or even get invited to one. And she prefers the company of her books, her dog, Shadow, and the Fair Folk to other people.

      So when she arrives in the hardscrabble village of Hrafnsvik, Emily has no intention of befriending the gruff townsfolk. Nor does she care to spend time with another new arrival: her dashing and insufferably handsome academic rival Wendell Bambleby, who manages to charm the townsfolk, get in the middle of Emily's research, and utterly confound and frustrate her.

      But as Emily gets closer and closer to uncovering the secrets of the Hidden Ones — the most elusive of all faeries — lurking in the shadowy forest outside the town, she also finds herself on the trail of another mystery: Who is Wendell Bambleby, and what does he really want? To find the answer, she'll have to unlock the greatest mystery of all — her own heart.

      My Thoughts: Oh, how I adored this book! Emily Wilde masterfully toes the line between cozy fantasy and dark fantasy — it's wonderful. Heather Fawcett's writing style is addictive, the chosen formatting of journal entries that fall somewhere between academic and personal was so much fun.

      The world-building was immaculate. I loved delving into the extensive lore of the faeries, as well as meeting the townsfolk alongside Emily Wilde.

      I really loved Emily Wilde and Wendell Bambleby as characters as well — I laughed out loud whenever Wendell “stole Emily's journal to write his own entries” and we got his perspective. It was so clever and fun. I was charmed by Wendell, but I was so impressed by Emily. It is rare to find a character in a fantasy world that relies on her wits rather than her strength to get out of a tricky situation. Seeing Emily Wilde outsmart her way out of faerie trickery, rather than waving a sword around and punching faeries in the face, was incredibly satisfying. It also made so much sense for her character — of course an expert on faeries would be this remarkably clever!

      I loved this book. I highly recommend if you are looking for a good fantasy read. Stay tuned to hear my thoughts on the sequel, Emily Wilde's Map of the Otherlands, in my next Reading Round-Up!

      My Rating: 5 / 5

      Delicious in Dungeon (AKA Dungeon Meshi) by Ryoko Kui

      Delicious in Dungeon

      Reading Medium: Online via MangaDex

      Owned vs. Borrowed: Read for free online

      Synopsis: When young adventurer Laios and his company are attacked and soundly thrashed by a dragon deep in a dungeon, the party loses all its money and provisions... and a member! They're eager to go back and save her, but there is just one problem: If they set out with no food or coin to speak of, they're sure to starve on the way! But Laios comes up with a brilliant idea: “Let's eat the monsters!” Slimes, basilisks, and even dragons... None are safe from the appetites of these dungeon-crawling gourmands!

      My Thoughts: Wow! Dungeon Meshi!

      Honestly, I loved this manga. I haven't read a manga this good since Fullmetal Alchemist — which is high praise, considering that Fullmetal Alchemist is one of my all-time favourite stories in general.

      I will never get over Ryoko Kui's artistic skills and character design, because WOW. No one's out here doing character design like Ryoko Kui. She has the opposite of Same Face Syndrome — every single character had such a refreshing, unique design. Even down to their noses, no character had the same nose! As an artist, I am on my knees in awe over her character design.

      On top of her character design, her artwork throughout the manga was just stunning. Some of my favourite panels were in the Griffin chapter — there were so many times I would just stop reading and zoom into random details in her artwork to admire them. She's gotta be one of the best manga/comics artists out there right now, wow.

      In terms of plot, I thoroughly enjoyed Dungeon Meshi. I fell in love with each character — especially Marcille, who is so literally me it's insane. The plot was so unique, the world-building was phenomenal, the ending had me smiling so much it hurt.

      If you're looking to get into manga, or if you're looking for your next manga to read, I highly recommend Delicious in Dungeon.

      My Rating: 5 / 5

      This has been Kaitlyn's first Reading Round-Up (yay!), signing off!

       
      Read more...

      from Boulos Bones

      The year is 200X. Me and my best bud were hanging out at a kids' entertainment area in the mall. Equipped with an indoor jungle gym, a tiny zip line, a little fake treehouse I used to chill and drink orange fanta in, probably a ball pit, and plenty of other things that could keep a kid occupied for hours while their parents go shopping. This is not our first time here, and as we waltz onto familiar ground my friend goes ahead of me and I agree to meet up with him later. An hour passes... I am nowhere to be found. My friend, concerned by my disappearance, goes searching. At the computer section, he finds me, glued to my screen. I'm enthralled by this game that lets you play as Kirby and beat up Mario and other Nintendo characters that I did not recognize. I had to be proverbially dragged away from the computer so we could hang out like normal kids.

      Much later in life did I learn that this game was Super Smash Bros. for the Nintendo 64.

      The year is 2008, my brothers invite some friends over to play on our Nintendo Wii. They bring this game I've never heard of before, apparently it just came out. I got to play as Kirby and beat up Mario and Link and some more characters I did not recognize. I was addicted, and fortunately, we decided to get the game for ourselves too. I spent many many hours appreciating every nook and cranny of that game, even though I sucked at it.

      This game was Super Smash Bros Brawl for the Nintendo Wii.

      The year is 2012, my middle brother installs this mod for Brawl on our Wii. He says it's to make the game more balanced. I didn't really get it but it looked cool with the purple menus. I think I am better at this game than I was before, but I still consistently lose to my brother when we fight each other. Despite this I am enthralled, plus it has Mewtwo now!!

      This was Project M.

      The year is 2014. I've somehow stumbled upon a livestream of a Super Smash Bros. tournament. Names get thrown around I don't recognize. Two players approach the camera and begin playing. I have played Project M before but I've never seen it being played like this. The skill on display by these players was nothing short of bewildering. Even though I didn't understand what was going on half the time I couldn't help but watch the spectacle.

      This was Apex 2014.

      The year is 2015. I now own a 3ds with Smash 4 on it, I am going to put in 200 hours just fighting the level 9 CPU. From Apex I found another tournament, the biggest fighting game tournament in the world. The grand stage for Smash Bros. but also many other more traditional fighting games. I see the final frontier of fighting games around the world, and I am amazed. I was familiar with the genre. I have been exposed to Street Fighter Ex plus Alpha, Street Fighter 4, and Marvel vs Capcom 3 on our home consoles by now. However, to me, these games were impenetrably complicated, so I just stuck to smash. “I could never learn those games,” I thought to myself.

      That tournament... was EVO.

      The year is 2016. I continue to play Smash 4 and dabble in Smash Bros. Melee. I found a website that lets me play Melee online, but I live in the UAE so games are scarce. Watching Evo becomes a yearly ritual. I wake up at 2 am to catch the Smash grand finals. It's lonely, I silently cheer at my computer desk while my family sleeps. I move back to Canada. While browsing the Smash Bros. forums I find a tournament being held in Kingston. I enter the tournament (won one tho btw) and begin entering weekly tournaments held at Queen's. They have other fighting games there too.

      “I could never learn those games, but they look really cool,” I think to myself.

      The year is 2017. I play mainly Melee now. I continue to attend the Queen's weeklies. I watch analysis videos on fighting games. They look awesome. I pick up another game called Rivals of Aether, it's a lot like Melee, it's pretty fun. I continue to watch Evo. At this point I try to watch all the games being played at Evo, I find them all very engaging.

      “I wish I could play those games, but I have nobody to learn it with,” I think to myself.

      The year is 2018. I enter University. I managed to convince my floormate to try and learn Dragon Ball FighterZ with me. We played a few games, it didn't stick. I prioritize doing my schoolwork and socializing with my new friends, so I don't have time to enter the weeklies anymore.

      Years pass... I continue to watch Evo from the sidelines and dabble in Melee.

      I started fencing too, my first thought is how similar it is to fighting games.

      The year is 2024. I have made many friends from my university days. I could even talk to some of them about fighting games. One of them in particular is heavily invested in Street Fighter 3: 3rd Strike. This year, Evo announces 3rd Strike as part of its main lineup, a once in a lifetime opportunity. He says he will go no matter what, and a group of us decide to join him. I have been watching for years now, what better chance to go than now? Since we're going, why not enter the tournament too? The unrealized dream of playing a fighting game begins to materialize in front of my very eyes. We begin training, we all suck equally.

      Months pass, we travel to New York to compete in a smaller tournament. We meet our friend's mentor, who remarks that we have come far, I'm flattered. The next day we fight, and I win a game! We learn many things, and witness levels of skill we could never imagine. We talk to some of the people, one of them tells us “It's good to have a rival”. I agree.

      We return home, that phrase echoing in my mind, and continue training. Every inch I gain over my rival is returned twofold. A silent arms race between two opponents. The day of competition looms over us all. With our weapons stockpiled and our blades sharp, we embark on the journey to the world stage.

      Then our flight got canceled. That dream, once so clear now disintegrating away like sand through my fingers. We rebook our flights, but they are too late for us to compete. I try not to cry, I don't know if I succeeded.

      I wake at 3 am, beaten and broken by the emotional lashes of the previous 12 hours. I can't sleep, so I look for a solution. There is a flight that will take me there on time, at a pretty penny. I reevaluate some financial decisions and draw out the money necessary to make it, I can't let it end here.

      Despite it all, I make it, and enter the tournament. I defeat my first opponent, and feel confident. Then I lose to the second. “All that money just to do the same as NYC?” I fear. I cannot let it end here. I approach my third opponent, one more loss and it's lights out. I defeat him. “At least it will be an improvement” I tell myself. Then I beat my next opponent, and the next. My blade is sharp, forged in the flames of a 6 month rivalry. I approach my next opponent, and find his claws sharper...

      To the world, I may have lost. But to myself, I have won. Not the whole tournament, but my dream. All these years of imagining what it's like, of wishing to be at Evo myself, of hoping to break the barrier that faced me every other time I tried. There I was, at Evo, having beaten 4 other people, in an actual real fighting game that is not Smash.

      I stand at the ridge of this cold mountain and look at the view. My shoes dusty with the many steps of my journey. The icy peak barely visible through the clouds, but the view at this height is unlike anything I thought it would be. The vast lush valley sits below me and I admire how far I have come. I could continue to climb, and maybe I will, but those extra steps will be accompanied by the unending thought. “I did it...

      ...I've finally played a fighting game.”

       
      Read more...

      from e-den

      Bit of a shorter review this quarter 😊

      Stats breakdown from Apr – June 2024

      • Total books read: ~4
      • Reading mediums: all audiobooks
      • Time spent reading: 24.5 hours

      Books Read + Reviews

      Dune by Frank Herbert Medium: audiobook

      Truthfully, my review of Dune as a whole is not much different than what I wrote for Book 1. I really enjoyed reading it, as well as the weekly discussions and memes it spawned. I can tell that this is the type of book where you can get something new out of it each time you read, so I may revisit it in time. All that to say, the book was very unique, clever, and well done in my opinion. Looking forward to reading Dune Messiah next.

      Everything I know About Love by Dolly Alderton Medium: Audiobook

      I added this book to my TBR after hearing Dolly Alderton’s dinner party mentorship to Jessica Pan in the book I read last quarter. This book felt like a grown up version of when you were a kid and read those Chicken Soup for the Soul books. The book is a collection of vignettes from Alderton’s twenties that made me laugh, cry, and brought me comfort. Alderton tells the stories of her youth in a way I found quite riveting, personally nostalgic, and inspiring at times. She also occasionally peppers in recipes or other comedic bits that made this feel like I was reading through her life's scrapbook. The book has been adapted as a TV series and I think it lends itself well to that given how I felt like I had followed her and her friends through multiple seasons. Looking forward to watching it in the future. I also liked the transition from girlhood to womanhood and themes of friendship. Someone summed this up as a cross between Bridget Jones’ Diary, Sex and The City, and a self-help book and I'd say that's pretty dead on. Not groundbreaking but enjoyable and good for the soul.

      Also if you saw that cute trend going around sometime ago to the audio of “nearly everything I know about love I learnt in my long-term friendships with women”, it comes from this author.

      Cultish: The Language of Fanaticism by Amanda Montell Medium: Audiobook

      Amanda Montell is both an author and a linguist who uses the latter as the lens in which she views the topics she addresses in her books. I read her first book “Wordsl*t: A Feminist Guide to Talking Back the English Language” back in 2021 and have taken a lot of learnings from it to this day. I highly recommend everyone read it at some point because what she discusses and uncovers from meta-analysis is not quite what you would expect (especially following the girlboss era).

      That said, I was curious about her second book – Cultish. The title of the book is also what she has named the language that surrounds cults and other fanatical groups (kinda like a portmanteau of Cult + English). This book is paced more like a six part video essay and makes its way through “traditional” cults (Scientology, Jonestown, etc), MLMs, fitness societies (cross-fit, peleton, etc), and more. Like many others, I've always been curious about what drives people to join cults, how leaders amass their followings, and if a certain type of person is more likely to end up in a cult. Montell also touches on some of the research on this (while infusing her linguistics lens) and pulls at the threads of all these fanatical groups (big or small) to weave an engaging and interesting tapestry of this culture. I really enjoyed listening to the audiobook and it's given me a lot to think about since reading. This has been my favourite non-fiction read of 2024 thus far.

      Dune Messiah by Frank Herbert Medium: Audiobook

      I blitzed this as my hold finally came in after the bookclub had finished this. While I appreciated the brevity of this one, I unfortunately didn't like it as much as Dune. But maybe that's to be expected. Aside from that, I think my sentiments echo those of other bookclub members (or at least the ones I heard when Saturday coffee was hosted in my backyard).

      Thanks for reading if you got this far!

      Q2 2024 reads

       
      Read more...

      from TeamDman

      Introduction

      Super Factory Manager (SFM) is a Minecraft mod which introduces a programming language for logistical tasks. The mod enables users to move items, fluids, and other resources between inventories with high precision and throughput.

      You place cables in the world to connect inventories, followed by a manager block that contains the disk which contains the program.

      Caption: A demonstration of the mod moving items between chests
      sfm demo.gif

      Caption: The in-game code editor
      code.png

      Caption: SFM program

      NAME "A simple program"
      
      EVERY 20 TICKS DO
          -- on their own, input statements do nothing
          -- there is no item buffer
          INPUT FROM a
      
          -- all the magic happens here
          OUTPUT TO b
      END
      

      There exists a bug in the mod where the manager suddently 'stops working'.

      My leading hypothesis is that my caching logic is at fault. Unfortunately, all attempts at reproducing the bug have failed. The only indicators of its existence are the multitudes of people joining my Discord server to ask why their stuff isn't working. Not good.

      Learning programming is frustrating enough without having to consider that you're not the one doing something wrong.

      Thus, addressing the bug in the is of the highest priority.

      The Update to the Mod

      Included in the wave of tiny improvements in the latest latest version of the mod (4.16.0), one feature stands above the others: the logging.

      Traditionally, Minecraft has a console that displays the logs from the game, which mods can contribute to. Usually when a mod is being uppity, the logs are the best source of information.

      Caption: logs from Minecraft when launched using PrismMC. The game has safely exited.
      logs.png

      Things get complicated when playing on a server. Non-admin players cannot see the logs of the server. How am I to get debug information from my users without road-blocks like needing admin assistance?

      Thus, each manager block now has its own logging implementation that synchronizes to clients. Players can see the logs regarding their programs, isolated from the concerns of the normal logs of the game.

      Caption: class definitions used in my logging

      // My thing
      public record TranslatableLogEvent(
          Level level, // Log level, e.g. INFO, WARN, ERROR
          Instant instant, // Time of the event
          TranslatableContents contents
      )
      
      // From the base game
      public class TranslatableContents implements ComponentContents {
         private final String key;
         private final Object[] args;
      }
      

      Vanilla Minecraft has helpfully established TranslatableComponent for communicating stuff from the server to the client to be displayed in the user's language of choice. By reusing this class, we easily get the benefits of the game's localization system for user-facing logs.

      Caption: an example of using a TranslatableComponent

      ConfirmScreen confirmscreen = new ConfirmScreen(
          this::confirmResult,
          Component.translatable("deathScreen.quit.confirm"),
          CommonComponents.EMPTY,
          Component.translatable("deathScreen.titleScreen"),
          Component.translatable("deathScreen.respawn")
      );
      

      Game Versions

      The process of releasing updates for Super Factory Manager is complicated by the fact that the mod supports multiple versions of Minecraft:

      • 1.19.2
      • 1.19.4
      • 1.20
      • 1.20.1
      • 1.20.2
      • 1.20.3
      • 1.20.4

      Changes between versions can be substantial: GUI and capability reworks, Minecraft Forge drama leading to the release of NeoForge, and other mods I interact with not being available on all the versions I support.

      To accommodate the slight variations in my code between the versions, I have opted to create a git branch for each version of the game that is supported.

      When I work on the mod, I work on the oldest branch (1.19.2) until satisfaction, then I merge the changes to the next branch, going up the version pairs until the latest version has all the changes.

      merge
      1.19.2 => 1.19.4
      1.19.4 => 1.20
      1.20 => 1.20.1
      etc.

      Sometimes, methods I depend on are pulled out from under me, or are made obsolete in these version upgrades.

      Caption: my old code

      private Button.OnTooltip buildTooltip(LocalizationEntry entry) {
      	return (btn, pose, mx, my) -> renderTooltip(
      			pose,
      			font.split(
      					entry.getComponent(),
      					Math.max(
      							width
      							/ 2
      							- 43,
      							170
      					)
      			),
      			mx,
      			my
      	);
      }
      

      Caption: my new code, leveraging a new base-game method

      private Tooltip buildTooltip(LocalizationEntry entry) {
      	return Tooltip.create(entry.getComponent());
      }
      

      It is interesting to observe how I [fail to] leverage abstractions to minimize the differences between versions. Some things are only visible after jumping between versions, adding another dimension to programming.

      Caption: A layered representation of git branches as stacked pages, Aero inspired

      Interacting with multiple branches is best accompanied by opening all the versions at once in IntelliJ, requiring you to clone the repo multiple times. This lets you jump around the code on any version without friction, and it helps avoid giving Gradle an aneurysm.

      To merge branches from two clones (without needing to push), you can fetch the other repo path, followed by git merge FETCH_HEAD. I made a helper script to automate this. It pauses in the event of merge conflicts, where I switch over to IntelliJ which has great tooling.

      TODO: make the script use rebase instead of fast-forward

      Release Process

      I've created a simple Command Line Interface (CLI) for helping me run my scripts for the release process. I have a folder named “actions” which contains nicely named scripts which can be invoked with no arguments, and I have a entrypoint script that uses fzf to show me the scripts by name to have me choose which to run.

      Caption: the PowerShell script I use

      # Action loop
      while ($true) {
        # Prompt user to select an action
        $action = Get-ChildItem -Path actions `
          | Select-Object -ExpandProperty name `
          | Sort-Object -Descending `
          | fzf --prompt "Action: " --header "Select an action to run"
        if ([string]::IsNullOrWhiteSpace($action)) {
          break
        }
      
        # Run the selected action
        . ".\actions\$action"
        
        # Leave the action display on the screen for a moment
        # (the action loop clears it with fzf)
        pause
      }
      

      Caption: video of the action script in action act.ps1

      It takes way too long for the jars folder to open in explorer.exe off-screen here

      I present to you the (shortened) instructions I wrote to myself for the release process:

      Manual: Bump `mod_version` in gradle.properties
      Manual: Commit bump
      Action: Propagate changes
      Action: Run gameTestServer for all versions
      Action: Build
      Action: Wipe jars summary dir
      Action: Collect jars
      Action: Update PrismMC test instances to use latest build output
      Action: Update test servers to latest build output
      Action: Launch PrismMC
      Action: Launch test server
      
      for each version:
          Launch version from PrismMC
          Multiplayer -> join localhost
          Break previous setup
          Build new setup from scratch -- ensure core gameplay loop is always tested
          Validate changelog accuracy
          /stop
          Quit game
      
      Action: Tag
      Action: Push all
      ... upload jars
      

      The Problem

      I test mc1.20.3 for problems. No issues found.

      Caption: SFM logs working, singleplayer gif

      I test mc1.20.4 for problems. The logs are not shoing when playing on a server, but they work in singleplayer.

      Caption: SFM logs not working, multiplayer gif

      This game update included significant changes to packet handling.

      What should happen is that the default text is cleared and some logs should be streamed in.

      It works in single player. It does not work when playing on a server.

      There is nothing abnormal in the server logs. The client logs, however, reveal the first piece of the puzzle:

      Caption: client logs of a stacktrace incriminating my mod

      [01:43:56] [Render thread/ERROR] [minecraft/BlockableEventLoop]: Error executing task on Client
      java.util.concurrent.CompletionException: io.netty.util.IllegalReferenceCountException: refCnt: 0
      	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
      	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
      	at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1770) 
      	...
      	at ca.teamdman.sfm.common.logging.TranslatableLogger.decode(TranslatableLogger.java:56)
      	at ca.teamdman.sfm.common.net.ClientboundManagerLogsPacket.handleInner(ClientboundManagerLogsPacket.java:69)
      

      Caption: Jujutsu Kaisen screengrab: “We are the exception!”

      IntelliJ helpfully recognizes the stack trace and creates links to jump to the offending code. This brings us to our handleInner method as a possible culprit.

      Caption: the logs packet handle methods

      public record ClientboundManagerLogsPacket(
              int windowId,
              FriendlyByteBuf logsBuf
      ) implements CustomPacketPayload {
      	...
      	// called by game code
      	public static void handle(
                  ClientboundManagerLogsPacket msg, PlayPayloadContext context
          ) {
              context.workHandler().submitAsync(msg::handleInner);
          }
      
      	public void handleInner() {
      		// we are on the client, so we can safely use getInstance() to get the current player
      		LocalPlayer player = Minecraft.getInstance().player;
              if (player == null
                  || !(player.containerMenu instanceof ManagerContainerMenu menu) // pattern match :D
                  || menu.containerId != this.windowId()) {
                  SFM.LOGGER.error("Invalid logs packet received, ignoring.");
                  return;
              }
      		var logs = TranslatableLogger.decode(this.logsBuf);
      		menu.logs.addAll(logs);
      	}
      

      Caption: the method that decodes multiple log entries

      public static ArrayDeque<TranslatableLogEvent> decode(FriendlyByteBuf buf) {
      	int size = buf.readVarInt(); // this line throws the error
      	ArrayDeque<TranslatableLogEvent> contents = new ArrayDeque<>(size);
      	for (int i = 0; i < size; i++) {
      		contents.add(TranslatableLogEvent.decode(buf));
      	}
      	return contents;
      }
      

      Caption: ManagerBlockEntity sending a log update packet to a player

      MutableInstant hasSince = new MutableInstant();
      if (!menu.logs.isEmpty()) {
      	hasSince.initFrom(menu.logs.getLast().instant());
      }
      ArrayDeque<TranslatableLogEvent> logsToSend = logger.getLogsAfter(hasSince);
      if (!logsToSend.isEmpty()) {
      	// Add the latest entry to the server copy
      	// since the server copy is only used for checking what the latest log timestamp is
      	menu.logs.add(logsToSend.getLast());
      
      	// Send the logs
      	while (!logsToSend.isEmpty()) {
      		int remaining = logsToSend.size();
      		PacketDistributor.PLAYER.with(player).send(
      			ClientboundManagerLogsPacket.drainToCreate(
      				menu.containerId,
      				logsToSend
      			)
      		);
      		if (logsToSend.size() >= remaining) {
      			throw new IllegalStateException("Failed to send logs, infinite loop detected");
      		}
      	}
      }
      

      It's dying when we try to read the number of logs to decode. It's not even an IndexOutOfBoundsException, it's something more sinister.

      Caption: Goblin Slayer screengrab: “And there are goblins near there.”

      This packet is a little odd, compared to most others. It directly stores a byte buffer object instead of a useful type like Collection<TranslatableLogEvent>.

      This is a consequence of the way I batch logs together across multiple packets to avoid hitting max packet length problems.

      To properly maximize packet size (to minimize the number of packets), we use an algorithm to convert log entries to individual byte buffers. We add those buffers to the current packet's buffer, and we start a new packet if it would have gone over the byte limit.

      This means that the byte-encoding of this data happens earlier than usual; earlier than the packet constructor.

      Caption: the packet's encoding and decoding methods

      public record ClientboundManagerLogsPacket(
              int windowId,
              FriendlyByteBuf logsBuf
      ) implements CustomPacketPayload {
      	...
      	// called by game code
      	@Override
          public void write(FriendlyByteBuf friendlyByteBuf) {
              encode(this, friendlyByteBuf);
          }
          public static void encode(
      		ClientboundManagerLogsPacket msg,
      		FriendlyByteBuf friendlyByteBuf
          ) {
              friendlyByteBuf.writeVarInt(msg.windowId());
              friendlyByteBuf.writeBytes(msg.logsBuf); // forward the bytes
          }
      	
      	// called by game code
      	public static ClientboundManagerLogsPacket decode(FriendlyByteBuf friendlyByteBuf) {
              return new ClientboundManagerLogsPacket(
                      friendlyByteBuf.readVarInt(),
                      friendlyByteBuf
              );
          }
      

      Did you notice?

      In the decode method, we saved a reference to the buffer object we received as a parameter, instead of copying the information to a buffer we own.

      We are hunting for some use-after-free-ish IllegalReferenceCountException: refCnt: 0 problem, and this object reuse (borrow) is sketchy as hell.

      Caption: Frieren screengrab: “That's what my experience as a mage is telling me.”

      Here lies a critical difference between 1.20.3 and 1.20.4: the buffer object is released after the decode call in the later version, before the handle method's async work is invoked.

      Getting to this point was pretty straightforward (😭)

      The fix should be to make our own buffer object instead of storing a reference to the one we passed in, right?

      Caption: the decode method now creates a buffer object

      public static void encode(
                  ClientboundManagerLogsPacket msg, FriendlyByteBuf friendlyByteBuf
      ) {
      	friendlyByteBuf.writeVarInt(msg.windowId());
      	friendlyByteBuf.writeBytes(msg.logsBuf);
      }
      
      public static ClientboundManagerLogsPacket decode(FriendlyByteBuf friendlyByteBuf) {
      	int windowId = friendlyByteBuf.readVarInt();
      	FriendlyByteBuf logsBuf = new FriendlyByteBuf(Unpooled.buffer());
      	friendlyByteBuf.readBytes(logsBuf);
      	return new ClientboundManagerLogsPacket(
      			windowId,
      			logsBuf
      	);
      }
      

      Not quite.

      Caption: the client gets disconnected when logs are received gif

      Perhaps pre-allocating the buffer will fix that?

      Caption: giving the buffer a size

      public static void encode(
      		ClientboundManagerLogsPacket msg, FriendlyByteBuf friendlyByteBuf
      ) {
      	friendlyByteBuf.writeVarInt(msg.windowId());
      	friendlyByteBuf.writeBytes(msg.logsBuf);
      }
      
      public static ClientboundManagerLogsPacket decode(FriendlyByteBuf friendlyByteBuf) {
      	int windowId = friendlyByteBuf.readVarInt();
      	FriendlyByteBuf logsBuf = new FriendlyByteBuf(Unpooled.buffer(friendlyByteBuf.readableBytes()));
      	friendlyByteBuf.readBytes(logsBuf, friendlyByteBuf.readableBytes());
      	return new ClientboundManagerLogsPacket(
      			windowId,
      			logsBuf
      	);
      }
      

      Kinda.

      Caption: SFM logs still not working gif

      There's an IndexOutOfBoundsException in the logs now.

      There were a few more iterations before I arrived at the working version

      Further investigation (breakpoints) reveals that the encode method is actually being hit twice for the same packet. This is attributable to the introduction of a game-native packet splitting mechanism in the 1.20.4 update.

      Captions: different stack traces both calling encode

      The encode method I wrote did not anticipate being called multiple times for the same packet.

      Caption: javadoc that tells us we are draining the object

      /**
       * Transfers the specified source buffer's data to this buffer starting at
       * the current {@code writerIndex} until the source buffer becomes
       * unreadable, and increases the {@code writerIndex} by the number of
       * the transferred bytes.  This method is basically same with
       * {@link #writeBytes(ByteBuf, int, int)}, except that this method
       * increases the {@code readerIndex} of the source buffer by the number of
       * the transferred bytes while {@link #writeBytes(ByteBuf, int, int)}
       * does not.
       * If {@code this.writableBytes} is less than {@code src.readableBytes},
       * {@link #ensureWritable(int)} will be called in an attempt to expand
       * capacity to accommodate.
       */
      public abstract ByteBuf writeBytes(ByteBuf src);
      

      The working solution involves calling a different method to avoid the modifying behaviour.

      Caption: the encode method no longer drains the object

      public static void encode(
      		ClientboundManagerLogsPacket msg, FriendlyByteBuf friendlyByteBuf
      ) {
      	friendlyByteBuf.writeVarInt(msg.windowId());
      	friendlyByteBuf.writeVarInt(msg.logsBuf.readableBytes());
      	friendlyByteBuf.writeBytes(msg.logsBuf, 0, msg.logsBuf.readableBytes()); // !!!IMPORTANT!!!
      	// We use this write method specifically to NOT modify the reader index.
      	// The encode method may be called multiple times, so we want to ensure it is idempotent.
      }
      
      public static ClientboundManagerLogsPacket decode(FriendlyByteBuf friendlyByteBuf) {
      	int windowId = friendlyByteBuf.readVarInt();
      
      	int size = friendlyByteBuf.readVarInt(); // don't trust readableBytes
      	// https://discord.com/channels/313125603924639766/1154167065519861831/1192251649398419506
      
      	FriendlyByteBuf logsBuf = new FriendlyByteBuf(Unpooled.buffer(size));
      	friendlyByteBuf.readBytes(logsBuf, size);
      	return new ClientboundManagerLogsPacket(
      			windowId,
      			logsBuf
      	);
      }
      

      Caption: SFM logs working, multiplayer gif

      The additional code that encodes the length of the byte buffer technically isn't necessary since we can use the readBytes method to just read the rest of the buffer, but it's better to be explicit about our assumptions.

      Perhaps a future change will give us a buffer that is shared between packets, expecting us to only read as much as we wrote. It is good to have some warning in place if our assumptions are violated.

      At least everything works now.

      Closing Remarks

      Attempting to reproduce the resolution process of the bug was tricky, even with git and IntelliJ local history at my disposal. There was a behaviour I could not recreate for a gif that I wasted a lot of time trying for. 😥

      Documenting the problem solving process is hard.

      My life would have been easier writing this article if I had git commit'd at some key moments. Oh well.

      The bug still exists in the mod, but at least now I can tell users to send me their logs.

       
      Read more...