There’s some interesting CSS trickery in Jason Pamental’s latest Web Fonts & Typography News. Jason wanted to bring swipeable columns to his digital book experience on mobile. Which brings up an interesting question right away… how do you set full-width columns that add columns horizontally, as-needed ? Well that’s a good trick right there, and it’s a one-liner:
columns: 100vw auto;
But it gets more complicated and disappointing from there.
With just a smidge more formatting to the columns:
We probably wouldn’t apply this effect on desktop, but hey, that’s what media queries are for. On mobile we get…
That herky-jerky scrolling makes this a bad experience right there. We can smooth that out with -webkit-overflow-scrolling: touch;…
The smoothness is maybe better, but the fact that the columns don’t snap into place makes it almost just as bad of a reading experience. That’s what scroll-snap is for, but alas:
Unfortunately it turns out you need a block-level element to which you can snap, and the artificially-created columns don’t count as such.
Oh noooooo. So close! But so far!
If we actually want scroll snapping, the content will need to be in block-level elements (like <div>). It’s easy enough to set up a horizontal row of <div> elements with flexbox like…
main {
display: flex;
}
main > div {
flex: 0 0 100vw;
}
But… how many divs do we need? Who knows! This is arbitrary content that might change. And even if we did know, how would we flow content naturally between the divs? That’s not a thing. That’s why it sucks that CSS regions never happened. So to make this nice swiping experience possible in CSS, we either need to:
Have some kind of CSS regions that is capable of auto-generating repeating block level elements as-needed by content
Neither of which is possible right now.
Jason didn’t stop there! He used JavaScript to figure out something that stops well short of some heavy scrolljacking thing. First, he figures out how many “pages” wide the CSS columns technique produces. Then, he adds spacer-divs to the scrolling element, each one the width of the page, and those are the things the scrolling element can scroll-snap to. Very clever.
At the moment, you can experience it at the book site by flipping on an optional setting.
Debezium is an open-source project developed by Red Hat which aims to simplify this process by allowing you to extract changes from various database systems (e.g. MySQL, PostgreSQL, MongoDB) and push them to Kafka
Debezium Connectors
Debezium has a library of connectors that capture changes from a variety of databases and produce events with very similar structures, making it easier for the applications to consume and respond to the events regardless of where the changes originated. Debezium currently have the following connectors
One of the most exciting parts of Matt Mullenweg’s session at WordCamp Europe 2020 Online was the live demo of the new image editing tools that will land in the next release of the Gutenberg plugin. The video is already available on WordPress.tv (and embedded below). At the 8:30 mark, Mullenweg and Matías Ventura, lead architect of the Gutenberg project, unveil a collection of the latest block editor improvements.
The six-minute demo shows a handful of new features that are coming in WordPress 5.5, which is scheduled for release in August. These include more polished interactions, copying and pasting blocks, block patterns, and new design tools for the cover block.
These new tools allow users to easily rotate, flip, and crop the image inside the block. Cropping with zoom mode (shown in the image below), is particularly useful with the live preview showing the results in context of the rest of the content on the page.
In the past, WordPress users have frequently had to seek out alternative applications to perform quick image edits, taking them outside of the content editor and interrupting their workflow. With the new inline image editing tools in place, most simple edits can now be handled by the image block, making WordPress a more compelling place for writing content.
Ventura confirmed that these tools change the source image – they do not not just apply CSS changes. He also said the API for image editing will be available in other parts of the editor. The Gutenberg team is working on making the tools more extensible so developers can add things like image filters.
Contributors are hoping the new image editing tools will be ready for inclusion in WordPress 5.5. Users who want to test them ahead of the release can install the Gutenberg plugin and watch for the upcoming 8.3 update.
Images play a lot of vital roles in WordPress websites. For starters, they help you to split long blocks of text, which improves readability, hence user experience. Second, beautiful images add color and life to dull posts making your content more intriguing. And, they add meaning to your textual content, but only if you use […]
Chaos engineering is about introducing turbulent conditions that systems are likely to face in production environments. These chaos experiments uncover new information, which can then be used to make changes to code, making our systems more resilient than they were before. Chaos experiments are not equivalent to Testing. In Testing, we check system response against a predefined expected result. However, in the case of chaos experiment, we don’t have a predefined outcome. The experiment gives us new information about the system, which can then be used for the betterment of systems.
In this article, I will walk you through how you can create chaos experiment of Availability Zone (AZ) failure on AWS. Highly available applications need to be resilient against AZ failures. Your application, for example, a Kubernetes cluster spanning across multi-AZ, should be able to survive such AZ failures. These chaos simulations allow you to check and prepare for that.
In this tutorial series, we’ll guide you step by step on how to create an e-commerce mobile application using flutter. The mobile application would be an open-source app for the Aviacommerce platform. The tutorial would focus on this application to introduce the important concepts of the flutter framework.
This tutorial is the first part of the flutter tutorial series:-
Do you believe in learning from the experiences of others? If others found themselves more productive adding Visual AI to their functional tests, would you give it a try?
In November 2019, over 3,000 engineers signed up to participate in the Applitools Visual AI Rockstar Hackathon. 288 completed the challenge and submitted tests — comparing their use of coded test validation versus the same tests using Visual AI. They found themselves with better coverage, faster test development, more stable test code, with easier code test code maintenance.
I often have this question: "Is the Product Owner accountable for Return on Investment (ROI)?" Well, yes, The Product Owner is accountable for ROI. The most frequent question I get whenever I am teaching, mentoring, or coaching product owners is, "How do I calculate ROI when I don’t even know the cost of a sprint?"
As a product owner, if you do not know the investment for each sprint, and you are expecting profit, how do you prioritize backlog and engage stakeholders?
Over the past few weeks, I have had the GenerateBlocks plugin sitting in my test environment. I have built a few layouts with it, tinkering with the plugin between other projects. The one thing I kept thinking was that it had huge potential. Aside from a couple of issues, I began enjoying the plugin more and more as I played around with its options.
GenerateBlocks was created by Tom Usborne. It was built specifically to work along with his popular GeneratePress theme. However, the plugin claims to work with any WordPress theme.
GenerateBlocks is meant to be the block answer to the page builder question. It is meant to take those elements that make page builders so popular and boil them down to a handful of blocks. It is meant to simplify the process of building complex layouts without the need for heavier solutions. The question is whether it holds up — does it do the job it set out to do?
Overall, it works well, particularly in terms of giving more freedom with layout building. It will not likely eat into the market share of page builders any time soon. However, it may make for a few more converts to the block editor, especially with those who are not tied into an existing solution and are looking for something lightweight.
Watch a quick video on how GenerateBlocks works:
The Plugin’s Blocks
Using each of the GenerateBlocks plugin’s blocks in a section.
GenerateBlocks’ bread and butter is its Container block. It is the WordPress Cover and Group blocks rolled into one with a gluttonous amount of additional options that cover nearly every need.
The one major area that the Container block falls short is with handling full-width sections. Instead of taking advantage of the standard full-width block alignment option that all themes can opt into, it goes with a custom solution. That solution is to provide a notice that the user’s theme must have some sort of full-width content option (likely via a page template). By choosing this route it means the majority of themes, including those built to style blocks, will not support the GenerateBlocks Container block when set to full width.
For end-users who are using a theme that supports the standard full-width block alignment, there are two tricks to bypass this limitation. The first solution is to enter alignfull into the CSS Classes field under the Advanced block options tab. The second solution is to wrap the Container block with the WordPress Group block and set it to full width. How these solutions work out will largely depend on how the theme handles those elements.
With all the flexibility of GenerateBlocks, this would be the reason that I would not recommend the plugin to users who want full-width layouts. The two tricks are not an ideal user experience. In design, the most important thing is for the user to not have to think. The provided solution should simply work.
If we gave that single element of the plugin a one-star rating, everything else would be an easy five stars.
The plugin’s four blocks can easily replace several other blocks. Instead of creating a library of dozens of one-off blocks, GenerateBlocks adds versatility without going overboard. It is easy to see why users have given it a perfect five-star rating (out of its current 34 reviews).
In total, the plugin adds four blocks to the editor:
Container
Grid
Headline
Buttons
Admittedly, I am partial to Automattic’s Layout Grid plugin, primarily because I prefer the visualization of the grid in the background. It puts me at ease. However, the Grid block in GenerateBlocks runs a close second. In practice, it is more flexible, providing more layout options out of the box and fine-grained control. For those who need greater control over column widths and a host of color, typography, background, and spacing options, GenerateBlocks is a no-brainer.
Inserting a new Grid block in the editor.
The Headline and Buttons blocks are essentially recreations of the core Heading and Buttons blocks with all the options that make this plugin useful. Plus, the blocks have an extra icon option, which allows users to choose between entering custom SVG code or selecting from a predefined list of general and social icons. This is a nice touch that I would like to see in core WordPress.
The thing that makes the four plugin blocks so flexible is the bounty of block options. For every block, you will find most of the following options tabs with numerous fields under each:
Typography
Spacing
Colors
Background Image
Background Gradient
Advanced (extra options for the core tab)
Icon
The plugin also provides options based on desktop, tablet, and mobile modes. This allows end-users to make changes based on the screen size of the website visitor.
If I had one other nit-pick about the plugin it would be that its color options do not take advantage of the theme-defined color palette. For design consistency, it would be nice to be able to use those without using a color picker or entering the hex code. Update:there is a “Show Color Palette” button that does this, but it was not apparent that it would provide access to my theme colors.
Final Thoughts
Would I recommend the plugin? Absolutely.
I would make sure to note the full-width Container block issue with that recommendation. If you are using this with a theme other than GeneratePress, you will need to have a solution for handling full-width sections. For me, this is the most vital piece of what is essentially a layout builder, and it failed to live up to that expectation.
However, one issue does not discount the usefulness of what the developer has built. It is a solid plugin. Under the hood, it is a well-coded and documented piece of software. I have no doubt that it will be serving many more users in the years to come and will only continue to improve.
On the Test Maintenance Road to Nowhere? Your Visual AI Exit Is Just Ahead.
Congrats! You just spent hours authoring new tests. They all passed 100% of the time. Now you can start the real work of managing quality. That is until the application under test starts to change. Now, the potential for instability in code-based assertions surfaces, and your maintenance nightmare ensues.
Linux is an awesome ecosystem for a variety of uses. For instance, Linux is the de facto server environment, powering over 96% of the top 1 million servers. And for programming, Linux is arguably better than Windows. Check out the best Linux distros for programmers and developers!
Why Is Linux Better for Devs and Programmers?
My Linux journey began back in the day when I inherited an ancient Shuttle XPC desktop sans an operating system (OS). Rather than purchasing a copy of Windows, I decided to install the Ubuntu derivative Lubuntu, and since then I've been a convert. Likewise, one of the reasons many motivations for programmers to use a Linux OS is that it's free and open-source.
Today there is a huge amount of technology for dealing with different aspects of cloud computing. In particular, containerization and microservices lead us to think of software applications as distributed applications whose components can be easily deployed and moved in the cloud. In my opinion, what we are facing today is a revolution that is not only a matter of technologies, it is something so profound that it can alter the way we conceive software and software infrastructures.
My idea is that we need new abstractions and concepts for dealing with such a revolution. In science, we are always looking for the best model which captures the essence of reality. We are doing this because on top of that model we can build the right technologies for satisfying our human needs. The same happened in computer science from the beginning when researchers started to automatize the ability of the mind: calculation. From that moment, the calculation machine has been always used as the basic reference for dealing with automatic calculation, and on top of this model, different technologies have been developed. In this article, I start to reason about the usage of a new reference idea for dealing with computational resources which best fit with the reality of cloud computing, instead of the traditional computing machine model: the communication machine.
Often designed as a group of distributed microservices running in containers, cloud-native applications are better known as containerized applications. Increasingly, the containerized applications are Kubernetes-based, Kubernetes being the de-facto standard for container orchestration. But the exponential growth in microservices makes it quite challenging to find out how to enforce and standardize routing between multiple services, encryption, authentication and authorization, as well as load balancing within a Kubernetes cluster. Building on service mesh helps to tackle these challenges. Like containers abstract away the operating system from the application, a service mesh abstracts away how inter-process communications are tackled.
What Is a Service Mesh?
A service mesh refers to a dedicated infrastructure layer for tackling service-to-service communication. It enables reliable delivery of requests through the complex topology of services constituting a modern, cloud native application. Practically, the service mesh implements as an array of lightweight network proxies deployed alongside application code. In other words, it is made up of sidecar proxies attached to all the pods in an application. The concept of the service mesh in terms of a distinct layer is connected to the growth of the cloud native application. Remember service-to-service communication is not only complex, but a fundamental aspect of runtime behavior and ubiquitous. Managing it is crucial to assure end-to-end performance and reliability.
Alpha Roc, an Arbitrage-as-a-Service platform provider for cryptocurrency markets, has announced an open beta for the company’s machine-learning trading API. The release of the new ALPHA API is designed to allow users with limited experience with investing to leverage the company’s AI-powered algorithms for cryptocurrency arbitrage.
Hasura, a GraphQL data and services company, has introduced a new data federation feature: Remote Joins. Remote Joins allows developers to treat data across sources as a single database. The existing data sources do not need to be modified in order to utilize Remote Joins. With a point and click, a relationship across the sources is created and unified access is created through the GraphQL API.
Best WordPress Themes for Web Hosting Providers Do you think about starting a web hosting business? If so, you obviously need to develop a website for your hosting company first. A great-looking, fully functional and...