Solved by CSS Scroll-Driven Animations: Detect if an element can scroll or not
Because Scroll-Driven Animations are only active when there is scrollable overflow, it is possible to use them as a mechanism to detect if an element can scroll or not.
Because Scroll-Driven Animations are only active when there is scrollable overflow, it is possible to use them as a mechanism to detect if an element can scroll or not.
With a greater proliferation of devices than ever before, we developers can no longer rely on viewport size as the factor that determines the styles we serve up to our website users.
If you need to run a command periodically on your Linux server, you might consider using a Systemd timer instead of a cron job. Systemd timers offer more control over your command and are more flexible than Cron jobs. Here's a quick comparison between the two:
Executors come with their own set of challenges and pitfalls that developers must be aware of to avoid potential issues. In the world of concurrent programming, Java's Executors framework has been a boon for developers looking to manage and coordinate multiple tasks efficiently.
Lightweight, solid, framework agnostic and easy to use library written in TypeScript to deal with Cross Cutting Concerns and improve modularity in your code. This library provides a straightforward manner to implement Advices in your app.
We all know what JSON-LD is: JSON with a @context field tacked on top, right? Thatβs pretty much all it is. Except sometimes you see an @id field, which, sure, that makes sense. And sometimes the @context field is multiple URLs, which seems odd β because how do they mix? Well, no worries.
In this blog post, Iβm using ActivityPub.Academy (see the announcement post) to explore the ActivityPub protocol.
Node.js library that generates Typescript clients based on the OpenAPI specification. There's no named parameter in JavaScript or TypeScript, because of that, we offer the flag --useOptions to generate code in two different styles.
I've written up a method to forward DNS lookups for certain domain suffixes to alternative DNS, such as Route 53 inbound resolver, when using macos.
Dependency injection is an essential concept in object-oriented programming. It is a way to decouple the creation of objects from their usage. In this article, we will learn what dependency injection is and how we can use it in Node.js applications using the TypeDI library.
Web frameworks like Spring and ASP.NET Core have dependency injection solutions built in. Unfortunately, thatβs not the case for most Node.js web frameworks, including Express.js.
This tutorial is a work in progress. Some sections may be incomplete, out of date, or missing. We're working to update it.
The object destructuring is a useful JavaScript feature to extract properties from objects and bind them to variables.
The kubernetes_manifest resource can be used to create any Kubernetes API resource, including custom resource definitions. See the provider documentation page for more information on the additional attributes available for this resource.
This page is generated using information from: https://github.com/digitalocean/container-blueprints/blob/master/DOKS-CI-CD/README.md. This blueprint will show you how to implement a CI/CD solution using free and popular open source implementations that run on Kubernetes clusters natively.
Argo CD is an extremely popular declarative, GitOps-based continuous delivery tool. It is an open source tool and part of the Cloud Native Computing Foundation (CNCF). It is effortless to install and set up, and it offers various features and a jazzy UI to manage all your application requirements.
Monitoring your services is production is a must for most serious businesses. People who develop on AWS, typically use AWS Cloudwatch for setting up monitoring. Typical metrics to monitor are latency, faults, invocations, throttles etc.
Serverless functions are modular pieces of code that respond to a variety of events. It's a fast and efficient way to run single-purpose services/functions.
CDK Aspects are a powerful tool provided by the AWS Cloud Development Kit (CDK). They are utilizing the Visitor Pattern. By applying a CDK Aspect to a specific scope, you get access to every child node within it. You can inspect them or alter them.
Developers are accustomed to using their own tooling and writing in familiar languages.
JavaPoet is a Java API for generating .java source files. Source file generation can be useful when doing things such as annotation processing or interacting with metadata files (e.g., database schemas, protocol formats).
In this blog entry I would like to explain how to write an annotation processor. First, I am going to explain to you what annotation processing is, what you can do with that powerful tool and finally what you cannot do with it.
Kubernetes Traffic Engineering with BGP July 23, 2018 Turns out you can use good old BGP to power your Kubernetes network! In this post Iβll cover how to build your Kubernetes network with BGP and how to use it for traffic engineering in your Kubernetes clusters! My hope is that this post gives yo
The snmp_exporter is one of the trickier Prometheus components to set up because thereβs a few moving parts involved in a full configuration and because of the need to run an extra tool to generate the snmp.yml config file from the ever-mysterious βMIBSβ.
What is k3d?ΒΆ k3d is a lightweight wrapper to run k3s (Rancher Labβs minimal Kubernetes distribution) in docker. k3d makes it very easy to create single- and multi-node k3s clusters in docker, e.g. for local development on Kubernetes.
K3s is a highly available, certified Kubernetes distribution designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances.
Besides the criticism of Serverless computing [1], it is quite popular these days especially the AWS lambda functions. In this blog, we will deploy OpenWhisk one of the popular opensource serverless computing platforms along with Kubernetes to create a serverless computing environment.
Sealed types, switch expressions, and record types. Here are just a few new features introduced in the latest Groovy 4.0 release. In this video, I want to show you ten things that make Groovy 4.0 amazing. And to keep this video short, weβre not going to dive deep into each of them.
Remote procedure call (RPC) systems, including Java RMI, are synchronous -- the caller must block and wait until the called method completes execution, and thus offer no potential for developing loosely coupled enterprise applications without the use of multiple threads.
As projects grow in size and complexity and otherwise mature, they tend to accumulate a large collection of automated tests. Testing your software at multiple levels of granularity is important to surface problems quickly and to increase developer productivity. In Gradle 7.
JCL is a configurable, dynamic and extensible custom classloader that loads java classes directly from Jar files and other sources. The motivation was to create isolated classloaders, which can be easily integrated with IoC frameworks like Spring and with web applications.
To load calsses in runtime java uses ClassLoader mechanism which is based on next core principles: delegation - by default uses parent-first delegation, - child ClassLoader will be used if parent is not able to find or load class.
Null dereferencing is a common type of programming error in Java. On Android, NullPointerException (NPE) errors are the largest cause of app crashes on Google Play.
Schema-org-java is a library for creating schema.org entities. The entities can be easily generated with the maven plugin, programmatically, or in command line.
I recently needed a simple example of an SPI implementation I could send around as copy and paste template. After some looking around I found some tutorials, but most of them were rather heavy in the implementation and are thereby loosing the point of being a simple extension system within the JDK.
In this blog post, Iβm going to explain how you can make use of the Micronaut framework to organize your project code in such a way that you can externalize and modularize some of your @Beans. These beans can be used as βcommonβ and can be shared between several projects.
This means that my content, or at least part of it, is still available if I need to migrate instances again.
I need to further refine the process, as media and emoji are hot linked. This was not my preference but I could not get my head around async await at 2am.
Last night I switched the method through which I import my mastodon toots from here into my #11ty blog.
It now pulls changes when a ci build is triggered using an external script, rather than during the render/build phase. It does this by generating markdown files with yaml frontmatter. The process creates a new commit which in turn triggers a full build of the site on the main branch.
In this article, we are going to talk about Javaβs Service Provider Interface (SPI). We will have a short overview of what the SPI is and describe some cases where we can use it. Then we will give an implementation of an SPI for a practical use case.
It's early days, too early to be thinking this far forward. I can't get the idea out of my head, so i'm putting it out there for comment. With any luck this will help me to move onto the basics, such as actually implementing activitypub.
Are there other solutions I should be considering which would be better suited to the task? I've not implemented anything with OSGi or SPI directly so this area is quite new to me. SPI seems like it may work technically.
Would this make sense from an implementation standpoint? I'm not currently targeting native image; it will be a deployed service running upon an installed JVM. SPI seems much more lightweight than other solutions like OSGi, which seem like a sledgehammer with far-reaching design implications in comparison.
I'm in the process of building an #activitypub implementation using #java and #micronaut.
I'm considering options to make the platform "pluggable". The plan is to use something like SPI to load plugins from JAR files, allowing features to be added to customize the platform for individual needs.
Off the top of my head I'm thinking things like custom APIs or storage back-ends to do things which won't be included a (completely theoretical) core distribution.
Another #lego model complete. The lotus is quite nice, though the windscreen is not very secure on this model.
I've run out of shelf space for this one.
I built one of my #lego cars. I'm not a petrol head but the builds are quite fun. A nice model for my little collection π
Using openssl, the command is... However, I will need to do this often and have written a Java class that handles this and more (my application is mostly .jsp with Tomcat and Apache). When I try run the same command from Java using Runtime.
Excellent, I think I've finished. Shame you can't port your old content, but it would be open to abuse.
Really wish I had implemented the materialize feature for fedi posts into my site now. I'll have to write another import script to parse the full export instead.
Hello π I'm in the process of migrating stuff over from mastodon.technology. #introductions
In this tutorial, weβll learn how to transform a Java Object to JSON-LD and vice versa. Also learn how to verify the schema of JSON-LD. JSON-LD is a JSON-based format which is used to represent structured data and linked data. Schema of JSON-LD can be found in documentation of schema.org.
This is a Java implementation of the JSON-LD 1.0 specification and the JSON-LD-API 1.0 specification. The Options specified by the JSON-LD API Specification are accessible via the com.github.jsonldjava.core.JsonLdOptions class, and each JsonLdProcessor.
This is going to be a look at my philosophy and views on ActivityPub and why I believe the solutions to ActivityPub criticisms must come from communities. I believe there needs to be a clear way for communities to form and build upon the ActivityPub specification.
Java 16 introduces Records. While this version of records is fantastic, it's currently missing some important features normally found in data classes: a builder and "with"ers. This project is an annotation processor that creates: Hat tip to Benji Weber for the Withers idea.
If you have data for which a digital signature was generated, you can verify the authenticity of the signature. To do so, you need In this example you write a VerSig program to verify the signature generated by the GenSig program.
A A mock ActivityPub server to use in testing code
Frameworks Bonfire: An extensible framework with a big focus on customisation and flexibility. Can be used to build new federated apps while focusing on a specific use case rather than reimplementing lots of boilerplate AGPL-3.
Today weβll be looking at how to connect the protocols powering Mastodon in the simplest way possible to enter the federated network.
Recently I contributed an addition to the Bookwyrm social reading software to enable "remote following". Bookwyrm uses the ActivityPub protocol for decentralised online social interaction.
Testing asynchronous systems is hard. Not only does it require handling threads, timeouts and concurrency issues, but the intent of the test code can be obscured by all these details.
Gradle plugin for managing Docker images and containers using via its remote API. The heavy lifting of communicating with the Docker remote API is handled by the Docker Java library.
In a recent update to my site, I decided to show a helpful notice in my footer that timestamps my build, writes the abbreviated commit hash from Git, and links to the changeset on my GitHub repo for ease of reference.
Today weβll experiment some more with the adjacent and general sibling combinator and the :checked pseudo-class. Using hidden inputs and labels, we will create an accordion that will animate the content areas on opening and closing.
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. JWT.IO allows you to decode, verify and generate JWT.
Designed to be small, yet full featured, Lunr enables you to provide a great search experience without the need for external, server-side, search services. Add powerful language processors to give more accurate results to user queries, or tweak the built-in processors to better fit your content.
I recently came back from connect.tech (one of my favorite conferences). I had the honor of giving not one, but two different talks. One of them was on static sites, or the JAMstack. This is a topic I've covered many times in the past, but it had been a while since I gave a presentation on it.
Last week I implemented a search functionality for a static website with Lunr.js. The way I implemented the search system, depends on 2 files to work, the pagesData.json and the searchIndex.json.
At fleetster, we have our own instance of GitLab and we rely a lot on GitLab CI.
NHM is a fast HTML to markdown converter, compatible with both node and the browser. We had a need to convert gigabytes of HTML daily very quickly. All libraries we found were too slow with node.
Amazon Cognito is a managed service that provides federated identity, access controls, and user management with multi-factor authentication for web and mobile applications.
Discover jenv, the command line Java manager
Read this guide on the four golden signals for distributed systems monitoring and how to effectively monitor your distributed systems.
Learn how to create true Java unit tests by mocking all external dependencies in your unit tests with the Spock testing framework.
Summary of unit test mocking capabilites and syntax of Spock test framework
Recently, in one of my pet projects, I decided to try writing tests using Spock framework. It was a great experience, I enjoyed it a lot. Except for the part of setting it up, which was somewhat annoying.
The Java volatile keyword guarantees variable visibility across threads, meaning reads and writes are visible across threads.
Demonstration of a method to delay execution of a task in a non-blocking manner
An interesting project which provides bindings to manage containers within your tests
Ticking a few items off the checklist, I've added some basic webmention and websub support to the site.
Looking at implementing AWS lambda functions to update blog content, for which git access would be a prerequisite
I finally switched off my PHP virtual host, after committing to a new site built with the 11ty platform.
When Java 8 introduced the Optional type many years ago, I was happy like a bird. I already knew about the Optional type from variousβ¦
A whistle-stop tour of the `facl` package, an implementation of the withdrawn draft POSIX 1003.1e standard
Today saw an milestone achievement made with this blog! We completed our first automated deployment π. Naturally the only way to celebrate such an achievement is to share how it was done.
Maven is okay, but maybe you would like to try gradle instead π
I've been exploring the world of Static Site Generators (SSGs)
I've been experimenting with servlet filters, along the same lines as my experimentation with aspects. This post explores servlet filters in a spring application.
Interesting project that looks to solve the local dev cert problem
Exploring aspect oriented programming approaches using Spring AOP as a starting point
Exploring spring boot and replication, with an easy to adapt example replicated MySQL cluster provided by containerized databases
So enabling DNSSEC was easier than I thought. All I had to do was transfer my domains on a friday night πΈ
Enabling http/2 in Apache 2.4 and Nginx 1.10 under Debian Stretch
Provisioning servers with ansible
I really like the idea of immutability in infrastructure, and this is a good introduction to the concept
For when docker gets confused with networks
Story Mapping process by ThoughtWorks
Gatling is a load testing tool featuring a scenario recorder, and a scala based DSL
A mocking framework for PHP
Decoupling frameworks from your application
Discussion on the removal of ServiceLocatorAware
Understanding plugin manger in ZF2
Understanding view helpers in ZF2
A DB migration library
Useful library for quickly mocking services
A behat target for phing
Quick intro to writing applications with behat
Step by step for integrating behat into a ZF2 application workflow
Secure your CDN delivered resources with SRI
Content extraction library for PHP
Library for generating plausable test data
A good read on legacy code and repaying technical debt through refactoring
Bootstrapping spring boot docker containers with maven
Creating test doubles with mockery
Comic-book style text effects with SVG
Handy overview for zf2 and doctrine usage
An exceptionally well written series introducing unit testing with PHPUnit
Cattle vs Kittens
A quick-ish guide to building PHP7 alongside your PHP5 packaged version in Debian Wheezy.
Process handlebars templates with a grunt task
Running parallel unit tests in docker
An interesting read on PSR-7 and future direction for the PHP language
Static Caching with NGINX and WordPress
Implement OCSP Stapling support with HAProxy
Getting Started with Mockery
Making shapes with clipping paths in CSS
Helpful SSL configuration tweaks for nginx
Manage Laravel deployments on any server via SSH and Forge
Some new great proposed and accepted features for PHP 7
Pluralization for JavaScript
Helpful for understanding the switch between Facades and IoC contracts in Laravel 5
Building Nginx with the pagespeed module
Some of the changes and features of Laravel 5
Input validation in Laravel
A guide to installing Magento 2 with Composer
The pound example here is very helpful
A rather interesting insight into the Cloudflare WAF
An excellent introduction to CSP, worth a thorough read
Managing application databases with Laravel migrations
CLI-tool for managing WordPress installations
Creating Customizable Packages With Routing
A simple guide to ACL in Laravel
PHP logging with syslog
Redirecting server mail for local users to an actual mailbox
A generalised administrator interface for Lavavel
A detailed write-up on Laravel authentication
Creating Laravel Facades and registering them with your application
Enable DKIM signing support in the Exim4 MTA
A Gravatar implementation for Laravel
Quick and easy custom error pages in Laravel
Permanently banning IPs with fail2ban
A handy intro to setting up the fail2ban log scanning service in Debian
If you want to learn Laravel, you ought to check out laracasts
WordPress Plugin for dealing with CDN cache busting (and local browser caching)
Build Automation with Composer Scripts
Stop <br> tags being added to Magento product descriptions
Search within a search in SOLR
Fix positioning for fixed elements in iOS and others where the keyboard is active
A Framework for deploying WordPress sites with Capistrano 3
Roots: HTML5 WordPress Starter Theme
A very helpful guide to creating Magento shell scripts the correct way
Handy guide to creating a swap file
Recent Exploit using Fake Magento Extensions
Escaping special characters in CSS
The Dark Corners of Your UI
Favicons are a prominent feature of the modern web, from browser tabs to RSS readers. Here I show how to convert ICO favicons to PNGs for use on web pages.
Handy list of Magento conditionals
Theme specific translation changes in Magento
In-depth git workflow
Git: changed files between two commits
Method to move the Magento application outside of the public document root
The time element, for the uninitiated
Some interesting firefox addons for designers
A good article when considering mobile typography
Decode / Encode html entities with JS
A list of the various pem certificate formats
Phabricator is a PHP software platform for project management
Configure GitLab to use SMTP for mail delivery
Adding related content via Lucene / Solr to WordPress
Quick and easy way to display all products for a root category in Magento
Helpful method to override core / third party Magento blocks
Joomla 3.3 is out, with a new minimum requirement of PHP 5.3.10
Feature rich CLI tool for Magento, including upgrade in Maintentance Mode
Interesting use of animation for payment interactions
A thought invoking article regarding the future of the web
Some lesser known CSS features
How to Deal with Merge Conflicts in Git
Helpful Magento module that enables empty results page modifications
Fix vagrant share file permissions
The award for best explanation of heartbleed goes to XKCD
An open HTML5 video library
Excellent article on style guides
Web Components and the Three Unsexy Pillars
A look at good and bad uses of off canvas UX patterns
Fix a login token issue when migrating between Magento 1.7 - 1.8
A very helpful module which rewrites static URLs in Magento
Helpful tutorial explaining how shipping methods work in Magento
A detailed overview of Magento Routing / Rewrites
An interesting series on refactoring PHP code
The Importance of Having a Brand Platform
HTTPS Mixed Content: Still the Easiest Way to Break SSL
Native packaging for web apps with Firefox Mobile
A guide to installing and configuring a solr instance
Developing a Brand management module for Magento
Interesting article regarding avoiding optional dependencies
Wiz - a CLI interface for Magento
Tips for improving the default Magento maintenance page
Handy for manually enabling maintenance mode in WordPress
Access the terminal directly in Chrome DevTools
A more succinct upgrade process for Magento, there's more to it usually though
A guide to developing your own bespoke WordPress maintenance page
Device-Agnostic - A great post by Trent Walton
Valid points, but LESS also provides extend features
A quick intro to grunt - setting up less compilation
The Art of HTML Semantics: Part 1
Can it be made responsive?
Interesting ways to protect against malicious automated requests
Better Dependency Management In Team-Based WordPress Projects With Composer
Flexbox navigation example
First time I have come across WebPageTest
Ahhh, the <marquee> tag. A true gem.
Continuum
The Battle for the Body Field
Beta code editor 'atom', created by github
Pretty nice looking font icons, might be worth a try?
Protect Against Humans.txt Query-String Scans
Seems like an interesting concept