Sign in

Kevin Yap

@kevinyap.ca
243 followers 791 following 410 posts

Software developer working on Google Chrome. Previously: Relay.app, Riot Games, and MLSE Digital Labs. I made @zeal.gg and @surveil.land, and post about code, games, and baseball. kevinyap.ca 🇨🇦

PostsRepliesMedia
Kevin Yap @kevinyap.ca · 28/06/2026
Made top 8 of the Modern Challenge on Ruby Storm with Hex Magic! Card plays way better than I thought it would. R1: [W] Affinity ⛈️⛈️ R2: [W] Simic Ritual ⛈️⛈️ R3: [W] Ruby Storm ❌⛈️⛈️ R4: [W] Jeskai Energy/Blink ❌⛈️⛈️ R5: [L] Boros Energy ⛈️❌❌ R6: [W] Grixis Moonshadow ⛈️❌⛈️ QF: [L] Boros Energy ❌❌
Magic Online screenshot of a decklist titled "Ruby Storm [Hex Magic]". There is a screenshot overlayed of the top 8 standings:

1. Backoff (8-1)
2. Suechtier (7-2)
3. Polikasoill (7-1)
4. LegendaryHuman (6-2)
5. Coradorable (5-2)
6. pwqz (me!) (5-2)
7. jev_ (5-2)
8. Alakai (4-3)

The decklist is as follows:

Maindeck:
4 Pyretic Ritual
1 Flashback
1 Elegant Parlor
1 Gemstone Caverns
1 Grapeshot
2 Arid Mesa
4 Reckless Impulse
2 Wooded Foothills
4 Manamorphose
4 Ruby Medallion
2 Wish
3 Past in Flames
4 Wrenn's Resolve
4 Desperate Ritual
4 Ral, Monsoon Mage
2 Valakut Awakening
1 Sacred Foundry
2 Artist's Talent
3 Scalding Tarn
2 Bloodstained Mire
1 Steam Vents
4 Mountain
3 Hex Magic
1 Thundering Falls

Sideboard:
2 Wear // Tear
1 Untimely Malfunction
1 Past in Flames
1 Empty the Warrens
1 Grapeshot
3 Prismatic Ending
2 Brotherhood's End
1 Blood Moon
3 Flusterstorm
120
Kevin Yap @kevinyap.ca · 25/05/2026
I'm fairly certain the Ferrari Luce is just a blue Magic Mouse with four wheels. Indisputably a Jony Ive Project™.
Overhead marketing photo of the Ferrari Luce with an Apple Magic Mouse edited in next to it.
000
Kevin Yap @kevinyap.ca · 03/05/2026
First Modern RCQ of the season. Pivoted to Boros last minute with 2 MD Flashback, then was anxious about Belcher and Neoform so I added 2 Vexing Baubles to the SB. Made top 8, then lost T2 then T3 to Neoform in the QF despite my best efforts to cast Bauble, so no invite. List felt great though!
Screenshot from Moxfield of my Ruby Storm decklist.

Maindeck:
2 Artist's Talent
3 Bloodstained Mire
4 Desperate Ritual
2 Elegant Parlor
2 Flashback
1 Gemstone Caverns
2 Glimpse the Impossible
1 Grapeshot
1 Lindblum, Industrial Regency
4 Manamorphose
3 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
2 Sacred Foundry
3 Scalding Tarn
1 Thundering Falls
1 Valakut Awakening
2 Wish
3 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
1 Blood Moon
1 Brotherhood's End
1 Empty the Warrens
1 Fire Magic
1 Grapeshot
3 Orim's Chant
1 Past in Flames
1 Untimely Malfunction
2 Vexing Bauble
3 Wear // Tear
110
Kevin Yap @kevinyap.ca · 25/04/2026
I stumbled upon the realization that calling "prime = win" for Ral flips would be valid†, and inadvertently let this cursed idea loose in the Storm Discord — sorry not sorry if anyone pulls this on you in paper. † For any 𝑛-sided die where 𝑛 ∈ {2,4,6,8}.
Screenshot of a Discord conversation. Transcript:

pwqz (Yesterday at 18:27):
I didn't even know there was a coin flip tool in the Companion app lol. I'd recommend just rolling a D6 and assigning some set of values to heads (odds, evens, primes, etc)

junshiro (Yesterday at 19:02):
@pwqz prime = I win is just so good

nubbet (Yesterday at 19:48):
@pwqz This will be my ral rule. Primes I win is gas
000
Kevin Yap @kevinyap.ca · 24/04/2026
Ramping up the Modern grind again now that RCQ season has begun. I've been excited to test out Flashback in Storm since SOS spoilers, and happened to go 5-0 in the first league that I tried it in! R1: Izzet Wizards ❌🌩🌩 R2: Ruby Storm ❌🌩🌩 R3: Boros Energy 🌩🌩 R4: Phoenix Dredge 🌩🌩 R5: Jeskai Blink 🌩🌩
Deck screenshot for "Ruby Storm [Jeskai Flash]" in Magic Online, with the 5-0 league record added to the screenshot. The match records are as follows:

Match 1: RecklessTempest (2-1) — Izzet Wizards (Twin)
Match 2: Triicky (2-1) — Ruby Storm (Jeskai)
Match 3: TheRightStuff (2-0) — Boros Energy
Match 4: Puff-Sun (2-0) — Phoenix Dredge
Match 5: albert62 (2-0) — Jeskai Blink

The decklist is as follows:

Maindeck:
2 Arid Mesa
2 Artist's Talent
2 Bloodstained Mire
4 Desperate Ritual
2 Elegant Parlor
2 Flame of Anor
2 Flashback
1 Gemstone Caverns
1 Grapeshot
1 Lindblum, Industrial Regency
4 Manamorphose
3 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
1 Sacred Foundry
3 Scalding Tarn
1 Steam Vents
1 Thundering Falls
1 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
1 Empty the Warrens
2 Fire Magic
3 Flusterstorm
1 Grapeshot
2 Into the Flood Maw
2 Orim's Chant
1 Past in Flames
3 Wear // TearScreenshot of Flashback from Secrets of Strixhaven.

Flashback {R} — Instant

Target instant or sorcery card in your graveyard gains flashback until end of turn. The flashback cost is equal to its mana cost.
110
Kevin Yap @kevinyap.ca · 08/02/2026
This was my deck for the day and the rest of the pool. Getting 7 playable rare/mythics in Orzhov *and* a shock land that helped me splash for the green on Brigid was absolutely wild. Seeing it again after getting home, feels bad that I wasn't able to carry such a strong pool to Day 2, but oh well.
Photo of my Sealed deck from Magic Spotlight: Eclipsed. Text list is as follows:

1 Ajani, Outland Chaperone
1 Flock Impostor
1 Gallant Fowlknight
1 Kinscaer Sentry
1 Liminal Hold
1 Spiral into Solitude
1 Timid Shieldbearer
1 Winnowing
1 Blight Rot
1 Blighted Blackthorn
1 Dose of Dawnglow
1 Dream Seizer
1 Gloom Ripper
1 Nameless Inversion
1 Scarblade Scout
1 Unbury
1 Brigid, Clachan's Heart
1 Eclipsed Kithkin
1 Kirol, Attentive First-Year
2 Mischievous Sneakling
1 Stoic Grove-Guide
1 Chronicle of Victory
1 Overgrown Tomb
9 Plains
6 Swamp
1 ForestSealedDeck.Tech screenshot of my sideboard from the event. Transcribed:

Encumbered Reejerey
Evershrike's Gift
Goldmeadow Nomad
Shore Lurker
Sun-Dappled Celebrant
Tributary Vaulter
Aquitect's Defenses
Blossombind
Glamer Gifter
Glamermite
Kulrath Mystic
Omni-Changeling
Rime Chill
Run Away Together
Silvergill Peddler
Tanufel Rimespeaker
Unwelcome Sprite
Wanderwine Distracter
Bile-Vial Boggart
Creakwood Safewright
Dream Seizer
Heirloom Auntie
Scarblade's Malice
Shimmercreep
Boldwyr Aggressor
Brambleback Brute
Elder Auntie
Feed the Flames
Flame-Chain Mauler
Flamekin Gildweaver
Giantfall
Kulrath Zealot
Lavaleaper
Reckless Ransacking
Squawkroaster
Tweeze
Warren Torchmaster
Assert Perfection
Chomping Changeling
Gilt-Leaf's Embrace
Great Forest Druid
Midnight Tilling
Moon-Vigil Adherents
Safewright Cavalry
Unforgiving Aim
Chitinous Graspling
Deepchannel Duelist
Flaring Cinder
Merrow Skyswimmer
Voracious Tome-Skimmer
Wary Farmer
Springleaf Drum
2 Stalactite Dagger
100
Kevin Yap @kevinyap.ca · 29/01/2026
Got my first Limited trophy on MTGO playing Sealed Leagues last night; many 0–5s and 1–4s initially, but slowly improving! I'm having a lot of fun grinding Lorwyn Eclipsed in preparation for the upcoming Spotlight Series. The gameplay feels really engaging with all of the mechanics in the set.
Magic Online screenshot of a Sealed decklist and overlay of the prizing from going 5–0 in a Competitive Sealed League. The decklist is as follows:

1 Evolving Wilds
5 Forest
9 Plains
2 Swamp
2 Wanderbrine Trapper
1 Goldmeadow Nomad
1 Thoughtweft Lieutenant
1 Personify
2 Wanderbrine Preacher
1 Spiral into Solitude
1 Surly Farrier
1 Feisty Spikeling
1 Adept Watershaper
1 Moonlit Lamenter
1 Crossroads Watcher
1 Reluctant Dounguard
1 High Perfect Morcant
1 Morningtide's Light
1 Liminal Hold
1 Pitiless Fists
1 Kinbinding
1 Pummeler for Hire
1 Deceit
1 Emptiness
1 Sun-Dappled Celebrant
100
Kevin Yap @kevinyap.ca · 10/01/2026
Got 2nd place in the Modern Challenge on MTGO tonight playing Boros Ruby Storm! Nice to finally get another Challenge top 8. R1: Boros Energy ⛈⛈ R2: Neoform ⛈⛈ R3: Ruby Storm ⛈⛈ R4: Tron ⛈⛈ R5: Living End ❌❌ R6: Mono-B Midrange ⛈❌❌ QF: Grixis Reanimator ❌⛈⛈ SF: Affinity ⛈⛈ F: Broodscale ⛈❌❌
Screenshot of the decklist from the MTGO website.

Maindeck:
2 Arid Mesa
2 Artist's Talent
2 Bloodstained Mire
4 Desperate Ritual
2 Elegant Parlor
1 Gemstone Caverns
2 Glimpse the Impossible
4 Manamorphose
3 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
1 Sacred Foundry
3 Scalding Tarn
1 Stormscale Scion
2 Strike It Rich
1 Sunbaked Canyon
2 Valakut Awakening
2 Wish
3 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
1 Empty the Warrens
1 Grapeshot
4 Orim's Chant
1 Past in Flames
3 Prismatic Ending
2 Untimely Malfunction
3 Wear/Tear
120
Kevin Yap @kevinyap.ca · 06/01/2026
Hexing Squelcher is my "wow this is *too* perfect for Ruby Storm" card of ECL that'll probably not end up actually seeing play. 1R for an anti-counterspell hatebear that itself can't be countered has gotta be something though (it's like a Spider-Punk that you can safely play T2).
Screenshot of Hexing Squelcher (https://scryfall.com/card/ecl/145/hexing-squelcher)
110
Kevin Yap @kevinyap.ca · 20/11/2025
Barring any last-minute changes tomorrow, I'm going to run this Ruby Storm list at RC Calgary this weekend! Heavily considered pure Boros, but I figure over 9+ rounds, I want to feel like I have some sort of counterplay to other combo decks to preserve my mental throughout the tournament.
Image export of a Ruby Storm Moxfield decklist. The deck is as follows:

Maindeck:
1 Arena of Glory
2 Artist's Talent
3 Bloodstained Mire
4 Desperate Ritual
1 Elegant Parlor
2 Flame of Anor
1 Gemstone Caverns
2 Glimpse the Impossible
1 Lindblum, Industrial Regency
4 Manamorphose
3 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
2 Sacred Foundry
3 Scalding Tarn
1 Steam Vents
1 Stormscale Scion
1 Thundering Falls
1 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
2 Flusterstorm
1 Galvanic Relay
1 Grapeshot
3 Orim's Chant
1 Past in Flames
2 Phlage, Titan of Fire's Fury
3 Prismatic Ending
1 Spell Pierce
1 Untimely Malfunction
120
Kevin Yap @kevinyap.ca · 16/10/2025
Took a break from Ruby Storm to practice Eldrazi Ramp in case I need to play a different deck at the RC, but saw this wild list with 3 maindeck Surgical Extractions (www.mtggoldfish.com/deck/7394296) and *had* to test it out myself — of course I randomly trophied the first League I tried it 😅
Screenshot of a Magic Online decklist and the match history of the League. The decklist is as follows:

Maindeck:
2 Bloodstained Mire
3 Surgical Extraction
4 Desperate Ritual
1 Elegant Parlor
1 Gemstone Caverns
1 Thundering Falls
3 Mountain
2 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
4 Manamorphose
2 Sacred Foundry
1 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve
1 Arena of Glory
2 Flame of Anor
1 Steam Vents
1 Lindblum, Industrial Regency
1 Stormscale Scion
1 Arid Mesa
3 Scalding Tarn
2 Glimpse the Impossible

Sideboard:

1 Grapeshot
1 Brotherhood's End
1 Past in Flames
1 Stormscale Scion
2 Untimely Malfunction
3 Prismatic Ending
2 Phlage, Titan of Fire's Fury
3 Flusterstorm
1 Galvanic Relay

The following is the match history:

1. theycouldbestarlings (2-0): Dimir Frogtide
2. m0sc0wmitch (2-0): Mono-R
3. pan0ptic (2-0): UW Control
4. Vekx3r (2-0): Boros Energy
5. chachibuoh (2-1): Eldrazi Tron
120
Kevin Yap @kevinyap.ca · 22/09/2025
Grinded to Platinum in 2XKO over the weekend! The ranked population definitely isn't representative due to it being a closed beta, but still really happy considering it's my first traditional fighting game and I've only been playing for a week! Some initial thoughts on the game in this thread.🧵
Ranked level up screen from 2XKO titled "Congratulations" with a subtitle of "Platinum 1" and the Platinum 1 ranked icon.
220
Kevin Yap @kevinyap.ca · 01/08/2025
Another 5-0 League on Ruby Storm! 🏆 Still feeling really comfortable on the Izzet version of the deck even though most top players on MTGO have gone back to Boros. Might try adding one more Strix Serenade to the sideboard to help hit all the evoke elementals floating around online.
Screenshot of a Magic Online decklist and the match history of the League. The decklist is as follows:

Maindeck:
2 Bloodstained Mire
4 Desperate Ritual
1 Gemstone Caverns
4 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
4 Manamorphose
2 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve
1 Strike It Rich
2 Flame of Anor
2 Steam Vents
1 Fiery Islet
1 Arid Mesa
2 Opera Love Song
2 Thundering Falls
3 Scalding Tarn
1 Dragon's Rage Channeler
1 Stormscale Scion

Sideboard:
1 Grapeshot
1 Past in Flames
2 Spell Pierce
1 Empty the Warrens
3 Into the Flood Maw
2 Brotherhood's End
2 Swan Song
1 Strix Serenade
1 Galvanic Relay
1 Into the Flood Maw

The following is the match history:

1. Brent-C (2-1): Simic Ritual
2. HDG_BorisE (2-1): UW Affinity
3. jamojisan (2-1): Amulet Titan
4. Psyjedi (2-0): UB Affinity
5. Alan07 (2-0): Esper Ketramose
020
Kevin Yap @kevinyap.ca · 22/06/2025
Played UR Ruby Storm in the Face to Face Modern RCQ today and got Top 4 for my first ever RC invite! 🎉 R1: Jeskai Affinity 🌩️❌ R2: Boros Burn 🌩️❌🌩️ R3: Ruby Storm 🌩️🌩️ R4: Simic Brew 🌩️🌩️ R5: ID QF: Broodscale Combo 🌩️🌩️ SF: Dimir Mill ❌🌩️❌
Photo of my Ruby Storm deck, including the promos from the RCQ and the qualification card. The deck list is as follows:

Maindeck:
3 Bloodstained Mire
4 Desperate Ritual
2 Dragon's Rage Channeler
1 Fiery Islet
2 Flame of Anor
1 Gemstone Caverns
4 Manamorphose
4 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
3 Scalding Tarn
2 Steam Vents
1 Stormscale Scion
2 Strike It Rich
2 Thundering Falls
2 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
2 Brotherhood's End
1 Empty the Warrens
1 Galvanic Relay
1 Grapeshot
4 Into the Flood Maw
1 Past in Flames
3 Spell Pierce
1 Strix Serenade
1 Swan Song
120
Kevin Yap @kevinyap.ca · 03/06/2025
5-0'd another Modern League with Ruby Storm! ⛈🏆 I feel quite confident with the stock list now, so I've been playing around with a few "interesting" modifications, some of which are almost certainly suboptimal, but are fun nonetheless. 🦦 Decklist in the alt-text and thoughts in the thread!
Screenshot of a Magic Online decklist and the match history of the League. The decklist is as follows:

Maindeck:
3 Bloodstained Mire
4 Desperate Ritual
1 Gemstone Caverns
2 Thundering Falls
5 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
4 Manamorphose
1 Valakut Awakening
2 Wish
4 Wooded Foothills
4 Wrenn's Resolve
2 Dragon's Rage Channeler
2 Flame of Anor
2 Steam Vents
1 Fiery Islet
1 Stormsplitter
1 Arid Mesa
1 Stormcatch Mentor
1 Strike It Rich

Sideboard:
1 Grapeshot
1 Past in Flames
2 Spell Pierce
1 Empty the Warrens
4 Into the Flood Maw
2 Brotherhood's End
2 Swan Song
1 Stormscale Scion
1 Galvanic Relay

The following is the match history:

1. PurpleHayes152 (2-1): Helga Keruga
2. Strubb (2-0): Boros Energy
3. MTGeeGee (2-0): Eldrazi G-Tron
4. camr0n_1 (2-1): Broodscale Combo
5. PatrizioSpadoni (2-0): Jeskai Control
130
Kevin Yap @kevinyap.ca · 28/05/2025
Trophied my first MTGO League playing UR Ruby Storm! 🌩🏆 Spell Pierce was clutch against Living End, and I'm liking maindeck Stormscale Scion as a Grapeshot replacement since it can activate Ritual-heavy hands. 2-1 Eldrazi Tron 2-0 Eldrazi Aggro 2-0 UR Prowess 2-0 Boros Energy 2-0 Living End
Moxfield screenshot of a Modern decklist titled "[UR] Ruby Storm ⛈". The decklist is as follows:

Maindeck:
2 Artist's Talent
3 Bloodstained Mire
4 Desperate Ritual
1 Fiery Islet
2 Flame of Anor
1 Gemstone Caverns
4 Manamorphose
5 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
3 Scalding Tarn
2 Steam Vents
1 Stormscale Scion
2 Strike It Rich
2 Thundering Falls
1 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
2 Brotherhood's End
1 Empty the Warrens
1 Grapeshot
2 Hurkyl's Recall
4 Into the Flood Maw
1 Past in Flames
4 Spell Pierce
110
Kevin Yap @kevinyap.ca · 12/05/2025
Also... I had no idea that I was playing against @domhrv.bsky.social in the finals! 😱
Screenshot of Dom Harvey's tweet about placing 2nd in this challenge (permalink: https://x.com/dominharvia/status/1921830743325458765). It includes a screenshot of the decklist (https://www.mtggoldfish.com/deck/7097579) and a couple screenshots of his gamepay.

The text of the tweet is as follows:

Got 2nd in Modern Challenge with fair & balanced Neoform I built as a bit – it’s very sus but has incredible screenshot equity. Look how I massacred your boy @finalnub @argzax!

BWu Blink LWL
Burn WLW
Eldrazi WLW
Eldrazi WW
Amulet WW
Prowess WW

Boros WW
Miracles WW
Storm LL
🦖
000
Kevin Yap @kevinyap.ca · 12/05/2025
Since I didn't get my invite, I stubbornly decided to queue for an MTGO Challenge tonight to prove to myself I'm capable of playing Magic *decently*, and unexpectedly took 1st place out of 63 people! (And didn't drop a single game in top 8 to boot!) 🏆🎉 www.mtgo.com/decklist/mod...
Screenshot of the bracket for the Modern 32 Challenge on Magic Online for May 11 (https://www.mtgo.com/decklist/modern-challenge-32-2025-05-1212777370). It shows myself (pwqz) 2-0ing quarterfinals vs. SickSoSick, semifinals vs. PJKP, and finals vs. Capriccioso.Visual view of my Ruby Storm list.

Maindeck:
1 Arena of Glory
2 Artist's Talent
3 Bloodstained Mire
4 Desperate Ritual
2 Elegant Parlor
1 Gemstone Caverns
2 Glimpse the Impossible
1 Grapeshot
4 Manamorphose
4 Mountain
3 Past in Flames
4 Pyretic Ritual
4 Ral, Monsoon Mage
4 Reckless Impulse
4 Ruby Medallion
2 Sacred Foundry
3 Scalding Tarn
2 Strike It Rich
1 Sunbaked Canyon
1 Valakut Awakening
2 Wish
2 Wooded Foothills
4 Wrenn's Resolve

Sideboard:
2 Brotherhood's End
1 Empty the Warrens
1 Grapeshot
4 Orim's Chant
1 Past in Flames
2 Phlage, Titan of Fire's Fury
4 Prismatic Ending
151
Kevin Yap @kevinyap.ca · 16/03/2025
Went 3-1-1 at a Standard RCQ playing Temur Otters in paper for the first time ever. Sadly, my tiebreakers were awful so I finished 9th, just missing top 8 (4th–9th were all 3-1-1). Still my best comp event yet which I'm super stoked about!
Moxfield screenshot of a deck titled "Temur Otters 🦦". The decklist is as follows:

3 Analyze the Pollen
4 Botanical Sanctum
2 Burst Lightning
4 Bushwhack
4 Copperline Gorge
1 Dreamdew Entrancer
4 Enduring Vitality
1 Fabled Passage
2 Forest
2 Island
2 Karplusan Forest
1 Mountain
3 Questing Druid // Seek the Beast
2 Roaring Furnace // Steaming Sauna
1 Song of Totentanz
2 Stock Up
4 Stormchaser's Talent
4 This Town Ain't Big Enough
4 Thundertrap Trainer
4 Torch the Tower
3 Valley Floodcaller
1 Willowrush Verge
2 Yavimaya Coast

SIDEBOARD:
1 Dissection Tools
1 Ghost Vacuum
3 Lithomantic Barrage
2 Obstinate Baloth
2 Pawpatch Formation
2 Pyroclasm
1 Reclamation Sage
1 Song of Totentanz
2 Spell Pierce
120
Kevin Yap @kevinyap.ca · 27/12/2024
Someone built a site that lets you explore #AdventOfCode leaderboard data from all 10 years of the event! You can really see my decline over time as more people started participating and I got rustier from doing less day-to-day coding 😅 caderek.github.io/elfvsmachine
Screenshot of my own all-time stats from the site linked in the post. It shows me being 25th overall with 9450 total points, and summarizes my performance in each year in a table below.

2024: 357th, 176 points, 2 P1 top 100s, 3 P2 top 100s
2023: 169th, 404 points, 5 P1 top 100s, 5 P2 top 100s
2022: 119th, 538 points, 5 P1 top 100s, 4 P2 top 100s
2021: 100th, 689 points, 9 P1 top 100s, 4 P2 top 100s
2020: 132nd, 501 points, 8 P1 top 100s, 4 P2 top 100s
2019: 61st, 1,159 points, 14 P1 top 100s, 8 P2 top 100s
2018: 39th, 1,409 points, 11 P1 top 100s, 13 P2 top 100s
2017: 48th, 1,344 points, 12 P1 top 100s, 15 P2 top 100s
2016: 11th, 2,546 points, 18 P1 top 100s, 19 P2 top 100s
2015: 81st, 684 points, 6 P1 top 100s, 4 P2 top 100s
030
Kevin Yap @kevinyap.ca · 26/12/2024
Another Christmas, another #AdventOfCode in the books (and 500 total stars)! Thank you to @was.tl for another delightful month of holiday puzzles! 🎄 I'll include some of my thoughts in this thread.
Screenshot of the completed Advent of Code 2024 home page, showing "10" drawn in ASCII art containing throwbacks to all previous years, and 50 stars collected.
3110
Kevin Yap @kevinyap.ca · 23/12/2024
Redesigned my personal site again! Got inspired by a bunch of different blogs I've come across recently to make it even more minimalist (the sticky sidebar had to go). I found that monospace fonts are hard to visually process for longer pieces of writing, so it's back to `system-ui`.
Screenshot of my "Going Fast in Advent of Code" blog post, with my recent site redesign (https://kevinyap.ca/2019/12/going-fast-in-advent-of-code/)
130
Kevin Yap @kevinyap.ca · 17/12/2024
Just to be explicit, I did this: - Changed my "squatting" account to a different handle. - Changed this account's handle to @ikeviny.bsky.social, then back to @kevinyap.ca (immediately). - Confirmed handle was reserved by attempting to swap the "squatting" account back to @ikeviny.bsky.social.
Screenshot of the "Change Handle" modal on the Bluesky account page, attempting to change my Bluesky handle to "ikeviny.bsky.social". It shows an error stating: "This handle is reserved. Please try a different one."
120
Kevin Yap @kevinyap.ca · 08/12/2024
I didn't want to go on about more #AdventOfCode drama, but yesterday @hyperneutrino.xyz shared a conversation she had with @was.tl on the topic of LLM usage on the global leaderboard, and I was shocked at what he was experiencing. Reddit thread: www.reddit.com/r/adventofco...
Screenshot of a Google Doc titled "Conversation with Eric". Text is as follows:

The big change this year is that it's the first time "asking the community nicely" has failed to fix a problem. For the past nine years, I've been able to (for the most part) keep people from overwhelming the site, sharing answers, streaming early, making copies of the site, or even using LLMs on the global leaderboard, all by just asking nicely. This year, I'm not sure what changed, but people have been very brazen about their cheating.

I do not mean "more people are cheating". I mean that people this year have been emailing me to explicitly state that they see the request to not use LLMs, but that they do not respect me or my work, and as such will be using LLMs to place on the global leaderboard regardless of what I say. This change in behavior is disappointing to me; it leads me to believe that any solution to our immediate problem which relies on users being honest will likely fail.
130
Kevin Yap @kevinyap.ca · 03/12/2024
See for example this post I made mentioning my own handle. Looking at the metadata on pdsls.dev, you can see the DID for my profile annotated as a "mention" on the substring "@kevinyap.ca" in the body of the post.
Screenshot of pdsls.dev showing the metadata in the linked Bluesky post. There is a "facet" which has the start and end indices of the "@kevinyap.ca" mention in the post, and a "feature" containing the DID of my Bluesky profile which is highlighted.
000
Kevin Yap @kevinyap.ca · 25/11/2024
Made it to Mythic for the first time! Usually I don't play enough Arena in a given month to ever climb higher than Diamond, but I've been trying to play more than normal to get a better feel for the meta and tune my sideboard in preparation for the RC season.
Screenshot of the Mythic rank-up animation in MTG Arena.
110
Kevin Yap @kevinyap.ca · 20/11/2024
I did have a theory at that point, but had to confirm it. I went through the players' past streams and read through Twitch chat. Finally, I found what I was looking for, and it matched my theory exactly!
Twitch chat from one of twitch.tv/alfrea's VODs. The messages in order:

- woodenfish0923: !rank
- Nightbot: げまげまの現在のレート [グラフ] https://zeal.gg/pde3wLx [deeplol] https://www.deeplol.gg/event

However, Nightbot's links are not hyperlinked, and just render as text.
100
Kevin Yap @kevinyap.ca · 20/11/2024
Then I noticed that some of the paths people were reaching contained the string "deeplol.gg/event" instead (this wasn't linked anywhere on the home page), so I went to that page. Aha!
Screenshot of deeplol.gg/event, which shows 4 players and their current ranks (which aligns with those in the zeal.gg leaderboard being hit), and the following banners:

- "Let's check out the latest game records from the four members of the Gamegamer team!"
- "Japan's Gamergamer is off to Korea for the KR Server Challenge, with DEEPLOL cheering them on!"
100
Kevin Yap @kevinyap.ca · 20/11/2024
Like I usually do, I went to the most-visited page, and saw a leaderboard for 4 players on the KR server. Kind of odd, since all of the traffic appears to be coming from Japan, not Korea. I also didn't recognize any of the names of the players, and quickly Googling didn't give me any hints.
Screenshot of the most visited URL (https://zeal.gg/pde3wLx). It shows a graph of 4 users on the KR League of Legends server, climbing from low Platinum on November 12 to Master tier on November 20.
100
Kevin Yap @kevinyap.ca · 20/11/2024
The vast majority of the traffic was going to a single leaderboard (as usually happens), but the other most-common paths looked really odd. There was the string "[deeplol]" in a lot of them, and also HTML-escaped spaces ("%20").
Screenshot of the paths visited by zeal.gg users over the last 30 days. 18684 visitors land on `/pde3wLx`, followed by 134 landing at the root page.
110
Kevin Yap @kevinyap.ca · 20/11/2024
Usually when I see a spike in traffic, it's because some streamer discovered the site and is using it to track some sort of ranked climb challenge, and their viewers are the ones clicking through to follow along. In this case, though, my referrer traffic looked like this:
Acquisition channels for zeal.gg over the past 30 days. The top category is "direct" with 18817 visitors and 38652 views, followed by "organic search" making up 72 visitors and 109 views.
100
Kevin Yap @kevinyap.ca · 20/11/2024
However, I randomly decided to open PostHog, and was greeted with the dashboard telling me I had over 23k uniques over the last 30 days, which is 2 orders of magnitude more than I'm used to!
Screenshot of zeal.gg's PostHog dashboard, showing 23551 unique users over the last month ("up 3946.56% from the previous period").
100
Kevin Yap @kevinyap.ca · 18/11/2024
So an emoji proposal for what is effectively the "FLUSH" BetterTTV emote is currently poised to be included in Unicode 17.0 as "Distorted Face". This must've been a hilarious one to draft up. Proposal link: www.unicode.org/L2/L2024/242...
Screenshot of the "Use in sequences" section of the Inflatable Face Emoji Proposal. It cites "Sportsball" as an example use case, depicting the inflatable face being kicked by the foot emoji as if it were a ball.Examples from the Inflatable Face Emoji Proposal demonstrating the visual distinctiveness of the new emoji, including (but not limited to) Scrat the Squirrel from Ice Age and Garfield the Cat being inflated to spherical proportions.
000