3,132 Matching Annotations
  1. Jan 2022
    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

  2. 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.
  3. 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.

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

    2. Missing:

      • "An On-Line Information Network" (1965) [from the Project Intrex report]
    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.

    1. Librari Networks: Should TheyDear With Containersor Contents of Knowledge

      "Library Networks: Should They Deal With Containers or Contents of Knowledge?"

      Searching around, it doesn't seem like the outside world (e.g. Google Scholar, bibliographers) are aware that this piece Licklider wrote even exists, despite it being digitized and sitting here in the open.

      This piece presages the Internet Archive and, given the juxtaposition of its lofty goals with the piece's own obscurity, there's a perverse irony here.

      Licklider writes in section 2:

      It is high time that librarians reach out into computer networks to create order and functionality out of what is now chaos. (The author would- estimate that 90 per cent of the computerized information in EDUCOM universities "trickles down" to back-up or dead storage tapes within two years and that less than one per cent ever "perks up" again.)

      "Perking up" is more than what I'm talking about here—again, I can't find evidence that this piece is even catalogued anywhere.

    1. Is that failure or is that a bad zip file? The APPNOTE.TXT does not say. I think it should be explicit here and I think it's one of those unstated assumptions.

      Pretty sure it's because the ZIP files were expected to be written to multiple disks (floppies), and as alluded to earlier, if you wanted to delete a file, you could just insert the last disk containing the directory and "delete" it, therefore not requiring you to insert the disk(s) containing the actual file record to null it out (or overwrite with some other file record, potentially requiring 3 disk swaps). Thus, the ZIP format constitutes something like a filesystem implemented in userspace. 30 years ago, this was "obvious" and that's why you were expected to know this. There was no assumption that tradition and path dependencies would lead to ZIP still being widespread for cross-platform data interchange among machines capable of fast writes to local disks that have terabytes (although sometimes "merely" gigabytes) available.

    1. Lots of weird reactions to this post.

      In How to Stop Endless Discussion https://candost.blog/how-to-stop-endless-discussions/, the author explains the NABC model—"The model starts with defining the Need, followed by Approach, Benefits, and lastly, Competitors. Separating the Need from the Approach is very smart."

      Commenting in support, Simon Willison writes:

      We implemented a RFC-style process at a previous employer. [...] One thing that was particularly valuable was ensuring every proposal came with a "alternatives" section (called "competitors" in the NABC model). We also made sure that every proposal included "do nothing" as one of the alternatives

      https://news.ycombinator.com/item?id=25623388

      I scarcely think that the majority of people who are behaving as if React and/or the NPM-heavy workflow are things that simply must be dealt with have ever done on honest NABC and evaluated the foregone conclusions biased towards their preferred workflow against the do-nothing alternative of just not bringing all the heavyweight NodeJS-centric tooling into the picture.

    1. Until last week, I found this completely mystifying – I had no idea what import was doing and I didn’t understand how to use libraries in that way.

      The build tools are irrelevant (or rather, a red herring).

      JS has import statements. The build tools are (or at least should be) approximating what you get without the build tools interposing themselves into the development process, but doing it in a way that reinforces The Iron Law of Bureaucracy.

    1. The difference between tryingto imagine it working and having it do so is roughly like the difference between abearskin rug and a bear.

      See also: Knuth on Dijkstra in "Coders at Work".

    2. "You have tosubmit out of technical necessity"
    3. The computer, its accessories, and terminology, can givethe semblance of validity to all sorts of procedures or statistics
    4. This is the cybercrud problem: advice and creation of systems, supposedlybased on technical requirements, whose categories and rigidities are unnecessary.In the worst cases they are not only unnecessary but wrong.

      Still a problem.

    5. After the conference dinner, Theodor Nelson of The Nelson Organization, Inc.,described a vision of what the computer's use in instruction might become, if onlywe could see beyond the "trivial horizons" of most computer peop:.e

      Still a problem.

    1. Missing:

      • "We Are In Danger Of Building A Tower Of Babel" (1953)
    2. Missing:

      • Science Is Not Enough (1967)
    1. Once we learn how to create abstractions, it is tempting to get high on that ability, and pull abstractions out of thin air whenever we see repetitive code.

      DRY (Don't Repeat Yourself) < TRY (Try Repeating Yourself)

    2. I was aghast. The old code was a mess, and mine was clean!
    1. Engelbart has said he did not actually thinkabout Bush’s article before he started writing in1959 about the augmentation system.
    2. it is important to noteEngelbart’s further statement that, after read-ing theLifearticle in the Philippines, thearticle’s impact gradually receded in Engelbart’smemory
    3. ; http://www.e-papyrus.com/hypertext_review/chapter1.html

      This is a porn site today...

    4. As a matter of fact,Bush had written a preliminary version of anarticle describing the system as early as 1939;moreover, he had a sketch of it as early as1933.

    Tags

    Annotators

    1. missing: BURKE, COLIN B. 1994. Information and Secrecy: Vannevar Bush, Ultra, and the Other Memex. Metuchen, NJ: Scarecrow Press; 1994. 466p. ISBN: 0-8108-2783-2.

    1. "Over the past few years I've come to appreciate that freedom of [mental] movement is the key," he said, highlighting the nature of liquidity in putting thoughts to the page. "When you look about the freedom of your own hands moving, you have such incredible freedom of movement."'
    1. It was the introduction of the “like” button

      I think the early 2000s transition to actor-based indexing from topic-based indexing should be examined in depth. I think stronger identitarianism is at the root of polarization, and actor-based indexing laid the foundation for it. Likes were the fuel.

    2. FIRE

      Foundation for Individual Rights in Education http://www.thefire.org/

    1. A lot less nice, that example, isn't it?

      No idea what point Troy thinks he's making here, but he certainly sounds very satisfied with it.

    1. Stuff that’s already in standard Markdown works the way it should.

      Except, notably, for GitHub Flavored Markdown's terrible handling of ASCII CR and LF.

    2. GitHub’s implementation for code blocks, for example, looks like something a group of programmers would want to have; it looks more like code than text.
    1. Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.

      Most Markdown that gets published to GitHub is clearly written by people who have no problem grinding their muddy shoes all over this design principle.

      (Vanilla Markdown's syntax for inline links doesn't do a particularly good job upholding this principle itself.)

    1. the meta information is at the same level in the document as the content itself so that even if the document is printed and scanned back (with OCR), reader software will still be able to use it
    2. my word processor Author could already see extra metainformation on the macOS Clipboard when text copied from the Apple Safari web browser, that the text came from a specific web address etc
    3. the use
    1. When I was about 10 there was nothing I wanted more than to have a program that took minutes to build into an .EXE. In my mind that implied complexity and 'real' programming.