41554 blogs · [ { "id": "01a0c52c-0fae-7328-a54a-8330a0f5a5a8", "title": "Export any table to CSV in 12 lines", "url": "https://markodenic.tech/export-any-table-to-csv-in-12-lines/", "published_at": "2026-09-19T10:49:43+00:00" }, { "id": "01a09520-788b-7212-9223-ef2eee255fa9", "title": "A tag input that feels like a real product", "url": "https://markodenic.tech/a-tag-input-that-feels-like-a-real-product/", "published_at": "2026-09-12T09:00:23+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72bbf6754", "title": "A countdown that stays accurate in a background tab", "url": "https://markodenic.tech/a-countdown-that-stays-accurate-in-a-background-tab/", "published_at": "2026-09-05T06:30:19+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72bd2033e", "title": "A sticky table header and first column in 6 lines of CSS", "url": "https://markodenic.tech/a-sticky-table-header-and-first-column-in-6-lines-of-css/", "published_at": "2026-08-29T11:00:37+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72cd019e9", "title": "An animated FAQ accordion in pure HTML", "url": "https://markodenic.tech/an-animated-faq-accordion-in-pure-html/", "published_at": "2026-08-22T09:30:55+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72d770cd4", "title": "A real chart in 15 lines of SVG, no library", "url": "https://markodenic.tech/a-real-chart-in-15-lines-of-svg-no-library/", "published_at": "2026-08-19T11:34:04+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72d7b9053", "title": "A before/after image slider in 2 lines of JavaScript", "url": "https://markodenic.tech/a-before-after-image-slider-in-2-lines-of-javascript/", "published_at": "2026-08-15T09:34:36+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72d866e2a", "title": "Delete your auto-resize textarea script", "url": "https://markodenic.tech/delete-your-auto-resize-textarea-script/", "published_at": "2026-08-08T11:05:28+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72dc74ab1", "title": "Give your site the Cmd+K menu users expect", "url": "https://markodenic.tech/give-your-site-the-cmdk-menu-users-expect/", "published_at": "2026-08-01T10:15:27+00:00" }, { "id": "01a087a0-753a-73f4-9c38-17e72df9daf7", "title": "How to build a swipeable carousel with just CSS", "url": "https://markodenic.tech/how-to-build-a-swipeable-carousel-with-just-css/", "published_at": "2026-07-25T13:55:58+00:00" }, { "id": "01a087a0-753b-70ee-889c-30a5a19a26aa", "title": "Turn any table sortable in 20 lines", "url": "https://markodenic.tech/turn-any-table-sortable-in-20-lines/", "published_at": "2026-07-17T12:26:58+00:00" }, { "id": "01a087a0-753b-70ee-889c-30a5a1ba538b", "title": "How to stop a sticky header from covering your headings", "url": "https://markodenic.tech/how-to-stop-a-sticky-header-from-covering-your-headings/", "published_at": "2026-07-11T09:35:01+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06ba877d714", "title": "How to stop a modal from scrolling the page behind it", "url": "https://markodenic.tech/how-to-stop-a-modal-from-scrolling-the-page-behind-it/", "published_at": "2026-07-04T07:52:38+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06ba963c113", "title": "How to read and update URL query params without regex", "url": "https://markodenic.tech/how-to-read-and-update-url-query-params-without-regex/", "published_at": "2026-06-27T09:58:12+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06ba9c985fb", "title": "How to stop a search box from firing 20 requests at once.", "url": "https://markodenic.tech/how-to-stop-a-search-box-from-firing-20-requests-at-once/", "published_at": "2026-06-20T09:35:35+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06ba9d40731", "title": "How to build a responsive grid without a single media query.", "url": "https://markodenic.tech/how-to-build-a-responsive-grid-without-a-single-media-query/", "published_at": "2026-06-13T11:12:05+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06baa34de1c", "title": "How to make three API calls finish in the time it takes to make one.", "url": "https://markodenic.tech/how-to-make-three-api-calls-finish-in-the-time-it-takes-to-make-one/", "published_at": "2026-06-05T19:04:49+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06baa92fad6", "title": "How to remember your users without a database.", "url": "https://markodenic.tech/how-to-remember-your-users-without-a-database/", "published_at": "2026-05-29T09:39:33+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06baad68fed", "title": "Your page is freezing because of this. Here is how to fix it.", "url": "https://markodenic.tech/your-page-is-freezing-because-of-this-here-is-how-to-fix-it/", "published_at": "2026-05-19T15:17:54+00:00" }, { "id": "01a0bb52-c8d1-719e-8c1a-f06bab48d6ee", "title": "How to add a native share button with four lines of JavaScript.", "url": "https://markodenic.tech/how-to-add-a-native-share-button-with-four-lines-of-javascript/", "published_at": "2026-05-16T08:13:58+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-081522d03f98", "title": "Stop tweaking your user prompts. (Do this instead)", "url": "https://markodenic.tech/stop-tweaking-your-user-prompts-do-this-instead/", "published_at": "2026-05-09T08:50:01+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-0815238946b2", "title": "Make page loads feel instant. No framework.", "url": "https://markodenic.tech/make-page-loads-feel-instant-no-framework/", "published_at": "2026-05-01T19:51:55+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-081523fa5a1a", "title": "Make your app look globally professional. Instantly.", "url": "https://markodenic.tech/make-your-app-look-globally-professional-instantly/", "published_at": "2026-04-25T08:21:18+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-0815242630f6", "title": "The One-Liner That Sends Browser Notifications (No App Needed)", "url": "https://markodenic.tech/the-one-liner-that-sends-browser-notifications-no-app-needed/", "published_at": "2026-04-18T10:04:59+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-08152504ab3d", "title": "Give your website a voice", "url": "https://markodenic.tech/give-your-website-a-voice/", "published_at": "2026-04-11T10:18:03+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-0815253f82e2", "title": "Seamless CSS Marquees", "url": "https://markodenic.tech/seamless-css-marquees/", "published_at": "2026-04-04T12:52:41+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-081525cc4322", "title": "Fix “Full Height” on mobile", "url": "https://markodenic.tech/fix-full-height-on-mobile/", "published_at": "2026-03-28T05:18:24+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-0815268169cc", "title": "App-like page transitions (with zero JS)", "url": "https://markodenic.tech/app-like-page-transitions-with-zero-js/", "published_at": "2026-03-21T08:05:22+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-081526d46085", "title": "Zero-JS tooltips and menus", "url": "https://markodenic.tech/zero-js-tooltips-and-menus/", "published_at": "2026-03-14T06:45:32+00:00" }, { "id": "01a0bb59-f679-72b8-9f11-08152747bcad", "title": "A better way to handle Aspect Ratios", "url": "https://markodenic.tech/a-better-way-to-handle-aspect-ratios/", "published_at": "2026-03-07T08:53:50+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf47cccf6c", "title": "Stop using margin-left and padding-right", "url": "https://markodenic.tech/stop-using-margin-left-and-padding-right/", "published_at": "2026-02-27T20:36:43+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf48173d12", "title": "Stop duplicating your CSS for Dark Mode 🌓", "url": "https://markodenic.tech/stop-duplicating-your-css-for-dark-mode/", "published_at": "2026-02-21T09:22:59+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf4824a589", "title": "Stop writing click handlers for UI", "url": "https://markodenic.tech/stop-writing-click-handlers-for-ui/", "published_at": "2026-02-13T17:34:05+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf4878e0cf", "title": "ES6 JavaScript", "url": "https://markodenic.tech/es6-javascript/", "published_at": "2026-02-07T12:20:18+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf48f2c55a", "title": "Worth Revisiting: The Most Useful Past Issues", "url": "https://markodenic.tech/worth-revisiting-the-most-useful-past-issues/", "published_at": "2026-01-31T09:51:38+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf497bdc86", "title": "Tools I made for you", "url": "https://markodenic.tech/tools-i-made-for-you/", "published_at": "2026-01-24T10:21:54+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf49f5f9bb", "title": "CSS `:has()` Isn’t New, But Most Developers Still Aren’t Using It Well", "url": "https://markodenic.tech/css-has-isnt-new-but-most-developers-still-arent-using-it-well/", "published_at": "2026-01-14T18:37:05+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf4a03d0d5", "title": "10 JavaScript array methods to simplify your code", "url": "https://markodenic.tech/10-javascript-array-methods-to-simplify-your-code/", "published_at": "2026-01-09T19:54:32+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf4aa21bb1", "title": "What Actually Matters for Developers This Year", "url": "https://markodenic.tech/what-actually-matters-for-developers-this-year/", "published_at": "2026-01-02T19:35:49+00:00" }, { "id": "01a0bb62-1450-7227-bb5e-b0cf4b329479", "title": "CSS is the New Photoshop", "url": "https://markodenic.tech/css-is-the-new-photoshop/", "published_at": "2025-12-26T14:09:00+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8abc3ef01", "title": "How to Add a Scroll Progress Bar in 5 Minutes (No Libraries)", "url": "https://markodenic.tech/how-to-add-a-scroll-progress-bar-in-5-minutes-no-libraries/", "published_at": "2025-12-19T17:31:26+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8ac1379dd", "title": "The complete guide to HTML input types. Hint: there are more than you know", "url": "https://markodenic.tech/the-complete-guide-to-html-input-types-hint-there-are-more-than-you-know/", "published_at": "2025-12-12T13:31:34+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8ace3fd86", "title": "CSS Now Has if() Statements. Here’s How They Work", "url": "https://markodenic.tech/css-now-has-if-statements-heres-how-they-work/", "published_at": "2025-12-05T19:54:20+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8ad5de788", "title": "Let’s build QR Code Generator in Under 10 Minutes", "url": "https://markodenic.tech/lets-build-qr-code-generator-in-under-10-minutes/", "published_at": "2025-11-28T19:55:32+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8ade078b3", "title": "Interactive learning tools", "url": "https://markodenic.tech/interactive-learning-tools/", "published_at": "2025-11-21T19:11:11+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8ae99268a", "title": "Best Websites to Get HTML/CSS Templates", "url": "https://markodenic.tech/best-websites-to-get-html-css-templates/", "published_at": "2025-11-14T18:39:30+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8aef60870", "title": "Technical interview resources", "url": "https://markodenic.tech/technical-interview-resources/", "published_at": "2025-11-07T19:31:44+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8afee1a44", "title": "I Took Pong Wars and made it Playable", "url": "https://markodenic.tech/i-took-pong-wars-and-made-it-playable/", "published_at": "2025-10-31T17:31:19+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8b062262a", "title": "Free certifications for developers", "url": "https://markodenic.tech/free-certifications-for-developers/", "published_at": "2025-10-24T18:35:27+00:00" }, { "id": "01a0bb68-4590-7379-85d5-0fe8b0f45e3b", "title": "GitHub Repositories to Improve Your Programming Skills", "url": "https://markodenic.tech/github-repositories-to-improve-your-programming-skills/", "published_at": "2025-10-17T18:09:49+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc9756749ba8", "title": "CSS Generators", "url": "https://markodenic.tech/css-generators/", "published_at": "2025-10-10T18:18:26+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc9757474baa", "title": "Use `console.log()` like a pro", "url": "https://markodenic.tech/use-console-log-like-a-pro/", "published_at": "2025-10-03T17:33:06+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975796cd94", "title": "Git Cheat Sheet", "url": "https://markodenic.tech/git-cheat-sheet/", "published_at": "2025-09-26T17:17:31+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc9757d802a9", "title": "Make Your First Open Source Contribution", "url": "https://markodenic.tech/make-your-first-open-source-contribution/", "published_at": "2025-09-19T16:36:57+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc9758bf469b", "title": "9 Most Useful JavaScript Tips and Tricks", "url": "https://markodenic.tech/9-most-useful-javascript-tips-and-tricks/", "published_at": "2025-09-12T18:12:27+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975987eb57", "title": "HTML tips you won’t find in most tutorials", "url": "https://markodenic.tech/html-tips-you-wont-find-in-most-tutorials/", "published_at": "2025-09-05T18:22:14+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975a87a9f1", "title": "Showcase Blog Posts Automatically on GitHub Profile", "url": "https://markodenic.tech/showcase-blog-posts-automatically-on-github-profile/", "published_at": "2025-08-29T19:37:23+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975b17f6f5", "title": "CSS Pulse Animation", "url": "https://markodenic.tech/css-pulse-animation/", "published_at": "2025-08-22T18:25:06+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975bab0724", "title": "9 Most Powerful CSS One-Liners", "url": "https://markodenic.tech/9-most-powerful-css-one-liners/", "published_at": "2025-08-15T20:22:05+00:00" }, { "id": "01a0bb6c-679e-70fa-ba5e-cc975c5867cc", "title": "From zero to Web Developer", "url": "https://markodenic.tech/from-zero-to-web-developer/", "published_at": "2025-08-08T21:31:06+00:00" } ] posts Claim your blog
Back to markodenic.tech
Blog · corpus.blog/blogs/markodenic.tech/posts

markodenic.tech

markodenic.tech

2026

2025