41554 blogs · [ { "id": "01a08723-59eb-7344-a558-ca6c1d836b1e", "title": "How to Use an Android Phone Camera in OBS", "url": "https://www.aleksandrhovhannisyan.com/notes/android-camera-obs/", "published_at": "2026-06-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1d9144a6", "title": "2D Canvas Sorting", "url": "https://www.aleksandrhovhannisyan.com/blog/2d-canvas-sorting/", "published_at": "2026-04-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1de2139e", "title": "Fully Local Code Embeds", "url": "https://www.aleksandrhovhannisyan.com/blog/local-code-embeds/", "published_at": "2026-03-29T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1e4309a5", "title": "Colorception", "url": "https://www.aleksandrhovhannisyan.com/blog/colorception/", "published_at": "2026-03-07T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1ece1d6e", "title": "The AI Dilemma", "url": "https://www.aleksandrhovhannisyan.com/blog/the-ai-dilemma/", "published_at": "2026-02-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1f1acaee", "title": "Let Me Opt In, Not Out", "url": "https://www.aleksandrhovhannisyan.com/blog/let-me-opt-in-not-out/", "published_at": "2025-11-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1fbeed2a", "title": "How to Split Audio Stems", "url": "https://www.aleksandrhovhannisyan.com/notes/stem-separation/", "published_at": "2025-09-04T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c1fe99c4f", "title": "Remote Code Execution with LLM Agents", "url": "https://www.aleksandrhovhannisyan.com/blog/rce-with-llm-agents/", "published_at": "2025-08-28T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c20a419a4", "title": "Cache-Busting Assets in Eleventy", "url": "https://www.aleksandrhovhannisyan.com/notes/cache-busting-assets-in-eleventy/", "published_at": "2025-08-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c20db016c", "title": "In Memory of Em", "url": "https://www.aleksandrhovhannisyan.com/blog/in-memory-of-em/", "published_at": "2025-05-17T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c211ce198", "title": "Making Windows 11 Usable", "url": "https://www.aleksandrhovhannisyan.com/blog/making-windows-11-usable/", "published_at": "2025-05-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c21d8a9bc", "title": "How to Correctly Install the Framework 13 Bezel", "url": "https://www.aleksandrhovhannisyan.com/notes/framework-13-bezel-install/", "published_at": "2025-04-27T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c225d1005", "title": "How to Wipe a Drive Without Removing It", "url": "https://www.aleksandrhovhannisyan.com/notes/wipe-drive/", "published_at": "2025-04-19T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c231eda1d", "title": "How to Open and Close HTML Dialogs", "url": "https://www.aleksandrhovhannisyan.com/blog/how-to-open-and-close-html-dialogs/", "published_at": "2025-04-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c23f65872", "title": "WSL Backup Guide", "url": "https://www.aleksandrhovhannisyan.com/notes/wsl-backups/", "published_at": "2025-03-30T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c245100f2", "title": "Tag, You're It", "url": "https://www.aleksandrhovhannisyan.com/blog/blog-questions/", "published_at": "2025-03-29T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c24f82835", "title": "To Parse an Int", "url": "https://www.aleksandrhovhannisyan.com/blog/parseint-keycap-emoji/", "published_at": "2025-03-01T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c25c74125", "title": "Syntax Highlighting with Prism.js and markdown-it", "url": "https://www.aleksandrhovhannisyan.com/blog/syntax-highlighting-with-prism-and-markdown-it/", "published_at": "2025-02-04T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c25f565c9", "title": "2024 in Review", "url": "https://www.aleksandrhovhannisyan.com/blog/2024-in-review/", "published_at": "2025-02-01T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2640bb12", "title": "A Tale of Two Routes", "url": "https://www.aleksandrhovhannisyan.com/blog/tale-of-two-routes/", "published_at": "2025-01-23T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c271b06b6", "title": "CLI Cheat Sheet for Videos", "url": "https://www.aleksandrhovhannisyan.com/notes/video-cli-cheat-sheet/", "published_at": "2025-01-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c279fa4ef", "title": "Performant Game Loops in JavaScript", "url": "https://www.aleksandrhovhannisyan.com/blog/javascript-game-loop/", "published_at": "2024-12-29T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c282e252e", "title": "Useful Bash Aliases", "url": "https://www.aleksandrhovhannisyan.com/notes/bash-aliases/", "published_at": "2024-11-16T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c28788058", "title": "Access Windows Files from WSL", "url": "https://www.aleksandrhovhannisyan.com/notes/wsl-access-windows/", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c28d58e16", "title": "Get the IP Address of a Linux Machine", "url": "https://www.aleksandrhovhannisyan.com/notes/linux-ip-address/", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c29bd43d8", "title": "I Moved to Cloudflare", "url": "https://www.aleksandrhovhannisyan.com/blog/cloudflare-migration/", "published_at": "2024-09-15T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2a0283f0", "title": "Eleventy Images Just Got Better", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-image-transform/", "published_at": "2024-09-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2a431ef3", "title": "An Introduction to Unicode", "url": "https://www.aleksandrhovhannisyan.com/blog/introduction-to-unicode/", "published_at": "2024-07-28T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2b0f77b9", "title": "Virtual Templates in Eleventy", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-virtual-templates/", "published_at": "2024-06-01T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2b40f8c6", "title": "Creating Perfect Font Fallbacks in CSS", "url": "https://www.aleksandrhovhannisyan.com/blog/perfect-font-fallbacks/", "published_at": "2024-04-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2b841206", "title": "Hearing Silence", "url": "https://www.aleksandrhovhannisyan.com/blog/hearing-silence/", "published_at": "2024-04-02T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2c406b92", "title": "My First DIY Laptop Upgrade", "url": "https://www.aleksandrhovhannisyan.com/blog/laptop-upgrade/", "published_at": "2024-02-24T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2cb1f85e", "title": "(Don't Fear) Mutation", "url": "https://www.aleksandrhovhannisyan.com/blog/dont-fear-mutation/", "published_at": "2024-02-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2d382202", "title": "2023 in Review", "url": "https://www.aleksandrhovhannisyan.com/blog/2023-in-review/", "published_at": "2024-01-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2e2ab5d9", "title": "The Perfect Theme Switch Component", "url": "https://www.aleksandrhovhannisyan.com/blog/the-perfect-theme-switch/", "published_at": "2023-11-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2f138b92", "title": "Naturalized", "url": "https://www.aleksandrhovhannisyan.com/blog/naturalized/", "published_at": "2023-08-25T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c2fe623b1", "title": "Interactive HTML Code Demos in Eleventy", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-code-demos/", "published_at": "2023-07-30T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c30d1cea1", "title": "Class Fields vs. Methods in JavaScript", "url": "https://www.aleksandrhovhannisyan.com/blog/javascript-fields-vs-methods/", "published_at": "2023-07-16T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c316c7fc7", "title": "Listening for Key Sequences in JavaScript", "url": "https://www.aleksandrhovhannisyan.com/blog/key-sequences-in-javascript/", "published_at": "2023-05-12T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3173d8bf", "title": "Detecting Nested Components in React with the Context API", "url": "https://www.aleksandrhovhannisyan.com/blog/react-context-nested-components/", "published_at": "2023-02-05T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c31d29d36", "title": "An Interactive Guide to JavaScript Events", "url": "https://www.aleksandrhovhannisyan.com/blog/interactive-guide-to-javascript-events/", "published_at": "2022-12-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c32090670", "title": "A Font-Face Faux Pas", "url": "https://www.aleksandrhovhannisyan.com/blog/font-face-faux-pas/", "published_at": "2022-11-26T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c32506b80", "title": "Writing Better Documentation", "url": "https://www.aleksandrhovhannisyan.com/blog/writing-better-documentation/", "published_at": "2022-11-05T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c333ba546", "title": "Serializing HTML Form Data with JavaScript", "url": "https://www.aleksandrhovhannisyan.com/blog/serializing-html-form-data-with-javascript/", "published_at": "2022-10-22T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c33ce92d8", "title": "The Cost of Tech Debt", "url": "https://www.aleksandrhovhannisyan.com/blog/the-cost-of-tech-debt/", "published_at": "2022-09-27T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c349b9b26", "title": "Modular Arithmetic and the Diffie-Hellman Algorithm", "url": "https://www.aleksandrhovhannisyan.com/blog/modular-arithmetic-and-diffie-hellman/", "published_at": "2022-09-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c356c18be", "title": "Password Composition Rules Are Counter­productive", "url": "https://www.aleksandrhovhannisyan.com/blog/password-composition-rules/", "published_at": "2022-08-28T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c35cfae85", "title": "Tech Twitter Burnout", "url": "https://www.aleksandrhovhannisyan.com/blog/tech-twitter-burnout/", "published_at": "2022-07-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c36c69dbb", "title": "Creating an Accessible Image Carousel", "url": "https://www.aleksandrhovhannisyan.com/blog/image-carousel-tutorial/", "published_at": "2022-06-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c375d4466", "title": "Limiting Memory Usage in WSL2", "url": "https://www.aleksandrhovhannisyan.com/blog/limiting-memory-usage-in-wsl-2/", "published_at": "2022-06-05T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c37f8f933", "title": "A typeof Typo", "url": "https://www.aleksandrhovhannisyan.com/blog/a-typeof-typo/", "published_at": "2022-06-04T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c38a649a3", "title": "Add Build Info to an 11ty Site", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-build-info/", "published_at": "2022-05-31T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c393ba7fd", "title": "A Set of Useful 11ty Filters", "url": "https://www.aleksandrhovhannisyan.com/blog/useful-11ty-filters/", "published_at": "2022-05-15T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c39cf96fb", "title": "Use Rems for Font Size to Respect User Preferences", "url": "https://www.aleksandrhovhannisyan.com/blog/use-rems-for-font-size/", "published_at": "2022-05-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3a5d835b", "title": "Overzealous Destructuring", "url": "https://www.aleksandrhovhannisyan.com/blog/overzealous-destructuring/", "published_at": "2022-04-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3a75b014", "title": "Changing the Locale in Chrome with Dev Tools", "url": "https://www.aleksandrhovhannisyan.com/blog/changing-locale-in-chrome-with-dev-tools/", "published_at": "2022-03-09T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3b31ba8f", "title": "Gated Content, Broken Locks", "url": "https://www.aleksandrhovhannisyan.com/blog/gated-content/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3b630636", "title": "How to Download and Optimize Google Fonts", "url": "https://www.aleksandrhovhannisyan.com/blog/downloading-and-optimizing-google-fonts/", "published_at": "2022-02-13T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3bc2940a", "title": "Custom Markdown Components in 11ty", "url": "https://www.aleksandrhovhannisyan.com/blog/custom-markdown-components-in-11ty/", "published_at": "2022-02-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3c9ce8f9", "title": "HTML Input Validation with JavaScript", "url": "https://www.aleksandrhovhannisyan.com/blog/html-input-validation-without-a-form/", "published_at": "2022-01-16T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3d965ac2", "title": "Creating a Fluid Type Scale with CSS Clamp", "url": "https://www.aleksandrhovhannisyan.com/blog/fluid-type-scale-with-css-clamp/", "published_at": "2021-12-27T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3e3eb633", "title": "Modern Techniques for Writing Better CSS", "url": "https://www.aleksandrhovhannisyan.com/blog/writing-better-css/", "published_at": "2021-12-08T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3ef44030", "title": "Managing Keyboard Focus for Load-More Buttons", "url": "https://www.aleksandrhovhannisyan.com/blog/load-more-button-focus/", "published_at": "2021-12-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c3fc07ca2", "title": "Configuring Web Fonts in 11ty with Global Data", "url": "https://www.aleksandrhovhannisyan.com/blog/configuring-web-fonts-in-11ty-with-global-data/", "published_at": "2021-11-14T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c40163cff", "title": "Optimizing Images with the 11ty Image Plugin", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-image-plugin/", "published_at": "2021-10-31T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4087718b", "title": "How to Add Comments to a Static Site with GitHub Issues", "url": "https://www.aleksandrhovhannisyan.com/blog/static-site-comments-github-issues/", "published_at": "2021-10-20T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c41851f8a", "title": "Managing Complex State in React with useReducer", "url": "https://www.aleksandrhovhannisyan.com/blog/managing-complex-state-react-usereducer/", "published_at": "2021-10-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c41a0ac1f", "title": "NFTs Are a Problem", "url": "https://www.aleksandrhovhannisyan.com/blog/nfts-are-a-problem/", "published_at": "2021-09-28T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c41a3df9a", "title": "Preventing Layout Shifts in Status Text with CSS Grid", "url": "https://www.aleksandrhovhannisyan.com/blog/preventing-layout-shifts-in-status-text/", "published_at": "2021-09-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4294d258", "title": "Represent State with HTML Attributes, Not Class Names", "url": "https://www.aleksandrhovhannisyan.com/blog/represent-state-with-html-attributes-not-class-names/", "published_at": "2021-09-14T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c431fc325", "title": "Passing Object Arguments to Liquid Shortcodes in 11ty", "url": "https://www.aleksandrhovhannisyan.com/blog/passing-object-arguments-to-liquid-shortcodes-in-11ty/", "published_at": "2021-09-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c43a0bd80", "title": "Dynamically Importing Components with React.lazy", "url": "https://www.aleksandrhovhannisyan.com/blog/react-lazy-dynamic-imports/", "published_at": "2021-08-24T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c43ae8005", "title": "Automate Netlify Redirects in 11ty", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-netlify-redirects/", "published_at": "2021-08-08T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c449776cb", "title": "A Deep Dive on Promise.all", "url": "https://www.aleksandrhovhannisyan.com/blog/javascript-promise-all/", "published_at": "2021-08-01T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4589d3e9", "title": "Cleaner Type Predicates with Derived Types", "url": "https://www.aleksandrhovhannisyan.com/blog/cleaner-type-predicates-with-derived-types/", "published_at": "2021-07-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c45a6b8eb", "title": "The 62.5% Font Size Trick", "url": "https://www.aleksandrhovhannisyan.com/blog/62-5-percent-font-size-trick/", "published_at": "2021-07-11T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c46003d38", "title": "Don't Use a Fixed Line Height", "url": "https://www.aleksandrhovhannisyan.com/blog/dont-use-a-fixed-line-height/", "published_at": "2021-07-10T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c467e505d", "title": "11ty: The Good, the Bad, and the... Possum?", "url": "https://www.aleksandrhovhannisyan.com/blog/eleventy-the-good-the-bad-and-the-possum/", "published_at": "2021-07-03T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c46cd5916", "title": "React, Iframes, and a Back-Navigation Bug", "url": "https://www.aleksandrhovhannisyan.com/blog/react-iframes-back-navigation-bug/", "published_at": "2021-05-22T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c46fa18ab", "title": "Make Atomic Git Commits", "url": "https://www.aleksandrhovhannisyan.com/blog/atomic-git-commits/", "published_at": "2021-05-15T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c479e3f27", "title": "How to Format on Save with ESlint", "url": "https://www.aleksandrhovhannisyan.com/blog/eslint-format-on-save/", "published_at": "2021-04-25T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c48682e46", "title": "CRLF vs. LF: Normalizing Line Endings in Git", "url": "https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/", "published_at": "2021-04-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c491fc0c8", "title": "Why Developers Should Write", "url": "https://www.aleksandrhovhannisyan.com/blog/why-devs-should-write/", "published_at": "2021-04-07T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c49942d8c", "title": "Set a Width and Height on Images to Reduce Layout Shifts", "url": "https://www.aleksandrhovhannisyan.com/blog/setting-width-and-height-on-images/", "published_at": "2021-03-07T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4a63fa97", "title": "Why You No Longer Enjoy Reading", "url": "https://www.aleksandrhovhannisyan.com/blog/why-you-no-longer-enjoy-reading/", "published_at": "2021-02-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4a7c3fa1", "title": "Why I Don't Like Tailwind CSS", "url": "https://www.aleksandrhovhannisyan.com/blog/why-i-dont-like-tailwind-css/", "published_at": "2021-01-31T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4b1bd297", "title": "SVG Tutorial: How to Code SVG Icons by Hand", "url": "https://www.aleksandrhovhannisyan.com/blog/svg-tutorial/", "published_at": "2021-01-18T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4bbd352d", "title": "Creating a Vertical Rhythm with CSS Grid", "url": "https://www.aleksandrhovhannisyan.com/blog/vertical-rhythm-with-css-grid/", "published_at": "2021-01-07T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4c0a051b", "title": "Rest in Peace, Flash", "url": "https://www.aleksandrhovhannisyan.com/blog/rest-in-peace-flash/", "published_at": "2020-12-31T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4ca49471", "title": "Subtle Accessibility Failures (And How to Fix Them)", "url": "https://www.aleksandrhovhannisyan.com/blog/subtle-web-accessibility-issues/", "published_at": "2020-11-28T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4d8ddcde", "title": "Dynamic Tag Name Props in React and TypeScript", "url": "https://www.aleksandrhovhannisyan.com/blog/dynamic-tag-name-props-in-react/", "published_at": "2020-11-01T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4e425953", "title": "How to Undo Changes in Git", "url": "https://www.aleksandrhovhannisyan.com/blog/undoing-changes-in-git/", "published_at": "2020-10-11T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4e9b754c", "title": "Does Web Performance Matter? It Depends.", "url": "https://www.aleksandrhovhannisyan.com/blog/does-web-performance-matter/", "published_at": "2020-09-30T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4f042c1d", "title": "Creating Aspect Ratios in CSS", "url": "https://www.aleksandrhovhannisyan.com/blog/css-aspect-ratio/", "published_at": "2020-09-21T00:00:00+00:00" }, { "id": "01a08723-59eb-7344-a558-ca6c4f091354", "title": "Hesitation Is Defeat", "url": "https://www.aleksandrhovhannisyan.com/blog/hesitation-is-defeat/", "published_at": "2020-09-17T00:00:00+00:00" }, { "id": "01a08723-59ec-714a-a068-16d3bd00a4c6", "title": "JavaScript Promises: Practical Use Cases and Examples", "url": "https://www.aleksandrhovhannisyan.com/blog/javascript-promise-tricks/", "published_at": "2020-09-12T00:00:00+00:00" }, { "id": "01a08723-59ec-714a-a068-16d3bd449a1f", "title": "Optimizing Images with WebP and Lazy Loading", "url": "https://www.aleksandrhovhannisyan.com/blog/optimizing-images-for-the-web/", "published_at": "2020-09-01T00:00:00+00:00" }, { "id": "01a08723-59ec-714a-a068-16d3be393af1", "title": "Don't Mind the Leetcode Grind", "url": "https://www.aleksandrhovhannisyan.com/blog/the-leetcode-grind/", "published_at": "2020-08-19T00:00:00+00:00" }, { "id": "01a08723-59ec-714a-a068-16d3bf14e77e", "title": "An Introduction to HTTP Cookies", "url": "https://www.aleksandrhovhannisyan.com/blog/http-cookies/", "published_at": "2020-07-26T00:00:00+00:00" }, { "id": "01a08723-59ec-714a-a068-16d3bf16d8c8", "title": "Writing Semantic HTML", "url": "https://www.aleksandrhovhannisyan.com/blog/semantic-html-accessibility/", "published_at": "2020-07-19T00:00:00+00:00" } ] posts Claim your blog
Back to Aleksandr Hovhannisyan
Blog · corpus.blog/blogs/aleksandrhovhannisyan.com/posts

Aleksandr Hovhannisyan

aleksandrhovhannisyan.com

2026

2025

2024

2023

2022

2021

2020