I don't get the physical reactions that the author describes, but when I'm in the zone, I literally stop seeing or being aware of the screen, keyboard, etc. and start "seeing" groups of geometric shapes that interact with each other in my mind.
The nature of that doesn't change according to the language I happen to be using, but the language choice can absolutely affect how easy it is to get in the zone. Some languages are better suited to certain kinds of tasks than others, and if I'm using one that isn't well-suited then entering the zone is simply impossible. Instead, I just feel like I'm fighting the language.
It’s a more abstract representation than code. Not as fixed, but helps greatly with designing the next steps.
I mean, I know I'm writing code, but I'm not consciously seeing, analyzing, formulating, or typing in code.
Edited to add: On reflection, the geometric vision does actually help me sometimes. When there's something wrong with the code I've written (be it a syntax or logical error), then the shapes react in a way that I'll call "dissonant". I pay attention to that signal and more consciously analyze what I've just done, to find the error.
Especially when I have to familiarize with code written by someone else, I usually start by "cleaning" it - small refactorings such as splitting overlong functions and simplifying expressions, that are trivial to prove as correct even without a deep knowledge of the code purpose.
Only when the code looks sufficiently clean and familiar, I start adding the requested new features
I sometimes wonder if this is the result of experience/education (I'm not a compsci major) or if it's just a naturally different way to think about systems.
If you're interested in the multiplayer cursors + cursor chat, my philosophy is that every web page deserves to be a place, and pages should feel busy if lots of people are there
plus you can grab the code. here's the write-up:
The country flags make it much more clear. Still an annoyance, but now I get it, and I am more than amused than annoyed now.
Anyways, it doesn't work for me on Firefox 128.11.0esr, Debian 11 (yes, outdated, I know, but still in LTS), I had to use Chrome/ium for the cursors to show.
Might I suggest quickly fading the cursors out entirely as soon as the user starts to scroll, maybe? Then you could have the effect at the start, but be less distracting while reading.
Or just a floating counter in the corner to say how many people are currently viewing it, maybe with the two most popular flags and your own flag and a fourth "other". Because it's one thing to know it's busy (cool, it's popular, I'm participating in something!), but it's another thing to feel busy, distracted, claustrophobic.
I assume you want to prioritize people reading your actual content over the feeling of busyness.
Have you seen cases where people are using it in a more familiar manner? Like, they've moved on from the newness but there's still a bunch of people? Feels like being in a subway station where everyone is bumping into each other right now instead of just sharing the space as needed.
my main enjoyment has been to hang out on my own blog (which it generally pretty quiet) and say hi to people as they drop by. I've had a few pleasant interactions that way, and a couple people said hi in Unoffice Hours (link in the left column) or on the socials after
but generally I feel like "ambient togetherness" is just the beginning of something, and it needs to be paired with something more persistent to be useful (like a discord only open to subscribers, that kind of thing), and I haven't gotten around to building that side of it yet.
edit: it could also have just been me typing with more frustration due to XCode :p
I tried it again last year or so though, trying out the newer tools like SwiftUI and its live preview, and didn't enjoy it; the stability and performance was just all over the place.
Edit (before I will not be able to do so): thank you for everyone's replies (in advance, too)!
My favorite is still Clojure by miles ahead, besides it being a functional language, its data-oriented approach to writing programs is completely different from anything else I've ever seen. I currently work with Elixir, and there isn't a day that goes by without me thinking "gosh, this would be so much simpler to solve in Clojure".
My colleagues are so sick of hearing this.
For what it's worth, I actually really enjoyed using Haskell. It did force me to think differently about problems and I feel that this has carried over to writing cleaner code in non-functional languages like Go/Java. I liked it so much so that I wrote a book about writing functional code in Go along with a supporting OSS library.
Would I recommend it for really large-scale applications? Maybe not, because you'd want a mature ecosystem with a lot of support, and the secondary issue is that you want to have a large candidate pool when hiring people.
Small disclaimer though, the last time I used Haskell professionally was in 2018-2019, so it's not 'recent' experience.
Typescript on the other hand feels like being confined to a small room. There's not much flexibility. Not much is open to me. It's very regimented and I can sense better solutions, but they're off limits to me either because of the required type gymnastics or the language primitives.
(btw you can hit / to enter cursor chat, it's fun if a bit distracting)
Languages with nice type systems, like Standard ML or Ada, have the feel of Buckminster Fuller's tensegrity constructs: rigid yet flexible.
I think this synesthesia idea bumps into the concepts of comfort and understanding. In that I feel it also extends to the environment im in and the tools im using. Like if I switch to a different type of keyboard or the monitors are positioned weirdly; or especially if im not using a certain IDE or developing without a language server.
Being immersed in software development, and the different ways we do it, can be a visceral and emotional experience.
I always type the closing bracket right after opening one then go back one character to start typing inside. Same with parentheses and quotes. It's a hassle when the IDE does it for me because then I have to delete one of them.
I can barely do Swift for ex. where I come from JS/PHP/Python but I was able to get by working on an iPhone/watch app
Not vibe-coding either, just watching YouTube/reading tutorials
Java: "stiff", awkward, verbose. Gets the job done but ugh.
C#: "soft", flexible, has possibilities
Although to be fair I programming in Java a long time ago, and haven't done much with C#. C# I see as a "corporate Python", vs Java I see as a language designed by committee and not for use by humans.
I've heard Java is way, way better now.
The "brotha, eugh!" feeling comes from the enterprise frameworks, which tangle all that up in a mess of factories, DI autowiring, and inversion of control. COBOL may have been a lot to type, but its execution model was straightforward, like a BASIC program. Java EE's execution model is NOT straightforward. And it's no wonder why so many attempts to "modernize" old COBOL code using Java EE fail.
In my case it helps that I've been poking at Java since the very beginning, having discovered a bug in the 1.0.1 runtime, and compared to contemporary C++, it was a delight except for the performance problems.
C# doesn't feel too different from Java to me, aside from being more "Microsofty".
But then I got bored with it. I like meticulousness sometimes, but it started to feel like Java was just excessive and impractical.
C# is an evolution of Java, and unlike Java didn't have a 8-year pause or however long it was before they finally started moving again (the period between Java 6 and 7 I think).
study_n += 1