RSSAmplifier

Blog

Aleksandr Hovhannisyan

Dev tutorials, thoughts on software development, and the occasional essay.

aleksandrhovhannisyan.comRSS feed ↗114 posts

Latest posts

How to Use an Android Phone Camera in OBS

Mirror your phone's camera to your computer with scrcpy, and record it with OBS.

2D Canvas Sorting

Given an array of two-dimensional objects, how do you sort them by their natural reading order?

Fully Local Code Embeds

A simple web component for rendering isolated code embeds using HTML, CSS, and JavaScript.

Colorception

What happens when you derive an element's color from its inherited color in CSS?

The AI Dilemma

According to the people who sell AI products, it's going to take your job in the next few years. Then what?

Let Me Opt In, Not Out

Why should I have to opt out of something I never agreed to in the first place?

How to Split Audio Stems

A quick guide on how to use a free and open-source tool to separate stems from audio tracks using locally installed models.

Remote Code Execution with LLM Agents

Some AI agents can execute code or connect to services. If you're not careful, you could be the victim of prompt injection and RCE attacks.

Cache-Busting Assets in Eleventy

Generate a sourcemap and add it to Eleventy's global data.

In Memory of Em

A very serious eulogy that is meant to be taken literally.

Making Windows 11 Usable

My recommended settings for a fresh installation of Windows 11.

How to Correctly Install the Framework 13 Bezel

Improperly routed cables can cause the Framework 13 bezel to pop back out.

How to Wipe a Drive Without Removing It

Safely wipe a drive using a bootable USB and diskpart.

How to Open and Close HTML Dialogs

Learn how to use the show(), showModal(), and close() methods to toggle an HTML dialog's visibility.

WSL Backup Guide

Back up your entire WSL distribution and import it on a different machine.

Tag, You're It

There's a challenge going around where folks tag each other with questions about their blogs. Here are my responses.

To Parse an Int

Why does JavaScript's parseInt treat keycap emoji as integers? Is it a bug, a feature, or both?

Syntax Highlighting with Prism.js and markdown-it

Learn how to decorate your Markdown code blocks with Prism to add line numbers, file names, and copy-to-clipboard buttons.

2024 in Review

Looking back on everything I learned and tried in 2024.

A Tale of Two Routes

Poorly designed API routes and an account creation loophole cause route collisions on Twitter.

CLI Cheat Sheet for Videos

A reference for downloading, splitting, and optimizing videos with CLI tools.

Performant Game Loops in JavaScript

A look at some best practices for creating performant game animations in JavaScript.

Useful Bash Aliases

Bash aliases I use to speed up my workflows.

Access Windows Files from WSL

Move files between Windows and WSL using the wslpath command-line utility.

Get the IP Address of a Linux Machine

Programmatically read your machine's IPv4 address on Linux.

I Moved to Cloudflare

After some recent incidents involving Netlify and Vercel, I decided to play it safe and move my website and another side project to Cloudflare.

Eleventy Images Just Got Better

Eleventy 3.0 adds a new API to optimize images anywhere on your site, without shortcodes.

An Introduction to Unicode

In this deep dive, you'll learn about the Unicode character set and how it's encoded and decoded with UTF.

Virtual Templates in Eleventy

In Eleventy 3.0, virtual templates enable plugin authors to publish and share dynamic templates.

Creating Perfect Font Fallbacks in CSS

With a few lines of CSS, you can override metrics for fallback fonts to minimize layout shifts.

Hearing Silence

Subtitles can capture essential dialogue and sounds, but what about the quiet parts?

My First DIY Laptop Upgrade

A post-mortem of my first attempt at upgrading a laptop.

(Don't Fear) Mutation

The irrational fear of mutation in programming can sometimes do more harm than good.

2023 in Review

Reflecting on an unusually eventful year in my life.

The Perfect Theme Switch Component

Learn how to implement a progressively enhanced theme switch component using HTML, CSS, and JavaScript.

Naturalized

After nearly two decades of living in the United States, I'm proud to say that I'm now officially a U.S. citizen.

Interactive HTML Code Demos in Eleventy

With eleventy-plugin-code-demo, you can easily add interactive HTML, CSS, and JavaScript code demos to your Eleventy site using Markdown.

Class Fields vs. Methods in JavaScript

In JavaScript, class fields allow you to define properties on a class instance outside the constructor. In the case of function properties, it's important to understand how fields differ from methods and their potential tradeoffs.

Listening for Key Sequences in JavaScript

Implement a simple algorithm that listens for a sequence of keystrokes in JavaScript.

Detecting Nested Components in React with the Context API

Normally, React's Context API is used to avoid prop drilling. But you can also use it to detect if a component is a child of a particular component.

An Interactive Guide to JavaScript Events

Learn how event capturing, targeting, and bubbling work in JavaScript; how to prevent an event's default behavior; how to stop event propagation; and more.

A Font-Face Faux Pas

When using the font-face local() function to load fonts installed on a user's system, double-check that sure you're requesting the right font family.

Writing Better Documentation

Documentation is one of those things that you don't appreciate until you have to live without it.

Serializing HTML Form Data with JavaScript

Use JavaScript's FormData, URLSearchParams, and URL constructors to serialize an HTML form's data into a well-formatted and encoded URL.

The Cost of Tech Debt

The longer you leave tech debt unresolved, the more problems it will create for your team, until one day it becomes unbearable.

Modular Arithmetic and the Diffie-Hellman Algorithm

Using the properties of congruence modulo, Alice and Bob can generate a shared private key and communicate publicly, while Eve will struggle to decipher their messages.

Password Composition Rules Are Counter­productive

Requiring certain characters in passwords is counterproductive and encourages bad habits that can actually weaken passwords.

Tech Twitter Burnout

Tech Twitter can be a great way to network with other developers and learn new things. But it can also be unhealthy.

Creating an Accessible Image Carousel

Build an accessible image carousel that supports multiple input modes and is progressively enhanced with CSS scroll snap and JavaScript.

Limiting Memory Usage in WSL2

By default, WSL 2 may reserve a significant chunk of your host RAM. Thankfully, we can limit its memory usage with a .wslconfig file.