208 Matching Annotations
  1. Jul 2025
    1. I use a jekyll/CI/static hosting workflow, and even though I make a zillion git commits a day, somehow branching, editing, PRing, and merging one to my website seems like friction.

      This is at the root of the infamous "Blogging vs. blog setups" comic https://rakhim.org/honestly-undefined/19/.

      The fact that this is true is also the entire basis for wikis. It is reasonable to find it irksome that people, perversely, refer to Git repos full of Markdown documentation as "wikis"—which they aren't. They are fully the opposite.

    1. How about we use Python to process real-world data and then draw a few charts? Okay sure, let's fire up our trusty 1960s-era text editor (not Microsoft Word) and write some code. Wait, first we need to install the proper add-on libraries such as NumPy and Matplotlib. [an hour of troubleshooting later, especially for Windows users ...] Okay, let's write some code. [type, type, type] Yeah, isn't this fun and intuitive? Python makes it all so easy ...
    1. Alice: I couldn't compile your code. Look at this error message! Bob: It works for me! You use Debian 12? I still run Debian 9. That's surely what makes the difference. But I also have good news: I managed to run your code on my machine. The only problem is that... I get 0.8 nm. Alice: I use libode version 3.4. The documentation says it must be compiled with gcc 10 or later. You probably have an older gcc. Bob: Uhhh... Well... I will have to install a virtual machine with Debian 12, and you with Debian 9. Shall we meet again in a week?
  2. Jun 2025
    1. Modifying a serious open source codebase usually requires significant expertise and effort. This applies even for making a tiny change, like changing the color of a button . Even for a skilled programmer, setting up a development environment and getting acquainted with a codebase represents enough of a hurdle that it’s not casually pursued in the moment.
  3. Feb 2025
  4. Nov 2024
    1. There’s an abyss to cross between using an app and modifying it with code by calling APIs. The user has to switch to a whole other paradigm including setting up a development environment. Consequently, few users take the step from using a tool to customizing or making their own tools.
  5. Oct 2024
  6. Sep 2024
    1. Turco argued in 2016 that the problem was of supply more than itwas of demand; while it was certainly the case that the sometimes-bewildering multiplicity of potential user interfaces deployed fordifferent digital editions was one factor putting humanities schol-ars off using them, more significant was that the coding skillsets(or the resources needed to buy these in) was so alien to thosesame scholars that it was discouraging them from producing themin the first place
  7. Aug 2024
    1. My side projects from 2012-2017 cannot be built or ran because of dependencies. My jsbin repo with lots of experiments cannot be ran anymore. But I have the sqlite database.I forgot to pin dependencies when I was working. It would take a lot of trial and error and effort to get back to where I was.
  8. Jul 2024
  9. Jun 2024
  10. Feb 2024
  11. Jan 2024
  12. Dec 2023
    1. When the designer on the team, who also writes CSS, went to go make changes, it was a lot harder for them to implement them. They had to figure out which file to look in, open up command line, run a build step, check that it worked as expected, and then deploy the code.
  13. Nov 2023
    1. if you're going to write a 00:35:14 plugin for an ide prepare for your hello world to be days of learning and pages of code just to do the hello world

      If you're going to write a plugin for an IDE, prepare for your hello-world to be days of learning and pages of code just to do the hello-world.

    2. now i would love someday to do a plug-in for intellij that understands all of the 00:33:01 custom stuff for my game code right you know i would love to but you know that's that's a project

      Now, I would love someday to do a plug-in for IntelliJ that understands all of the custom stuff for my game code. Right? You know, I would love to, but you know that's that's a project.

    1. The web started off as a simple, easy-to-use, easy-to-write-for infrastructure. Programmers have remodelled HTML in their own image, and made it complicated, hard to implement, and hard to write for, excluding many potential creators.
    1. The repo was 3 years old. Surely it wouldn't be that hard to get running again? Ha!Here's what went well.Installing Android Studio. I remember when this was a chore - but I just installed the Flatpak, opened it, and let it update.Cloning the repo. Again, simple.Importing the project. Couple of clicks. Done.Then it all went to hell.
    1. Since infrequent developers spend relatively little time dealing with the language, setting up and running additional pieces of software is a much higher overhead for them and is generally not worth it if they have a choice.
    1. I sometimes find myself hacking together a quick console-based or vanilla JS prototype for an idea and then just stop there because messing with different cloud providers, containers, react, webpack and etc is just soul draining. I remember when I was 14 I'd throw up a quick PHP script for my project, upload it to my host and get it up and running in just a few minutes. A month ago I spent week trying to get Cognito working with a Serverless API and by the time I figured it out I was mentally done with the project. I cannot ever seem to get over this hump. I love working on side projects but getting things up and running properly is just a huge drag these days.
    1. My husband reviews papers. He works a 40h/wk industry job; he reviews papers on Saturday mornings when I talk to other people or do personal projects, pretty much out of the goodness of his heart. There is no way he would ever have time to download the required third party libraries for the average paper in his field, let alone figure out how to build and run it.
    1. The hidden curriculum consists of the unwritten rules, unspokennorms, and field-specific insider knowledge that are essential forstudent success but are not taught in classes. Examples includesocial norms about how to interact with authority figures, whereto ask for unadvertised career-related opportunities, and how tonavigate around the official rules of a bureaucracy.

      Clever. I also like the framing of MIT's "Missing Semester" https://missing.csail.mit.edu/

    1. almost every other time I've had the misfortune of compiling a c(++) application from scratch it's gone wildly wrong with the most undiagnose-able wall of error messages I've ever seen (and often I never manyage to figure it out even after over a day of trying because C developers insist on using some of the most obtuse build systems conceivable)
  14. Sep 2023
    1. The amount of boilerplate and number of dependencies involved in setting up a web development project has exploded over the past decade or so. If you browse through the various websites that are writing about web development you get the impression that it requires an overwhelming amount of dependencies, tools, and packages.
  15. Aug 2023
    1. Another way I get inspiration for research ideas is learning about people's pain points during software development Whenever I hear or read about difficulties and pitfalls people encounter while I programming, I ask myself "What can I do as a programming language researcher to address this?" In my experience, this has also been a good way to find new research problems to work on.
    1. With Go, I can download any random code from at least 2018, and do this: go build and it just works. all the needed packages are automatically downloaded and built, and fast. same process for Rust and even Python to an extent. my understanding is C++ has never had a process like this, and its up to each developer to streamline this process on their own. if thats no longer the case, I am happy to hear it. I worked on C/C++ code for years, and at least 1/3 of my development time was wasted on tooling and build issues.
  16. Jul 2023
  17. May 2023
    1. The paper had the "Artifacts available" badgea in the ACM Digital Library, highlighting the research in the paper as reproducible. Yet, the instructions to get the dataset required several steps rather than just a link: log in, find the paper, click on a tab, scroll, get to the dataset.
    1. A contrasting experience was to learn how to use the tools to turn my programs into executable. It was a painfully slow and deeply unpleasant process where knowledge was gathered here and there after trial, errors, and a lot of time spent on search engines.
  18. Apr 2023

    Tags

    Annotators

    1. Handleshave one serious disadvantage.Effective use requires the user’sWeb browser to incorporate specialsoftware. CNRI provides this soft-ware, but digital libraries havebeen reluctant to require theirusers to install it.
    1. Our informants recognized this as a general problem with tu-torials: “There’s an implicit assumption about the environment”(I5) and “many tutorials assume you have things like a workingdatabase” (I4). If tutorials “were all written with *less* assumptionsand were more comprehensive that would be great

    Tags

    Annotators

  19. Mar 2023
    1. After 10 years of industry and teaching nearly 1000 students various software engineering courses, including a specialized course on DevOps, I saw one common problem that has not gotten better. It was amazing to see how difficult and widespread the simple problem of installing and configuring software tools and dependencies was for everyone.
  20. Feb 2023

    Tags

    Annotators

    1. Usability and accessibility can impact where a technology falls on the spectrum: not paying attention to these dimensions makes it harder to move to higher levels of agency, staying more exclusive as "Look at what I/you/we can do, as the capable ones"
  21. Jan 2023
    1. We rebuilt Cloudflare's developer documentation - here's what we learned

      This post is one massive derp. (Or rather, the problem solved by the changes documented here is... The post itself would instead be best described as one massive "duh".)

      Spoiler alert: anti-wikis with heavyweight PR-based workflows that ignore how much friction this entails for user contributions don't beget many user contributions! (And it also sucks for the people getting paid to write and edit the content, too.)

  22. Dec 2022
    1. Six months passes and while you had almost forgotten about your little project, you now have got some new ideas that could make it even better. The project also has a few open issues and feature requests that you can take care of. So you come back to it. “Let’s start”, you whispered to yourself with excitement. You run npm install in your terminal like an innocent man and switch to your browser to scroll on Twitter while you are waiting for the dependencies to be installed. Moments later you return to your terminal and see… an error!

    Tags

    Annotators

  23. Nov 2022
    1. But. I somehow changed-ish laptop, and you know the problem where you change laptop and suddenly you lose access to a few things? Yes. That's one of my problems. This site was using nini to statically generate pages and interconnect them with backlinks, and it's great. But I figured I'll keep it to simple html pages that don't need any compilation for now, so that when I change this laptop, I'll still be able to publish without having to install anything.
  24. Oct 2022
  25. pointersgonewild.files.wordpress.com pointersgonewild.files.wordpress.com
  26. Sep 2022
    1. Over in the IndieWeb community we were having a conversation about how easy it should be for people to create their own websites (also for small local businesses etc.) Where making the site is basically the same as writing the text you want to put on it. Social media silos do that for you, but out on the open web?
  27. Aug 2022
    1. There has been significant pressure for scientists to make their code open, but this is not enough. Even if I hired the only postdoc who can get the code to work, she might have forgotten the exact details of how an experiment was run. Or she might not know about a critical dependency on an obsolete version of a library.
    1. today’s notebook implementations require note-book authors to take various precautions to ensure repro-ducibility, which are exactly the same as required for makingscripts reproducible: a detailed documentation of the soft-ware environment that was used, listing all dependencieswith detailed version information
    1. over the seven years of the project, I ended upspending a lot of time catching up with dependencies. Newreleases of NumPy and matplotlib made my code collapse,and the increasing complexity of Python installations addedanother dose of instability. When I got a new computer in2013 and installed the then-current versions of everything,some of my scripts no longer worked and, worse, oneof them produced different results. Since then, softwarecollapse has become an increasingly serious issue for mywork. NumPy 1.9 caused the collapse of my MolecularModelling Toolkit, and it seems hardly worth doing muchabout it because the upcoming end of support for Python 2in 2020 will be the final death blow.
  28. Jul 2022
    1. We never got there. We never distributed the source code to a working web browser, more importantly, to the web browser that people were actually using. We didn't release the source code to the most-previous-release of Netscape Navigator: instead, we released what we had at the time, which had a number of incomplete features, and lots and lots of bugs.
    1. @2:10

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

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

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

    1. it shows that any time that you make something easier or harder to do, either because it’s faster or slower, or just because you’ve reduced the number of steps, or you’ve made the steps more annoying, or you’ve added cognitive overhead, then people react by changing how they use your tool.
    1. @14:18:

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

    1. It took me an hour to rewrite my ui code and two days to get it to compile. The clojurescript version I started with miscompiles rum. Older clojurescript versions worked with debug builds but failed with optimizations enabled, claiming that cljs.react was not defined despite it being listed in rum's dependencies. I eventually ended up with a combination of versions where compiling using cljs.build.api works but passing the same arguments at the command line doesn't.
  29. Jun 2022
    1. There’s not much implementations can do, and it’s up to the debugger to be smarter about it.

      This is fatalistic thinking.

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

    1. I suspect because most software is optimized for industrial use, not personal use. For industrial uses the operations overhead is not a big deal compared to the development and operational efficiency gained by breaking things up into communicating services. But for personal uses the overwhelming priority is reducing complexity so that nothing fails.
    1. Developer documentation is incredibly important to the success of any product. At Cloudflare, we believe that technical docs are a product – one that we can continue to iterate on, improve, and make more useful for our customers.One of the most effective ways to improve documentation is to make it easier for our writers to contribute to them.

      Ibid

    1. The interconnectivity features need a server though, and that involves either using a third-party service, or spinning up your own VPS, which means added cost, and you’ll probably have to do that at some point anyway if you choose the third-party option at first.
  30. May 2022
    1. Today I tried to help a friend who is a great computer scientist, but not a JS person use a JS module he found on Github. Since for the past 6 years my day job is doing usability research & teaching at MIT, I couldn’t help but cringe at the slog that this was. Lo and behold, a pile of unnecessary error conditions, cryptic errors, and lack of proper feedback.
    1. > Movim is easy to deploy> Movim is lightweight (only a few megabytes) and can be deployed on any server. We are providing a Docker image, a Debian package or a simple installation tutorial if you want to deploy it yourself.I imagine a typical Tumblr user landing on this page and not getting a single word of the "easy to deploy" section.

      Related: comments about deployability of PHP over in the comments about "The Demise of the Mildly Dynamic Website".

    1. I still stick by the fact that web software used to be like: point, click, boom. Now it is like: let's build a circuit board from scratch, make everyone learn a new language, require VPS type hosting, and get the RedBull ready because it's going to take a long time to figure out.
    1. Psst: Philip gave me a copy of this piece (just like he did many others before he decided to unpublish it). I will totally let you peek at my copy (if you want, and if you happen to be in Austin—I'll respect Philip's commandment not to distribute unauthorized copies, but to reiterate: you're free to look at the copy I already have). It's a great article, even if lots of the feedback at the time unnecessarily focused on quibbling with his decision to characterize the issue as being inherent to "command-line bullshittery", rather than charitably* interpreting it as general discontent with the familiar pain** of setting up/configuring/working with any given toolchain and the problems that crop up (esp. when it comes at the price of discouraging smart or even brilliant people who have interesting ideas they wish to pursue.)

      * See also https://pchiusano.github.io/2014-10-11/defensive-writing.html

      ** See also http://lighttable.com/2014/05/16/pain-we-forgot/

  31. autonomous-data.noeldemartin.com autonomous-data.noeldemartin.com
    1. Autonomous

      This term is well-suited for the sort of thing I was going for with S4/BYFOB.

      @tomcritchlow's comment about being hobbled by CORS in his attempt to set up an app[1] that is capable of working with his Library JSON is relevant. With a BYFOB "relay" pretty much anyone can get around CORS restrictions (without the intervention of their server administrator). The mechanism of the relay is pretty deserving of the "autonomous" label—perhaps even moreso that Noel's original conception of what Autonomous Data really means...

      1. https://library-json-node-2.tomcritchlow.repl.co/library?url=https://tomcritchlow.com/library.json
    1. Imagine if node.js shipped inside Chrome by default!

      There was something like that, in HTML5's pre-history: Google Gears.

      I've thought for a long time that someone should resurrect it (in spirit, that is) for the world's modern needs. Instead of running around getting everyone to install NodeJS and exhorting them to npm install && npm run, people can install the "Gears 2" browser extension which drastically expands the scope of the browser capabilities, and you can distribute app bundles that get installed "into" Gears.

      Beaker (mentioned later in this post) was an interesting attempt. I followed them for awhile. But its maintainers didn't seem to appreciate the value of frictionless onboarding experience, which could have been made possible by e.g. working to allow people to continue using legacy Web browsers and distributing an optional plug-in, in the vein of what I just described about Gears.

    2. But… on installing node.js you’re greeted with this screen (wtf is user/local/bin in $path?), and left to fire up the command line.

      Agreed. NodeJS is developer tooling. It's well past the time where we should have started packaging up apps/utilities that are written in JS so that they can run directly in* the browser—instead of shamelessly targeting NodeJS's non-standard APIs (on the off-chance everyone in your audience is a technical user and/or already has it installed).

      This is exactly the crusade I've been on (intermittently) when I've had the resources (time/opportunity) to work on it.

      Eliminate implicit step zero from software development. Make your projects' meta-tooling accessible to all potential contributors.

      * And I do mean "in the browser"—not "on a server somewhere that you are able to use your browser to access, à la modern SaaS/PaaS"

  32. Apr 2022
    1. myvchoicesofwhatto.attemptandxIiwht,not,t)a-ttemptwveredleterni'ine(toaneiiubarma-inohiomlreatextentbyconsidlerationsofclrclfea-sibilitv

      my choices of what to attempt and what not to attempt were determined to an embarrassingly great extent by considerations of clerical feasibility.

    1. Not realizing that you need to remove the roadblocks that prevent you from scaling up the number of unpaid contributors and contributions is like finding a genie and not checking to see if your first wish could be for more wishes.

      Corollary: nobody wants janky project infrastructure to be a roadblack to getting work done. It should not take weeks or days of unrewarded effort in the unfamiliar codebase of a familiar program before a user is confident enough to make changes of their own

      I used to use the phrase 48-hour competency. Kartik says "an hour (or three)". Yesterday I riffed on the idea that "you have 20 seconds to compile". I think all of these are reasonable metrics for a new rubric for software practice.

    1. must not consist of a bag of tricks and trade secrets, but of a general intellectual ability

      I often think about how many things like Spectre/Meltdown are undiscovered because of how esoteric and unapproachable the associated infrastructure is that might otherwise better allow someone with a solid lead to follow through on their investigation.

    1. When something goes wrong with a computer, you are likely to be stuck. You can't ask the computer what it was doing, why it did it, or what it might be able to do about it. You can report the problem to a programmer, but, typically, that person doesn't have very good ways of finding out what happened either.
    1. The difficulty encountered by authors today when they create metadata for hypertexts points to the risk that adaptive hypermedia and the semantic Web will be initiatives that fit only certain, well-defined communities because of the skills involved
  33. Mar 2022
  34. citeseerx.ist.psu.edu citeseerx.ist.psu.edu
    1. Don’t read the code before learning to build the project. Too often, I see people get bogged down trying to understand the source code of a project before they’ve learned how to build it. For me, part of that learning process is experimenting and breaking things, and its hard to experiment and break a software project without being able to build it.
    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.

    Tags

    Annotators

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

    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.
  35. Feb 2022
  36. Jan 2022
  37. Dec 2021
    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])"

  38. Oct 2021
    1. Around @0:25:52

      Krouse: Another subset of "shit just works" would be—

      Leung:"No installation required"?

      Krouse: Yeah. "No installation required". [...] as I was just telling you, I spent the last, like... I spent 5 hours over the last two days installing... trying to install software to get something to run. And it's just ridiculous to have to spend hours and hours. If you want to get Xcode to run, it takes— first of all you need a Mac, which is crazy, and then second of all it takes, depending on your internet connection, it could take you a whole day just to get up and running. Why isn't it xcode.com/create?