All blogs / Frontend / CSS / browsers
Aleksandr Hovhannisyan
Dev tutorials, thoughts on software development, and the occasional essay.
Frontend / CSS / browsersJavaScript / TypeScriptWeb developmentLinux / UnixDev tools / editors / IDEs
- Posts
- 114 from 4 Aug 2019 to 21 Jun 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://www.aleksandrhovhannisyan.com/feed.xml
2026 5
2025 16
- Let Me Opt In, Not Out
- How to Split Audio Stems
- Remote Code Execution with LLM Agents
- Cache-Busting Assets in Eleventy
- In Memory of Em
- Making Windows 11 Usable
- How to Correctly Install the Framework 13 Bezel
- How to Wipe a Drive Without Removing It
- How to Open and Close HTML Dialogs
- WSL Backup Guide
- Tag, You're It
- To Parse an Int
- Syntax Highlighting with Prism.js and markdown-it
- 2024 in Review
- A Tale of Two Routes
- CLI Cheat Sheet for Videos
2024 13
- Performant Game Loops in JavaScript
- Useful Bash Aliases
- Access Windows Files from WSL
- Get the IP Address of a Linux Machine
- I Moved to Cloudflare
- Eleventy Images Just Got Better
- An Introduction to Unicode
- Virtual Templates in Eleventy
- Creating Perfect Font Fallbacks in CSS
- Hearing Silence
- My First DIY Laptop Upgrade
- (Don't Fear) Mutation
- 2023 in Review
2023 6
2022 20
- An Interactive Guide to JavaScript Events
- A Font-Face Faux Pas
- Writing Better Documentation
- Serializing HTML Form Data with JavaScript
- The Cost of Tech Debt
- Modular Arithmetic and the Diffie-Hellman Algorithm
- Password Composition Rules Are Counter­productive
- Tech Twitter Burnout
- Creating an Accessible Image Carousel
- Limiting Memory Usage in WSL2
- A typeof Typo
- Add Build Info to an 11ty Site
- A Set of Useful 11ty Filters
- Use Rems for Font Size to Respect User Preferences
- Overzealous Destructuring
- Changing the Locale in Chrome with Dev Tools
- Gated Content, Broken Locks
- How to Download and Optimize Google Fonts
- Custom Markdown Components in 11ty
- HTML Input Validation with JavaScript
2021 28
- Creating a Fluid Type Scale with CSS Clamp
- Modern Techniques for Writing Better CSS
- Managing Keyboard Focus for Load-More Buttons
- Configuring Web Fonts in 11ty with Global Data
- Optimizing Images with the 11ty Image Plugin
- How to Add Comments to a Static Site with GitHub Issues
- Managing Complex State in React with useReducer
- NFTs Are a Problem
- Preventing Layout Shifts in Status Text with CSS Grid
- Represent State with HTML Attributes, Not Class Names
- Passing Object Arguments to Liquid Shortcodes in 11ty
- Dynamically Importing Components with React.lazy
- Automate Netlify Redirects in 11ty
- A Deep Dive on Promise.all
- Cleaner Type Predicates with Derived Types
- The 62.5% Font Size Trick
- Don't Use a Fixed Line Height
- 11ty: The Good, the Bad, and the... Possum?
- React, Iframes, and a Back-Navigation Bug
- Make Atomic Git Commits
- How to Format on Save with ESlint
- CRLF vs. LF: Normalizing Line Endings in Git
- Why Developers Should Write
- Set a Width and Height on Images to Reduce Layout Shifts
- Why You No Longer Enjoy Reading
- Why I Don't Like Tailwind CSS
- SVG Tutorial: How to Code SVG Icons by Hand
- Creating a Vertical Rhythm with CSS Grid
2020 19
- Rest in Peace, Flash
- Subtle Accessibility Failures (And How to Fix Them)
- Dynamic Tag Name Props in React and TypeScript
- How to Undo Changes in Git
- Does Web Performance Matter? It Depends.
- Creating Aspect Ratios in CSS
- Hesitation Is Defeat
- JavaScript Promises: Practical Use Cases and Examples
- Optimizing Images with WebP and Lazy Loading
- Don't Mind the Leetcode Grind
- An Introduction to HTTP Cookies
- Writing Semantic HTML
- Add Comments to Jekyll with the GitHub Issues API
- The Binary Number System
- Goodbye, GitHub Pages—Hello, Netlify
- Is JavaScript Pass by Reference?
- Getting Started with Jekyll and GitHub Pages
- Implementing a Finite State Machine in C++
- Invulnerability Frames in Unity