Cheat Meals

I’ve never understood the idea of “cheat meals.” You’re working toward a goal, like weight loss, and others convince you that you simply “can’t eat healthy all the time.” That’s nonsense. Not only did you set your goal and push yourself to stick to it, but you’re giving yourself an out to be lazy and half-ass your committment.

Can’t exists only as a scapegoat - something that you can blame your slow progress or your lack of will on.

“I tried to lose weight, but I can’t.”

“I tried to exercise, but I can’t.”

“I can’t eat healthy forever.”

“It’s too hard” is another one I hear a lot. If your committment is too difficult, back it off a little. Stop putting too much pressure on yourself. Weight loss and fitness isn’t a battle that can be won over a few weeks. For most, the committment is a lifelong journey. Set your goal further out and take it slower.

Eating better is 100% up to you. No one is forcing you to eat cheeseburgers for lunch every day. No one begged you to have an extra slice of cake, or any slice of cake for that matter. All of those decisions are yours and yours alone. Either do it or don’t.

Can’t is that voice in your head pushing you to quit. It allows you to give up when things get tough. Pretty sure I’m not the only runner whose brain says, “WTF are you doing? It’s cold, early, and we’re tired. Take your shoes off and go back to bed. Three miles today? Are you crazy? Let’s go have a big breakfast and relax instead.” We just do our best and tell that voice to shut the fuck up. We have things to do.

412 bruh

I thought we all agreed that wine sommeliers were absolute nonsense. But instead of the idea naturally disappearing, it scaled into every market needing pretentious over-analysis. Now, even weed gets this treatment, with descriptions that sound like they’re ripped from a romance novel.

Her petals delicately dropped down past my silky lips, while her essence tingled not only my tongue, but my sensitive inner being.

It’s just weed. You smoke it to get high. Let’s tone it down.

At this rate, high-end restaurants might start saying things like, “I recommend pairing tonight’s Coq au Vin with O-G Diesel MF. Just two hits from the Platinum Bong, with its piney and spicy notes, will enhance our Merlot mushroom reduction beautifully. It’ll add fruity undertones and awaken your palate.”

Bruh

Web Scraping

Web scraping with Python has become my latest passion. Take, for instance, the challenge of keeping up with my daughter’s Little League schedule. The league’s way of managing game calendars is over-complicated and requires a login to view. My wife has struggled to stay updated due to their clunky and slow web calendar, as well as not having the time to copy & paste into our family calendar. Is it really so hard to offer a public .ics or even a Google Calendar?

So, rather than wrestling with their unique solution every day, I wrote a web-scraping script so the computer can do the work. Setting up this kind of thing to automatically grab info for me is super handy, which I briefly talked about here.

import asyncio
from playwright.async_api import async_playwright
import json
from urllib import request, parse
import datetime

today_code = datetime.datetime.now().strftime('%a %b %d')  # match the date format on the site "Thu Apr 11"

def send_message_to_slack(text):
    post = {"text": "{0}".format(text)}

    try:
	    json_data = json.dumps(post)
	    req = request.Request("https://hooks.slack.com/services/API_KEY",data=json_data.encode('ascii'),headers={'Content-Type': 'application/json'}) 
	    resp = request.urlopen(req)
    except Exception as em:
	    print("EXCEPTION: " + str(em))

async def scrape_event_cards():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        // removed for privacy //
        await page.get_by_role("button", name="Sign in").click()
        await page.wait_for_selector('.event-card')
        event_cards = await page.query_selector_all('.event-card')

        def clean_text(text):
            lines = [line.strip() for line in text.split('\n') if line.strip()]
            return ' '.join(lines)

        rina_baseball_message = ""
        for card in event_cards:
            text_content = await card.text_content()
            cleaned_text = clean_text(text_content)
            
            # Check if cleaned_text starts with today's day code
            if cleaned_text.startswith(today_code):
                rina_baseball_message += "\n>" + cleaned_text

        if rina_baseball_message != "": 
            send_message_to_slack("⚾ RinaBot 🧢\nToday's Schedule: \n" + rina_baseball_message.strip())

        await browser.close()

Setting up bots like this are great, because it allows me to look at Slack to know what’s important for the day.

Rina Ball

Cardio & Health

Bouncing back from significant abdominal surgery has been a challenge, especially when it comes to burning calories, as I’ve been facing new physical hurdles every week.

However, the Meta Quest 3 VR we got a few months ago has been a game-changer for me and the kids. It’s packed with a lot of fun games that make you excited to jump back in. One standout is Les Mills Body Combat, which mixes the addictive formula of games like Rock Band and Beat Saber with intense kickboxing cardio workouts. It starts off easy but keeps you engaged with a variety of moves like punches, knee slams, squats, and dodges. I end up exhausted but always ready for more. Honestly, after just finishing an hour-long session, I’d much prefer another few rounds over sitting through yet another data meeting.

I highly suggest getting a Meta Quest VR 3 and setting up a dummy Facebook account to go with it. Anyone with a bit of self-respect probably doesn’t a real Facebook account much, if at all, and if you’re reading this, chances are you don’t either.

Kids Rollerblades

My son and daughter racked up enough Special Points to get themselves brand-new rollerblades. Their old skates were kid-sized, so this was their chance to step it up.

I laid down one rule: no skating in the house with that black rubber brake on, because I wasn’t about to scrub skid marks off the floor. They asked me to take off the brake, which I did, but it left a big gap between the bolts. I measured the space, whipped up a spacer with our printer, and in no time—less than four minutes—they were zooming away, brake-free and ready to go.

Kids Rollerblades

Hole in the Ass

Wait, how long have my pants had this hole, and nobody told me?? I’ve been all over the place in these. Dropped my kids at school, so yeah, been around a bunch of kids.

I was about to say I’ve been other places too, but actually, I don’t go anywhere but this chair. Never mind. We’re cool.

Hole in the Ass

Automation & Minimalism

Reddit’s r/selfhosted is an interesting place. They have a significant amount of knowledge regarding open source tools that can be run from a home computer. Most of the tools are incredibly helpful, but many are simply beginner projects that are nothing more than a good idea.

One of the more popular things to self-host is a monitoring dashboard. Grafana is popular, but there are many others that fit various needs. Users on the self-hosted subreddit pride themselves on having massive amounts of information in front of their faces all day. These dashboards include everything from server latency, temperature of thier CPU, banned IP addresses, and even the weather outside.

With all the automation and data that I deal with daily, I have one dashboard: my stock portfolio. It’s not something that’s always open on my desktop. It simply collects data and shows me current status of my stocks. The portfolio is there when needed, but it’s usually an afterthought. In fact, most of my automation doesn’t require me to chase status. The scripts are typically written to notify me if something is wrong or needs attention. Even my massive data gathering scripts at work only notify me if something is wrong.

Whether it’s banking automation, counting down to a meeting, or picking a movie for “Movie & Video Game Night” with my kids, each system delivers the necessary information when it’s needed. I know people who have dedicated TVs for displaying cameras, network status, weather, and anything else imaginable. What’s the point of all that? I suppose they’re the same people that need a watch that acts as a second phone, or dream of a computer strapped to their faces all day.

Perhaps I’m just old and don’t care for all these in-your-face notifications all day. I prefer simplicity, minimalism, and need-to-know.

Getting Old is Bullshit

After reaching the ripe old age of 40+, things clearly don’t want to work anymore. Waking up is a daily reminder of our own mortality when something ‘feels off’ or a random painful body part reminds you that it’s still there.

Last Friday, despite my history of medical issues, things were feelin’ pretty decent. There was no discomfort or pain holding me back from having fun and playing with my kids. However, that feeling didn’t last too long. Turns out that lifting my daughter was just enough to throw out my back, neck, and left shoulder. The pain from this kept me laid out all weekend with only movies to entertain me. If you noticed the influx of new movie reviews, well that’s because I was drugged up and laying flat the whole time.

I sure do miss the days of being 20, but maybe that’s why my body is the way it is. Oh well…

Google Makes Me Hate Technology

Learning new stuff when it comes to tech, is one of the few things that makes me happy in life. I spend a good deal of time learning how to automate tasks that would normally be a manual calendar event. Automation is actually quite easy with the amount of tools we have available. Large, open source, projects or personal coding exercises solves most of these quite easily. If you visit my main site, you’ll find many examples of tasks or projects where things are automated.

Having worked at Google for nearly a decade and a half now, I’ve watched this company change significantly. Google had always been a place where ideas thrive, personal projects are encouraged, and the access to information is a quick search away. This is sadly not the case any longer.

It seems that every time I want to do something simple or get access to an arbitary piece of data, there’s a 300 page doc that needs to be read, approvals upon approvals needed, massive libraries of permissions requests, systems that didn’t exist last week that serve to only over-complicate things, or processes that exist only to add extra steps.

I’m honestly getting really tired of it all. Every day is an exercise in frustration, to the point where I simply don’t have the energy or motivation to do the layers dance. There are projects on my plate right now that could be automated at home in maybe a few minutes, but at work it takes reading a few novels and learning five new systems. I’ve had “automate ___” on my to-do list for months now, but having the time or the patience to deal with the excessive horseshit simply isn’t worth it. So for now, they just sit on my calendar as a reminder to run them manually or go through whatever nonsense is needed to complete the task. It’s easier just to do it manually for 30 minutes a day forever than do the Google layer dance.

It’s sad for so many reasons. It’s an environment where creativity and learning simply doesn’t exist any longer. This used to be a place where the curious would thrive. Now it’s just an unforgiving red tape monster.

I’ve always been someone at work that people go to for answers. Usually I’m pretty helpful to the point of writing the code for them or teaching them the answer. Even if I have a lot of tasks that day, I’ll still take time out to help someone. Allowing a coworker to be more productive, at the sacrifice of a few minutes, is well worth the investment. Lately, my attitude has changed.

Simple questions turn into a slog through layer upon layer of horseshit. We both become frustrated and lose a significant amount of time during the journey. A simple task to help someone stuck has now become a waste of time for us. Maybe a potential solution is somewhere down the road, but the amount of time it takes to get there has become 10x. Now I need to prioritize and vet the request as if they’re a customer and not a peer.

That’s what you get with this new culture and the massive amount of unnecessary bullshit. I don’t think this is what Google originally meant with “10x.”

Ice Skating

We took the kids to a birthday party at a SJ Sharks ice skating rink last night. I haven’t skated on ice in nearly a decade, and the kids haven’t ever. They have been practicing on regular skates around the inside of the house and naturally picked up ice skating real quick. My son, who usually lacks confidence in things, picked it up incredibly fast and had no issue leaving me and my daughter in the dust.

The party had pizza (made by the snack bar) and lemonade, which wasn’t bad. Although, the kids at the party felt it necessary to touch all of them throughout before grabbing the perfect slice. We ate a few and hit the ice shortly after.

Immediately I knew something wasn’t right… I got on the ice and my heart rate was unusually high. Maybe just excited / nervous to be skating again. As soon as we started moving, my heart kept missing every other beat. It felt like someone was punching me in the chest repeatedly. I didn’t want to let my kids know something was wrong, so I pushed through. After a few laps around the rink, this was getting scary. I let my kids go ahead of me and stood holding the wall far behind. I messaged my wife, “Something is wrong. I’m going to sit down.”

As long as I was sitting, my heart had no issue. Standing up was another story.

We had ~30 minutes remaining on our rink time, and I didn’t want to disappoint my kids, so I pushed through again. As soon as I stood up, a big burp came out and I started to feel better. Maybe I’m lactose intolerant now and the gas from the cheese was pushing on my Vagus Nerve. Who knows? I had been feeling crappy all week from other medical issues, and this is just one more thing to figure out.