2,977 Matching Annotations
  1. Dec 2022
    1. Everywhere you could use var you can now use let or const

      No, not everywhere.

      You start replacing var with let and things can be observed to break (e.g. multiple declarations, no declaration before use...)

    1. I’m rather surprised that a separate issue did not come up. That is, many schools make students sign something saying that any code they create as a student has the copyright automatically assigned to the school.

      This is not nearly as common as the highlighted comments suggest—at least not for undergrads at public universities in the US. It is a thing, though, with grad students (for obvious reasons).

    1. Lacking a better name, I will just call them “Wirth-the-RISC”

      I call it "RISC-W" (esp. since Wirth is not actually pronounced like "worth", which is the backbone of this attempted pun).

      Prior art: https://en.wikipedia.org/wiki/ALGOL_W

    1. On the onehand we have our technical toolbox full but on theother, we cannot use these tools effectively becausea proper infrastructure is absent.
    1. Multiplayer stategy games.

      Today, you tend to hear "web app" as a term used e.g. to contrast SPAs from classic, form-based apps. But the term was already being used then, when (barring the use of plugins, which weren't really "of" the Web) only the form-based ones were viable because SPAs and similar Web-native RIAs weren't yet an option.

      Should we refer to those (the classic Web apps) as "turn-based apps" to emphasize the paradigm in play (i.e. REST)?

    2. Hickson elaborates in his blog
    1. Microsoft totally fucked up when they took aim at Netscape. It wasn’t Netscape that was a threat to Windows as an application platform, it was the web itself.

      I dunno about this assessment...

      They knew, and they tried.

      They just eventually stopped trying, because they beat Netscape and Sun.

    2. Web apps are easier to deploy.

      Well...

      Depends on how you measure it.

    3. its overall look-and-feel is far inferior to that of a real desktop mail client

      From a 2022 perspective, things are largely thought of as the opposite. People including developers and users alike on the whole seem to prefer the free-form canvas that enables non-traditional (otherwise referred to as "non-native") UIs—even if developers hate the front-end tech stack.

      Not saying I share the sentiment—just observing that the folks who prefer colorful, do-what-you-want UIs like those found among mobile and Web apps tend to outnumber the SerenityOS fans.

    4. This isn’t about being “Mac-like” — it applies equally to Windows and open source desktop platforms.

      Yeah, but they're basically cribbing the paradigm introduced by the Lisa and popularized by the Mac in 1984. (At least that used to be the case—before Chrome introduced the hamburger menu and everyone else followed suit, Microsoft's attempt to change things up with the ribbon not withstanding.)

    5. They don’t have menu bars or keyboard shortcuts.

      Two things which typical users have been shown not to care about. (I understood the shortcuts thing around this time. It took me, like, 5–10 years after the date that this post was published to realize the thing about menu bars, too. And I'm not even a Mac user.)

    1. If I had to guess, I'd assume that this was done here to save some keystrokes by not having to pass around all arguments again.

      One of the most obnoxious motivators for turning out code that ends up sucking.

      When trying to save keystrokes, prefer keyboard macros over code macros that get checked in as source code.

  2. Nov 2022
    1. But. I somehow changed-ish laptop, and you know the problem where you change laptop and suddenly you lose access to a few things? Yes. That's one of my problems. This site was using nini to statically generate pages and interconnect them with backlinks, and it's great. But I figured I'll keep it to simple html pages that don't need any compilation for now, so that when I change this laptop, I'll still be able to publish without having to install anything.
    1. I encounter a lot more smug static weenies than smug dynamic weenies, so I defend dynamic typing out of spite. There have been a few cases where I was surrounded by SDWs and I immediately flipped around to being pro-static. The industry is moving towards static typing and I like being weird and contrarian.

      See also:

      In the Smalltalk community, I always had the reputation as the guy who was trying to make Smalltalk more static so it was more applicable for industrial applications. In the Microsoft environment, which is a very static world, you know, I go around pushing people to make everything more dynamic.

      — Allen Wirfs-Brock, in an interview with Jon Udell https://hypothes.is/a/YH0Mwp0yEeu-Ybt6B3i1Ew

    1. The creators of Scrivener have taken a process that formerly had to be done manually by writers, and built a system of cues that make it easy and natural.
    1. endless stories of people exporting Euro VI emissions compliant cars to Africa that then detonate on the local fuel

      can't parse

    1. They demand less catching up time, less file-switching and ultimately give you the very bit of information you’re looking for anyway when dealing with them.

      déformation professionnelle

    2. unused classes

      again: unmatched class selectors

      additionally, it's not the fact that they are unmatched (or that they are class selectors specifically) that it's a problem—it's the fact that there are a lot of them

      the entire choice of focusing on classes and class selectors here is basically a red herring

    3. Harder to know what class does

      where "does" here means "how the author recommends it should be styled", which is not actually the purpose of the class attribute

    4. From a file size standpoint, you shouldn’t worry about repeated class names in the HTML. That’s what Gzip is for.

      you suddenly find it worthwhile to acknowledge the existence of gzip?

      what happened? https://hypothes.is/a/Bg1yFm4vEe2_WDuDjmBVaA

    5. do what’s best for the industry, the projects, and the users

      "in that order", apparently

    6. keeping class names not too specific: instead of .margin-bottom-8, you can use a more abstract name like .margin-bottom-xxs

      just torpedoed your entire argument, dude

    7. reuse

      "reuse" is not the point of classes

      semantics are the point

    8. thinking you should be able to understand an entire project only by reading the source code is pure fantasy

      lol wut

      vacillating wildly here

    9. unused classes

      class selectors are not classes

      "unused" or "unmatched class selectors" is what they're really talking about

    10. .color-red

      you mean color-red; there is no .color-red class on the div

    11. Unnecessarily verbose, heavier file size

      contradicted later

    12. “Favor composition over inheritance”. This piece of wisdom from Design Patterns, one of the most influential software engineering books, is the foundation of utility-first CSS. It also shares many principles with functional programming: immutability, composability, predictability, and avoidance of side-effects. The goal behind all those fancy terms is to write code that’s easier to maintain and to scale.

      déformation professionnelle

    1. As with many front-end techniques, the approach gets a lot of criticism for being different from what people are used to.

      Example of focusing on your weakest critics and choosing not to confront the strong arguments against your position.

    1. I want to add software to offer to inline HN links in this format when people include links to past threads in their comments.

      You could pretty easily do this with a bookmarklet. (Call it "citehn", pronounced "citation".)

    1. logic that depends upon fixed format/fixed position fields

      So don't do that.

      The class attribute had been in HTML for years by the time this post was written—and (contrary to any belief otherwise) was meant for this purpose, and not something contributed by the CSS group for use with CSS selectors.

    2. it is principally a display technology

      It's not. It's a document markup language.

      Most Web developers, however—going back to 1999 and before—certainly treat it like it's a display technology.

    1. This github "community of people" is apparently more interested in pontificating about pointless differences in tools and wanking off to tool complexity than they are in actually getting shit done.
    1. My biggest gripe about the EPUB specs is that they didn't require the container format be compatible for use with legacy Web browsers. Nuts!

    1. The idea that a billion of us can keep dumping fresh content into our account for free and that none of this content seems to be ever lost, is honestly quite bizarre even if we take it for granted.

      You can change the framing and gain new insights.

      In the mastodon.technology shutdown post linked, the author describes a situation where the workload exceeds the capacity of an ordinary person, even a motivated one. (There's an argument to be made that this makes for someone who isn't merely an ordinary person—but that strengthens the point I'm about to make, instead of weakening it.)

      How do we fix this problem? In other words, how do we ensure that the workload of an "instance" remains within the realm of feasibility for an ordinary person?

      Answer: making it the responsibility of each person. A single volunteer admin should not be responsible for hundreds, thousands, or more other people. Getting each person to shoulder their own personal load is far more tractable.

      What's absent, currently, is the means for each person to do so on their own in a way that we can realistically expect. That can be worked on. Software like Mastodon can be improved upon—necessarily drastically so—and infrastructure configuration can be improved to, to the point that it doesn't even feel like infrastructure configuration.

      For people with very large spheres of influence, like Aral Balkan who recently disclosed that he's spending ~600 EUR per year for his instance, they can seek help, mining from the resources that are at their disposal that are a consequence of their wide reach. For ordinary people with up to a few hundred followers, they won't need to be exposed to this.

      As for the sentiment behind the remarks about "dumping fresh content into our account for free", recognize that the fresh content has value, and there are ways to subsidize the resource use by parties with an interest in being able to capture some of that value for themselves. When you post a widely shared piece to your blog, then Google for example benefits from this, whether you're using Google Ads or not. It's the mere fact that there's something on the Web worth looking at that makes this beneficial.

    1. This made me realize how little joy I’ve been getting from being an admin. How I’ve come to resent the work I have volunteered to do.
    1. People should be able to teach their computers the meaning behind their data
    2. above
    3. Notably, this process can’t avoid the need to teach the computer how to interpret meaning from freeform data

      Although, notably, that process, if very involved, can be captured in a separate document.

    4. documents are useful for all kinds of tasks

      The big takeaway—in a world increasingly obsessed with apps (to the point that even things that originally were and still should be documents end up being conceptualized as apps—and all the downsides that comes with re mental guardrails).

    5. People aren’t encouraged to think about little further changes they might want to make, or naturally make tweaks as they go; instead, they just adapt their behavior to whatever the app encourages
    6. gradual enrichment

      See also: gradual typing

    1. That's a whole different topic. Mastodon isn't built for single-user instances.

      That's the entire topic, my guy!

      "We should be optimising Mastodon so it incentivises more serve[r]s with fewer people." is the very premise of the conversation!

      Mastodon "push[ing] the direction of the protocol or make it harder to cultivate an ecosystem of smaller ones."? "it needs to be easier to start smaller ones"? Are you just not paying attention to the conversations you're responding to?

      Reminds me of:

      What fascinated me was that, with every single issue we discussed, we went around in a similar circle — and Kurt didn’t seem to see any problem with this, just so long as the number of 2SAT clauses that he had to resolve to get a contradiction was large enough.

      https://scottaaronson.blog/?p=232

    1. @stephen@social.stephenfry.com

      This is where it starts getting ridiculous.

      First, rather than social.stephenfry.com, stephenfry.com should be sufficient. Look at email. I can set my MX records to point wherever I want. I don't actually have to have a server with A records to field the email traffic.

      Secondly, the @stephen part is superfluous, too! This is something where Mastodon et al had years (decades!) of hindsight to take care of this, and they still messed it up.

    1. layers of wat are essentially hacks to build something resembling a UI toolkit on top of a document markup language

      So make your application document-driven (i.e. actually RESTful).

      It's interesting that we have Web forms and that we call them that and yet very few people seem to have grokked the significance of the term and connected it to, you know, actual forms—that you fill out on paper and hand over to someone to process, etc. The "application" lies in that latter part—the process; it is not the visual representation of any on-screen controls. So start with something like that, and then build a specialized user agent for it if you can (and if you want to). If you find that you can't? No big deal! It's not what the Web was meant for.

    2. There is no good way to develop a UI in HTML/CSS/JS

      So don't.

    1. don’t use the Pinboard-developed bookmarklet for bookmarking because it often breaks and Cegłowski refuses to fix it (blaming browsers and websites instead)

      I'm going to guess this is CSP-related breakage and guess further that the bookmarklet does not really do any work except inject script element that tries to load a Pinboard-hosted script.

      There are ways around this, but no one seems that interested...

    1. The file tiddlylisp.py is the Lisp interpreter whose design and code we’ll work through later in the essay. On Linux and Mac you can start the tiddlylisp interpreter by typing python tiddlylisp.py from the command line.

      What a shame that they went with Python, rather than something that can already run directly in everyone's reader app.

    1. I've often wondered: why can't web server apps be installed with the same ease-of-use as desktop apps?

      I've mused about how installing a server-backed Web app (or server-side support for a given protocol) might be made as simple as saving a copy of a Word document or a copy of a PDF that someone has emailed you.

      Consider MediaGoblin, which is the original context where I wrote this down.

      The thing is is that MediaGoblin is written in Python; if you want to "deploy" MediaGoblin, you must deploy a Python app. I don't like that. Imagine instead of you "deployed" an app by installing its set of manuals

      The idea is that you have a document that describes the MediaGoblin application—the software manual. Now imagine that manual were sufficiently detailed so that a person reading it were able to independently re-implement it. If you actually wanted someone to re-implement it, you could do worse than to give them a copy, with the expectation that they'd study it and it would be sufficient for them to learn how to go about making a MediaGoblin clone.

      Suppose you didn't give it to a person, though, but you wanted to "teach" your server how to act like a MediaGoblin instance. Shouldn't we aim to make it as straightforward as being able to give your server a copy of the manual?

      Prior art: - Rob Pike's talk about the Go compiler, and the way he references the ability to ingest PDFs of vendors' manuals and grow a new backend for the compiler - The VPRI/STEPS approach to a TCP stack - Literate programming

    1. there is no single perfect universal programming language. Until I came to that point, I wasted a lot of time thinking that GW-BASIC QBASIC QB 4.5 VB4 Delphi Java C++ C# 1.0 was the only language I would ever need
    1. Aral Balkan's personal (single-user) Mastodon instance costs him ~50 EUR per month to run.

    1. This was roughly the same time the idea of Sponsorware was brought to my attention (thanks Caleb Porzio!). This is where I started offering custom domains (and beta features) to sponsors of the project (grandfathering people with existing custom domains, of course).

      I've mentioned before (most recently, I think, in a response to the Postcard creator) that it feels a little scummy to demand people pay to be able to use custom domains. It's like holding someone hostage and demanding ransom for their release.

      I've thought about alternatives. I won't mention past ones here. Instead I'll sketch out a new one.

      1. Sell support billed at a realistic rate, considering the costs (e.g. a flat price of something like $125 for up to ~2 hours), where buyer pays upfront

      2. Maybe throw in a domain for "free" (i.e. included), so if the buyer isn't already bringing their own, they'll have one by the end

      3. Any unused balance (e.g. completion of support task only took half an hour) gets credited to the account

      4. Set up a wiki (a real wiki—not a GitHub-style anti-wiki) for the documentation; point out that it's in folks' best interests to help each other out and keep it up to date and even record their own notes for their own setup here if they want to avoid paying the support fee

      The idea is to charge a high enough upfront fee for something that may not immediately consume up to its budget cap—such that you can, over time, recover own investment while making it feel like the buyer is getting all the value out of their payment.

    2. The solution I settled on (which I still use to this day) is quick and elegant; as well as super accurate. All the blogs start out as non-discoverable by search engines, and do not show up on the Bear feed until they have been vetted by yours truly. I then set up a Tinder-esque review screen where I can easily approve or block a new blog (as well as blacklist that email address).
    1. It seems to me that they hide behind progressive social stances and say "see we're nice guys!" when they're just as rude and indignant than any other group.

      Pretty bang-on.

    1. Android applications written in Java are able to invoke SQLite (through an adaptor). Maybe it would have been more convenient for Android if SQLite had been coded in Java as that would make the interface simpler. However, on iPhone applications are coded in Objective-C or Swift, neither of which have the ability to call libraries written in Java.

      This particular example is pretty sleight-of-handy; there's a double standard being applied here.

    1. I took all my contact info down, but the emails and tweets kept coming steadily. Some people would keep contacting me regularly despite me never replying.

      And here's why https://guzey.com/follow-up/.

      There are lots of people who think the way that Alexey Guzey does: "A story: when I wanted to meet with a really busy friend of mine in SF, I first sent him 2 twitter DMs, then 2 emails, and then 3 text messages, letting him know that I will keep sending one text a day, until an email from him finally landed in my inbox letting me know that he would love to get lunch."

      There are also lots of people who think they way that Heather Arthur does: that simply not replying is an adequate signal.

      I find both to be contemptible.

    1. dockerized and easy to deploy

      contradictory sequence of words

      Use of Docker makes for immediate negation of "easy". At best you can say that it's easier than some other, more difficult thing, but it's not "easy". If you do, then you've got your thumb on the scale, you're doing some Hollywood-style accounting, etc.

    2. This is the easiest way to create a Hypothesis client in which to try quick experiments

      It's not. The Hypothesis sidebar loaded from a bookmarklet is a Hypothesis client, ergo it is possible to create a hypothesis client that lives in a single file (say client.html with all scripts inlined) that can be loaded directly from the disk (or dumped onto a host that offer simple, static Web space), and even opened up in a text editor to be read/edited by hand.

    1. non-inline documentation inevitably gets stale.

      That's a good reason to make sure it's verified by the compiler (or, if you prefer, that the project source code is validated against the documentation)—not dissimilar from the way compilers' typecheckers already work.

    2. What if we had a top-down approach? Provide an overview and drill into the interesting bits.
    3. Jump to definition and find references are table stakes language service features at this point.

      On the other hand, those features may have actually sent us back.

      See https://news.ycombinator.com/item?id=11381716:

      if I can't make sense of it and be productive in it with just vim, grep, and find, your code is too complex

      I'd be willing to relax the requirements (or should that be "tighten" in this context?) and say that even grep and find should not be necessary, either. That's one of the worst parts about working with C or Go codebases—having to resort to each just to figure out where stuff lives. The circumstances that lead to "A lot of engineering is looking for things" are something that we should be trying to rectify, not accommodate.

    4. A lot of engineering is looking for things.
    5. Why does this line of code exist?

      One of the most important questions (if not the most important question) to keep in mind when writing code comments. This is what you should be seeking to answer.

  3. typedoc.org typedoc.org
    1. This project gets it backwards.

      We should not be writing in compiled languages with inline type annotations a la TypeScript and generating documentation from that (the same thing javadoc did 20+ years ago). We should be writing ordinary docs and working with tools that can ingest those, extract the information contained there, and validate the codebase+docs combo for coherence.

    1. You need to be in the triplescripts.org group to see this annotation.

      Membership is semi-private, but only as a consequence of current limitations of the Hypothes.is service.

      A copy of this annotation has been published in the Hypothes.is Public stream, which explains in detail that anyone is permitted to join.

    1. Even given that, Robert and I were taunted with the fact that W3's use in CERN itself was very low.

      Not so dissimilar to today (minus the taunting). Despite the ubiquity of what is loosely called the Web platform (i.e. the world accessible through ubiquitous, roughly W3C-/WHATWG-compliant browsers), the Web fundamentals that TBL originally wrote about in the early 90s has still yet to be embraced.

    1. In this case, though pedantically and technically correct, /resource and /resource/ confusingly resolve to different pieces of content.

      The error lies in the decision to alias /resource access to the contents of /resource.html. That's something that should not happen. It's as straightforward as that.

    1. Rust lets us explicitly state our desires to the compiler

      This is the key. It follows that the same results, then, could be seen if we devised a way to communicate the same desires to the machine when we're dealing with JS. (My preferred thought experiment: imagine a docs/ directory in the repo where these sorts of things are documented for the benefit of other programmers—alongside any other rationale that you would naturally hope to communicate as well—and that the computer itself were made to be able to read and act upon the very same documentation to guide its behavior.) See http://cr.yp.to/qhasm/literature.html

    1. because the 2010s social networks did everything to kill external links, and turn the focus on the 'personalities' on the platform

      I have referred to this in the past as an emphasis on actor-based indexing, versus topic-based.

    1. I have a suspicion that you're not putting the source for the specific versions of glibc and Linux you used into every one of your projects.

      Why are people so seduced by this dumb argument—to the point that they almost seem proud of it?

      First, it's presumptuous. Who says we're even using glibc instead of some other libc—which I just might choose to include in the projects I work on? Who says we're even using Linux, for that matter?

      Secondly, even if we were, let's assume that we're not, and then see if that teaches us anything about the overall line of reasoning. The original comment was about NPM. NPM is used a fair bit for not just backend stuff but for managing packages used in the browser, too. Let's assume, for simplicity, that our program is entirely a browser-based JS+HTML+CSS app with no backend to speak of. Would the same people argue that, among other things, the Web browser sources would need to be included? Does it even make sense to argue that? Asking the system software question betrays a failure to accurately grapple with the classes of software artifacts we're dealing with, their role in the overall project, and our responsibility for them.

  4. Oct 2022
    1. Let’s try another example: You ask your partner to pick a local restaurant and pick up some take-out, this evening. Then, while logging in to a Zoom meeting, you also ask your partner to buy some wine on their way home. While your partner follows through on your requests, you are left astounded and annoyed: How is it that they could pick a restaurant that was involved in a health scandal last month? And why would they choose a type of wine you hate?

      I think this is a terrible choice for "another example" (that is presumably supposed to be easier to follow in order to communicate what the curse of knowledge is). This whole paragraph should have been cut (or at least replaced with something better).

    1. is designed for rhetorical purpose

      There's the honest part. It's a rhetorical sleight of hand meant to confer an advantage to the person rewriting the others' actual words—which, to repeat, would not be necessary if the two were actually "n[o]t significantly different" in the first place.

    2. didn't clear up any of the confusion

      There's now a "long, 50+ comment chain" attached to the false quote. If this isn't sufficient to catch the eye and serve as a flag that the thing that you're saying they said isn't actually what they said, then there's no hope for agreement.

    3. spawned a long, 50+ comment chain

      Once again: have some self-awareness.

    4. it doesn't improve discourse

      Yes it does. Shutting down low-effort, Twitter-level dunking built upon made up quotes is worthwhile all on its own. And as a rule that when enforced minimizes confusion and mendacity, it's doubly worthwhile.

    5. Some weird thing about quotes we can't even sort out as well-intentioned nerds who love to talk about rules.

      It's sorted. There's just a contingent pretending that there's something about it that isn't.

    6. innacurrate

      Yes.

    7. even confusing

      Yes.

    8. intentionally misleading

      Yes.

    9. to produce derails like this

      Geez. Have some self-awareness, bud.

    10. This rule is too idiosyncratic

      There's nothing idiosyncratic about saying that you should distinguish quotes from non-quotes by abstaining from formatting the latter the same way as the former.

      Use quotation marks to make it clear you're quoting somebody if you want. If you're not quoting somebody, don't do that. Don't build up a caricature based upon you would have liked for them to have said (so it's easier to pillory) instead of what they actually said.

      This shit's easy.

    11. My "quote" isn't significantly different from what was actually said

      In that case: great! no problem, then—just use the original wording, since by your own argument they are not significantly different; the original is sufficient.

    1. When people, in response to some problem, just end up restating the problem factors as if it explains or addresses anything at all.

    1. It was only on these social networking sites, where people have a podium, that I noticed quite a change in discourse. All of a sudden, you could read family and friends' thoughts on all types of subjects that are never uttered in person.
    1. If I start pestering them now, the security team at my LARGE_CORP employer might allow me access to sorucehut.org in about 3-4 months.

    Tags

    Annotators

    1. With email, if you change your provider then your email address has to change too.

      No.

      I don't know why they wrote this; they know this isn't true. It's not just a case of me being a stickler/pedant. This example should have simply never been used.

    1. The transition to Python was mostly motivated by a desire togive the students experience in a language that will be used for other courses in the following semesters.

      Perhaps that should be addressed, rather than treating it as bedrock upon which to build.

    Tags

    Annotators

    1. going back from the tangled document to the LP input format
    2. should this input format be plain text? Maybe notebooks like Wolfram's or "nbdev" count?

      Having only recently "got" what Wirth originally meant when he wrote about texts in Oberon as abstract data types, I'm sort of partial to something like that.

    1. rollback

      nit: should be "to roll back" here

    2. the program idea manifests commonly as an OS process

      The running program, that is (as just described).

    3. it can be ‘run’ at some point, which produces the ‘running program’. Not to be confused with a ‘non-running program’, the running program is the original program plus some run time state attached to its various parts which changes as it runs.

      Reminiscent of The Pinocchio Problem.

    4. The program is a document like construct created by a programmer—it has some structure presented via a primary visual representation through which the programmer views and manipulates it.

      Reminiscent of the distinctions Martin Fowler makes on Projectional Editing.

    5. today many “programs” are really just small parts of a greater, “living” network of programs and services
    1. @1:10:20

      With HTML you have, broadly speaking, an experience and you have content and CSS and a browser and a server and it all comes together at a particular moment in time, and the end user sitting at a desktop or holding their phone they get to see something. That includes dynamic content, or an ad was served, or whatever it is—it's an experience. PDF on the otherhand is a record. It persists, and I can share it with you. I can deliver it to you [...]

      NB: I agree with the distinction being made here, but I disagree that the former description is inherent to HTML. It's not inherent to anything, really, so much as it is emergent—the result of people acting as if they're dealing in live systems when they shouldn't.

    2. @48:20

      I should actually add that the PDF specification only specifies the file format and very few what we call process requirements on software, so a lot of those sort of experiential things are actually not defined in the PDF spec.

    1. When people ask me about my life’s ambitions, I often joke that my goal is to become independently wealthy so that I can afford to get some work done. Mainly that’s about being able to do things without having to explain them first, so that the finished product can be the explanation. I think this will be a major labor saving improvement.
    2. Alas, many things really must be experienced to be understood. We didn’t have much of an experience to deliver to them though — after all, the whole point of all this evangelizing was to get people to give us money to pay for developing the software in the first place!
    1. @55:10

      Sri: [...] you can think about the possibility that we're actually going to do this with structured data but then properly incentivizing people in order to actually moderate and curate the set of facts about the world—

      Will: Yeah, so I was gonna mention that, and I'm glad we're on the same wavelength here. What are the economic incentives that would help encourage the adding of correct, factual data to this knowledge graph and dissuade, I guess, spammers? [...]

      Sri: Yeah, I think that there needs to be some compelling reason for people to want to add data to the knowledge graph. [...] I think that, "Can we get a knowledge graph that is expansive—as expansive as Wikipedia—that, you know, says all kinds of facts about the entire world?" Yeah, maybe[...]

      Will: There are parts of the Web where people do that without financial incentives. I mean people list like every episode of, I dunno, Game of Thrones and annotate every time that people get killed or [...] all sorts of stuff. Fandom is like [a] huge thing and they just put out these... or like the—if you ever played Minecraft and looked at the Minecraft wiki, it's just so (chuckles) so detailed. Like, "Who spends all their time...?" [...]

      Sri: The idea of fandom actually is very relevant here, because [...] I have so far been thinking about the idea that the incentives have to be backed by some type of economic value—

      Will: Yeah, for a certain class of things [...] There are some things that are very well-tuned to economic incentives and the other stuff is well-tuned to fandom, right?

    1. This shifts the responsibility of checking which posts are new new/updated onto the parser

      For checking which posts are new/updated, this is always the case. The only thing the HTTP cache-related headers can tell is that the feed itself has/hasn't changed.

    2. a link to the RSS feed in the site meta

      Huh?

    3. by CTRL+F searching for different patterns.Viewing the page source to find RSS linksSo far I’ve come across the following common patterns:example.com/rss.xmlexample.com/index.xmlexample.com/feed.xmlexample.com/atom.xmlexample.com/feedexample.com/rss

      Bluh? This is exactly what looking for link[rel=alternate] is for—these "patterns" listed are arbitrary URLs...

    1. This costs about $650 USD to operate

      Crazy! This underscores how badly Mastodon—and ActivityPub, generally—need to be revved to enable network participation from low-cost (essentially free) static* sites.

      * quasi-static, really—in the way that RSS-enabled blogs are generally considered static sites

  5. pointersgonewild.files.wordpress.com pointersgonewild.files.wordpress.com
    1. The Code Rot Problem

      ⬑ what khinsen calls software collapse

    2. Could we design programs so they will run in 20, 30, 50 years? How?
      • limit capabilities it depends on (POLA)
      • target the World Wide Wruntime (i.e. the browser), which is the only reliable platform that exists and can be expected to exist in the future
    3. IMO: one of the biggest problems in modern softwaredevelopment• Code breaks constantly, even if it doesn’t change• Huge cause of reliability issues and time wasted• This is somehow accepted as normal

      ⬑ "The Code Rot Problem"

    1. protected static function resolveFacadeInstance($name)

      This page has a neat effect, first apparent with this example, where a blur effect is used on most of the text in the code block, except for lines 11–13 which are shown in sharp focus. (You can mouse over the code block to eliminate the blur effect.)

      .torchlight.has-focus-lines .line:not(.line-focus) {
              transition: filter 0.35s, opacity 0.35s;
              filter: blur(.095rem);
              opacity: .65;
      }
      

      Each line is dumped into a div and the line-focus class set on those which are supposed to be unblurred.

      (For ordinary code blocks without any blur/focus effect, the has-focus-class line is simply not used.)

    1. relaunched time and time again

      This doesn't need to happen, and wouldn't happen if people treated blog posts for what they are—artifacts—instead of conceptualizing them as live systems.

    1. This is the big hurdle; to leap over it you have to be able to create the program text somewhere, compile it successfully, load it, run it, and find out where your output went.
    2. Hmm. We’re having trouble finding that site. We can’t connect to the server at research-compendia.org

      That's not good.

    1. What is also sorely missing is a straightforward way to package an application program with all its dependencies in such a way that it can be installed with reasonable effort on all common platforms

      The answer is ZIP and wget/curl and forgetting about sharing dependencies. Disk space is way cheaper than the time spent (often in frustration) trying to get something to work.

      Not angling towards that sort of future is a lot like people from the punch card and paper tape era not allowing the computers do the stuff that computers do better than humans when it became cheap enough to let computers do it.

    1. Nobody ever saw a clean office and came to the conclusion, "Our cleaning staff must be lazing about because someone else is cleaning for them, we should fire them all!"

      Good response overall, but with respect to this remark, I have been in different but not dissimilar situations where something like this does happen.

      E.g. person notices that every time they enter a room (kitchen, let's say) everything looks just like it did the last time they saw it, and they aren't ever interrupted e.g. by my trying to use the space at the same time that they are. They then (incorrectly) conclude that it looks that way because I just never use that space (and it's okay for them to make a mess, or not worry about being mindful of how much time they're using the space for)—rather than registering the thought, "Gee, he really picks up after himself and tries to stay out of the way—a real life example of 'you won't even notice I'm here'. Maybe I should be that considerate."

    1. @35:19

      "This is how the working classes are robbed. Although their incomes are the lowest, they're compelled to buy the most expensive articles[...] the lowest priced articles. Everybody knows that good clothes, boots, or furniture are really the cheapest in the end, although they cost more money at first; but the working classes can seldom or never afford to buy good things. They have to buy cheap rubbish which is dear at any price."

    2. @31:25 Robert Noonan's story.

    1. The most dangerous form of procrastination is unacknowledged type-B procrastination, because it doesn't feel like procrastination. You're "getting things done." Just the wrong things.

      Type-B procrastination accounts for a lot of the junk I see on people's GitHub timelines—and that type of social network-backed gamified gratification is why I've adopted a stance where I impose a huge entry fee on any workflow that routes itself through GitHub's servers.

    2. Good procrastination is avoiding errands to do real work.Good in a sense, at least. The people who want you to do the errands won't think it's good. But you probably have to annoy them if you want to get anything done.

      Every time Bill Maher goes off on a tear about how American society should venerate old people the same way it happens in other countries, I can't help but think, "What 20 year old was Bill trying to fuck this week that led to these hurt feelings?" I'm picking up hints of that here, too.

      Is this Paul's way of getting out of responsibilities? "No, I don't need to do that. See? I wrote a piece about it!"

    1. @55:39

      I would feel a little bit sad, but at the same time, this is a pattern I've seen happen over and over again. And especially with these big ideas about computing and self-expression and things like that [...] people start with these huge, huge ideas, but I think that they are so different--the diff is so much between where society is now and what some of these people are thinking about--that the most that can be absorbed at one time is like one unit--one meme--from that whole big vision. So, we're just gonna take like one small step at a time, and [...] you kind of just have to accept that, you know, that's success.

    1. Garner, Bryan A. "Celebrating Plain English in Michigan." ABA Journal 107.5 (2021): 36. Business Insights: Global. Web. 7 Oct. 2022. URL http://bi.gale.com.atxlibrary.idm.oclc.org/global/article/GALE|A690034782/c13f1855872f0a231a7139cf729c45b6?u=txshrpub100020

      Document Number: GALE|A690034782

    2. That's an interesting point about empirical testing. If you just ask lawyers and judges in the abstract whether they'd like citations up in the body or down in footnotes, they'll vote for the former. But if you show them actual examples of well-written opinions in which the citations are subordinated, the results are very different.
    1. we must acknowledgethe root of the scientific-repeatabilityproblem is sociological, not techno-logical
    2. In the past whenwe attempted to share it, we foundourselves spending more time gettingoutsiders up to speed than on our ownresearch. So I finally had to establishthe policy that we will not provide thesource code outside the group
    3. We next made two attempts to buildeach system. This often required edit-ing makefiles and finding and in-stalling specific operating system andcompiler versions, and external librar-ies.
    4. Several hurdles must becleared to replicate computer systemsresearch. Correct versions of sourcecode, input data, operating systems,compilers, and libraries must be avail-able, and the code itself must build
    1. this level oftime commitment is likely to prevent a potential user with apassing interest from trying a programming language or tool
    1. If you live in Texas then you understand and have experienced the mega H-E-B hype.

      Stupid comment. HEB is a South and Central Texas thing.

    1. How does one make money off an open source compiler? Notice that this was a decade ago and there weren’t any precedents like Zig that we could look at as a template.
    1. Boy, this was hard to read. I've noticed a lot of Substack pieces that I've come across are written like this—tenuous, self-contradictory, and written in this voice. Very weird.

    1. before that the support for parsing JSON in C was essential for using LSP servers

      NB: the requirement wasn't actually "parsing JSON in C"; it's that for the JSON parsing the machine ultimately executes the same (or similar) instructions that it does when the JSON parsing is written in C and that C is compiled with GCC.

    1. you have only three digits for product numbers, which works out to be over 1,000 possible product numbers
    1. My tool needed a UI. To keep things as simple as possible, i didn’t want to host anything outside of GitHub itself. So I turned to GitHub Issues to provide the interface layer.

      Lame. Esp. since GitHub Pages is a thing.

  6. Sep 2022
    1. It's wild that you have to set up Docker to contribute to 600 characters of JavaScript.

      Current revision of README: https://github.com/t-mart/kill-sticky/blob/124a31434fba1d083c9bede8977643b90ad6e75b/README.md

      We're creating a bookmarklet, so our code needs to be minified and URL encoded.

      Run the following the project root directory:

      $ docker build . -t kill-sticky && docker run --rm -it -v $(pwd):/kill-sticky kill-sticky
      
    1. you’d need to be web-only on iOS and side load on Android

      Disclaimer: I don't give two shits about the topic that is the subject of this post. However...

      It would be feasible to get around this by 1. Separating your existing mobile app cleanly between client and content 2. Converting your client into a general purpose Web browser... that Tumblr (let's say) happens to work really, really well with

      (This concludes this special bonus episode of Nathan For You.)

      More seriously...

      Frankly, we need a lot more opinionated, intelligent user agents that are thoughtfully designed act on the content in a way that fits the user's desires—rather than trying to conform to what other Web browsers feel like today.

    1. It looks like gotostage.com keeps the Wayback Machine from getting a copy as a consequence of two things:

      The server sends no real hypertext—it's all part of a JS bundle that builds the (scan) content in-place.

      What the server does send is an invisible link to https://www.gotostage.com/honeypot, which the Wayback Machine's crawler will follow. Presumably, this flags it as a bot.

    2. Mar 26, 2019 Tricky Issues - Civil CasesTo download the handouts, visit: https://bit.ly/3an6j92 To obtain credit once you have finished the webinar, visit: https://bit.ly/34DsPJB This webinar qualifies for 1.5 hours of judicial education credit, including 1.5 civil hours.
    1. let's be honest, many people who create sites for money will not necessarily coach the business to keep it simple, since they will earn less money from it
    1. because it is necessary to ,examine changes and new arrangements be-fore deciding to use or keep them, the system must not commit the user to a newversion until he is ready. Indeed, the system would have to provide spin-offfacilities, allowing a draft of a work to be preserved while its successor wascreated. Consequently the system must be able to hold several-- in fact, many--different versions of the same sets of materials. Moreover, these alternate ver-sions would remain indexed to one another, so that however he might have changedtheir sequences, the user could compare their equivalent parts.Three particular features, then, would be specially adapted to useful change.The system would be able to sustain changers in the bulk and block arrangements ofits contents. It would permit dynamic outlining. And it would permit the spin-off of many different drafts, either successors or variants, all to r e m a i n w i t h i nthe file for comparison or use as long as ~needed

      Presaging version control systems.

    2. Un-fortunately, there are no ascertainable statistics on the amount of time we wastefussing among papers and mislaying things
    1. a complete lack of, "personal" bookmarks. The idea was that you might keep track of interesting links by keeping an index of them on your own personal site

      Well, the whole point of the Web was that everything would be given a (world-wide) identifier. Your current list of bookmarks has an identifier, but it's a local one. Once you have a world-wide identifier, it's only short jump to making it resolvable so that your bookmarks list has a URL, and browsing your bookmarks would be as simple as visiting that list.

    1. Buy: from Amazon.com (paperback), Barnes & Noble (paperback), Booksamillion (paperback), Borders (paperback), Powells (paperback), or Wordsworth (paperback).
    1. it is the ability of browsers to execute JavaScript programs that makes it an ideal language for an online version of a book on computer programs

      No way. HTML is way better suited for it!

    1. The fact that this book is an SPA—instead of just, you know, a bunch of web pages—is very annoying.

      Totally screws up my ability to middle click the "links" in the TOC.

      It also messes up the browser scroll position when clicking back/forward.

    1. Ever tried to look up some news from 12 years ago? Back in library days you were able to do that. On news portals, most articles are deleted after a year, and on newspaper web sites you hardly ever get access to the archives – even with a subscription.

      This is a massive failure of infrastructure (and education/"professionalism"—by and large, most people whose careers are in operating or maintaining Web infrastructure don't haven't been inculcated into or adopted the sort of "code of ethics" that sees this as a failure).

      The thing might just be for something like the Internet Archive to get into training or selling professional services for handling companies' "Web presence, done the right way". (This is def. take some organizational restructuring, however.) I'd like to see, for example, IA-certified partner organizations that uphold the principles described here and the original vision for the Web, and professional associations that work hard at making sure the status quo improves a lot over what's common today (and doesn't slide back).

    1. you can’t release a $300m AAA blockbuster movie directly on YouTube because you will never make your money back

      Hmm. I'm skeptical of the certainty with which this is said.

      Given a series of trials the claim here is that if you took a blockbuster and released it for "free" (supported by ads) on YouTube) then the ad revenue even when multiplied by the greater number of viewers would not only not surpass ticket sales from the subset of the same viewers who'd be willing to pay for tickets, but that it wouldn't even be able to cover the production budget. That's both a strong claim and a claim that I'm not sure is correct. For comparison, Netflix (and even ad-supported streaming services, albeit ones with lower budgets) seem to do pretty well with just a fraction of the <$10-per-viewer take that makes up monthly revenue.

    1. Those images are yours. They be-long to you and to you alone, and theyare infinitely better for you than thosewished on you by others

      dubious

    2. while we can't avoid using en-ergy, there is no value in using morethan we mus

      principle of least (literal) power

    1. f i had just read enough or watched enough talks my life would start to get better

      The notion of "productive consumption" has, for some people, an almost irresistible appeal.

    1. it means that even when I do say hello or hold a door or whatever I don't get a response

      There's a presumption here (and in the linked article) that those people want to talk to you—that they're just quietly suffering their desire to have some interaction with you, if only it were the case that you'd allow it. This is way more condescending than the thing that the article seeks to correct.

    1. often the love for open source often only goes as far as to say thanks when they're creating a bug report

      Thankses simply do not belong in a bug report. It's an almost surefire indicator that there's something wrong culturally and that your bugtracker isn't so much being used for bug reports as it is filled with support requests.

    1. No to new features. No to breaking changes. No to working on holiday. No to fixing issues or merging pull requests from people who are being unpleasant. No to demands that something has to be fixed right now.

      In other words, no to the rotten cultural expectations that are by far what you're most likely to encounter on GitHub. I promise—things really were so much better before it came along to try to be Facebook-for-software-development.

    2. The general state of the open source ecosystem is that most maintainers are building software they want other people to use and find useful.

      I think the default assumption that this is what's going on is a huge part of the problem. I see a similar thing happen on GitHub constantly, where project maintainers try to "upperhand" contributors, because they see the contribution as something deliberately undertaken to benefit the person who is e.g. submitting a bug report. This is a massive shift away from the spirit of the mid-to-late 2000–2010 era characterized by initiatives like Wikipedia (and wikis generally) and essays by Shirky on the adhocracy around the new digital commons.

    3. Bob works for TechCorp and discovered a few years ago that using a tool installed from Homebrew results in a 90% speedup on an otherwise boring, manual task he has to perform regularly. This tool is increasingly integrated into tooling, documentation and process at TechCorp and everyone is happy, particularly Bob. Bob receives a good performance review

      Directly related to a question I posed a few years ago about who should really be funding open source. My conclusion: professional developers who are are most directly involved with how the source is put to work—and who benefit from this (in the form of increased stature, high salaries and bonuses, etc., in comparison to the case where the FOSS solution hadn't been available). This runs counter to the popular narrative that frames the employer as a "leech" and silent on the social and moral obligations of the employee who successfully captured value for personal gain.

      It's like this: the company has some goal (or "roadmap") that involves moving forward from point A to point B. The company really only cares about arriving at the desired destination B. They negotiate with a developer, possibly one who has already signed an employment contract, but someone who is made aware of the task at hand nonetheless. The developer agrees to do the work meant to advance the company towards its goals, which potentially involves doing everything manually—that is, handling all the work themselves. They notice, though, that there is some open source software that exists and that can be used as a shortcut, which means they won't have to do all the work. So they use that shortcut, and in the end their company is happy with them, and they're rewarded as agreed (not necessarily at the end, but rewarded nonetheless with e.g. regular paychecks, but also possibly receiving a bonus), and they advance in their career. Who's extracted value from the work of the open source creator/maintainer here? Is it really just the company?

      McQuaid seems to agree with my view, going by the way he (later) identifies both Bob and TechCorp as benefitting from Reem's work; cf https://hypothes.is/a/MBN0aDnuEe2aF8s2kWTPrg

    4. Bob and TechCorp are benefitting from the work done in Reem’s free time
    1. I'll explain what it was inspired by in a second...
    2. (I feel like I tweeted about this and/or saw it somewhere, but can't find the link)

      visible-web-page looks to have been published and/or written on 2022 June 26.

      I emailed Omar a few weeks earlier (on 2022 June 7) with with a link to plain.txt.htm, i.e., an assembler (for Wirth's RISC machine/.rsc object format) written as a text file that happens to also allow you to run it if you're viewing the text file in your browser.

      (The context of the email was that I'd read an @rsnous tweet(?) that "stuff for humans should be the default context, and the highly constrained stuff parsed by the computer should be an exceptional mod within that", and I recognized this as the same principle that Raskin had espoused across two pieces in ACM Queue: The Woes of IDEs and Comments Are More Important Than Code. Spurred by Omar's comments on Twitter, I sent him a link to the latter article and plain.txt.htm, and then (the next day) the former article, since I'd forgotten to include it in the original email.)

    1. Java is good by modern standards, from a technical perspective, the platform having received a lot of improvements from Java 8 to 17. Unfortunately, it still stinks, and the problem is its "enterprise" culture.

      JS engines are good from a technical perspective. The problem with JS is the Node/NPM culture.

    1. he would do chores for the neighbors

      Again: mostly enabled by the fact that he was young.

    2. A neighbor came to Billy asking for help with a valve job on another truck.

      Another key ingredient. Society is participatory.

    3. and some mentoring by kindly contractors

      This is not to be discounted. Mentoring is a big deal generally, but a lot of what made this possible likely came from the novelty of dealing with a child. If you replace Kevin with, say, a 25 year old who is no more or less capable or committed, what changes is others' behavior in their interactions.

    1. in which generality and portability are more important than fancy graphics techniques and complex extra facilities

      This design constraint is exactly what people are so bothered about 30 years later. Generality! Portability! That's why you don't get to exercise full control of the sort that your "native" stack would give you. It's also why the Web has not only endured, but has attained a level of ubiquity that is not matched by any other "platform".

    2. Compound Document Architecture"
    3. the information was not naturally organised into a tree

      This touches on the subtle, underrated brilliance of Wikipedia's (mostly) flat namespace.

      Intertwingularity is inescapable.

    4. When two years is a typical length of stay, information is constantly being lost.

      Thirty years on, we're still losing stuff. (You could even argue that the Web—as it has been put in practice, at least—has exacerbated the problem.)

    1. anyone could publish anything

      Lots of the problems that Hypothesis runs into (incl. those described here in this post!) could be attributed to this. They could probably be neatly described in a volume titled "The Perils of Self-Publishing", in a section dedicated to the consequences of non-uniform practices.

    1. in spite of all the amazing innovations of the Oberon environment (everything is a command and such)

      common misapprehension; only command procedures are commands (not "everything")

    1. note that this will show the historical content within the current template – so not necessarily exactly the same as the original page
    1. helena-lang.org should host a demo in the form of a copy of the "meat" of the project that can run directly in the browser from the open web (ideally launched via a single button here on the homepage) without having to install an extension (or at least anything more complicated than a bookmarklet)