3,134 Matching Annotations
  1. Jul 2022
    1. @6:15

      An engraving (as shown here) was published in at least one place with the caption "The Battle of Omdurman: The Defence of the Khalifa's Black Flag".

      The watercolor(?) of this appeared in the 1898 September 24 print of The Graphic, on page 406. It is captioned "The Battle of Omdurman: The Fight for the Khalifa's Standard". It is signed "C. Hentschel", but attributed "Drawn by J. Gulich, R.I."

    1. I actually do it all the time myself - in my own private git source tree. I send git patches to Junio by email, and I don't publish my own git tree any more

      Git as He Is Poke(d)

    1. the straw man fallacy

      I've come around to preferring the term "strawchild".

      • It de-genders the term (important for some people)
      • It evokes the imagery of the kind of loser* who is only willing to engage in battle with children and/or is perhaps prone to striking them
      • It conveniently sidesteps the cliche/fatigue associated with invocations of the term "strawman"

      * Is this aspect of "strawchild" an instance of failure to elevate the other (i.e. steelman/starman them)? Yes.

    1. modern web development has become selfish
    2. focusing on the developers and making sure the developers can quickly output projects at the expense of the end users
    1. instead of inlining the images, the image URL’s (and captions) are read from a .yaml file. The URL of the yaml file is passed as an argument when loading the page. The .yaml file as well as the images should be publicly served.
    1. The language is academic, which has contributed to the confusion around the topic, but it is clear enough that most developers should be able to understand it.

      This I disagree with. Even Fielding's "... must be hypertext driven" rant (which is great and in my bookmarks) is sabotaged by the curse of knowledge. If you know what REST is—and how most "REST" isn't REST (including the things that try to stand out as doing REST right and still just doing it wrong, but with nuance) then "REST APIs must[...]" makes sense. If you don't already get it, though, then it's nigh impenetrable—funnily enough, you need an a priori understanding of REST to be able to understand these attempts to explain REST and what Fielding is trying to communicate about REST not requiring *a priori" knowledge!

    2. Let's call this style of API pseduoREST or JSON-RPC.

      What the re-education around REST needs is a catchy label for what people call REST that works well as a light pejorative. Two-Bit History gave it a shot, coining the ad hoc acronym "FIOH", but it doesn't have the desired properties.

    1. OpenBooks is a hub for Neocities community projects.

      Why the name, though?

    1. The trouble with redefining "REST" to mean "not REST" is that the first step in learning known techniques to solve a problem is learning the terminology that people use to explain the techniques. If you think you know the terminology, but you have the wrong definition in your mind, you will not be able to understand the explanations, and you will not be able to figure out why you can't understand them, until you finally figure out that the definition you learned was wrong.
    1. @54:25:

      There's this debate about whether those games are truly interactive, because there's no way to actually transcend the intent of the designer (other than with, like, glitches or that sort of thing)

      They're talking about video games—"authored experience[s]"—but it's relevant of other types of games (boardgames, like chess), too.

      cf Carse:

      Finite players play within boundaries; infinite players play with boundaries

    2. something something declarative effects

    1. @2:10

      They didn't publish the code. They published the algorithm. And they prided themselves on—the computer scientists at the time—of describing the algorithm, not GitHubbing the code. These days we don't—we GitHub the code. You want the algorithm? Here's the code.

      This is not always reliable. There are some non-highly-mathematical things that you'd prefer to have the algorithm explained rather than slog through the code, which is probably adulterated with hacks for e.g. platform gotchas, etc.

      There is a better way, though, which is to publish a high-level description of the workings as runnable code that you can simulate in a Web browser. Too many people have misconceptions about the stability of the Web browser as a platform for simulations, however. We need to work on this.

    1. So that’s when I came across Hypothesis. At the time, I was like, “Hey, this is cool,” but I also resonated with the company — like the web ethos being open-source. Being embedded into this distributed web of conversation was super cool to me, but at the time that wasn’t important for the Sidekick product. And then, when we pivoted Sidekick into a chatbot for youth apprenticeships, we didn’t need anything like annotation anymore, but also what happened is I basically reorg’d myself out of a job. So I was kind of looking around, but just casually looking because I didn’t have any end date, and then a recruiter reached out, and I was like, “I know these people,” and I really liked the company.

      This reads like a (fairly raw) transcript of a spoken-word interview. Hard to read.

    1. Gates befriended Ballmer at Harvard

      I'm surprised that this is the exemplar, and not the Allen–Gates relationship.

    1. It uses the jsdoc syntax, and strives to document all the tools and members available to front-end developers. To generate documentation, you'll also need the jsdoc utility available via npm. See the disclaimer above about the node package manager, of course. # npm install jsdoc -g

      This approaches it backwards. Consider a TypeScript-free codebase where the type annotations live in the documentation—which isn't generated. Your "compiler" then is really just a program verifier. Given the JS program text and the availability of docs, it takes the fusion as input and runs the verifier on that. No source-to-source compilation or mangling. The code that runs is the code you write—not some intermediate file output by tsc.

    1. Another key idea here is to separate meaning from tactics. E.g. the meaning of sorting is much simpler and more compact than the dozens of most useful sorting algorithms, each one of which uses different strategies and tactics to achieve the same goal. If the “meanings” of a program could be given in a way that the system could run them as programs, then a very large part of the difficulties of program design would be solved in a very compact fashion. The resulting “meaning code” would constitute a debuggable, runnable specification that allows practical testing. If we can then annotate the meanings with optimizations and keep them separate, then we have also created a much more controllable practical system.
    2. This opens the possibility of doing a design much better than Squeak's, both fundamentally and at the user-level, to create a model of an entire personal computer system that is extremely compact (under 20,000 lines of code)

      See: Oberon

    3. This is critical since many optimizations are accomplished by violating (hopefully safely) module boundaries; it is disastrous to incorporate optimizations into the main body of code. The separation allows the optimizations to be checked against the meanings.

      See also the discussion (in the comments) about optimization-after-the-fact in http://akkartik.name/post/mu-2019-2

    4. the Squeak system, which was derived from PARC Smalltalk, includes its own operating system, GUI, development tools, graphics, sound, Internet sockets, and many applications including Etoys and Croquet, yet is only about 230,000 lines of code. The executables are about 2.8MB and only half of this code is generally used.
    1. @52:20

      We know it will happen, barring some radical change in human psychology, because that is what we're living with now. Everyone is walking around with a smartphone in their pocket that not even the president of the United States could have gotten his hands on in, you know, the year 2000. It's pure science fiction. And yet now it's just a basic necessity of life [...] we reset to the new level, and again, we keep comparing ourselves to others

      There's a submarine counterargument to the overall point here (and the last half of the sentence quoted here), and it lies in the words "necessity" and "new level". (I realize that when it was spoken, "necessity" was chosen for effect and meant as a slight exaggeration, but it's not as exaggerated as it would need to be in order to erase the force behind of the counterargument.)

      In other discussions like these, you can often find people bringing up the argument that Keynes's remark about 15-hour work weeks wasn't wrong, provided that you're willing to accept the standards of living that existed at the time when Keynes was saying it. But that's not exactly true, because it doesn't really ever come down to a true choice of deciding whether you'd like to opt in or not.

      You could take the argument about smartphones and make the same one by swapping out automobiles instead. The problem is that even if you did desire to opt out of the higher standards, the difficulty lies in the fact that the society that exists around you will re-orient itself such that access to a car is a baked-in requirement—because it's taken as a given in others' own lives, it gets absorbed into their baseline of what affordances they expect to be available to people who are not them ("new level"). This continual creation of new requirements ("necessities") is the other culprit in the pair that never gets talked about in these conversations. Everyone focuses on the personal happiness and satisfaction component wrt comparison to others.

    1. It makes it really hard often to reason about the impact of this kind of work, because there are no easy metrics. One of the takeaways that I take from it is that making tools easy to use, fast to use, and pleasant to use is really powerful. It’s really powerful in ways that are hard to predict until you’ve done it, and so you should just take it as axiomatic that it’s worth a little bit more time than your organization otherwise would spend investing in tool quality, because people will change how they relate to those tools.They’ll find new ways to use it. They’ll use them more often. It often leads to this productivity flywheel in somewhat non-obvious ways.

      Surprise! The point of technology is that it's supposed to make things easier. Why not make sure it's easy to make things easy while you're at it?

    2. When you’re building developer tools, if the officially supported developer environment doesn’t work for people in some way, they build their own approach.
    3. it shows that any time that you make something easier or harder to do, either because it’s faster or slower, or just because you’ve reduced the number of steps, or you’ve made the steps more annoying, or you’ve added cognitive overhead, then people react by changing how they use your tool.
    1. a lot of the time i get a lot of questions these days

      @3:07:14:

      Blow: A lot of time I get a lot of questions these days by people who are asking, "How do you do a lot of work?", or, "How do you get started?" and all that. And very often these questions are themselves a procrastination, right? It's like, "Obviously, I'm in the state where I can't do a lot of work right now. So I need somebody to give me the answer before I can." And actually the secret is you sit down and decide to do it. That's all it is, right?

      Jaimungal: Seinfeld is like that. That's his famous advice to comics, to comedians.

      Blow: Mmm. Yeah. I mean—

      Jaimungal: Comedians always want to know what's the secret. He says, "Just work. Stop talking about it."

      Blow: Yeah. [...] Because that's an exc— it's like, "Oh, someday— I have permission to not actually do this work until someday somebody bestows upon me the magical[...] baton[...]"

    2. i mean i have a whole speech about that

      @03:06:54:

      Blow: I mean I have a whole speech about that that I can link you to as well.

      Should that be necessary? "Links" (URLs) are just a mechanical way to follow a citation to the source. So to "link you" to it is as easy as giving it a name and then saying that name. In this case, the names are URLs. Naming things is said to be hard, but it's (probably) not as hard as advertised. It turns out that the hard part is getting people to actually do it.

    1. maybe people today are more complacent about emergencies because they think someone will come along and save the day.

      The actual phrasing here (@39:03):

      maybe people today are more complacent about emergencies because at some implicit level they see there's more division of labor and they think someone will come along and save the day

      (No idea what's up with the transcript here. It omits some crucial wording/context.)

    1. @18:08:

      The interesting thing is when you read, say, extremely foreign fiction—so fiction that's very alien to you in terms of mental models—the author may assume you understand the mental models, but you may not. So for example Japanese comic books—the couple of times I've tried to read them, they just feel so bizarre to me—the sort of conventions for indicating, you know, emotions and actions and so forth. They're just so unintuitive to me that the world[...] that should be in the background and implicit and I should just be able to reference it like an operating system, it sort of becomes a little too visible for me to read the fiction seamlessly.

    1. @47:58 audible gasps at the mention of standards

    2. @37:52:

      Again, when I was traveling around in 2004 giving talks, the predominant attitude I had was a misconception about Darwinian processes that—most people I talked to thought that we must be at the best place that we could be because look at how many millions of people are participating in this thing. And if you know about Darwinian processes, they aren't optimizers at all. They're "satisficers"—a term made up by one of the most famous professors ever to be at Carnegie—and satisficing is not the same as designing something great.

    1. @18:09:

      So the real question is not whether we can improve on this but "what is the actual level of improvement?", which is tantamount to asking, "how complex is the actual problems we're trying to solve compared to the complexity we're creating by just bumbling around?"

    1. I guess my hesitation in answering your question is that I hate essentialism. It’s the same way that I hate it when people say women are better leaders because we are more empathetic. The problem with essentialism is, the moment you pay yourself a compliment based on gender, caste, religion, color of your skin — whatever — country of your origin — if you’re going to accept one generalization is true, then you’re going to have to suck up the generalizations and the caricatures that aren’t so flattering.
    1. One thing that I didn't hear considered is to kill modelessness by allowing selection anytime. If you want to select something, then just draw the shape that you want using whatever tool you already have, and then invoke some action that transforms it after the fact.

      This falls in line with the principle of preferring to make it easy to undo something rather than making it difficult to do in the first place.

      The relevant analogy is that if you were in your office in dialogue with someone and you had a printout of your WIP, then in order to communicate your intent, the most likely course of action would be to mark up the work in its current state using whatever tool is handy, explaining what it is you want to happen, passing it to your partner in dialogue, and then trust that they'll return to the source and get to it wrt to carrying out your desire.

    1. The thing that bugs me when I listen to the Muse podcast—it's something that's present here along with the episode with gklitt—is that there's this overarching suggestion that the solution to this is elusive or that there are platform constraints (especially re the Web) that keep any of these things from being made. But lots of what gets talked about here is possible today, it's just that no one's doing it, because the software development practices that have captured the attention of e.g. GitHub and Programmer Twitter value things that go against the grain of these desires. This is especially obvious in the parts that mention dealing with files. You could write your Web app to do that. So go do it! Even where problems exist, like with mobile OSes (esp. iOS), there're things like remoteStorage. Think remoteStorage sucks? Fine! Go embrace and extend it and make it work. It's not actually a technical problem at this point.

    2. @18:52:

      I wanna also dig a little more into the kind of... dynamism, ease-of-making-changes thing, because I think there's actually two ways to look at the ease of making changes when you solve a problem with software. One way is to make software sufficiency sophisticated so that you can swap any arbitrary part out and you can keep making changes. The other is to make the software so simple that it's easy to rewrite and you can just rewrite it when the constraints change.

    3. @14:18:

      So, for example, if you want to make a very basic static site: well, okay, now you need the static site generator, and now you need a library system, you need a package manager, you need a way to install the package manager, you need a way to check for security vulnerabilities in all the packages, you need a web server, you need a place to run the app. It's a whole thing, right?

    1. It made sense when JS was doing small simple things in HTML - it doesn’t make much sense anymore

      No, it still makes sense.

      Insisting that everyone use === everywhere, on the other hands, makes as much sense as disallowing method declarations that accept a parameter that implements an interface (in favor of formal parameters that insist on a certain class or a derivative), or injecting a bunch of instanceof checks for no good reason...

    2. I have rarely encountered a good reason to use == in JS. Most of the time, or you are relying on it, you are probably doing something wrong.
    3. Easier to just add a new operator that does things the right way and keep the original == operator as is. That way people can transition on their own time

      Stupid myth.

    1. But I later realized writing is many things, one of which is the finished article you’re reading now. Mainly though, it’s a tool for thinking things through.

      I've mentioned this elsewhere, but I'm skeptical of this popularly recurring take that says writing is thinking, or that thinking without writing really isn't thinking. If writing helps you think, it's better for you to know that than the alternative. But thinking is thinking, and writing is writing.

      I worry with all the insistence around this view of writing as a precondition to real thinking that people who are thinking at or near capacity without writing will believe they're somehow missing something and waste a lot of cycles in frustration as they attempt to write and find that it doesn't do anything for them thoughtwise that they weren't already getting before.

    2. Think about the sad essay we all used to write for your (insert language here) class: back then you didn’t have permission to generate original ideas.

      I'm not sure that's the correct diagnosis.

      Alternative take: you were not, at that point in your life, equipped to understand that you could be generating new ideas and that you should walk away from that writing course with an appreciation for writing as a vehicle for what you'd like to accomplish with a given subject/format. It's fine that you didn't—many people don't—and your instructors, institution, parents, community, etc. probably could have done a better job at communicating this to you, but it was there, and it was the point all along.

    1. The type for an item is given as the value of an itemtype attribute on the same element as the itemscope attribute.

      The presence of an itemtype attribute should imply the existence of an item, and thus make the presence of itemscope optional—itemscope should be required only when there is no explicit itemtype declared.

    2. It's important to note that there is no relationship between the microdata and the content of the document where the microdata is marked up.

      Wait, really? That's unfortunate. It seems plainly useful to be able in e.g. the datetime example to correlate the text content of the element with the datetime property with the datetime value.

    1. There is no inherent virtue in insisting that paths continue to use backslash even though we're well past the days of CP/M and DOS. There are good reasons not to use it, however.

      I do recognize that it provides a source of the type of obscurantism that Windows users take delight in. At this point, though, backslash-as-path-separator is a liability, and application authors should work to eradicate it from every UI surface that users come in contact with. Microsoft themselves should scrub their own apps so that e.g. even Windows Explorer favors the common solidus in any displayed path name.

      Consider this to be a straw proposal for an "are we slash yet?" movement.

    1. Respect your seniors. Love your juniors.

      Suppose these were inverted.

    2. Deny oneself in order to follow Christ.

      What does this mean?

    1. // NB: Since line terminators can be the multibyte CRLF sequence, care // must be taken to ensure we work for calls where `tokenPosition` is some // start minus 1, where that "start" is some line start itself.

      I think this satisfies the threshold of "minimum viable publication". So write this up and reference it here.

      Full impl.:

      getLineStart(tokenPosition, anteTerminators = null) {
        if (tokenPosition > this._edge && tokenPosition != this.length) {
          throw new Error("random access too far out"); // XXX
        }
      
        // NB: Since line terminators can be the multibyte CRLF sequence, care
        // must be taken to ensure we work for calls where `tokenPosition` is some
        // start minus 1, where that "start" is some line start itself.
        for (let i = this._lineTerminators.length - 1; i >= 0; --i) {
          let current = this._lineTerminators[i];
          if (tokenPosition >= current.position + current.content.length) {
            if (anteTerminators) {
              anteTerminators.push(...this._lineTerminators.slice(0, i));
            }
            return current.position + current.content.length;
          }
        }
      
        return 0;
      }
      

      (Inlined for posterity, since this comes from an uncommitted working directory.)

    1. To make a page on MySpace, all it took was text in a textbox.The text could be words or code.Anyone could read the words and see the code.
    1. Free as in ...? Points out that freedoms afforded by foss software to the average computer user are effectively the same as proprietary software, because it's too difficult to even find the source and build it, let alone make any changes. Advocates the foss developers should not think only about the things that users are not legally prevented from doing, but about what things they are realistically empowered and supported in doing.
    1. I have 35 MB of node_modules, but after webpack walks the module hierarchy and tree-shakes out all module exports that aren't reachable, I'm left with a couple hundred kilobytes of code in the final product.

      This directly contradicts the earlier claim that irreducible complexity is the culprit behind the size of the node_modules directory.

      35 MB → "a couple hundred kilobytes"? Clear evidence of not just reducibility but a case of actual reduction...

    1. The early phase of technology often occurs in a take-it-or-leave-it atmosphere. Users are involved and have a feeling of control that gives them the impression that they are entirely free to accept or reject a particular technology and its products. But when a technology, together with the supporting infrastructures, becomes institutionalized, users often become captive supporters of both the technology and the infrastructures.

      the illusion of preference-revealing actions

    1. Here is how I produce invoices and contracts for consulting: Open an old invoice/contract in firefox. Use the inspector to change the values. Hit 'save as new file'.
    2. In terms of this analogy, a lot of objections to end-user programming sound to me like arguing that Home Depot is a waste of time because their customers will never be able to build their own skyscrapers. And then on the other side are the people arguing that people will be able to build their own skyscrapers and it will change the world. I just think it would be nice if people had the tools to put up their own shelves if they wanted to.
    3. none of that saves me any time in the long run
    4. It took me an hour to rewrite my ui code and two days to get it to compile. The clojurescript version I started with miscompiles rum. Older clojurescript versions worked with debug builds but failed with optimizations enabled, claiming that cljs.react was not defined despite it being listed in rum's dependencies. I eventually ended up with a combination of versions where compiling using cljs.build.api works but passing the same arguments at the command line doesn't.
    1. My Fortran professor gave me a low mark because I used a lookup table for octal to binary conversion, instead of using division and modulo.
    1. resulting HTML

      Imagine if this were just the format that the source document itself used...

    2. General processes and common best practices learned from other Web Content Management projects do not apply and are in many ways obstructions to move quickly and get the best out of Helix.
    1. I recently started building a website that lives at wesleyac.com, and one of the things that made me procrastinate for years on putting it up was not being sure if I was ready to commit to it. I solved that conundrum with a page outlining my thoughts on its stability and permanence:

      It's worth introspecting on why any given person might hesitate to feel that they can commit. This is almost always comes down to "maintainability"—websites are, like many computer-based endeavors, thought of as projects that have to be maintained. This is a failure of the native Web formats to appreciably make inroads as a viable alternative to traditional document formats like PDF and Word's .doc/.docx (or even the ODF black sheep). Many people involved with Web tech have difficulty themselves conceptualizing Web documents in these terms, which is unfortunate.

      If you can be confident that you can, today, bang out something in LibreOffice, optionally export to PDF, and then dump the result at a stable URL, then you should feel similarly confident about HTML. Too many people have mental guardrails preventing them from grappling with the relevant tech in this way.

    2. if I died today, thoughts.page would probably only last until my credit card expires and DigitalOcean shuts down my servers

      I've noted elsewhere that NearlyFreeSpeech.Net has a billing system where anyone can deposit funds for a hosted account. That still leaves the matter of dealing with breakage, but for static sites, it should work more or less as if on autopilot. In theory, the author could die and the content would remain accessible for decades (or so long as fans have the account ID and are willing to continue to add funds to it), assuming the original registrant is also hosting their domain there and have auto-renewal turned on.

    3. Trying to keep websites around forever is struggling against the nature of the web.

      As above, I think this is more a consequence of struggling against the nature of the specific publishing pipelines that most people opt for. Many (most) Web-focused tech stacks are not well-suited to fulfill the original vision of the Web, but people select them as the foundation for their sites, anyway.

    1. it's very easy to measure how many github back and forths people have

      Bad example. The way most GitHub-adjacent subjects are handled and the overheads involved is already evidence that most people are not interested in operational efficiency, let alone measuring it to figure out how to do it better.

    2. computation it's the most important cost the e right how much does it cost to execute this thing on the end user's computer

      It's very hard to take this seriously from someone who's main endeavor is making video games. Essentially every CPU cycle ever spent running a game was superfluous.

    3. even a slight bit of being bad meant you couldn't get the thing to work at all

      dubious

    4. based on whether the software was any good

      nebulous

    5. This is as good an example as any of why I'm not a fan of Casey Muratori.

      I'm 25% of the way through this video (a "lecture")—10+ whole minutes—and he's hasn't said anything insightful or of any substance whatsoever. He certainly communicates that he has strong opinions, and expresses them (I guess?) in a very emphatic way, but holy shit, dude. What is your point? Say something that makes sense. Hell, just say anything at all.

    1. the idea of a thoughts page was originated by maren, who made a script for generating thoughts pages. thoughts.page is a way of lowering the barrier of entry to putting thoughts on the internet for people who don't want to or don't know how to set up a script to do it.

      Good use case for the application of the principles in A New Publishing Discipline.

    1. Primary program modules

      This is sort of a failing of the code-as-content thing that we're going for here. Take a page from GPE.

  2. Jun 2022
    1. Okay, so the original source seems to be Proteus (A Journal of Ideas). ~~Specifically, vol. 3, iss. 1.~~ (Thanks to Nikos Katsikis by way of Neil Brenner for helping track this down.)

    2. Also available here under the alternate title "Livingry" from BFI: https://www.bfi.org/about-fuller/big-ideas/livingry/

    1. 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.

      This whole piece is filled with this, but this story in particular comes across strongly as "I'm happy to impose my habits upon you." It's obnoxious.

    1. There’s not much implementations can do, and it’s up to the debugger to be smarter about it.

      This is fatalistic thinking.

      Here's what both implementations and debuggers can do together: 1. implementations can document these things 2. debuggers can read the documentation and act accordingly

    1. It’s certainly possible that you become so framework-driven going down this path that your wider problem-solving skills suffer.

      hammers, nails

    1. other people’s toolchains are absolutely inscrutable from the outside. Even getting started is touchy. Last month, I had to install a package manager to install a package manager.
    1. This is a great, ancient browser feature, but as developers we often engineer it away.

      Right. Leading to such questions as, "If you're putting all this effort in just to get things wrong and ending up with something that's worse than what you get for free—worse than just doing nothing at all—then what is your actual contribution?"

    1. What they didn’t consider is that Google had a crack team of experts monitoring every possible problem with SPAs, right down to esoteric topics like memory leaks.

      I've had conversations where I had to walk other people through why garbage collection doesn't mean that memory use is automatically a solved problem—that you still have to be conscious of how your application uses memory and esp. of the ownership graph. They were fully under the illusion that steady growth of memory was just a non-issue, an impossibility in the world of garbage collectors.

    2. the MPA sites gave immediate feedback to the user when clicking – showing a loading indicator in the browser chrome

      not just immediate, but standard

    3. web dev culture war

      What the linked piece is not: an analysis of the web dev's self-interested perspective on fairness, economic balance, and the implicit societal mandate for their skillset/work product (and the associated subsidies they benefit from and fight to maintain).

    4. Want to animate navigations between pages? You can’t (yet). Want to avoid the flash of white? You can’t, until Chrome fixes it (and it’s not perfect yet). Want to avoid re-rendering the whole page, when there’s only a small subset that actually needs to change? You can’t; it’s a “full page refresh.”

      an impedance mismatch, between what the Web is (infrastructure for building information services that follow the reference desk model—request a document, and the librarian will come back with it) versus what many Web developers want to be (traditional app developers—specifically, self-styled product designers with near 100% autonomy and creative control over the "experience")—and therefore what they want the Web browser to be (the vehicle that makes that possible, with as little effort as possible on the end of the designer–developer)

    1. First thing I noticed is that I spent a bunch of time writing tests that I later deleted. I would have been better off writing the whole thing up-front and just doing end-to-end tests.

      need for cheaper throwaway tests

    1. the expected lifespan of even very successful SaaS companies is typically much shorter than the lifespan of personal data

      A strength of boring tech that relies on the traditional folders-of-files approach, incl. e.g. the byproducts of using office suites.

    2. I suspect because most software is optimized for industrial use, not personal use. For industrial uses the operations overhead is not a big deal compared to the development and operational efficiency gained by breaking things up into communicating services. But for personal uses the overwhelming priority is reducing complexity so that nothing fails.
    3. preventing the build from bitrotting would probably require a full-time maintainer in the long run
    4. data can be exported from airtable, but the logic and UI can't
    5. when doing independent research I've typically fallen into the habit of creating unbounded projects with no internal structure. I don't think this has been good for my sanity.
    1. Yesterday evening (London, UK time) something amazing happened which can best be described in a single picture:

      That doesn't describe anything. It's a grid of GitHub avatars. What am I supposed to be seeing?

    1. you get so used to the way things are you don't think of the obvious next step and you know that can be so frustrating
    2. this can't possibly work because if it worked somebody in the last 40 years would have done it
    3. as long as the compiler doesn't use a bunch of global variables to store the compiler state, you can use it to run another instance of itself

      In other words, singletons are harmful.

    1. In saner bugtrackers like e.g. Bugzilla the community is empowered to step in and triage bugs. GitHub infamously chose to go for a "simpler" system with fewer frills, pomp, and circumstance. Perversely, this has the opposite of the intended effect. The net result is that for the community to have these powers, the project owner has to explicitly grant them to individual users, which is considered to be a lot more heavyhanded/ceremonial than how it works on bugzilla.mozilla.org.

      I'd have no problem, for example, stepping in and enforcing these things if it weren't the case that it were such a chore to go through the ceremony and getting approval to police this kind of stuff. GitHub's lackluster approach to user privacy, of course, doesn't help.

    1. Signal, which is damn good crypto work, announced MobileCoin support, and I stopped donating, bummed.

      Signal trades on some other stuff of dubious* merit, like the "guarantees" of SGX, and does other user-hostile stuff: requiring a PIN, doing user data backups without permission, locking out third-party clients... (What's worse is that the latter is excused as being the only way to reliably enable the undesirable "enhancements").

      * Even calling it merely "dubious" here is pretty generous.

    2. enablingly vague

      Nice turn of phrase.

    3. Many a

      This was tired the second time it occurred in this piece. Three times is def. too much.

    4. Not a fan of this piece, overall.

      Cryptocoin hype/scams are dumb. Who cares.

    1. I've come to much the same conclusion, I think: to wit, most people secretly enjoy their problems and suffering.

      See also, from Brooke Allen's "How to hire good people instead of nice people" https://brookeallen.com/2015/01/14/how-to-hire-good-people-instead-of-nice-people/:

      I won’t get between you and your dreams. If you have a dream, I need to know what it is so we can figure out if this job gets you closer. If you don’t have a dream then that’s fine, as long as you really want one and you’re not addicted to wishing and complaining.

  3. buckyworld.files.wordpress.com buckyworld.files.wordpress.com
    1. enormous an ounce of energy;

      I can't parse this. Ravasio says any typo is probably her fault. The best I can come up with is "an enormous amount of energy", which doesn't make sense as a typo, but does sort of sound the same.

    1. Rephrasing Brian Smith: Some thing is on the Web such that if the Web itself was destroyed, that thing would also be destroyed. If not, it's not fully on the Web. If someone destroyed the Web, this would not damage me if I were being denoted by a URI, but my homepage at that URI would be up in smoke if that what's people were using to refer to me by. I am not on the Web in a strong sense, but my homepage sure is.

      I don't think this is a good definition. The example, at least, is a bad one. That resource could still exist (the same way a .docx that lives in the Documents directory and has been uploaded but later had the file host go down would still exist)—it just wouldn't be resolvable by URL.

    2. In theory, through content negotiation a news website could communicate with your browser and determine where you live and then serve your local news. This rather simple example shows that the relationship between resource and representation can not be one-to-one.

      I don't think this is a good example. I'd call it bad, even. It's self-defeating.

    3. This page is excellent for an example of HTML being an adequate substitute for traditional office formats.

    1. > If I understand your critique, it's this: "How dare you critique their use of Ra? You have no standing! You have no right!" Which is basically an ad hominem attack that doesn't address any of the substance of my complaint.Sorry, no, making up your own caricature of what I said isn't an effective way of responding to it.

      Yeah, why has this become so normalized? It's gotten to the point where people will respond to something by posting nothing but an attempt at false attribution by rewording the other—typically in the most convenient, pithy, hackneyed, and strawmannish way—and then putting quotes around it while drowning in plaudits from those who already agree—often for reasons no better than shameless tribal affiliation.

      The basic precondition to summarizing the other's position in order to refute it is that the other side actually agrees that it's an accurate summary of their position. If you don't have that, then you don't have anything.

    1. How can you let people know that you’re “in the market”? How can you assemble a portfolio or set of case studies?

      Yes, those are the questions for people interested in pieces like this one. What are the answers?

    1. maitenance
    2. ,"

      What's with the Americanized punctuation style here?

    3. intemediary
    4. Twitter API

      Change my view: Hypothesis is suitable for this.

    5. are using
    6. There are plenty of troublesome assumptions and unanswered pragmatic issues in that sketch.

      Here's one: suppose Alice reads a book and adds it to her library then learns through this system that Tom, Dick, and Mary have it in their libraries, too. Thing is, Tom finished reading it 6 weeks ago, Dick read it last summer, and Mary read it 12 years ago as an undergrad. Would this be a good reading group?

    7. committment
    8. seperate
    1. recieved
    2. the physical shape and color of each command limits makes clear where you can and can't put it

      As a sort of "gutter bumper" approach, guiding you on what is and isn't accepted in the language, they're nice, but I can imagine as a child that it would have annoyed me when I wanted to express something and found that the "only" reason why I couldn't follow through on something was because they made something the wrong shape, keeping me from doing the thing, and not understanding.

      Contrast this with the remark below about pattern languages being "a set of design rules that loosely define how a system should work, rather than a strict specification".

    3. a set of design rules that loosely define how a system should work, rather than a strict specification
    4. amphibians

      Turtles are reptiles.

    5. Paypert
    6. Seymour Paypert
    1. There's a data layer. There's a security layer. There's a visual design layer. There's a hypertext layer that links to other locations. There's an authentication layer. There's an algorithmic layer.

      Is "layer" the right choice here?

    2. login
    3. seperately
    4. We're looking forward to next week

      NB: this is culture-specfic

    5. Out of all of these metaphors, the second most dominant after paper is physical space.

      NB: these two metaphors are at odds. You can see this in the way that authors treat user agent overlays as intrusions into their space—a place for them to control, instead of e.g. a note clipped to the copy that belongs to the reader.

      The owned-space one is definitely worse, but I fear that for many people it's now the default—for both those seeking control and those who are the indirect objects of control.

    6. it's
    7. heirarchical
    8. pape
    9. We still imagine the web as a series of paper documents with text and images presented on them.

      I don't know if this is true for anyone. It certainly seems like most people who are digital natives (or immigrants) rarely make the connection and end up missing out on some lessons from print that would actually be helpful.

    1. Good documentation includes background and decision information that cannot be derived from the code.
    1. I was speaking to the CEO of a developer tools company earlier this year. He told me that the biggest obstacle to contribution is his local development environment.
    2. the cloud is reducing the dev machine to a poorly debugged set of environment mocks

      This pie in the sky has been promised for the last 10+ years. It's not happening.

    3. Your personal dev environment travels with you no matter which device you use

      A lot of these ideas are junk. This one, though, is achievable. triplescripts.org.

    1. JavaScript is the universal scripting language

      ALGOL 2020

    2. The fundamental mistake of Node.js was diverging from the browser
    3. In 2010, we didn’t have ES modules, but once it was standardized it should have been brought into Node.

      Fun fact: the amount of time between 2010—the year Dahl mentions here—and ES2015—aka ES6, where modules appeared—is less than the amount of time between ES2015 and today. And yet people act like modules are new (or worse, just over the horizon, but still not here). It's a people problem.

    4. If you have some computational heavy lifting, like image resizing, it probably makes sense to use Wasm rather than writing it in JS. Just like you wouldn’t write image resizing code in bash, you’d spawn imagemagick.

      This is misleading/hyperbolic. The performance characteristics of WASM vs JS are nothing like a native binary vs the Bash interpreter.

    1. I almost feel like I should get to draw the interface that I want for myself. like how Acme lets you grow your own palette of commands as you work.

      Some incarnation of the Fly Pentop/Livescribe focused on this.

    1. the web is not HyperCard; you can't really make a home-cooked meal
    2. It's the ethos of html-energy, combining the minimalism of htmldom.dev programming

      The fact that the author is describing it in these terms is really evidence that the main achievement here is overcoming the limitations of his or her own mental blocks.

    3. This is an excellent piece, even though the writing is (probably intentionally) in places too obscure.

    1. Built using Go, Hugo is incredibly fast at building large sites, has an active community, and is easily installable on a variety of operating systems. In our early discovery work, we found that Hugo would build our docs content in mere seconds.
    2. Developer documentation is incredibly important to the success of any product. At Cloudflare, we believe that technical docs are a product – one that we can continue to iterate on, improve, and make more useful for our customers.One of the most effective ways to improve documentation is to make it easier for our writers to contribute to them.
    1. The interconnectivity features need a server though, and that involves either using a third-party service, or spinning up your own VPS, which means added cost, and you’ll probably have to do that at some point anyway if you choose the third-party option at first.
    1. it's gone into what's called the browser section

      Probably not the best descriptor, owing to domain collision. Almost anything else would be better, e.g. "Gallery".

  4. May 2022
    1. @5:50:

      In this portion of the machine, we keep these brass matrices.

      Throughout, "matrices" can be heard to be pronounced as "mattresses". Could this have something to do with the origin of the phrase "going to the mattresses"? It seems more likely than the conventional explanation that involves safehouses and literal mattresses, which strikes me as really dubious.

      Compare "capicola" → "gabagool".

    1. Until sometime last year I'd been coding socii in the open

      NB: I'm pretty sure this is referring to fact that the site was live, and it had open registration. The source code was not being worked on in the "open", even under lax definitions of that word.

    1. I think adding automated deployments would be a nice quality-of-life feature and would definitely encourage me to write more. Currently, I have to upload a new text file to my server and refresh the pm2 job.

      Is "automated deployments" really the solution?

    1. Our build bots do it by parsing your HTML files directly at deploy time, so there’s no need for you to make an API call or include extra JavaScript on your site. # HTML forms Code an HTML form into any page on your site, add data-netlify="true" or a netlify attribute to the <form> tag

      gross

    1. JS is plenty fast and can be used for "large, complicated programs"[1] just fine. The problem with most JS written today is in programmer practices—the way that the community associated with NodeJS pushes one other to write code (which is, ironically, not even a good fit for the JavaScript language). It turns out that how you write code actually matters
    1. I develop in Node and Sveltekit regularly and the chances that on any given day my flow might be crushed by random madness is unacceptably high.
    2. I have seen experienced developers pull their hair out for a day or more trying to get a basic build system working, or to import a simple module.
    1. I feel like the point of the article isn't so much "how do I solve this specific issue" as "this is the general state of JS packaging", and the solution you present doesn't work in the general case of larger, less trivial dependencies

      Much of the (apparent) progress (i.e. activity—whether it constitutes busywork is another matter) in the world of "JS Prime" (that is, pre-Reformation, NodeJS/NPM-style development) is really about packaging problems.

    1. Anyway: I think the underlying problem is that it has been hidden that Node is NOT JavaScript. It uses (some) of the JavaScript syntax, but it doesn't use its standard library, and its not guaranteed that a Node package will also run on the browser.

      NodeJS development is often standards-incompatible with JS-the-language and other (actually standardized) vendor-neutral APIs.

    1. This is a problem with all kinds of programming for new learners - actually writing some code is easy. But getting a development environment configured to actually allow you to start writing that code requires a ton of tacit knowledge.
    1. I can write JS and TypeScript easily enough but when I start a new project I'm always fighting the tooling for at least half an hour before I can get going.
    1. Not only this. Try to change the app two years later. Dependencies gone, wrong NPM version, Webpack config depricated and what not.That's why I like to use vanilla JS as much as possible. It will be maintainable years later.
    1. Javascript is severely restricted in file:// today.
    2. Oh, you’re in file://! Dude, what are you doing these days without a localhost?
    3. I’m gonna use Node!

      Reality: this has a lot to do with the problems here.

      Remedy: ignore the NodeJS toolchain bullshit[1], rip out the thing you're interested in, and stuff it into an ordinary page foo.hmtl.

      1. https://pg.ucsd.edu/command-line-bullshittery.htm[2]

      2. https://hypothes.is/a/22JaWMu5Eey2UvchosEz6Q

    4. Today I tried to help a friend who is a great computer scientist, but not a JS person use a JS module he found on Github. Since for the past 6 years my day job is doing usability research & teaching at MIT, I couldn’t help but cringe at the slog that this was. Lo and behold, a pile of unnecessary error conditions, cryptic errors, and lack of proper feedback.
    1. Yes, you could write Python utilities that are easy to install and run, but people don't. And the last bit of that sentence is the one that actually counts. "Could have" doesn't actually count in an engineering context.
    1. I just want to try this C++, download, unzip, oh it's windows so .project file. Fine, redo on windows , oh it's 3 versions of vstuido old and says it wants to upgrade , okay. Hmm errors. Try to fix. Now it's getting linking error.
    2. okay how about ruby? oh I have old ruby , hmmm , try to install new ruby, seems to run, but it can't find certain gems or something. oh and this other ruby thing I was using is now broken ? why do I have to install this stuff globally? You don't but there are several magic spells you must execute and runes you must set in the rigtt places.
    1. I've watched a bunch of very smart, highly-competent people bounce off JS; that's not a fault with them but with the ever-changing and overly-complicated ecosystem.

      It helps to be accurate (if we ever want to see these things fixed):

      They didn't "bounce off JS". They "bounced" after seeing NodeJS—and its community's common practices.

    1. It feels like every example I run into is an easy to follow "20-steps + 10 packages + 64GB cloud server instance" process when all I want to do is to download some historical temperature data to CSV.
    1. if you think it's hard for someone who is already a programmer - think about how needlessly complicated the entire ecosystem and everything surrounding it is for the average person
    2. You may think that this person is silly - but that is tainted by your past experience of already knowing it warping what you think the baseline average knowledge level is at.