Some operating systems and browsers are not showing scrollbars by default. That often results in developers forgetting about these pesky gray bars and the issues they can cause. I'll give you two quick examples: When setting overflow: hidden on the body element, if there was a scrollbar visible, con...
Several weeks ago, I wrote The Free Software Foundation is dying, wherein I enumerated a number of problems with the Free Software Foundation. Some of my criticisms focused on the message: fsf.org and gnu.org together suffer from no small degree of incomprehensibility and inaccessibility which makes...
Several weeks ago, I wrote The Free Software Foundation is dying, wherein I enumerated a number of problems with the Free Software Foundation. Some of my criticisms focused on the message: fsf.org and gnu.org together suffer from no small degree of incomprehensibility and inaccessibility which makes...
Here are some tips on using a ubiquitous language on your cross-functional team.Martin Fowler really knows more about Ubiquitous Language and its importance. Here are a few of my tips.Mean the Same ThingOn a cross-functional team we would likely have developers, product managers, designers, user rep...
Tmux can help you set up your development environment more quickly.Many Tool OptionsThere are many tools used to make development environments work better or faster. For example, containerization with docker and docker-compose. I don't love these tools because of the cost of the abstraction: getting...
Containers are queryable globally. Here's how.Container Queries are GreatIt's amazing that @container queries are here and widely available.Different from @media queries, which interrogate the viewport width, @container queries interrogate DOM element widths.Containers Globally AvailableWhen you def...
Here's the difference between simplifying and merely managing complexity.The Better OptionEssential complexity is inherent in a domain. It won't go away. If you're going to solve the problem, you must face it and deal with it. Or change the paradigms of the domain itself so that the essential proble...
Here's where are the trends in social networks seem to be leading us.The Need to ConnectConnection with our fellow humans is one of the most important and satisfying experiences in life. Recent technological development has allowed worldwide social networks over the Internet. The potential is there ...
I have been tinkering with mobile Linux – a phrase I will use here to describe any Linux distribution other than Android running on a mobile device – as my daily driver since about 2019, when I first picked up the PinePhone. For about 3 years I have run mobile Linux as my daily driver on my phone, a...
I have been tinkering with mobile Linux – a phrase I will use here to describe any Linux distribution other than Android running on a mobile device – as my daily driver since about 2019, when I first picked up the PinePhone. For about 3 years I have run mobile Linux as my daily driver on my phone, a...
Here's how to conveniently set your screen configuration in X11/RandR for multiple monitors. It'll work for i3 or other windowing environments.The PiecesX Window System - is a window system for Unix. Aka X. Aka X11, because v11 is its latest stable release.RandR - is an extension to X. Sets monitor ...
Here's how to expand a CSS grids into 1, 2, then 3 columns.The Markup widget one widget two widget three Kinda interesting, eh. What's up with col2?1-Column StateIn 1 column, all widgets are stacked:+--------------------------------+ | | | +----------------------------+ | | | | | | | 1 | | | | | | |...
Here's how to set up a simple ClojureScript project with shadow-cljs.shadow-cljsShadow CLJS is so many things, I don't think I can currently enumerate them. In this case, it's going to configure the building of ClojureScript into JavaScript. It'll give us a nice development server too.DependenciesOn...
Building Blocks These three building blocks will get you there: A ModelContainer instance One or more instances of your @Model class(es) Inserting those model instances into your ModelContainer’s mainContext Let’s take those building blocks one at a time. Initialize a ModelContainer Suppose that you...
Challenge - Our platform which houses millions of products were subject to regular updates by Marketplace sellers via APIs or by Kogan.com's internal teams. However, an arduous average update pipeline duration of 8 hours hindered the prompt visibility of these changes to customers on the website or ...