3,021 Matching Annotations
  1. Feb 2022
    1. antimodern

      Useful term. Consider: "antimodern computing" in general or more specifically: "antimodern software engineering", "antimodern Web design", "antimodern deployment strategy", etc.

    1. Or Google Maps?

      If you can't imagine how stuff like this would be possible, "then", as Roy Fielding quipped, "most likely you just haven’t defined enough resources".

    1. We want a way to export Google Podcasts subscriptions that's easier than starting from scratch—i.e., with an empty podcast library that must be manually re-built gain (by cross-referencing your existing subscriptions, independently finding the feed URLs, etc.).

      In principle, this data is the sort of thing I'd expect to be available from Google Takeout. It's not. All right, fine. But then, it's the sort of thing I'd expect to have its API documented so sufficiently motivated people can bodge together their own "client"—something similar to the availability of the Google Books APIs. This, too, is missing. I don't expect the appearance of either, at least not any time soon.

    Annotators

    1. since then I hate the Node JS ecosystem

      So Gitea—or Codeberg, at least—should be amenable to the suggestion of un-messing the process of self-hosting where it brings the aspiring self-hoster into contact with NodeJS/NPM silliness. Make that part optional.

    1. People don't understand, for the most part, the idea of competing with yourself. If you can do something better, put it out alongside what you presently have and let natural selection take care of it.
    2. Most of the projects involve helping a company make its product work better for its users, so it's mostly interface stuff. But, usually, when I get to a company I discover that the real problems are structural with respect to the company, and I end up having to work on that a lot.
    3. The entire climate of our country seems anti-intellectual

      Lots of people forget (or were never conscious of) the bent that the US went on around this time (post 9/11).

      A lot of people can look at an artifact of that era like Idiocracy and think, "HAHA OMG SO TRUE" while thinking of how the world feels right now. But that's a mistake. Idiocracy in particular was a response to what it felt like at the time the movie was made. There are lessons, sure, but any time you try to interpret the past in terms of the present, you're going to miss some things.

      Anti-intellectualism in the US at the time of this interview was nuts, and the way things are right now doesn't even come close.

    4. UBIQUITY: You say there is no operating system? RASKIN: Not as far as the user is concerned.

      You could say the same thing about Oberon (which funnily enough was directly inspired by PARC's work).

    5. You should have seen the problems I had trying to explain how the Macintosh would work to people who'd never seen anything like it.
    6. There's the cut-and-paste where you forget to paste and lose what you've cut

      Personal observation: Cut has always struck me as a more exotic operation than the sense you seem to get about it hearing folks who were in computing prior to the 1990s speak. As far as I know, almost everyone I've encountered probably thinks foremost of "copy and paste".

    7. efficient (and thus time-saving) interfaces
    8. The Mac and Me
    9. then

      should be "than"

    10. Jef is my official legal name, it's not a nickname.

      This response is pretty evasive. It's true, but (a) Raskin's name was changed from his original birthname, and (b) it doesn't answer the question that was asked. (It's a response to a question/statement that wasn't asked.)

    11. Because the industry is stuck in the GUI (graphic user interface) paradigm. For many people, the current interface style embodies computers and other devices, and they can't imagine anything else.
    1. Raskin coined the term and founded the field of cognetics, the ergonomics of the mind
    2. Alluding to Isaac Asimov's first law of robotics, one of Raskin's mantras was that 'any system shall not harm your content or, through inaction, allow your content to come to harm'.

      See also Seven Laws of Sane Personal Computing (with particular attention to Law III).

    1. No experiments were done to see whether this made sense, and human factors on the Mac project mostly degenerated into whatever the programmers thought felt or looked good.

      Hey, sounds a lot like the approach to Firefox UI decisions circa 2010.

    2. limites

      should be "limits"

    3. Englebart

      should be "Engelbart"

    1. line in the sand between the old and new "smart" phone worlds

      I like this distinction—"new world" smartphones vs "old world" smartphones.

    1. the new RSS feed will be a full feed (no summaries) so you can happily continue reading JustUseEmail in your favorite RSS reader. UPDATE: In October 2021, with the new non-SSG site update, I ended up create the feed by hand and just found it unnecessary to put the entire article in the feed.

      double lame

    2. If you can’t get that feed in your RSS reader yet, wait a few days and try again. I am finishing up the final touches on the new website and it will be posted soon.

      lame

    1. Suppose the server were sending rel=canonical in a Link header for non-document resources (e.g. images like this one). Is the Hypothesis bookmarklet/extension thorough enough to deal with this?

    1. I used Publii for my blog, but it was very constraining in terms of its styling

      This is a common enough feeling (not about Publii, specifically; just the general concern for flexibility and control in static site generators), but when you pull back and think in terms of normalcy and import, it's another example of how most of what you read on the internet is written by insane people.

      Almost no one submitting a paper for an assignment or to a conference cares about styling the way that the users of static site generators (or other web content publishing pipelines) do. Almost no one sending an email worries about that sort of thing, either. (The people sending emails who do care a lot about it are usually doing email campaigns, and not normal people carrying out normal correspondence.) No one publishing a comment in the thread here—or a comment or post to Reddit—cares about these things like this, nor does anyone care as much when they're posting on Facebook.

      Somehow, though, when it comes to personal Web sites, including blogs, it's MySpace all over again. Visual accoutrement gets pushed to the foreground, with emphasis on the form of expression itself, often with little relative care for the actual content (e.g. whether they're actually expressing anything interesting, or whether they're being held back from expressing something worthwhile by these meta-concerns that wouldn't even register if happening over a different medium).

      When it comes to the Web, most instances of concern for the visual aesthetic of one's own work are distractions. It might even be prudent to consider those concerns to be a trap.

  2. www.geoffreylitt.com www.geoffreylitt.com
    1. Academic Publications

      Need to take the union of all these papers' bibliographic entries and dump them here.

      staticgen source: https://github.com/geoffreylitt/homepage/tree/master/source/wildcard

    2. browser extension

      I've spent a lot of time in frustrated conversations arguing the case for browser extensions being treated as a first class concern by browser makers (well, one browser maker). But more and more, I've come to settle on the conclusion that any browser extension of the sort that Wildcard is should also come with the option of using it (or possibly a stripped down version) as a bookmarklet, or a separate tool that can process offline data—no special permissions needed.

      (This isn't because I was wrong about browser extensions; it's precisely because extension APIs were drastically limited that this becomes a rational approach.)

    1. on top stacked laying flat on the left side, next to a potted plant on the right two other books to the right of the plant, spines not visible

      tools for thought rheingold MIT Press logo concept design: the essence of software jackson designing constructionist futures nathan holbert, matthew berland, and yasmin b. kafai, editors MIT Press logo structure and interpretation of computer programs second edition abelson and sussman MIT Press Indroduction to the theory of computation

      top shelf ordinary orientation: books upright, spines facing out tops leaning to the left

      toward a theory of instruction bruner belknap / harvard tools for conviviality ivan illich harper & row the human interface raskin addison wesley the design of everyday things don norman basic books changing minds disessa MIT Press logo mindstorms seymour papert unknown logo understanding computers and cognition winograd and flores addison wesley software abstraction jackson revised edition MIT Press logo living with complexity norman MIT Press logo the art of doing science and engineering—learning to learn richard w. hamming stripe press logo the computer boys take over ensmenger recoding gender abbate MIT Press logo weaving the web tim berners-lee harper dealers of lightning: xerox parc and the dawn of the computer age michael a hiltik harper the dream machine m. mitchell waldrop stripe press logo from counterculture to cyberculture fred turner chicago the innovators walter isaacson simon & schuster paperbacks a people's history of computing in the united states joy lisi rankin harvard the media lab stewart brand penguin logo

      bottom shelf ordinary orientation: books upright, spines facing out tops leaning to the right

      about face: the essentials of interaction design cooper, reimann, cronin, noessel 4th edition wiley the new media reader wardrip, fruin, and montfort, editors designing interactions bill moggridge includes DVD MIT Press logo interactive programming environments barstow, shrobe, sanderwall mcgraw hill visual programming shu software visualization editors: stasko, domingue, brown, price MIT Press logo types and programming languages pierce MIT Press logo smalltalk-80: the interactive programming environment goldberg addison wesley constructing the user... statecharts qa 76.9 .u83 h66 1999 the human use of human beings: cybernetics and society wiener da capo pasteur's quadrant stokes brookings scientific freedom: the elixir of civilization donald w. braben stripe press logo a pattern language alexander, ishikawa, silverstein, jacobson, fiksdahl-king, angel oxford the timeless way of building alexander oxford

    1. And here’s a photo of my computing bookshelf as of November 2020, with some of the books that have influenced me the most:

      Not accessible.

    1. I knowthatifI'mhere[pointstoa placeonthespreadsheet]inMunicipalBonds,thatIknowI'minthemiddleofthedocument,andI knowthatPreferredStocksisabovethat,andI knowthatCollaterizedMortgageObligationsarebelowthat,sodependingonwhatthenexttransactionis, Iknowwhethertogoupordown
    1. Twitter’s apparent time-efficiency

      Yes. From https://news.ycombinator.com/item?id=22991437:

      Despite how toxic it is, Twitter is very simple: get account, follow a few people, and you get a text field where you can write stuff, hit "Publish", and you can reach your audience.

    2. Remember that a blog is a ‘web log’, i.e. an online diary.

      Since "blog" is too opaque today, even with reminders like this, maybe the pro-blogging movement (that is, from the Latin pro; not as in "professional") should re-orient itself and take up a campaign around the phrase "lab log".

    3. Reading a blog should be like listening to the person talk, but with links

      Likewise, I wish reading an academic paper were more often like reading a blog post where they explain their work—most academics suck at academic writing! As a result, getting through the paper is usually tedious.

    4. academics (and students)

      Shouldn't this parenthetical be written, if anything, as "academics (including students)"?

    1. In other words, this minor difference between two Zip libraries made it possible to bypass the entire security model of the operating system.
    1. people would consider issues like how much churn there had been in various technology choices over the past ten years and how much there might be in the next ten. I think you would get rather different designs, and those designs would be easier to keep running for ten years

      I don't think we'd get this at all, and I think that's the real takeaway from YAGNI: most people are really bad at figuring out what they're "gonna need". If they weren't, then the phrase wouldn't exist.

    2. I think people are influenced by a general feeling that no matter what they do, it's probably not lasting for all that long

      The truth notwithstanding about whether or not they'd be right if they felt that way, I'm not sure it's accurate to say that this feeling actually exists. Certainly the the way people speak about new tech and the rationalizations that they reach for when adopting something new suggests that they think the thing that they're transitioning to is going to be the right one this time.

    3. the capabilities and constraints of the devices that your website is viewed on keep changing

      Mmm... those devices are getting faster and gaining new powers, not gradually shedding either...

    4. keeping your website's look 'up to date' requires changes

      Yeah, but...

      Keeping your website's look 'up to date' requires changes, but keeping your website up does not require "keeping its look 'up to date'".

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

    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.

  3. 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)
  4. 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

  5. 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.
  6. 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.

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