<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Arpit&apos;s Blog</title><description>The online home of Arpit Agrawal, a web designer-developer from India.</description><link>https://arpit.blog/</link><item><link>https://arpit.blog/notes/2026/03/slide-in-nav-scroll-triggered-animations/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/03/slide-in-nav-scroll-triggered-animations/</guid><description>&lt;p&gt;I liked &lt;a href=&quot;https://www.youtube.com/watch?v=6LJuWf4ySCI&quot;&gt;Kevin Powell’s video on the slide-in nav&lt;/a&gt;. In the video, Kevin demonstrates how to create a sticky header that initially scrolls away (when the user scrolls the page), then slides back into view as a sticky top bar once the user has scrolled past a certain threshold.&lt;/p&gt;
&lt;p&gt;He achieves the slide-in effect using scroll state queries and a negative &lt;code&gt;inset-block-start&lt;/code&gt; on the sticky positioned element.&lt;/p&gt;
&lt;p&gt;He also recreates the effect using scroll driven animations. But it’s not an ideal solution, since as he puts it speaking about the header, “if I stop at the wrong spot, it’s like halfway there”. That is definitely a usability issue.&lt;/p&gt;
&lt;p&gt;I remembered Bramus sharing his post &lt;a href=&quot;https://developer.chrome.com/blog/scroll-triggered-animations&quot;&gt;on scroll &lt;em&gt;triggered&lt;/em&gt; animations&lt;/a&gt;. As Bramus mentions, scroll triggered animations “trigger when crossing a specific scroll offset”. This is exactly what’s required to avoid the problem Kevin mentioned above.&lt;/p&gt;
&lt;p&gt;Here’s my &lt;a href=&quot;https://codepen.io/editor/arpit-codes/pen/019cd1ee-29b1-717f-8a27-9a37ba5f2c26&quot;&gt;CodePen demo&lt;/a&gt; achieving the slide-in effect using scroll triggered animations.&lt;/p&gt;
&lt;p&gt;I tested it on Chrome Canary v147. No other browser seems to support it yet, not even Chrome v145 even though Bramus’ article says it ships with v145. On browsers that don’t support scroll triggered animations, there is no slide-in effect but the header remains sticky.&lt;/p&gt;</description><pubDate>Mon, 09 Mar 2026 16:04:00 GMT</pubDate><category>animations</category><category>css</category></item><item><title>Underlining Links With CSS | Always Twisted</title><link>https://www.alwaystwisted.com/articles/underlining-links-with-css</link><guid isPermaLink="true">https://www.alwaystwisted.com/articles/underlining-links-with-css</guid><pubDate>Wed, 25 Feb 2026 11:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I learned about the CSS property &lt;code&gt;text-underline-position&lt;/code&gt;. As Stuart mentions, &lt;q&gt;the &lt;code&gt;under&lt;/code&gt; value forces the underline to sit below all the descenders, giving you a consistent baseline.&lt;/q&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	text-underline-position&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; under&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><category>underline</category><category>css</category><category>stuart-robson</category></item><item><title>Modular: The Claude C Compiler: What It Reveals About the Future of Software</title><link>https://www.modular.com/blog/the-claude-c-compiler-what-it-reveals-about-the-future-of-software</link><guid isPermaLink="true">https://www.modular.com/blog/the-claude-c-compiler-what-it-reveals-about-the-future-of-software</guid><pubDate>Wed, 25 Feb 2026 08:29:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Good software depends on judgment, communication, and clear abstraction. AI has amplified this.&lt;/li&gt;
&lt;li&gt;AI coding is automation of implementation, so design and stewardship become more important.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;</content:encoded><category>claude</category><category>ai</category><category>llm</category><category>software-engineering</category></item><item><link>https://arpit.blog/notes/2026/02/rollback-css/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/02/rollback-css/</guid><description>&lt;p&gt;I keep forgetting how each of the following CSS values rolls back a declaration to a different point in the cascade. It was about time I jotted it down for my future self before it slips my mind again for the 1000th time.&lt;/p&gt;
&lt;dl class=&quot;flow&quot;&gt;
	&lt;div&gt;
		&lt;dt&gt;
			&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/initial&quot;&gt;
				&lt;code&gt;initial&lt;/code&gt;
			&lt;/a&gt;
		&lt;/dt&gt;
		&lt;dd&gt;Applies the initial value as defined in the CSS spec&lt;/dd&gt;
	&lt;/div&gt;
	&lt;div&gt;
		&lt;dt&gt;
			&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/unset&quot;&gt;
				&lt;code&gt;unset&lt;/code&gt;
			&lt;/a&gt;
		&lt;/dt&gt;
		&lt;dd&gt;Inherits or falls back to the initial value&lt;/dd&gt;
	&lt;/div&gt;
	&lt;div&gt;
		&lt;dt&gt;
			&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/revert&quot;&gt;
				&lt;code&gt;revert&lt;/code&gt;
			&lt;/a&gt;
		&lt;/dt&gt;
		&lt;dd&gt;Reverts to the user agent&apos;s default value&lt;/dd&gt;
	&lt;/div&gt;
	&lt;div&gt;
		&lt;dt&gt;
			&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/revert-layer&quot;&gt;
				&lt;code&gt;revert-layer&lt;/code&gt;
			&lt;/a&gt;
		&lt;/dt&gt;
		&lt;dd&gt;Rolls back to the value in a previous cascade layer&lt;/dd&gt;
	&lt;/div&gt;
&lt;/dl&gt;</description><pubDate>Wed, 25 Feb 2026 04:40:00 GMT</pubDate><category>cascade</category><category>css</category></item><item><link>https://arpit.blog/notes/2026/02/sotb-2026/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/02/sotb-2026/</guid><description>&lt;p&gt;I’ll be attending &lt;a href=&quot;https://2026.stateofthebrowser.com/&quot;&gt;State of the Browser&lt;/a&gt; for the first time, remotely! 💃🏻&lt;/p&gt;
&lt;p&gt;Really looking forward to Bramus’ talk on CSS Anchor Positioning and Zach’s talk on reducing the JS footprint.&lt;/p&gt;</description><pubDate>Mon, 23 Feb 2026 05:52:00 GMT</pubDate><category>sotb</category><category>conference</category></item><item><title>zachleat’s Twitter Archive—№ 20,184</title><link>https://www.zachleat.com/twitter/982251377010270210/</link><guid isPermaLink="true">https://www.zachleat.com/twitter/982251377010270210/</guid><pubDate>Tue, 10 Feb 2026 22:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Zach Leatherman on frontend architecture and building for longevity amid framework churn:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;👏 Hire someone that’s good at HTML and CSS to build components independent of JS frameworks 👏&lt;/li&gt;
&lt;li&gt;Plug components into a JS framework and layer on behavior later&lt;/li&gt;
&lt;li&gt;Pay HTML/CSS devs what they deserve for giving part of your codebase longer shelf life than unpasteurized milk&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;</content:encoded><category>frontend-architecture</category><category>component-design</category><category>frameworks</category><category>zach-leatherman</category></item><item><link>https://arpit.blog/notes/2026/02/reset-button/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/02/reset-button/</guid><description>&lt;p&gt;Today I learned that setting &lt;code&gt;type=&quot;reset&quot;&lt;/code&gt; on a &lt;code&gt;&amp;#x3C;button&gt;&lt;/code&gt; element in HTML creates a reset button that, when activated, immediately clears all form data, resetting it to its initial state.&lt;/p&gt;
&lt;p&gt;This could have been useful in the context of a search form. But &lt;code&gt;&amp;#x3C;input type=&quot;search&quot;&gt;&lt;/code&gt; already provides a native clear button for that single field.&lt;/p&gt;</description><pubDate>Mon, 09 Feb 2026 09:55:00 GMT</pubDate><category>button</category><category>input</category><category>html</category></item><item><title>Saying “No” In an Age of Abundance - Jim Nielsen’s Blog</title><link>https://blog.jim-nielsen.com/2026/saying-no/</link><guid isPermaLink="true">https://blog.jim-nielsen.com/2026/saying-no/</guid><pubDate>Wed, 04 Feb 2026 05:05:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;It’s never been a good idea to ship everything you think of. Every addition accretes complexity and comes with a cognitive cost.&lt;/p&gt;
&lt;p&gt;Maybe we need to reframe the concept of scarcity from &lt;em&gt;us&lt;/em&gt;, the makers of software, to &lt;em&gt;them&lt;/em&gt;, the users of software. Their resources are what matter most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attention (too many features and they can’t all be used, or even tried)&lt;/li&gt;
&lt;li&gt;Stability (too much frequent change is an impediment to learning a product)&lt;/li&gt;
&lt;li&gt;Clarity (too many options creates confusion and paralysis)&lt;/li&gt;
&lt;li&gt;Coherence (too many plots and subplots cannot tell a unified story)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;</content:encoded><category>focus</category><category>product-design</category><category>feature-creep</category><category>jim-nielsen</category></item><item><title>Singing the gospel of collective efficacy (Interconnected)</title><link>https://interconnected.org/home/2026/01/30/efficacy</link><guid isPermaLink="true">https://interconnected.org/home/2026/01/30/efficacy</guid><pubDate>Mon, 02 Feb 2026 00:45:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Similarly we all love when the swifts visit (beautiful birds), so somebody started a group to get swift nest boxes made and installed collectively, then applied for subsidy funding, then got everyone to chip in such that people who couldn’t afford it could have their boxes paid for, and now suddenly we’re all writing to MPs and following the legislation to include swift nesting sites in new build houses. Etc.&lt;/p&gt;
&lt;p&gt;It’s called &lt;em&gt;collective efficacy&lt;/em&gt;, the belief that you can make a difference by acting together.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>collective-action</category><category>community</category><category>matt-webb</category></item><item><title>Pedagogy Recommendations</title><link>https://parentheticallyspeaking.org/articles/pedagogy-recommendations/</link><guid isPermaLink="true">https://parentheticallyspeaking.org/articles/pedagogy-recommendations/</guid><pubDate>Fri, 30 Jan 2026 05:23:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Every time you are inclined to use the word “teach”, replace it with “learn”. That is, instead of saying, “I teach”, say “They learn”. It’s very easy to determine what you teach; you can just fill slides with text and claim to have taught. Shift your focus to determining how you know whether they learned what you claim to have taught (or indeed anything at all!). That is much harder, but that is also the real objective of any educator.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>teaching</category><category>learning</category></item><item><title>Web development tip: disable pointer events on link images</title><link>https://lapcatsoftware.com/articles/2025/11/2.html</link><guid isPermaLink="true">https://lapcatsoftware.com/articles/2025/11/2.html</guid><pubDate>Thu, 29 Jan 2026 13:54:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The problem is that Live Text, “Select text in images to copy or take action,” is enabled by default on iOS devices (Settings → General → Language &amp;#x26; Region), which can interfere with the contextual menu in Safari. Pressing down on the above link may select the text inside the image instead of selecting the link URL.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>css</category><category>link</category><category>images</category><category>safari</category></item><item><link>https://arpit.blog/notes/2026/01/okpalette-color-extraction/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/01/okpalette-color-extraction/</guid><description>&lt;p&gt;Just spent some time playing with &lt;a href=&quot;https://okpalette.color.pizza/&quot;&gt;OKpalette&lt;/a&gt;, a color extraction tool by &lt;a href=&quot;https://elastiq.ch/&quot;&gt;David Aerne&lt;/a&gt;, and I’m in awe.&lt;/p&gt;
&lt;p&gt;The 3D spinning text pulled me in immediately. I assumed it was done using JavaScript because it reminded me of the &lt;a href=&quot;https://spacetypegenerator.com/&quot;&gt;Space Type Generator&lt;/a&gt;. Finding out it’s done using CSS genuinely blew my mind. David was kind enough to share a &lt;a href=&quot;https://codepen.io/meodai/pen/ZYOyqBo?editors=0010&quot;&gt;CodePen demo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I loved the animations and the subtle use of audio while interacting with the UI. Then I watched &lt;a href=&quot;https://www.youtube.com/watch?v=qkZlgJLGKI4&quot;&gt;David’s walkthrough / demo&lt;/a&gt; and realized the functionality is just as beautiful as the visuals, if not more.&lt;/p&gt;</description><pubDate>Fri, 23 Jan 2026 03:46:00 GMT</pubDate><category>color</category><category>interaction-design</category><category>design</category><category>css</category><category>tools</category><category>resource</category></item><item><title>Easy Measures Doing, Simple Measures Understanding - Jim Nielsen’s Blog</title><link>https://blog.jim-nielsen.com/2026/easy-vs-simple/</link><guid isPermaLink="true">https://blog.jim-nielsen.com/2026/easy-vs-simple/</guid><pubDate>Thu, 22 Jan 2026 11:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Excellent framing from Jim Nielsen, building on &lt;a href=&quot;https://www.youtube.com/watch?v=eIoohUmYpGI&quot;&gt;Jake Nations’ talk about shipping code we don’t fully understand&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Easy means you can do with little effort.&lt;/p&gt;
&lt;p&gt;Simple means you can understand what you do with little effort.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>jim-nielsen</category><category>complexity</category><category>design</category></item><item><link>https://arpit.blog/notes/2026/01/unreasonable-man-quote/</link><guid isPermaLink="true">https://arpit.blog/notes/2026/01/unreasonable-man-quote/</guid><description>&lt;blockquote&gt;
&lt;p&gt;The reasonable man adapts himself to the world; the unreasonable man persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I learned about this quote by George Bernard Shaw from &lt;a href=&quot;https://www.youtube.com/watch?v=MiUHjLxm3V0&quot;&gt;Veritasium’s video on The World’s Most Important Machine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It instantly reminded me of the &lt;a href=&quot;https://www.youtube.com/watch?v=P2z5dTOHsL0&quot;&gt;&lt;i lang=&quot;hi-Latn&quot;&gt;Kaun Hai Tu&lt;/i&gt; scene from Gully Boy&lt;/a&gt;, where Murad embodies Shaw’s “unreasonable man.” In this scene, Murad is confronted by his father after quitting his job to pursue his dream. The father tries to convince Murad that his dreams need to match his reality. Murad then answers that he will change his reality to match his dreams.&lt;/p&gt;</description><pubDate>Tue, 13 Jan 2026 15:25:00 GMT</pubDate><category>progress</category><category>quote</category><category>film</category></item><item><title>Reckoning: Frontend&apos;s Lost Decade | Alex Russell | performance.now() 2024 - YouTube</title><link>https://www.youtube.com/watch?v=0XwWVjQOmyg</link><guid isPermaLink="true">https://www.youtube.com/watch?v=0XwWVjQOmyg</guid><pubDate>Fri, 09 Jan 2026 13:19:00 GMT</pubDate><content:encoded>&lt;p&gt;In this excellent, data-driven talk, Alex Russell explains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What “winning” means for the web and why it’s a vital cause&lt;/li&gt;
&lt;li&gt;How the web is losing the competition today on mobile, despite its success on desktop&lt;/li&gt;
&lt;li&gt;The path forward: Getting things out of frameworks and using the web platform&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>platform</category><category>frameworks</category><category>mobile</category><category>apps</category><category>performance</category><category>alex-russell</category></item><item><title>How to choose your Baseline target  |  Articles  |  web.dev</title><link>https://web.dev/articles/how-to-choose-your-baseline-target</link><guid isPermaLink="true">https://web.dev/articles/how-to-choose-your-baseline-target</guid><pubDate>Mon, 05 Jan 2026 08:22:00 GMT</pubDate><content:encoded>&lt;p&gt;Jeremy Wagner and Rachel Andrew explain how to use analytics to select a Baseline target and what to do when you don’t have any real user data.&lt;/p&gt;
&lt;p&gt;In cases where there isn’t any real user data:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] you can get a general idea of support for different Baseline targets through &lt;a href=&quot;https://rumarchive.com/insights/#baseline&quot;&gt;RUM Archive Insights&lt;/a&gt;, even allowing you to filter down to the country level.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They also address a practical follow-up question: &lt;strong&gt;what to do about features that don’t meet your chosen Baseline target.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Baseline doesn’t prescribe a specific path here, but the authors suggest a useful framework for categorizing features based on their “failure mode”:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhancement:&lt;/strong&gt; If the feature is used in an unsupported browser, the experience is not broken. The experience could possibly be degraded, but may not likely be noticeable to the user. Example: &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Additive:&lt;/strong&gt; The feature provides some additive benefits that may be noticeable—such as changes in page styling or some functionality. The difference may not be noticeable to users if the feature is unsupported, barring comparison in a browser that does support it. Example: Subgrid&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical:&lt;/strong&gt; If the feature is unsupported, the user will have a negative user experience—possibly even one that’s broken altogether. Example: File System Access API used as a central and necessary feature.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;They also highlight &lt;a href=&quot;https://browsersupport.clearleft.com/&quot;&gt;Clearleft’s browser support policy&lt;/a&gt;, where they target Baseline Widely available while still evaluating whether newer features can be used as progressive enhancements before ruling them out entirely.&lt;/p&gt;</content:encoded><category>baseline</category><category>browser-support</category><category>progressive-enhancement</category><category>analytics</category></item><item><title>Jason Pamental - The Life of p - YouTube</title><link>https://www.youtube.com/watch?v=4ggOmfBtWRM</link><guid isPermaLink="true">https://www.youtube.com/watch?v=4ggOmfBtWRM</guid><pubDate>Thu, 01 Jan 2026 16:33:00 GMT</pubDate><content:encoded>&lt;p&gt;I just saw Jason Pamental’s excellent talk on ‘The Life of &lt;code&gt;&amp;#x3C;p&gt;&lt;/code&gt;’. In this talk, Jason traces the evolution of paragraph design in print and shows how those typographic ideas can be applied using CSS.&lt;/p&gt;
&lt;p&gt;There’s one moment during the Q&amp;#x26;A where Jason mentions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] you see the page gets small, but they don’t change the scale of the headers. So you end up with like an &lt;code&gt;&amp;#x3C;h1&gt;&lt;/code&gt; with one word per line. It’s a really awkward break. So I think proportion with varying screen size is probably the most overlooked thing right now that I’d want to see people think about more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wasn’t a web developer 10 years ago when Jason gave this talk, but with over five years of experience now, it’s striking that I only became aware of proportional type scaling as an idea in the last couple of years. Nowadays, I use &lt;a href=&quot;https://utopia.fyi/&quot;&gt;utopia.fyi&lt;/a&gt; to create fluid type (and space) scales across viewport ranges, which helps address the problem Jason mentioned.&lt;/p&gt;</content:encoded><category>typography</category><category>design</category><category>paragraph</category><category>css</category></item><item><title>Browser support at Clearleft</title><link>https://browsersupport.clearleft.com/</link><guid isPermaLink="true">https://browsersupport.clearleft.com/</guid><pubDate>Tue, 30 Dec 2025 09:57:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Underlying our browser support policy are two foundational principles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Website content and core functionality should be accessible to everyone.&lt;/li&gt;
&lt;li&gt;It’s okay for websites to look different in different browsers.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If content is unreadable in some browsers, that’s a bug that we will fix.&lt;/p&gt;
&lt;p&gt;If content is displayed slightly differently in some browsers, we consider that to be a facet of the web, not a bug. This means that there will sometimes be subtle visual and functional differences from browser to browser. We deem this acceptable provided content and core functionality are unaffected.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>baseline</category><category>browser-support</category><category>progressive-enhancement</category><category>principle</category></item><item><link>https://arpit.blog/notes/2025/12/use-the-product/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/12/use-the-product/</guid><description>&lt;p&gt;Earlier this month, I noted down &lt;a href=&quot;https://arpit.blog/links/2025/12/developer-job-jason-lengstorf/&quot;&gt;Jason’s advice on how to get hired as a developer&lt;/a&gt;. I’d also like to add the following point from &lt;a href=&quot;https://x.com/burcs/status/2002013464387105231&quot;&gt;@brandon&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;use the product&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;this is one of the first questions i ask in the interview anyways, ship and share something you’ve built on top of cloudflare. this alone will set you apart from most of the candidates, and it will show you are genuinely interested.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This complements Jason’s advice well, because it turns “show your work” into something concrete and product-specific.&lt;/p&gt;</description><pubDate>Mon, 29 Dec 2025 04:22:00 GMT</pubDate><category>job</category><category>hiring</category><category>career</category></item><item><title>Config 2024: Serious play (Andy Allen, Software Designer, !Boring) | Figma - YouTube</title><link>https://www.youtube.com/watch?v=wBnIyD5I8mM</link><guid isPermaLink="true">https://www.youtube.com/watch?v=wBnIyD5I8mM</guid><pubDate>Mon, 22 Dec 2025 16:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Great talk by Andy Allen on how software designers can learn from game designers.&lt;/p&gt;
&lt;p&gt;It reminded me of &lt;a href=&quot;https://chrome.dev/carousel/vertical/wheel/&quot;&gt;the Wheel by Adam Argyle&lt;/a&gt;, inspired by the arcade game Black Emperor. The game feel is so strong that I find myself scrolling up and down again and again just to play with it and experience that delightful bounce effect.&lt;/p&gt;</content:encoded><category>design</category><category>games</category></item><item><title>do THIS to get a developer job in 2024 - YouTube</title><link>https://www.youtube.com/watch?v=T0deG6OpadM</link><guid isPermaLink="true">https://www.youtube.com/watch?v=T0deG6OpadM</guid><pubDate>Fri, 19 Dec 2025 10:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Jason Lengstorf on how to get hired as a developer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Document what you learn publicly&lt;/strong&gt; — consistency matters more than polish.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show your work&lt;/strong&gt; — CodePen demos, personal projects or tutorials all count.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participate in communities&lt;/strong&gt; — Bluesky, Mastodon, Discord.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>job</category><category>hiring</category><category>career</category><category>jason-lengstorf</category></item><item><link>https://arpit.blog/notes/2025/12/mac-os-scroll-bars-mouse/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/12/mac-os-scroll-bars-mouse/</guid><description>&lt;p&gt;Today I learned that on macOS, with the default scrollbar setting enabled, classic scrollbars are shown automatically when a mouse is connected. I used to believe that, mouse or not, users needed to explicitly change the scrollbar appearance to get the classic scrollbars.&lt;/p&gt;
&lt;p&gt;This is relevant for everyone who builds websites because when classic scrollbars are shown, the value of &lt;code&gt;100vw&lt;/code&gt; includes the scrollbar width. This can cause an unexpected horizontal overflow if the layout relies on &lt;code&gt;100vw&lt;/code&gt; for full-width elements. Additionally, they affect media queries, which assume scrollbars don’t exist when evaluating viewport width.&lt;/p&gt;
&lt;p&gt;Having said that, these aren’t new issues. Classic scrollbars are shown by default on Windows, where the same behaviours apply.&lt;/p&gt;
&lt;p&gt;Further reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/viewport-units&quot;&gt;The large, small, and dynamic viewport units | Blog | web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.smashingmagazine.com/2023/12/new-css-viewport-units-not-solve-classic-scrollbar-problem/&quot;&gt;New CSS Viewport Units Do Not Solve The Classic Scrollbar Problem — Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://css-tip.com/width-scrollbar/&quot;&gt;Get the scrollbar width using only CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frontendmasters.com/blog/full-bleed-layout-with-modern-css/&quot;&gt;Full-Bleed Layout with Modern CSS – Frontend Masters Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 18 Dec 2025 15:37:00 GMT</pubDate><category>scrollbars</category><category>layout</category><category>viewport</category><category>media-queries</category><category>css</category><category>mac-os</category></item><item><title>The f*** off contact page - Nic Chan</title><link>https://www.nicchan.me/blog/the-f-off-contact-page/</link><guid isPermaLink="true">https://www.nicchan.me/blog/the-f-off-contact-page/</guid><pubDate>Mon, 08 Dec 2025 10:51:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Instead of seeing us as people who brought valuable knowledge and expertise to the project, they saw us as the hands that would execute their vision.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The above bit from Nic captures a dynamic I want to address upfront with clients, so they never treat me as just a pair of hands.&lt;/p&gt;
&lt;p&gt;Then there’s the this bit, which really resonated with me (because I’ve been there too and it sucks):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While I personally believe in the value of good design, I also believe there are a lot of smoke-and-mirrors in the industry, and I hated the thought that I might have inadvertently contributed to it. Even if the client is happy, it didn’t meet my internal bar for a quality product worth sticking my name on, and I feel like I’ve let down both the client and the end-users.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nic mentions how they hope to avoid similar situations in the future by blogging:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;By blogging, I’m putting a body of work out there that communicates my values and ethos. While much of the details of my client work has to remain private, these posts can be public, and hopefully they can help me find people who resonate with what I have to offer. Or you know, just be bold enough to communicate ‘Fuck off’ to those who don’t!&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>design</category><category>client-work</category><category>blogging</category><category>nic-chan</category></item><item><title>Conditional JSX in Astro — Roma’s Unpolished Posts</title><link>https://blog.kizu.dev/conditional-jsx-in-astro/</link><guid isPermaLink="true">https://blog.kizu.dev/conditional-jsx-in-astro/</guid><pubDate>Mon, 08 Dec 2025 07:21:00 GMT</pubDate><content:encoded>&lt;p&gt;Roman Komarov on how they use an &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Glossary/IIFE&quot;&gt;IIFE (Immediately Invoked Function Expression)&lt;/a&gt; to handle complex conditional rendering in &lt;code&gt;.astro&lt;/code&gt; components.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;linkText&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; isDiv&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; Astro&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;.props;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	(() &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;		const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; someContent&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;#hello&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;{linkText}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;		return&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;			&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;wrapper&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;				{isDiv &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;					&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;inner&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;{someContent}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;				) &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;					&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;inner&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;{someContent}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;				)}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;			&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;		);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	})()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><category>astro</category><category>jsx</category><category>iife</category><category>javascript</category><category>roman-komarov</category></item><item><title>&apos;Dhurandhar&apos; Movie Review: No Love Lost or Found In Ranveer Singh&apos;s Spy Thriller</title><link>https://www.hollywoodreporterindia.com/reviews/theatrical/dhurandhar-movie-review-no-love-lost-or-found-in-ranveer-singhs-spy-thriller</link><guid isPermaLink="true">https://www.hollywoodreporterindia.com/reviews/theatrical/dhurandhar-movie-review-no-love-lost-or-found-in-ranveer-singhs-spy-thriller</guid><pubDate>Sat, 06 Dec 2025 13:23:00 GMT</pubDate><content:encoded>&lt;p&gt;Loved this bit from Rahul Desai’s review of ‘Dhurandhar’:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] the term “fictional film inspired by real events” means that historical authenticity will be cited if the film-making is questioned, and fiction will be cited if the historical authenticity is questioned.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>fiction</category><category>history</category><category>film</category><category>india</category></item><item><title>Selector scoping in element.querySelector() and element.querySelectorAll()</title><link>https://arpit.blog/articles/2025/12/selector-scoping-element-query-selector/</link><guid isPermaLink="true">https://arpit.blog/articles/2025/12/selector-scoping-element-query-selector/</guid><pubDate>Tue, 02 Dec 2025 09:27:00 GMT</pubDate><content:encoded>&lt;p&gt;I was reading the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelector&quot;&gt;MDN docs for &lt;code&gt;element.querySelector()&lt;/code&gt;&lt;/a&gt; and learnt something totally unexpected about selector scope when this method is called on an element.&lt;/p&gt;
&lt;p&gt;Let’s say I have the following HTML:&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;This is a paragraph and it has a &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;span inside&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt; it.&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;	const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; baseElement&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; document&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.querySelector&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;	// Note: We are querying relative to the &amp;lt;p&amp;gt; element, not the document&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;	const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; matchedSpan&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; baseElement&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.querySelector&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;#39;div span&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	console&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.log&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(matchedSpan);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once the above JavaScript is executed, what do you expect to happen?&lt;/p&gt;
&lt;p&gt;I expected it to log &lt;code&gt;null&lt;/code&gt; to the console. My reasoning was simple: I am calling the method on &lt;code&gt;baseElement&lt;/code&gt; (the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tag), and that paragraph clearly does not contain a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; inside it.&lt;/p&gt;
&lt;p&gt;But here’s what actually gets logged to the console:&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;console&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;span&amp;gt;span inside&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This surprisingly returns the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; from &lt;em&gt;inside&lt;/em&gt; the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Why does this happen? MDN explains it like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] &lt;code&gt;selectors&lt;/code&gt; is first applied to the whole document, not the &lt;code&gt;baseElement&lt;/code&gt;, to generate an initial list of potential elements. The resulting elements are then examined to see if they are descendants of &lt;code&gt;baseElement&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note: &lt;code&gt;element.querySelectorAll()&lt;/code&gt; also applies selector scoping in the same manner.&lt;/p&gt;
&lt;p&gt;If we want to restrict the selector to the element on which it is called then we should use the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:scope&quot;&gt;&lt;code&gt;:scope&lt;/code&gt; pseudo-class&lt;/a&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; scopedQuery&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; baseElement&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.querySelector&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;#39;:scope div span&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.log&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(scopedQuery); &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;// Returns null, as expected&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As mentioned in the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:scope&quot;&gt;MDN docs for &lt;code&gt;:scope&lt;/code&gt;&lt;/a&gt;, this works because:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When used within a DOM API call — such as &lt;code&gt;querySelector()&lt;/code&gt;, &lt;code&gt;querySelectorAll()&lt;/code&gt;, &lt;code&gt;matches()&lt;/code&gt;, or &lt;code&gt;Element.closest()&lt;/code&gt; — &lt;code&gt;:scope&lt;/code&gt; matches the element on which the method was called.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>dom</category><category>css-selector</category><category>web-api</category><category>javascript</category></item><item><link>https://arpit.blog/notes/2025/11/homebound/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/11/homebound/</guid><description>&lt;p&gt;I just watched &lt;a href=&quot;https://www.themoviedb.org/movie/1227739&quot;&gt;Homebound&lt;/a&gt;, Neeraj Ghaywan’s second feature film. And it left me devastated.&lt;/p&gt;
&lt;p&gt;The film is based on  &lt;a href=&quot;https://www.nytimes.com/2020/07/31/opinion/sunday/India-migration-coronavirus.html&quot;&gt;Basharat Peer’s article ‘Taking Amrit Home’&lt;/a&gt; (which has since been retitled ‘A Friendship, a Pandemic and a Death Beside the Highway’).&lt;/p&gt;
&lt;p&gt;I highly recommend this film. But if you can’t watch it for whatever reason you must read the article.&lt;/p&gt;</description><pubDate>Sun, 30 Nov 2025 17:05:00 GMT</pubDate><category>film</category><category>india</category></item><item><link>https://arpit.blog/notes/2025/11/mindful-design-course/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/11/mindful-design-course/</guid><description>&lt;p&gt;I’m a web designer-developer who has mostly designed &lt;em&gt;and&lt;/em&gt; built marketing websites for small to medium-sized businesses. I started designing because my clients didn’t have a designer and expected me to handle everything. But I’ve always felt like an imposter. It’s not a nice feeling.&lt;/p&gt;
&lt;p&gt;I’m really determined to change that, which is why I just bought &lt;a href=&quot;https://piccalil.li/mindful-design&quot;&gt;Scott Riley’s course, Mindful Design&lt;/a&gt;. &lt;a href=&quot;https://piccalil.li/&quot;&gt;Piccalilli&lt;/a&gt; is running a Black Friday sale on all their courses, including Mindful Design, and I can wholeheartedly recommend them.&lt;/p&gt;</description><pubDate>Fri, 28 Nov 2025 04:44:00 GMT</pubDate><category>design</category><category>course</category><category>piccalilli</category></item><item><title>HTML and Typescript.</title><link>https://medium.com/@mandy.michael/understanding-why-semantic-html-is-important-as-told-by-typescript-bd71ad41e6c4</link><guid isPermaLink="true">https://medium.com/@mandy.michael/understanding-why-semantic-html-is-important-as-told-by-typescript-bd71ad41e6c4</guid><pubDate>Thu, 20 Nov 2025 05:52:00 GMT</pubDate><content:encoded>&lt;p&gt;Mandy Michael uses a brilliant analogy to explain why developers must get to know the HTML elements available to them and use the appropriate one for their content.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In TypeScript, we have the concept of an &lt;code&gt;any&lt;/code&gt; type. When you assign a type of &lt;code&gt;any&lt;/code&gt; it means the content can be anything. […] But if everything is typed as &lt;code&gt;any&lt;/code&gt; then you lose the benefits of the language.&lt;/p&gt;
&lt;p&gt;This is the same with HTML. If you use the &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; everywhere, you aren’t making the most of language. Because of this it’s important that you actively choose what the right element is and don’t just use the default &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This reminded me of the following quote by &lt;a href=&quot;https://www.linkedin.com/learning/html-essential-training-4/the-syntax-of-html-elements&quot;&gt;Jen Simmons from their HTML course&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;HTML syntax itself is fairly simple. The trickier part is knowing which tags to use when.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>html</category><category>typescript</category><category>semantics</category></item><item><title>Using responsive images in HTML - HTML | MDN</title><link>https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Responsive_images</link><guid isPermaLink="true">https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Responsive_images</guid><pubDate>Mon, 17 Nov 2025 09:04:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://css-tricks.com/images-are-hard/&quot;&gt;Images on the web are hard&lt;/a&gt;. After trying and failing so many times before, now I finally understand how to configure &lt;code&gt;srcset&lt;/code&gt; and &lt;code&gt;sizes&lt;/code&gt; attributes to serve differently sized images for different viewports.&lt;/p&gt;
&lt;p&gt;Also worth checking out: &lt;a href=&quot;https://12daysofweb.dev/2021/image-display-elements/&quot;&gt;Image Display Elements&lt;/a&gt; by Stephanie Eckles.&lt;/p&gt;</content:encoded><category>html</category><category>images</category><category>responsive-web-design</category><category>guide</category></item><item><title>The difference between @ts-ignore and @ts-expect-error | Stefan Judis Web Development</title><link>https://www.stefanjudis.com/today-i-learned/the-difference-ts-ignore-and-ts-expect-error/</link><guid isPermaLink="true">https://www.stefanjudis.com/today-i-learned/the-difference-ts-ignore-and-ts-expect-error/</guid><pubDate>Fri, 14 Nov 2025 12:48:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@ts-expect-error&lt;/code&gt; will let you know when there’s no TypeScript error to silence and when it has become useless. &lt;code&gt;@ts-ignore&lt;/code&gt; will stay put and sit silently wherever you placed it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not only did I not know the difference between &lt;code&gt;@ts-ignore&lt;/code&gt; and &lt;code&gt;@ts-expect-error&lt;/code&gt;, I was totally unaware there was such a directive as &lt;code&gt;@ts-expect-error&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>typescript</category><category>stefan-judis</category></item><item><title>Safari drops support for the theme-color meta tag</title><link>https://arpit.blog/articles/2025/11/safari-drops-support-theme-color/</link><guid isPermaLink="true">https://arpit.blog/articles/2025/11/safari-drops-support-theme-color/</guid><pubDate>Sun, 09 Nov 2025 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;code&gt;&amp;#x3C;meta name=&quot;theme-color&quot;&gt;&lt;/code&gt; tag is no longer supported in Safari 26 on macOS and iOS.&lt;/p&gt;
&lt;p&gt;If a fixed or sticky element touches the top or bottom edge of the window, then and only then, Safari extends that element’s background color into the corresponding top or bottom bar. Otherwise, on iOS, the bars remain translucent and have no solid color background.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=301756#c2&quot;&gt;Wenson Hseih explained on WebKit Bugzilla&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A solid background color extension (“top bar tint”) is only needed in cases where there’s a viewport-constrained (fixed or sticky) element near one of the edges of the viewport that borders an obscured content inset (such as the top toolbar on macOS, or compact tab bar on iOS), in order to avoid a gap above or below fixed elements in the page that would otherwise appear when scrolling. This color extension behaviour is more critical on iPhone, where there’s a much “softer” blur effect underneath the browser UI (and so more of the page underneath is otherwise directly visible).&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>theme-color</category><category>html</category><category>safari</category></item><item><title>Every site needs a Links Page / Why linking matters | Melon&apos;s Thoughts</title><link>https://thoughts.melonking.net/thoughts/every-site-needs-a-links-page-why-linking-matters</link><guid isPermaLink="true">https://thoughts.melonking.net/thoughts/every-site-needs-a-links-page-why-linking-matters</guid><pubDate>Fri, 07 Nov 2025 13:05:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The goal of linking is about building community and creating networks that truly exist to support you and those around you; those networks will persist when social media lets you down.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>links</category><category>community</category><category>web</category></item><item><title>A cartoonist&apos;s review of AI art - The Oatmeal</title><link>https://theoatmeal.com/comics/ai_art</link><guid isPermaLink="true">https://theoatmeal.com/comics/ai_art</guid><pubDate>Tue, 04 Nov 2025 16:34:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;When I consume AI art, it also evokes a feeling. Good, bad, neutral—whatever. Until I find out that it’s AI art. Then I feel deflated, grossed out, and maybe a little bit bored.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>ai</category><category>art</category><category>the-oatmeal</category></item><item><title>View transitions: Handling aspect ratio changes</title><link>https://jakearchibald.com/2024/view-transitions-handling-aspect-ratio-changes/</link><guid isPermaLink="true">https://jakearchibald.com/2024/view-transitions-handling-aspect-ratio-changes/</guid><pubDate>Thu, 30 Oct 2025 03:50:00 GMT</pubDate><content:encoded>&lt;p&gt;To be honest, I had a tough time understanding this article completely. But that is a me problem because I think I don’t have the right mental model for view transitions yet. Nevertheless, I’m sure this article will be super helpful someday in the future.&lt;/p&gt;</content:encoded><category>view-transitions</category><category>aspect-ratio</category><category>animations</category><category>css</category><category>jake-archibald</category></item><item><title>Enrique Peñalosa: Why buses represent democracy in action - YouTube</title><link>https://www.youtube.com/watch?v=j3YjeARuilI</link><guid isPermaLink="true">https://www.youtube.com/watch?v=j3YjeARuilI</guid><pubDate>Wed, 29 Oct 2025 11:16:00 GMT</pubDate><content:encoded>&lt;p&gt;Enrique Peñalosa on how to build cities that prioritise human beings over cars and guarantee a citizen’s right to safe mobility.&lt;/p&gt;
&lt;p&gt;In my opinion, the following bit at the start of the video certainly holds true for India:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The great inequality in developing countries makes it difficult to see, for example, that in terms of transport, an advanced city is not one where even the poor use cars, but rather one where even the rich use public transport or bicycles.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>mobility</category><category>public-transport</category><category>transport-infrastructure</category></item><item><title>How I used 11ty to power a world-class museum&apos;s digital infrastructure with Nic Chan | 11ty Meetup - YouTube</title><link>https://www.youtube.com/watch?v=RRqnRCXBpzY</link><guid isPermaLink="true">https://www.youtube.com/watch?v=RRqnRCXBpzY</guid><pubDate>Mon, 27 Oct 2025 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nic Chan on how they overcame the hurdle of getting the signs to refresh on a page in a signage browser with no JavaScript. The solution was using a &lt;code&gt;&amp;#x3C;meta&gt;&lt;/code&gt; tag that tells the browser to refresh the page after the given number of seconds.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; http-equiv&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;refresh&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; content&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;3600&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><category>meta</category><category>html</category><category>javascript</category><category>nic-chan</category></item><item><link>https://arpit.blog/notes/2025/10/root-pseudo-class-specificity/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/10/root-pseudo-class-specificity/</guid><description>&lt;p&gt;Today I learned, &lt;code&gt;:root&lt;/code&gt; (0-1-0) has a higher specificity than &lt;code&gt;html&lt;/code&gt; (0-0-1).&lt;/p&gt;
&lt;p&gt;In hindsight, it’s obvious. &lt;code&gt;:root&lt;/code&gt; is a CSS pseudo-class selector and, like most pseudo-class selectors, it has the same specificity as a class selector or an attribute selector.&lt;/p&gt;</description><pubDate>Thu, 23 Oct 2025 13:13:00 GMT</pubDate><category>pseudo-class</category><category>specificity</category><category>css</category></item><item><link>https://arpit.blog/notes/2025/10/padel-tennis-bowling/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/10/padel-tennis-bowling/</guid><description>&lt;p&gt;Hot take: Padel is to tennis what bowling with bumpers on is to bowling. Its design choices lead to fewer mistakes and a lower barrier to entry.&lt;/p&gt;</description><pubDate>Mon, 20 Oct 2025 23:09:00 GMT</pubDate><category>padel</category><category>tennis</category><category>bowling</category></item><item><title>The Simple Algorithm That Ants Use to Build Bridges | Quanta Magazine</title><link>https://www.quantamagazine.org/the-simple-algorithm-that-ants-use-to-build-bridges-20180226/</link><guid isPermaLink="true">https://www.quantamagazine.org/the-simple-algorithm-that-ants-use-to-build-bridges-20180226/</guid><pubDate>Thu, 16 Oct 2025 13:05:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;To see how this unfolds, take the perspective of an ant on the march. When it comes to a gap in its path, it slows down. The rest of the colony, still barreling along at 12 centimeters per second, comes trampling over its back. At this point, two simple rules kick in.&lt;/p&gt;
&lt;p&gt;The first tells the ant that when it feels other ants walking on its back, it should freeze. “As long as someone walks over you, you stay put,” Garnier said.&lt;/p&gt;
&lt;p&gt;This same process repeats in the other ants: They step over the first ant, but — uh-oh — the gap is still there, so the next ant in line slows, gets trampled and freezes in place. In this way, the ants build a bridge long enough to span whatever gap is in front of them. The trailing ants in the colony then walk over it.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>ants</category><category>algorithm</category><category>rules</category><category>emergence</category></item><item><title>Astro RSS MDX</title><link>https://blog.damato.design/posts/astro-rss-mdx/</link><guid isPermaLink="true">https://blog.damato.design/posts/astro-rss-mdx/</guid><pubDate>Wed, 15 Oct 2025 04:18:00 GMT</pubDate><content:encoded>&lt;p&gt;I love Astro. But for the life of me, I couldn’t figure out how to render the entire post content in my RSS feeds correctly. This article by &lt;a href=&quot;https://donnie.damato.design/&quot;&gt;Donnie D’Amato&lt;/a&gt; has been a lifesaver in this regard.&lt;/p&gt;</content:encoded><category>astro</category><category>rss</category><category>mdx</category><category>resource</category></item><item><title>An alt Decision Tree | Web Accessibility Initiative (WAI) | W3C</title><link>https://www.w3.org/WAI/tutorials/images/decision-tree/</link><guid isPermaLink="true">https://www.w3.org/WAI/tutorials/images/decision-tree/</guid><pubDate>Mon, 13 Oct 2025 14:27:00 GMT</pubDate><content:encoded>&lt;p&gt;A great resource to understand how to use the &lt;code&gt;alt&lt;/code&gt; attribute in various situations.&lt;/p&gt;</content:encoded><category>alt</category><category>img</category><category>html</category><category>resource</category><category>guide</category></item><item><link>https://arpit.blog/notes/2025/10/img-alt-attribute/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/10/img-alt-attribute/</guid><description>&lt;p&gt;I keep forgetting, but the &lt;code&gt;alt&lt;/code&gt; attribute of the &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt; element is not just useful for users who are visually impaired. It is also useful when the image is not displayed in the browser for whatever reason. For example: the &lt;code&gt;src&lt;/code&gt; attribute does not contain a valid path to an image.&lt;/p&gt;</description><pubDate>Mon, 13 Oct 2025 05:02:00 GMT</pubDate><category>alt</category><category>img</category><category>accessibility</category><category>html</category></item><item><link>https://arpit.blog/notes/2025/10/john-mayer-on-being-yourself/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/10/john-mayer-on-being-yourself/</guid><description>&lt;p&gt;&lt;a href=&quot;https://youtube.com/watch?v=_GQbDRGm__o&amp;#x26;t=2768&quot;&gt;John Mayer on how trying and not doing it well enough is a wonderful technique for being yourself&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Failing to sound exactly like the person you want to sound like is a wonderful way to sound like yourself. So I’m not necessarily thinking this thing from scratch, going, &lt;i&gt;Okay, I’m gonna, like, do Jerry-esque things, but I’m still gonna sound like me.&lt;/i&gt; No, it’s more like, &lt;i&gt;I want to sound just like Jerry,&lt;/i&gt; and then the way I naturally, obviously don’t — that’s your personality. Music doesn’t let you lie. […] You try to sound like who you want to sound like, and you just will always end up sounding like you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like this advice. It is an interesting take on the learning by copying method.&lt;/p&gt;</description><pubDate>Sun, 12 Oct 2025 12:55:00 GMT</pubDate><category>learning</category><category>john-mayer</category></item><item><title>While you’re fixing the fun stuff, fix the important stuff too - Piccalilli</title><link>https://piccalil.li/blog/while-youre-fixing-the-fun-stuff-fix-the-important-stuff-too/</link><guid isPermaLink="true">https://piccalil.li/blog/while-youre-fixing-the-fun-stuff-fix-the-important-stuff-too/</guid><pubDate>Wed, 01 Oct 2025 12:57:00 GMT</pubDate><content:encoded>&lt;p&gt;Initially, I thought this was just an article on how to fix the janky hover state of a card component. But it also goes over the HTML markup for a typical card component in the context of semantics and accessibility.&lt;/p&gt;</content:encoded><category>accessibility</category><category>hover</category><category>card</category><category>piccalilli</category></item><item><title>Adactio: Journal—Mind set</title><link>https://adactio.com/journal/9688</link><guid isPermaLink="true">https://adactio.com/journal/9688</guid><pubDate>Wed, 01 Oct 2025 09:21:00 GMT</pubDate><content:encoded>&lt;p&gt;Ah! Good old Jeremy Keith, insightful and funny.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If I really want to change someone’s mind, then I need to make the effort to first understand their mind. That’s going to be far more productive than declaring that my own mind is made up. After all, if &lt;em&gt;I&lt;/em&gt; show no willingness to consider alternative viewpoints, why should they?&lt;/p&gt;
&lt;p&gt;There’s an old saying that before criticising someone, you should walk a mile in their shoes. I’m going to try to put that into practice, and not for the two obvious reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If we still disagree, now we’re a mile away from each other, and&lt;/li&gt;
&lt;li&gt;I’ve got their shoes.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;</content:encoded><category>mindset</category><category>discussion</category><category>debate</category><category>jeremy-keith</category></item><item><link>https://arpit.blog/notes/2025/10/whimsical-animations/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/10/whimsical-animations/</guid><description>&lt;p&gt;I just purchased &lt;a href=&quot;https://whimsy.joshwcomeau.com/&quot;&gt;Josh Comeau’s new course, Whimsical Animations&lt;/a&gt;. The course page itself has some delightful animations.&lt;/p&gt;
&lt;p&gt;PS: I also discovered &lt;a href=&quot;https://fonts.google.com/specimen/Gochi+Hand&quot;&gt;Gochi Hand, a cute handwritten font&lt;/a&gt;, on the course page.&lt;/p&gt;</description><pubDate>Wed, 01 Oct 2025 05:18:00 GMT</pubDate><category>animations</category><category>course</category><category>fonts</category></item><item><title>Jimmy Kimmel &amp; the FCC: Last Week Tonight with John Oliver (HBO) - YouTube</title><link>https://youtube.com/watch?v=ohPToBog_-g&amp;t=1577</link><guid isPermaLink="true">https://youtube.com/watch?v=ohPToBog_-g&amp;t=1577</guid><pubDate>Mon, 22 Sep 2025 12:55:00 GMT</pubDate><content:encoded>&lt;p&gt;John Oliver on drawing the line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Giving the bully your lunch money doesn’t make him go away. It just makes him come back hungrier each time.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>freedom-of-speech</category><category>censorship</category><category>john-oliver</category></item><item><title>Browsing the web - Learn web development | MDN</title><link>https://developer.mozilla.org/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web#how_the_web_works_the_basics</link><guid isPermaLink="true">https://developer.mozilla.org/en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web#how_the_web_works_the_basics</guid><pubDate>Mon, 22 Sep 2025 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I really like this explanation of what happens in between the user entering a web address into the browser and the browser displaying the result.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The web browser requests the resource you want to access from the web server it is stored on.&lt;/li&gt;
&lt;li&gt;If the request is successful, the web server sends a response back to the web browser containing the requested resource.&lt;/li&gt;
&lt;li&gt;In some cases, the requested resource will then fire off more requests, which will result in more responses.&lt;/li&gt;
&lt;li&gt;When all of the resources have been requested, the web browser parses and renders them as required, before displaying the result to the user.&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>web</category></item><item><link>https://arpit.blog/notes/2025/09/web-page/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/09/web-page/</guid><description>&lt;p&gt;Just like a word document can be displayed in a word processing application, a web page is simply an HTML document that can be displayed in a web browser. The only difference is that a web page can embed a variety of different types of resources such as styles, fonts, images, scripts, and so on.&lt;/p&gt;</description><pubDate>Mon, 22 Sep 2025 05:48:00 GMT</pubDate><category>web</category></item><item><link>https://arpit.blog/notes/2025/09/relative-color-syntax-alpha/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/09/relative-color-syntax-alpha/</guid><description>&lt;p&gt;&lt;a href=&quot;https://mastodon.social/@anatudor/115214693132139947&quot;&gt;Ana Tudor wrote on Mastodon&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Stupid #CSS question because I’m losing my mind here: why isn’t calc(.5*a) working? What am I missing? It doesn’t seem to be working in any browser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ana is trying to use &lt;code&gt;calc(.5 * a)&lt;/code&gt; as a part of the relative color syntax, presumably to create semi transparent outlines. But it is not working because &lt;code&gt;calc(.5 * a)&lt;/code&gt; is an invalid property value. As &lt;a href=&quot;https://fedi.valtlai.fi/@valtlai/115214702277627522&quot;&gt;Valtteri Laitinen replied&lt;/a&gt;, it should actually be &lt;code&gt;alpha&lt;/code&gt; in there instead of &lt;code&gt;a&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	outline-color&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; rgb&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;(from currentcolor r g b / &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;(0.5 &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; a))&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;/* ❌ invalid */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	outline-color&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; rgb&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;		from currentcolor r g b / &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;(0.5 &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; alpha)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	)&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;/* ✅ valid */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Wed, 17 Sep 2025 03:01:00 GMT</pubDate><category>color</category><category>css</category></item><item><link>https://arpit.blog/notes/2025/08/heydon-html-article-element/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/08/heydon-html-article-element/</guid><description>&lt;p&gt;I re-read &lt;a href=&quot;https://heydonworks.com/article/the-article-element/&quot;&gt;Heydon Pickering’s post on the HTML article element&lt;/a&gt; in the middle of writing the markup for a new website.&lt;/p&gt;
&lt;p&gt;Heydon’s writing is so sharp and funny. Unmistakably theirs. No one else writes quite like them, and I’m here for it.&lt;/p&gt;</description><pubDate>Thu, 14 Aug 2025 02:42:00 GMT</pubDate><category>heydon-pickering</category><category>article-element</category><category>html</category></item><item><link>https://arpit.blog/notes/2025/08/custom-prop-meta-theme-color/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/08/custom-prop-meta-theme-color/</guid><description>&lt;p&gt;I was reading &lt;a href=&quot;https://css-tricks.com/meta-theme-color-and-trickery/#aa-custom-properties&quot;&gt;Manuel Matuzovic’s article on meta theme
color&lt;/a&gt;
and came across this snippet:&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;	:root&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;		--theme&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; blue&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;theme-color&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; content&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;var(--theme)&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I wish it was possible to access custom properties outside the &lt;code&gt;&amp;#x3C;style&gt;&lt;/code&gt; tag in the &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;. It would keep things &lt;i&gt;DRY&lt;/i&gt;.&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 05:03:00 GMT</pubDate><category>theme-color</category><category>html</category><category>css</category></item><item><title>Natural sorting of strings that contain numbers in JavaScript</title><link>https://arpit.blog/articles/2025/04/sorting-strings-that-contain-numbers-in-javascript/</link><guid isPermaLink="true">https://arpit.blog/articles/2025/04/sorting-strings-that-contain-numbers-in-javascript/</guid><pubDate>Fri, 18 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In JavaScript, things get interesting when you need to sort strings that contain numbers in a way that matches human expectations.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; files&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;#39;IMG_2.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_1.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_10.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_20.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.sort&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;// Output: [&amp;#39;IMG_1.png&amp;#39;, &amp;#39;IMG_10.png&amp;#39;, &amp;#39;IMG_2.png&amp;#39;, &amp;#39;IMG_20.png&amp;#39;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This happens because, by default, when no compare function is provided, JavaScript’s array &lt;code&gt;sort()&lt;/code&gt; method converts the elements into strings, then compares their sequences of UTF-16 code unit values.&lt;/p&gt;
&lt;p&gt;This behaviour is well documented on &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort&quot;&gt;MDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, how do we sort arrays like the ones above in a more accurate, human-friendly order?&lt;/p&gt;
&lt;p&gt;This is where the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare&quot;&gt;&lt;code&gt;compare()&lt;/code&gt; method of the &lt;code&gt;Intl.Collator&lt;/code&gt; API&lt;/a&gt; with the &lt;code&gt;numeric: true&lt;/code&gt; option shines. It provides the natural sorting behaviour that correctly handles numbers alongside other characters.&lt;/p&gt;
&lt;p&gt;When &lt;code&gt;numeric: true&lt;/code&gt; is set, the collator detects numeric substrings inside the strings and parses those substrings as actual numbers, not as sequences of digits. And then it compares the numbers numerically, not character by character.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; naturalOrder&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; Intl&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.Collator&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;undefined&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	numeric&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}).compare;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; files&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;#39;IMG_2.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_1.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_10.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt; &amp;#39;IMG_20.png&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.sort&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;((a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; b) &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; naturalOrder&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;(a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-punctuation)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; b));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;// Output: [&amp;#39;IMG_1.png&amp;#39;, &amp;#39;IMG_2.png&amp;#39;, &amp;#39;IMG_10.png&amp;#39;, &amp;#39;IMG_20.png&amp;#39;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hat tip to &lt;a href=&quot;https://jan.miksovsky.com/posts/2025/04-17-zero-dependencies&quot;&gt;Jan Miksovsky&lt;/a&gt;, whose &lt;a href=&quot;https://github.com/WebOrigami/pondlife-zero-deps&quot;&gt;zero dependencies SSG project&lt;/a&gt; led me to discover this.&lt;/p&gt;</content:encoded><category>sort</category><category>internationalization</category><category>javascript</category></item><item><title>Missed Connections - Jim Nielsen’s Blog</title><link>https://blog.jim-nielsen.com/2025/missed-connections/</link><guid isPermaLink="true">https://blog.jim-nielsen.com/2025/missed-connections/</guid><pubDate>Tue, 18 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Jim Nielsen on the personal connections formed on the internet.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You could search the world and find someone who saw what you see, felt what you feel, went through what you’re going through.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And how these connections are increasingly being lost when we prompt an impersonal LLM instead.&lt;/p&gt;</content:encoded><category>connections</category><category>ai</category><category>llm</category><category>jim-nielsen</category></item><item><link>https://arpit.blog/notes/2025/02/grid-auto-rows-grid-auto-columns/</link><guid isPermaLink="true">https://arpit.blog/notes/2025/02/grid-auto-rows-grid-auto-columns/</guid><description>&lt;p&gt;Today I learned, &lt;code&gt;grid-auto-columns&lt;/code&gt; and &lt;code&gt;grid-auto-rows&lt;/code&gt; size implicit tracks as well as any explicit tracks that are not explicitly sized by by &lt;code&gt;grid-template-rows&lt;/code&gt; or &lt;code&gt;grid-template-columns&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Until now, I was under the impression that &lt;code&gt;grid-auto-rows&lt;/code&gt; and &lt;code&gt;grid-auto-columns&lt;/code&gt; size only implicit grid tracks.&lt;/p&gt;</description><pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate><category>grid</category><category>css</category></item><item><title>Why is `grid-row: 1/-1` not working?</title><link>https://arpit.blog/articles/2025/02/why-is-grid-row-1--1-not-working/</link><guid isPermaLink="true">https://arpit.blog/articles/2025/02/why-is-grid-row-1--1-not-working/</guid><pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;code&gt;grid-row&lt;/code&gt; grid-placement property is shorthand for &lt;code&gt;grid-row-start&lt;/code&gt; and &lt;code&gt;grid-row-end&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.grid-item&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	grid-row&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; 1/-1&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;	/* is equivalent to */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	grid-row-start&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	grid-row-end&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; -1&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the above declaration, we use integers to position and size the grid item by line numbers.&lt;/p&gt;
&lt;p&gt;As per the &lt;a href=&quot;https://www.w3.org/TR/css-grid-1/#:~:text=Numeric,-indexes%20in%20the&quot;&gt;spec&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Numeric indexes in the grid-placement properties count from the edges of the explicit grid. Positive indexes count from the start side (starting from 1 for the start-most explicit line), while negative indexes count from the end side (starting from -1 for the end-most explicit line).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The important bit is the explicit grid. This begs the question …&lt;/p&gt;
&lt;h2 id=&quot;what-is-the-explicit-grid&quot;&gt;What is the explicit grid?&lt;/h2&gt;
&lt;p&gt;As per the &lt;a href=&quot;https://www.w3.org/TR/css-grid-1/#explicit-grids&quot;&gt;spec&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The three properties &lt;code&gt;grid-template-rows&lt;/code&gt;, &lt;code&gt;grid-template-columns&lt;/code&gt;, and &lt;code&gt;grid-template-areas&lt;/code&gt; together define the explicit grid of a grid container by specifying its explicit grid tracks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Simply put, the explicit grid consists of manually defined rows and columns.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The size of the explicit grid is determined by the larger of the number of rows/columns defined by &lt;code&gt;grid-template-areas&lt;/code&gt; and the number of rows/columns sized by &lt;code&gt;grid-template-rows&lt;/code&gt;/&lt;code&gt;grid-template-columns&lt;/code&gt;. Any rows/columns defined by &lt;code&gt;grid-template-areas&lt;/code&gt; but not sized by &lt;code&gt;grid-template-rows&lt;/code&gt;/&lt;code&gt;grid-template-columns&lt;/code&gt; take their size from the &lt;code&gt;grid-auto-rows&lt;/code&gt;/&lt;code&gt;grid-auto-columns&lt;/code&gt; properties. If these properties don’t define any explicit tracks the explicit grid still contains one grid line in each axis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That last bit is what leads to line -1 being the same line as 1 because the explicit grid still contains one grid line in each axis.&lt;/p&gt;
&lt;h2 id=&quot;what-is-the-implicit-grid&quot;&gt;What is the implicit grid?&lt;/h2&gt;
&lt;p&gt;As &lt;a href=&quot;https://css-tricks.com/difference-explicit-implicit-grids/#aa-implicit-grids&quot;&gt;Manuel Matuzovic&lt;/a&gt; puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If there are more grid items than cells in the grid or when a grid item is placed outside of the explicit grid, the grid container automatically generates grid tracks by adding grid lines to the grid. The explicit grid together with these additional implicit tracks and lines forms the so called implicit grid.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Paraphrasing &lt;a href=&quot;https://x.com/jensimmons/status/1239587367046037504&quot;&gt;Jen Simmons&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-1 is the last line of the &lt;em&gt;explicit&lt;/em&gt; grid&lt;/li&gt;
&lt;li&gt;If you haven’t defined any explicit rows, then all your rows are implicit&lt;/li&gt;
&lt;li&gt;For implicit rows, -1 is the same line as 1&lt;/li&gt;
&lt;li&gt;Define explicit rows and &lt;code&gt;grid-row: 1/-1&lt;/code&gt; will work as expected&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/63775143/how-does-grid-row-1-1-actually-work-references-needed&quot;&gt;How does grid-row: 1 / -1 actually work?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/73559099/what-defines-an-explicit-grid&quot;&gt;What defines an explicit grid?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>grid</category><category>grid-placement</category><category>css</category></item><item><title>Why Swiss Trains are the Best in Europe - YouTube</title><link>https://www.youtube.com/watch?v=muPcHs-E4qc</link><guid isPermaLink="true">https://www.youtube.com/watch?v=muPcHs-E4qc</guid><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I love this bit from the video where Jason quotes Enrique Peñalosa, the former mayor of Bogotá, Colombia:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A developed country is not where the poor have cars. It’s where the rich use public transportation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But why is it important that wealthy people take public transportation? Because, as Jason mentions,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] for better or for worse, these people are likely to have the power and political influence to demand efficient service.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>trains</category><category>switzerland</category><category>mobility</category><category>public-transport</category><category>not-just-bikes</category></item><item><title>An idea to power your personal brand’s content game | beastoftraal.com</title><link>https://beastoftraal.com/2023/10/19/an-idea-to-power-your-personal-brands-content-game/</link><guid isPermaLink="true">https://beastoftraal.com/2023/10/19/an-idea-to-power-your-personal-brands-content-game/</guid><pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Karthik Srinivasan discusses how to use curation to build a personal brand and shares some steps to get started.&lt;/p&gt;</content:encoded><category>personal-branding</category><category>curation</category><category>karthik-srinivasan</category></item><item><title>An underrated tip for personal branding | beastoftraal.com</title><link>https://beastoftraal.com/2023/10/05/an-underrated-tip-for-personal-branding/</link><guid isPermaLink="true">https://beastoftraal.com/2023/10/05/an-underrated-tip-for-personal-branding/</guid><pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Karthik Srinivasan uses his experience with running as an analogy to emphasize the importance of consistently showing up in the context of personal branding.&lt;/p&gt;
&lt;p&gt;I found the analogy effective and relatable, as I had a similar experience when I started running.&lt;/p&gt;</content:encoded><category>personal-branding</category><category>persistence</category><category>karthik-srinivasan</category></item><item><title>Just Build Websites - Jim Nielsen’s Blog</title><link>https://blog.jim-nielsen.com/2024/just-build-websites/</link><guid isPermaLink="true">https://blog.jim-nielsen.com/2024/just-build-websites/</guid><pubDate>Tue, 20 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Jim Nielsen uses his experience with golf as a metaphor to explain that the key to success in web development comes from actual practice — building websites — rather than obsessing over what tools, frameworks and technologies others are using.&lt;/p&gt;</content:encoded><category>build</category><category>golf</category><category>jim-nielsen</category></item><item><title>Personal branding is like your credit score</title><link>https://beastoftraal.com/2024/07/03/personal-branding-is-like-your-credit-score/</link><guid isPermaLink="true">https://beastoftraal.com/2024/07/03/personal-branding-is-like-your-credit-score/</guid><pubDate>Tue, 20 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Personal branding is about bringing focus to your touchpoints with the world (of strangers) so that the right kinds of people can find you and remember you. You make use of the attention when you really need it. But it is good to be in the consideration set.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>personal-branding</category><category>karthik-srinivasan</category></item><item><title>Redesigning Piccalilli: the first part of the design process</title><link>https://piccalil.li/blog/redesigning-piccalilli-the-first-part-of-the-design-process/</link><guid isPermaLink="true">https://piccalil.li/blog/redesigning-piccalilli-the-first-part-of-the-design-process/</guid><pubDate>Mon, 29 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a freelancer, I’m always eager to learn how other folks work. &lt;a href=&quot;https://piccalil.li/&quot;&gt;Piccalilli’s&lt;/a&gt; behind-the-scenes look at their redesign is extremely useful.&lt;/p&gt;</content:encoded><category>priority-guides</category><category>design</category></item><item><title>Crowdstruck (Windows Outage) - Computerphile - YouTube</title><link>https://www.youtube.com/watch?v=rlaNMJeA1EA</link><guid isPermaLink="true">https://www.youtube.com/watch?v=rlaNMJeA1EA</guid><pubDate>Wed, 24 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dr. Steve Bagley explains in layman’s terms what an operating system is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] Imagine the difference between a house and a hotel. If you own a house, you can decide how to use the rooms, what color to paint the walls. But if that house becomes a hotel, you might give people the option to change the air conditioning temperature, but you wouldn’t let them fit air conditioning into their room without permission from the building owner. And it’s a bit the same with a computer. The operating system is a bit like the people who run the hotel in that it’s controlling all the resources for the system. So if Microsoft Word crashes, these days it’s not going to take down your computer because the operating system is set up in such a way that it can access resources that have been assigned to it and clean that up, and everything else continues hunky-dory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And what happens if the operating system crashes and you get the &lt;a href=&quot;https://en.wikipedia.org/wiki/Blue_screen_of_death&quot;&gt;blue screen of death&lt;/a&gt; (BSoD):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At that point, the thing that’s in charge of controlling everything has gone wrong, is corrupted, and can no longer run. So there’s pretty much no option at that point other than to halt the machine, say something’s gone wrong, and let the user reboot and restart.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>operating-system</category><category>computerphile</category></item><item><link>https://arpit.blog/notes/2024/07/css-grid-areas/</link><guid isPermaLink="true">https://arpit.blog/notes/2024/07/css-grid-areas/</guid><description>&lt;p&gt;I got the opportunity to proofread &lt;a href=&quot;https://ishadeed.com/article/css-grid-area/&quot;&gt;Ahmad Shadeed’s latest article on CSS Grid Areas&lt;/a&gt; before its release. It inspired me to refactor the code on my site to use &lt;code&gt;grid-template-areas&lt;/code&gt;.&lt;/p&gt;</description><pubDate>Mon, 22 Jul 2024 00:00:00 GMT</pubDate><category>grid</category><category>css</category><category>ahmad-shadeed</category></item><item><title>Testing HTML With Modern CSS</title><link>https://heydonworks.com/article/testing-html-with-modern-css/</link><guid isPermaLink="true">https://heydonworks.com/article/testing-html-with-modern-css/</guid><pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Wow! Who knew you could use modern CSS to test HTML? Well, Heydon certainly did!&lt;/p&gt;</content:encoded><category>testing</category><category>html</category><category>css</category><category>heydon-pickering</category></item><item><title>Styling Tables the Modern CSS Way - Piccalilli</title><link>https://piccalil.li/blog/styling-tables-the-modern-css-way</link><guid isPermaLink="true">https://piccalil.li/blog/styling-tables-the-modern-css-way</guid><pubDate>Fri, 19 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article by &lt;a href=&quot;https://michellebarker.co.uk/&quot;&gt;Michelle Barker&lt;/a&gt; for Piccalilli is a great read. I learned about a bunch of new CSS properties that I didn’t know existed.&lt;/p&gt;</content:encoded><category>table</category><category>css</category><category>piccalilli</category></item><item><title>Blinded By the Light DOM  –  Eric’s Archived Thoughts</title><link>https://meyerweb.com/eric/thoughts/2023/11/01/blinded-by-the-light-dom/</link><guid isPermaLink="true">https://meyerweb.com/eric/thoughts/2023/11/01/blinded-by-the-light-dom/</guid><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Eric Meyer describes his journey of learning about and implementing fully-Light-DOM web components.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You just take some normal HTML markup, wrap it with a custom element, and then write some JS to add capabilities which you can then style with regular CSS! Everything’s of the Light Side of the Web. No need to pierce the Vale of Shadows or whatever.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>web-components</category><category>custom-elements</category><category>eric-meyer</category></item><item><title>Adactio: Journal—HTML web components</title><link>https://adactio.com/journal/20618</link><guid isPermaLink="true">https://adactio.com/journal/20618</guid><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Jeremy Keith discusses what makes a custom element an HTML web component.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If your custom element is empty, it’s not an HTML web component. But if you’re using a custom element to extend existing markup, that’s an HTML web component.&lt;/p&gt;
&lt;p&gt;React encouraged a mindset of replacement: “forgot &lt;em&gt;[sic]&lt;/em&gt; what browsers can do; do everything in a React component instead, even if you’re reinventing the wheel.”&lt;/p&gt;
&lt;p&gt;HTML web components encourage a mindset of augmentation instead.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>web-components</category><category>custom-elements</category><category>progressive-enhancement</category><category>jeremy-keith</category></item><item><title>What questions to ask in an interview with a PM | Hindustan Times</title><link>https://www.hindustantimes.com/opinion/what-questions-to-ask-in-an-interview-with-a-pm-101716649766792.html</link><guid isPermaLink="true">https://www.hindustantimes.com/opinion/what-questions-to-ask-in-an-interview-with-a-pm-101716649766792.html</guid><pubDate>Sun, 26 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this piece, Karan Thapar emphasizes that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interviewers must remember they are asking questions on behalf of the public.&lt;/li&gt;
&lt;li&gt;Questions must be relevant, significant, and timely to demand accountability.&lt;/li&gt;
&lt;li&gt;The interviewer must persistently push for answers instead of allowing monologues or tangents.&lt;/li&gt;
&lt;li&gt;The interview should not serve as a platform to attack critics, but rather an occasion to make the PM respond to valid criticisms.&lt;/li&gt;
&lt;li&gt;The interviewer and PM must interact as equals, with the former feeling empowered to challenge evasions or dubious claims.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>interview</category><category>journalism</category><category>guidelines</category><category>press-conference</category><category>karan-thapar</category><category>india</category></item><item><title>You Want border-color: transparent, Not border: none – Frontend Masters Blog</title><link>https://frontendmasters.com/blog/you-want-border-color-transparent-not-border-none/</link><guid isPermaLink="true">https://frontendmasters.com/blog/you-want-border-color-transparent-not-border-none/</guid><pubDate>Tue, 21 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this article, Dave Rupert explains how testing in forced colors mode improves accessibility for users and reveals design flaws, such as excessive reliance on color cues.&lt;/p&gt;</content:encoded><category>forced-colors</category><category>testing</category><category>high-contrast-mode</category><category>low-vision</category><category>accessibility</category><category>design</category><category>dave-rupert</category></item><item><title>Digging Into The Display Property: The Two Values Of Display — Smashing Magazine</title><link>https://www.smashingmagazine.com/2019/04/display-two-value/</link><guid isPermaLink="true">https://www.smashingmagazine.com/2019/04/display-two-value/</guid><pubDate>Mon, 13 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;In &lt;a href=&quot;https://www.w3.org/TR/css-display-3&quot;&gt;Level 3 of the Display specification&lt;/a&gt;, the value of &lt;code&gt;display&lt;/code&gt; is defined as two keywords. These keywords define the outer value of display, which will be &lt;code&gt;inline&lt;/code&gt; or &lt;code&gt;block&lt;/code&gt; and therefore define how the element behaves in the layout alongside other elements. They also define the inner value of the element — or how the direct children of that element behave.&lt;/p&gt;
&lt;p&gt;This means that when you say &lt;code&gt;display: grid&lt;/code&gt;, what you are really saying is &lt;code&gt;display: block grid&lt;/code&gt;. You are asking for a block level grid container. An element that will have all of the block attributes — you can give it height and width, margin and padding, and it will stretch to fill the container. The children of that container, however, have been given the inner value of &lt;code&gt;grid&lt;/code&gt; so they become grid items. How those grid items behave is defined in the CSS Grid Specification: the &lt;code&gt;display&lt;/code&gt; spec gives us a way to tell the browser that this is the layout method we want to use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As simply put by Rachel:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you define layout on a box in CSS, you are defining what happens to this box in terms of how it behaves in relation to all of the other boxes in the layout. You are also defining how the children of that box behave.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>display</category><category>layout</category><category>css</category><category>rachel-andrew</category><category>smashing-magazine</category></item><item><title>Transparent borders</title><link>https://arpit.blog/articles/2024/05/transparent-borders/</link><guid isPermaLink="true">https://arpit.blog/articles/2024/05/transparent-borders/</guid><pubDate>Sun, 12 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In web development, small design decisions can have a significant impact on accessibility and user experience. One such decision is how we handle borders on interactive elements.&lt;/p&gt;
&lt;h2 id=&quot;the-problem-with-border-none&quot;&gt;The problem with border: none&lt;/h2&gt;
&lt;p&gt;When styling interactive elements like buttons, it’s common practice to remove default borders using &lt;code&gt;border: none&lt;/code&gt;. However, this approach can lead to accessibility issues, especially in &lt;a href=&quot;https://arpit.blog/blog/testing-in-forced-colors-mode/&quot;&gt;high contrast mode&lt;/a&gt;. As demonstrated in the image below, removing the border entirely can cause buttons to appear as floating text on the page, making it difficult for users with low vision to distinguish interactive elements.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://arpit.blog/_astro/slae-before-after-high-contrast-mode.DZV7xYGL_Z2b3SWO.webp&quot; alt=&quot;Side-by-side comparison of the contact form on Slae.app. The left image shows the contact form with forced colors disabled, displaying the default color scheme. The right image shows the contact form with forced colors enabled. In the right image, the submit button appears as floating text on the page.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;960&quot; height=&quot;596&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://frontendmasters.com/blog/you-want-border-color-transparent-not-border-none/&quot;&gt;Dave Rupert&lt;/a&gt; explains the importance of the default border and why it exists:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the case of interactive form controls (inputs, textareas, buttons, etc.), those pesky borders were put there because they have an accessibility benefit when using High Contrast Mode, a feature &lt;a href=&quot;https://webaim.org/projects/lowvisionsurvey2/#at&quot;&gt;used by 30.6% of low-vision users&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-transparent-border-solution&quot;&gt;The transparent border solution&lt;/h2&gt;
&lt;p&gt;To address this issue, Dave recommends making the border or outline transparent instead of removing it entirely. This can be achieved with the following CSS:&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	border-color&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; transparent&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As demonstrated in the image below, this approach is effective for several reasons. First, sighted users will not notice the difference. Second, as &lt;a href=&quot;https://polypane.app/blog/forced-colors-explained-a-practical-guide/&quot;&gt;Kilian Valkhof&lt;/a&gt; explains, in forced color mode, the border color or outline color “will be overwritten with the current text color, making it nicely visible again without needing any special adaption or re-styling for forced color mode.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://arpit.blog/_astro/slae-before-after-transparent-border.sJpjMR8c_Z1FuV5Y.webp&quot; alt=&quot;Side-by-side comparison of the contact form on Slae.app with the transparent border solution applied. The left image shows the contact form with forced colors disabled, displaying the default color scheme. The right image shows the contact form with forced colors enabled. In the right image, the submit button appears as a button.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;959&quot; height=&quot;596&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;user-experience-benefits&quot;&gt;User experience benefits&lt;/h2&gt;
&lt;p&gt;Using transparent borders offers additional benefits for user experience. Consider hover effects, for example.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	border&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; none&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;:hover&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	border&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; solid navy&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In such situations, applying a visible border on hover can inadvertently change the element’s dimensions. This change in size can result in a jarring visual effect.&lt;/p&gt;
&lt;p&gt;By setting a transparent border in the default state, we ensure smooth transitions and consistent element sizes across different states.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;quot;no-border-btn&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;Button with no border&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&amp;quot;transparent-border-btn&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;Button with transparent border&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground);overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.no-border-btn&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	border&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; none&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;hover {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;		border: 2&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; solid navy&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt;.transparent-border-btn&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	border&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; solid transparent&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;hover {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;		border-color: navy&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;implications-for-design-systems&quot;&gt;Implications for design systems&lt;/h2&gt;
&lt;p&gt;Transparent borders are also valuable in the context of themeable design systems. &lt;a href=&quot;https://bradfrost.com/blog/post/transparent-borders/&quot;&gt;Brad Frost&lt;/a&gt; elaborates:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When supporting multiple theme, it can be common for some themes to use borders while others don’t. This flexibility is great! Each brand is able to express themselves how they see fit. But if implemented using different border widths, shifts in the box model happen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;By using &lt;code&gt;border-color: transparent&lt;/code&gt; for themes without visible borders, designers and developers can maintain consistent element sizes across different variants and themes. This approach provides the flexibility to adapt the visual design while preserving the underlying structure and layout of the components.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Implementing transparent borders in your CSS addresses crucial accessibility concerns, enhances user experience across different display modes, and provides the flexibility needed for robust, adaptable design systems.&lt;/p&gt;</content:encoded><category>accessibility</category><category>high-contrast-mode</category><category>design-systems</category><category>css</category><category>dave-rupert</category><category>brad-frost</category><category>code-pen-demo</category></item><item><title>Embrace the Platform – Bram.us</title><link>https://www.bram.us/2023/12/12/embrace-the-platform-article/</link><guid isPermaLink="true">https://www.bram.us/2023/12/12/embrace-the-platform-article/</guid><pubDate>Thu, 09 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;If there’s one thing you can do to make your websites better, it is to embrace what the web platform gives you: HTML, CSS, and JavaScript — in that order. Apply the Rule of Least Power. Build with progressive enhancement in mind. You’ll be a happier developer. Your visitors will be happier, too, as things work as expected.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>web-platform</category><category>bramus</category></item><item><title>The Case For Design Engineers, Pt. II - Jim Nielsen’s Blog</title><link>https://blog.jim-nielsen.com/2024/the-case-for-design-engineers-pt-ii/</link><guid isPermaLink="true">https://blog.jim-nielsen.com/2024/the-case-for-design-engineers-pt-ii/</guid><pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Jim Nielsen makes the case for design engineers as professionals who do design work with code. He also emphasizes the limitations of traditional design tools, which often produce static images that don’t fully capture the dynamic nature of web interactions, and advocates for designing in the browser instead.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You need someone who can do design work with code.&lt;/p&gt;
&lt;p&gt;That’s right: design work with code.&lt;/p&gt;
&lt;p&gt;Pixels of an interface from a GUI tool are a static representations of a dynamic form. It’s the difference between a picture of me and the living, breathing, moving me.&lt;/p&gt;
&lt;p&gt;Design engineers don’t just push pixels around in a GUI tool, they do it in a web browser — the medium of delivery — designing not just the visuals but the interactions that make sense for a living, breathing, moving interface.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>design</category><category>designing-in-the-browser</category><category>design-engineers</category><category>jim-nielsen</category></item><item><title>Why I am an atheist: Bhagat Singh&apos;s essay</title><link>https://www.marxists.org/archive/bhagat-singh/1930/10/05.htm</link><guid isPermaLink="true">https://www.marxists.org/archive/bhagat-singh/1930/10/05.htm</guid><pubDate>Sat, 20 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is one essay I re-read every year. In it, amongst other things, Bhagat Singh challenges blind faith and advocates for reason and critical thinking.&lt;/p&gt;
&lt;p&gt;Bhagat Singh on the importance of critical thinking and the dangers of blind faith:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Criticism and independent thinking are the two indispensable qualities of a revolutionary. Because Mahatamaji is great, therefore none should criticise him. Because he has risen above, therefore everything he says —may be in the field of Politics or Religion, Economics or Ethics— is right. Whether you are convinced or not you must say: “Yes, that’s true”. This mentality does not lead towards progress. It is rather too obviously reactionary.&lt;/p&gt;
&lt;p&gt;[…] Any man who stands for progress has to criticise, disbelieve and challenge every item of the old faith. Item by item he has to reason out every nook and corner of the prevailing faith. If after considerable reasoning one is led to believe in any theory or philosophy, his faith is welcomed. His reasoning can be mistaken, wrong, misled, and sometimes fallacious. But he is liable to correction because reason is the guiding star of his life. But mere faith and blind faith is dangerous: it dulls the brain and makes a man reactionary. A man who claims to be a realist has to challenge the whole of the ancient faith. If it does not stand the onslaught of reason it crumbles down.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bhagat Singh on the Hindu concept of sufferings as a divine punishment for sins committed in the previous life:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Poverty is a sin, it is a punishment. I ask you how far would you appreciate a criminologist, a jurist or a legislator who proposes such measures of punishment which shall inevitably force men to commit more offences. Had not your God thought of this, or he also had to learn these things by experience, but at the cost of untold sufferings to be borne by humanity?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bhagat Singh on divine inaction:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I ask why your omnipotent God does not stop every man when he is committing any sin or offence? He can do it quite easily. Why did he not kill warlords or kill the fury of war in them and thus avoid the catastrophe hurled down on the head of humanity by the Great War? Why does he not just produce a certain sentiment in the mind of the British people to liberate India? Why does he not infuse the altruistic enthusiasm in the hearts of all capitalists to forego their rights of personal possessions of means of production and thus redeem the whole labouring community —nay, the whole human society, from the bondage of capitalism? You want to reason out the practicability of socialist theory; I leave it for your almighty to enforce it. People recognise the merits of socialism in as much as the general welfare is concerned. They oppose it under the pretext of its being impracticable. Let the Almighty step in and arrange everything in an orderly fashion. Now don’t try to advance round about arguments, they are out of order. Let me tell you, British rule is here not because God wills it, but because they possess power and we do not dare to oppose them. Not that it is with the help of God that they are keeping us under their subjection, but it is with the help of guns and rifles, bomb and bullets, police and militia, and our apathy, that they are successfully committing the most deplorable sin against society —the outrageous exploitation of one nation by another. Where is God? What is he doing? Is he enjoying all these woes of human race? A Nero; a Changez!! Down with him!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bhagat Singh on the belief in God:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If no God existed, how did the people come to believe in him? My answer is clear and brief. As they came to believe in ghosts and evil spirits; the only difference is that belief in God is almost universal and the philosophy well developed. Unlike certain of the radicals I would not attribute its origin to the ingenuity of the exploiters who wanted to keep the people under their subjection by preaching the existence of a supreme being and then claiming an authority and sanction from him for their privileged positions, though I do not differ with them on the essential point that all faiths, religions, creeds and such other institutions became in turn the mere supporters of the tyrannical and exploiting institutions, men and classes. Rebellion against king is always a sin, according to every religion.&lt;/p&gt;
&lt;p&gt;As regards the origin of God, my own idea is that having realised the limitation of man, his weaknesses and shortcoming having been taken into consideration, God was brought into imaginary existence to encourage man to face boldly all the trying circumstances, to meet all dangers manfully and to check and restrain his outbursts in prosperity and affluence. God, both will his private laws and parental generosity, was imagined and painted in greater details. He was to serve as a deterrent factor when his fury and private laws were discussed, so that man may not become a danger to society. He was to serve as a father, mother, sister and brother, friend and helper, when his parental qualifications were to be explained. So that when man be in great distress, having been betrayed and deserted by all friends, he may find consolation in the idea that an ever-true friend, was still there to help him, to support him and that he was almighty and could do anything. Really that was useful to the society in the primitive age. The idea of God is helpful to man in distress.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;He wrote all this while in jail when he was just a 23 year old.&lt;/p&gt;</content:encoded><category>atheism</category><category>critical-thinking</category><category>blind-faith</category><category>bhagat-singh</category><category>india</category></item><item><link>https://arpit.blog/notes/2024/01/text-underline-offset/</link><guid isPermaLink="true">https://arpit.blog/notes/2024/01/text-underline-offset/</guid><description>&lt;p&gt;Thanks to &lt;a href=&quot;https://youtube.com/watch?v=x3MTfp3HDLc&amp;#x26;t=506&quot;&gt;Kevin Powell&lt;/a&gt;, today I learned that the &lt;code&gt;text-underline-offset&lt;/code&gt; property is named so because it &lt;em&gt;only&lt;/em&gt; applies to underlines and not other &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-line&quot;&gt;&lt;code&gt;text-decoration-line&lt;/code&gt;&lt;/a&gt; values like &lt;code&gt;overline&lt;/code&gt; and &lt;code&gt;line-through&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-function)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;Example&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code css-variables&quot; style=&quot;background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-string-expression)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	text-decoration-line&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; underline overline&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;/* We can set multiple line-decoration properties at once */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt;	text-underline-offset&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-constant)&quot;&gt; 16&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-keyword)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:var(--astro-code-token-comment)&quot;&gt;/* Only impacts underline */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--astro-code-foreground)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Fri, 19 Jan 2024 01:30:00 GMT</pubDate><category>underline</category><category>kevin-powell</category><category>css</category></item></channel></rss>