Deep Dive into CSS Grid

This tutorial will dive deep into the CSS Grid Layout, exploring all major elements of Grid and almost all properties…

Canvas: Strange, Creepy Cables

A while ago I was playing with some basic trees drawn in Canvas using JavaScript. The longer I played, the…

Canvas: Pathfinding

Breadth First Search (BFS) Algorithm Below is a Breadth First Search implementation using Canvas and Vanilla JavaScript. This article is…

Canvas: Circles & Optical Illusions

Here is another experiment in my Canvas series. This time, I have 2 sets of circles being generated, one set…

Canvas: 2D Waves

This is the second Canvas visualization I’m experimenting with. The first one was a Julia fractal animation. This article is…

Canvas: Julia Fractal Animation

While working on my Canvas Bots project, I experimented a lot with Canvas generative art. There’s a lot of potential…

Vanilla JavaScript table date sorting

Say we have a table with dates, in the following format: We want to sort this table dynamically based on…

Tiny confirmation modal dialog in Vanilla JavaScript

A new addition to my Thin UI library, a much-needed modal dialog (popup dialog), this script is tiny, and it…

How to completely remove Post SMTP logged emails

How to completely remove Post SMTP logged emails and session transcripts Post SMTP is an awesome WordPress plugin, but I…

How to add a top bar countdown for your next product sale

You can (probably) see this top bar right now, with a nice 30% off sale for my WordPress Lighthouse plugin.…

How to scrape content from Meetup.com using PHP

One of my recent projects involved creating WordPress posts from Meetup.com events. As the API is in beta state and…

WordPress: How to display nearby attractions and amenities using Yelp Nearby

This tutorial will show you how to display nearby attractions and amenities based on geographical coordinates (latitude and longitude) using…

How to Create a Draggable Carousel using Vanilla JavaScript

A few months ago, I added a new, fancy JavaScript carousel to my homepage. It looked and behaved great, but…

How to create a Jetpack Site Stats Aggregator

I believe that Jetpack Site Stats doesn’t need an introduction any more. It provides basic but good insights on your…

Lighthouse Update and What’s Next

It’s been a while since the latest Lighthouse update, and this time we had to release another version due to…

Canvas JS: Big Ball of Particles

For a while now, I had this animated, constantly exploding ball of particles on one of my landing pages. Built…

How to Add a Block Pattern to a WordPress Theme

Here is a hands-on code snippet on how to add a block pattern (or more) to a WordPress theme. The…

Using Resource Hints to Optimize WordPress Performance

Resource hints provide a way to optimize the performance of your web page on the client side. As the name…

CSS Rounded Corners Gradient Border

I had a visually heavy project recently and I had to create a gradient border for certain elements. In my…

JavaScript Drag & Drop

Here’s a nice list of plain JavaScript dragging and dropping solutions. They are minimal, as they serve as proof of…

“Times New Roman” Enhanced CSS Font Stack

“Times New Roman” as a Classic Web Font Option With Historical Ligatures A ligature is a special character that combines…

How to Create Double Off-canvas Menus With CSS Only

This feature has been part of a website project for many year. The left side off-canvas menu was mobile only,…

JavaScript Character Counter for Text Areas

A while ago, I had to implement a character counter for a business listing directory. The description field was supposed…

The Ultimate YouTube Video Embed Setup

Here is a loopable, no-controls, perfect-aspect-ratio YouTube video plus the styles for a perfect, full-width video embed.

WordPress External Featured Image via cURL

Here’s the long title for this code snippet — How to set up an external image as a WordPress featured…

Start an Ecommerce Store in 2021 Guide

If you have ever considered opening an e-commerce store, now is a great time to take action. In 2020, shoppers…

Carbon: Basic Syntax Highlighting with Zero Overhead Using JavaScript

If you have ever used PrismJS or CodeMirror or any other syntax highlighter solution, you’ll know it adds lots of…

Gravity Forms Repeater Plugin

If there is one feature missing from Gravity Forms, that is a field repeater section. A way to set a…

SpeedFactor Update: Less is More

The past few weeks have brought some long awaited updates to SpeedFactor. As I am focusing on tracking speed, some…

How to Create a Fixed Teaser Block in WordPress

This tutorial will show you how to create a collapsible fixed pop-up. It can contain subscriptions forms, contact forms, calls…

How I Created My Homepage JavaScript Post Carousel

My homepage now features a JavaScript section of 4 featured posts. Notice the official JavaScript yellow colour? Here’s how I…

How to Expire localStorage Items and Replace Cookies

I don’t use 🍪 cookies any more, I think they are too… rigid. I use localStorage items. By default, they…

How to Create Smaller Buttons for the Block Editor (Gutenberg)

One of the shortcomings of the WordPress default button blocks is the size variation. There is none. Sometimes the buttons…

WordPress or Amazon? The Hard Choice for Beginner Sellers

When you are starting your own eCommerce business, there are many choices to make, and each one can determine your…

How to Improve Your Mobile Core Web Vitals: Quick Tip

Do you really need those fancy fonts on mobile devices? No? There’s your answer! This applies to any WordPress theme,…

On/Off Toggle Replacement for WordPress Checkboxes

When it comes to WordPress settings and admin panels, I’ve always been a fan of minimalism and default/native styling. I…

My WordPress Plugins – A Short History

Over the course of my 20 years as a PHP developer, I have developed many WordPress plugins. I don’t have…

tail.select takeover and update

I have been using the tail.select library on 200+ WordPress websites for more than 2 years. That number is growing,…

tail.select

HTML Select Fields as beautiful as never before tail.select is back: Create beautiful, functional and extensive (Multi) Select Fields with…

How I added a neat effect in 30 lines using IntersectionObserver

This is something I’ve always wanted to add to my theme, but I was afraid of the impact on the…

How to add a date/time picker to Gravity Forms

Here’s a nice challenge I got the other day regarding a better date/time picker for Gravity Forms. When I say…

How to Create Your Own Image Optimization Plugin by Leveraging Jetpack’s Photon

This is a quick code tutorial detailing how to leverage Jetpack’s Photon for custom images. Not all images in your…

How to Create Your Own Website Screenshot Service by Leveraging WordPress’ mShots API Service

This is an example-based tutorial where you will learn how to create a custom post type called Site, add a…

How to Get and Set Query Parameters From URL

Here are two ways to get (and set) query parameters from URL. I’ll add some real life examples in order…

17 Best Website Speed And Performance Testing Tools

50% of people expect a site to load in less than 2 seconds! Your site’s load time could be the…

YouTube Playlist Player, Core Web Vitals & Website Performance

My YouTube Playlist Player plugin got an update today and it speeds things up considerably. 1. First of all, I…

Instant Loading in WordPress Lighthouse Plugin

If you’ve read my thoughts on instant page loading in WordPress, and are wondering which solution to go with, note…

Thoughts on Instant Loading in WordPress

If you are familiar with the instant loading concept, you’ll know it’s about faster subsequent page loads by prefetching hovered…

Page 5/9123456789