- An investigation into how to best incorporate WebP images into a website or blog, including things like potential performance improvements, backwards compatibility, and confirming HTML syntax and browser source selection.
- Shares some of the lessons I learned while installing Windows Server 2019 on a MacBook Pro from 2015, including creating a bootable USB install disk, and finding those pesky missing device drivers.
- Covers a few of the techniques available to improve GPS data collected by a phone. I recently embarked on this journey after moving away from Strava.. was it worth it?
- Syncthing is a free, self-hosted solution that can sync files across devices and mobile phones. This post walks through my experience configuring Syncthing, and includes a few tips to help improve the security and privacy of your running instances.
- Discusses an example NodeJS Express server that generates and verifies JWT access tokens across multiple endpoints. The tokens are signed and verified using standard X.509 SSL Certificates.
- Provides an example of how to integrate OpenLayers 6 with React Functional Components and Hooks, including how to share data and events between the two.
- Summarizes a recent ReactJS project I worked on involving an integration with the SoundCloud Widget API. Learning to use Hooks to perform the integration was challenging but rewarding.
- Describes what Linear Referencing is, and how it can be used. Includes a JavaScript snippet showing how references can be added to existing geometries, and SQL for storing/retrieving geometries from PostGIS.
- Discusses challenges in sizing content to match the true height of mobile device screens. Includes CSS and JavaScript fixes to help address sizing issues.
- Discusses ways to resolve the ContentPolicy object from different places within AEM, including a Component's Sling Model and a Granite UI Form Field.
- Discusses the options for hosting an AWS Lambda function behind a custom domain name, such as reverse proxying, or configuring base path mappings in AWS API Gateway. Also includes steps to publish a REST API into AWS Lambda using the Serverless Framework.
- Details my efforts in loading OpenStreetMap data into a Neo4j Graph Database. Discusses the steps taken to load Nodes and Ways, as well as methodologies used to improve load performance.
- How to use the Intersection Observer API to add a shrinking logo animation to your website. Includes CSS/SASS for the structure, as well as sample JavaScript that can be used to configure the observer, and handle the logo size adjustment in the callback function.
- Details how the ACS AEM Commons Redirect Map Manager interface can be used to author vanity URLs in environments with URL shortening or other URL filters. An example Bash Shell script and Apache Vhost configuration are provided that enable authored redirect maps to automatically be loaded into Apache and become active on live sites.
- Discusses three alternatives for loading dynamic content on cached webpages, and provides specific configurations used to implement one of the options to enable loading WordPress Comments over AJAX on a website that is cached by AWS CloudFront.
- Outlines a strategy taken to present region specific content to users based on their location or preferred locale. Describes how to determine a user's location and redirect them to the appropriate locale/version of a website. Also describes example locale switching logic using cookies set by JavaScript, and then Apache rewrite rules redirect as needed based on the cookie value.
- Covers how JSON Web Tokens can be used for authentication in distributed environments, with a comparison against traditional key-based authentication schemes, and an explanation of the performance benefits that JWTs offer.
- Tools and techniques to help with content migration between AEM environments. Includes steps for disabling the AEM DAM Workflows, sample cURL commands for package installation, an overview of the Disk Usage Report, and examples of excluding paths with CRX Package Filters.
- Chronicles the steps I took when creating a custom HTML5 multi file uploader with Native JavaScript. Includes features like AJAX file uploads, mobile support, and upload progress indicators. The need for supporting large batch file uploads also led to the inclusion of Asynchronous JavaScript logic to ensure uploads happened one at a time, rather than all at once.
- Details how to set up button click tracking in Google Analytics. Features an overview of Goals in Google Analytics, how they can be created, how they can be triggered with JavaScript, and where to find Goal Conversions Reports in Google Analytics Console.
- Offers a guide on how to create a table of contents style navigation menu, with progress indicators that update based on page scroll position. IntersectionObservers are used to track the page scroll position in a performant manner.
- Discusses Responsive Images, what they are, why they are important, and how to include them on your WordPress site. Includes research done on the most popular screen sizes, as well as how to configure these image sizes in WordPress. Shows code snippets for plugging into the wp_get_attachment_metadata and wp_calculate_image_sizes WordPress hooks to fully customize the image srcset and sizes attributes generated by WordPress. Wraps up with a performance comparison of the before and after, yielding a 60% reduction in image footprint for mobile users!
- How to automate the renewal of Let's Encrypt SSL Certificates, and import the new Certificates into AWS Certificate Manager while associating them with AWS CloudFront Distributions. Features a Bash Script that executes the Let's Encrypt Certificate renewal process, with example AWS CLI commands for importing Certificates and updating existing CloudFront Distributions. Closes with an example Crontab configuration so the entire process can be run automatically every 60 days.
- How to set up Apache as a proxy server, while caching the content as well. Details a few of the caching configurations available, including ignoring or setting Cache-Control headers, caching content by type, or disabling caching on certain paths.
- Guide on how to use Webpack 4 to compile JavaScript and SASS in a WordPress environment. Gives examples on how to organize the JS and SCSS source code, configure Webpack, and enqueue the compiled assets into a WordPress theme. Also covers how to add unique versioning hashes to the output file names if working in a cached environment.
- How to create a custom Sling Servlet in AEM, perform OSGi configuration to allow requests to securely pass through AEM's security filters, and enable POST request pass-through on AEM Dispatcher and AWS CloudFront Caches.
- Discusses various alternatives for managing dependencies on asynchronous resources in JavaScript. Illustrates how this can be done with things like setIntervals, the Promise Deferred Pattern, and a new ES6 Proxy Object.
- Guide covering how to set up an AWS CloudFront cache in front of your WordPress blog, which can drastically speed up the delivery of content to your readers. This guide features special steps taken for WordPress instances hosted outside of AWS.
- A quick guide detailing steps to optimize your WordPress Theme for the modern web. Includes topics like cleaning up the default WordPress header, usage of HTML5 Semantic Elements, management of Sitemaps and Robots.txt, and code minification plugins.
- This post takes a look at an example Facebook post, and shows how fake accounts are used to promote it with Likes and Shares, making the post seem more legitimate. The post also discusses the number of fake accounts currently on Facebook and Twitter, and how Social Media platforms previously had no incentive to remove these fake accounts in the past.
- Details one method of creating a shape Buffer around Central Park in Boulder, CO. The method involved expanding each edge of the original Polygon shape, and then using a Convex Hull function to rejoin them into an expanded Polygon. This technique used custom Java functions, as well as several PostGIS functions to perform shape transformations.
- Code examples and a brief explanation of how someone can use Immutable JavaScript Objects to prevent excessive ReactJS renders. This will improve performance, but only re-rendering the ReactJS application when the underlying data has changed. This relies on principles of variable Immutability to detect change, and are enforced with the ReactJS shouldComponentUpdate function.
- Covers the basic concept of variable Immutability in JavaScript, as well as come use-cases and popular libraries that are used to aid in development. Includes examples of direct variable manipulation versus updates made with variable Immutability in mind, used to illustrate the differences between these two methodologies.
- How to integrate React with OpenLayers, and use the Flux data flow pattern to update the OpenLayers Map based on Actions/Events triggered by the React Application (and vice versa).