Getting Work Done at a Team Level (All of Our Software)

Periodically, I’ll be asked about what tools I use to run Pressware. And though I don’t necessarily think there’s a one-size-fits-all solution, I’ve been doing this long enough to where there are plenty of tools I’ve tried, dropped, continue to use, and recommend.

Getting Work Done at a Team Level: Pressware

So I thought it might be worth sharing both some of the digital and analog tools I use to plan my week, get stuff done with a team, and run a [very] small business.

Some stuff I’ve talked about before, others I may have briefly mentioned in passing on Twitter, but I’ll do what I can briefly outline each utility below. And then, perhaps in another post, go deeper with some of the utilities over the others.

Read More

Dynamic Elements, Static Elements, Event Handlers and Their Complexities

Working with stacked elements on a page, some that are anchors, and others that are elements with event handlers can sometimes cause weird behavior.

Ultimately, it all has to do with event propagation, but if you’ve not had to deal with that (or event bubbling or anything like that), it can be a bit of a challenge.

And here’s an example: What if you have an image that is wrapped in an anchor. What happens when you a dynamic element that’s placed via JavaScript after the page loads that loads another dynamic element? On top of that, you want to stop the page from redirecting when the dynamic element is clicked but still direct when the image is clicked?

It might sound simple – and in some cases it is – but if you have a transparent element overlaying the entire, original image it can become a whole other challenge.

This is where understanding event targets come into play. But before going into how to solve it, I’ll try to distill everything down into a simpler explanation and diagram out how it’s rendered in the DOM.

Read More

An IDE for WordPress Development (Regardless of Experience)

In the previous article, I walked through the process of setting up a local development environment using a package manager. Specifically, I talked about using Homebrew to install Valet and Composer.

The former offers the Nginx web server, a MySQL database server, while Homebrew allows you to install PHP. Composer gives you the ability to deal with PHP dependencies. If you’ve not read the post, I highly recommend it as this post is predicated on that entire environment.

Specifically, I’m going to be talking about IDEs. It’s a hot topic, I guess, but if you don’t have a preference then I’m going to walk you through the process of picking one that I think is best (at lest to start with), configuring it, and using it in the context of the environment established last week.

Read More

Modify Image Containers on the Server-Side in WordPress

Whenever you’re building custom solutions for other people, you may find yourself having to deal with nuanced cases of how WordPress is rendering the content.

This usually comes down to the theme, at least one plugin, or the combination of both. And if you need to work with images individually, then it can be a bit of a challenge. The problem with even trying to write a post like this is that it’s hard even to describe a situation in which you may need something like this.

Even still, I’m going to do the best I can. That is, I want to share how to modify image containers on the server-side before rendering them on the client-side and do so using PHP’s DOMDocument library.

Sound like a lot? Hopefully, I can break this down easily enough.

Read More

Quick Tip: Check User’s Browser With JavaScript

You’d think in 2018 we’d have a standard way to do browser detection or that the majority of browsers would handle standard idiosyncracies around CSS properly.

But here we are, and it’s still not happening.

This means that when it comes to working with JavaScript, we still may have to do a bit of browser sniffing to determine which browser it is with which we’re working.

Don’t get me wrong: It’s not as bad as it used to be, but there are times in which I’ve recently encountered errors with Chrome and Firefox, specifically.

Read More