All blogs / Frontend / CSS / browsers
Muffin Man
Hello, I'm Stanko, a programmer who makes tools, generative art, games and interactive blog posts
Frontend / CSS / browsersJavaScript / TypeScriptGame developmentEssays / personalEngineering blogs
- Posts
- 188 from 21 Feb 2016 to 13 Oct 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://muffinman.io/atom.xml
2026 4
2025 15
- Birds • Art
- Promise based Web Worker Messaging
- Moon • Art
- How to draw a Space Invader
- CSS only counter component
- Origami jumping frog
- Preserving text size when scaling SVGs
- Apply blur to iOS status bar in PWA
- CSS-only glitch effect
- Make regular expressions easier to read
- Image comparison slider in 6 lines of JavaScript
- Bunny jumps again
- The Tiny Book of Great Joys
- Change font-weight based on the user's screen DPI
- Blog Questions Challenge
2024 4
2023 11
- HTML inert property and React fallback
- Moon Phases • Art
- Using CSS animations instead of JavaScript timers
- Dreamy little towns • Art
- CSS only floating labels
- Custom giraffe caret
- Scrollbar width custom event
- 10 years of Work&Co, version 2 • Art
- 10 years of Work&Co • Art
- Simple colorful logging in Node.js
- Sneak peek of Rayven
2022 15
- Draw SVG rope using JavaScript
- Get lines of text from an HTML element
- CSS blocky people making waves
- Scrubbing videos using JavaScript
- Core • Art
- Untitled • Art
- Introducing keen
- Back to the basics
- Goodbye IE
- SVG non-scaling circle and rectangle
- Into 2022
- Breaking down Krypton
- Libraries I use for generative art
- Untitled • Art
- Bunny • Art
2021 12
2020 31
- Beach • Art
- Contact Lost • Art
- Stranded • Art
- Stranded • Art
- AxiDraw Lego camera mount
- Simple video buffering loader in React
- Untitled • Art
- Alien Machinery • Art
- Untitled • Art
- Deprecating Marvin
- Black Holes • Art
- Neon • Art
- Waves (prints) • Art
- Black Holes • Art
- This blog is now Google free
- Over the Garden Wall • Art
- Belgrade • Art
- Hack for iOS Safari to display the HTML video thumbnail
- AxiDraw plotter Raspberry Pi camera mount
- Galaxy • Art
- Galaxy • Art
- Untitled • Art
- Pillars • Art
- Zappa • Art
- Attractions • Art
- Waves • Art
- Perspective • Art
- Zappa • Art
- Letters from Sarajevo
- Metaballs
- Neon, a glowy vector field
2019 15
- Into 2020
- Three.js extrude SVG path
- MacOS Catalina, ruby bad interpreter error
- Remove MacOS Catalina zsh nagging
- JavaScript keyboard easter egg
- Disable Cmd + Mouse Wheel (or Ctrl + Mouse Wheel) zoom in Firefox
- Back to Firefox (Nightly)
- Running Staticman on Heroku
- Three web development bookmarklets
- Xiaomi AirDots review
- CSS only sprite animations
- Accessible range slider
- Hiding body scrollbars using CSS
- Internet Explorer 6 hacks, ten years after
- Fake audio spectrum, using perlin noise
2018 20
- One million npm downloads
- You can fix lumpy Joy-Con using hair dryer
- JSON.stringify removes undefined, how to keep it
- Flex justify content equally distanced items
- CSS and SVG input animations
- Fix for Chrome not rendering 1px borders
- Add git version tag after publishing to npm
- iOS Safari window.scrollTo / getBoundingClientRect bug
- Small Mac apps I love
- Uploading files using 'fetch' and 'FormData'
- CSS only elastic hover effect
- JavaScript animation loop
- JavaScript 'time ago' function
- First talk in React series
- React Router v4 redirect decorator
- React ratio
- 'has-tabbed aka Should I release small libraries?'
- Marvin v1.0
- Consume less, create more
- My programming story
2017 29
- Get scrollbar width in JavaScript
- Simple JavaScript API wrapper
- React Window decorators
- Firefox 57 CPU usage is insane
- Blog redesign
- Two design articles
- Animate between two react components
- Setting up Webpack, Babel and React from scratch, revisited
- Minor design refresh
- I have a trillion ideas
- My blog setup
- React Image Filter
- How to update npm using nvm
- localStorage and sessionStorage in Safari's private mode
- Get element offset in JavaScript
- Plx - React parallax component
- waifu2x super resolution image resizer
- Animate React component by calling 'setState' in 'componentDidMount'
- Introducing Marvin
- React scroll decorator
- Time Pills tracks, stems, presets, loops and midi
- Work&Co Tech Meetup Vol 6
- Nicer git log
- Being a tech lead, the thing I miss the most
- React animate height (slide up/down) component
- Couple of talks I really liked
- Mobile Chrome vh units fix
- Deploying React (Router) app to the subfolder on server
- Winter Tech Meetup Vol 5
2016 32
- Counting sheep
- Looking forward to the 2017
- Setting up Webpack, Babel and React from scratch - Part 3
- React and Redux, Webpack 2 boilerplate
- Another web development awesome list
- My two cents on the new MacBook Pro
- Setting up Travis, Jekyll and GitHub pages
- Blog redesign and new features
- Plain JavaScript animated window scroll function
- Implementing PhotoShop font sizes and tracking in CSS, points to pixels conversion
- Always use button for clickable elements
- SASS random() and circle animation
- Setting up Webpack, Babel and React from scratch - Part 2
- Setting up Webpack, Babel and React from scratch
- I washed my headphones
- Null Object Tech Meetup Vol 3
- Sektor - draw and animate SVG sectors
- Change to position fixed on iOS Safari while scrolling
- Highlight variables in Atom, Babel template strings
- Switching to Atom, this time for good
- Null Object Tech Meetup Vol 2
- HTML canvas video player
- My favorite bash oneliner
- Custom scroll bars
- Simple React slider with touch support
- What is the point of the website if it kills my laptop?
- Jekyll Read more link
- Jekyll and Gulp workflow
- 3D Rotating cubes hover effect
- Custom Jekyll pagination
- Animated login and signup forms
- Hello World