106 Matching Annotations
  1. Feb 2024
    1. Not a web developer? Sucks to be you. The vast majority of the static site generator tools out there are run from the command line, powered by things you've never heard of like Node, Grunt, or Babel.
  2. Jan 2024
  3. 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.
    1. I hate npm so much. I had a situation where I couldn't work on a project because I couldn't get the dev environment running locally.
  4. Nov 2023
    1. This post is a narrative rant (in the same vein of Dan Luu's "Everything is Broken" post) about my problems one afternoon getting a Fancy New Programming Language to work on my laptop.
    1. Some people are extremely gifted mathematicians with incredible talent for algorithmic thinking, yet can be totally shut down by build configuration bullshit.
    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. 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. I was trying to make it work with Python 2.7 but, after installing the required packages successfully I get the following error:
    2. Cidraque · 2016-Oct-23 Only linux? :( Matt Zucker · 2016-Oct-23 It should work on any system where you can install Python and the requirements, including windows.
    3. Hi there, I can't run the program, it gives me this output and I can't solve the problem by myself
    1. My first experience with Scheme involved trying and failing to install multiple Scheme distributions because I couldn’t get all the dependencies to work.
    1. Thereafter, I would need to build an executable, which, depending on the libraries upon which the project relies could be anything from straightforward to painful.
    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)
  5. 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.
    1. Reading through your link I caught myself thinking if I would put up with all those boilerplate nix steps just to add a new page to the site.
  6. Aug 2023
    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.
  7. Jul 2023
    1. go sample from A gallery of interesting Jupyter Notebooks. Pick five. Try to run them. Try to install the stuff needed to run them. Weep in despair.
    1. I tried writing a serious-looking research paper about the bug and my proposed fix, but I lost a series of pitched battles against Pytorch and biblatex
    1. it's like all right someone built an app that's pretty cool now let me go set up my ide let me go download all these packages what's the stack they're using
  8. May 2023
    1. @17:03

      The idea of portability is not that you take your C code and recompile it and hope it compiles and hope the compilers have the same bugs in them.

  9. Apr 2023
    1. Once I was *attempting* (Igave up) to install an application and the first tutorial allowed mea choice of 6 ways to install something and none worked.
    2. 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

  10. 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.
    1. I could port it to Hugo or Jekyll but I think the end result would make it harder to use, not simpler.
    1. What problem does this try to solve?

      Funny (and ironic) that you should ask...

      I myself have been asking lately, what problem does the now-standard "Run npm install after you clone the repo" approach solve? Can you state the NPM hypothesis?

      See also: builds and burdens

  11. Feb 2023
    1. Checking your own repos on a new computer is one thing… inheriting someone else’s project and running it on your machine in the node ecosystem is very rough.

    Tags

    Annotators

    1. But my experience with build systems (not just Javascript build systems!), is that if you have a 5-year-old site, often it’s a huge pain to get the site built again.
    1. Author Response

      Reviewer #1 (Public Review):

      This work describes a new method, Proteinfer, which uses dilated neural networks to predict protein function, using EC terms and GO terms. The software is fast and the server-side performance is fast and reliable. The method is very clearly described. However, it is hard to judge the accuracy of this method based on the current manuscript, and some more work is needed to do so.

      I would like to address the following statement by the authors: (p3, left column): "We focus on Swiss Prot to ensure that our models learn from human-curated labels, rather than labels generated by electronic annotation".

      There is a subtle but important point to be made here: while SwissProt (SP) entries are human-curated, they might still have their function annotated ("labeled") electronically only. The SP entry comprises the sequence, source organism, paper(s) (if any), annotations, cross-references, etc. A validated entry does not mean that the annotation was necessarily validated manually: but rather that there is a paper backing the veracity of the sequence itself, and that it is not an automatic generation from a genome project.

      Example: 009L_FRG3G is a reviewed entry, and has four function annotations, all generated by BLAST, with an IEA (inferred by electronic annotation) evidence code. Most GO annotations in SwissProt are generated that way: a reviewed Swissprot entry, unlike what the authors imply, does not guarantee that the function annotation was made by non-electronic means. If the authors would like to use non-electronic annotations for functional labels, they should use those that are annotated with the GO experimental evidence codes (or, at the very least, not exclusively annotated with IEA). Therefore, most of the annotations in the authors' gold standard protein annotations are simply generated by BLAST and not reviewed by a person. Essentially the authors are comparing predictions with predictions, or at least not taking care not to do so. This is an important point that the authors need to address since there is no apparent gold standard they are using.

      The above statement is relevant to GO. But since EC is mapped 1:1 to GO molecular function ontology (as a subset, there are many terms in GO MFO that are not enzymes of course), the authors can easily apply this to EC-based entries as well.

      This may explain why, in Figure S8(b), BLAST retains such a high and even plateau of the precision-recall curve: BLAST hits are used throughout as gold-standard, and therefore BLAST performs so well. This is in contrast, say to CAFA assessments which use as a gold standard only those proteins which have experimental GO evidence codes, and therefore BLAST performs much poorer upon assessment.

      We thank the reviewer for this point. We regret if we gave the impression that our training data derives exclusively, or even primarily, from direct experiments on the amino acid sequences in question. We had attempted to address this point in the discussion with this section:

      "On the other hand, many entries come from experts applying existing computational methods, including BLAST and HMM-based approaches, to identify protein function. Therefore, the data may be enriched for sequences with functions that are easily ascribable using these techniques which could limit the ability to estimate the added value of using an alternative alignment-free tool. An idealised dataset would involved training only on those sequences that have themselves been experimentally characterized, but at present too little data exists than would be needed for a fully supervised deep-learning approach."

      We have now added a sentence in the early sentence of of the manuscript reinforcing this point:

      "Despite its curated nature, SwissProt contains many proteins annotated only on the basis of electronic tools."

      We have also removed the phrase "rather than labels generated by a computational annotation pipeline" because we acknowledge that this could be read to imply that computational approaches are not used at all for SwissProt which would not be correct.

      While we agree that SwissProt contains many entries inferred via electronic means, we nevertheless think its curated nature makes an important difference. Curators as far as possible reconcile all known data for a protein, often looking for the presence of key residues in the active sites. There are proteins where electronic annotation would suggest functions in direct contradiction to experimental data, which are avoided due to this curation process. As one example, UniProt entry Q76NQ1 contains a rhomboid-like domain typically found in rhomboid proteases (IPR022764) and therefore inputting it into InterProScan results in a prediction of peptidase activity (GO:0004252). However this is in fact an inactive protein, as discovered by experiment, and so is not annotated with this activity in SwissProt. ProteInfer successfully avoids predicting peptidase activity as a result of this curated training data. (For transparency, ProteInfer is by no means perfect on this point: there are also cases in which UniProt curators have annotated single proteins as inactive but ProteInfer has not learnt this relationship, due to similar sequences which remain active).

      We had also attempted to address this point by comparing with phenotypes seen in a specific high-throughput experimental assay ("Comparison to experimental data" section).

      We have now added a new analysis in which we assess the recall of GO terms while excluding IEA annotation codes. We find that at the threshold that maximises F1 score in the full analysis, our approach is able to recall 60-75% (depending on ontology) of annotations. Inferring precision is challenging due to the fact that only a very small proportion of the possible function*gene combinations have in fact been tested, making it difficult to distinguish a true negative from a false negative.

      "We also tested how well our trained model was able to recall the subset of GO term annotations which are not associated with the "inferred from electronic annotation" (IEA) evidence code, indicating either experimental work or more intensely-curated evidence. We found that at the threshold that maximised F1 score for overall prediction, 75% of molecular function annotations could be successfully recalled, 61% of cellular component annotations, and 60% of biological process annotations."

      Pooling GO DAGs together: It is unclear how the authors generate performance data over GO as a whole. GO is really 3 disjoint DAGs (molecular function ontology or MFO, Biological Process or BPO, Cellular component or CCO). Any assessment of performance should be over each DAG separately, to make biological sense. Pooling together the three GO DAGs which describe completely different aspects of the function is not informative. Interestingly enough, in the browser applications, the GO DAG results are distinctly separated into the respective DAGs.

      Thank you for this suggestion. To answer the question of how we were previously generating performance data: this was simply by treating all terms equivalently, regardless of their ontology.

      We agree that it would be helpful to the reader to split out results by ontology type, especially given clear differences in performance.

      We now provide PR-curve graphs split by ontology type.

      We have also added the following text:

      "The same trends for the relative performance of different approaches were seen for each of the direct-acyclic graphs that make up the GO ontology (biological process, cellular component and molecular function), but there were substantial differences in absolute performance (Fig S10). Performance was highest for molecular function (max F1: 0.94), followed by biological process (max F1:0.86) and then cellular component (max F1:0.84)."

      Figure 3 and lack of baseline methods: the text refers to Figures 3A and 3B, but I could only see one figure with no panels. Is there an error here? It is not possible at this point to talk about the results in this figure as described. It looks like Figure 3A is missing, with Fmax scores. In any case, Figure 3(b?) has precision-recall curves showing the performance of predictions is the highest on Isomerases and lowest in hydrolases. It is hard to tell the Fmax values, but they seem reasonably high. However, there is no comparison with a baseline method such as BLAST or Naive, and those should be inserted. It is important to compare Proteinfer with these baseline methods to answer the following questions: (1) Does Proteinfer perform better than the go-to method of choice for most biologists? (2) does it perform better than what is expected given the frequency of these terms in the dataset? For an explanation of the Naive method which answers the latter question, see: ( https://www.nature.com/articles/nmeth.2340 )

      We apologise for the errors in figure referencing in the text here. This emerged in part from the two versions of text required to support an interactive and legacy PDF version. We had provided baseline comparisons with BLAST in Fig. 5 of the interactive version (correctly referenced in the interactive version) and in Fig. S7 of the PDF version (incorrectly referenced as Fig 3B).

      We have now moved the key panel of Fig S7 to the main-text of the PDF version (new Fig 3B), as suggested also by the editor, and updated the figure referencing appropriately. We have also added a Naive frequency-count based baseline. This baseline would not appear in Fig 3B due to axis truncation, but is shown in a supplemental figure, new Fig S9. We thank the reviewer and the editor for raising these points.

      Reviewer #2 (Public Review):

      In this paper, Sanderson et al. describe a convolutional neural network that predicts protein domains directly from amino acid sequences. They train this model with manually curated sequences from the Swiss-Prot database to predict Enzyme Commission (EC) numbers and Gene Ontology (GO) terms. This paper builds on previous work by this group, where they trained a separate neural network to recognize each known protein domain. Here, they train one convolutional neural network to identify enzymatic functions or GO terms. They discuss how this change can deal with protein domains that frequently co-occur and more efficiently handle proteins of different lengths. The tool, ProteInfer, adds a useful new tool for computational analysis of proteins that complements existing methods like BLAST and Pfam.

      The authors make three claims:

      1) "ProteInfer models reproduce curator decisions for a variety of functional properties across sequences distant from the training data"

      This claim is well supported by the data presented in the paper. The authors compare the precision-recall curves of four model variations. The authors focus their training on the maximum F1 statistic of the precision-recall curve. Using precision-recall curves is appropriate for this kind of problem.

      2) "Attribution analysis shows that the predictions are driven by relevant regions of each protein sequence".

      This claim is very well supported by the data and particularly well illustrated by Figure 4. The examples on the interactive website are also very nice. This section is a substantial innovation of this method. It shows the value of scanning for multiple functions at the same time and the value of being able to scan proteins of any length.

      3) "ProteInfer models create a generalised mapping between sequence space and the space of protein functions, which is useful for tasks other than those for which the models were trained."

      This claim is also well supported. The print version of the figure is really clear, and the interactive version is even better. It is a clever use of UMAP representations to look at the abstract last layer of the network. It was very nice how each sub-functional class clustered.

      The interactive website was very easy to use with a good user interface. I expect will be accessible to experimental and computational biologists.

      The manuscript has many strengths. The main text is clearly written, with high-level descriptions of the modeling. I initially printed and read the static PDF version of the paper. The interactive form is much more fun to read because of the ability to analyze my favorite proteins and zoom in on their figures (e.g. Figure 8). The new Figure 1 motivates the work nicely. The website has an excellent interactive graphic showing how the number of layers in the network and the kernel size change how data is pooled across residues. I will use this tool in my teaching.

      We are grateful for these comments. We are excited that the reviewer hopes to use this figure for teaching, which is exactly the sort of impact we hoped for this interactive manuscript. We agree that the interactive manuscript is by far the most compelling version of this work.

      The manuscript has only minor weaknesses. It was not clear if the interactive model on the website was the Single CNN model or the Ensemble CNN model.

      We thank the reviewer for pointing out the ambiguity here. The model shown on the website is a Single CNN model, and is chosen with hyperparameters that achieve good performance whilst being readily downloadable to the user's machine for this demonstration without use of excessive bandwidth. We have added additional sentences to address this better in the manuscript.

      " When the user loads the tool, lightweight EC (5MB) and GO model (7MB) prediction models are downloaded and all predictions are then performed locally, with query sequences never leaving the user's computer. We selected the hyperparameters for these lightweight models by performing a tuning study in which we filtered results by the size of the model's parameters and then selected the best performing models. This approach uses a single neural network, rather than an ensemble. Inference in the browser for a 1500 amino-acid sequence takes < 1.5 seconds for both models "

      Overall, ProteInfer will be a very useful resource for a broad user base. The analysis of the 171 new proteins in Figure 7 was particularly compelling and serves as a great example of the utility and power of ProteInfer. It completes leading tools in a very valuable way. I anticipate adding it to my standard analysis workflows. The data and code are publicly available.

      Reviewer #3 (Public Review):

      In this work, the authors employ a deep convolutional neural network approach to map protein sequence to function. The rationales are that (i) once trained, the neural network would offer fast predictions for new sequences, facilitating exploration and discovery without the need for extensive computational resources, (ii) that the embedding of protein sequences in a fixed-dimensional space would allow potential analyses and interpretation of sequence-function relationships across proteins, and (iii) predicting protein function in a way that is different from alignment-based approaches could lead to new insights or superior performance, at least in certain regimes, thereby complementing existing approaches. I believe the authors demonstrate i and iii convincingly, whereas ii was left open-ended.

      A strength of the work is showing that the trained CNNs perform generally on par with existing alignment based-methods such as BLASTp, with a precision-recall tradeoff that differs from BLASTp. Because the method is more precise at lower recall values, whereas BLASTp has higher recall at lower precision values, it is indeed a good complement to BLASTp, as demonstrated by the top performance of the ensemble approach containing both methods.

      Another strength of the work is its emphasis on usability and interpretability, as demonstrated in the graphical interface, use of class activation mapping for sub-sequence attribution, and the analysis of hierarchical functional clustering when projecting the high-dimensional embedding into UMAP projections.

      We thank the reviewer for highlighting these points.

      However, a main weakness is the premise that this approach is new. For example, the authors claim that existing deep learning "models cannot infer functional annotation for full-length protein sequences." However, as the proposed method is a straightforward deep neural network implementation, there have been other very similar approaches published for protein function prediction. For example, Cai, Wang, and Deng, Frontiers in Bioengineering and Biotechnology (2020), the latter also being a CNN approach. As such, it is difficult to assess how this approach differs from or builds on previous work.

      We agree that there has been a great deal of exciting work looking at the application of deep learning to protein sequences. Our core code has been publicly available on GitHub since April 2019 , and our preprint has now been available for more than a year. We regret the time taken to release a manuscript and for it to reach review: this was in part due to the SARS-CoV-2 pandemic, which the first author was heavily involved in the scientific response to. Nevertheless, we believe that our work has a number of important features that distinguish it from much other work in this space.

      ● We train across the entire GO ontology. In the paper referenced by the reviewer, training is with 491 BP terms, 321 MF terms, and 240 CC terms. In contrast, we train with a vocabulary of 32,102 GO labels, and the majority of these are predicted at least once in our test set. ● We use a dilated convolutional approach. In the referenced paper the network used is instead of fixed dimensions. Such an approach means there is an upper limit on how large a protein can be input into the model, and also means that this maximum length defines the computational resources used for every protein, including much smaller ones. In contrast, our dilated network scales to any size of protein, but when used with smaller input sequences it performs only the calculations needed for this size of sequence.

      ● We use class-activation mapping to determine regions of a protein responsible for predictions, and therefore potentially involved in specific functions.

      ● We provide a TensorFlow.JS implementation of our approach that allows lightweight models to be tested without any downloads

      ● We provide a command-line tool that provides easy access to full models.

      We have made some changes to bring out these points more clearly in the text:

      "Since natural protein sequences can vary in length by at least three orders of magnitude, this pooling is advantageous because it allows our model to accommodate sequences of arbitrary length without imposing restrictive modeling assumptions or computational burdens that scale with sequence length. In contrast, many previous approaches operate on fixed sequence lengths: these techniques are unable to make predictions for proteins larger than this sequence length, and use unnecessary resources when employed on smaller proteins."

      We have added a table that sets out the vocabulary sizes used in our work (5,134 for EC and 32,109 for GO):

      "Gene Ontology (GO) terms describe important protein functional properties, with 32,109 such terms in Swiss-Pr ot (Table S6) that cov er the molecular functions of proteins (e.g. DNA-binding, amylase activity), the biological processes they are involved in (e.g. DNA replication, meiosis), and the cellular components to which they localise (e.g. mitochondrion, cytosol)."

      A second weakness is that it was not clear what new insights the UMAP projections of the sequence embedding could offer. For example, the authors mention that "a generalized mapping between sequence space and the space of protein functions...is useful for tasks other than those for which the models were trained." However, such tasks were not explicitly explained. The hierarchical clustering of enzymatic proteins shown in Fig. 5 and the clustering of non-enzymatic proteins in Fig. 6 are consistent with the expectation of separability in the high-dimensional embedding space that would be necessary for good CNN performance (although the sub-groups are sometimes not well-separated. For example, only the second level and leaf level are well-separated in the enzyme classification UMAP hierarchy). Therefore, the value-added of the UMAP representation should be something like using these plots to gain insight into a family or sub-family of enzymes.

      We thank the reviewer for highlighting this point. There are two types of embedding which we discuss in the paper. The first is the high-dimensional representation of the protein that the neural network constructs as part of the prediction process. This is the embedding we feel is most useful for downstream applications, and we discuss a specific example of training the EC-number network to recognise membrane proteins (a property on which it was not trained): "To quantitatively measure whether these embeddings capture the function of non-enzyme proteins, we trained a simple random forest classification model that used these embeddings to predict whether a protein was annotated with the intrinsic component of membrane GO term. We trained on a small set of non-enzymes containing 518 membrane proteins, and evaluated on the rest of the examples. This simple model achieved a precision of 97% and recall of 60% for an F1 score of 0.74. Model training and data-labelling took around 15 seconds. This demonstrates the power of embeddings to simplify other studies with limited labeled data, as has been observed in recent work (43, 72)."

      As the reviewer points out, there is a second embedding created by compressing this high-dimensional down to two dimensions using UMAP. This embedding can also be useful for understanding the properties seen by the network, for example the GO term s highlighted in Fig. 7 , but in general it will contain less information than the higher-dimensional embedding.

      The clear presentation, ease of use, and computationally accessible downstream analytics of this work make it of broad utility to the field.

  12. Jan 2023
    1. igal needs Perl to run and it also relies on a few other programs that come standard with most Linux distributions.
  13. 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!
    1. The migration would not be complete without calling out that I was unable to build the Mastodon code base on our new primary Puma HTTP server.
  14. 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.
  15. Oct 2022
  16. pointersgonewild.files.wordpress.com pointersgonewild.files.wordpress.com
    1. IMO: one of the biggest problems in modern softwaredevelopment• Code breaks constantly, even if it doesn’t change• Huge cause of reliability issues and time wasted• This is somehow accepted as normal

      ⬑ "The Code Rot Problem"

    1. We next made two attempts to buildeach system. This often required edit-ing makefiles and finding and in-stalling specific operating system andcompiler versions, and external librar-ies.
    2. Several hurdles must becleared to replicate computer systemsresearch. Correct versions of sourcecode, input data, operating systems,compilers, and libraries must be avail-able, and the code itself must build
  17. Sep 2022
    1. It's wild that you have to set up Docker to contribute to 600 characters of JavaScript.

      Current revision of README: https://github.com/t-mart/kill-sticky/blob/124a31434fba1d083c9bede8977643b90ad6e75b/README.md

      We're creating a bookmarklet, so our code needs to be minified and URL encoded.

      Run the following the project root directory:

      $ docker build . -t kill-sticky && docker run --rm -it -v $(pwd):/kill-sticky kill-sticky
      
    1. Many research projects are publicly available but rarely useddue to the difficulty of building and installing them
  18. 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. 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.
  19. Jul 2022
    1. if you’re a beginner you can use Replit which allows you to program through your browser without installing anything on your machine
    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. It's also hard to share this workflow with someone non-technical. I have to setup and maintain the correct environment on their machine
    1. That day in Erika Johnson’s high-school biology class, some 20 years ago, is seared into her memory. The teacher was leading the students through experiments involving cells from a widely used line known as HeLa. The cell line originated from tissue taken from a woman named Henrietta Lacks — and Johnson’s mother was a Lacks. “This is my great-grandmother I’m holding in my hand,” Johnson remembers feeling. “It was a very surreal situation.”Last month marked 100 years since Lacks’s birth. She died in 1951, aged 31, of an aggressive cervical cancer. Months earlier, doctors at the Johns Hopkins Hospital in Baltimore, Maryland, had taken samples of her cancerous cells while diagnosing and treating the disease. They gave some of that tissue to a researcher without Lacks’s knowledge or consent. In the laboratory, her cells turned out to have an extraordinary capacity to survive and reproduce; they were, in essence, immortal. The researcher shared them widely with other scientists, and they became a workhorse of biological research. Today, work done with HeLa cells underpins much of modern medicine; they have been involved in key discoveries in many fields, including cancer, immunology and infectious disease. One of their most recent applications has been in research for vaccines against COVID-19.But the story of Henrietta Lacks also illustrates the racial inequities that are embedded in the US research and health-care systems. Lacks was a Black woman. The hospital where her cells were collected was one of only a few that provided medical care to Black people. None of the biotechnology or other companies that profited from her cells passed any money back to her family. And, for decades after her death, doctors and scientists repeatedly failed to ask her family for consent as they revealed Lacks’s name publicly, gave her medical records to the media, and even published her cells’ genome online. (Following an outcry, the genome was soon removed.) Nature later published the genome of another HeLa line1 after the Lacks family reached an agreement with the US National Institutes of Health (NIH) to approve its release. Racism in science: the taint that lingers Now, the extraordinary events of 2020 — the #BlackLivesMatter movement for racial justice, and the unequal toll of COVID-19 on communities of colour — are compelling scientists to reckon with past injustices. Some have called for a reduction in the use of HeLa cells in research, or even an end to their use entirely. The argument is that, because the cells were obtained without Lacks’s knowledge or consent (even though this was legal at the time), any use of them is unethical and perpetuates an injustice.But that is not what many Lacks family members want. Henrietta Lacks has dozens of descendants, several of whom are leading a new effort in her centennial year, #HELA100, that instead calls for people to celebrate her life and legacy. “I want scientists to acknowledge that HeLa cells came from an African American woman who was flesh and blood, who had a family and who had a story,” her granddaughter Jeri Lacks-Whye told Nature.And there is so much to her story. Henrietta Lacks loved to cook — spaghetti was a favourite — and she loved to dance, often with one of her five children in her arms. She dressed stylishly and wore red nail polish. She was the emotional and psychological centre of a home where the extended family gathered and where the door was always open to anyone in need.To her grandson Alfred Lacks Carter, the most important thing about HeLa cells is how they have advanced cancer research — a fitting tribute, given that Lacks died of the disease. Many people have also told him that they were able to conceive a child because of in vitro fertilization, which was developed with the help of HeLa cells. “They were taken in a bad way but they are doing good for the world,” he says. And they do so for people of all ethnicities.Policy reviewOver the past decade, scientists and the Lacks family have worked together to establish stronger rules to govern the use of these precious specimens. But there is still much work to be done.First is action on consent. NIH director Francis Collins has signalled that he wants the research community to consider changing the Common Rule, the set of policies that protect human participants in research funded by the US government2.This revision would require consent to be obtained from anyone from whom biological specimens are taken before the samples are used in research — even if the specimens are “deidentified” from the person they came from. Most popular human cell in science gets sequenced Earlier efforts to make this change failed in 2017, but now is the time to revisit the Common Rule, and to reconsider the question of consent. In the past, some researchers have warned that this would impose additional burdens. But a compromise must be found. The last time the US Department of Health and Human Services worked to revise the Common Rule, it proposed a series of other changes at the same time; perhaps one way forward is to tackle the question of consent for biospecimens on its own, and with thorough discussion involving not only scientists, but also the public.A second, separate step must be to acknowledge and undo the disparities that are baked into basic research — because the systemic racism that existed when Lacks’s cells were taken still exists today.In the current climate of reckoning with racial injustice, some researchers who use HeLa cells have concluded that they should offer financial compensation. For example, a laboratory at the University of California, San Diego, and a UK-based biomedical company have announced donations to the Henrietta Lacks Foundation, which was established in 2010 by Rebecca Skloot, the author of a book about Lacks. The foundation awards grants both to Lacks’s descendants and to family members of others whose bodies have been used without consent for research. Other institutions and researchers must examine whether — and how — their own work builds on past injustices. And they must consider how best to make amends.COVID-19, a disease that is disproportionately affecting Black people in a number of countries, offers an opportunity for those who wish to usher in a fairer era of research. To give back now, researchers should not only study why the disease is more prevalent and severe among Black people, but also help to implement solutions to close the gap. And, once a vaccine is available — possibly as a result of work with HeLa cells — researchers must work with marginalized communities to see that it reaches those who need it most.The fact that Lacks’s cells were taken in a different era of consent will never justify what happened. The past cannot be undone, but we must acknowledge the wrongs of previous generations, and those wrongs that persist today. Justice must be done, and the time to start is now. Nature 585, 7 (2020)

      Great article by Nature.com about HeLa cells and their 100 year anniversary. Most recently used with Covid-19 vaccines

    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.
  20. Jun 2022
    1. other people’s toolchains are absolutely inscrutable from the outside. Even getting started is touchy. Last month, I had to install a package manager to install a package manager.
    1. Your personal dev environment travels with you no matter which device you use

      A lot of these ideas are junk. This one, though, is achievable. triplescripts.org.

    1. Built using Go, Hugo is incredibly fast at building large sites, has an active community, and is easily installable on a variety of operating systems. In our early discovery work, we found that Hugo would build our docs content in mere seconds.
  21. May 2022
    1. I have seen experienced developers pull their hair out for a day or more trying to get a basic build system working, or to import a simple module.
    1. This is a problem with all kinds of programming for new learners - actually writing some code is easy. But getting a development environment configured to actually allow you to start writing that code requires a ton of tacit knowledge.
    1. I can write JS and TypeScript easily enough but when I start a new project I'm always fighting the tooling for at least half an hour before I can get going.
    1. I just want to try this C++, download, unzip, oh it's windows so .project file. Fine, redo on windows , oh it's 3 versions of vstuido old and says it wants to upgrade , okay. Hmm errors. Try to fix. Now it's getting linking error.
    1. I woke up realizing one of the computers I use isn't set up to build and I wished I could use it to build and release the new version
    1. The thrill of getting "hello world" on the screen in Symbian/S60 is not something I'll ever forget. Took ages of battling CodeWarrior and I think even a simple app was something like 6 files
    1. Furthermore, its release philosophy is supposed to avoid what I call “the problem with Python”: your code stops working if you don’t actively keep up with the latest version of the language.
    1. Requirements: Ruby and Bundler should be installed.

      wat

      This site has a total of two pages! Just reify them as proper documents instead of compilation artifacts emitted from an SSG.

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

    2. An incomplete list of things I’ve tried and failed to do
  22. Apr 2022
  23. Mar 2022
    1. front-end dumpster fires, where nothing that is over 18 months old, can build, compile or get support anymore. In my day job, I inherit "fun" tasks as 'get this thing someone glued together with webpack4 and frontend-du-jour to work with webpack5 in 2022
    1. I tried building Firefox once but I wasn't able to, it's slightly outside of my competences at the moment
    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.
    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. 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 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.
  24. Feb 2022
    1. Editing a list of dependencies or wrangling with package managers doesn’t sound too bad

      Disagree. Sounds plenty bad.

  25. Jan 2022
  26. 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])"

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

    1. I no longer know how it works. I don't care to maintain it. It needs big changes to handle something like embedding a Jupyter notebook. And it depends on Python 2.6(!).With hundreds of pages, and its own custom URL layout that I don't want to break, I dread migrating
  28. Sep 2021
  29. Aug 2021
  30. Jan 2019
    1. Design Justice: towards an intersectional feminist framework for design theory and practice

      Design is key to our collective liberation, but most design processes today reproduce inequalities structured by what Black feminist scholars call the matrix of domination. Intersecting inequalities are manifest at all levels of the design process. This paper builds upon the Design Justice Principles, developed by an emerging network of designers and community organizers, to propose a working definition of design justice: Design justice is a field of theory and practice that is concerned with how the design of objects and systems influences the distribution of risks, harms, and benefits among various groups of people. Design justice focuses on the ways that design reproduces, is reproduced by, and/or challenges the matrix of domination (white supremacy, heteropatriarchy, capitalism, and settler colonialism). Design justice is also a growing social movement that aims to ensure a more equitable distribution of design’s benefits and burdens; fair and meaningful participation in design decisions; and recognition of community based design traditions, knowledge, and practices.

  31. May 2018
    1. have been from home, and for many of them, the first time they have been outside Oakland. Onthis trip, students must push themselves and depend on each other to complete unique challengesin unfamiliar surroundings; this experience gives them a new perspective of themselves and theirpeers. For example, students are asked to complete “a 9- or 10-mile hike and up two waterfalls,which is pretty ridiculous” in the words of one student. In one of the rituals of that trip, studentsare asked to write on paper their “rocks, the burdens they carry with them,” and crumple each ofthe sheets into the physical shape of a rock. All rocks are placed in a row, and students stand onone side. The accompanying teacher asks them to step over the rocks if they feel like they canmove on to the 11th grade despite those burdens. A teacher describes the emotionally powerfulreaction: There were a number of students in response to all those questions who didn’t feel theycould step over them, that stayed. And so we asked their classmates to help pull them over therow of rocks, to explain how they were going to help them graduate. It was really emotional. Ittook a long time, because there were a lot of kids that were on the side of “I don’t think I cangraduate,” but there were also a tremendous number of kids who said, “Yes you can.” Even kidswho don’t talk during the day, they said, “I know we’re not super close friends but I’ve seen youdo this specific thing in math class or I’ve seen you do this,” and so they pulled them over. In thepast we’ve had teachers advocate for kids. This year we just facilitated, and the kids dideverything: “No, you’re coming with me; I will pull you across the line to graduation,” and thatwas really beautiful. This emotional event focuses entirely on the students’ beliefs aboutthemselves and each other. It not only builds a stronger sense of mutual support and communitybut also serves as a reference point back at school: when a student struggles, the recollection,with reminders from teachers and peers, builds the student’s confidence in himself and feelingthat others are supporting him

      I like the examples on the camping trip. This story is incredibly powerful