Blog about WordPress, Electronics and Software Products
I blog about WordPress, electronics, home automation and passive house related ideas. Subscribe to this blog via RSS, ActivityPub or email. Check my projects on GitHub and follow my personal accounts on Twitter, Mastadon, Bluesky and Instagram.
- Posts
- 470 from 20 Sep 2007 to 8 Oct 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://kaspars.net/feed
2026 1
2025 9
- Notes on Umami Analytics
- Setup Huawei MA5671A SFP GPON for Your Fiber ISP
- Setup Local Development Domain with Public DNS
- Custom Email Address for Kids Google Account
- Fix Dell Monitor Flickering and Ghosting on Mac
- Notes on Iron Sulphate for Graying Wood
- Notes on FAIR Package Manager
- The Potential of WordPress Comments
- Remote Logging for Mikrotik RouterOS
2024 7
- Customizing the Seriously Simple Podcasting Plugin
- How to Allow Unfiltered HTML to Editors on WordPress Multisite
- How to Rate Limit Requests to Specific PHP Files with Nginx
- Use AppleScript to Resize All Windows for Screen Recording
- Airbank D13 Puffer Pro Review and Teardown
- Bafang CAN Bus Programming
- USB-C PD65W Adapter and Charger for 18V and 20V Power Tool Batteries
2023 6
2022 8
- Insulation Efficiency of Electric Hot Water Heaters
- Notes on Tuya Air Quality Sensors
- Use Ventilation Exhaust Air for Space Heating and Hot Water
- Notes on Zemismart HomeKit Zigbee Hub
- Use Hiking DDS238-2 ZN/S Energy Meter with Home Assistant
- Use Aqara G2H Zigbee Camera Hub with Home Assistant
- Notes on Gree Amber Nordic / Prestige GWH09YD-S6DBA2A Heat Pump
- Notes on MySensors
2021 7
2020 11
- Mikrotik CAPsMAN is Awesome
- WireGuard Routing and Port Forwarding
- WireGuard Network Managers
- RSS Feeds for WordPress Plugin and Theme Support Forum Topics and Replies
- Store Contact Form 7 Submissions in TablePress
- WireGuard on Raspberry Pi
- CSS Minification for Server-Side Rendered Apps
- Using Unit Tests to Find WordPress Plugin Bugs
- How to Bulk Update the “Tested up to” Version for WordPress Plugins
- RAK7246 LoRaWAN Gateway Review
- Aranet4 Teardown
2019 17
- Sensor Pilot: A Progressive Web App (PWA) for Bluetooth Sensors
- Apple Podcasts Subscriptions
- Action Camera Lenses
- Ikea Trådfri vs Xiaomi Mijia and Aqara Zigbee Switches
- Sensors for Smart Passive House
- Checkout Pilot for WooCommerce
- How to Show and Hide Gutenberg Blocks in Context
- Solar Powered Raspberry Pi Camera
- Docker Volume Permissions
- PGP Subkeys for Keybase
- Notes on Sign In with Apple
- Custom Fields Metabox in Gutenberg Block Editor
- WordPress Product Demo Videos
- Notes on ESP8266 and MicroPython
- Top Posts in 2018
- Missing Dependencies and Open Source Contributions
- Homebrew for WordPress Development
2018 13
- Laravel Homestead for WordPress Theme and Plugin Development
- Block Context for Gutenberg
- Low Power ESP8266
- MicroPython Button Debounce
- Solid, WebID and OpenID Connect
- WordPress Development Environment as a Composer Dependancy
- Google Smart Lock for All
- MySensors, RFM69 and ATTiny841
- Composer, Travis and Bash Source
- Notes on Webpack Hot Module Replacement
- Retiring the WordPress Blogroll
- Relays for Home Automation
- Static Websites with Headless WordPress via REST API
2017 22
- MacOS Photos Backup
- Notes on Grunt
- Notes on Metalsmith and Jekyll
- KEY-ID FIDO U2F: How to Remove the Green LED
- Part 2: DIY Electric Skateboard Electronics
- Atom Autocomplete for WordPress Coding Standard (WPCS) Whitelist Flags
- 10 Years of Blogging
- Decoding the FVT ESC Firmware
- Poker 3 for Mac
- WordPress.com Usability Issues
- How to Get YouTube Channel Subscriber Count without Using API
- Part 1: DIY Electric Skatboard, Hub Motor & Trucks
- DIY Professional Wireless Headphones
- Display for Orange Pi Zero
- Orange Pi Zero GPIO Pins
- Wiring Maytech Hub Motors to Flier Twin ESC
- PiJack Ethernet Hat for Raspberry Pi Zero
- Orange Pi Zero as a Web Server
- Check the Progress of createinstallmedia
- The Electric Poodle Project
- Video Review of the Maytech 90mm Hub Motors for Electric Skateboards
- Starting a Video Blog
2016 11
- Habits
- MacBook Battery Time Remaining
- WordPress Blogroll Still Rolling
- Using 3.5mm and XLR Microphones with iPhone 7 over Bluetooth
- Instagram Stories are Awesome
- Why Drupal Faded
- C.H.I.P Computer is Awesome
- Create Excel .xlsx Files in PHP
- AI is Overrated
- Pebble Watch is Awesome
- Sensor Data in Physical Web URLs
2015 18
- Sync OS X Photos to Anywhere
- WordPress Admin Over SSL in Multisite
- The Future of Cryptography with Quantum Computing
- Contenful User Interface
- Two-Step Verification Setup Workflow
- NaNoWriMo 2015
- Select and Subscribe Bookmarklet for Feedly
- WordPress.com User Experience
- WooCommerce for Apple TV
- Version 0.2 of Contact Form 7 Controls
- PHP 7 Build Script
- Stop pushing the web forward
- PHP, Net-SNMP and OS X 10.10.5
- Home Batteries
- Storing Raspberry Pi Wi-Fi Network Settings on the SD Card
- Invisible Click Tracking
- Electric Penny Bicycle
- Social Networks and Vlogging in 2014
2014 24
- Mounting Shared Folder in VirtualBox on OS X for ESP8266 SDK
- ESP8266 Wi-Fi Module with Teensy and Arduino
- Concatenate Assets Instead of Loading Conditionally
- John Schuch on Electronics, Hackaday and Licensing
- Version 1.3.6 of Storage for Contact Form 7 Plugin
- Contact Form 7 Extras
- Brent Simmons on Social Media
- Jason Schuller on WordPress Theme Business
- Non-Blocking Javascript
- Use Nginx Reverse Proxy to Mirror GitHub API
- RSS and Shared Links in OS X Yosemite
- Getting Twitter Follower Count without Using API
- Widget Context 1.0 Now Available
- Export as CSV for Storage for Contact Form 7 Plugin
- Contact Form 7 not Sending Emails
- Contact Form 7 Storage Plugin
- Menu Performance in WordPress 3.9
- Enable Custom Page Template for Static Front Page in WordPress
- Minit Update: Better Cache Purge and a Filter to Exclude Files
- New Plugin: Custom 404 Error Page
- GitHub Gists SSH Access
- Håkon Wium Lie on CSS Regions
- Create Release ZIP Files from Git Tags
- Selling tinklog.com domain name
2013 43
- Use Javascript to Change Viewport Width Depending on the Window Size
- Matteo Spinelli on Open Source
- Minit Plugin and SSL
- Numeric Shortlinks Plugin Update
- Cache Purge for Minit
- Script Helper Plugin for WordPress
- USB Device Profile of Mobius Action Camera
- Reusable Software
- Disable Sitemap Creation in WordPress SEO
- Grand Rewrite
- Recursive PNGOUT
- New Plugin: Code Prettify (Syntax Highlighter)
- Recursive PNGOUT for Optimising All Images in a Folder
- Difference Between Tumblr and WordPress
- Minit Plugin and Web Fonts
- How to Stream Audio Over SSH Using SoX
- Disable Title Rewrite in WordPress SEO
- Content and CMS
- Photos and Timelapse Videos Using Avconv (ffmpeg)
- How to Remove Duplicate Files and Images with Duff in Linux
- Interview with Dougal Campbell
- Building Medium
- Glances System Monitor
- New Plugin: Numeric Shortlinks
- FeedBurner and WordPress
- Darkleech and Apache
- Automatic Theme Fallbacks for Post Formats in WordPress 3.6
- Auto Auto Update
- Chrome OS and Android
- Brian Shih on Google Reader
- WordPress, Draft and Revision Control
- Major Rewrite of Widget Context
- New Plugin: Widget Output Cache
- Allow Plugins to Short-circuit wp_nav_menu
- PHP Live Regex
- Incorrect 301 Redirects Due to a Bug in “Redirect Canonical”
- Twenty Thirteen WordPress Theme
- AVG, MAX, MIN on meta_value in WordPress
- Add Unique Rel Attribute to Each Gallery Within a Post
- WordPress Multisite Without a Domain Mapping Plugin
- Envato Could Allow 100% GPL Themes and Plugins
- Take Control of Your Widgets — My Presentation from WordCamp Norway 2013
- Speaking at WordCamp Norway 2013
2012 55
- Use PHP as a Proxy to Dropbox for Serving a Static Website
- Webscript.io
- Video: 50 Shades of WordPress by Andy Stratton
- Instagram Slideshow with AngularJS
- AngularJS
- How to Detect iPad Mini Using Javascript
- Just Ship It
- On OAuth
- Navigating Text Using Keyboard Shortcuts
- On GitHub
- New Plugin: Mobile Redirect for WordPress
- Death of CMS for Personal Publishing
- New Plugin: Minit
- Metroshare Social Sharing Plugin for WordPress
- How to Download and Migrate Attachments and Images from a Large WordPress.com Blog
- Place Postal Code Before City in Gravity Forms Address Fields
- Texts is a Rich Editor for Plain Text
- Tip: Terminal Keyboard Shortcuts
- The Magazine by Marco Arment
- Instagram Square
- The Complexities of Creating a Markdown Parser
- Use GitHub for WordPress Plugin Development
- Link: Moving Beyond End-to-End Path Information to Optimize CDN Performance
- Add WordPress Plugins via Symlinks
- Monitor Memcached with Munin
- Add Featured Images as Enclosures to Posts in WordPress RSS Feeds
- Add Custom Image Sizes to Media Uploader
- Fixing /etc/init.d/php5-fpm Init Script for PHP 5.4 (from Dotdeb) on Debian Squeeze
- PHP: header_remove
- WordPress — Expression Engine Reversion
- Widget Control Plugin Preview; Looking for Beta Testers
- Gas Mask — /etc/hosts Editor for Mac
- Develop and Work with WordPress Multisite Locally Using a Production Database
- 11px Verdana on Retina Displays
- Include Terms from Custom Taxonomy in Permalinks of Custom Post Types
- How to Use Manual Social Button Placement with the New Facebook Plugin for WordPress
- Super Easy Responsive Images with Viewport Cookies
- 워드 프레스 — WordPress in Korean?
- 3D DOM Element Inspector in Firefox
- History of Nginx
- Add Input Field Type as CSS Class in Gravity Forms
- New Plugin: Blog Archive by Categories
- Limit the Number of Words or Characters in WordPress Editor
- .po/.mo File Conversion Tool for WordPress Translators
- Add the Order of Widgets Within a Sidebar as a CSS Class to All Widgets
- Enable WordPress Dashboard Quick Login
- Page Stacks in UI
- How to Avoid Widow “Read More” Links in Post Excerpts
- Rasmus Lerdorf on the History and Future of PHP
- Add Custom URL Redirects to Your WordPress Dashboard Areas or Login Page
- How to Remove All Line Breaks from Text Using Regex
- How to Extract Heading Content (h1, h2, etc.) from an HTML String Using Regex
- How to Add Post Categories and Tags as #Hashtags to Tweets Automatically with the Simple Twitter Connect Plugin
- HTML5 Notepad App Update
- Round 2 of Tumblr vs. WordPress vs. Blogger: FIGHT!
2011 31
- Away Until February 2012
- How to Embed Your YouTube Channel as a Playlist
- Use Sticky Posts as Category Description
- How to Remove “View all posts filed under” Prefix from Link Title Attribute in Category Widget
- Check Who is Tweeting About Your Blog or Website
- Backblaze Review
- How to Automatically Add Image Credit or Source URL to Photo Captions in WordPress
- WebKit Bug: Anti-aliasing for @font-face fonts
- How to Exclude Sticky Posts from Adjacent Post Links
- Widget Context UI Update 2011, Version 2
- Request for Feedback: Widget Context UI Update 2011, v1
- Akismet, Akismet, Akismet
- Page Speed Score of 100/100 with WordPress
- The trend towards permissive licensing
- Multiple Galleries 0.4
- Self-hosted HTML5 Notepad App With Synchronization
- Remove Inline CSS and Line Breaks in WordPress Galleries
- A Simple PHP Utility to Migrate Emails Between Two IMAP/POP Accounts
- Replace WordPress Login Logo With Your Site’s Name and Link
- Add rel Attribute to Image Links in WordPress Galleries
- Enable WordPress Plugin, Theme Updates and Pretty Permalinks on Nginx
- How to Add Simple Google Site Search to Any Website
- Rewrite WP-Minify URLs for CSS and JS Offloading
- Page Speed 95/100
- Tabbed Widgets Update: Version 1.3.1
- Tabbed Widgets Update: Version 1.3
- Idea for WikiLeaks Identity
- Very Fast
- Google Sitelinks
- Design On January 2011
- How to Add Shortlink Support to Twitter Tools
2010 39
- The Price of Software and WordPress Themes
- Graphic vs. Web Design
- YSlow Grade A
- High Performance WordPress
- jQuery Script for Loading More Posts
- Matthew Carter on The Boston Globe
- Alexa on konstruktors.com
- Deriving and Linking GPL
- Linux Kernel, Modules and Plugins
- GPL Sockets
- Location Aware Login Prompt
- Automatic Updates for Plugins and Themes Hosted Outside WordPress Extend
- OpenID and PHP 5.3
- AJAX Cache Purge Cookie Plugin
- Laptop from Aboard the Shuttle Spacecraft
- Widget Context User Interface Update
- Bitmaps for Gnome Panel Background
- AJAX Cache Key Invalidation Plugin
- Steve is Listening (or iPhone 4)
- Standalone Script for Clearing APC Cache
- Chrome OS vs Android for Tablets
- Use AJAX for Cache Invalidation
- Regarding the ‘Like’ Button
- ‘Clear APC Cache’ Button for WordPress
- PHP APC Potential Cache Slam Averted for Key
- Moving Away from MediaTemple
- Patent Absurdity, a Documentary
- STS-131 in Orbit
- Multiple Galleries per Post/Page, WordPress 2.9 and 3.0 Update
- Coincidence
- Ubuntu's Lost Identity
- Notes on the 2010 WordPress Theme
- Remove index.html from the URL
- The Magic of Software (Licensing)
- The Unspoken Heroes of Web Design
- Sunday with Beethoven
- Egīls Pārups (parups.com) running a child theme of Portfolio Racer
- Smarter Cleaner Gallery
- Google humor: page speed suggestion
2009 54
- Web Infinity
- Automatically Escape HTML Entities of Code Fragments in Comments
- Semantics of Article Headline and Byline
- Tabbed Widgets 0.83
- Pāri jumtiem lido kaijas
- Tabbed Widgets Updated for WordPress 2.8
- Multiple Galleries per Post/Page
- The Pricey GPL Thought Experiment
- Basic Math of GPL
- Automatic Updates for Developer Hosted Themes
- Enable Automatic Updates for Plugins Hosted by Developers
- US Stimulus Package: $2588 to Every American
- Perfumes Named After Their Month of Release
- Education, Creativity and Individuality
- WhiteHouse.gov Runs Drupal
- Concatenate Javascript and CSS Files with WP Minify
- Global Debt Comparison
- OSCar 24H
- Hey, You’re OK
- PubSubHubbub & WordPress
- WordPress.com Redesign
- WordPress and Nginx
- Twitter’s Success
- No Font Embedding, Please
- Widget Context Plugin Added to the Official Plugin Repository
- Widget Context 0.4.1
- Member of the Free Software Fundation
- Palm WebOS and GPL
- Proprietary vs. Liberal vs. GNU GPL
- Widget Context Update for WordPress 2.8
- WordPress, Plugins and Open Source
- OpenID Plugin and WordPress 2.8
- Is iPhone 3G "S" Slow or Small?
- Free Software, GPL and WordPress
- Widget Context Plugin for WordPress 2.8
- Quick Reply Templates Plugin and WordPress 2.8
- CSS @Imports Suck
- Digital Britain and USB Flash Drives
- Remove Border from Image Links
- WordPress Admin Header Design Tweak, Take Two
- Tweaking WordPress Admin Header
- Matt Mullenweg Tonight on WordPress Weekly
- The Future of Media is Linux
- Open Source Logo for Labeling Things and Ideas Made in Latvia
- Design on April 2009
- Display Widgets Only on Certain Pages
- WordPress 2.8 bleeding-edge and WordPress_Module::_weak_escape()
- Widget Context Update — Word Count Check
- Cite, Quote and Twitter
- MediaTemple’s Disappointing Grid
- The New Pepsi Logo
- Rights to Read a Book Out Loud
- Jill Barber
- I still believe in two hearts
2008 75
- WordPress, GPL and Widget Context
- WordPress Plugins which I Use
- WordPress, Themes and GPL
- PHP Speedy and WordPress 2.7
- Post from Laconi.ca to WordPress
- Bitstream Charter Typeface
- 6:00 AM Podcast Theme Preview
- Squeeze the Header of the New WordPress 2.7 Dashboard
- Show Ads Only to Visitors Coming from Search Engines
- 22 queries, 1.459 seconds
- Come and See the New Design
- WordPress 2.7 Vertical Navigation
- What Designers Do
- WordPress UI Idea: Menu Item Sorting and Renaming
- WordPress 2.7 Administration UI Wireframes
- Tabbed Widgets Plugin Update (0.76)
- WordPress Dashboard UI Idea #3
- Open Share Icon that Looks Good at Small Sizes
- WordPress Dashboard — Idea No.3
- Microsoft, you finally got it!
- WordPress Dashboard UI Idea Update
- WordPress Crazyhorse UI vs. Kaspars’ UI Proposal
- Fully Functional Drag-and-Drop WordPress Dashboard Design Idea
- Idea for a WordPress Dashboard Layout & Design
- First Impressions of WordPress 2.7
- Tabbed Widgets Now Better than Ever
- Comments and the Future of Blogging
- Widget Context plugin for WordPress
- Saliņas Guļbūves (log houses) Powered by WordPress
- It is a Big Day Today
- Vote for Tabbed Widgets Plugin
- Comic Sans Design Challenge
- Is Your WordPress Theme Good Enough?
- Google recursion?
- What Makes a Great Journalist
- Idea: WordPress Theme for Audio & Video Podcast Websites
- Tabbed Widgets in the Wild
- Opera Web Standards Curriculum
- Tabbed Widgets Plugin for WordPress
- Getting PHP Speedy Plugin to Work with WordPress 2.6
- Running and Debugging WordPress 2.6 Beta
- Fixing «PostPost» and «Ozh’ Absolute Comments» Plugins
- Is Linux the New Black, the New Red?
- issuu — simple and intuitive document viewer
- Baltic Amber 1.32 — removed .youare section from your WordPress Dashboard
- OpenID SeatBelt plugin for Firefox
- In the World of Open Source
- Baltic Amber Themes in the Wild
- Baltic Amber Admin Themes & Schemes Now With a Colour Picker
- How to Be Your Own OpenID Provider and Use Your blog’s URL for Identification
- Baltic Amber Themes & Schemes for Your WordPress 2.5 Administration Panel
- Sounds of typing
- Eclipse PHP Development Tools (PDT) Video Tutorials
- Simple Fullscreen Text Editors for Students, Bloggers, Journalists and Writers
- Solving the Authentication and Plugin Errors After an Upgrade to WordPress 2.5
- Hello, WordPress 2.5
- WordPress Plugin of the Year: PHP Speedy
- We’re back with a free font suggestion — Liberation Sans
- Posting suspended while on vacation
- How to Create Beautiful and Elegant HTML Lists Using CSS
- Woolgathering — Daily Sketches and Drawings by Elizabeth Perry
- Web Design Critique: Consistency and Homogeneity of the Blog Layout
- Podcast of the week: WordPress Weekly
- Single page entry archive is available finally
- Suggestions for writing flexible and usable plugin
- WordPress Plugin: Custom Function Widgets
- Singer/songwriter Martin Confused — acoustic and absolutely fantastic
- Take-away photo and image positioning CSS styles for blogs — idea for a plugin
- Got a meta in a heada’ — supporting standards and welcoming IEn where n = 1…∞
- Browser Versions as a Switch of Rendering Modes — the Verdict
- IE8 Version Targeting — Understanding and Discussing the Arguments
- Browser Version Targeting vs. the Web Standards
- Say Hello to Morning Racer
- Podcast of the week: Boagworld
- Got permalinks broken after the latest WordPress update
2007 19
- Screenshots of a new 2-column WordPress theme
- Back to pencil and paper
- Updated AdSense Manager Plugin: Ad Slot IDs and Rounded Corners
- Standards Watch: Design Observer
- Preview of a new WordPress theme
- Introducing and explaining the nature of light
- Nanoblog, Tumblelog or Asides
- How Graphic is the Web Design, and How Web is the Graphic Design
- New WordPress Theme: Sans–serif Racer
- Logos and Names Are Not Headings
- Features Of the Upcoming «Times Racer» WordPress Theme
- Time Magazine’s Blind Love for Apple
- Agneka Simple — WordPress Theme
- Usage of the Term ‘Web 2.0’
- Finally Some Critical Writing About the Web
- Now It’s Your Turn Journalist
- What is Wrong with the Tech Journalism
- Good and Bad CSS Identifiers
- Optimize for search engines or users?