Software Engineering in Web Development, Backend Services, and More

Author: Tom (Page 87 of 432)

The WordPress Developer’s Guide to MySQL Data Reconstruction

At some point in every developer’s career, there is going to be a time where you do something that tanks production.

  • Maybe you’ll push code that ends up busting a cache that serves data to millions of people,
  • Perhaps you’ll update an application and end up blowing away information that’s not backed up,
  • Or maybe you’ll push a change that “works on your machine” but completely hoses the source control repository.

And there are plenty of other examples. I’m sure you can quickly name five more yourself.

I’ve committed (pun intended, sort of) my fair share of all of the above but one of the things that I see from people working in our space.

That is, those who work with database-backed web applications –  is the lack of understanding of database organization at the file system level and how it is possible to reconstruct data even when you don’t have a standard backup off of which to work.

In this post, I’m going to take a deep dive into MySQL database organization at the file system level, how you can restore information from that versus a backup file should you find yourself in that situation, and provide references (or bookmarks) should you need them.

Continue reading

A Primer On Reflection in PHP (And How It Plays Into Unit Testing)

For the past few weeks, I’ve been writing about unit testing for the members of the site (and something that I plan to continue doing in the next post). It’s something that I think; if you write server-side code, you should be doing.

Of course, it’s easier for me to say it than do it so although I try to make sure I do a good job of it, there’s always room for me to improve. I say that more as a personal gut check than anything else, so I digress.

One of the concepts that often come up during testing is the idea of testing the values of private attributes. For example, let’s say that you have a setter, but you don’t necessarily have a getter for that particular value.

It’s easy to say “Well, then you need to write a getter,” but that’s not always the case. I mean what if you’re storing some information within the class that doesn’t need to be exposed to third-party classes?

How then are we supposed to write tests against that kind of data when we want to access it but don’t have the ability to do so and don’t want to compromise the integrity of our work?

That’s where reflection comes into play.

Continue reading

Learn The New Thing! (Wait, Not So Fast)

One of the things that I dig about the software development industry (others, too, but this is where we are, right?) is that it requires some degree of constant learning.

For some, that can induce a level of fatigue. And I get it because I’ve felt it. I don’t know if it’s an age thing (I’m not old, yet, but there’s a lot to be said from going from just yourself into an apartment into a house and a family, but I digress). I think that comes with a bit of thrashing is continually trying to keep up with every new thing that comes out.

The thing is that the further I get into my career, the less I’m interested in the learning The New Thing the moment it’s released.

The New Thing: Prototype

Remember when this was The New Thing?

And I say this knowing full well it’d be easy to dismiss what I have to say since I’ve written on going deep rather than wide with technology.

But this is a bit different.

Continue reading

A Short-Guide to Changing Valet’s Top-Level Domain

For years, developers have used the dev top-level domain as a way to work with local development versions of their projects.

But Google changed all of that last year.

If you’re interested in reading a bit more into this, check out the post by Justin from WebDevStudios does a good job of going into some of the details (as does this post via Daryl Koopersmith – previously working on WordPress, now working at Medium).

But for this post, I’m trying to keep it short and pragmatic. So, the former is this:

If you’re using HTTPS and a dev domain on your local machine, it’s likely going to stop working. Yes, you can add an exception with some browsers, but not all.

Changing Valet's Top-Level Domain: Firefox Security Exception

If you’ve read this blog for any particular length of time, then you know that I’m a fan of using Valet as part of my local development environment. Part of doing that means that I also secure the local sites to simulate, as much as possible, but staging and production are going to be like.

By default, Valet uses dev as it’s top-level domain, so how do we change that? Luckily, it’s pretty easy.

Continue reading

Writing Unit Tests with PHPUnit, Part 2: The Tear Down

Late last month, I started talking about writing unit tests in PHPUnit for WordPress-based code. This primarily included the idea of setting up PHPUnit, the setUp function, and writing basic tests.

This did not, however, discuss what I know about the tearDown function which is still an important feature of writing using tests. Further, there’s also two ways to consider writing tests for WordPress projects.

Namely:

  1. writing tests specifically for plugins and application-layer functionality,
  2. running unit tests against the WordPress application.

Before moving forward with this particular post, though, I recommend catching up on what I’ve covered thus far. This includes the following posts:

  1. A WordPress Development Environment (Using a Package Manager)
  2. An IDE for WordPress Development
  3. Working with User Settings in Visual Studio Code
  4. Writing Unit Tests with PHPUnit, Part 1: The Set Up

Once you’ve done that, return to this post and let’s continue discussing the tearDown function and what unit tests in the context of WordPress actually look like.

Continue reading

« Older posts Newer posts »

© 2026 Tom McFarlin

Theme by Anders NorenUp ↑