skysight-inc/HackerNews huggingface dataset:
Nix really is a purely functional, lazily evaluated language that is great at expressing dependencies in your project. You can think of it as a make on steroids, but it is much more than that.

Because the language expresses what to build from a known state (i.e. nothing is installed) together with its purely functional properties, means that for the same input (source code, dependencies, configuration options, system architecture etc) it supposed to always generate the same output.

Nix can be think of as package manager, and its nix-env command (which BTW is discouraged from Nix purist to use[1]) behaves like a package manager, but IMO it's more of a build system.

After the author of Nix wrote his thesis he mentioned that the language can describe an entire operating system. That's how NixOS happened. You can have a single configuration file that describes what needs to be installed on your OS how configured etc. The great thing is that you can take such configuration file, and recreate another machine with it configured exactly as you want it. No need for chef/salt/ansible etc. It actually has an edge over these tools, for example if you tell that specific package needs to to be installed, and than later you remove the package from the config, nix will remove that package as well (with chef/salt/ansible, you would need to add a state that's uninstalling the package), another benefit is that all changes are atomic, you either have your changes applied or nothing is changed, there's nothing in between (this makes things like replacing X11 with Wayland, or KDE with Gnome just another change, that you can always revert).

It's a very powerful tool, and the more I use the more amazing it seems. It shows that if you target specific problems the right way a lot of common headaches are eliminated.

[1] it's advisable to never install packages by hand using nix-env, since that adds mutability to your system, instead you should use nix-shell (another great tool) to temporarily make specific application available, use the global configuration.nix to install packages globally on the system, or use home-manager extension which allows you to configure each home directory (that means what dot files do, but also each user can have their individual packages, and goes further, for example you can even control what extensions firefox should have installed)
There arent enough jobs in building datacenters.
Probably banks have higher security standards /pay to choose better support staff that can be trusted to follow security protocols.
It's worth noting that the bugs aren't evenly distributed across language plugins. Bazel might be solid if you're writing Java or something.
Tools for the job
We've been using Nix for deploying a Rails app for an enterprise customer for quite a few years now. One area where it shines for us is the ability to build it on relatively recent version of Ubuntu and deploy to a (almost EOL) RHEL6 box. Bundling, assets and various other tasks take just a few minutes. We also have ~20 Go services that are also deployed via Nix, and building takes seconds.

However, it can be quite cumbersome to get a Nix expression to the point where it builds reliably for something that takes multiple steps like a Rails app, especially if you're building on macOS and deploying to Linux. It's come a _long_ way in recent years, but with Enterprise customers now embracing containerization we migrated everything to that and haven't looked back.
I think there is a middle ground where they don't release 32 brand new CPUs. Have you looked at the lineup of Intel CPUs? There are now hundreds with extremely minor differences.
Sure, companies may love it, but developers hate it.

I use a Windows laptop at the company I currently work for, because everything is locked down and I wouldn't be able to get my own laptop connected to the network. (Or so I thought; I co-worker managed to use the Windows laptop as a bridge to his own Macbook.)

Now you're right that as long as I stay in the IDE, it's not so bad. But every once in a while I need to do something outside the IDE, and I immediately get slapped in the face by how stupid some things are. And because it's an enterprise environment, some things are even worse than usual; opening a folder, or saving something, can be unreasonably slow because either it's a network drive or it needs to be checked for viruses and malware while I'm trying to use it. Or for some other reason. I don' t know, I just experience the extreme slowness.

Also, on top of the old terrible DOS shell, there's now also a Power Shell that's supposed to be better. It apparently has some powerful features I don't really grasp, but it's still not remotely as good as bash. And sometimes the command line really is unavoidable.

But the real pain is at home. When I activate Windows 10 on a new machine, I need to create a Microsoft account. I don't want one, but it takes serious determination to avoid it, because behind every message is another trick to sucker you into an MS account. When you finally do manage to create a local account, you're immediately expected to compromise your security with 3 insecurity questions, and no way to avoid it as far as I can tell. Previous versions of Windows did not have this stupidity.

Also, somehow Windows keeps losing my mic, speakers or camera. Once I've found the right troubleshooter, it immediately figures out how to fix it, which is great, but it also keeps losing them again. And finding the right troubleshooter takes a couple of steps and a bit of searching. I feel like I need to pin several relevant troubleshooters to the taskbar.

And then there's the total lack of access control. To install anything, you need to be admin. I gave my son a restricted account, but he can't do anything with it. I'd like to be able to create an account that can instal games, but can't compromise the system. No such option in Windows. If you can do anything, you can do everything. Unless you're in an enterprise environment, in which case you often still can't do anything. So I guess more detailed access control does exist, but only for enterprise users or something.
Tick rate and bandwidth in Grid Engine 9
So, there is no /nix/etc - anything in /nix is immutable. I haven't done this and hopefully someone will correct me if I get the details wrong, but I think the way you'd make this work within nix is you'd make your own package, let's call it "my-sshd-config," and it depends on a certain version of sshd. Then you'd have /nix/store/abcd1234-my-sshd-config-1.0/etc/sshd_config. (where "abcd1234" is a hash of everything in your package, including the specific version of ssh you depend on)

If you want to upgrade sshd and the config changes, you'd make my-sshd-config 2.0, and nix would put its files in /nix/store/efgh5678-my-sshd-config-2.0/etc/ssh_config. You could have both of these installed at the same time.

Then, it's up to you to stop the sshd running out of my-sshd-config 1.0 and to start the one running out of my-sshd-config 2.0. Once you're confident of the upgrade, you can then tell Nix to clean up my-sshd-config 1.0, but that's just removing files, since you've already stopped the service.

(We're about to upgrade sshd at work next week and I wish we had something like this, honestly, both so I could distribute the files to machines well before the upgrade and so that it's easy to roll the upgrade back - just stop the new sshd and start the old one. Then there wouldn't be concerns about config drift, forgetting to revert files, etc. The only configuration that I'd have to manage is which one is active.)

Most people who use Nix without NixOS aren't running services like sshd out of it, but NixOS will do basically this for handling service upgrades. Conceptually NixOS gives you one mutable configuration knob, which is "what is all the systemwide stuff for this system." You can depend on some particular sshd and its config, some particular init system and its config, some particular syslogd and its config, etc. If you want to change any config, you make a new package with the changed config, and then flip the one mutable thing to point to it instead. (This does mean that it's easy to roll back your system to an old state if you realize you made a mistake!)

There is a limitation here, which is that Nix can't do a lot about config in your home directory, like ~/.ssh/ssh_config (for the SSH client). You'll have to be careful with that just like you would with upgrades in general. Alternatively, you could make your own Nix packages that include client config, and avoid storing config in your home directory.
I don't understand the "non-randomization of IVs" feature, since GCM is totally insecure if an IV is reused. Is this code deriving deterministic IVs from the plaintext or something? Or can keys simply not be reused? It seems like they can, if KDF salts are by default non-random.
Ask HN: Do C++ templates result in a combinatorial explosion?
1. I read that C++ templates work by replacing each type variable with a specific type and generating the following function. Depending on how many types are called with each template call, that looks like it could generate a combinatorial explosion. Do they?

2. Does the parametric polymorphism of Rust result in the same combinatorial explosion? Does Rust's parametric polymorphism just generates ad-hoc polymorphic code?
With sharepoint and onedrive I struggled to coordinate when someone edits/commits. With git you do the change and PR. Office has no concept of someone merging changes.

My $0.02: just use git?
this specifically.

new List<KeyValuePair<string,int>> {
new (“a”, 1), new (“b”, 2)
}

versus having to barf out the type name for every element will be REALLY nice.
Space Force has far more visibility, and an institutional need to collect more budget, spend more on personnel, and build their fiefdom.

As they do that, they'll consume more and more private services, and help spur more and more industry in space. For me, that's a huge, huge win.
I agree completely with your expectation of the abilities of such a system.

However, I think very little programming labor is employed in the construction of new algorithms or even most business logic, even a casual stroll through github reveals a staggering amount of reimplementation.

I think the promise here is the ability to code in a more conceptual way with less fiddling with the finicky details.
Who said anything about call "centers" ?
It's probably better than when you used it now, but it might depend on what you're trying to do (e.g. Cython has more room for improvement).
Most call centers have gone remote, including Costco customer service, Chase bank, and major medical system billing departments.

PayPal just threw their hands up and gave up it appears.
Ok but they can respond to emails. How is that any different?
VPN + VOIP + 802.1x might be one approach.
Except companies have been staffing call centers from work at home for years. For instance, Jet Blue staffs most or all customer service through work at home and even has a clever method for handling surge capacity through part time staff available on call.
Think about what this means, your body by default belongs to the state. You are born as state property, not an individual with bodily autonomy and rights. You have to ask for that right.

This kind of sick mentality has crossed the atlantic into america with more "liberals" demanding opt out. What's striking is that the "liberals" who scream about consent are the same ones who want to take it away from individuals. The same ones who scream "my body, my choice" are happy to take that choice from individuals and give it to the state.

So this is no longer organ donation. It's organ confiscation/theft. Of course the state media which rants about china's "organ theft" are all supportive of this.
The biggest issue IIRC is that Bash doesn't play well with Windows. Things like paths are handled different enough to cause lots of breakage. We could rewrite all of the Bash in Perl or Python, which has better cross-platform support, but that's a lot of work.

That said, there have been attempts to get native Windows support:

https://github.com/volth/nix-windows/commits/windows
I agree that it's a risk, a very real one. That's why choosing your words carefully is paramount and not talking about certain things or downplaying them essential. I trust my therapist only up to the point where that trust might bump up against the law. If it's something that happened fifteen years ago, I'll admit I felt apathetic and almost like not wanting to go on. If it's recent, it'll just be skipped over. I think it can still be helpful, but I'm not going to risk my current life for the possibility of something ever so slightly better.
Awesome! Is there a design architecture that you find useful for organizing your code? I noticed you split the code a bit into business vs other. I recently stumbled upon Clean Architecture that helps me make sense of things. Programming isn't my primary field so the more structure in a project, the better (within reason).
> The Fed seems to have no issue printing money to prop up financial markets.

That's literally their job.

> What is stopping them from printing what we need to fund the entire government?

Inflation. Specifically, the fact that if they did so with no countervailing force the amount of money required to do so would increase rapidly in a positive feedback loop, collapsing the currency in the process.

Well, I mean, that's what stops the government generally from doing it.

What stops the Fed specifically from doing it is that they have a policy mandate and that isn't it.
People constantly produce things without complete certainty that they will find a buyer. Think of all the produce which is thrown away unsold. The reasons are certainly not limited to senseless government demand. Life and business involve uncertainty.
What would be even better, in addition, would be to prohibit delivering for a restaurant without a signed agreement with that restaurant.
I don't think it's a crazy comparison, but AFAIK Presto doesn't have a shuffle stage, which is fundamental in traditional MapReduce. They're both distributed computations, that's the comparison I would make.

Edit: thinking about it more, how could Presto accomplish joins and other SQL operations without a shuffle? Seems very similar to Spark SQL, which is just syntactic sugar for multi-stage MapReduces.
I think you mean to say PayPal temporarily stops phone support because of covid. They still accept support messages. Their phone support in the past has been aweful so I always prefer their message support.
I was once fired from a telecom company in SF for finding that webrtc twilio packets all went through China who was taking a copy and routing back. I investigated because customers complained of heavy delays in their voip. So yeah that was like 7 years ago.
Ford temporarily closes two plants after 3 workers test positive for coronavirus
There are two kinds of wealth that gets confused in the discussion.

The absolute wealth of having access to high quality services and goods with relatively low efforts. This is the wealth we create by progress.

Then there’s the relative wealth of which share of the economy you wield power over. How much of the current means of production is commanded for your personal priorities and how do they relate to others priorities? What is the opportunity cost?
Or "ignorant programmers who don't understand how text works or can't bother to support it properly getting to decide character encoding standards".

We have English speaking programmers swearing by ASCII despite it not having all the characters needed for English (I can't find it now but there was a report by the Library of Congress that came to that conclusion). I suspect their Georgian counterparts have similar attitudes towards text.
Citrix often works so poor that _I_ click controls of program I use often before they are drawn.
https://archive.md/0eXcB
"Softbank collapsed. What does this mean for the tech sector?"

Nothing. It's not a tech company, it invested in real estate (Wework).
In my personal life, I use Google Sheets to help me shop for larger purchases. For example, choosing tires for my car. I made a spreadsheet of all the available tires that fit my car, with columns for specs, prices of different retailers, user review numbers, and government ratings. Then I filter what's important to me and calculate my own rating based on the remaining columns.
Caused by the separate background redraw pass of Win32.
I don't mean to take anything at all away from Obama pushing COGS, as opposed to the old Constellation strategy. That was an incredible, bold move.

Besides SLS, though, it didn't move meaningful industry outside of LEO. It was an important step, but didn't fundamentally move us past the post-Apollo Space Shuttle funk. The Asteroid program was potentially interesting for getting mining going, but small in scale, with long timelines.

Artemis is the first time NASA has run on aggressive, tight timelines since Apollo. They're shooting for achievable, inspiring objectives -- quickly. And this time, we'll have THREE architectures that can get any American or American ally to the surface of the moon for a price.

Gateway guarantees long-term government spend in Lunar orbit, just like the ISS guaranteed long-term government spend in Earth orbit. Artemis aligns government spend towards the industrialization and militarization of space, on terms beneficial to the US.
Yeah I'm thinking it would be more useful to have a really well indexed library of functions accessible by search.
And more importantly, call centre management are pretty much the greatest source of truth in the "nothing ever gets done unless all our staff are absurdly over micro managed" management style stereotype.

There is very little technical difference between a bunch of call center workers crammed into a poorly air conditioned windowless cube farm, and those same workers safe at home at their kitchen table with their laptop and voip headset.

But you can't stand behind them and publicly berate them for taking 3.5minutes for a toilet break if they're all at home...

(Hmmm, startup idea: A service that provides a live video window that allows managers to humiliate WFH staff - that pops up in a non dismissible dialog box over the top of every other window on non-management employee laptops. VCs please form an orderly queue in my email inbox...)
I was referring to the ecosystem (libraries that are commonly used that might only work on windows). I've had trouble for instance finding cross-platform GUI toolkits that support linux. Microsoft's newly released toolkit doesn't.
That's different, or at least in my experience it's different. When I register at the DMV, it asks "Do you want to register to vote?". I can click no and be on my way.
Nice! My usual trick for estimating a companies value is to multiply it's revenue by 10.

I highly doubt it's operating hosts are eating into the revenue that much so I'd say they're highly undervalued.
I think it's a good comparison because it shows we avoid "opt-out" for things like economics, which are less important than our own bodies.

If we're willing to say "opt-out is wrong when buying a product", how can we say "opt-out is right when it comes to your own body"?
Scythe vs. Brushcutter [video]
You can also check out https://github.com/medius/utm_form which can handle a lot of use cases.

(Disclosure: I created this to help my customers at https://www.terminusapp.com)
> Conclusion Given that CRP is a surrogate marker for cytokine storm and is associated with Vit D deficiency, based on retrospective data and indirect evidence we see a possible role of Vit D in reducing complications attributed to unregulated inflammation and cytokine storm.

Yeah, that's a huge stretch. Not only are low Vitamin D serum levels associated with age as well as poor health in general, they also drop during illness even in people who had healthy levels prior to illness. So even if you're in the "vitamin D is a magic cure for everything" camp, the thesis is predicated on a chain of so many dubious assumptions that the likelihood of it being substantive seem astronomically thin. The proxy that vitamin D serum levels provide is more likely to be a proxy for an answer that's already known--this patient is very sick.

The pandemic has provided so many rich opportunities to publish that I guess it's not surprising to see such a tenuously grounded theory put to print.
And programmers?
"All software exists in a graph of dependencies."

And some of these graphs consist of a single node. Junk the jank!
A big component is surely from work. In which case, how does the philosophy extend to take into account the fact that people are in offices working?
It's quite absurd that the Fed is a separate entity from the government. Just shows how corrupt they are.
If they aren't staffing/closing call centres, then the upthread question "why are the phone lines closed because of the virus?" is even more inexplicable...
You can use Nix on MacOS X and with nix you don't need brew.

I used it for few years that way.

If you use nix-darwin + home-manager you can also configure your mac the way you would NixOS.

Amazing tools that discovered not long ago (they aren't specific to os x) is:

niv - makes pinning to specific repos/versions in repos much easier which helps with reproducibility, especially pinning of nixpkgs version which is now controlled in your source code.

direnv + lorri - you no longer need to invoke nix-shell just cd the directory and all tooling you need for your project is suddenly available which is AWESOME.

Here's an example of using them together with packaging a python project[1] if you have lorri and direnv installed and cd to the directory, not only you have the right python version installed but also all dependencies and even the "hello" command becomes available, as if you installed it through `pip -e .`

[1] https://github.com/takeda/example_python_project
>0. Forget about tracking things down to the dollar, or even the tens of dollars. That level of precision is unnecessary. If a coffee here or there is going to break your budget, it's already broken and you need to go in to panic mode.

A coffee is $5 give or take.

If I have one every day that's $1,825 a year. If I splurge and have two every other day that's $2,737. That's a lot of money.

The simplest way to budget is to just give yourself a set amount of cash every morning and keep spending it until you run out. You get immediate feedback because you can see how many banknotes you have left.

Funnily enough I think that's the main reason why there's a war on cash.
I'm having a hard time parsing -- you migrated everything from nix to containers (containers removed the need for nix) or to nix+containers (containers solved the "having to build for multiple platforms" issue)?
Elixir and Phoenix are living proof that functional programming can be easy - most of the time you just play with struct and functions, that's basically it. No need to pay attention to monads and type classes.

On the other hand, it also reflects functional programming is also more straightforward than Object-oriented programming because it's more objective to just model the data, than modeling the data and procedures at the same time. If you have two people writing the same thing, there's a much larger chance they'll yield similar or identical results.