When I used to work with C many years ago, it was basically: download the headers and the binary file for your platform from the official website, place them in the header/lib paths, update the linker step in the Makefile, #include where it's needed, then use the library functions. It was a little bit more work than typing "npm install", but not so much as to cause headaches.
What do you do when the code you downloaded refers to symbols exported by libraries not already on your system? How do you figure out where those symbols should come from? What if it expects version-specific behavior and you’ve already installed a newer version of libwhatever on your system (I hope your distro package manager supports downgrades)?
These are very, very common problems; not edge cases.
Put another way: y'all know we got all these other package management/containerization/isolation systems in large part because people tried the C-library-install-by-hand/system-package-all-the-things approaches and found them severely lacking, right? CPAN was considered a godsend for a reason. NPM, for all its hilarious failings, even moreso.
> These are very, very common problems; not edge cases.
Honestly? Over the course of my career, I've only rarely encountered these sorts of problems. When I have, they've come from poorly engineered libraries anyway.
Here is a thought experiment (for devs who buy into package managers). Take the hash of a program and all its dependency. Behavior is different for every unique hash. With package managers, that hash is different on every system, including hashes in the future that are unknowable by you (ie future "compatible" versions of libraries).
That risk/QA load can be worth it, but is not always. For an OS, it helps to be able to upgrade SSL (for instance).
In my use cases, all this is a strong net negative. npm-base projects randomly break when new "compatible" version of libraries install for new devs. C/C++ projects don't build because of include/lib path issues or lack of installation of some specific version or who knows what.
If I need you to install the SDL 2.3.whatever libraries exactly, or use react 16.8.whatever to be sure the app runs, what's the point of using a complex system that will almost certainly ensure you have the wrong version? Just check it in, either by an explicit version or by committing the library's code and building it yourself.
Check it in and build it yourself using the common build system that you and the third party dependency definitely definitely share, because this is the C/C++ ecosystem?
You are conflating development with distribution of binaries (a problem which interpreted languages do not have, I hasten to add).
1. The accepted solution to what you're describing in terms of development, is passing appropriate flags to `./configure`, specifying the path for the alternative versions of the libraries you want to use. This is as simple as it gets.
As for where to get these libraries from in the event that the distro doesn't provide the right version, `./configure` is basically a script. Nothing stopping you from printing a couple of ftp mirrors in the output to be used as a target to wget.
2. As for the problem of distribution of binaries and related up-to-date libraries, the appropriate solution is a distro package manager. A c package manager wouldn't come into this equation at all, unless you wanted to compile from scratch to account for your specific circumstances, in which case, goto 1.
And with header only libraries (like stb) its even less than that.
I primarily write C nowadays to regain sanity from doing my day job, and the fact that there is zero bit rot and setup/fixing/middling to get things running is in stark contrast to the horrors I have to deal with professionally.
And then you got some minor detail different from the compiled library and boom, UB because some struct is layed out differently or the calling convention is wrong or you compiled with a different -std or …
Which is exactly why you should leave it to the distros to construct a consistent build environment. If your distro regularly gets this wrong then you do have a problem.
The fear in non-US nations is that the US will not respect the agreements and refuse to hand over the gold if requested. Given all the Trump admin is doing, I don't think it's unjustified
Isn't design thinking just... thinking? There may be different design methodologies you apply in different domains (e.g. civil, aeronautics, automotive, electronics, software), but once you abstract that away, what you get is thinking. I once attended a design thinking workshop many years ago, and no one there was able to adequately explain what design thinking was, except by means of jargon, metaphor, or example. My understanding of the subject has not advanced much further in the intervening years.
Design thinking is a collection of techniques that have been professional-ized into a consulting practice. Hence the mystique.
What I appreciate about a good design thinking session is:
- It externalises the insides of peoples heads in a way that allows other participants to share that knowledge. Individual tacit knowledge becomes shared general knowledge.
- Knowledge elicited during the session is presented in a way that makes it actionable
A design thinking session is doomed to failure if it isn't comprised of:
- Domain experts
- Decision makers
- A facilitator who actually knows what they're doing
Well yes, but it is thinking from the other end, usually. The reason why companies may benefit from inviting a designer is that a good designer may both aesthetically and functionally take an entirely new approach from scratch, that has the end user in mind.
This is something certain types of companies and organizationa fail at often, because their daily involvement makws them hyperfocused on certain aspects while they are blind to entire classes of solutions.
That doesn't mean designers can be sprinkeled on every project and drive an evolutionary leap, but it can be a way to explore the solution space.
I got the same reaction from that “how intelligence agencies think” YouTube video. Come now, “situational awareness”? Who needs a conspiracy to pay attention to their environment? And other mental tricks that people who must be told what to do may not come up with for themselves.
Design however is a highly praiseworthy contemplation. There are those who do it well, and those who best learn to rip off what works as faithfully as means allow.
I think you’re doing situational awareness a disservice, and I’m guessing you’ve never worked in a field where it is a trained discipline.
It is not just paying attention to your surroundings, it is actively scanning and evaluating to anticipate changes to your situation. Big difference between standing on a hill taking in the view versus keeping your head on a swivel, identify avenues of approach and egress, all while looking, listening, and smelling for anything out of place.
It is more applicable to the physical world than any software domain.
Okay soldier, can you tell you are not alone in your own mind, and that American Thought Control is running an extortion racket on the United States Military?
Can you tell Bannon looted the intelligence community and exposed the envelope of every clandestine military secret by getting Trump to gather all of those commanders into one room?
I've been doing this forever, but just a few days ago I tried connecting VS Code to Github Copilot. The experience wasn't entirely unpleasant. I'm still on a familiar IDE and fall back to traditional development patterns whenever I want, while relying on Copilot to make targeted changes that I would find too simple and tedious to manually do.
I have ridden in a BYD and it was the opposite experience: excellent suspension, unusually smooth ride, great seats. A few things on the dashboard did look a bit tacky. But overall, massive difference from where Chinese cars were even 5 years ago.
The worst part is, when computer screens were monochrome or had only 16 colors, (and perhaps 16 pixels a side) to work with, designers managed to create more distinct icons or pictograms. Perhaps they may not have looked as elegant as a set of items on a collector's display case, but they helped the end user quickly zero in on the part of the screen they were interested in.
I may have written about this before on HN, but once I wrote a simple Perl script that could run the daily trade reconciliation for an entire US primary exchange. It could run on my laptop and complete the process in under 20 minutes. Ten years later, I watched a team spending days setting up a Spark cluster to handle a comparable amount of data in a somewhat simpler business domain.
On Twitter/X "for you" feed, I'm frequently served posts by handles that are openly hostile toward Wikipedia. The most often cited reason is excessive fundraising / bloat (previously it was bias). But in my opinion, whatever bloat the Wikipedia organization suffers from, it is still a better alternative than all the other ad/engagement driven platforms.
For a top-10 Internet website it's not "bloated" at all, if anything it's still running on a shoestring budget. And the fundraising ends up supporting a huge variety of technical improvements and less known "sister" projects that are instrumental in letting the community thrive and be relevant for the foreseeable future. Sure, you could keep the existing content online for a lot less than what they're asking for, but that's not what folks are looking for when they visit the site. Keeping a thriving community going takes a whole lot of effort especially in this day and age, where a vast majority of people just use the Internet for 100% casual entertainment, not productive activity.
To be clear, I'm not hating on Wikipedia, just their (IMO) overly-strong push for donations.
The first word in my OP was "Except", and that was genuine -- I agree with the parent post, just outside of this one gripe. I definitely get value from it -- either directly through visits, or indirectly through it training LLMs I use.
And I don't mind them asking for support. I just disagree with how they ask, and how often they ask.
I feel like a simple persistent yet subtle "Support Wikipedia" link/button may be just as effective, and at the very most, a 30-pixel high banner once a year or so.
Maybe they've done tests, and maybe this is effective for them, but it feels like there are much subtler ways that may be effective enough.
I have supported sites and services much smaller than Wikipedia, with much less intrusive begging. But maybe that's not the case for others.
To repurpose Winston Churchill's quote on democracy, "Wikipedia is the worst form of encyclopaedia, apart for all those other forms that have been tried from time to time."
It's a weird thing to hate on Wikipedia for since in general it's one of the cleaner sites I visit. The absolute garbage of the Fandom wikis shows just how bad it could be.
> In a reversal, the [EPA] plans to calculate only the cost to industry when setting pollution limits, and not the monetary value of saving human lives, documents show.
Industry is perfectly capable of calculating its own costs, and advocating for its own motivated self-interest, thank you very much. This is not a bug we need to fix.
The purpose of agencies like the EPA is to "see the [Pareto optimal] forest for the trees" and counterbalance industry's [Nash equilibrium] profit motive.
Otherwise let's just rename it the Shareholder Protection Agency, because that's all it would be.
Well, they very successfully advocated for their interests, and now the administration they helped install handed the EPA over to them. Maybe they should rename the EPA to Environment Destruction Agency, same as they renamed the Department of Defense to Department of War...
It depends. If you're someone like, say, Trump, then truly nothing matters because you're far too old to care. You can pretty much burn the whole world down and suffer zero consequences.
This is one of the biggest downsides to letting the most old, and "wise", among us run the show. They have no incentive to help future generation or even current generations.
I'm fond of saying that most problems in the software world are due to one thing trying to do two things, or two things trying to do the same thing. In this case, it feels like the former: getting the same implementation to cater to both desktop and mobile is obviously the most efficient solution from a development perspective, but not an end user (and ultimately business) perspective.
reply