HNHacker News
TopNewBestAskShowJobs

cousin_it

10,337 karma · joined January 18, 2008

https://vladimirslepnev.me
submissionscomments
cousin_it··on M5 MacBook Pro
I read the title as "MS MacBook Pro" and prepared for a surprise.
cousin_it··on I only use Google Sheets
This reason doesn't make much sense to me. Let's say I write a non-idempotent custom function. It makes the spreadsheet behave weirdly: recalculating a cell twice leads to a different effect than recalculating it once. Does it matter whether the function runs on the server or the client? No, the spreadsheet will behave weirdly in either case, even with just one user.

Can we make a programming language that will save developers from that? Maybe, but that would be very hard and that's not what Apps Script is trying to do. It already allows non-idempotence, trusting developers to write idempotent code when they need to. So it could run on the client just fine.

cousin_it··on I only use Google Sheets
> I think that’s a consequence of the fact that multiple users can simultaneously edit a sheet.

No, it's not. Built-in functions like SUM recalculate instantly, and custom formatting rules (e.g. "color green if above zero") get applied instantly, even when there are multiple users editing a sheet. Running custom functions and triggers on the server is just a decision they made.

cousin_it··on I only use Google Sheets
I spent some time with Apps Script a few weeks ago. It has some strange design decisions:

1) Everything runs on the server, including triggers and even custom functions! This means every script call requires a roundtrip, every cell using a custom function requires a roundtrip on each change, and it feels much slower than the rest of the UI.

2) You can't put a change trigger on a cell or subset of cells, only on the whole sheet. So you have to manually check which cell the trigger happened on.

3) Reading and writing cell values is so slow (can be a second or more per read or write) that the semi-official guidance is to do all reads in a bunch, then all writes in a bunch. And it's still slow then.

4) A lot of functionality, like adding custom menus, silently doesn't work on mobile. If your client wants to use Sheets on mobile, get ready to use silly workarounds, like using checkboxes as buttons to trigger scripts and hoping the user doesn't delete them.

Overall I got the feeling that Google never tried to "self host" any functionality of core Sheets using Apps Script. If they tried, it'd be much faster and more complete.

cousin_it··on Gold hits all time high
> 02020

Funny how this "long now" date format will stop working in 99999, but the normal way of writing years as integers will keep working just fine.

cousin_it··on Bach Cello Suites (2024)
Yes! The Gavotte en Rondeau from the 3rd Partita is probably my favorite Bach piece, beating out even the cello suites. Here's a lovely performance by Kavakos: https://www.youtube.com/watch?v=UNy9fH7VaV4
cousin_it··on Bach Cello Suites (2024)
My favorite recording of the suites is by Enrico Dindo: https://www.youtube.com/watch?v=a03He2x15qk&list=PLTzGkNV1IX...
cousin_it··on YAML document from hell (2023)
How about textproto? And the proto definition gives the schema.
cousin_it··on 3D modeling with paper
Btw, there's a pretty well known origami version of the SR-71 by Toshikazu Kawasaki. One square, no cuts, the usual. I folded it as a kid from diagrams in "Origami for the Connoisseur". It's not as detailed as the papercraft version, but I think it symbolizes the real airplane very well.
cousin_it··on The elegance of movement in Silksong
I think Hollow Knight and Silksong are mostly special for their art style, the movement feel is pretty average.

Among 2D platformers in general, I think the medal for best movement feel goes to the Fancy Pants Adventure series. (You can still play it online on sites that have Flash replacements, start with the 4th game because it has everything.) But that's a deliberately easy game, you just run through the levels and have fun.

Among difficult precision platformers, I'd say the N/N+/N++ series has the best movement. (The first game is also still playable online.) Be careful, this one is like a drug, it has a huge number of levels and it's really hard to stop playing.

cousin_it··on AI surveillance should be banned while there is still time
The ads won't be for the product which will bring you maximum value. They will be for the product that will bring the advertiser maximum profit (for example, by manipulating you into buying something overpriced). The products which are really good and cheap, giving all their surplus value to you and just a little bit to the maker, will lose the bidding for the ad slot.
cousin_it··on AI surveillance should be banned while there is still time
This is a great point. Everyone who has talked with chatbots at all: please note that all contents of your past conversations with chatbots (that already exist now, and that you can't meaningfully delete!) could be used in the future to target ads to you, manipulate you financially and politically, and sell "personalized influence on you specifically" as a service to the highest bidder. Just wanted to make sure y'all understand that.

EDIT: I want to add that "training on chat logs" isn't even the issue. In fact it understates the danger. It's better to imagine things like this: when a future ad-bot or influence-bot talks to you, it will receive your past chatlogs with other bots as context, useful to know what'll work on you or not.

EDIT 2: And your chatlogs with other people I guess, if they happened on a platform that stored them and later got desperate enough to sell them. This is just getting worse and worse as I think about it.

cousin_it··on I kissed comment culture goodbye
This sounds right to me: most of the comments I've written, on most sites, haven't been useful to me socially. The people I was talking to were strangers and remained strangers. But sometimes the act of commenting helped me understand something; sometimes my comments helped other people understand something; and sometimes, very often, reading other people's comments helped me understand something. So it's not valuable for socializing, but it is valuable for other things.

That said, there's another problem with comment culture that seems worth mentioning. I seem to have gotten good at expressing thoughts that fit in a comment. That gives me a false sense of competence; but when I need to write something longer, like a blog post several pages long, the structure just completely falls apart. And writing a book I can't even imagine. It seems writing at different lengths is essentially different skills, which need to be practiced separately. And if that's the case, then as Annie Dillard says, why not just write something long to begin with? I'm actually thinking of that now.

cousin_it··on SQL needed structure
Nobody mentioned nested data in BigQuery? It's a superset of SQL where fields can be arrays of structs (so basically nested tables) and there's some extra syntax to nest/unnest things, so you can often get everything you wanted in one result set.
cousin_it··on Purposeful animations
I think if the animation "helps you understand what's changing and why", sometimes that's a sign that the change could be redesigned - moved to a different part of the screen, for example - so that it becomes clearer without needing to be animated.

For example, if pressing a "Save" button makes a "Save successful" toast appear on top of the screen, it's tempting to animate it in, so that the user notices it. But it's better to replace the button text with "Saved" and gray it out, which achieves the same goal and feels great without any animation.

cousin_it··on Bear is now source-available
I think the main contribution of Bear at first was centralizing and codifying a certain visual style: minimalistic, with a single narrow column. It's basically "the Medium layout, but indie". And the thing is, that style in itself is not copyrightable. To achieve it, you don't need to use bearblog. You just need a few tens of lines of CSS, which you can very easily write yourself.

Today there's another thing going for Bear: the discovery page. It's gradually becoming a driver of visibility, attracting more authors to Bear to get readers who are there. But I'm wary of these "flywheel" kind of things, even if they have an indie look. To me it still feels better to have my own website, and participate only in those discovery systems that support it, like Reddit or HN.

cousin_it··on Ask HN: Who wants to be hired? (September 2025)
Location: Europe

Remote: Yes

Willing to relocate: No

Technologies: Web stuff

Resume/CV: https://vladimirslepnev.me

Email: vladimir.slepnev@gmail.com

This is a long shot but yolo. I've scrubbed my corporate experience, and instead of a resume I have a list of personal projects. Drop me a line if you can vibe with that and have some fun idea to make. No AI please.

cousin_it··on The Qweremin
Yeah, I put it somewhere in the same category as unicycling, or playing a guitar with your teeth.

In fact I'd double down on the "strictly better" bit. There's an instrument that's literally strictly better than the theremin: it makes a very similar sound, looks every bit as cool and weird, but is much easier to play well. The musical saw! https://www.youtube.com/watch?v=q7cMJn0HAdE

cousin_it··on The Qweremin
I think the theremin remained a curiosity because it's both hard to control and low-dimensional. Something like the cello or saxophone is just strictly better: there are more dimensions on which you can control the sound, and at the same time controlling pitch is easier. Or to put it another way, on cello or saxophone a beginner can learn a passable C major scale much faster than on the theremin, and at the same time there are much more expressive possibilities.

Combining the theremin with the keyboard helps with pitch, but the low dimension problem remains. You might as well play a keyboard with one hand and a trackpad or joystick with the other, it's easier and the number of dimensions is the same.

cousin_it··on Avoid AI Detection and Humanize AI Content
Good example of evil technology.

Required reading: https://buttondown.com/monteiro/archive/how-to-not-build-the...

cousin_it··on My phone is an ereader now
I've wished for years that there would be an actual e-ink only laptop. Or (even better) an aftermarket e-ink screen for my current laptop, because I'm quite happy with the rest of the machine.
cousin_it··on Should the web platform adopt XSLT 3.0?
That'll work but you'll get flash of content I think. (Or layout shift, idk what's the right name for it.) The way I did it, the common elements are defined in common.js and inserted in individual pages, but the insert point is an inline script calling a function, not a div with specific id. Then the scripts run during page load and the page shows correctly right away.
cousin_it··on Should the web platform adopt XSLT 3.0?
I realize JS might not be to everyone's taste, but I think I've found the absolute minimal JS solution to reuse headers and footers: https://vladimirslepnev.me/write It's almost exactly like PHP but client side, there's no "flash of content" at all.
cousin_it··on An interactive guide to SVG paths
I wonder if there's a more intuitive way to define an elliptical arc given 2 endpoints. Dimension analysis shows we need 3 parameters. The SVG spec uses rx/ry/rotation, plus a couple booleans, but maybe there's a better parameterization without booleans? For example, it could be two coordinates of a control point - if the endpoints are A and B and the control point is C, the ellipse would be tangent to AC and BC - and an additional positive number for squishing the ellipse closer or farther from C, with values above 1 making the arc bubble outward. So it would occupy a natural spot between quadratic Bezier (with 2 parameters = 1 control point) and cubic Bezier (4 parameters = 2 control points).
cousin_it··on The Block Stacking Problem
If the blocks are thin enough, I think it's possible. Stack three blocks. Position the left edge of the stack on the edge of the table, so it's hanging downward at a slight angle, and stack enough blocks on top that it holds. Now slide the middle block 2/3 of the way out. The friction should still hold.

I think it's also possible for other shapes, all the way up to square blocks. But you need to build a bunch of nested "clamp" arrangements, instead of just one.

cousin_it··on Document.write
Yeah. At the end of the post I mention another method (document.currentScript) which allows you to do many of the same things, with no risk of messing up the parser. Realized it only after writing the post and talking a bunch of people about it :-)
cousin_it··on 'godfather of AI' reveals the only way humanity can survive superintelligent AI
Yeah. The way I think about it is there's a good outcome where we end up as pets, a bad outcome where we all die, and a very bad outcome where we end up as cattle. There's no outcome where we end up as peers - we can't be equal with something much smarter than us, that's just impossible.
cousin_it··on Should we remove XSLT from the web platform?
Maybe off topic, but I was really inspired by this article and started thinking about other ways to have "in-browser templating". And then realized that the old function document.write() is actually very convenient for this. Tried to write up the pros and cons here: https://vladimirslepnev.me/write

Amusingly, just like XSLT, document.write is in the process of being deprecated: https://developer.mozilla.org/en-US/docs/Web/API/Document/wr...

cousin_it··on Covers as a way of learning music and code
Good analogy. There's a flip side to it though. You can be a great comedian on the level of individual jokes, or short bits, but be unable to write a story. And you can be a great jazz musician when it comes to soloing, but be unable to write a song. Stan Getz was a famous example. So yeah, learning jazz by imitation and immersion (as one learns a language) is very cool: learning these hundreds of songs will most certainly teach you how to solo. But it won't teach you how to make a song. Not nearly as reliably. It needs something else, I don't know what.
cousin_it··on “Dynamic programming” is not referring to “computer programming”
My favorite dynamic programming problem is computing the percent of relatedness between two people, given a set of people and a partial graph of parenthood among them (with the assumption that any relatedness not implied by the graph is zero). If seems very confusing at first, but then you realize that if A is not a descendant of B, rel(A,B)=(rel(A,father(B))+rel(A,mother(B)))/2, which allows you to compute all relatedness values from top to bottom of the graph as fast as possible.
← PreviousPage 4 of 34Next →