TandemAI is focused on lowering the barrier to entry to the most advanced tools in drug discovery. We designed our fully integrated pre-clinical drug discovery platform to empower researchers to discover therapeutic candidates faster and more efficiently.
What You'll Do: Develop highly specialized drug discovery interfaces. These are data-intensive applications that are highly interactive and allow researchers to launch and analyze simulations right from the browser.
Must-Haves: Fluent in English. Proficiency in React. Some knowledge of Chemistry (i.e. you should know what the difference is between a stereoisomer and a tautomer) Send a message with title "HN Senior Front-End Engineer" to frederick dot parsons at tandemai dot com
TandemAI is focused on lowering the barrier to entry to the most advanced tools in drug discovery. We designed our fully integrated pre-clinical drug discovery platform to empower researchers to discover therapeutic candidates faster and more efficiently.
What You'll Do: Develop highly specialized drug discovery interfaces. These are data-intensive applications that are highly interactive and allow researchers to launch and analyze simulations right from the browser.
Must-Haves: Fluent in English. Proficiency in React. Some knowledge of Chemistry (i.e. you should know what the difference is between a stereoisomer and a tautomer)
Send a message with title "HN Senior Front-End Engineer" to frederick dot parsons at tandemai dot com
The easiest way to avoid problems with multithreaded writes to globals is to not have multithreaded writes to globals. Ensure all writes to said global only occur in one thread. One possibility is to use e.g. locks and semaphores to ensure only one thread writes at a time, but nothing can beat the amazing synchronity that is imperative programming. Try it out some time. Tell your friends.
The real secret here is that there are very few things that actually need to be globally writable. Most things that are global should be constant, so not a problem. For those which aren't, you probably have some kind of IPC message passing thing in your programming tool of choice. Use it to pass any state changes to global state to your main thread, which changes it. Be aware that race conditions may happen. If they cause you issues, make them not happen any more. Don't worry so much about life.
There will be problems with every approach. Pick one with few problems, and deal with them as they come. Multithreaded programming is inherently complex. No need to make it worse than it is.
react-query has hook wrappers that allow accessing data you've fetched once across multiple components.
Calling the refetch in one will update all components using that data.
It's clean and minimises the need to think about shared state
Tandem AI is an advanced technology company dedicated to reinventing drug discovery infrastructure. The company integrates proprietary AI-driven, high-performance computation with its efficient, large-scale in-house wet lab operations to deliver a turnkey drug discovery solution.
We are looking for a Senior Engineer to join our growing Web Applications team. You will actively contribute to back-end and front-end initiatives for our cutting-edge computational platform with a focus on back-end. The candidate, will work to create a state-of-the-art client-facing molecular design web application that seamlessly integrates the Tandem AI molecular dynamics-based computational platform.
Our stack is React 18, Java Spring Boot, PostgreSQL and we use Slurm to manage our HPC jobs.
If you have a science background and strong engineering skills this could be an exciting opportunity for you!
If you're interested feel free to email me with subject "Hacker News TandemAI" directly at frederick [dot] parsons [at] tandemai [dot] com
All of these things cause structural inflation, and thereby necessitate structurally higher interest rates. Not to mention the fact that at the very least, the tailwind of globalization is over, which means that the ultra low rate regime we have enjoyed over the past few decades absolutely cannot be sustained. Inflation is back as a problem for the fed unless and until we got another sustained source of cheap growth.
There is one, and only one plausible such source imo, and that is powerful AI labor substitution. Hence the solution: Go long high interest rates, and make a levered long term bet on AI. These two things hedge each other. You don't have to believe AI labor substitution is going to happen (I'm not totally confident it will), all you have to believe is that it's our only out for structurally higher interest rates.
A portfolio constructed to benefit in the right proportions from these two things is currently cheaper than it ought to be, in my opinion. I expect this bet to play out roughly over the next 10-15 years, and I am still not decided on exactly how I want to construct it in terms of specific assets. But broadly I think it's the right move.
EDIT:
Totally separately, i'd like to quibble slightly with this bit of analysis:
> This suggests that, if interest and tax expenses had not declined as a share of EBIT (as shown in Figure 1), then the real growth rate of corporate profits would have been almost 2 percentage points lower each year (5.4 – 3.6 = 1.8 percentage points). In other words, the relative decline in interest and tax expenses is responsible for a full one-third of all profit growth for S&P 500 nonfinancial firms over the past two decades (1.8 / 5.4 = 1/3). This is a very substantial contribution
This isn't quite accurate. Cheap debt decreases the hurdle rate for capital investment. In other words, if rates weren't so low, much of this debt wouldn't have been taken out, and only the higher returning projects on average would have been invested in. Stated another way, as interest rates decline, the profitability of the marginal debt-financed investment declines along with it. It can also lead to anti-productive debt-financed market share wars between companies, etc (think of the vc battles between uber and lyft). This complicates the picture they're painting a bit, and likely reduces the true number here somewhat, but doesn't alter the broader story.