<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Shayne Wuver on Medium]]></title>
        <description><![CDATA[Stories by Shayne Wuver on Medium]]></description>
        <link>https://medium.com/@wuvershayne?source=rss-643a48f4e8ae------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*AoASmtokpPXU4nviYW4mNw@2x.jpeg</url>
            <title>Stories by Shayne Wuver on Medium</title>
            <link>https://medium.com/@wuvershayne?source=rss-643a48f4e8ae------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 18 May 2026 06:28:53 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@wuvershayne/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[19 hours…]]></title>
            <link>https://medium.com/@wuvershayne/19-hours-ce7a301084e9?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/ce7a301084e9</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[car-rental]]></category>
            <category><![CDATA[fleetlinq]]></category>
            <category><![CDATA[life]]></category>
            <category><![CDATA[rant]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Mon, 30 Mar 2026 10:00:15 GMT</pubDate>
            <atom:updated>2026-03-30T10:00:15.833Z</atom:updated>
            <content:encoded><![CDATA[<h4>…2 dogs, 1 broken browser, and a weekend i didn’t plan</h4><p>my mum woke me up at 4am this morning.</p><p>not 4am like i’d had a full night. 4am like i’d slept for maybe 30 minutes 😭</p><p>got in around 3:30. came off a friday where i also slept around 3. at this point my sleep schedule isn’t a schedule, it’s just whatever happens.</p><p>she said the rain was blowing straight into the kennel. she was right.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/498/0*v7gZZM1PRlmle97w.png" /><figcaption>sad dog</figcaption></figure><p>ran outside half asleep, rain beating me, brought both dogs in. Liger and Milo. soaked. like fully, properly soaked 😭 dried them off, put the fans and lights on for whatever warmth they could manage, then knocked out again.</p><p>woke up 12:33. not by choice.</p><p>anyway. context first.</p><p>i work a 9–5. leave around 7–8am, back around 7–8pm. so the 19 hours i put into FleetLinq this week? all in the margins. nights mostly. i run three times a week too — night runs, 3–4 hours per session.</p><p>this week i got one run in. wednesday.</p><p>easy run first, then sprint training. then i saw that pushup challenge going around and thought yeah, why not.</p><p>my groin said absolutely not.</p><p>limped home. thursday was hell. couldn’t walk properly, every step was a reminder. i can’t lie, this running thing is just a weekly course in discovering muscles i’ve been completely ignoring. last week it was abs. this week groin. i’ll have a full body map by the end of the year, built entirely through suffering.</p><p>friday i was back at it anyway. no choice when you’re this close.</p><p>19 hours on FleetLinq this week. yesterday alone was 5hrs 54mins. today’s 1:16 so far.</p><p>the product is almost ready. like actually almost ready — not the fake almost where you’re scared to commit. first company testing by next sunday. that’s the target and i’m holding it. marketing and client acquisition scares me, especially since gh people don’t like parting with their $$$ but i’ll do it anyways. bro imagine your first startup succeeds? in uni?? chale. i will make it succeed man. i have to.</p><p>what changed? i had a conversation with <a href="https://twitter.com/uxderrick">@uxderrick</a> a few days ago. didn’t say anything directly. but it made me clock myself so i locked in after that lol.</p><p>the last few nights have been those sessions.</p><p>set up Microsoft Clarity for analytics. should’ve been simple, but i spent two hours convinced something was broken — turns out my browser blocks trackers (and ads) very aggressively and i’d completely forgotten (mind you, i set that up myself lol). two hours. gone. just like that. chale.</p><p>and that’s the thing about this work that’s hard to explain. you can write code for 5 hours and spend another 3just thinking. staring. debugging nothing. that’s still the work. people don’t see that part.</p><p>so i built a few pages, set up cookies, then had to be honest with myself — i’ve been a perfectionist and it’s been slowing me down. UI isn’t where i want it yet. but it works. that’s enough for now, i’ll refine later.</p><p>got stuck a couple times and asked questions (not relating to my issues but just stuff i’d been wondering) in Slightly Techie. they told me to touch grass 😭 then helped me anyway. they always do. shoutout Kwesi and the whole group. i owe a lot to those people, i can’t lie.</p><p>side note — both friday and saturday i slept around 3–4am. so when my mum knocked at 4 this morning, i was genuinely somewhere else mentally. the dogs being wet and needing drying didn’t help. but they’re fine now. very dry. very comfortable in my room, don’t ask.</p><p>sunday afternoon, sprayed the whole house with acaricide — been putting that off for weeks. my sprayer is just 5L so imagine the refills. imagine the pumping. my shoulder started complaining almost immediately, old injury, which hasn’t healed. it did make for a good workout tho icl lol. i also got a few chemical burns too. like my face was on fire the whole day. i’m fine though.</p><p>showed the dogs the crabs after.</p><p>Liger locked on them completely. nose almost touching them, smelling em, watching em move, fully invested. Milo looked once and walked away.😭</p><p>been dancing and singing around the house since i woke up. no real reason. just in a good mood. something feels like it’s shifting. i can’t explain it and i’m not going to try. (it’s monday, woke up a lil sick but i’m still very jolly)</p><p>still waiting on my E46 330. i’ve walked far enough. i have plans for that car and i’m not elaborating.</p><p>might link up with the boys and cars tonight. might not. i genuinely never know until it’s already happened. (i did, it was fun. )</p><p>FleetLinq ships next(this) week. weekend was chaotic. dogs are dry. house is sprayed. code works, almost fully.</p><p>bye guyss</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ce7a301084e9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LeanGPT]]></title>
            <link>https://medium.com/@wuvershayne/leangpt-271c75f514c7?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/271c75f514c7</guid>
            <category><![CDATA[frustration]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Tue, 10 Mar 2026 10:16:58 GMT</pubDate>
            <atom:updated>2026-03-10T10:16:58.820Z</atom:updated>
            <content:encoded><![CDATA[<p><em>It’s not what you think it is — it’s better.</em></p><p>A couple weeks ago(months now, this has been in my drafts for a while), I got bored.</p><p>Not the productive kind of bored where you read a book or clean your room. The dangerous kind. The kind where you start poking at problems just to see if you can break them.</p><p>So I wrote a Chrome extension.</p><p>Let me explain.</p><p>If you use ChatGPT long enough — especially in Chrome — you’ve probably noticed something annoying. Once a chat gets really long, the tab starts acting like it just ran a marathon. Scrolling gets weird, typing lags, and suddenly Chrome is eating RAM like it hasn’t seen food in weeks.</p><p>I had one of those chats. A long one. Important too. The kind you can’t just delete because it actually contains useful context and ideas.</p><p>But every time I opened it, Chrome would absolutely <em>lose its mind</em>. RAM usage through the roof, which given Chrome’s default reputation with RAM, you should be able to understand how bad this was. Fan spinning. Browser gasping for air.</p><p>Eventually I got so frustrated I just stopped opening the chat altogether. Which, if we’re being honest, was kind of stupid because the conversation was still necessary. A few weeks passed, then one day I accidentally clicked it again.</p><p>Chrome immediately went to town on my RAM. Like a kid in a candy store with zero supervision, at that point I was properly irritated. The normal reaction would’ve been to close the tab and complain about it for five minutes, Instead I did what bored developers do: I tried to fix it.</p><p>So I started digging around to understand what was actually happening.</p><p>Turns out the issue isn’t mystical or complicated. When a chat gets long, the page loads a lot of conversation content into the DOM (basically the structure the browser uses to display everything). More content means more memory. More memory means Chrome starts sweating.</p><p>The solution was surprisingly simple, just don’t load everything.</p><p>So I wrote a small Chrome extension in JavaScript (with the help of AI ofc lol) that lets you load only a <strong>specific number of messages</strong> between you and the AI. Instead of the entire conversation rendering at once, it trims the visible chat down to a manageable slice.</p><p>Less content loaded → less memory used → Chrome stops trying to die.</p><p>Simple idea but big difference, the original name was <strong>GPTPrune</strong>, because technically the extension “prunes” the chat history, but the name annoyed me the more I looked at it.</p><p>So I changed it, now it’s called <a href="https://github.com/WindowsM16a/leanGPT"><strong>LeanGPT</strong></a>, which honestly just sounds cooler and also describes the goal better — a leaner, lighter ChatGPT experience that doesn’t choke your browser.</p><p>Once it worked, I tried getting it onto the Chrome Web Store and that’s where the adventure stopped being fun, the submission process was… rough. Between verification steps, documentation, small technical requirements, and random friction everywhere, the whole experience felt like pushing a car uphill.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/474/0*x4wii7bLptz45WFS.jpg" /><figcaption>me at that point</figcaption></figure><p>Eventually I just parked the project on GitHub. The back and forth wasn’t worth it. I just sent the zipped file to those who wanted it.</p><p>LeanGPT still exists. It works (as at time of this draft, which was months ago. I switched to Ubuntu for work, so i don’t have this issue again meaning i never had to use it again). I use(d to use) it. But it’s just sitting there for now until I decide I have the patience to wrestle with the Chrome Web Store again. Which is prolly never, unless someone wants to <a href="https://github.com/WindowsM16a/leanGPT/fork"><strong><em>fork it</em></strong></a> and continue.</p><p>And honestly? Even if it never goes public, it was still worth building. It reminded me that a lot of annoying tech problems aren’t actually that hard to fix once you stop complaining and start poking at them.</p><p>Sometimes boredom is the best trigger for building something useful. Just maybe not the Chrome Web Store part<a href="https://emojipedia.org/loudly-crying-face">😭</a>.</p><p>That experience?</p><p>Yeah… I would <strong>NOT</strong> go through that again, it traumatized me fr. I have so much respect for those of you who do it regularly — Derrick, Frankie, Topboy et al.</p><p>Till i edit and release the 6 other drafts, bye gaissss.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=271c75f514c7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CARSCOUT]]></title>
            <link>https://medium.com/@wuvershayne/carscout-731fdef42d17?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/731fdef42d17</guid>
            <category><![CDATA[cars]]></category>
            <category><![CDATA[helping-others]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[gui̇de]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Sun, 28 Dec 2025 00:46:58 GMT</pubDate>
            <atom:updated>2025-12-28T00:48:16.281Z</atom:updated>
            <content:encoded><![CDATA[<h4>buy a car without knowing shit</h4><p>“Except the people wey know car inside” — A friend of mine in the group chat, on the topic of Ebo Noah buying a benz instead of a proper car, like yk? a BMW lololol. As soon as I saw that text, my nerd ass brain started spinning gears in there, so I decided to mentally map out a plan, and boi did I cook!!</p><p>I wanted to build something useful and learn at the same time. So what did I do? I self hosted <a href="http://carscout.wuver.org">Carscout</a> on my own VPS and pointed it towards my own domain. Now I was thinking it’d be very hard, but honestly, it wasn’t. Well tbf, I do have some linux experience but that’s from years ago and I need a refresher like yesterday. I’m sure some of you are confused though, so where to start..hmmm.. Okay, so a VPS(Virtual Private Server) is basically a computer in the cloud — A virtual machine, where you can store stuff and execute programs/code continuously, in this instance, my code. It could be videos or whatever but that’s for another time.</p><p>The domain is basically a human readable name that’s mapped to an IP address. Think google.com, which could actually be <strong>142.251.40.206 (one of many it resolves to, depending on factors like location and server load. Google has quite a few lol $$$$), </strong>but who wants to be chewing that shit just to look up “how to tell a girl you like her,” right? Good. That’s one main function of the domain. So mine now points to my VPS’ IP address, hence entering carscout.wuver.org into your browser will resolve my VPS’ IP, and display whatever content it’s supposed to display, which is controlled by the software running on the server.</p><p>Okay, technical mumble over…for now lol. So yes, I figured that out, set up the VPS, and assigned the right records on my domain provider, namecheap. That was actually one of the hardest parts lol, especially when it came to setting up the custom mail service. You have to be cautious when you’re editing/creating records because one tiny slip up can cause a whole plethora of issues, ask me how I know lol. Had to restart multiple times but I figured it out in the end. Atp my mind is flashing back to when my SSL was not generating for whatever reason that was. Once I had everything set up, it was pretty much smooth sailing from there. I built everything in vanilla (HTML, CSS, JavaScript) and vanilla-sonner for toasts.</p><p>WHY? Because it’s for my final project for a class at school. Web development something something. It’s overkill, maybe, but this year a mantra i’ve seen bring great results is “go hard or go home”, so why not go hard these last few miles? We’re going to have to defend the project as well so I’m looking forward to that. Funny to think that a few months ago I’d have been shaking in my boxers cos of that lol.</p><p>ATM, most of it is just UI, I still have a lot of logic and even UI to write, but i’m tired now so i’ll rest. It’s not due for about a month so I can be pretty lax about it atp cos of where i’ve gotten it to. Knowing myself, I won’t. I’ll prolly be back on it tomorrow at 8am lol. Lemme add this😂. I encountered an issue and I decided to ask if anyone has had such an issue and this was the response:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jlpubtcYEyvgQEippRiHOg.png" /></figure><p>The ST boys are just something else, aren’t they🤣I’m glad to be part of the network though, it’s been fun, very educational, and extremely motivational. People dey take $2k buy chairs herh.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*WXdSaLNcwnfMGPDAnGcaLg.png" /><figcaption>logo isn’t perfect but no one will notice on the site lol. don’t get caught chasing perfection, ship and just ship.</figcaption></figure><p>Sooo… what exactly is CarScout? It’s a <strong>car‑search and recommendation site</strong> with these main features (some are still WIPs):</p><ul><li><strong>Home page</strong> that invites you to find your perfect ride.</li><li><strong>Categories</strong> of cars (like first car, family cars, fuel efficient, budget sports, etc.).</li><li><strong>Car Finder</strong> tool where you answer questions about your needs, and the site’s system suggests cars that match.</li><li><strong>Browse Cars</strong> to explore vehicles by category or type.</li><li><strong>Value Estimator</strong> to get an idea of a car’s worth or deal quality.</li><li><strong>Contact page</strong> with an email and phone/WhatsApp contact.</li><li>Messaging that the site uses <strong>smart/AI recommendations</strong> to match you with cars based on your budget and lifestyle.</li><li>Descriptions about making car buying simple and stress‑free, offering <strong>advice, best deals, and maintenance info</strong>.</li></ul><p>It’s essentially a car‑search guidance tool for picking and comparing cars.</p><p>I plan to do a rewrite eventually, for now idk the stack i’ll use then but i’m pretty sure it’ll be js. We go again tomorrow for v2, God willing. Again, I’m tired, bye.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=731fdef42d17" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yesterday was my birthday;]]></title>
            <link>https://medium.com/@wuvershayne/yesterday-was-my-birthday-95a87c1f6abc?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/95a87c1f6abc</guid>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Sun, 21 Dec 2025 19:20:02 GMT</pubDate>
            <atom:updated>2025-12-21T19:20:02.789Z</atom:updated>
            <content:encoded><![CDATA[<p>it did NOT feel like it.</p><p>So, yesterday was my birthday, and while I am grateful to still be alive and to see the 20th year of my life, yesterday was horrible.</p><p>Let’s go back a few days, Saturday, 13th December, Liger and I clutched a major W. It looked to be a forecast of how the 20th was going to be. (Yes 20 on the 20th lol). Unfortunately, Wednesday hit, and we lost our <a href="https://medium.com/@wuvershayne/vlh-setbacks-before-comebacks-69c3553441db">pups</a>, I was DEVASTATED, and THAT was the actual forecast lol. It was hard to eat, but I had to force myself because if I decide to give up, who cares for Liger and Milo(the grieving mom). I had a test on campus so I had to leave while my brother stayed behind at the vet. A c section was performed to extract the dead pups, and it went smoothly.</p><p>Then Saturday 20th December came along. Around 6pm, I was going to spray on a wound spray on the c section incision, when I noticed there was an undone stitch. Till date, I still haven’t found the word to describe the feeling I felt. After confirming I wasn’t seeing things, I tried reaching out to my vet to no avail and I hit up <a href="http://x.com/pawandpups">DR KRAMAIN</a>. He told me a few things to do while we tried to get a vet who could come over. Between my brother and I, we called almost 10. The answers were: “not around”, “ —”, or “busy”. Oh it was at this moment my food arrived, so I just went to get it and set it down somewhere.</p><p>I was about to call an uncle of mine for help, when I realised I’d missed his call. So I called him back, and he wished me a happy birthday. He asked how I was doing and I told him the situation at hand, and he also started looking for a vet. It took him about 4 tries but he got one, and he later came over. He resutured part of the womb, and redid the skin stitches. I sat outside waiting with her till the anesthesia wore off and I caged her, so Liger wouldn’t disturb her. Then I went to eat some cold ass loaded fries, smfh. This morning I woke up to find thick discharge, the dog developed an infection.</p><p>We quickly called the vet and he came over to do his assessment, and returned with some drugs to treat her. She’s fine now, albeit with a limp on her right hind leg. I’m just hoping she recovers fully and this bad energy does NOT follow me into 2026. 2025 was a good year, even though I had some major loses and turmoil like these. Yesterday was the scariest day of my life. Bye.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=95a87c1f6abc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[VLH: Setbacks Before Comebacks]]></title>
            <link>https://medium.com/@wuvershayne/vlh-setbacks-before-comebacks-69c3553441db?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/69c3553441db</guid>
            <category><![CDATA[sadness]]></category>
            <category><![CDATA[dogs]]></category>
            <category><![CDATA[dog-breeding]]></category>
            <category><![CDATA[loss]]></category>
            <category><![CDATA[pain]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 18:56:59 GMT</pubDate>
            <atom:updated>2025-12-18T18:56:59.973Z</atom:updated>
            <content:encoded><![CDATA[<p>I’m so gutted today.</p><p>I’ve been taking care of someone’s dog for nearly three months now, out of my pocket. Feeding, monitoring, vet visits, sleepless nights — basically living like a full-time caretaker on top of everything else. And the kennel — <a href="http://x.com/vonligerhaus">Von Ligerhaus </a>— was working on its first litter.</p><p>“Was” being the operative word.</p><p>All the puppies died. Five of them. Most likely drowned in the womb due to late birth.</p><p>This is one of those times where I should’ve gone with my gut, ignored external influences, trusted myself fully. I didn’t. And now, it’s fully on me. The sadness is real. I couldn’t even eat yesterday.</p><p>God being good, the dam underwent a c section to remove the pups, and she’s completely fine and recovering. I’m so grateful for that. That’s the silver lining — she’s okay.</p><p>And then I think about last week, just Saturday, actually. A big win. Liger’s pedigree earned, assessment done. Celebration mood. And now this. It’s almost like life doesn’t let you enjoy your wins for long.</p><p>It really sucks. The effort evaporates. The blood (yes, literal blood — don’t ask 😭), sweat, money, time… gone. Poof.</p><p>I even had a test yesterday. Didn’t study. Why? I was with the dog, making sure she was calm, comfortable, and not stressing herself. I even spent the night with her multiple times. That’s what matters when you care.</p><p>I’m still gutted. I don’t really know how to process it. But I will be fine. Setbacks like this are just part of the journey. The comeback? That one will be publicized.</p><p>Right now, I’m trying to reframe this as a lesson. What can I learn? How can I prevent this next time? How can I improve, adjust, and grow from it?</p><p>I’ll be fine. This is just a step before the next win. And when that win comes, it’ll be sweeter for all the struggle that led here. Today I said “i’m broke”, something I haven’t meant in almost 4yrs. Saturday’s my birthday, and I woulda tried to celebrate it at least because of Liger’s win but I don’t even have the means to do so atp. I’ll be fine, but bye guys.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=69c3553441db" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Von Ligerhaus Earned That.]]></title>
            <link>https://medium.com/@wuvershayne/von-ligerhaus-earned-that-d504130b9765?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/d504130b9765</guid>
            <category><![CDATA[motivation]]></category>
            <category><![CDATA[dog-breeding]]></category>
            <category><![CDATA[dogs]]></category>
            <category><![CDATA[entrepreneurship]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Sat, 13 Dec 2025 20:23:02 GMT</pubDate>
            <atom:updated>2025-12-14T08:25:24.621Z</atom:updated>
            <content:encoded><![CDATA[<p>what is vlh? read masa.</p><p><a href="http://vonligerhaus.com"><strong>Von Ligerhaus</strong></a> didn’t start as a business idea.<br> It started as obsession, frustration, love, and a lot of unpaid labor disguised as “passion.”</p><p>I’ve always loved dogs. I’ve had two before — Dipsi, a local–Dobermann mix who lived a full 14 years, and Brandy, a local girl who quite literally ran mad and disappeared from the house 😭💀💀. So dogs have never been a phase for me. They’re stitched into my life.</p><p>When Liger came into my life mid-year, something shifted. He wasn’t my first dog — but he was the first dog that made me want to <em>do something intentional</em>. I started paying attention to structure, temperament, genetics, movement. I started asking questions. I started reading. Watching. Comparing.</p><p>Then reality slapped me.</p><p>Good dogs don’t happen by accident, Great dogs cost time and Excellent dogs cost money, patience, and humility (I lost all my steeze😭).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8_h5mT-St7lRfaibTRTGuw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NDr2kCm6_nLu13b7FKqWEQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*4z2eBDyWgFRhJfs3Pr86Qw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p7SWdNbzoC3MYcCqtHDIQA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mxF6rURg_pyFFUarw5tokg.png" /><figcaption>convos with DR KRAMAIN</figcaption></figure><p>And I’ve spent all three:</p><p>Vet visits.<br>Food upgrades.<br>Training sessions (by myself btw).<br>Transport.<br>Paperwork.<br>Research.<br>More research.<br>And then expenses I don’t even track anymore because peace of mind is priceless and blood pressure is non-refundable lmao. I’ve honestly learnt so much about this craft of breeding, although cliché, it’s really not as easy as it seems, and i’m still learning and looking for ways to learn more. (stay tuned lol. update soon)</p><p>That’s how <a href="http://twitter.com/vonligerhaus"><strong>Von Ligerhaus</strong></a> was born — not because breeding is lucrative (the expenses are actively annihilating me), but because I fell in love with the Dobermann breed and wanted to contribute something meaningful. Stronger lines. Healthier dogs. Proper temperament. Not just vibes.</p><p>Fast forward to today.</p><p>Today was a great day for Von Ligerhaus.</p><p>We got to the venue early — very intentional. I needed Liger to get familiar with the place. Smell it. Feel it. Settle in. No rushing. No pressure.</p><p>Assessment began and we were called up first. bruh?😭</p><p>Newcomers.<br>Youngest on the block.<br>First into the ring.</p><p>Can you imagine these nasty odds? 😭<br>I was completely discombobulated but I pulled myself together quickly, switched to the competition lead (slip lead), and we took the stage.</p><p>It wasn’t without hitches. He refused to heel properly, which I expected. What I didn’t expect was how well he stacked and how calm he was with the judge’s touch. Liger was so composed I almost didn’t recognize my own dog. He stood still, confident, present.</p><p>We exited the ring.</p><p>Later, we went for results.</p><p><strong>Very Good.</strong></p><p>One step below <em>Excellent</em>.<br>And most importantly — we <strong>earned his pedigree!!</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Qynf1yN7ZNUDHsgk0RXY7w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*abnuyS2qYvQ933iVQfpWhw.png" /><figcaption>honestly, woulda gone with Liger house of Steeze, if i hadn’t already picked vlh</figcaption></figure><p>That moment made everything click.</p><p>All the time.<br>All the effort.<br>All the money.<br>All the stress.</p><p><strong>SO WORTH IT</strong>.</p><p>Liger gave me a reason to celebrate my birthday next week.<br>And that matters because I don’t celebrate birthdays. I haven’t since it became my choice — maybe since I was about 13. I never felt like I’d done enough in a year to deserve celebrating it.</p><p>This year changed that. So much has gone well. And today sealed it. I decided that if we earned this, if we walked away with that pedigree, we’d celebrate. No guilt, no second-guessing.</p><p>People were saying “2025 will be my year” in 2024.<br>I said <strong>“2025 <em>is</em> my year.”</strong></p><p>Difference is, I said it, put in the work, and now I’m watching it come to pass. This feels like the start of a long streak of wins, matter of fact, it is. <br> 2026 will continue it. Btw, I realized that even though I barely had faith, I still went on to setup (website, socials, google page, etc) like we’d gotten it. It’s almost as if deep down, I knew we could. So much thanks to Francis, a friend who trains dogs.</p><p>Francis took time out of his day to come to my place, from Kasoa, to help me with my luring. For free. God bless him. Then there’s <a href="http://twitter.com/pawandpups">DR KRAMAIN</a> who guided me through the whole thing from the day I got Liger, to the day I told him what I wanted to do, to the days I felt scared, till today. God bless that man so much! I appreciate him a lot.</p><p>oh btw, did all this with an injured dominant wrist. those who know what i’ve gone through, really know. injured my lower back last night as well, but I ignored it, I think i’ll visit the hospital and finally take care of myself too soon.</p><p>Anyways, i’m so happy but I need to go sleep because I barely had any last night. Why? oh just cos I bathed him and needed to make sure he didn&#39;t get himself dirty, so I spent the night with him. hahaha, i’m sleep deprived masa. bye.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*zJDi2h7SW0Ip9ri6OQ9klQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*tULJpynZ4sAjYrGPJcNabA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*z4oaw6z1ORKaBZtzfqnjCw.jpeg" /><figcaption>some pics from today.</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d504130b9765" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Auth & Auth]]></title>
            <link>https://medium.com/@wuvershayne/auth-auth-6d4eea7a58f7?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/6d4eea7a58f7</guid>
            <category><![CDATA[medium]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[life]]></category>
            <category><![CDATA[authentication]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Fri, 08 Aug 2025 22:15:53 GMT</pubDate>
            <atom:updated>2025-08-08T22:15:53.990Z</atom:updated>
            <content:encoded><![CDATA[<h4>Twins but not twins.</h4><p>DSA cooked me.<br>Not lightly fried — full-on, deep oil, fried and rolled in mako. Why? Because I decided to learn <em>outside the scope. Wh</em>y? I was scared. I thought it’d be hard in college since it’s a real-life test for big tech, thought I was being smart, becoming a scholar. The basic stuff I shoulda learnt? Lashed me straight. Lesson learnt. Stick to the brief &amp; necessary, then flex later.</p><p>On the other hand, I tore the java paper roff! I wrote and sat down and said: “naa the boy brilla roff.”</p><p>Anyway, today we’re talking about <strong>Authentication</strong> and <strong>Authorization</strong>. Aka Auth &amp; Auth. Same vibe name-wise, but completely different in the streets.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/698/0*rctNDaYCYhLpIYxj.png" /><figcaption>image simplifying the meaning &amp; distinction between authentication and authorization.</figcaption></figure><h3>Authentication: <em>“Who are you?”</em></h3><p>This is step one. Prove yourself. You type your password, scan your face, tap your security key — whatever the setup is — and the system decides, <em>“Yeah ayt, that’s you”</em>.</p><p>Think of it like bouncers at the strip club checking your ID. You’re either on the list or you’re not. If you’re not, you’re outside, hearing the bassline through the wall, fantasizing the grindings going on within those walls, prolly.</p><h3>Authorization: “What can you do?”</h3><p>Now you’re in the club. But can you get VIP access? Free drinks? Touch the DJ’s aux cord? That’s <strong>authorization</strong> — deciding what level of access you have <em>after</em> authentication.</p><p>You can be authenticated but still not authorized for certain actions. Example: You can log into an app, but still can’t delete another user’s account.</p><h3>Where People Get It Twisted</h3><p>People mix them up because in many apps, they happen one after the other — login, then access stuff. But authentication is <strong>identity check</strong>; authorization is <strong>permissions check</strong>.</p><p>The classic rookie mistake is thinking: <em>“If I know who you are, you can do anything.”</em> Nah. That’s how breaches happen. That’s how your intern ends up nuking production (*<em>cough cough</em>*). Also, it’s crazy how I have a firebase db with insecure rules (no authentication or authorization lmao) rn, but look at me typing away lol.</p><h3>JWT in the Mix</h3><p>If you read last week’s post, you know JWTs carry info. You can put both authentication claims (like user ID) and authorization claims (like role) inside them.</p><p>But remember:</p><ul><li>Auth <strong>must</strong> be verified server-side.</li><li>Auth (both authentication &amp; authorization) <strong>must</strong> be enforced server-side.<br> Frontend can <em>display</em> based on decoded token info, but never trust it to <em>enforce</em> rules. That’s like putting your club’s VIP list on a sticky note outside the door. Guy just never trust frontend, and i say this as a frontend dev lol.</li></ul><h3>Life Update</h3><p>LinkedIn posting challenge? Kapoot lmaoo. No attempt to resurrect it either. A lot is happening, and I feel like I might implode, but what doesn’t kill you makes you stronger. Haven’t blogged consistently either, because life’s been running trains on me — work, school, random hospital &amp; vet trips.</p><p>I’m learning to pace myself, though. And yes, me and Liger are still vibing. He’s settled in, but he’s still picking up &amp; learning patterns, probably wondering why his human spends so much time staring at a laptop.</p><h3>Takeaway</h3><p>Authentication: <em>“Who are you?” </em><br> Authorization: <em>“What are you allowed to do?”</em></p><p>Twins in name. Not twins in function.<br> Mix them up, and you’re gonna have a security headache.</p><p>If you still don’t get it, picture this: you sneak into a private golf club. You’re inside, cool. But you can’t play — because all the clubs and balls are locked in members’ suites. You bypassed authentication, but you never had authorization.</p><p>Next week? Prolly not tbh. Might get back to something technical, might rant about life. Depends on whether life lets me breathe. Big (to me) update coming soon.</p><p>Till then,<br> Byee.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6d4eea7a58f7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[JWTs, Falling Off, and Fighting My Way Back]]></title>
            <link>https://medium.com/@wuvershayne/jwts-falling-off-and-fighting-my-way-back-208eae1f3815?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/208eae1f3815</guid>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[jwt-token]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Fri, 11 Jul 2025 23:00:52 GMT</pubDate>
            <atom:updated>2025-07-11T23:00:52.264Z</atom:updated>
            <content:encoded><![CDATA[<h4>It’s been a while haha….</h4><p>The daily LinkedIn posting challenge I was participating in? Flopped. Completely. I guess the <em>“challenge”</em> part hit harder than expected. I thought consistency was just about discipline — turns out life’s waaayyyy louder than your calendar.</p><p>It’s also been two weeks since my last blog post. I didn’t mean to ghost, but life’s been lashing me. Between work deadlines, school stress, random hospital runs, and the haunting backlog of DSA I need to finish in two weeks… I’m so cooked, but Declan believes in me.</p><p>But I’m still here. Still writing. Still learning.</p><p>So let’s talk about JWTs. Because even with all this chaos, I’ve been diving into them this week — and a lot of y’all need clarity.</p><h4>What Even Is a JWT?</h4><p>JWT stands for <strong>JSON Web Token</strong>. It’s a compact, URL-safe string used to transmit info between two systems — usually between a frontend and a backend server.</p><p>It has 3 parts:</p><ol><li><strong>Header</strong> — defines the algorithm (HS256, RS256) and token type.</li><li><strong>Payload</strong> — the actual data (user ID, role, etc).</li><li><strong>Signature</strong> — validates the token hasn’t been tampered with.</li></ol><p>Think of it as a signed JSON object. No DB lookups needed to verify who someone is. Lightweight. Stateless. Clean.</p><p>Until it’s not.</p><h4>Common Misconceptions About JWT</h4><h4>1. “JWTs are encrypted.”</h4><p>Nah. They’re just <strong>encoded</strong>, not encrypted. Anyone with the token can decode the payload. If you store sensitive info in there, you’re basically leaking data with style.</p><h4>2. “JWT = Authentication.”</h4><p>JWT is just a <strong>format</strong>. It’s not authentication by itself. You still need proper login, validation, user management — the JWT just carries info once you’re in.</p><h4>3. “Tokens should last forever.”</h4><p>Please no. Long-lived tokens are a security liability. Always use short-lived access tokens (5–15 minutes) and pair them with refresh tokens.</p><h4>How JWT Should Actually Be Used</h4><ul><li>Use it <strong>after login</strong> to issue a short-lived access token and a refresh token.</li><li>Keep sessions <strong>stateless</strong> — no session storage needed server-side.</li><li><strong>Never</strong> store private or sensitive data in the payload.</li><li>Always <strong>verify</strong> tokens on the backend before trusting any of their contents.</li><li>Store the access token in <strong>memory</strong> or an <strong>HTTP-Only cookie</strong>, not localStorage.</li></ul><h4>Should the Frontend Decode It?</h4><p>You <em>can</em>. But honestly… you probably <strong><em>shouldn’t</em></strong>.</p><p>Yes, decoding a JWT on the frontend shows you the user info inside, but the frontend <strong>cannot</strong> verify its validity or expiration. That’s backend territory.</p><p>Frontend logic like:</p><pre>if (decoded.role === &#39;admin&#39;) {<br>  showAdminPanel();<br>}</pre><p>is fine for vibes, but don’t rely on it for real access control. You’re trusting unverified info.</p><h4>Better practice:</h4><p>Make <strong>separate endpoints</strong> for different roles or access levels. Let the <strong>backend</strong> gatekeep what data comes through. The frontend should <strong>ask</strong>, not assume.</p><h4>Where I’m At</h4><p>I’ve been slipping. No posts in two weeks. LinkedIn challenge dropped. Behind in school. Deadlines flying at me. And DSA’s on my neck.</p><p>But I’m trying.</p><p>Trying not to beat myself up over it. Trying to keep showing up. Trying to write through the noise. I don’t have the balance figured out. I’m still learning how to handle it all without breaking.</p><p>This week reminded me that consistency isn’t always daily — it’s about returning. Even after falling off.</p><h4>NEXT?</h4><p>Next post, we’ll probably break down <strong>authentication vs authorization</strong> — what they are, how they differ, and how JWTs tie into both. Most people mix them up. We’re fixing that soon. Sorry, I can’t post weekly no,w but hopefully I’ll bounce back to that soon.</p><h3>PRAY FOR ME!</h3><p>I’ve got two weeks to go from “meh” to “DSA demon.” So if you’re reading this, pray for me and wish me luck fr. I need it.</p><p>Hopefully, by next post, I’m back in motion. Posting again. Riding again. Writing without fighting life to do it.</p><p>Until then,<br> Byee.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=208eae1f3815" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deadlines, Bikes & the 4AM Call That Brought Liger Home]]></title>
            <link>https://medium.com/@wuvershayne/deadlines-bikes-the-4am-call-that-brought-liger-home-8189c82f5e50?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/8189c82f5e50</guid>
            <category><![CDATA[growth]]></category>
            <category><![CDATA[happiness]]></category>
            <category><![CDATA[winning]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Sat, 21 Jun 2025 22:19:11 GMT</pubDate>
            <atom:updated>2025-06-21T22:19:11.583Z</atom:updated>
            <content:encoded><![CDATA[<h4>My Ass Hurts.</h4><h4>This week’s been pressure.<br>Straight pressure.</h4><p>Work’s been wild — deadlines blowing left and right. Same story in school. It’s like I’m being tag-teamed by everything I said “yes” to. You’d think I’d be used to it by now, but no. Every week still feels like a new season of “Will I Make It?”</p><p>One test this week really hit different. Four of us were racing to submit. Deadline was 3:00PM. I dropped mine at 2:59. Three of us made it. One didn’t. A few seconds late. We were all just quiet. Not that fake “oh chale sorry” quiet — but the kind where you actually feel the weight. Because we all knew the tension. The mental marathon. Missing it by a hair? Sickening.</p><p>Work-side, I’ve been moving. One side project I’m working on with friends is finally taking shape. We’ve been juggling time zones, life, and other stuff, but it’s coming together. Not sharing too much now, but it’s the type of thing that makes you want to show up — even when you’re tired, even when you’re burnt. That kind of purpose.</p><p>And then came the Liger saga.</p><p>So, context — I’ve had two dogs before. Loved both. First one left as a result of old age, second one, my dad took his thing lol. But it’s just been me for a while now. No dog. So when I say I convinced my mom to let me have another, I mean <em>another shot at that joy</em>. Been begging for months, prolly pushing a year and a half now. This week? An opportunity came and said yes. But the win was short-lived — Liger was in Swedru. No plans. No rider. No transport. Just distance.</p><p>I was crushed. Real tears almost fell. I didn’t fight this hard to fumble on logistics. Not after all the begging, negotiating, praying. I wanted him bad.</p><p>Then at 4AM, my phone lit up. WhatsApp call. Half-asleep, I picked. And boom — solution. Just like that. Like the problem dissolved in the night and came back with peace. Liger was on his way. My boy was coming home.</p><p>And now? He’s here. Liger. My third dog, but the only one right now. My new companion. My new chapter. I can’t lie, I feel full. Like something clicked into place.</p><p>Outside all that, I’m still riding. Got back on the bike this week. Not as frequent as I want, and I don’t fully trust this particular bike — it feels a little off — but still. The road’s been helping me process. I don’t always feel strong, but I do feel alive. That’s enough, my ass hurts like hell though cos there’s no foam on the seat lol. Had to ride it for about an hour on Thursday and Friday as well, so imagine. My behind’s on fucking fire.</p><p>Been thinking about what it means to really be “<strong>okay</strong>.” I used to say it out of habit, even when things were falling apart. But now? I think I mean it. Not because life’s perfect, but because I’m not crumbling under the imperfect parts. I’m accepting, adapting, adjusting. Growing in ways I never saw coming.</p><p>Every week throws something new at me. Emotionally, mentally, spiritually. But I’m still here. Still riding. Still hoping. Still building.</p><p>This week reminded me that I still care. That I still want things deeply. That I’m allowed to be soft and still stand ten toes down for what I want. My age is starting to sound too serious for fear of the unknown (<strong><em>whether I’ll get what I want or not</em></strong>) to hold me back. Whether in relationships or any other aspect. I give it a 100. If it fails, it fails, but I know for sure, I gave it my all.</p><p>Next week might trip me, might not. But either way, I’m ready.<br>Me, my bike, and Liger.</p><p>Till next time. Byee.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8189c82f5e50" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[9.5km, Deadlines, Growth.]]></title>
            <link>https://medium.com/@wuvershayne/9-5km-deadlines-growth-450026a90872?source=rss-643a48f4e8ae------2</link>
            <guid isPermaLink="false">https://medium.com/p/450026a90872</guid>
            <category><![CDATA[maturity]]></category>
            <category><![CDATA[exercise]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[growth]]></category>
            <dc:creator><![CDATA[Shayne Wuver]]></dc:creator>
            <pubDate>Mon, 16 Jun 2025 00:02:06 GMT</pubDate>
            <atom:updated>2025-06-16T00:02:06.717Z</atom:updated>
            <content:encoded><![CDATA[<h4>This Week Was a Lot, but I’m Good</h4><p>This past week spun me. Not in a bad way. Just… a lot. Like full throttle, but somehow I’m still in control. Kind of.</p><p>First off, I missed two LinkedIn posts in a row. And Medium. I broke my consistency streak, and that’s something I hold dear. It’s not even about the algorithm — it’s the principle. I said I’d do something, and I didn’t do it. I’d be lying if I said it didn’t get to me. I hate breaking my word, whether consciously or not, whether intentionally or not, I just hate it.</p><p>But at the same time? I’m weirdly okay. And it’s not because I don’t care. It’s because of the work. The internship’s been mad. We’re behind schedule, stuff’s piling, the pressure is pressing — but I love it. I’m dead serious. This kind of pressure has given me life in a way I didn’t expect. There’s something about knowing you’re part of a team that’s building something, being trusted to figure things out (even when you’re secretly shaking inside), having people you can ask when you’re stuck without feeling like an idiot. I’m in my element — even if that element is mostly caffeine, debugging, and vibes.</p><p>Nothing else has ever made me feel like this.</p><p>Except cars, obviously. You already know.</p><p>I was thinking about that rush when I got on a bicycle today. My uncle “stole” our neighbor&#39;s bike last two days, but he traveled yesterday and he didn’t return it, so I thought, why not lol. First time in three years. I almost didn’t go. Was about to let the day pass like the others, but something told me to move. I ended up clocking 9.5km in 40 minutes. Should’ve been 28ish, but I forgot to pause the timer when I stopped to talk to friends or pick up calls. Still proud though. Still got it. Funny how muscle memory stays tucked in your body, just waiting.</p><p>Speaking of memory, Siri mistakenly called someone I haven’t spoken to in forever. I was actually trying to call someone else, but her name popped up, and before I could cancel it, the call had gone through. She didn’t pick up, but she texted, and I replied. I almost didn’t. The old me would’ve ignored her text. But I just… I don’t know. Something about the moment felt like it was supposed to happen.</p><p>So we talked. No drama, no dragging, just chill vibes. It’s wild how much we’ve both grown. The maturity was refreshing. We didn’t dig up old stuff or force awkward closure. We just moved. Clean. Quiet. I’m honestly proud of myself. I didn’t realize how much I’ve changed until that moment. I didn’t need to prove anything, didn’t need to be heard — I just wanted peace, and I gave it. It’s little things like that that show you your own progress.</p><p>I’ve been thinking about growth a lot lately. Got a couple of tests this week, and honestly? I’m not even sure how they’ll go. I’ve been caught between doing work, recovering from work, and thinking about everything I <em>should</em> be doing that I’m not. That guilt spiral. I’m learning to let that go, though. Trying not to punish myself for being human.</p><p>Randomly, two things piqued my curiosity this week:</p><ol><li>How standing fans work (<strong><em>like how the head rotates — turns out it’s a clutch + cam + crank situation</em></strong>),</li><li>How explorers used to fund their trips back in the day (<strong><em>spoiler: rich patrons, royalty, or straight up colonizing for profit</em></strong>).</li></ol><p>Anyway. Not important. Just side quests from a restless brain.</p><p>What surprised me this week, though, was realizing that I’m actually looking forward to graduation. And that’s new. I’ve never really been the “ceremony” type. Never cared for the hype or the dressing up or the staged smiling. But this one? It feels different. I think it’s because I know how hard I’ve worked to get here. It’s not just about leaving school — it’s about surviving everything that tried to break me along the way. I want that moment. I need it.</p><p>This week wasn’t perfect. I missed things. Dropped a few balls. Didn’t write. But somehow, I still feel whole. Still feel like I’m moving. Still feel like me.</p><p>And I like who that is. I just hope the energy from this week carries over. I can’t afford another May pt. 2. That one almost finished me.</p><p>But for now, we good.</p><p>See you when I see you. Byee.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=450026a90872" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>