No cellphones at the Masters

I was lucky enough to attend my first ever practice day in Augusta at the Masters and one of the unique features of this tournament is a no electronic devices, including cell phones, policy. It was wild walking around and not seeing a single person all consumed by looking at their screen. Everyone was just in the moment enjoying the day.

The one thing I noticed was I kept checking my pocket for my phone. Or would be wondering about something and not being able to do a quick search. Or even not take a quick photo of the amazing scenery.

The only real downside was the logistics of keeping up with your friends. With 50,000 patrons on the course you have to really pay attention to your group or tell each other to meet at a certain spot at a certain time to regroup.

It was really refreshing and something I want to try to do more of from time to time. Just leave the phone behind and stop having it as a crutch for when I’m bored for two seconds.

GitHub Host key verification failed

As I came into work this morning I went to pull from GitHub and hit the error:

Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
Please contact your system administrator.
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/username/.ssh/known_hosts:1
Host key for has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Turns out GitHub had discovered that’s RSA SSH private key was briefly exposed in a public GitHub repository and more details are in their announcement:

The fix was easy, and I just removed the “GitHub” line from .ssh/known_hosts so it was regenerated. But you can also follow along in that article for updating it manually.

Display the query from a Filament Table

I’ve been playing around with Laravel Filament Tables and as I was building a really complex table with multiple filters, I noticed that I wanted to see what the query being generated was. So I hacked together a little thing to show it:

If, for some reason, you ever wanted to do this, I added a “getDebugSqlProperty” method on the Livewire Component that was taken from this tweet:

public function getDebugSqlProperty(): string
    return array_reduce($this->getFilteredTableQuery()->getBindings(), function ($sql, $binding) {
        return preg_replace('/\?/', is_numeric($binding)
            ? $binding
            : "'".$binding."'", $sql, 1);
    }, $this->getFilteredTableQuery()->toSql());

Then in the view call this Live computed property like this:

<pre><code>{{ $this->debugSql }}</code></pre>

Happy hacking!

Golf Birdie Tracker

Golf is hard but that’s why I enjoy it. One day you could play the best you’ve ever played, the next day it could be the worst. To me that is the fun of it. As an amateur I’m always trying to get better and with golf being an individual sport it’s you against you. Of course, you can enter tournaments but even on the tour they are basically competing against themselves until the final few holes.

To make things fun a buddy and I that have about the same game started a new year long event where we try to birdie all 18 holes at our local course. The first to do it wins, and so far neither of us have came close. To help me track this any spreadsheet will work, but Notion is almost perfect with the way it’s designed.

I set up a simple table and then check boxes for each hole I birdie throughout the year.

It’s just a neat way looking back on your results and seeing what holes are your nemesis. Last year I was four away and three out of the four I’ve never birdied. So I have a lot of work to do for this year.

Circle of life

I remember loving playing video games when I was just a little lad. I’d stay up and play Doom on my Sega when I was supposed to be in bed. Then having nightmares of a monster saying, “it is well hidden,” before murdering me. My parents never understood why I loved video games and why I’d rather play those than go outside. Honestly, I still don’t understand but I chalked it up to just being the way I am.

Now, as a parent, I get to experience the same thing. My kids love certain games and I am terrible at them. So I get to lean on them to help me play and solve the puzzles. A lot of it boils down to me not having unlimited time to dedicate to them, but another part is I’d rather them experience the joy that comes from teaching me.

As parents, we are expected to teach and lead our children, but as they grow, more can be taught to kids by reversing the roles and letting them become the master in certain areas. Video games are one of these ways. What better enjoyment as a parent than seeing your kid light up as they explain something they’ve figured out without you?

ChatGPT vs Google

I’ve heard more and more about ChatGPT being a threat to Google and its dominant position as a search engine, and I must agree. Today was a prime example where I was trying to get help writing a specific regex. After twenty minutes of not finding what I wanted from a Google search, I figured I’d just try ChatGPT. Within a few seconds, it got me closer to what I wanted than any of Google’s search results.

This is just one example, but I’ve noticed and I’m sure you have too, how Google is terrible with a lot of searches now. For instance, try to find a product review from someone that is not a low-effort semi-spam site. I’m pretty sure everyone is just appended “reddit” to their queries now, but it’s time for a real competitor to come up and give Google competition.

Tweetdeck Beta

The other day I heard some rumblings that Tweetdeck still worked after all the good 3rd party clients got the axe. I logged in to try it out again and it said I could use the new beta or preview version.

I must say it’s much better than the old Tweetdeck but nowhere close to Tweetbot. However, if you want to try it now, @claudia_rndrs shared a JS tip on how to enable it:

document.cookie = "tweetdeck_version=beta"

The main benefit is I can now use a list as my main feed and see everything all together. Unfortunately, if you have multiple accounts, you can’t combine feeds.

Football Ticker: Negative Score?

Today I was watching the NFL post-season games and my wife asked me why the score was negative. I didn’t think much about it, telling her it is supposed to designate who has the ball.

Then tonight, I came across a Reddit thread with the same scenario and it made me realize how terrible of a design this is. Just goes to show how a design one thinks is clear can be confusing to others.

Extreme questions to trigger new, better ideas

Great article by Jason Cohen:

How do you come up with fresh, transformative ideas?

“Brainstorming” is hard—staring at a blank whiteboard, wondering whether someone could make a real-life “dark mode” whiteboard, then realizing that’s what a blackboard is, only dustier.

The following prompts jostle you out of tiny thinking. Each stretches some dimension of reality to an extreme. So extreme that it is nearly nonsense. But dramatically different perspectives can reveal distinctly new ideas. An idea that would be a 60% solution in an extreme hypothetical case, could be a 2x or even a 10x idea in reality.

This reminds me a lot of the book “How to live” by Derek Sivers and taking extreme positions or ideas and seeing how they could or couldn’t fit your life and business. As he says in his book, “Creativity comes from shaking things up.”

Minimal Setup for PhpStorm

Brent has a neat video showing how he sets up his PhpStorm to be super minimal:

I decided to follow along and I think the results ended up pretty nice.

I couldn’t go full light mode, I’m just not a fan unless I’m working outside. Also, keeping file explorer on the right because I’m not a monster.

In the screenshot I’m using the Nord theme with Inter font, and everything else is setup based on Brent’s instructions.

Twitterrific: End of an Era

It’s a sad day for 3rd party Twitter clients as it seems Elon’s Twitter has decided to fully announce they aren’t allowed anymore. As such they are all shutting down and this is from Twitterrific which helped shape early Twitter:

Twitterrific has been discontinued.

A sentence that none of us wanted to write, but have long felt would need to be written someday. We didn’t expect to be writing it so soon, though, and certainly not without having had time to notify you that it was coming. We are sorry to say that the app’s sudden and undignified demise is due to an unannounced and undocumented policy change by an increasingly capricious Twitter – a Twitter that we no longer recognize as trustworthy nor want to work with any longer.

Since 2007, Twitterrific helped define the shape of the Twitter experience. It was the first desktop client, the first mobile client, one of the very first apps in the App Store, an Apple Design award winner, and it even helped redefine the word “tweet” in the dictionary. Ollie, Twitterrific’s bluebird mascot, was so popular it even prompted Twitter themselves to later adopt a bluebird logo of their very own. Our little app made a big dent on the world!

Reading Twitter with Feedbin

With what appears to be the demise of 3rd party Twitter clients one feature that I’ve sorely missed is multiple panes all with my different lists open. It’s how I’ve read Twitter for years and for me it was a nice simple way to stay up to date with random things from a quick scroll through.

Since that is gone and probably never coming back I found a little workaround using Feedbin to subscribe to my saved lists. Plus this also has a secondary advantage:

Feedbin treats tweets differently. The idea of the feature is to fully unpack the tweet. If a tweet links to an article, Feedbin will attempt to load the full article and display it alongside the tweet. Feedbin will also include full-size images, videos and gifs with native YouTube, Vimeo and Instagram embeds.

Here is an example of a Tweet from Leo Babauta from Zen Habits with his article inline:

Now I can just open up Feedbin, scroll through everything new and I’m seeing the same content, better formatted than I ever did with Twitter app.

The Art and Science of Spending Money

I really enjoyed this article from CollabFund on money, but this quote included by Richard Nixon really struck out to me:

The unhappiest people of the world are those in the international watering places like the South Coast of France, and Newport, and Palm Springs, and Palm Beach. Going to parties every night. Playing golf every afternoon. Drinking too much. Talking too much. Thinking too little. Retired. No purpose.

So while there are those that would disagree with this and say “Gee, if I could just be a millionaire! That would be the most wonderful thing.” If I could just not have to work every day, if I could just be out fishing or hunting or playing golf or traveling, that would be the most wonderful life in the world – they don’t know life. Because what makes life mean something is purpose. A goal. The battle. The struggle – even if you don’t win it.

I always tell my wife I’m going to retire and play golf everyday, but in reality while it’s a sport I could see myself playing everyday I’m just never going to be good enough to make money from it. It’s a fun hobby that gets me out of the house and lets me meet new friends, but it doesn’t give purpose like a job does.

I have many friends from different walks of life that could all retire today but they don’t. They show up everyday and still put in the work because that is what motivates them. What drives them, and what makes them successful.

Death by a thousand cuts

When your favorite app changes things it’s a little annoying. Maybe a button you hit 30 times a day moves to a new location. Or maybe you’ve spent 10 years consuming Twitter via Tweetbot and now every morning for the past three days when you open the app it doesn’t work.

All the things on the whole aren’t bad, just a little annoying. But with each slice of pain the less I want to invest and spend time in your app. Do that enough and you lose users, maybe one or two at first, but it’s like a wave building steam growing bigger and bigger.

To me it has a lot of parallels to MySpace. Everyone used it, then no one. But it wasn’t over night, it was a slow fade as Facebook gained market share, then it was gone.

Cryptic Hints

I’ve been using Github for Mac as my Git client for years now. Rarely going to the command line but this morning I figured I’d do a quick pull from the terminal and was greeted with this cryptic message:

I have no idea what any of those options are. Honestly, I really don’t care. I just want to pull the latest code down. So now I’m wasting time trying to figure out what all those options are and which one I need when I should have just used my GUI like a real dev.

Thanks to Stackoverflow, I think I found the answer for future reference:

The warning presents three commands as options, all of these will suppress the warning. But they serve different purposes:

git config pull.rebase false     # merge (the default strategy)

This keeps the default behaviour and suppresses the warning.

git config pull.rebase true      # rebase

This actually commits on top of the remote branch, maintaining a single branch both locally and remotely (unlike the default behaviour where two different branches are involved – one on local and the other on remote – and, to combine the two, a merge is performed).

git config pull.ff only          # fast-forward only

This only performs the pull if the local branch can be fast-forwarded. If not, it simply aborts with an error message (and does not create any commits).