skysight-inc/HackerNews huggingface dataset:
It's not kindergarten child at congitive level. It's a different kind of cognition than humans, if you can call it "cognition" at all.
This looks excellent. Are more chapters planned and is there a way to buy a PDF?
Feedback is critical, though.

I imagine many folks who have watched a lot of videos on, say, economics or history or physics or whatever else hugely overestimate what they understand since they get no expert feedback to test their understanding.

Programmers tend to like self-teaching since it's very easy to get that feedback--write the code and see if it works! But not every subject is that way.
Imagine an LLM tuned to eliminate misunderstanding and ask why at least 5 levels deep… Without fearing to irritate the boss or to create an impression of being not smart, both possibly harmful for human career but irrelevant to unthinking software tool.
While reading the post and comments I also was raising the same question. What I'm going to try - add separate facts from technical books.

I like reading tech books which are not directly related to my job as SWE. E.g. I'm not working with Bitcoin or ML, but found those books very interesting. However after a year pass - I barely can remember little bits which I've found very interesting when read the books.

I think adding some facts to Anki cards would help me to remember those certain things. I guess difficult part would be to detect the fact which is worth to be added as a card. Since while reading the book - these things seems obvious. Going to try anyways.
You'll run out of memory long before your array can reach 2^64 items.
Omg... Maybe I'm Japanese then! Thanks for sharing
Where can I get 95% or higher purity sodium nitrite (NaNO2)?
i live in australia. can anyone send me a source? help appreciated, thank you.
This is utter crock, they always heavily preferred close proprietary format they themselves held parents for.
This is not true. Nix is supported on several non-Linux platforms, including macOS and Windows WSL.
but you don't owe the bootcamp anything if you earning $49k a year or less.
Yeah, unfortunately I’m in love with the tooling and the engineering. Often the “product” is so mundane, I find it offensive
Upcycle Chromebooks to run Ubuntu, reuse them to create portable micro servers
Looking back we had one CS professor who in 2007 predicted we'd all be jobless in ten years, i.e. 2017.

His prediction was based on the trends he was seeing at the time. But it wasn't even AI. Instead he made this prediction because he saw the rise of no-code tools replacing software developers because managers could finally cut out the pesky "translators", i.e. software developers.

I said it then and I will say it now. If your managers could specify what they need in a manner that no-code tools, or now AI, can generate the code they want, they will have to be extremely exact in their language. So exact in fact that they will need to specify a program in a click and drag interface, or in human language.

Since they hire software developers to make the specification more rigid, and the managers don't seem to be getting better at this over time, why would you believe this skill set is going to go away?

In essence what has happened in software development is that the level of abstraction has gone up while the machine has taken over more and more of the nitty gritty details. From punchcards, to assembly, to COBOL, C, Perl, Java, Python, Erlang, Rust.

Of course I'm leaving out some languages here, but the level of abstraction has been rising.

But the rigidity of what is needed to specify a program that really does what you want hasn't. Especially evidenced by the fact that recent programming language developments often have a specific area where they shine, but not raising the abstraction level that much.

I'd be surprised if the next step is "Hi, I'm an ideas guy, please give me an app that does Uber, for bicycles, but better."
We run on a debt-based economy so it should be no surprise that consciously issuing and managing tech debt works for growth in similar ways IMO.

Sure, it's possible to live debt-free and manage finances or architecture frugally - and I consider that a noble thing - but you will have a hard time keeping up with those who keep covering up their debt with more and larger debt.
Dynamic allocation can often use up less memory, since it only reserves as much as it needs, not the maximum for every item.
Don’t listen to the guy above. Terrible advice likely colored by an unhappy career just like don’t listen to me because it works be followed by barring generally happy with mine.

> and you have to waste your life away sitting in an office chasing tickets. Nothing engineery about it. It’s modern day assembly line work.

Every job I’ve literally done I’ve set my own direction. Sure, there’s some negotiation because ultimately you have to get the work done of the business. But you make recommendations and figure out what’s compelling to the business and how that intersects with something you might find interesting and want to work on.
I wonder what today's version of the gown would be. Something that would be impractical for both service work (barista) and brain work (prompt engineer).

Maybe ski gloves or a sling or maybe a respirator with sunglasses.
Right now, GPT can help you think through the design of a piece of software if you "drive" the conversation properly. It's not impossible to think that at some point in the not-to-distant future, a model could be specifically trained which could also do all the work of helping figure out what problem it is they want to solve.
It is arbitrary. Why can it handle 1000 items, but not 1001 items?
> There is something fundamentally wrong with a UI/UX that takes a literal year to master.

You can learn basic navigation in about 5 to 10 minutes reading through emac's built in tutorial. Mastering it means finding a configuration that works for you, or writing your own implementation.

I don't use emacs regularly (other than as an info page browser), but I have been using vim for the last 20 years and am still learning new things about it.
I had to look up "punting." It means boating in a punt (which is a small boat).
> I guess difficult part would be to detect the fact which is worth to be added as a card.

The time to memorize something is supposed to outweight the time you'd need to look it up. Say the target is five minutes - in that case, it's important to follow the Pareto rule as well, and to discard any cards that take you more than that to memorize in total, including the time you recall them. In practice, it means discarding over 20% of cards if possible, to learn 80% that are easy to remember.
I love to code, as much as I loved math in college, but coding paid better and I'm pretty good at it. Those were my choices though b/c I want to do something I love. Sure, I keep my eye on the "Delivered Value" by making sure I engineer solutions to real problems, but I've never wanted to move out of coding and into managing engineers to build stuff. I want to code. It seems to me that the advice given here would be more applicable to someone who only coded long enough to move into engineering management -- anyway something about it bugs me and I don't think I'd follow it exclusively even if I was starting today.
Usually you wouldn't store these things in a collection, but as separate fields of a record type, so the rule doesn't apply.
That's what i mean: "water down/blunt democracy" :)
You have plenty of time and can learn CS and earn a lot of money for years even if at exactly 120 months from now your job is made obsolete. It doesn't take 9 years to learn to code.

The premise of all this seems to be that learning how to program computers is difficult or complex. It is not.

Also, AI will not replace human reasoning in 10-15 years. If it does, it means AGI, and we all have much bigger problems than layoffs.
I find that Anki, by showing up the cards at certain (optimised) intervals, delivers distributed practice.
Out of the efficient learning methods as evaluated by this paper: "Improving Students’ Learning With Effective Learning Techniques: Promising Directions From Cognitive and Educational Psychology" [1] (scroll to Table 4 for results) Anki delivers both distributed practice and practice testing in a very natural way.

[1] https://journals.sagepub.com/stoken/rbtfl/Z10jaVH/60XQM/full
It has no cognition. Do not personify the algorithm that cannot think.
We were discussing this in my job some days ago.

Legal team is still checking, but technically you can copyright and define usage license for your content.
But if you write about common subjects or non copyright material you may be better off the internet
Here's a quick transcript, in case it's useful or someone doesn't want to visit the bird site:

> Person: Hey John, I hope you are well. I am really passionate about CS (specifically Software Engineering) and I want to pursue a career in it. But I can't help but be a bit concerned about the future availability of coding jobs due to AI (chatgpt4 and stuff). I understand it's hard to predict how things will be in the next 10-15 years, but my main concern is that I may be putting in all this hard work for nothing I'm concerned AI will make my future job(s) obsolete before I even get it. Any thoughts on this?

> John: If you build full "product skills" and use the best tools for the job, which today might be hand coding, but later may be AI guiding, you will probably be fine.

> Person: I see... by "product skills" do you mean hard and soft skills?

> John: Software is just a tool to help accomplish something for people — many programmers never understood that. Keep your eyes on the delivered value, and don't over focus on the specifics of the tools.

> Person: Wow I've never looked at it from that perspective. I'll remember this. Thanks for your time. Much appreciated.

To me, that seems like a fair stance to take, though I feel like things will definitely change somewhat in the next decade or two. While some might have scoffed at the likes of IntelliSense previously, features like that proved themselves as useful for a variety of projects over time; we might eventually be dealing with GPTSense to enrich the development process and those who don't might find themselves at a bit of a disadvantage.

Copilot is already a step in that direction, maybe eventually we'll get something for static code analysis and recommendations: "This project uses pattern X in Y places already, however you've written this code in pattern Z despite it mostly being similar to existing code in file W. Consider looking at whether it'd be possible to make the style more consistent with the rest of the codebase. [Automatically refactor] [Compare files] [Ignore]". It might be nice to have something automated look at my code and tell me that I'm doing things different than 99% of the civilized world and offer my suggestions, as well as allow me to ask questions - even when I'm hacking on something at 1 AM and any would be mentors are asleep.
Two of the most interesting domains (mathematics and programming) do have external forms of validation. In mathematics you can use a proof assistant like Lean. In programming there’s types, tests and formal verification.

Where the AI will struggle is anything where forward progress requires a lab. In this case it will not provide as much acceleration, as it still has to move at the speed of the human in the lab doing the experiment for it. It can maybe make better decisions than the human and get a small speedup, but it won’t be anywhere close to the possible speedup for formal sciences.

And the AI will really struggle with anything that involves mechanical sympathy gained through practice. No amount of book knowledge or raw intelligence can teach an AI how to play the violin. For that, you need a violin, a hand, and a feedback loop. Indeed there’s probably many skills that humans have near optimal learning rate, because the bottleneck is in the physical environment rather than our brains.
I doubt AI will replace any job in my lifetime (got 40-50 years left).

Progress will grind to a halt just like self driving cars did because the real world is just too chaotic and 'random' to be captured by a formula/equation/algorithm.

My prediction is: AGI is theoretically possible, but would require impractical amounts of computing power - kinda like how intergalactic travel will never happen.
Any advice on resources to become more product focused as a developer?
The null address isn't necessarily 0. When a literal 0 is assigned to a pointer it can be magically changed to a platform's true null. Memset() doesn't have this behavior. This isn't relevant on any modern systems but it is an affordance of the C standard. That is the true significance of nullptr. It obsoletes the magic 0 literals.
I'd say don't count on that one. Feeding on others knowledge and then recombining it is also what we do. In comparison to AI we do not appear to be particularly great at any part of this game.
Carmack has a point, we should focus on the problem we're solving and the value we're delivering. It can be hard for programmers to get this sometimes, but it will make you much better at your job now, it's not just about future-proofing. That said, I love technology and delivering it through code, so I would struggle on a personal level in this future unless there were interesting technical roles left to do. I have no interest in being a product person. I'm fundamentally motivated by a passion for code and tech.

As for when this fully automated future arrives, I don't know, but I don't think LLMs get you there. More and more boilerplate code, and even novel code, might get written by things like Codex. However, all the messy details of real world systems solving fairly intractable problems need something more akin to, if not AGI, then another type of AI. I might be wrong, I just don't feel that threatened by ChatGPT / Copilot based on what I've seen. It's an amazing technology but weirdly underwhelming for my job. Copilot etc will change things, but replace us? No.

Of course, something else may be just around the corner so I'm not complacent.
def solve_quadratic_equation(a, b, c):
d = b * b - 4 * a * c
if d >= 0:
return [(-b + sqrt(d)) / (2 * a), (-b - sqrt(d)) / (2 * a)]
else:
return []

How would you deal with the “magic numbers” here?
An allocator that silently does nothing on free if you violate one if its invariants (freeing an allocation that wasn't the latest) seems an incredibly error-prone design? It should probably return an error or panic (if free's API allows it, I guess).
> but how it came to be is not part of the definition

It's possible the people working at the time were not conscious of the trade-offs they were making. But it still happened and that's how it came to be.

> if I inherit the code base of a bad programmer on my job

It sucks, but it's almost guaranteed to be the case, to some degree. Think from the company perspective. You're thinking too much from your personal perspective, which is kind of irrelevant to the company. You're not using the term just for you.
No much different. If you were an intern Java programmer 10 years ago, it's totally possible that you're still a senior Java programmer today.
He said nothing about management. What I think he means by “guiding” is more related to prompt engineering, and how “coding” will evolve from exclusively using programming and scripting languages to a wider creative landscape of generative (guiding) techniques.
It can give semantics for it, such as how cartesian closed category gives semantics to simply typed lambda calculus
https://golem.ph.utexas.edu/category/2006/08/cartesian_close...
The pemise that they are being paid to do the job (and there isnt one of them) implies that its not false work.
Mine’s a grab bag. If I had to look something up, and value knowing it cold the next time it comes up, it goes in. I could see some engineers having nothing that fits that criteria.
What would you describe as a high paying job?
Unless you're already getting paid for delivering a Big Design Up Front, by a customer who thinks they know what the software needs to do.

In that case there's zero incentive to place yourself in your user's shoes and work to mitigate those problems. You're a feature factory getting paid to reinforce existing workflows and paradigms, and you'd better not forget that as your efforts to recenter the conversation around user needs will be met with derision and you'll be seen as confrontational.
It's like telling a musician to become a DJ because the point of performing is to entertain people.

It's not wrong, but it's also not applicable to all people who enjoy performing an instrument.
There's a weird phenomenon I've seen in a few domains of prideful ignorance.

Backend engineers who proudly don't know how to write frontend code and vice versa. Professional engineers who refuse to learn how to use modern IDEs and monitoring platforms. People who don't know how to quickly prototype software as if building something without complete rigor is beneath them. People who refuse to learn or work in certain programming languages they deem inferior.

And rather than seeing this as a gap in their own skillset they think of it as a mark of intelligence or moral superiority.

I suspect we'll see another divide around AI assisted coding with some engineers simply refusing to learn how to use the tools effectively to make themselves more productive as a point of pride.
Sure but on what modern platform isn't null equal to 0? Do modern C standards need to support hardware that no longer exists and will likely never exist?
Apparently it's the opposite. They can improve its output by letting it reason logically or critically on its own output, somewhat like a thought monologue I assume. Not familiar with the details, though.
We've had LLMs for about 5 years so far in non-academic research. If we're talking 10 years out that means we're looking at tech that's about 1/3 through its development to date.

Take any mature-ish technology that you use today and compare the version 1/3 through its life to the version you use now. Look at Chrome 20 compare to Chrome 111, or React 14 compared to React 18, or an iPhone 4 compared to an iPhone 14, or a car from 1950 compared to a car today...

The difference is always quite significant. Superficially they're still the same thing, but if you look at the detail everything is just better. AI will be the same.
Was it @levelsio?
Perhaps not super simple but it will have been broken down into named parts. In the days before spreadsheets were as capable as they are now I worked with plenty of quite old engineers who would write Fortran instead; their Fortran was always better than the spreadsheets that they later produced.
I have seen cases of companies that focus on recruiting seniors that get a lot of product responsibility and can quickly find solutions since they see the customer/product view and also will have a good feeling for how to and in which order to best deliver things in code. So after talking to a customer about a problem, you just go and "talk" to the computer about the solution and get it out of the way quickly..

I have also seen cases of companies where you have one PM, one PO and one Team Lead to manage a group of four developers. In that case developers are seen more as translators.

My view of looking at this now is it is a bit like learning a language. Code is the tool you use to talk to a computer.

If you need to close a deal in a country where English is not spoken, do you prefer to send a businessperson who knows the language, or do you send a businessperson + a translator?

I much prefer companies where those who know how to code can still fill more of the product/business role than be seen as translators. However I realize it is hard to find people who know both and may be easier to recruit a combination business/product people who happen to not speak code, and translators who happen to speak code.

This is perhaps also the open secret about startups: People speaking the language of computers without being limited by their role to act as translators.
As long as there is creativity in programming, and I think there is a fair bit of that, AI is just going to be a tool.

GPT-4 is great at sourcing human knowledge, but I think it can't really walk unbeaten paths. This is where humans shine.

Case in point: I tried to ask the AI to come up with a new World War Z chapter set in Switzerland, and it was unable to produce anything original. I had to keep feeding it ideas, so it could add something new and interesting.
Regenerating Jordan’s native forests
The 5 Platonic Solids."
https://youtu.be/q6A7cKFXjY0
An average programmer's main job is to track down and fix bugs that shouldn't exist inside software that shouldn't exist build on frameworks that shouldn't exist for companies that shouldn't exist solving problems that shouldn't exist in industry niches that shouldn't exist. I'm 100% convinced that, if someone comes along and creates something that actually obsoletes 95% of programming jobs, everyone would very quickly come to the conclusion that they don't need it and it doesn't work anyway.
PostgreSQL would probably be way faster if you add proper indexes.
Sure, but that sort of thinking is a way to become more than a factory worker.

Programming is magic. It lets you change how the world works. Never forget that.
No, you don't understand. There is no way to be sure your model won't bankrupt you by mistake if you don't verify everything it does, even with the initial prompt and checking. You can't let it run unsupervised for anything important. Verification takes at least half the time compared with doing it without AI help, not much speedup there.

I am currently working on a schema matching task, just mapping fields from one schema to another, semantically. If you sample 5 responses from the model, only 70% of the time they are all in agreement. Many times it contradicts its own predictions. And this is a simple task. There is task intent ambiguity, input ambiguity and model ambiguity in there. It is weaker for matching fields in other languages.

That's why I think AI, as wonderful and surprising as it is, can't do any high stakes task on its own. It is just a starting point that gets you closer to the solution from the first step, but not a task solver. It needs validation systems and feedback to improve past this stage, and that usually means human in the loop, rarely we can automate validation on top of AI.
https://openai.com/charter

I found this hard to read personally but have a look.

Edit: I find it hard to read because I believe it’s imposing and it’s a hypocritical piece of corporate new age woke trash.

The goal is to make a bunch of money, just be honest about it.
The advice isn’t about coding vs managing. What John is saying is to deeply understand why you’re building something, so that you can build it better. If you over focus on the what — the implementation, the language, the approach — you won’t be as good, and your work may be increasingly replaced by AI.
I think you could say this effectively is what is happening within the narrow confines of any single conversation.

Although it throws away that conversation once it's done.
That seems an implementation detail that would be entirely solvable with some additional work rather than a fundamental limitation though.
I get this exact scenario very often — model says something blatantly false, gets called out, apologizes and continues. 3.5 or 4, they both do that. And I only discuss stuff with it that I'm at least familiar with, so I can usually catch these mistakes, but it isn't exactly encouraging.
Eh, the difference is almost entirely in presentation. At the core a car today doesn't do significantly more than a car in 1962.
I think his point is that an ISA prevents you from owing money if the program didn’t benefit you. Traditional tuition must be paid whether or not you use the education in a new job. So for a person who isn’t confident they’ll get a better job, owing traditional tuition can be risky.

I’m just explaining, not advocating for the point of view.