skysight-inc/HackerNews huggingface dataset:
Honestly, working with gcc is the closest thing I've found to vinge's programmer archaeology. There's a lot of useful stuff in there, named / hidden behind the ugliest incantations imaginable in C and often platform specific or otherwise buggy.
I disagree. The C programming language is directly responsible for countless damning flaws in modern software and can be credited for the existence of the majority of the modern computer security industry.

You can write system software in many languages, including Lisp. For a less outlandish example, Ada is specifically designed for producing reliable systems worked on by teams of people in a way that reduces errors at program run time.

I find it amusing to mention UNIX fundamentals as a reason to learn C, considering UNIX is the only reason C has persisted for so long anyway. Real operating systems focused largely on interoperation between languages, not funnelling everything through a single one; Lisp machines focused on compilation to a single language, but that language was well-designed and well-equipped, unlike C.

>Last but not least, because C is so “low-level”, you can leverage it to write highly performant code to squeeze out CPU when performance is critical in some scenarios.

It’s actually the opposite. The C language is too high-level to correspond to any single machine, yet too low-level for compilers to optimize for the specific machine without gargantuan mechanisms. It’s easier to optimize logical count and bit manipulations in Common Lisp than in C, because Common Lisp actually provides mechanisms for these things; meanwhile, C has no equivalent to logical count and its bit shifting is a poor replacement for field manipulations. Ada permits specifying the bit structures of data types at a very high level, while continuing to use abstract parts, whereas large C projects float in a bog of text-replacement macros.

Those are my thoughts on why C isn’t worth learning, although this is nothing against the author.
Parking being hard to find is a problem with an easy, obvious and politically difficult solution, just like excessive traffic at peak hours. Charge for parking. If they’re not illegal someone will set up a parking lot and if demand is high enough eventually a parking garage. Charge people for things they want, like parking, or access to Singapore or London city centre during peak hours. Those who don’t value it enough to pay for it will stay home or go elsewhere.
Very curious to know where this is. The most I've seen similar to this is above ground City-wide piped sewage and water in Inuvik.

You'd have to be in a pretty small community, not a City, in maybe NU?
mkcert[1] is probably the easiest way to generate root certificate and leaf certificate(s). Then you can use a proxy like Squid to intercept the traffic[2]. You’d also need a local DNS server to point hosts like fonts.googleapis.com to your own web server.

https://github.com/FiloSottile/mkcert

https://turbofuture.com/internet/Intercepting-HTTPS-Traffic-...

[Edit: Now that I think of it, I’m not sure if Squid is really required...]
Also, I've seen a buggy linux kernel driver use the above macro, then pass it a pointer. Only caught it because -Wsizeof-pointer-div in a recent compiler.
Virtualization has helped immensely in many ways to reduce resources used and to eliminate costs.

People used to buy books, games, music, movies, in addition to clocks, cameras and others you mention in a physical form but now are moving to virtual products. Many products are virtual now from play/entertainment to work/administrative (file cabinets, storage, etc). Just looking at my own purchases, most are virtual when they used to fill book shelves, cabinets and trash bins eventually.

Ultimately virtual goods will help solve, and is helping solve resources used, while allowing growth. Lots of pushing resources previously was about getting to that growth metric, growth can now happen, and even in greater numbers exponentially in virtual worlds like apps, games, movies, offices, government, businesses and more.

Virtual goods have also helped 'clean up' areas like many think the crime reduction after the 90s was the result of some policy, but ultimately it was the internet that cleaned it up and reduced crime. People are indoors, more aware, more access to information that they need/want. Even Times Square cleanup was attributed to oversight, when in actuality the porn went online which led to less crime and less out in the open products.

Virtual goods and products moving this way is helping us not just to dematerialize, but move to virtual resources that are bits on a disk not physical content, bookshelves and cabinets.
That's an american thing. To me as an European it is ridiculous having a device, which cools down one compartment while heating up everything else.

Here's a good read:
https://www.weforum.org/agenda/2019/01/why-keeping-ourselves...
It's not even a progress, it is _growth_.
I dislike Apple for many of their user hostile decisions, but for this I love them. I'm bothered by phone bezels not being consistent, for one example, and Apple are the only ones who seem to care about it as well.
No, 70dB is a vacuum cleaner level noise. 60dB is not a single conversation, more like a restaurant full of people.

But most importantly, perceived volume is highly relative. In a noisy urban environment that god-awful drivetone might not horrible, but it still has to be noticeable. After all, the busy urban environment is exactly where it's theoretically supposed to be helping people notice the car! But how about when someone is driving through their suburban condo complex coming home after a late night of work?
I skimmed the foreword, didn’t like the first half, but did like the three levels of understanding and expected that the book would follow this. If it doesn’t, then your book idea sounds excellent.
Yes, but both AI and fraudsters use bots. How would the site operator know if it's a benign bot or not?
Author refers to system programming as a broad term. Not exclusively kernel and drivers.

For example:

> Regardless of you a system language programmer, DevOps, performance engineer or wear other hats, the more you know about the Operating System, the more you can do your job better. Take all prevailing Unix-like Operating Systems as an example, from kernel to command line tools, they are almost implemented in C.
How to Invest in Bitcoins
This is a quick rant that is going to be obliviated, but is this really worthy of gaining traction on the front page of HN? It’s a quick anecdote from Reddit about how health care is affordable outside the US. This is just comment bait for everyone with a relevant gripe who wants to use this as a soapbox for how they would change the US healthcare system or an echo chamber for validating their troubles. There’s no tech discussed, no news involved, and it’s the same conversations that come up in every healthcare related article’s comment section.

I don’t really care what people use this site for. I have no authority as a gatekeeper for your discussions or this community. I just think it’s really lame that a link like this gets traction
Erik Naggum used to say something along the lines of "if you dull your ability to feel sick, you also dull your joy of feeling well, and your ability to spot the difference".
Very much this. I would not bother with C if there wasn't this huge pile of fundamental software written in it.
Make a repro checklist and file a bug, if it's so easy to reproduce for you! Write down what you do, as you do it, and maybe devs could then repro it too!
28 is insane. The recommendation is 22-23 for office space.
How exactly do you learn C if you aren't supposed to be writing software in it?
As I wrote in another comment, the author seems to use a broader term for systems programming:

> Regardless of you a system language programmer, DevOps, performance engineer or wear other hats, the more you know about the Operating System, the more you can do your job better. Take all prevailing Unix-like Operating Systems as an example, from kernel to command line tools, they are almost implemented in C.
Same here. Most of my ebooks are bought DRM-free. But some times I want a book from a publisher that does not do DRM-free publishing. And EVERY TIME, it's a hassle : I have to link my e-reader to a specific website account. This account itself has to be linked to my email address, since there is no way to register anywhere without email nowadays...

Anyway, that makes me REALLY annoyed, so I break the DRM protection every time, just to avoid another hassle next time I reset my ereader, my Calibre library, or any other event.

Granted that does not happen very often, but I'll do anything to avoid yet another 2FA voodoo ritual across multiple online platforms just to claim ownership on a 100 pages book. I mean, come on !
> Can you also relate the median wage in Croatia? And how much taxes are taken by socialistical system on the salary ?

Croatian here.

Croatian authorities usually don't publish median wage, but the mean wage, so that the numbers can look less bad compared to the rest of EU.

When talking about wages, Croatians are usually using monthly net wage (after the taxes). The mean net wage for Zagreb (country capital) is around €1000, and in the rest of the country around €800.

For this net salary of €800, there is around €700 of taxes on the top of it, so the mean monthly brutto/gross salary is around €1500, so that's €18,000 yearly (around $20,000 yearly), where €8000 goes to taxes and €10,000 is the money that is left for you to spend.

Median wages would be lower than that.
My view strongly aligns with John Regehr's [1] (emphases original):

> My main idea is that we need to teach C in a way that helps students understand why a very large fraction of critical software infrastructure, including almost all operating systems and embedded systems, is written in C, while also acknowledging the disastrously central role that it has played in our ongoing computer security nightmare. [...]

> We’d like students to be able to answer the question: Is C an appropriate choice for solving this problem? [...] The second big thing each student should learn is: How can I avoid being burned by C’s numerous and severe shortcomings?

[1] https://blog.regehr.org/archives/1393
Did people in the C community consider your proposal?
What is the chance of death per hour of skydive?

I bet it's considerably higher than per hour of crusing around on a motorbike...
We don't know of any instances of life which developed "without gravity", whatever that means, since an object interacts with itself gravitationally. What would such a form of life look like? We don't know the full role gravity plays in the formation of life.
Honestly you can nearly write Haskell without specifying type signatures. GHC is very sophisticated. I feel like there have only been a few situations where I actually needed to specify the type. Really the argument shouldn't be about having strict types vs dynamic, it should be about smarter compilers etc. To me, GHC seems to be nearly perfect (also GHCi).
I mean write some software in it but like...don't overdo it.
Node being more CPU efficient than Java, .NET, C++, Go?!?
I think today the technology is different, there are more qualified people, and the futurists and the like will make it stick.

Automation and people trying to have everything 'cloud-based' and 'secure' will probably rely on services not just like this, but like time-saving and squared-away solutions like this.

Businesses had no idea of this back when HTML was invented, and now that we understand how that works and that has become such a task that we would benefit greatly from implementing something to get rid of it, who knows!

I think it's worth a shot to automate something like this, which is already tech focused and surrounded by talent, that automating other things will become closer in scope.

That's what it's all about really, time-saving and automation.
Forgive me for being obtuse. You said:

> As housing prices and commute times go up so does the price of everything that involves human labor.

Which in my estimation was a restatement of the Adam Smith quote. You approached the issue from a different direction... but it all works out in the end. Housing prices cannot increase without the capital to drive them up. I was merely agreeing with you in quote format.
With .NET 5, Windows to Linux migrations are going to become faster.
Drop the snarky attitude. I'm not referring to life at all. I said systems which includes all manner of self-perpetuating and self-correcting systems.
Every JavaScript/python programmer that writes horrifyingly slow string/array code that needlessly allocates should be forced to take remedial C.
Absolutely agree. After I began learning Ada, I could never look at C the same way again.
It's an incredibly fluid and intuitive language that shines in the areas that C has dominated, without any of the pitfalls that make serious development in C so difficult. It's very easy to see why it remains the language of choice for life-critical applications.
I would rather resist the temptation if I can avoid it.
I'm so frustrated with what we've come to tolerate with software.

Ada/SPARK seems to be trying to make a comeback, something I welcome.
They are interacting with the 'maker community' [1] and the online learning resources have improved a ton.[2]
SPARK is even taking some inspiration from Rust. [3]

[1] https://www.makewithada.org/
[2] https://learn.adacore.com/
[3] https://blog.adacore.com/using-pointers-in-spark
I have a feeling that Ive went off the deep end with his obsession with thinness and it reached a point with the MBP keyboards where Apple couldn't turn a blind eye anymore. Similar to Scott Forstall being forced out over the Apple Maps disaster.

If there's one thing more important to Apple than Ive, it's the Apple brand and nothing says "premium" like adding a product to a repair program on the day it comes out. I suspect that the knives were out for Ive after that humiliation.
You can learn enough C to leverage existing code, and then use the FFI facilities that many languages provide to interface with it. That way you don't have to engineer your entire application with C. I think this is pretty common practice, but maybe some people don't realize how common it is that their, e.g. Python, libraries are leveraging C code.
(In the same vein of other comments...)

Algol 68 slices are also fat pointers. Only they also carry a `stride` field, since in Algol 68 you can slice multidimensional arrays in any direction.
For me, the advance in thread and memory sanitizers in XCode made it much safer to use C. Its almost fun to create memory leaks now and see the sanitizer spotting them :-)
Better read on on NuGET, FAKE, COM and Assemblies.
I suppose it's more of the density than the population. India is massive by all measurements, but west and east sides are completely different. In the west, you have Mumbai, a city full of dust, slums, and millions of people riding trains in a single evening, all fighting for resources.

East side, is full of greenery, rainforest, and a peaceful living with hardly any population compared to west.
You could, but you'd probably break a lot of legitimate functionality.
> D slices are fat pointers as well:

So are Rust's.

Possibly more interestingly, so are its trait objects, the trait object pointer is a (vtable, instance) rather than (instance*, length).

Also of note: that applies to "owned pointers" (`Box`) not just "references", despite the former looking very struct-like: https://play.rust-lang.org/?version=stable&mode=debug&editio...

In a way, C++ and Rust (and possibly D?) have pretty much an infinity of fat pointers as anything can be made to deref' to something else, and be more than one pointer wide (e.g. C++'s std::string and std::vector and Rust's String and Vec)
Low level system development is very common in the embedded systems domain! There's always been a large corpus of development done on embedded systems in Ada, and there's quite a bit of interest lately in low-level development in Rust for microcontrollers. As well as interest in using Rust/Ada for operating system development.
C might not be particularly designed for high performance computing, but there has been an absolutely enormous amount of work on compilers for C. Due to its prevalence, even CPU manufacturers take care to design their chips so that C code runs fast on them. Effectively this makes C one of the fastest languages around.

The story is similar for Javascript. The language design is fairly terrible, but thanks to millions of dollars invested into Javascript JITs, it's now one of the fastest interpreted languages.
We don’t have more FP languages than OOP languages, and several languages that are considered FP have their own implementation of OOP (OCaml, Common Lisp...) in addition, several OOP languages are now implementing classic FP features like lambdas and pattern matching.

Also, the question asked doesn’t actually care about FP. Go isn’t a functional language, bit neither is it OO.
I've been reading Modern C too. I don't know C well yet, but can say that the book is very raw and in dire need of heavy editing. It seems that it will officialy be released in September via publisher, so hopefully this will improve things. It has lots of typos, LaTeX markup errors, and pacing issues. In the past, some people on HN rightly pointed out that the book contains some code trickery. I haven't finished it yet because it is a very dense book. Still, I feel it is definitely worth reading.

What disappointed you about the book?
- Widgets on the actual home screen, no swiping required. Every app has widgets (except Skype !), so you can have whichever info you need most right there

- true browser, true addons. Unlike iOS, Android doesn't limit 3rd-party browsers to reskins of the OS' Web engine, but allows desktop-like from-the-ground-up browsers. You can get Firefow and put uBlock Origin and Privacy Badger on it.

- sideloading w/o rooting. Exiting the Walled Garden (not recommended) doesn't require compromising the whole security setup by rooting, flasing a new ROM.... just activate Sideloading from the developer menu, and live only semi-dangerously. Reins in Google's censorship.

- Regular File management, incl. internal Flash, SD card, Network, and Cloud. On of the first apps I install is Asus's File Manager so I can easily move stuff around my LAN etc.. Also makes it easy to use different apps for similar content: I've got my podcasts, audio books, and music in different folders and a separate app for each.

- Plenty of storage: if you get a phone with an SD slot, you can have oodles of storage for dirt cheap, which is very handy if you wander out of cities.

- much more choice about everything: all apps including Phone, Keyboard, Mail, Browser, Text, Homepage (Launcher), Maps,... can be defaulted to any 3rd-party app. This makes for a steeper learning curve (I prefer HERE MAps over Google Maps and Waze; Nova Launcher; Google Messages ...) Only Notifications and Settings are hard-linked to the core OS.

- You get a choice of hardware. You can spend $500+ if you want to or need really good pics, but the $150 Redmi Note 7 or Realme 3 Pro are fine phones. The Note even have FM Radio, an IR blaster... no NFC though.
Without more context, saying that matrix is not e2e encrypted is just as much of a lie as saying it is.
Somebody has to learn enough C to find a fix security issues.
One thing the internet as still not learned is how not to needlessly flame. A lot of the comments here are dissing the problems of C (fine) but are completely missing the author's main point. For heaven's sake, it's even a lower bar this time, the title says it all and people are cursing about C. Their main point is simply:

>Especially with Go and Rust go viral right now, C seems already forgotten by people. Nevertheless, IMHO, C is still a thing which is worth for you spending some time on it.

I happen to agree, especially if you have time to learn Go or Rust but don't use it for anything[0], you have time to learn modern C. They didn't make this point (they seem more on the side of you should in general) but if you don't have the time, I'd think anyone could make a decision of what's worth their time or not.

As an aside, this bit is partly true but partly isn't:

>Last but not least, because C is so “low-level”, you can leverage it to write highly performant code to squeeze out CPU when performance is critical in some scenarios.

The reality is C has been around a long time and compilers are written to make fast code from C programs. See this, "C Is Not a Low-level Language; Your computer is not a fast PDP-11."[1]

[0] Point about Go or Rust is if you do intend to use it for something, then that isn't learning for edifications' sake. Ditto C. If you refuse to learn C but it's relevant to your job/work then that's simply neglect of your duties.

[1] https://queue.acm.org/detail.cfm?id=3212479
Is there a way to limit the size of these big cities?

What if they start requiring a domestic visa process to let in the people from other states?

Everyone wants a life of high standards of living which cities provide along with employment.

If we do not limit the number of people who can get in, it will naturally result in whole population of India moving into these cities.

This will result in people making wherever they live better instead of just moving to a better city.
This article has examples of SHOUTING going back to the 1800s

https://meh.com/forum/topics/capital-crimes-part-1--shout-sh...
Well that would assume such practices were around when that code was created.
How does Face-ID work on your phone? [video]
Chaos Engineering – Part 1
Go-to Dart resource for Full-stack web development tutorials
You have some good points. But have you tried Idris or Agda?

My problem with OO is one of culture. If and only if you work with big codebases you start to feel that you can’t make assumptions about anything. For all I know the plus operator can send nukes. Then they say it doesn’t matter because they made the perfect lasagna with a million layers.

I know there’s a million ways to code with oo to make it better. But I never saw that enforced by tools which is a must if we are a thousand developers in the same company.

Meanwhile if I see a concept in Haskell I can in most cases just trust the assumptions.

Also the compiler researchers that I adore are those that focus on making proofs and stable code, not the ones trying to dumb down programming to make it accessible.

You build a house, which is more important, a good foundation (built on math) or accessibility for the beginner builders?
I don't have a huge social circle but in it among the professional devs I am the sole person for whom OOP style does not mesh well with their brain.

I've known most of these folks since the '80s and something that we've discussed a few times is wondering if it's when we got serious about computers, what platform (e.g. C64 or Apple II), or continuous employment in the field (I have a history of going off to do other things most of my dev friends have always been devs), preferred platform today (mostly WinTel vs. Linux), or the niche we work in (I mostly work in embedded stuff, lots of my friends work with stuff related to pretty big systems, either big back end stuff or user facing I/O).

Anyway I find the recent popularity of alternative styles to a welcome recurring innovation, especially the idea of having a "Functional Core with an Imperative Shell".
There are two main reasons to learn C:

1 - Because C and UNIX were built for each other and we have plenty of UNIX clones around

2 - To avoid making the same mistakes regarding lack of safety in system languages.
Sounds like a lazily written cli, typing help in bash gives usefull information and also refers to info. So you get an overview of the available commands and a description of the basics with minimal effort.

Meanwhile I can play hide and seek with the tools I need in Gimp for hours.