Blog Posts

Advent 2023: Forms

The first thing I was tasked with after I moved full time to the Zend Framework team (17 years ago! Yikes!) was to create a forms library. Like all the work I did for ZF in the early days, I first created a working group, gathered requirements, and prioritized features. There were a lot of requests:

  • Ability to normalize values
  • Ability to validate values
  • Ability to get validation error messages
  • Ability to render HTML forms, and have customizable markup
  • Ability to do nested values
  • Ability to handle optional values
  • Ability to report missing values

and quite a lot more. But those are some of the things that stuck out that I can remember off the top of my head.

Zend_Form was considered a big enough new feature that we actually bumped the version from 1.0 to 1.5 to call it out.

And, honestly, in hindsight, it was a mistake.

Continue reading...

Advent 2023: $PATH on Wayland

This year, I finally switched over to using Wayland on my desktop. I figured that with Ubuntu planning to use it by default in 24.04 and Fedora already defaulting to it, it was likely stable enough to use.

I've had a few issues in the past when I've tried it, primarily around screen sharing, but thankfully most if not all issues I've hit in the past are solved. I did run into one issue, though: when setting startup programs or using Alt-F2 to run a program, it wasn't finding stuff on my path.

Continue reading...

Advent 2023: FocusMe

Like a lot of folks, I struggle with executive dysfunction, and it gets exacerbated when I'm hungry or tired. When I was younger, back in the bad-old-days of dial-up and slow internet, my goto activity at those times was to read; I'd read easily a book a week (except when I was reading Dumas; those took forever). Now with a phone in my pocket and the internet always there, I find myself going through social media or browsing news, and I find I'm the poorer for it.

However, when executive dysfunction kicks in, it's hard to choose to do something else. Recently, I took a page from my son, and started looking into ways I could game myself into better choices.

Continue reading...

Advent 2023: MOTD on Ubuntu

I never intended for this Advent 2023 series to be a "Matthew's Bash Tips" series, but evidently, that's where things are going.

Today, I detail how to get the "message of the day" on Ubuntu

Continue reading...

Advent 2023: Shellcheck

As you may have noted from previous posts in this Advent 2023 series, I find myself using Bash more and more often. This has certainly been a surprise for a career PHP developer, but it is what it is.

With PHP, there are a wealth of QA tools, from unit testing, to enforcing coding standards, to static analysis. What about with Bash? Well, the tools exist, and there's one I literally cannot write Bash without: Shellcheck.

Continue reading...

Advent 2023: A deploy script

For the fourth day of 2023 advent blogging, I'm sharing a tool I've used to simplify deployment.

Continue reading...

Advent 2023: Bashly

For the third day of my 2023 advent blogging, I'm covering a tool I've really leaned hard on the last few years: Bashly.

Continue reading...

Advent 2023: NTP on AWS

Continuing my 2023 advent blogging, today is a tip on getting NTP to work on Amazon AWS EC2 instances.

Continue reading...

Advent 2023: Logseq

In years past, folks across a variety of programming languages have organized Advent events in December, to highlight different tools, different frameworks, different programming practices, and more, often inviting guests to author each post.

I thought I'd try an experiment: I've had a ton of ideas for blog posts, many of them short, and just... never write them. What if I were to do a personal advent, and write these up?

Let's see how far I get.

Today's topic: Logseq.

Continue reading...

3 Months, 3 Weeks, and 3 Days

I started this post early, finished it late, but the sentiment remains the same.

3 months, 3 weeks, and 3 days ago, I dislocated my shoulder, and turned my world upside down.

Trigger warning

I discuss a traumatic injury in this post.

Continue reading...