Tuesday, December 5, 2023

How to hide an element using JavaScript

Here are 3 methods to hide an element using JavaScript. How to hide an element using JavaScript? Set native display…

Monday, May 16, 2022

End of an Era: Travel SEO

I’ll just leave this here for reference purposes and I won’t explain any code, as it’s obsolete and I’m not…

Wednesday, February 7, 2024

How to Migrate bbPress to Mingle Forum

I’ve recently taken over a WordPress website, having a combination of bbPress and BuddyPress. Not my cup of tea, although…

Monday, May 16, 2022

How to Create a Programmatic JavaScript Tooltip

Here’s a short tutorial on how to create a programmatic JavaScript tooltip. I needed this feature to recreate a product…

Tuesday, May 17, 2022

How to create a YouTube video cover using the YouTube Iframe API

There’s an increasing trend of adding full-width (possibly full-height) YouTube video covers with autoplay. Using the YouTube Iframe API, this…

Monday, May 16, 2022

How to Get and Set URL Parameters with JavaScript

This is an old script, which helped a lot with the initial phase launching a project on all browsers and…

Monday, July 8, 2019

Convert Hex2RGBA For Your CSS Selectors

I’ll just leave this here. It’s an old piece of code I used for a theme, where users selected a…

Monday, December 16, 2024

How to Code the Ultimate Landing Page For SEO and Conversions

🐻 Bear with me. I know it sounds like link bait, but it’s not. It’s true. I’ll prove it with…

Monday, July 8, 2019

Google AI – Making Google Think You Have the Best Site

I was having a conversation with a colleague the other day about how Google ranks a site. His idea was…

Tuesday, October 20, 2020

From Web Development to Growth Hacking

I pivoted. I stopped doing freelance web development and started focusing on an older side project of mine, growth hacking…

Monday, June 24, 2024

Deconstructing Neil Patel’s WordPress SEO Article

I’ve recently had an article from Neil Patel land in my inbox. The title was link-baity enough to make me…

Wednesday, April 30, 2025

How to post to Slack using a third-party script

Or Google Tag Manager, whichever is handier. Here’s a short snippet of code I used to use to notify my…

Tuesday, November 29, 2022

How to Install WordPress Plugin Dependencies

This is a lightweight alternative to TGM Plugin Activation class, which is currently the best way to require and recommend…

Wednesday, June 19, 2019

9 Innovative Ways to Improve Your Product Photos

If you want to examine an online product, you can’t just pick it up off the shelf. On top of…

Tuesday, November 3, 2020

11 Navigation Tips for Smoother Sailing on Your Site

There’s no limit to how good your navigation can be — there’s no risk to it being too comprehensive, too…

Wednesday, May 15, 2019

Why SEOs Need to Stop Saturating the Web with Content

Ever since I started working in the SEO/SEM industry, the mantra I would say I have heard the most is…

Wednesday, October 18, 2023

How and Why I Removed IE11 Support From Our Product

Developing a product from scratch takes a lot of compatibility code, code maintenance, cross-browser testing and user testing. Building a…

Monday, June 24, 2024

West Cork Dream Properties

I have recently finished the third iteration of West Cork’s estate agents and valuers site for Charles McCarthy. After almost…

Tuesday, May 6, 2025

The Journey to PHP 7

I have updated my free WordPress plugins to PHP 7+ and removed support for anything lower than that. I decided…

Wednesday, April 30, 2025

About WordPress Forks, b2, b3 and Future Projects

A lightweight CMS, based on WordPress pre-5.0, with no bloated code, no external resources, no extra JavaScript libraries, no JavaScript…

Wednesday, April 30, 2025

How to Build a Vanilla JavaScript Slider in Less Than 100 Lines

This quick tutorial will show you how to create a basic slider in less than 100 lines. The actual JavaScript…

Monday, June 24, 2024

Product Sans

What is Product Sans? The new Google logo and identity system was developed by creating a custom, geometric sans serif…

Sunday, September 30, 2018

How to Build an Awesome Pricing Table/Matrix Using HTML/CSS

Here’s a quick sample of an awesome pricing table/matrix I built aĀ while ago for a service that’s no longer live.…

Monday, May 16, 2022

How to Implement a Service Worker in Your Website and How to Create a Basic PWA

You definitely don’t need a plugin for this. Although there are plugins which help with creating a service worker and…

Wednesday, April 30, 2025

A Trio of Approachable Vanilla JS Sliders

This post has been superseded by How to Build a Vanilla JavaScript Slider in Less Than 100 Lines. The past…

Monday, May 16, 2022

Cross-browser Query Parameter Getter and Setter

Here’s a cross-browser compatible way of getting query parameter from a URL or setting query parameters and reloading the page. An…

Monday, May 16, 2022

How to Autoplay a Video Element Using JavaScript

The latest Chrome version has stopped video autoplay if the video is not muted. Firefox and the other browsers will soon…

Friday, September 28, 2018

Do You Really Need Wordfence (Apache Edition)

Nope! What you need is an up-to-dateĀ WordPress, up-to-date plugins, the latest server software, a bit of common sense and a…

Friday, June 24, 2022

Cache & Compress Your WordPress Site Without a Plugin

WordPress caching and compression is mostly common sense. If you have a powerful caching solution on your server, and you…

Wednesday, September 2, 2020

How to Code an Assistance Request Plugin for WordPress

Internal, client-oriented plugins are mostly used by maintenance agencies. They supply a plugin to their clients, allowing them to submit…

Tuesday, June 8, 2021

Cross-browser CSS object-fit

June 2021: I have updated the CSS rules to remove IE11 support. My latest project required a cross-browser cover video.…

Saturday, September 22, 2018

2018 Blog Awards Ireland

Guess what? getButterfly is a finalist for the 2018 Blog Awards Ireland in theĀ Business Blog > Digital & Tech category.…

Monday, May 16, 2022

Native JavaScript Drag&Drop Upload

Modern browsers allow you to define native dragging & dropping functionality with a graceful degradation for older/ancient browsers, such as…

Monday, May 16, 2022

Passing Arguments to External JavaScript Files

This post covers the topic of passing arguments to external JavaScript files. I want to say up front that there…

Monday, June 12, 2023

JavaScript Data Types

Every variable in JavaScript has a data type which dictates the values that can be stored in it. However, JavaScript…

Monday, May 16, 2022

Building a Simple Tab Strip using Vanilla JavaScript

I recently developed a simple tab strip using only HTML, CSS, and vanilla JavaScript. The script does not require any…

Monday, May 16, 2022

Convert jQuery.get() to Vanilla JavaScript

In the latest iteration of my YouTube Playlist Player plugin, I decided to remove all jQuery dependencies. I replaced the…

Tuesday, June 26, 2018

ASP.NET Header Cleanup, HSTS Implementation and Browser Security

Here's how to improve the security of an ASP.NET powered web site, with no access to the underlying code (controllers…

Sunday, August 24, 2025

How to Compare Version Numbers in JavaScript

The basic idea to make this comparison would be to get arrays of parts from the version numbers, and thenĀ compareĀ pairs…

Wednesday, April 30, 2025

DOM ready functionality using vanilla JavaScript

This is a reliable way of checking for DOM ready. The first version uses a procedural function, while the second…

Thursday, May 9, 2024

gbRichEdit5

gbRichEdit5Ā is a rich text editor plugin for jQuery, easy to attach to HTML textarea elements. It creates the most basic…

Tuesday, June 12, 2018

roo! Framework Development and Future Plans

The roo! FrameworkĀ plugin for WordPress has been discontinued. Here’s a bit of history. The plugin is a mix of three…

Monday, April 28, 2025

What Makes WordPress a Good SEO Tool?

Check out my latest WordPress Dublin presentation, regarding search engine optimization using my CMS of choice, WordPress. Read more here.

Wednesday, April 30, 2025

WordPress Primary Category

Set a primary category for your (custom) posts and query them in your template using native WordPress queries. This plugin…

Tuesday, June 14, 2022

Personal Livescore Development and Future Plans

The Personal Livescore plugin for WordPress has been discontinued. Here’s a bit of history. The plugin has been created years…

Tuesday, August 20, 2024

DragonflyJS – Vanilla JavaScript Drag and Drop

DragonflyJS is a tiny vanilla JavaScript library that enables sorting (dragging and dropping) functionality with zero dependencies.

Monday, May 16, 2022

How to Implement jQuery slideToggle() in Vanilla JavaScript

If you use jQuery for a handful of effects/animations, here’s a quick JavaScript replacement for jQuery slideToggle(). With small changes,…

Friday, May 18, 2018

How to Find Malware in Your Server Files

This script will run and display all potential malware files in your selected directory path. Make a backup before deleting…

Page 7/9123456789