Monday, May 16, 2022

How to Populate OpenStreetMap with Foursquare Venues/Amenities

First of all, we need a Foursquare app and a client ID and secret. Head over to developer.foursquare.com and get…

Monday, May 16, 2022

WordPress Responseless XHR Request Using JavaScript

A responseless XHR (POST) request is a request which does not require any user feedback, such as storing post views…

Friday, August 21, 2020

Tiny WordPress

Tiny WordPress – tinywp.php – is a quick (but not dirty) PHP script which auto-installs WordPress on any host. Just…

Monday, May 16, 2022

How to track and measure phone number views with JavaScript

Use this tutorial to create phone number links and track/measure views. As phone numbers are clickable (and work) only on…

Monday, May 16, 2022

How to show an outdated browser alert on Internet Explorer 11

Here’s a nice overview on why Internet Explorer 11 should be phased out and users blocked from viewing the site…

Wednesday, April 30, 2025

Native JavaScript hasClass()

These JavaScript snippets implement a native hasClass() function, which checks if an element has a certain class. A prototype approach…

Monday, May 16, 2022

How to extract a value from an element and, optionally, round it

This JavaScript snippet will extract a price from a DOM element, remove all alphanumeric characters, such as currency or symbols…

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…

Page 7/9123456789