2,977 Matching Annotations
  1. Feb 2022
    1. If we define its success by decentralisation, unfortunately – unsurprisingly – Mastodon has failed.

      If we define its success by quality of discussion, I think it has also failed. My interactions on Mastodon have almost universally resulted in experiences that were worse than a typical HN interaction (already not great!), for example. About on par with what you've always been able to find in places like /r/programming or Keybase chat or IRC—ostensible nerds memetically regurgitating low-effort cynical takes and being hostile to outsiders who haven't yet sufficiently ingratiated themselves to the community. Very little diversity of thought or norms of interaction.

    2. The most popular instance in the Mastodon universe sports over a half a million users. The runner up is mastodon.social, the flagship instance run by the developer, clocking in at just over three-hundred thousand.

      So how about a voluntary breakup? Something that the unfederated networks would never do unless trying to avoid being the target of litigation for anti-competitive practices, but where is the pressure to refrain from doing this for mastodon.social or anywhere else in the fediverse?

    1. and if you want software that's any more niche than that

      That's the problem—thinking about this in terms of "wanting software". It's wanting to publish. Tech workers have an especially hard time understanding this.

      You're probably not under the impression that when the last person you heard of who got their book published finally pulled it off, they did it as a matter of wanting, say, an InDesign workflow versus something else. Because they weren't, and it didn't factor into their motivations at all—not even a little bit.

    1. The problem almost certainly starts with the conception of what we're doing as "building websites".

      When we do so, we mindset of working on systems

      If your systems work compromises the artifacts then it's not good work

      This is part of a broader phenomenon, which is that when computers are involved with absolutely anything people seem to lose their minds good sensibilities just go out the window

      low expectations from everyone everyone is so used to excusing bad work

      sui generis medium

      violates the principle of least power

      what we should be doing when grappling with the online publishing problem—which is what this is; that's all it is—is, instead of thinking in terms of working on systems, thinking about this stuff in such a way that we never lose sight of the basics; the thing that we aspire to do when we want to put together a website is to deal in

      documents and their issuing authority

      That is, a piece of content and its name (the name is a qualified name that we recognize as valid only when the publisher has the relevant authority for that name, determined by its prefix; URLs)

      that's it that's all a Web site is

      anything else is auxiliary

      really not a lot different from what goes on when you publish a book take a manuscript through final revisions for publication and then get an ISBN issued for it

      so the problem comes from the industry

      people "building websites" like politicians doing bad work and then their constituents not holding them accountable because that's not how politics works you don't get held accountable for doing bad work

      so the thing to do is to recognize that if we're thinking about "websites" from any other position things that technical people try to steer us in the direction of like selecting a particular system and then propping it up and how to interact with a given system to convince it to do the thing we want it to do— then we're doing it wrong

      we're creating content and then giving it a name

  2. Jan 2022
    1. - bookmarklets are the shell scripts of the universal application platform (i.e. the Web) - sounds scary... but still less risky than actual shell scripts!

    Annotators

    1. This page is useful, but it needs footnotes citing the relevant standards.

    1. one should be able to use md2blog and similar programs by using the browser itself to open and run the program

      Consider a "man2blog" — combining several things:

      • a publication pipeline/authoring tools combo that is effected by copying the tool's manual somewhere, where the manual includes, like here in ANPD, an exact (machine executable) specification of its behavior
      • the plain.txt.htm format https://www.colbyrussell.com/LP/debut/plain.txt.htm

      So the steps look like:

      1. Clone the repo, which is empty except for a lone "README.txt"
      2. Write your blog post(s) as markdown and commit to the repo
      3. Upload a copy of README.txt to your web host, except name it man2blog.txt.htm instead
      4. Visit the URL for your copy of man2blog.txt.htm in your web browser
      5. Press Ctrl+Enter
      6. Feed in the sources to your blog

      You could also include in the text of README.txt aka man2blog.txt.htm instructions for how to author an "adapter" for your web host, so that when man2blog.txt.htm finishes processing your input, it transfers control to the adapter, which handles automatically uploading the build artifacts. (The adapter should, of course, also live as a first-class piece—i.e., content—on your site, too, the way that ANPD explains it.)

    1. When I was in high school I wrote some software in Visual C++. My cousin wanted me to develop a spoke length calculator for bicycles. For whatever reason I never finish­ed that project, but while testing the iPhone market I recreated it in Objective C. I sold it for $2.99 and the daily volume was less than Simple Park but still made a fair amount. I meant to improve the app, but instead ended up just removing it rather than keep pace with Apple's updates.
    1. That technology is causing more friction than less isn’t surprising. It seems recently that a lot of technology does this.
    1. most contributors are just drive-bys who have no intention of becoming regular committers

      Isn't that a sign of (good) health, not an illness? in fact, i think by more critically observing the downsides of current practices, we can increase the number of drive-bys by 10x, and that we should aim to.

      Whether "dealing with [the] community" takes more work than writing code is another matter, but one that can also probably be solved by being more critical of contemporary practices and expectations.

    1. The console interface to gdb works, but it's inefficient:I can't easily see the surrounding codeI have to manually request information rather than just glancing at the displayI have to remember syntax rather than just clicking on things
    1. I love JavaScript, but for many projects -- especially internal tools and prototypes -- setting up a full frontend JavaScript stack (npm, webpack, babel, create-react-app, redux) and all of their configuration files, folders, and scaffolding is overkill.

      Nah. If you're using "npm, webpack, babel, create-react-app, redux", you probably don't "love JavaScript". Those things exist and are used because the people who created and use them hate JS and have slowly worked together to try to make JS something else other than what it was (and still is).

    1. Putting anything imperfect and half-written on an "official website" may feel strange. We seem to reserve all our imperfect declarations and poorly-worded announcements for platforms that other people own and control.
    2. 7 Backlinks

      Why are these back "links" not actually HTML links? Annoying. Conjecture: Since this is what you get with creator-controlled presentation, that's one of the reasons why people opt for Twitter et al.

    3. Ideally, this involves experimenting with the native languages of the web – HTML, CSS, and JavaScript.

      I don't see how this ranks as "ideal". Ideal would be experiments created in a publishing pipeline that is as freeform as MS Paint but escapes the historical quagmire that Web publishing has been entangled in. (11ty and others earlier mentioned ain't it.) Something like Flash, but primarily aiming to aid the creation of content based on the written (or spoken) word, and less about applet-based application experiences or video/animation. (Although appropriately wielded, those would be fine, too. If everyone achieved their own tiny Encarta, that wouldn't be a bad place to be.)

    4. It's less performative than a blog

      This sounds like there's a conception of "blog" at play that's just a corruption of what a blog actually is. (Twitter can and mostly is just as "performative", by the way, if not moreso...)

    1. The years that I spent messing around with haskell were not nearly as valuable to me as the week I spent learning to use rr. Seeking out jobs where I could write erlang meant not seeking out jobs where I could learn how cpus work or how to manage a long-lived database.

      Maybe PG's advice on exotic languages is really just another form of indirect gatekeeping to select for the well-off who can afford to have arbitrarily spent so much time on high-cost, zero-return endeavors—like spending school studying philosophy or learning to distinguish wine and appreciate art.

    2. google "pratt parsing" when dealing with operator precedence

      Or just save time and use recursive descent there, too.

    3. (See also A defense of boring languages, Your language sucks, it doesn't matter)
  3. scattered-thoughts.net scattered-thoughts.net
    1. It's typically taken for granted that better performance must require higher complexity. But I've often had the experience that making some component of a system faster allows the system as a whole to be simpler
    1. IDE tools which show errors in the editor as you type often let you fix mistakes right after typing them, while the context is still completely fresh.

      I actually don't want this, for the same reasons listed under "Focus". See lkesteloot on IDEs "bleed[ing] red" https://www.teamten.com/lawrence/programming/write-code-top-down.html

    2. I have a nice self-contained example of breaking up a big change here. I wanted to change the internal representation used throughout the compiler. Instead of trying to do it all at once, I made a parallel pipeline for the new version and built it out stage by stage while keeping the old version working. Once the new version was complete and produced the same results on all the tests I deleted the old version.
    3. These changes may sound trivial but I can't overemphasize how much difference they made when applied consistently.
    4. Exposing myself to addictive interactions trained me to self-interrupt - whenever I encountered a difficult decision or a tricky bug I would find myself switching to something easier and more immediately rewarding. Making progress on hard problems is only possible if I don't allow those habits to be reinforced.

      Highlighting this, but really the whole section is almost perfectly written. Hardest is achieving your desired inner discipline and then having to fight with people who don't understand this shit (because their performance never matters, or they don't give a damn).

    1. The latest SQLite 3.8.7 alpha version is 50% faster than the 3.7.17 release from 16 months ago. [...] This is 50% faster at the low-level grunt work of moving bits on and off disk and search b-trees. We have achieved this by incorporating hundreds of micro-optimizations. Each micro-optimization might improve the performance by as little as 0.05%. If we get one that improves performance by 0.25%, that is considered a huge win. Each of these optimizations is unmeasurable on a real-world system (we have to use cachegrind to get repeatable run-times) but if you do enough of them, they add up.
    1. Personally, I’m much more interested in how to get Excel and Photoshop on Linux rather than untrustworthy drive-by apps

      Indeed; untrusted drive-by apps are best handled by the sandboxed runtime that the world has already settled on—and that everyone already has—the WHATWG/W3C hypertext system, aka, the Web browser.

      Remember: "the program is a locally saved copy" and "runs offline" are not mutually exclusive with "runs in the browser".

    1. I struggle to find meaning in the creator economy, in its current form.

      It's hard even it's more ideal forms (for different reasons). I outlined the antidote a year (or maybe two? geez) ago—the fanclub economy. Posted originally to socii, but it's dead now, so all I have is the local JSON dump, which I haven't fixed up and put online myself.

    2. I wonder whether the creator economy, as it matures, will resemble less of its original promise (a way for people to do the things they love), in favor of a “creator industrial complex.”

      "will resemble"? What year was this written?

    3. This is also known as the nonprofit industrial complex

      Is it? Who calls it that? Sounds like Pournelle's iron law of bureaucracy.

    4. Imagine a nonprofit that was started to end homelessness. They need to fundraise, so they start applying for grants. The grantmaking process becomes so time-consuming that the nonprofit increasingly directs resources towards sustaining itself, rather than solving homelessness.
    1. his comments about female founders

      We should be able to track down the source here just as easily as we can see verbatim quotes' original place.

    1. every file is a long string of ones and zeros

      This is a popular way to describe it, but I don't believe it is actually helpful to people who don't already understand.

    1. So, what is the solution to the problem of writing too many unnecessary brackets in the code? Consult your programming language’s documentation. Don’t guess what the operator precedence is, and don’t give up and add brackets for safety. Take a moment to read the documentation to find out exactly in what situations brackets are necessary and in what situations they are unnecessary.

      Obscurantism isn't a virtue.

    1. Make simple changes to (some carefully chosen fork of) any project in an afternoon, no matter how large it is. Gain an hour’s worth of understanding for an hour’s worth of effort, rather than a quantum leap in understanding after a week or month of effort.

      Accessibility is more important, after all, than Kartik says it is (elsewhere; cf recent Mastodon posts).

    1. You can also use YQL—the Yahoo Query Language—to retrieve the same data.

      Looks like it's dead. The link goes nowhere.

    1. Apple is going to ditch TSMC for Intel—or rather, what will be the Apple-owned fabs formerly operated by Intel. After the acquisition, Apple will become a major champion for USG "investment" in US-based fabs, and they'll get what they want. They'll achieve parity with or surpass TSMC.

      Two important things to be aware of:

      1. Projections of semiconductor advancements hitting a wall, if they turn out to be valid and true, describe a set of circumstances that are actually beneficial to anyone trying to catch up to the tech leader.

      2. There's a lot of low-hanging fruit to be had in fab operations. A lot. Given sufficiently mature/advanced (i.e. adequate) tech to start with, Apple can make leaps and bounds over, say, Samsung by business process improvements alone.

    1. I’m going to use the freely available Visual Studio Community Edition for these steps to make it easy.

      ... but still harder than it should be. (Isn't this team supposed to be sensitive to stumbling blocks? I thought that was pretty much the entire gestalt of this platform...)

    1. Can Windows/Linux not rename a file while it’s open, show a folder’s size, or rename a document from within its app window?

      Case study in equivocation.

    1. many things that are in peer-reviewed journals will later turn out to be wrong

      ... which is of course the whole point! We'd probably be better off promulgating "RFC" as a relevant term for more than just tech standards.

    1. e.g. several boolean flags only take one byte each

      That's hardly tight. What it is, like much of Go, though, is "gcod enough". And a lot of JS is the same way, if you—once again—reject the desire to follow-by-example without taking care to make sure you don't pick bad examples—which is what the NodeJS world offers, by and large (which itself makes esbuild's entire raison d'etre part of a somewhat existential paradox).

    2. Every time you run your bundler, the JavaScript VM is seeing your bundler's code for the first time

      Of course this fares poorly if the input ("your bundler's code") is low-quality.

      It's important to make an apples-to-apples comparison, so you don't end up with the wrong takeaway, like, "Stuff written in JS is always going to be inherently as bad as e.g. Webpack," which is more or less the idea that this paragraph wants you to get behind.

      It shouldn't be surprising that if you reject the way of a bad example, then you avoid the problems that would have naturally followed if you'd have gone ahead and done things the bad way.

      Write JS that has the look of Java and broad shape of Objective-C, and feels as boring as Go (i.e. JS as it was intended; I'm never not surprised by NPM programmers' preference to write their programs as if willingly engaging in a continual wrestling match against a language they clearly hate...)

    3. Everything in esbuild is written from scratch.

      Should have led with this.

    1. In Microsoft Edge, the bookmarklet can save to the local Zotero program on your computer

      Zotero desktop needs an "inbox"—a Dropbox-like directory where you dump stuff into it, and then Zotero adds it to your library.

    1. it’s insecure unless the credentials are served over an encrypted HTTPS connection

      The same is true for login systems that use cookies, but no one cites that as a downside. There's an asymmetric standard being applied to HTTP native authentication.

    1. <a href="https://web.hypothes.is/help/" class="hyp-u-horizontal-spacing--2 hyp-u-layout-row--center HelpPanel-tabs__link" target="_blank" rel="noopener noreferrer"><span>Help topics</span>

      How to get remote control over the Hypothesis sidebar (one way, at least):

      1. Use the bookmarklet to open the sidebar
      2. Click the sidebar's "Help" icon in the top right
      3. Right click the "Help topics" link and select "Inspect" in the context menu to open the element in the browser devtools
      4. Remove "noopener" from the link (easiest way is to just delete the element's "rel" attribute)
      5. Change the link target to something other than "_blank" (e.g. "foobar")
      6. In the sidebar, click the now-modified "Help topics" link
      7. For good measure, in the new tab that opens, navigate to the same URL loaded in the sidebar (should be something like https://hypothes.is/app.html with a site-specific URL fragment; you can get the actual URL from the devtools JS console with document.documentURI, or right-clicking the sidebar and selecting "View Frame Info")

      From the secondary tab ("foobar" opened by click in step #6) you should now have unrestricted, scriptable access to the DOM of the original sidebar iframe, using e.g. the JS console in devtools instance or a bookmarklet applied to the secondary tab—access it as window.opener.

    Tags

    Annotators

    1. We believed that this was the most equitable and transparent way to act.

      Nope. That was way scummy.

    1. Don’t make code fast before it is goodDon’t make code good before it works

      "The greatest performance improvement of all is when a system goes from not-working to working" https://web.stanford.edu/~ouster/cgi-bin/sayings.php

    1. She and her husband voted for Trump and still would again if he were the Republican nominee, but that did not mean they were not outraged — disgusted — by him and by the rioters.

      wat

    1. The best demonstration of great leadership is when my leader took the fall for a mistake that was 100% my fault.

      This is stupid.

    2. If you're not sure what you want to do, just do Java. It's a shitty programming language that's good at almost everything.
    3. The best code is no code at all.

      On the other hand, explicit is better than implicit. If you're attaining "no code" via implicit magic, that's not a win.

    1. let info, id
      let id = response.headers.get("X-Request-ID");
      if (id) {
        let info = this._pendingRequests.get(id);
        if (info) {
      
    2. filter = null

      This is unused.

    Tags

    Annotators

  4. scattered-thoughts.net scattered-thoughts.net
    1. the frothy web
    2. Every speedbump breaks my flow and reduces my motivation, and motivation is my main bottleneck.
  5. Dec 2021
    1. and runs much slower

      This is not a look-how-great-Webpack-is observation. This is a look-how-bad-the-source-code-is observation.

    2. we develop Violentmonkey with modern JavaScript syntax (ESNext) and build it with Babel, Webpack and their friends

      I keep seeing people say this, and it's one of the dumbest things I've ever heard. It's a WebExtension. There's even less reason to use obfuscators for extensions than there is to use them on the open Web...

    1. I have heard it reported in the halls of XML conferences that the browser makers actively wanted XML's strict syntax so they could reduce maintenance costs on their tag soup code

      The costs here tend to be overstated (and stated by people without a strong background in either browsers or languages, I've found).

      I remember someone mentioning to Boris Zbarsky (and expecting him to agree) that IE compatibility was a source of bloat in Gecko. Of course, he corrected them.

    2. http://www.xml.com/pub/a/w3j/s3.connolly.html
    1. Of the many brilliant individual XML leaders from the early days, almost all have moved focus to entirely different technologies. Almost all the companies who sponsored the efforts of these leaders have moved on to different strategic initiatives, seeking competitive advantage elsewhere now that XML has lost its fairy sheen.
    1. We want to hear about hard problems that don't have by-the-book solutions; about the people facing them, the reason they're important
    1. Documents are where memory and knowledge lives when it’s not in wetware between people’s ears.
    1. swapping out XSLT versions is typically as simple as dropping a more contemporary engine, such as the Saxon processor, into a folder in your Java project

      Shame that setting up the Java project itself isn't as simple.

    1. As H. L. Mencken once warned, “Never argue with a man whose job depends on not being convinced.”

      I like this one better than the traditional form, which is clumsy.

    1. Desired workflow:

      1. I navigate to the APL login page https://austin.bibliocommons.com/user/login
      2. I invoke a bookmarklet on the login page that opens a new browser window/tab
      3. In the second tab, I navigate here—to a locally saved copy of (a facsimile of) my library card
      4. I invoke a bookmarklet on my library card to send the relevant details to the APL login page using window.postMessage
      5. The bookmarklet set up in step 2 receives the details, fills in the login form, and automatically "garbage collects" the second tab

      Some other thoughts: We can maintain a personal watchlist/readlist similarly. This document (patron ID "page") itself is probably not a good place for this. It is, however, a good place to reproduce a convenient copy of the necessary bookmarklets. (With this design, only one browser-managed bookmarklet would be necessary; with both bookmarklets being part of the document contents, the second bookmarklet used for step 4 can just be invoked directly from the page itself—no need to follow through on actually bookmarking it.)

    2. Barcode

      Need to figure out the barcode format used on the actual cards and reproduce it here, too.

      In fact, Ideally, this digital facsimile should hew close enough in fidelity to the actual thing that I should be able to print my own (using only the data encoded in this document as input).

    1. Best way to view these in order:

      Open the socii JSON export in the browser, defuse the unhelpful JSON viewer by using "View Source" if necessary, and then open a JS console to run the following snippet:

      let o = JSON.parse(document.body.textContent)
      o.sort((a, b) => (
        String(a["created"]["epoch_time"]) - String(b["created"]["epoch_time"])
      ))
      

      Other useful snippets:

      Easily spot thread chains (look or empty string for thread roots):

      o.map((x) => (x["replyTo"]))
      

      Get replies to other accounts:

      o.filter((x) => (o.map((y) => (x["replyTo"] && y["id"])).indexOf(x["replyTo"]) < 0))
      

      (It also wouldn't be a bad idea to take Fritter and wire it up to be able to read the export.)

    Annotators

    1. there's not a lot of information in the file so i'm going to read along with like read along with this file from the documentation

      Should system configuration files be full-fledged documents? I.e., explain to the user—with rich text, even—both the conventions of the configuration format as well as what the given system's actual configuration is?

    1. On the Web, the file extension doesn’t really matter

      Not so much "On the Web" as it is "In JavaScript". mjs is an invention of runtimes like NodeJS (and the unending toolchain hell that sprang up around it) to paper over NodeJS's non-standard idiosyncrasies that are entirely the closed loop result of their own doing.

      The fact that this has infected discussion of JS itself is even more reason to despise Node and its ecosystem.

    1. “Hopefully one day, 85% or 90% of all websites have WordPress as their base layer.”

      Yikes.

    1. you wrote that Wix makes it “difficult to leave” for customers, but this isn’t true. If someone wants to cancel the subscription, all they need to do is click the button, “Cancel Subscription”.

      Disingenuous, or just dumb?

    2. I’d like to remind you that the code wasn’t developed by WordPress - it was General Public License (GPL). We didn’t steal it, and we gave it back according to GPL (JavaScript is not linked).

      Incomprehensible.

    1. In a world where programmers behave reasonably (i.e., not the one we're living in), this is what the list of GitHub forks would be useful for. You have some need to extend a project, you look at the list of people advertising their forks of the upstream, you see one that could also benefit from the change you're looking to make, and you file a pull request to ask them to accept your changes. After reviewing your changes and accepting them (in the best case), then they can optionally pitch these changes to the original maintainer if they want (e.g. in the case of non-hostile forks).

      In the world where we actually live, the list of forks is more or less useless; if you were to suggest that someone take your changes into their "fork", then they'll call you a weirdo and say that's not how any of this works—if they say anything at all.

  6. srconstantin.wordpress.com srconstantin.wordpress.com
    1. I know exactly how I make money for this company
    2. there’s a difference between proper epistemic humility and just plain cargo-culting

      The distinction between Chesterton's fences and Rhesus ladders defined.

    3. The sensation of total unknowability
    4. People ought not be that good
    1. Damn. HN's feedback has been dogshit when responding to Dan's posts. (Or at least I can say that this has been the case for 2 out of 2 of the most recent pieces that I've seen posted and witnessed the reaction in near real-time. They're so bad that I'm not really interested in checking the sentiment on other, older pieces of his that I've read.)

    1. the low rate of people continuing to blog after starting a blog

      Work on solving it with the fanclub "economy".

    2. Right now I’m on a million-hour train ride from New York to Montreal. So I’m looking at the output of strace because, uh, strace is cool, and it is teaching me some things about how the command line tools I use all the time work. What strace does is capture every single system call that gets called when executing a program. System calls are the interface between userspace programs and the kernel, so looking at the output from strace is a fun way to understand how Linux works, and what’s really involved in running a program. For example! killall! I ran strace killall ruby1.9.1 2> killall-log.

      From Understanding how killall works using strace https://jvns.ca/blog/2013/12/22/fun-with-strace/

    3. When I read this book for the first time, in October 2003, I felt this horrid cold feeling, the way you might feel if you just realized you've been coming to work for 5 years with your pants down around your ankles. I asked around casually the next day: "Yeah, uh, you've read that, um, Refactoring book, of course, right? Ha, ha, I only ask because I read it a very long time ago, not just now, of course." Only 1 person of 20 I surveyed had read it. Thank goodness all of us had our pants down, not just me. This is a wonderful book about how to write good code, and there aren't many books like it. None, maybe. They don't typically teach you how to write good code in school, and you may never learn on the job. It may take years, but you may still be missing some key ideas. I certainly was. ... If you're a relatively experienced engineer, you'll recognize 80% or more of the techniques in the book as things you've already figured out and started doing out of habit. But it gives them all names and discusses their pros and cons objectively, which I found very useful. And it debunked two or three practices that I had cherished since my earliest days as a programmer. Don't comment your code? Local variables are the root of all evil? Is this guy a madman? Read it and decide for yourself!
    4. A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT.
    5. Why I really care is that Microsoft is vacuuming up way too many programmers. Between Microsoft, with their shady recruiters making unethical exploding offers to unsuspecting college students, and Google (you're on my radar) paying untenable salaries to kids with more ultimate frisbee experience than Python, whose main job will be to play foosball in the googleplex and walk around trying to get someone...anyone...to come see the demo code they've just written with their "20% time," doing some kind of, let me guess, cloud-based synchronization... between Microsoft and Google the starting salary for a smart CS grad is inching dangerously close to six figures and these smart kids, the cream of our universities, are working on hopeless and useless architecture astronomy because these companies are like cancers, driven to grow at all cost, even though they can't think of a single useful thing to build for us, but they need another 3000-4000 comp sci grads next week. And dammit foosball doesn't play itself.
    6. one of the most common blog formats was a blog that contained a single post explaining that person was starting a blog, perhaps with another post explaining how their blog was set up, with no further posts

      I used to wince at these posts, but now I encourage them. See A New Publishing Discipline.

    1. the great tools that have achieved widespread adoption understand the problems, and all their caveats, better than you. Picking any established tool to manage information and workflow and getting good at using it will usually yield better results.

      Counterargument: nobody's measuring anything.

    2. the great tools that have achieved widespread adoption understand the problems, and all their caveats, better than you. Picking any established tool to manage information and workflow and getting good at using it will usually yield better results.

      Counterexample: GitHub.

    1. it seems we’re moving to that direction

      None of this is really relevant. Of all the apps listed, none are especially relevant to the Web. They'd best be classified as internet apps. Granted, they might be dealing in HTTP(S) at some point as a bodge, but then again, almost everything else does, too, whether it's part of the Web or not.

      (re @eric_young_1 https://twitter.com/eric_young_1/status/1470524708730851328—not sure how well the twitter.com client and Hypothesis interact)

    2. there was line of thought among those making native GUIs (see also Sherlock) that future of the web was having more things from web pulled into native GUIs

      The dream is still alive among semweb people (incl. Tim Berners-Lee himself).

      The sad state of current norms re webapps created by professional devs leads to what probably seems like a paradox but isn't, which is that the alternate future outlined in this tweet is closer to the ideal of the Web than the "Modern Web".

    1. I buy domains on a regular basis and often from more than one registrar because of a better deal or TLD availability. As a result, I tend to forget I have some domains! True story, I once ran a WHOIS search on a domain I own.

      The subtext here is, "that's why i created BeachfrontDigital". But this shows how "apps" (and systems) have poisoned how we conceptualize problems and their solutions.

      The simplest solution to the problem described is a document, not a never-finished/never-production-ready app. Bespoke apps have lots of cost overhead. Documents, on the other hand—even documents with rich structure—are cheap.

    1. the name Standard Markdown was "infuriating"

      See also: standardjs.com. The arrogance that it takes to try to pull stuff like this is... hard to describe.

    2. We haven't heard back after replying last night

      Geez.

    3. Compatible

      "Interoperable", you mean.

    4. It was a bit of a surprise

      ... why? Maybe it was only clear in hindsight, but Gruber's lack of response to the request is functionally equivalent to a pocket veto.

    1. As a relatively new C++ developer at the time, the number of syntax errors I made was high.

      The thing about syntax errors is that even if the build takes a long time (project is huge), syntax errors can be detected quickly.

    1. The final keystone was when the program that a computer runs was moved to where the data is stored, rather than being represented or input physically. This effectively created what we now know of as software. Obvious in hindsight, yet almost impossible to see from the past’s vantage point.

      Good way to describe ANPD.

    1. Our vision is to free the world from technological and legal barriers for all software and cultural works to be free

      Social barriers important, too, but underappreciated.

    1. I'd argue it's slightly different--

      It is different. However, they're similar enough to draw lessons from.

      I use similar, non-specced canaries all the time. E.g. small fixes for things in projects that are nonetheless obvious errors, or determining whether someone is going to try to frame my attempt to contribute by "upperhanding" me, whether they're hostile to messages attached to a name that they don't recognize, etc.

      For example, if it takes too much back and forth to get a typo or link fixed in the docs (or any sort of review process for content on what is purported to be a "wiki"), then odds are, things are messed up at a greater level that are going to be a source of frustration later. At that point, I'm out.

      A surprisingly large number of projects fail these, in what we are otherwise expected to consider the present Renaissance of FOSS...

    1. Now we update as needed and make good use of the Internet Archive WayBack Machine for legacy or potentially unstable URLs.

      Stanford runs their own archive instance (https://swap.stanford.edu/). Why shouldn't the LOC, too?

    1. there's no job that I can't--that I won't do. I like to have--I have this little saying that, "The successful people in the world are the people that do the things that the unsuccessful ones won't." So I've always been this person that, you know, I will build the system, I will fix the bugs, I will fix other people's bugs, I will fix build breaks. It's all part of getting the job done.
    1. And she’s actually still working a customer-facing job, not promoted into a corner office management position where she would never be exposed to a real-world problem like mine.
    1. It absolutely takes some getting used to

      Does it? It's pretty much just as easy or easier than doing it the way that everyone else insists is correct. I'm more than half convinced, in fact, that the npm install way being unnatural is the reason why it's sacrosanct. You can't just let things be easy—people dislike any state of affairs where their experience/participation isn't some combination of necessary and valuable.

    2. I've tried making this case. People flip their shit and then for lack of a good argument they start doing that thing where they try to shut you down because of how weird it is—and you don't want anyone thinking you're weird, do you?

    3. At first this struck me as unusual

      It is unusual. It's not a bad thing to do, but it is still, in the literal sense of the word, unusual. That doesn't say anything about the practice itself so much as it says something about how bad the "usual" way of doing things is.

    1. If you try to export the document in an internet-compatible format like HTML, you get a mess.

      I've noted elsewhere that despite the reputation of WYSIWYG editors' tendencies for handling HTML, modern mainstream Web development practices are so bad today that just typing a bunch of junk into LibreOffice and saving as HTML results in one of the most economical ways to do painless authoring of Web content...

    1. Who does that server really serve?

      This gets it right. The similar essay "The JavaScript Trap" is anathema. As Richard was later cajoled into clarifying:

      to be philosophically clear, the language JavaScript, as such, is not morally better or worse than any other language. What's bad is running code immediately as it arrives from someone else's server

      The clarification is needed. With the existence of "The JavaScript Trap", people are under the (silly) impression that JS or programs written for the browser and executed by its JS engine are inherently bad.

    1. Contributor License Agreement

      Broken link. (And it's an antipattern, anyway.)

    1. Use URIs as names for things

      In "FactForge: A fast track to the Web of data", Bishop et al give this criterion as, "Use URIs as identifiers for things".

      There may need to be a zeroeth step here, which is "don't make the mistake of designing systems in such a way that things can't be identified by name".

    1. Once one has gotten used to the idea of no moving' parts, he is ready for the idea of no keyboard 'at all: Suppose the display panel covers the full extent of the notebook surface. Any keyboard arrangement one might wish can then be displayed anyWhere on the surface.
    1. WebKit is way behind the 2 major browser engines

      Weird statement. WebKit is an element in the set defined as "the 2 major browser engines".

    1. Two things that still need to be addressed in section 7:

      • the top module is special
      • an uncluttered root directory is good practice
    2. /// import { LineChecker } from "./LineChecker.src"

      That's not right... should be "./src/LineChecker.src". (The fact that the compiler isn't throwing an error on this is a bug in and of itself...)

    3. Adding an implementation of the system interface)

      Spurious close paren here.

    4. Next, we discuss the implementation strategy.

      s/.*/Let's discuss an implementation strategy/

    1. adding a new website should not require someone to go through the cumbersome process of forking the repo and sending a pull request.

      Someone should launch a "No regressive GitHub bullshit club".

    1. This loop showcases a UI pattern that I think could be improved. There is an "edit" button visible, which opens the sidebar. The principles should more closely resemble the Hypothesis sidebar. Instead of requiring an explicit edit button which the user clicks, the editor should operate on object selections. Merely clicking any of the displayed values should select it, which should provide a handle to the underlying object, which should reveal the editor sidebar (with, ideally, the relevant field focused).

    1. With that in mind, I'm trying something new, the guided tour for Mu. Ironically, it atomizes my previous docs by linking repeatedly into anchors in the middle of pages. Proceed if you dare.

      The current incarnation of the tutorial (https://raw.githubusercontent.com/akkartik/mu/7195a5e88e7657b380c0b410c8701792a5ebad72/tutorial/index.md) starts by describing "Prerequisites[:] You will need[...]", and then goes on to list several things, including various software packages—assuming a Linux system, etc.

      This is the idea I'm trying to get across with the self-containedness I've been pursuing (if not with triple scripts then at least with LP docs).

      That prerequisites list should be able to replace with two requirements, i.e.:

      "You will need: (1) this document, and (2) the ability to read it (assuming you have an appropriate viewer [which in 2021 is nowhere close to the kind of ask of the old world])"

    1. JavaScript is actually surprisingly fast because the demand for fast web browsers is huge

      Another way of saying that the use of V8 means that JS isn't actually an "interpreted language" (not that that's even a real thing).

    1. I have heard that Oracle's cloud has a free tier that even includes your own virtual private servers, so I may look into that eventually. Planning to use Oracle is something I never thought I'd be doing as a hobbyist, but these are interesting times.
    2. $4.33/month. A little more than I'd like to spend on silly hobby projects
    1. My ideal implementation would be a tool that I unleash on the output HTML files, crawling relative links to ensure they're all valid and that all pages are reachable. It would also ensure that any links to anchors within pages exist. Such a tool probably exists, but I haven't found it yet.

      Fielding's MOMspider, one of the very first web tools, does this, albeit not at build time in a static site generator.

    2. content\index.md

      Just say no to backslash for path separators, even on Windows.

      (I can't believe the Powershell people got this right originally and then chose to fuck it up.)

    1. I do wonder if this will eventually become a burden in the future when Node inevitably falls out of favor.

      "burden"

    2. since when have I enjoyed webpack
    3. looks like I need a full blown Ruby environment. No thanks!
    4. on Windows, since that's what I'm using

      Good example of why leveraging the browser's runtime is better. i wouldn't have guessed that the md2blog creator was using Windows. (And I didn't. I just assume that everyone is using a Mac, even though I'm on neither.)

    5. If a piece of software (or a web site) gets in my way, I usually just give up and move on because that first irritation is usually just the first drip of an approaching cascade of frustration.
  7. Nov 2021
    1. public type registry

      Any known previous occurrences to this phrase? It's used today in the Solid Project.

    2. From the WebNet 96 Conference Proceedings (San Francisco, California, October 15-19, 1996). https://eric.ed.gov/?id=ED427649

      This paper covers various shades of Semantic Web problems (not yet coined at the time) and several problems being dealt with by the Solid Project folks today.

    1. open & close a thank-you issue on GitHub if you can't contact them any other way

      Fuck this shit. Would you think it was a good idea to show your appreciation to someone by tipping them -$1?

      It's stupidly easy to achieve the intended effect without fucking it up. If you want to send your thanks but there is no obvious way to do that, then congratualations you have found a bug. File a bug report about that instead of subjecting the recipient and everyone else in the project orbit to your public wankery.

      Every item filed in a bugtracker should correspond to a defect.

      Stop encouraging people to misuse project infrastructure.

    2. Un-derailing

      The single best piece of advice in a column filled with bad advice.

    3. Create a rule specifying that the Github issue tracker is only used for bug reports, feature requests, or other discussion - not support inquiries

      This should go without saying. The fact that it doesn't is an indicator of a bigger issue that probably calls for a drastically different approach.

    4. If you're using GitHub

      "... then consider not".

    5. It's such a big lift for this project and I really appreciate you taking the time to make it.

      The problem with lots of these examples is that they read like a robot emulating what they think genuine sentiment sounds like. This example is no different.

    6. !
    7. Just like politics, it's best to exhaust the diplomatic options before considering the rest.

      Again: maybe modelling your approach off something that is broken is not the best thing to do.

    8. Maintaining an open source project, like other jobs that are public and often involve a lot of work, can be mentally draining.

      If these techniques are supposed to work and this is the result, maybe consider the possibility that all the advice here is not the way to go about doing things.

    9. Thanks for opening this pull request!

      Bad execution of mostly acceptable advice, in contrast to much of the earlier stuff, which constitutes bad advice.

      Things that you say should be true.

    10. Write in the genial voice using people's first names and friendly introductions

      Please, no (unless you're actually writing an email and introducing yourself).

      Bugtrackers are not message boards.

    11. The easiest way to say thank you is... simply
    12. I'm going to close this pull request, but I hope you can contribute in the future! If you need this change, feel free to maintain a fork.

      On the contrary, this kind of PR speak is a good example of how to piss people off by sounding like you think they're too stupid to recognize this "trick".

    13. Firing users

      "Open source" doesn't make this hard. How you're advocating that open source has to be done is what makes that hard. So stop doing that.

    14. All in all, open sourcing a thing means taking responsibility for it. You're making a statement that the thing will be available, updated, and real.

      Gross.

    15. You can't suggest they leave your store.

      You can.

    16. People have expectations that software will work, that issues with software will quickly be fixed, and that you'll answer their questions.

      Gross.

    17. Very successful projects with thousands of users quickly accumulate hundreds of support issues.

      If the costs are high, then start charging people for it.

    18. an issue tracker

      Please, no. This is a big reason why the relevant problems here exist in the first place.

    19. Gamified indicators tell a simple story

      It's almost like the way that GitHub is typically used is an example of how things shouldn't be done!

    20. Why is reporting a bug so hard that it justifies so many words?

      Because with the rise of GitHub, the behavior of most other bug reporters makes for a plethora of bad role models and a dearth of good ones.

    21. in certain job roles, there are expectations about another person's emotions and tone. In America, baristas are usually expected to be bright and cheerful.

      Yeah, and that could certainly use fixing. I'm getting a dreadful sense of foreshadowing here that making contact with this observation has led the author to an entirely different conclusion—e.g., that this is an argument by analogy where what follows is going to be a bunch of suggestions that ultimately make other things worse.

    1. Having a giant, flat namespace also seems wrong - Wikipedia seems especially strange in this regard, having Thingy_(Star_Wars) where Thingy is both a real thing and also present in some specific context; I frequently think it should be Star_Wars/Thingy

      Strong disagree. The tendency to the latter is awful. developer.mozilla.org committed this sin in the early days and then never shook it, despite many opportunities to do so and the many problems it caused.

      Guessable URLs for stuff like reference works especially are an amazing affordance on the user end but also a much more economical use of resources on the implementor's end, because it eliminates both the fixed upfront creation cost as well as the recurring cost associated with waffling or bikeshedding about the hierarchy.

      Probably one of the best things that any single person or organization can do is to identify stuff that looks like it's productive work but isn't, and then eliminate both it and the conditions that allowed it to occur, made it seem like a good idea, etc.

    1. Memex began and remained as an ambiguous an not too original concept

      I think memex is valued as a touchstone rather than an invention, and that's how it should be treated.

    Annotators

    1. Suddenly we’d come full circle. The fastest way to launch programs was to type their name into a box, only a box that looked a bit more stylish than the terminal of old.
    1. "Oh, Joe is taking feature X? He never ships anything reasonable. Looks like we can't depend on it because that's never going to work. Let's do Y instead of Z since that won't require X to actually work". The roadmap creation and review process maintains the polite fiction that people are interchangeable, but everyone knows this isn't true and teams that are effective and want to ship on time can't play along when the rubber hits the road even if they play along with the managers, directors, and VPs, who create roadmaps as if people can be generically abstracted over.

      The movie "Moneyball" is a good example of how this can go wrong. People like Philip Seymour Hoffman's character create self-fulfilling prophecies of failure.

    2. Let's go further than this: details matter. It's weird how many people don't get this, despite the fact that we have an aphorism ("the devil is in the details") baked into our language.

    1. Download the file (eg, PDF) that you want to add to your local computer, and calculate the SHA-1 hash of the file using a tool like sha1sum on the command line. If you aren't familiar with command line tools, you can upload to a free online service.

      Instead of mentioning sha1sum(1) or linking to some seedy third-party service, dding a button right here to do calculate the SHA-1 for a given file would be trivial...

    1. input type="email" placeholder="user@domain.tdl..."

      Should be "tld", not "tdl". (But really should be something RFC 2606-compliant like "you@mailhost.example".)

    Tags

    Annotators

    1. This is a port of Michael Schierl's OberonXref from Java. Instead of requiring a JVM, you can run it directly in the browser.

    1. And what happens to that bytecode? First thing that happens is they build a tree out of it, because the bytecode verifier has to go in and make sure you're not doing anything [illegal].

      Lars Bak makes this point in a Channel 9 interview. I think it was this one (can't tell; dead link): http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine

      One of his interlocutors can't wrap his head around it. He makes a "but C# and Java are compiled languages"-type of argument comes off like Limmy's confused protest that "steel is heavier than feathers...".

    2. Instead, [Peter was saying] they do it all probablistically.

      The rise of non-algorithmic "algorithms".

    1. A question of ontology: Does battling the build system and the various tools mentioned count as "debugging"?

    1. Where the Action Is and Was in Information Science

      Wrong. Licklider is not an author on this. No one is except for Cawkell. Cawkell mentions the others in his letter.

    1. Y. Bar-Hillel, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorR. Carnap, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorE. C. Cherry, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorE. Garfield, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorD. W. King, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorF. W. Lancaster, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorJ. C. R. Licklider, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorD. M. Mackay, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorJ. W. Perry, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorD. J. De S. Price, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorG. Salton, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorC. Shannon, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorM. Taube, Director of Research Institute for Scientific Information 132 High Street Uxbridge, Middlesex England UB8 1DDSearch for more papers by this authorB. C. Vickery,

      These are all wrong. Cawkwell is the only author for this. The other names come from a list of others appearing in Cawkwell's letter (a list of the most cited authors, excluding self citations).

    2. Teh

      Should be "The".

    1. Modern JS development is rampant with this, with the profligate misuse of triple equals (===) almost everywhere where double equals would be appropriate as one example.

    1. As John Dickerson recently put it on Slate, describing his attempt to annotate books on an iPad: “It’s like eating candy through a wrapper.”

      The metaphor itself is pretty interesting considering that the premise already involves using an iPad. I remember when in the first few years after (capacitive) touchscreen devices became available to the mainstream, someone quipped that tablets are convenient and all until they're not—that trying to get real work done, especially when it requires typing, is like being forced to "think through a straw".

    1. CONTINUED ON P. 103

      wat. We're starting on page 104! This is running backwards.

    Annotators

    1. "It was impossible to explain to people what the Web would be like then, and now when you talk to millennials they can't understand what the problem was."

      The state of the world is worse than what is implied here. The implication, as I understand it, is that it's so difficult to conceive of a world that works any differently from the way Tim considers that it works today—that someone could live in a world without the Web and not know what's missing, and just as easy to exist in a world with the Web and not see it as anything other than obvious—because why would it ever have worked any differently, right? But I know empirically (and painfully) that people (whether millennial types of people or not) exist in a world where we do have this stuff and don't even understand what we have. I've had firsthand dealings with knowledge workers who still have the "I don't get it; so what?" reaction, to an exasperating degree. We are way, way short of Engelbart's vision.