It’s a POSIX thing, and it has nothing to do with the file extension. The OP is right: file extensions are optional (and, as shown here, often actively misleading), but if they’re present they should match the actual file type. Which, in this case, is Python code , not a shell script.
HN user
klmr
Scientist/programmer. Known as @klmr on some social media/code platforms.
[ my public key: https://keybase.io/klmr; my proof: https://keybase.io/klmr/sigs/F9zackvFn6PE00C5T_IlAkRQPH_CVvp0aqSA-hysJ30 ]
Oh, I totally agree that ‘renv’ probably solves 95% of problems. But those pesky 5%…
I think that most problems are ultimately caused by the fact that R packages cannot really declare versioned dependencies (most packages only declare `>=` dependency, even though they could also give upper bounds [1]; and that is woefully insufficient), and installing a package’s dependencies will (almost?) always install the latest versions, which may be incompatible with other packages. But at any rate ‘renv’ currently seems to ignore upper bounds: e.g. if I specify `Imports: dplyr (>= 0.8), dplyr (< 1.0)` it will blithely install v1.1.3.
The single one thing that causes most issues for us at work is a binary package compilation issue: the `configure` file for ‘httpuv’ clashes with our environment configuration, which is based on Gentoo Prefix and environment modules. Even though the `configure` file doesn’t hard-code any paths, it consistently finds the wrong paths for some system dependencies (including autotools). According to the system administrators of our compute cluster this is a bug in ‘httpuv’ (I don’t understand the details, and the configuration files look superficially correct to me, but I haven’t tried debugging them in detail, due to their complexity). But even if it were fixed, the issue would obviously persist for ‘renv’ projects requiring old versions.
(We are in the process of introducing a shared ‘renv’ package cache; once that’s done, the particular issue with ‘httpuv’ will be alleviated, since we can manually add precompiled versions of ‘httpuv’, built using our workaround, to that cache.)
Another issue is that ‘renv’ attempts to infer dependencies rather than having the user declare them explicitly (a la pyproject.toml dependencies), and this is inherently error-prone. I know this behaviour can be changed via `settings$snapshot.type("explicit")` but I think some of the issues we’re having are exacerbated by this default, since `renv::status()` doesn’t show which ones are direct and which are transitive dependencies.
Lastly, we’ve had to deactivate ‘renv’ sandboxing since our default library is rather beefy and resides on NFS, and initialising the sandbox makes loading ‘renv’ projects prohibitively slow — every R start takes well over a minute. Of course this is really a configuration issue: as far as I am concerned, the default R library should only include base and recommended packages. But it in my experience it is incredibly common for shared compute environments to push lots of packages into the default library. :-(
---
[1] R-exts: “A package or ‘R’ can appear more than once in the ‘Depends’ field, for example to give upper and lower bounds on acceptable versions.”
But in all honesty for the pharmaceutical industry it’s mostly momentum that keeps R on top
I can’t agree with this: especially in PK/PD, R is only just now taking over from the previous (closed-source) systems. Momentum would keep R out, not in.
I can’t remember the last time a library incompatibility led to a show stopper.
Oh, it’s very common unless you basically only use < 5 packages that are completely stable and no longer actively developed: packages break backwards compatibility all the time, in small and in big ways, and version pinning in R categorically does not work as well as in Python, despite all the issues with the latter. People joke about the complex packaging ecosystem in Python but at least there is such a thing. R has no equivalent. In Python, if you have a versioned lockfile, anybody can redeploy your code unless a system dependency broke. In R, even with an ‘renv’ lockfile, installing the correct packages version is a crapshoot, and will frequently fail. Don’t get me wrong, ‘renv’ has made things much better (and ‘rig’ and PPM also help in small but important ways). But it’s still dire. At work we are facing these issues every other week on some code base.
That's not a lot
Indeed, that wouldn’t be a lot: the framing in the article is grossly misleading. The actual number of protesters this weekend was hundreds of thousands, and plausibly >1M (not “tens of thousands”), according to unanimous reporting in various German media and official sources (see e.g. https://www.tagesschau.de/inland/demos-gegen-rechts-bilanz-1...).
I’m not saying this doesn’t happen but I can’t remember ever having been asked to install a root certificate when joining an airport wifi. And I am confident that this has never happened when I’ve flown out from Gatwick.
why are there not mass protests about this?
Because we hadn’t heard about this case before. — At all. If the vague information in this article is actually corroborated there’ll be an outcry alright.
The entire point of TLS (let alone E2EE!) is to make something like this particular scenario safe.
Why? Because all typical, existing applications written for POSIX systems use the POSIX API (usually indirectly) to interact with the filesystem and perform IO. Being able to use that vast ecosystem of existing applications seamlessly with object storage is such a common requirement that a good dozen different object storage-to-POSIX abstraction layers exist (many of them on top of FUSE).
Even if you build your scalable production environment from scratch with native object storage support (which is rare!), it’s eminently useful to be able to use coreutils to interact with said object storage for devops: nothing beats e.g. running grep on a list of log “files” in an S3 bucket in terms of convenience.
… at Google, which i suspect is one of the companies you are referring to.
Just to clarify: no, I was referring to companies which are using products from the company behind cunoFS, and which share the actual code base of the functional interposition. My point is that while this technique is complex and brittle in general, this specific code-base is incredibly battle-tested and has proved itself even in fairly arcane configurations.
You’re definitely right about there being some amount of resistance, but functional interposition offers some compelling advantages over all alternative solutions in terms of ease of use and unparalleled performance.
this is not a recipe for stability of your binaries
I see the point in theory, but it works incredibly well in practice. The specific technology has been used in production by major companies for years. It even carefully works around buggy software that makes incorrect assumptions for undefined behaviour.
(COI disclaimer: I used to work on this product; but I no longer have any stakes in it, financial or otherwise. I do still use the product, because it’s vastly superior to the alternatives.)
but what has this to do with storage systems?
The article is about POSIX compliance (or lack thereof) of storage systems.
And the article does not imply that “POSIX … sucks”. On the contrary: the answer to the rhetoric question in the title is obviously “no”.
It's almost always a better idea … to write your own thin specialized glue layer between your application code and operating system APIs.
Oh, definitely. But writing good abstractions that work equally well with POSIX-compliant filesystems and with object storage is basically impossible without massive trade-offs. That’s the entire point of the product that’s advertised here: it provides a link between object storage and POSIX-compliant file access that manages these trade-offs extremely well, and it allows users to use their existing glue code for POSIX without having to deal with object storage altogether.
(COI disclaimer: I used to work on this product; but I no longer have any stakes in it, financial or otherwise.)
It’s pretty clear that the article is only comparing object storage with POSIX in the context of filesystems, not with all of POSIX.
If you save the offset (and you are, if you use a borrowed string) you can retrieve the original source code by re-reading the input file on the fly. This is expensive (due to IO, but especially also since you need to re-lex and recompute all offsets up to the point of the error), but it only needs to happen in case a parse error is generated, so the cost is likely negligible.
I’ve done this in a parser where I wanted to avoid storing line and column numbers instead of a single byte offset, but still wanted to provide the more user-friendly line and column numbers in the error message.
It’s also completely untrue. In reality the high cost is not because of greed but because of high manufacturing cost and the necessity for long hospital follow-up. Novartis is also not the only manufacturer providing CAR-T drugs at a high price. And lastly, they offer alternative payment programmes to make the therapy more affordable. https://en.wikipedia.org/wiki/CAR_T_cell#Economics
I recall when the pipe operator was first being proposed the argument for it was that it'd enable workflows that felt more like Excel.
Where are you getting that from? To start with the pipe operator has been independently reinvented multiple times in R, and neither ‘magrittr’ nor ‘dplyr’ were the first to introduce the pipe operator into R. And (at least when I was exposed to it), the pipe operator had nothing whatsoever to do with Excel. Instead, it was an attempt to introduce the composability concepts from the UNIX shell and Haskell composition into R.
Yes, it switches to a different audio codec, that’s unavoidable due to bandwidth limitations. However, macOS insists on using a worse codec than necessary (SCO instead of SBC) and, at least with my MX4 headphones, this badly scrambles audio, at least intermittently. I’ve stopped using the headphone microphone because it was unbearable. I’ve tried playing with the bluetooth settings but nothing seems to fix this.
Next week on HN: “curl: A command line tool and library for transferring data with URL syntax”.
Anyway, the submission led to several very interesting technical comments so I don’t hate it.
I’m a huge fan of the Sony high-end line, and am currently using the WH-1000XM4 myself. They’re excellent, but they do share quite a few of the annoyances listed in the OP article (in particular the delay when going from call to audio and vice versa, and the audio quality degradation; though, truth be told, I believe that’s a macOS issue), and they have their own annoyances. Most prominently, the utterly useless “second device pairing” audio message that plays for a full four seconds and drowns out whatever else you were listening to. I routinely need to ask people on a call to repeat what they said because of this. Yet Sony arrogantly states that this message is somehow “important” and therefore can’t be disabled.
It’s a weird quote anyway since there is commercial, proprietary software for DNA sequence analysis. Just a few examples of companies in this space are Sentieon, Edico (acquired by Illumina) and Parabricks (acquired by Nvidia). And Michael knows this (they’re sufficiently well known, and his own research laid some of the earliest foundations that Parabricks would ultimately build upon) so I’m assuming the quote was taken out of context or he was talking specifically about his own lab.
I dunno, I don’t think it’s that obvious: the physical movement in an LCD is across tiny masses and distances (at molecular scale); the network signal has to cross a distance that’s many orders of magnitude larger. Comparing these two things without looking at actual number doesn’t strike me as valid, even for approximations.
Furthermore, if I’m reading the RTINGS.com source posted below correctly, modern LCDs have smaller latencies than a transatlantic ping. So not only is it not obvious, it’s no longer universally true.
it wanted to blast crap into /usr
Homebrew only ever writes into `/usr/local`, which was unused by macOS until very recently (though unfortunately a few third-party tools also use it and lead to very occasional conflicts with Homebrew). The original rationale for using `/usr/local` over `/opt` was that, at the time several widely-used software packages had hard-coded installation paths and would require extensive patching to work in other locations [1]. This hasn’t been true for a long time though. On systems with Apple M1, Homebrew finally made the move to `/opt/homebrew`.
and did weird root shit
On the contrary, the philosophy of Homebrew is that package installations should never require superuser privileges. The only time Homebrew does “root shit” is when initially setting up `/usr/local` writability. Not weird at all. Though it does mean that Homebrew is effectively unusable (and a very bad idea!) on a multiuser system.
[1] https://docs.brew.sh/FAQ#why-does-homebrew-prefer-i-install-...
A modification in the frame of mind of genetic understanding is performed on a viral cell.
Let me be frank: this sentence is nonsense technobabble.
A segment of viral genome which encodes part of the body viral is excised and modified.
No, this does not happen (even ignoring that I don’t know what “body viral” means).
Indeed if you review my words you'll note that I explicitly address the lack of a defect.
And yet you use the term “reconstruct”. — Reconstruct what?
The mRNA vaccines we know today can certainly be viewed as a modification and reconstruction of viral genomic material.
This sentence becomes somewhat true if we use “information” instead of “material”. But that has nothing to do with gene therapy (as you seem to acknowledge yourself later!?).
Gene editing or genome editing is […]. Note the distinct concept from gene therapy
I hold a PhD in genomics. You do not need to explain basic molecular biology to me.
Even if only from the perspective of how information on Wikipedia can be construed by the layman - such as myself.
Then I humbly suggest that your understanding of the subject matter as a layman is — evidently — fragmentary, and insufficient for making up your own definitions and claiming them as being equally valid as those of experts.
It is a simple fact that there are two major definitions on the Wikipedia entry for gene therapy:
I read this as a single definition rather than two distinct ones but, regardless of how you read this, mRNA vaccines do neither of these two things.
it can be parsed as such that they are a genetic modification of a viral cell
No, it cannot be parsed like this. “Genetic modification” has a specific, technical meaning and mRNA vaccines do not perform it. Furthermore, I’m not even sure what you mean by “viral cell”, since viruses don’t form cells (they form virions). Do you mean a host cell infected by a virus? Because that doesn’t apply here: mRNA vaccines don’t specifically act on infected cells, they act on healthy cells.
we can parse mRNA vaccines as “the treatment of disease by reconstructing genetic material”
Again, we cannot do this, because it’s flat out incorrect. What does “reconstructing genetic material” even mean in this context? There’s no defect, so there’s nothing to reconstruct, and the mRNA vaccine does not do so anyway since, again, it does not modify the host genome.
— In general I’ll note that several sentences in your answer simply make no biological sense and use made-up terms.
Title: “Manufacturing gene and RNA therapies” “A challenge for both gene and RNA therapies is getting the nucleic acid molecules into a cell. […]”
These findings are probably spurious and caused by artefacts of their methods rather than real. In particular, the preprint you’ve linked to had glaring methodological flaws [1]. A revised version of the article [2] has addressed some, but notably not all of these flaws.
More importantly, though, all the paper shows is that under specific lab conditions (which are distinct from conditions in living cells!), viral RNA might integrate into the host genome (subject to the caveats about artefacts). In particular, it requires active retrotransposons [3], which are elements that are inactive in cells in the body. Unless a virus brings its own retrotransposon (and SARS-CoV-2 doesn’t), it can’t integrate into the host genome. But even if SARS-CoV-2 did, they mRNA vaccine definitely doesn’t include a retrotransposon.
[1] https://www.biorxiv.org/content/10.1101/2021.03.05.434119v1 [2] https://www.pnas.org/content/118/21/e2105968118 [3] https://twitter.com/GeneticsMike7/status/1404927629812240388
Here is an example where Harvard Stem Cell Institute discusses mRNA therapy as gene therapy: https://hsci.harvard.edu/translation/what-are-drugs-4-gene-t...
And the very next paragraph (in its heading, no less) makes it clear that RNA therapies and gene therapies are distinct, i.e. that RNA therapies are not (necessarily) gene therapies.
The Wikipedia article you cite doesn’t mention mRNA vaccines. The single mention of “mRNA payloads” does not necessarily refer to vaccines (there are other RNA therapies, and some of these might be gene therapies, although I don’t think they are) — but even if it did the sentence’s inclusion in this article is debatable at the very least.
Fundamentally, gene therapies always work by modifying the host genome. mRNA vaccines don’t do this (nor do any other RNA therapy approaches that I’m aware of).
Odd, why would this be? Read and write operations on temporary files need to go through the kernel and thus lead to frequent context switches. The same shouldn’t be true for a string buffer except on reallocation.
No, it doesn’t depend on the definition. This isn’t a point of contention amongst experts. The article you cite is simply wrong (in particular, its claim about the classification of mRNA vaccines as gene therapy in Europe is categorically false), it fundamentally misunderstands how mRNA vaccines work, and it misrepresents the sources it cites supposedly in support.
There seems to be an assumption underlying medicine that things must be true at the population level for them to also be true at the individual level.
That really isn’t true: medicine as a field does not have this assumption, and rare disease research is a thing (and it’s commonly acknowledged that “rare diseases”, taken together, aren’t rare at all). In fact, rare disease research is providing acute clinical diagnosis and sometimes cures for highly individual cases. Personalised medicine is probably the fastest growing subfield in medical research.
Your example of antidepressants underlines this: it’s in fact widely acknowledged that, while antidepressants on average only have a very mild effect, they can be very effective (or, conversely, not effective at all) for an individual, and they are actively prescribed with this in mind. Contrary to what you’ve claimed, no expert assumes that antidepressants have a uniform effect across subpopulations.
However, treating each disease as a completely individual case just isn’t feasible at scale, and is usually also not appropriate. So the first anamnesis will always focus on common diseases, and rightly so.