3,132 Matching Annotations
  1. Mar 2022
    1. I am struggling to think of any open source project of any size beyond small NPM packages that I've experienced that do not have an arcane build system. At least all of the ones I've encountered have been incredibly obtuse, to the point that I've mostly just given up.
    1. I can enjoy my hobby in open-source without Github issues becoming a shouting match that spans 200 comments from people who aren't even invested in the codebase
    1. There are way too many dipshits who are way too happy to come out of the woodwork when this topic is brought up to try to drop an FYI wisdom nugget on you about how github.com will let you skip a few of these steps and do the edit/commit thing directly in your browser. Great job on almost entirely missing the point, morons. Let's be excruciatingly clear:

      If, at any point, "submit a PR" comes up during an explanation of how to do a run-of-the-mill edit on your project's wiki, then your project does not have a wiki.

    1. From the homepage:

      Repla is a macOS app that can[...]

      That's like the complete opposite of "just give me a document that I can double click to open from disk and view in my browser"...

    1. having to install 12gb xcode so i can convert my chrome extension to safari. or my local env/build system stop working because i update from catalina to big sur

    Tags

    Annotators

    1. I just dislike how non-native it feels and looks.

      I suspect VS Code's non-native look has actually contributed to the uptake from a subset of its users. A fullscreen terminal-based editor like Vim is also non-native as far as widget sets are concerned, but pleasantly so in at least one respect. When Chrome was released, when you asked people what they liked about it, sure they'd say it was fast and whatnot, but for a non-trivial segment of the world, they just liked how visually slim it was. They appreciated how little chrome was actually in Chrome. VS Code managed to reap dividends on its imports of the same approach to its "shell", even while not being particularly fast. (People point to VS Code as an example of a snappy Electron app, and they're not wrong insofar as the comparison goes to other typical Electron apps; on an absolute, non-weight-class-adjusted scale, though, VS Code is still pretty clunky—people just ignore it because of how slim it appears in comparison to IDEs like MonoDevelop[1].)

      1. https://upload.wikimedia.org/wikipedia/commons/0/01/Monodevelop-main-window.png
    1. This complaint reflects an obsession that also explains a continual interest in today's news. It's not quite FOMO. Rather, it's an agitation that no one is producing anything which you can miss out on!

      This is not something that should be lamented. Technological progress should be cumulative (along witth non-technological progress, for that matter).

    1. Grids like these are user-hostile—a clear choice to prioritize aesthetics over experience. In order to see what any given app does, I have to either:

      1. Figure it out by the name alone
      2. Click each one to fetch the relevant info (and wait for it to load)
      3. Mouse over each item to read the title text
    1. immediately purchased

      People are so quick to point out the lack of interest for people (and programmers, esp.) to pay for software. If this were distributed as HTML, maybe a way to hack around this unfortunate cognitive hangup would be to frame it as If you're buying an ebook: the manual for the software. It just so happens that this manual can be interpreted by a machine.

    2. I’m considering updating my Mac to Big Sur just to run this.

      Meanwhile, not only does the scope of this tool not merit the Big Sur requirement, it doesn't even require a Mac. It interaction style is so free of intracies that it could be developed (and distributed) as a single HTML file with a text input and some script blocks.

    1. Around @11:16:

      "What made HyperCard the ubiquitous product it was in the early 90s... was the fact that it was included free with every Macintosh sold. So anybody could use it to create somethnig, then share their creation with somebody else with the confidence that the other person would be able to run it."

      So that was in that day. What is the box today?

      Let me ask it another way: What is available on every computing device[...]?"


      I would encourage us all to find ways to make the system immediately available to users.

    1. To realize this potential, we must provide a medium that can be mastered by a single individual. Any barrier that exists between the user and some part of the system will eventually be a barrier to creative expression. Any part of the system that cannot be changed or that is not sufficiently general is a likely source of impediment.
    1. Paste commands triggered through a scripting API will only fire paste events and give access to clipboard contents if the implementation is configured to allow this. How implementations can be configured to allow read or write access to the clipboard is outside the scope of this specification.

      #restofthefuckingowl

    1. go to

      This tool should be a "codebook"—a downloadable document meant to be stored in an offline copy e.g. on the user's local disk, a la PDF (except still actually HTML, as here). I shouldn't need to "go to" anywhere to use it; that should only be necessary to get it the first time.

    1. it doesn't mean that we actually want all the instances in the heap to be reinitialized

      It's conceivable that people would find it overly cumbersome having to deal with this when prototyping from a REPL—enough to consider it a bad experience to keep them from trying.

      A live IDE could recognize that the user probably doesn't want that to happen for a given object, since it only just appeared a little while ago, so it should offer some fixup to save time for the user.

    1. I you want to get really pedantic with the use of "literally": you're misquoting him.

      Not the first time I've seen this sort of thing, but certainly the most egregious instance I know of. (What the hell was going on when 'hhjinks' typed that out and hit "reply"?)

    1. We've gone from "copyright infringement" to words like stealing and theft. They're fundamentally different concepts which were intentionally mixed up. If I steal from you, you no longer have what I've stolen. If I copy your software, you still have it

      I know people are really fond of this talking point, but it doesn't hold up.

      if you come to work at my sandwich shop, and you show up every day to make sandwiches, and then payday comes and I stiff you, then I have definitely stolen from you.

      The strongest retort to this is that this would be an instance of fraud, since in the sandwich shop we probably came to an agreement beforehand that I would pay you e.g. $15 per hour, but in the case of IP, this is incomparable because we never agreed to anything. This is pretty straightforwardly addressed by the observation that we live in a society where IP laws are in effect, so regardless of how any one person feels about IP in the abstract, we're all bound by the rules that are known at the outset. Because your decision as the creator to move forward and create the thing was predicated on an understanding that the rules are such as they are, then I actually do have an obligation to observe them just the same as my obligation not to stiff you for making my sandwiches. I don't get to start a game of Parcheesi with you under the pretense that we're going to play fair and then reveal midway through that I won't be governed by all the rules on basis that I don't believe that they're entirely justified. Fairness cannot follow from false pretense.

      The one way that it would be fair would be if I made my position known from the beginning and then everyone agreed to play anyway under my augmented ruleset, but it's important to observe that the obligation lies with me. What this doesn't mean, in a society with IP laws, is that it would be sufficient for me to declare (e.g. in a manifesto posted to my blog, or in an Internet message board comment, or whispered into the night) that I don't agree with IP and then proceed to fill up on all the stuff that I'd like. What proceeding with my augmented Parcheesi ruleset looks like is disengaging from the society where IP law is in effect and moving to Russia or Shenzhen or the habitat I've set up on the edge of Schiaparelli crater.

    1. some language I wrote went straight into their court filings in a lawsuit with multibillion-dollar stakes

      Morrissettesque irony

    1. You will need a JVM installed with appropriate enviornment settings (JAVA_HOME, etc) along with Maven 2.x+. You will also need Babel as well as SIMILE Butterfly. Butterfly should be installed in a peer directory to Backstage, like
    1. I have deleted /index.html. Right now, if I visit https://crussell.ichi.city, then the server returns a 404 (but it successfully(?) gives a directory listing). This is not a problem for e.g. https://crussell.ichi.city/bookmarklets/, which similarly lacks an index.html

    1. Response #1

      It would be nice to be able to have good subject lines. I'm thinking that if you register your form, then you should also be able to register a template string that can be used to build a good subject line (like "Riku key request for riku@x.colbyrussel.com"—built from Riku key request for ${email}).

    2. 1 hour ago

      It would be nice to have actual timestamps on these. The general approach is to include this as title text at least. ("At least", because I'm sure there's some semantic way to represent it, but I'm not sure what it is.)

    3. user_id=2

      probably don't want enumerable IDs

    4. POST to https://riku.miso.town/submit?user_id=2

      Maybe for new accounts, inline the manual here.

    5. logout

      This should be a button. (GET should be idempotent and free of side effects.)

    6. https://riku.miso.town/submit?user_id=2

      it would be nice to make this a link for easy copy and paste from the context menu. (You can use an event handler in JS to admonish the user not to click it and then cancel the event—or just copy it to the clipboard.)

    1. Neat hack. Could be combined with something like a local (or statically hosted) yub to prevent leaking private information.

    1. The PA group has given the name cliche to commonly used programming constructs.

      Later the industry began to call them "patterns" (cf Gabriel).

    1. Another unanchored thought I've had on these matters is coming around to viewing namespace collision as a feature, not a bug. If a programming system is designed to allow you to link against a given module and more or less ignore any and every transitive dependency that this will bring in—because the programming environment makes it excessively easy to do so—then that's a pretty strong reason to consider whether or not that approach to information hiding is actually an anti-feature.

      On the other hand, if during your work on a program you have to reconcile the names used within the system (i.e., such that no two module names collide), then it subtly encourages you to make sure you are able to account for every module that your program depends on.

      People reflexively assume that this would make it cumbersome (or even intractable) to work on a program any larger than a toy, but empiraclly we can observe that a single, shared namespace can, by and large, scale way better than these protests would lead us to believe. It's not out of the question that a project might reach, say, 100kloc with very little friction arising as a consequence of this sort of forced reckoning. (And it's worth considering of the friction that it does impose: is it any worse than the costs we've observed over the last ~10 years from the systems that set out to solve this problem?)

    2. Understanding a strange codebase is hard.

      John Nagle is fond of making the observation that there are three fundamental and recurring questions that dominate one's concerns when programming in C.

      More broadly (speaking of software development generally), one of the two big frustrations I have when dealing with a foreign codebase is the simple question, "Where the hell does this type/function come from?" (esp. in C and, unfortunately, in Go, too, since the team didn't take the opportunity to fix it there when they could have...). There's something to be said for Intellisense-like smarts in IDEs, but I think the criticism of IDEs is justified. I shouldn't need an IDE just to be able to make sense of what I'm reading.

      The other big frustration I often have is "Where does the program really start?" Gilad Bracha seems to really get this, from what I've understood of his descriptions about how module definitions work in Newspeak. Even though it's reviled, I think Java was really shrewd about its decisions here (and on the previous problem, too, for that matter—don't know exactly where FooBar comes from? welp, at least you can be reasonably sure that it's in a file called FooBar.java somewhere, so you can do a simple (and cheap) search across file names instead of a (slow, more expensive) full-text search). Except for static initializers, Java classes are just definitions. You don't get to have live code in the top-level scope the way you can with JS or Python or Go. As cumbersome as Java's design decision might feel like it's getting in your way when you're working on your own projects and no matter how much you hate it for making you pay the boilerplate tax, when it comes to diving in to a foreign codebase, it's great when modules are "inert". They don't get to do anything, save for changing the visibility of some symbol (e.g. the FooBar of FooBar.java). If you want to know how a program works, then you can trace the whole thing, in theory, starting from main. That's really convenient when it means you don't have to think about how something might be dependent on a loop in an arbitrary file that immediately executes on import, or any other top-level diddling (i.e. critical functionality obscured by some esoteric global mutable state).

    3. Software supply chains today are easy to subvert to smuggle malicious code into people's computers.

      Something happened that caused people to get mixed up about the idea–expression distinction. The single function as a module model is fine, but that doesn't justify the concrete technical decisions behind (e.g.) node_modules. The original development practice of just pasting the relevant code into your project should not have been sacrificed to satisfy the format/conventions of deficient tools. If function X is lifted from some other quasi-authoritative source, then the tools themselves should be improved to deal with that—not force humans to carve each of these modules up into their own repo, etc.

      The design of the lix package manager for Haxe rests upon the right idea—taking the code into your repo mitigates "software erosion".

    4. build easy from source code

      That's the explicit goal of triplescripts.org in its early stage—eliminating "implicit step 0" from software development.

    5. come with source code

      Alan Kay at OOPSLA 1997: "It should travel with all the things that it needs".

      See also: - Open Source is not enough - Actually portable executables - Package distribution is source distribution

    1. I have been personally and my whole professional life on Linux for 15y. And I have the exact same feeling when I have to compile something.The waste of time to compile anything is staggering. And more often than not I give up on failure after 2h.
    1. My sense is that existing codebases don't actually contain all the information needed to truly comprehend them. The context the system runs in, and all the precise issues it guards against.
    1. That would put these great conversations as starting points into our private notes, and put selected private thoughts (and better incentives) into our conversations

      Worth considering why these private notes are not first-class Hypothes.is annotations already (even if not marked public)!

    1. tlrobinson interpreted right that codebase size should be measured in number of tokens

      Bob Nystrom is fond of avoiding LOC measurements in favor of number of semicolons.

    1. Good use of XSLT to style an otherwise boring—and unfriendly—XML document (even though I dislike some of the specifics, like the font-size override).

      The template is here: https://feeds.buzzsprout.com/styles.xsl

      Why did we decide that every static site generator should invent their own ad hoc templating system again, instead just using XSLT, which is already standardized (and browser-native)?

    1. A few comments: - I had no idea that Mac OS Server once upon a time supported wikis and that it was so featureful (includes blogs, too!). For everyone on HN and alike who are prone to saying that it needs to be easier to run a server for normal people, someone would do well to just outright copy the apparent experience showcased here. - The edit-mode transition (you can see it around @9:20) is simple and subtle and nice.

    1. writing instead of formatting

      A substantial subset of the personal homepage contingency associated with blogging advocacy "movement" doesn't understand this.

    1. Except it sucks for everybody who's left out.

      Just like GitHub makes things a non-starter today, unless you've bought in to it the way non-technical people bought in to walled gardens like Facebook and excluded everyone else.

    2. So what's not to like about Trello

      The Ui, for one.

    3. While it's true that GitHub has become more accessible to non-programmers than it once was, these folks won't be comfortable making pull requests anytime soon.

      GitHub's accessibility even wrt programmers leaves much to be desired for anyone who was familiar with highly productive workflow before GitHub came along and apparently handicapped everyone's ability to conceive how things could be any better.

    1. Tools augment our hands and our bodies. They are deeply personal. When you're invited to a barn-raising you bring your own tools. I hope we'll be able to do the same when we come together to work online.
    2. Whether to inject behavior into a Web page is my choice. How I do so is nobody's business. If a need that can be met with a bookmarklet instead requires a set of browser-specific extensions, that's a tax on developers.
    1. Despite its warts, we continue to rely on e-mail with attachments as the standard enabler of these collaborations because it is a universal solvent. Our HR folks, for example, work for a different organizational unit than I do. Implementing a common collaboration system would require effort. Exploiting the e-mail common denominator requires none.
  2. srconstantin.wordpress.com srconstantin.wordpress.com
    1. commonly claimed drivers of institutional decay, like “knowledge problems” or “coordination problems”
  3. Feb 2022
    1. Rather than describing where to go on the Marriott site and what information to plug into the form when I got there, Brian composed a URL that encapsulated that data and transported me into Marriott's app in the right context.
    1. Web services and web sites are merely public facades to your internal databases

      "... unfortunately"

    1. let zeta = getProcessControl.bind(this); Object.setPrototypeOf(zeta, Object.getPrototypeOf(this)); return zeta;

      useful pattern

    2. no reference implementation of any such bookmarklet is described here

      The web app accessible from the subscriptions page maintains persistent state (browser features are reimplemented in code-on-demand payloads), so it will suffice to invoke the bookmarklet once, and then it stays resident, even across "page" "loads". So one approach would be to have the user navigate to the subscriptions page, select the subscriptions, invoke the bookmarklet, automatically navigate to the first show, have them invoke the bookmarklet again, automatically navigate to the previous page and then to the next show, have them invoke the bookmarklet again, and repeat until we've gathered everything. This would make for on the order of N clicks, where N is the number of subscriptions.

      Alternatively, it looks like the show pages are sufficiently RESTful (in the true sense), so we could just fire off a bunch of XHRs and parse the responses...

    1. This URL is referenced by Ted himself in his upload (to the Internet Archive) of the seminar "Hard and Fast Thoughts for a Softcopy World":

      <https://archive.org/details/HardAndFastThoughts1966>

      Meanwhile, a copy has already been available through IA, too:

      <https://archive.org/details/nelson-file-structure>

      (...albeit uploaded independently by Erica Fischer and not Ted.)

    1. The tool uses nodejs and once nodejs is installed, you can install the tool using:
    1. Also, this would be a good trick to use to realize "README.html":

      If folks were really committed to improving the developer experience, [...] development would work like this: ¶1. Download the project source tree ¶2. Open README.html ¶3. Drag and drop the project source onto README.html

      This is also a ripe place for the toolbench pattern to manifest.

      The README can both appear to take care of the ABCs and also act as the entry point to any other shell stowed away in the project. For example, in atticus.js, the README contains a line that says to run the tests "use tests/harness.app.htm on the project repo". We could kick off the build process, open up Contribute.app.htm, squirt the contents of README.txt.htm over there, and then display that to the user, making that region "live" (so actually getting to the test runner and running the tests is even easier).

    2. document

      Unused.

    3. this section

      Should have probably written "this entire section (including the preceding code block and the one that follows)".

    4. speak

      "to speak"

    5. code blocks

      "blocks containing our flavored pseudocode"

    6. Good opportunity here for the command-posting (postMessage-based) CLI paradigm.

    1. It's not just job postings. There are a related set of problems that should be solved here.

      The best thing that could happen for jobseekers in technical roles would probably be a guerilla effort to eliminate HR and internal recruiters from the job posting →interviewing → hiring pipeline as much as possible.

      What should this look like? A company that actively canvases for "leads" by talking directly to the prospective applicants' would-be coworkers and that compensates them for (a) high-quality, realistic, no-BS job postings that "route around" the fluff that comes out of the other parts of the org (b) information and involvement that leads to actual hires. By the time an application actually gets to the traditional handlers, it should be more or less a done-deal ready for being rubber-stamped.

      What's the source of the money faucet here? Start with existing referral programs. Maybe ask the hiree themselves to pledge a percentage of their first X paychecks (and then help them during salary negotiation to get more from the company—e.g. sign-on bonuses—than they otherwise would have gotten themselves, so it's covered).

    1. 12. 2017. What is the maximum length of a URL in differentbrowsers?http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers. (2017).
    2. 1. 2013. A History of Live Programming.http://liveprogramming.github.io/liveblog/2013/01/a-history-of-live-programming/. (Jan. 2013).
    3. 20. Andrew Cantino. 2017. SelectorGadget: point and clickCSS selectors.http://selectorgadget.com/. (2017).
    4. 32. Donald E. Knuth. 1984. Literate Programming.Comput.J.27, 2 (May 1984), 97–111.DOI:http://dx.doi.org/10.1093/comjnl/27.2.97
    5. Unlike an extension, a book-marklet works across all modern browsers and requires no in-stallation or privileged permissions, which helps eliminate theextrinsic complexities of software setup (Design Goal D1)

    Tags

    Annotators

    1. "outsider writing" and "out-insider writing" (e.g. Exporting Google Podcasts subscriptions)

    1. the guide shall be written in such a way that all we have to do is produce the guide itself and then a computer can do the heavy lifting—where we might otherwise expect a separate, possibly GUI-driven, "app" to be created for the end user to interact with, we accomplish the same effect by making the guide very detailed—in part also an attempt to evoke the style and quality of old equipment operation and repair manuals that used to be available, when such manuals could be expected to include e.g. full schematics. If done correctly, this should be sufficient for the guide itself to be interpretable by a machine.

      "comprehensive codebook"?

    Tags

    Annotators

    1. Currently you need to have Node and npm installed on your machine once this is done you can use it with the following command

      There's no real reason why Node/NPM should be required for this. You could dump the logic into a bookworms.html file and run it in the JS runtime that's already on someone's machine (their Web browser)...

    1. only jquery

      It would be nice if people would stop saying this—and saying it like this—as if it's a badge of honor. jQuery is a fuckin' beast. 10 years ago, the reason that the browser was being brought to a crawl on any given pages often came down to the fact that it was using jQuery. jQuery is the reason that bloated frameworks became normalized and brought us to where we are today. So, enough already with this just-a-little-jQuery stuff.

    1. Wordle's spread on social media was enabled in part by its low-tech approach for e.g. sharing scores.

      One low-tech approach that could've been used here for data persistence would be to generate and prompt the user to save their latest scorecard in PDF or Word format—only it's not a PDF or Word format, but instead "wordlescore.html" file, albeit one that they are able to save to disk and double click to open all the same. When they need to update their scorecard with today's data, you use window.open to show a page that prompts the user to open their most recent scorecard (using either Ctrl+/Cmd+O, or by navigating to the place where they saved it on disk via bookmark). What's not apparent on sight alone is that their wordlescore.html also contains a JS payload as an inline script. When wordlescore.html is opened, it's able to communicate with the Wordle tab via postMessage to window.opener, request the newest data from the app, and then update wordlescore.html itself as appropriate.

    1. Hammer cited a conflict between web and enterprise cultures as his reason for leaving, noting that IETF is a community that is "all about enterprise use cases" and "not capable of simple". "What is now offered is a blueprint for an authorization protocol", he noted, "that is the enterprise way", providing a "whole new frontier to sell consulting services and integration solutions"
    1. Good example of developer tunnel vision and something akin to the consultant effect or Pournelle's Iron Law—the opposite of disintermediation.

    1. I get the sense while reading this that the mentions of communities and commenters are HN and its users, just without explicitly naming either.

      Sure enough, the positive examples given link to HN, which makes me think that the negative examples where links are (probably deliberately) omitted are pulled from the HN comment section, too.

    2. I suspect we still haven’t come close to realizing the potential of even the internet technology of the 1990s

      No shit.

      There's been so much productivity regression, esp. driven by GitHub community norms, that it's exasperating to watch.

    1. The simple fact is that most users and most markets need only light-weight word processing
    1. I think PG is equivocating on "writing" here.

    2. But really I'm writing when I do this. I'm doing the mental part of writing; my fingers just aren't moving as I do it.

      So the thesis is tautologically true—and a lot less insightful. We're talking about thinking here.

    3. At best the plan is vague and incomplete. Very likely there's some undiscovered flaw that invalidates it completely. At best it's a plan for a plan.

      Simple disagree, but maybe we're not watching the same movies.

      The disconnect between the efficiency of explaining versus doing is real.

    4. Everyone watching the movie knows what that means.

      I don't understand what this means right now.

    5. Once you publish something, the convention is that whatever you wrote was what you thought before you wrote it. These were your ideas, and now you've expressed them. But you know this isn't true.

      I agree that we should not regard the conventional understanding as true—in the sense of treating it as always true. But I disagree with the suggestion of this piece, which is that it is never true.

      We shouldn't conclude too much from the existence of "broken" versions that were discarded. Much of the manufacture of clarity that comes out of writing is really just a consequence of putting it down in a way that is accessible to other people (probably, as PG says here, as a result of multiple revisions), but it's not necessary for firsthand understanding. Suppose I write some code, and it is correct. Later, I revise it to be clearer to a wandering party. This takes work, but have I accomplished anything with respect to what PG is saying here? Did I, when originally setting out to put it into a fixed form, find that my understanding was lacking and have to confront this and then only after reconciling the issue truly understand it—whereas I didn't before? No. It was correct before, and it's not more correct now; it's possible that I understood it perfectly well, I just didn't understand how to better explain it to others.

    1. > And someone who never writes has no fully formed ideas about anything nontrivial.This would imply that Socrates only had trivial ideas. Socrates would disagree with this statement, and so would a large number of people. This belief seems like a cognitive bias to me. If you prefer written ideas, unwritten ideas may seem trivial to you.

      Additionally, on the topic of fully formedness, when I write, a possible outcome is that the result is an incomplete snapshot (a less fully formed version) of the full version in my head. Writing is almost always IO-bound.

      cf Carl Sagan as Mr. X, and Ted Nelson on nonlinear structure.

    1. writing simply keeps you honest

      No. Counterexample: "it turns out". And I've run into my share of pithy HN comments conveying some choice heavy-lifting thought terminator. The simple writing in these instances is usually employed to cover up dishonesty—for the same reason that Mencken's quip about non-solutions that are "neat, plausible, and wrong" is often transformed to additionally characterize the offending offer as "simple"—because people know how effective a helper simplicity is to duplicity.

    1. Others because they want privacy

      AIUI, your account's contribution graph and feed are still public, not private, without a way to opt out—just like on GitHub.

    2. 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. Computer keyboards have been around since the 1950s

      But, notably, you can't assume their availability, due to touch-based devices.

    2. the only way to be completely protected from code rot is to target a platform that never changes

      More specifically, never changes anything in a way that causes breakage. (Platforms that change in a way that is merely cumulative are not a problem.)

    3. pick libraries that have a long history of being stable, well-maintained, backwards compatible and easy to install

      Counterintuitively, this is probably not the correct course of action. Related: https://hypothes.is/a/cd4J-uM1EeuKF1NB5CRzbQ

    4. How much time do we collectively waste, every year, fixing bugs due to broken dependencies?
    5. Researchers are encouraged to publish their code for the sake of replicability, but there’s not much point if nobody else is able to run said code a few months down the line.

      The role of Python and how hard it's pushed on researchers is something people need to get realistic about.

    6. Editing a list of dependencies or wrangling with package managers doesn’t sound too bad

      Disagree. Sounds plenty bad.

    1. I need a code exploration tool to "find my way" in big unfamiliar codebases

      Do you need an exploration tool to find your way through unfamiliar stories (e.g. books, films)?

    1. and keep your site consistent

      But maybe you don't need to do that. Maybe it would be instructive to take lessons from the traditional (pre-digital) publishing industry and consider how things like "print runs" and "reissues" factored in.

      If you write a blog post in 2017 and the page is acceptable*, and then five years later you're publishing a new post today in 2022 under new design norms and trying to retrofit that design onto your content from 2017, then that sounds a lot like a reprint. If that makes sense and you want to go ahead and do that, then fair enough, but perhaps first consider whether it does make sense. Again, that's what you're doing—every time you go for a visual refresh, it's akin to doing a new run for your entire corpus. In the print industry (even the glossy ones where striking a chord visually was and is something considered to merit a lot of attention), publishers didn't run around snapping up old copies and replacing them with new ones. "The Web is different", you might say, but is it? Perhaps the friction experienced here—involved with the purported need to pick up a static site generator and set your content consistently with templates—is actually the result of fighting against the natural state of even the digital medium?

      * ... and if you wrote a blog post in 2017 and the page is not acceptable now in 2022, maybe it's worth considering whether it was ever really acceptable—and whether the design decisions you're making in 2022 will prove to be similarly unacceptable in time (and whether you should just figure out the thing where that wouldn't be the case, and instead start doing that immediately).

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

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

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