In the past I have written many articles showcasing web design for inspirational purposes. In this post I came to the conclusion that I would compile a collection of beautifully designed, FREE, PSD website templates. These high quality PSD files can be very useful and save you lots of time with your web design projects without...
3d models can be a great way to spice up a project that you are working on. I have assembled a collection of amazing premium 3d models for you. These models are some of the best designs available at a very low cost. You will find a selection of different models here such as racing...
Freelance WordPress developer Aurooba Ahmed released the Super List Block plugin earlier today. Essentially, it is like the core WordPress List block — just supercharged. It is her first publicly-released extension on WordPress.org.
The primary use case for the plugin is adding other blocks within the list items. However, its options allow users to take it further by supporting grid-based layouts.
WordPress does not currently allow end-users to nest other blocks into list items via the editor. It is rich text or nothing, and it can be an irritating part of the editing experience when you need this seemingly run-of-the-mill feature. It is an issue that makes you wonder why we moved on to FSE before smoothing out the content experience. HTML list item elements are, after all, containers for other content.
For me, at least, it is not something I often need. When I do, I code it via the Custom HTML block. That works if the list’s content is simple but not when you want to nest more complex elements like other blocks.
The Super List block turns its nested Super List Item blocks into containers for pretty much anything. One typical use case would be to add multiple paragraphs or other text-based blocks like headings as single list items.
Headings and multiple paragraphs under single list items.
However, the plugin does not limit users to text. They can stick whatever they want in, even nesting a Super List within a Super List Item block. Unfortunately, its indentation is zeroed out in that scenario, so its items do not appear nested.
The plugin’s claim to fame may be its grid feature. The closest things in WordPress are the Columns and Gallery blocks. However, Columns are limited to a single row, and Gallery only allows images.
This is also where the Super List block needs a little refinement. When selecting the horizontal (“grid”) orientation, a new box appears to allow users to set the maximum width of all sub-list items.
Four-by-four grid of quotes and images.
Wanting to create a four-by-four grid (two rows of two columns), I immediately selected 50%. It made the most sense. However, I did not get any columns. The value was too large and did not account for the gutter space between the items. I then lowered it until I hit a number that worked: 47%. I could have looked at the page’s source code and simply did the math, but it would be a guessing game for the average end-user.
A more intuitive interface would be to switch the max-width option to a column-number setting. Technically, this would limit the flexibility of the block in a few scenarios. However, it would cover the vast majority of cases where users just want a grid of equal-width columns that span the width of their container.
This assumes that the plugin does not eventually allow users to micro-manage each list item in grid mode. There is an open ticket in the plugin’s repository to add the option to individual Super List Item blocks.
Whatever future direction the plugin goes, an easy-to-use block for quickly setting up a grid of items will likely land in many developer and site-owner toolboxes.
Three features make this plugin simpler to use than many core WordPress or third-party blocks. The first is when the user has the Super List selected in the editor. Instead of only the “+” icon to nest another block, it appends the text label “Add Super List Item.”
Add new Super List Item button.
It is easy to get confused about where new blocks will be inserted after clicking the “+” editor icon. Super List Block’s text label makes it dead simple to understand. I would love to see WordPress and other third-party plugins take the same or a similar approach.
The other two nice-to-have features appear in the toolbar for the Super List Item block. The first is a “Settings” button for jumping back to the parent block. The second is a circular “+” icon for appending another item to the list.
Settings and append buttons in the toolbar.
Both options seemed to reduce misclicks when selecting blocks or buttons in the editor. However, I prefer WordPress’s approach to making some parent block settings available in the child block’s toolbar. Social Links is a prime example of this, allowing users to change justification and alignment without jumping back and forth.
Overall, I am impressed with Super List Block as a first release. I will be keeping my eye on it to see how it matures. It is well worth deploying on any site that requires its features now.
Paper documents were the original metaphor for the web. […]
The page you’re reading this on still mimics paper. We still call it a page or an HTML document. It follows the same typographic rules and conventions – black text on white backgrounds and a top-to-bottom / left-to-right heirarchical structure.
Over in the ShopTalk Discord, the idea of CSS custom properties named --ink and --paper came up the other day as abstractions for color and background-color and I kinda like it. There’s something more clear about the meanings of those terms to me.
But Maggie gets into some of the downsides of the paper-based metaphors, pointing out Ted Nelson’s critiques. This is interesting:
We treat the page as the smallest unit of linkable information, instead of the sentence or paragraph.
Will the main metaphor of the web as paper change in time? I’d say it’s highly likely. The interactivity and behavior we expect on the web today is a million miles different than we expected in the past and that’s going to keep happening. These updates accelerate the change. Perhaps someday the metaphors will have shifted to “alternate neighborhood,” “second brain,” or “dedicated assistant.”
Anyone can help me? Create a C++ program that will contain a function to sort an array of 5 integers in ascending order, in which the function returns a pointer that points to the sorted array.
Google has recently announced the release of the Google Search Console URL Inspection API, which is intended to help developers more easily access URL-level data pertaining to the websites that they manage. This programmatic access enables more granular analysis of data than is possible directly through the Search Console.
You’ve heard of the supply chain, but what about the software supply chain?
Unlike the standard supply chain that you often hear about in the news, this week’s episode of Dev Interrupted dives into the supply chain responsible for holding together the systems that companies, orgs and governments depend upon.
Continuous integration and continuous delivery are crucial to the advancement of software development, and users can further reap both the business and practical benefits by integrating these concepts into their repositories. By far, the most prominent option available today is GitHub. In this Refcard, readers will learn the key concepts of GitHub Actions, as well as how to create automated workflows, or CI/CD pipelines, using text-based configurations that are stored directly within their GitHub repository.
En-Wei has graduated from the Data Analysis Techdegree, making history as the first Data Analysis Techdegree graduate at Treehouse! If you’re interested in Data Analysis and Data Science, definitely check out the Data Analysis Techdegree page. The program walks you...
Bootstrap and AngularJS have emerged as the front-runners in the industry for the finest frontend framework for application development. The architecture, components, development style, testing, code maintainability, and even the learning curve of these frameworks are very different.
The vulnerability was discovered by security researcher Wai Yan Myo Thet and reported to Patchstack on January 25, 2022. Patchstack customers received a virtual patch the same day. The issue was already known to the plugin’s developers, WPDeveloper, who issued two insufficient patches before it was ultimately fixed in version 5.0.5.
Patchstack published a summary of the vulnerability and explained how WordPress sites using the plugin could be compromised:
This vulnerability allows any user, regardless of their authentication or authorization status, to perform a local file inclusion attack. This attack can be used to include local files on the filesystem of the website, such as /etc/passwd. This can also be used to perform RCE by including a file with malicious PHP code that normally cannot be executed.
It’s important to note that the vulnerability primarily impacts users who have the dynamic gallery and product gallery widgets in use.
The plugin’s changelog makes the update seem more like an enhancement than a serious security concern, so users may not be fully aware that they need to update:
5.0.5 – 28/01/2022 Improved: Enhanced Security to prevent inclusion of unwanted file form remote server through ajax request 5.0.4 – 27/01/2022 Improved: Sanitized template file paths for Security Enhancement Added: Support for new Capability Queries for WordPress 5.9 Fixed: Elementor Popups not being triggered Few minor bug fixes & improvements
All versions earlier than 5.0.5 are considered vulnerable. WordPress.org stats don’t break down active installs according to minor versions, but approximately 54% of the plugin’s users are running versions older than 5.0.
While this might seem like more than half a million users are still vulnerable, they would also need to be using the specific widgets in question. If you are not sure if you are using these widgets in combination, it’s best to simply update as soon as possible anyway.
Bramus has been exploring native CSS scrolling effects using the future CSS Scroll-Timeline feature for a while now. He’s got a four-parter that digs deep into it, starting here.
The only thing I’d add is something to honor prefers-reduced-motion, as I could see this sort of scrolling motion affecting someone with motion sickness. To do that, you could combine tests in the same line the support test is being done in JavaScript:
if (
!CSS.supports("animation-timeline: foo") &&
!window.matchMedia('(prefers-reduced-motion: reduce)').matches
) {
// Do fancy stuff
}
I’m not 100% if it’s best to test for no-preference or the opposite of reduce. Either way, the trick in CSS is to wrap anything you’re going to do with @scroll-timeline and animation-timeline in an @supports test (in case you want to do something different otherwise) and then wrap that in a preference test:
In software testing, gray box testing is a useful technique for ensuring that published software is performant, safe, and meets the needs of intended users. It's a convenient approach to test apps from the outside while keeping track of their internal operations.
Gray box testing combines the benefits of both black box and white box testing. This type of testing is done with limited knowledge of the application's underlying code and architecture, and it can be done manually or automatically.
Our work as data scientists is often focused on building predictive models. We work with vast quantities of data, and the more we have, the better our models and predictions can potentially become. When we have a high-performing model, we continue to retrain and iterate, introducing new data as required to keep our model fresh and free from degrading. The result is that the model’s performance level is largely retained and we, therefore, continue delivering value for users.
But what happens if restrictions around a data set or individual data point are introduced? How then do we remove this information without compromising the model overall and without kicking off potentially intense retraining sessions? A potential answer that is gaining interest, and that we would like to explore, is machine unlearning.
The cultural philosophy of DevOps requires a paradigm shift in thinking, not just technological processes. The main goal of all the practices that we will look at is to break down the barriers between the development department, managers, and engineers since they usually exist in isolation. This approach previously helped to clearly distribute tasks between groups of performers but excluded interaction as a key factor in high productivity and flexibility.
Well-established communication between all links in the chain of those responsible for the product increases the quality and efficiency of work. Additionally, creative ideas often go beyond the traditional framework, which opens up opportunities for the integration of innovative solutions.
Bloomreach Headless Experience Manager is a headless content management system with the APIs and flexibility to power any front end while retaining powerful personalization and authoring capabilities.
This guide helps new developers get started with the platform. With a step-by-step series of milestones, you’ll learn the first steps of developing websites using Headless Experience Manager:
Running infrastructure at any scale almost always guarantees a dizzying array of components and configurations. To further complicate things, different teams within an organization may need similar infrastructures with slight variations. Additionally, that infrastructure may be spread over multiple topographies, from on-premise to one or more cloud vendors.
Terraform is Hashicorp’s service offering that can provision infrastructure across multiple clouds and on-premises data centers, in addition to safely and efficiently re-provisioning infrastructure in response to configuration changes.
GraphQL is a remarkable tool to build APIs. However, it is quite different from REST. This can make it difficult for developers who have been accustomed to working with REST. There are some core concepts of GraphQL that are important to understand how GraphQL actually works.
We will be covering those core concepts in this post. However, if you are completely new to GraphQL, you should start with our Introduction to GraphQL and then, return to this post.