Here is what I know about popovers. Most of popovers are avoidable Or, to put it strongly, popover is the most stupid thing you can do ( in Russian, use browser translation ). Really, putting content into a popover doesn’t require you to think how to put it on the screen. So, with some effort, most of the content could either become their own pages or put into existing pages. I have to…
I have an nvim theme called Boring Tomorrow that highlights different things in and around the code than most of the themes. I have a post about it. I changed the theme recently to use terminal colors instead of colors set in neovim, splitting things I want to highlight from the the colors I like. Incidentally, this brings dark mode switch a problem of the terminal. TL;DR: Terminals support hex…
When I try to pitch my budget app people always say that they have some kind of analytics in their bank app. I then tell that banks and their apps are not on the side of the clients. This article is to explain what I mean by that. Your bank and you have different goals Here is how I imagine a normal person relations with money: you are in charge of your budget, so you need to be in control of it.…
This post is a rationalisation of “I don’t like cards”. I say that in most cases where cards are used, they don’t need to be used. Specifically, they take space, they let you skip gestalt principles and be lazy and undisciplined, and being so easy to implement they are often used by developers. To multiply the effect, you can put a card into a card, and it seems so hard not…
Y Combinator published their latest request for startups , and one area they’d want to see startups from is called AI for Personal Finance. I make a personal finance tool . This post is a brainstorm where AI could enhance it, and the conclusion is it’s better if AI is involved on a higher level. What Personal finance tools as I understand them should be very different for people in…
Gwern wrote a post about his ordinary life improvements in 2018. I feel like now is a good time to write a follow-up. Obviously, we’re different people who live in different places and have different habits. What’s better, people in comments live in other places, and have other habits and hobbies and I hope would bring 10x of what I can think about. So, for me, compared to 2018,…
I noticed the other day that a popular ruby library for all things money, Money , formats Serbian Dinar incorrectly. I spent several evenings to learn and describe what the correct formatting would be and how to achieve that. The answer requires croudsourcing, which you probably figured already. TL;DR: Unicode categorised it all; ECMA 402 contains lots of wisdom; if you make a money formatting…
Hello, Internet. I thought about cross-site requests and realised we have both CSRF protection and CORS and it doesn’t make sense from the first glance. It does generally, but I need a thousand words to make it so. CSRF stands for Cross-Site Request Forgery. It was rather popular in the earlier internet but now it’s almost a non-issue thanks to standard prevention mechanisms built into…
CSRF stands for Cross-Site Request Forgery. It was rather popular in the earlier internet but now it’s almost a non-issue thanks to standard prevention mechanisms built into most of popular web frameworks. So I knew about it but never thought too much and assumed it just works. It does, but understanding why it does required me to R more than one FM. According to OWASP , A Cross-Site Request…
UPD 25.04.2026: Turns out this blow is about a widely known phenomenon, it’s just called Supernormal Stimulus and I mistranslated it. Well, happens. There’s a concept I first saw (in Russian) in relation to Anime and birds, which I’ve ended up using a lot in other contexts. The concept is that you can abuse pattern recognition of receivers of all sorts by giving them patterns you…
TL;DR I made a tiny alfred workflow that gets the word definition from macOS dictionary (with extra steps), converts it to logseq flashcard. This allows me to practice words I met while reading, on the phone too, offline too. repo . alfred workflow . twitter shitposting as I made this . Introduction I learn languages. At the time of writing, Serbian. This is not a very popular language, so I…
TL;DR gist . patch . Introduction Firefox reader mode is a great idea. Most of the websites, including this one, are not as pleasant to read as gwern.net , and it’s fine. Writing a blog post doesn’t have to be a design exercise. In reader mode, Firefox takes the content of the page and renders it in a different layout, supposedly better for reading. You can set up some of the things…
Introduction Code highlighting is usually treated as highlighting as many things as possible. For example: This is darkula-light, but colorschemes are all the same for the sake of the argument. There is A LOT happening on the image, everything is of the different color and as a result nothing is really highlighted. Well, the apple logo draws the attention the most, is that the expected result?…
Introduction Every SPA has its library of input groups. And when such an extensive work as wrapping every input type into a label and adding consistent styles between them is done, developers are tempted to handle forms by themselves. It doesn’t look too hard but turns into Greenspun’s tenth rule all the time. Any sufficiently complicated C or Fortran program contains an ad-hoc,…
Hi, I’m Sergei. Sometimes I don’t fit into 280 symbols. Very rarely sometimes. I make Within Means on weekends. I also made dict-to-flashcard . Sometimes I change jobs. If that’s the case, here is my CV Schedule a meeting: cal.com/smagin Me on the internet: s-mage@github @smagin@mastodon.online s_mage@twitter