Search results

From the blog

Posted 2023-12-21
Advent 2023: tmux

I use terminal-based programs a lot.

It should be obvious to anyone following my blog that I use editors in the vim family. But there are a slew of other tools I use from the CLI: docker, phpunit, phpcs, psalm, pandoc, ssh, ngrok, and more. Often, I'll be editing a file, and need to run another program, and reference what I'm editing: running unit tests, linters, or static analysis often fall in this category.

Sure, I could use a tabbed terminal, but then I can't have the results of running the program right next to the editor. So for this, I use a terminal multiplexer; specifically, I use tmux.

From the blog

Posted 2023-12-20
Advent 2023: Pandoc

Being a fan of Markdown and text formats in general, but living and working in a society where other formats are more often used, it's convenient to be able to convert my files to formats others can use.

And there's really only one tool for that: Pandoc.

From the blog

Posted 2023-12-19
Advent 2023: (n)vim Plugins: vim-markdown

I'm a huge fan of Markdown. There's something elegant in using textual sigils to provide contextual information. I've used it for taking notes, creating RSS feed content, producing my blog, and even in emails (I soooo wish there were a way to convert markdown within Outlook for the web and GMail!)

So it should come as no surprise that I use a variety of tools to help me when writing markdown in (n)vim.

From the blog

Posted 2023-12-18
Advent 2023: (n)vim Plugins: vim-fugitive

Because I've spent most of my professional life coding, I've also spent a lot of time using source control. I've been using specifically git for many years (even pre-dating the Zend Framework migration from Subversion). While I typically use a terminal multiplexer (for me, that's tmux; for others, that might be screen), and can move to another pane or create one quickly in order to run source control commands, doing so interrupts flow.

That's where vim-fugitive comes into play.

From the blog

Posted 2023-12-17
Advent 2023: (n)vim Plugins: coc.nvim

I've used vim and variants since 2001. In 2019, a friend introduced me to coc.nvim, which turned out to be my initial gateway to nvim, which I adopted a year or two later.

From the blog

Posted 2023-12-16
Advent 2023: (n)vim Plugins: tabular

Yesterday, I discussed vim-surround. Today I'm going to discuss another plugin I've used a ton: tabular.

From the blog

Posted 2023-12-15
Advent 2023: (n)vim Plugins: vim-surround

I've blogged about vim a number of times. I've been using vim or its descendents for 22 years now; I switched to neovim a few years back, but it's compatible with the existing vim ecosystem. (The primary differences, to my mind, are that it has a more optimized engine which is more performant, and that you can now configure and extend it using Lua if you want. Otherwise... it's just vim.)

I used to "collect" plugins, but at this point, particularly since switching over to neovim, I've reduced my plugins quite a bit, to only those I use on a regular basis.

So, I figured today, I'd start a mini-series as part of my Advent 2023 blogging, on some of my most used plugins.

Today's plugin: vim-surround.

From the blog

Posted 2023-12-14
Advent 2023: PSR-15

I've mentioned a few times over the course of this 2023 Advent series that the longer I'm in the tech field, the more I appreciate and favor simple solutions. I was reminded of this yesterday when I read this article on return types in Laravel controllers by Joel Clermont.

From the blog

Posted 2023-12-13
Advent 2023: Makefile: guard targets

A couple days ago, I wrote about Makefile. Today, I'm going to show a quick tip for writing "guard" targets.

From the blog

Posted 2023-12-12
Advent 2023: Nextcloud

Halfway through advent; half to go!

This will be a short post, to detail an invaluable tool I've been using for around 5 years now: Nextcloud.

From the blog

Posted 2023-12-11
Advent 2023: Makefile

I like to automate common workflows when I can, particularly for web projects. As an example, I may have different Docker Compose setups for development versus production, and having to remember to add the -f {compose file name} argument can be tedious and error prone.

Being a long-time Linux user, I've used make a lot, and am fairly comfortable with Makefile, so I often turn to it for these tasks.

From the blog

Posted 2023-12-10
Advent 2023: Doctrine DBAL

I've mostly taken database abstraction for granted since I started at Zend. We had a decent abstraction layer in ZF1, and improved it for ZF2. There were a lot quirks to it — you really had to dive in and look at the various SQL abstraction classes to understand how to do more complex stuff — but it worked, and was always right there and available in the projects I worked on.

In the last couple of years, though, we came to the realization in the Laminas Project that we didn't really have anybody with the expertise or time to maintain it. We've marked it security-only twice now, and while we've managed to keep it updated to each new PHP version, it's becoming harder and harder, and whenever there's a CI issue, it's anybody's guess as to whether or not we'll be able to get it resolved.

My alternatives have been straight PDO, or Doctrine DBAL, with the latter being my preference.

From the blog

Posted 2023-12-09
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.

From the blog

Posted 2023-12-08
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.

From the blog

Posted 2023-12-07
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.

From the blog

Posted 2023-12-06
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

From the blog

Posted 2023-12-05
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.

From the blog

Posted 2023-12-04
Advent 2023: A deploy script

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

From the blog

Posted 2023-12-03
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.

From the blog

Posted 2023-12-02
Advent 2023: NTP on AWS

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

From the blog

Posted 2023-12-01
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.

Search tips

  • Use #{some tag} or tag:{some tag} to filter by tag; using this more than once will find results that match all tags.
  • Use year:{year} to filter by year. If you use this multiple times, the last one wins.
  • Use begin:{year-month-day} to restrict to results beginning on that day. Last one wins.
  • Use end:{year-month-day} to restrict to results ending on that day. Last one wins.