One could ask: what's the UX purpose of the "active anchor" indicator on the side navigation?
One answer I can think of: if a reader is in the middle of a long section, and the heading is off the screen, it can remind them which section they're in relative to the others.
This indicates (to me, anyway) that it's not a function of which heading you've scrolled to; it's a function of which section is on screen. If you use section-screen-area or something similar to highlight the active section, fiddling with the heading positions becomes unnecessary.
If you have a tiny section at the end that can never take up the majority of the screen, then when the user is reading it, the active indicator won't really be useful anyway.
I find such active anchors incredibly distracting. It’s like something blinking at the side (or top) just because you’ve scrolled a bit.
Regarding the purported problem they solve, maybe browsers should have an option to show current-heading information, similar to how IDEs show in which function or the like you’re in within the current source file.
In my app the user could have an arbitrary number of long documents open on mobile at the same time, vertically stacked. (This UX makes sense for my app because most docs are daily journal entries.) Sticky headers are very useful here.
Now I’m just waiting for scroll-timeline or scroll-state to hit GA so I can shrink stickied headers in pure CSS.
Steve Wozniak famously would get a bunch of $2 uncut sheets, and have them perforated and bound into a tear-off book. Then, he would dramatically produce the book and tear out a sheet of them to pay for things, as a sort of gag. I think it got him investigated by the Secret Service at one point.
It is discouraged to well actually I didn't technically say that they were counterfeit although someone who is not as very smart as me may have incorrectly concluded that from my ambiguous statements.
No but the Secret Service is basically required to investigate if someone sends them a tip that they suspect they’ve seen more than four (five?) counterfeit notes at a time.
I guess this is subjective. But to me, there's a distracting amount of purple prose.
Prose has a function, which is to tap into metaphor in order to help words describe a sensory experience that's otherwise difficult for words to capture.
The article does have that kind of prose. But it also has plenty of prose for prose's sake. Prose for prose's sake – especially in journalism – is self-serving. It obfuscates the point, for the sake of prose (and ultimately, for the author's own satisfaction with himself).
Edit: that being said, I liked the article overall and I think the author did great at choosing an interesting subject and pretty well at writing about it. I certainly couldn't do better.
I'm going to provide some examples of what I'm criticizing here – it will likely double my downvotes, but I want to be specific as long as I'm dissenting. This is just honest and well-meaning criticism, and I'd appreciate similar criticism about my own writing. I originally replied to a comment that said simply "that is some fine writing" and I don't necessarily agree. There majority of it is well-done, but to me, the early prose made it difficult to read further.
> some of the things in this sprawling realm of clutter might have come from another galaxy, like the ballistic cartridge for the table saw. If you accidentally touch the blade, it senses electrical conductivity and retracts. It’s gone so fast that it can’t cut you. It’s all part of the magic of this place of transformations.
This is just a SawStop, but the author describes it as evidence of the otherworldliness of the subject. Why? There's a bill to make this mandatory in table saws. It's not otherworldly.
> The room lit up to an intensity such that Sam was cast as a silhouetted troupe of antic spiders dancing on the walls and floor and ceiling, sparks flying around him like a cracked nest of hornets and in his hands a burning blue hole at the center of things.
The author is describing aspects of welding with mixed arthropod metaphors. To me, it comes off as pretentious more than descriptive.
On the other hand, I like how this paragraph starts out:
> Sam is afraid of some of his machines in the way that the lion tamer is afraid of his cats. You are confident. You know your skills. You have been doing this a long time. But you know that wild animals are always wild animals, and a false gesture, perhaps an unexpected noise, could set in motion events that could not be stopped.
This metaphor is effective to me and is descriptive in the way the author intends. Maybe gets unnecessary towards the end. But right afterwards:
> Sam is harnessing powers that few of us ever encounter in our lives. He’s directing them in order to reach down inside of this deck of tarot cards and transform the very atomic nature of its being. He’s doing what sorcerers do: magic.
What? This isn't even referring to a particular skill or act. Just the use of shop machines. I don't doubt that Sam is exceptionally skilled, but using "magic" to "transform the very atomic nature" of the metal – especially when we're not talking about a particular act which sets him apart – is a strain for my imagination.
In my opinion, in a journalistic writing, this kind of fluff distracts from the subject and makes it difficult to read and/or take seriously. That's just my opinion – but I was replying to an opinion that it's "fine writing." If there's room for one, there's room for the other.
> I guess this is subjective. But to me, there's a distracting amount of purple prose.
Yes, there is. Most of what he's describing is ordinary metalworking. He gets rather worked up about a belt sander. Which is strange, because the author has written several good books about survival and air crashes and has spoken at Los Alamos.[1]
He can't be that naive about basic industrial technology.
Or maybe he can be. It's possible, in America today, to grow up without ever using a tool more complex than a screwdriver. This is a problem.
If I'm reading it correctly, the knifemaker is the brother of the author's son-in-law. So this is kind of a family thing taking place in public; one family member creates a work of art that is excessive for its intended use, and the other family member responds with a work of art that is excessive for its intended use.
In both cases, the person is doing it because they can, not because they should. I'm not bothered at all; if this was supposed to be a news story it may be a different case.
Right there with you, and I’m surprised I had to read this far down the thread to find somebody pointing it out. My high school English teacher, who was of the old school, would have written in the margin, “elves of fire? Give me a break!”
I found "Java for Everything" really interesting, so thanks for posting it. It also seems it's been featured on HN many times[1], and the progression of comments (from 10 years ago to 4 years ago, to 1 year ago where nobody commented) feel like an archaeological strata that shows how things change and how they stay the same.
FWIW, while I'm not sure I agree that JVM is the right solution for every problem, I agree with much of the author's sentiment from that time, which is: programs are written much less frequently than they are run, so surely developer keystrokes are laughably unimportant compared to runtime performance and other user-facing concerns.
> programs are written much less frequently than they are run, so surely developer keystrokes are laughably unimportant compared to runtime performance and other user-facing concerns.
Taking this to its logical conclusion all programs should be written in assembly.
The reality is that there's a tradeoff: Programmer time vs performance, and which parts of performance matter. I've worked using anything with performance from assembly to shell scripts (including C, C++ and Java). It is all tradeoffs. Do users want more features, or more speed? Are we running at a scale or situation where ultimate usage of hardware matters, or not?
Saying we should do ultimate amounts of investment in performance when there's three users and one programmer doesn't make sense. They'd typically rather have more features and adequate performance.
I think the answer is pretty clearly "no, but" (or "yes, if"). Of course it depends on what you're doing – if you're writing shell scripts, it might make sense to keep them at 80 characters in case you have to go down to the data center and edit them from a terminal because your network card failed. But for most code, there's no particular limit that makes sense (in my opinion).
I'm somewhat against code formatting "rules" in general. If it's about readability (/aesthetics), different code will have different properties that make it readable or unreadable. Sometimes, forcing a line break makes code less readable. In other situations, it can have the opposite effect. IMHO, it's a local decision – and the human that's working on that code is better at deciding what's readable than a linter is.
I agree with you that writing readable and aesthetically pleasing code is more art than science (that can be expressed with deterministic rules), I still find some of the rules and rule-checkers beneficial (though I dislike strict formatters).
As such, 80 is as good a limit as any, and makes you think carefully about avoiding deep nesting of blocks, which is usually a good idea anyway. It also allows putting many windows side-by-side on a modern big 4k screen.
I have to push back here a little bit. It really depends.
I mainly use Scala, and I think the majority of Scala code would be far less readable if forced to 80 columns, than if it were a larger number (or simply unconstrained).
My WFH monitor is an Apple Thunderbolt Display, which is woefully out-of-date now. Even on this display, and even though I use a much larger font than most people (16pt Hasklig), and even with a generous project/navigation/etc sidebar, I still get 180 characters. The display I have in the office is even wider, but I can't measure it right now because I'm not there.
My point is, displays are now wide enough where arbitrary line limits don't make sense. Nobody is going to cram stuff into one line unnecessarily, so just leave it up to the local decision about what makes the code most readable. If for some reason a 240-character line is more readable in some situation, then we should talk about that situation rather than why they didn't break the lines.
Unfortunately, while the monitor on my desk has gotten bigger, I've got this screen that I hold in my hand that's smaller than any desk monitor, and it's in portrait, not landscape mode, so while I don't write code on it, I do read code on it, so now, ideally, we'd accommodate that use case as well.
Method chaining, and a lot of it too. I honestly think it's a code smell, but some people love to do a dozen transformations in one line. You then need to make the line twice as long with .taps to debug it.
What I love the most about this, is that even though the author only intended (in the near-term, anyway) to use this once, they still A) took care to use some degree of engineering practice, and B) open-sourced the result.
I really love seeing an example of DTP-style typesetting using Java. It's one of those problems that seems really easy, but then you look into it a little bit and decide it's not really worth the effort (and there aren't many practical, independent examples of it in practice). This person not only took the effort – to make something more personally pleasing than TeX – but also took the time to organize their code and share it, in order to decrease the scarcity of such examples.
An interesting article, but I have to point out a more (in my opinion) entertaining take. As the pandemic dragged on and began to seem interminable, Netflix released a somewhat under-the-radar series called "History of Swear Words". Each episode has Nicolas Cage hosting a documentary of a swear word in exactly the over-the-top fashion you'd expect. The word covered by the article is episode 1.
This series gave me some much-needed laughs at the time (YMMV).
A really interesting read. From the discontinuation notice[1] that the article links to:
> Perhaps it comes down to this: indirectly, our own personal benefit for writing PlantStudio software and our other projects includes all the other wonderful free stuff on the internet, and it would cost us trillions of dollars if we had to pay for the creation of all that diversity ourselves. We don't mind using guilt to effect change :-) but this time, with products under free license, it will be guilt to go do something positive in the world to pass on the gift, rather than a one-for-one exchange with us.
That's a wonderful sentiment from the humans who put a lot of effort into building this software (and eventually decided to give it away).