It’s fun to understand just for intellectual curiosity’s sake but the number of people who get to work on shipping code where ring-0 knowledge is useful has to be minuscule as a percentage. It feels like a minor miracle I got to work on device drivers in my career. I imagine students might be more worried about completing assignments and good grades than the ins and outs of debuggers, too, though understanding those is important for problems one is more likely to come across in work projects versus smaller school assignments.
> the number of people who get to work on shipping code where ring-0 knowledge is useful has to be minuscule as a percentage
I wonder if it it is more that the percentage of people who choose to dedicate themselves to that type of work is miniscule. I work in graphics and performance, and it seems similar.
Few people really work on it specifically at any given company, and I've heard people warn others that there are few jobs in it.
But video game companies really want people for those roles and will pay well because they're hard to find. Still, few programmers show any interest in specializing in those skills. If you're passionate about it and willing to learn the details you'll eventually find a lot of job opportunities. I know people who want to work with this and do so - I know many more who have specifically said they want to stay away from it. I don't know anyone who wants to and can't.
Before listing resources, let me state that the single most important thing is to learn by doing. Write a lot of rendering code, experiment a lot with your own ideas and variations on each exercise. Once you move past the basics don't be afraid to spend several evenings in a row failing to fix what in hindsight seems like an embarrassingly simple math error. That is how you go from having read and sort of understood something to really knowing it. Also, the best approach is usually to devour as much content as you can from several sources to get a wider perspective.
There are a lot of great resources out there. The best modern beginner friendly resource I am aware of is Scratchapixel[0]. Back when I was first learning 3D I used to follow tutorials on places like NeHe Productions[1], which is probably a bit dated these days.
For more comprehensive information on all kinds of techniques, with examples from big games for each technique, the absolutely best resource is the book Real-Time Rendering[2].
If you're interested in ray-tracing rather than rasterization (i.e. more film than video games) a lot of people recommend "Ray Tracing in One Weekend"[3]. If you want to learn state of the art ray-tracing in depth, with all the math and and theory, the best resource is "Physically Based Rendering: From Theory to Implementation"[4], which is freely available online.
> I’m retired but mentor CS students at two local universities.
> I haven’t had a student in two years that was even remotely interested in ring-0, internals, or really understanding a debugger.
I know quite a lot of such people (even in student age) who are interested in such topics. I really have a feeling that you chose the wrong students at the wrong universities.
Evidence for my point: rather recently, No Starch Press published quite a lot of about such topics - I am rather certain that a publisher knows quite well which kinds of books do or don't sell well at a given time:
> you chose the wrong students at the wrong universities
I work with Duke University, the University of North Carolina, and Carnegie Mellon.
You don't know that "young engineers" are buying those books. I didn't claim that no one is interested in low-level development. My point is that most younger developers couldn't explain the difference between a mutex and a critical section, or how the OS handles a thread quantum, if their lives depended on it.
I could list a dozen new books on how to build an LLM from scratch. That doesn't mean that most developers understand LLM internals.
As an aside, I love your username. I have a tattoo of Aleph One. ;-)
> My point is that most younger developers couldn't explain the difference between a mutex and a critical section, or how the OS handles a thread quantum, if their lives depended on it.
To my knowledge this is taught in some "Operating System" course, and typically students have to do a hands-on implementation of at least some central parts of an operating system. So I guess these students simply did not pay attention in the respective course. :-(
I'll help you out: all CS students are required to take an entry-level OS course. Again, you are making incredibly weak arguments given that most students are required to take an English writing course but then can't remember most of it.
It isn't that they didn't learn it: the issue is that most CS students graduate and work in areas that require zero OS knowledge. For example, when would I spin up a thread versus a fiber? Even ring-3 devs need to have some level of understanding if they want to create performant software.
First, I didn't work with the right universities. Now the students I work with "didn't pay attention".
>
First, I didn't work with the right universities. Now the students I work with "didn't pay attention".
I can only say that my university-time experience was so much different, and I do observe a similar interest among younger students. So I am hypothesizing what could be the reasons.
But concerning your point, I would indeed claim that the hypotheses "wrong university" and "students did not pay attention" are positively correlated: I think a university where many students are not actually not very interested, excited and curious about the topics that are taught in the lectures does not form a good learning environment.
I would claim that The Linux Programming Interface covers a broader range of topics, and I also think this book goes more in depth. On the other hand, System Programming in Linux seems to be more pedagogical, and is more targeted towards people who profit from doing exercises and programming projects to get their hands dirty.
Arguably the lower level abstractions are more interesting too! how exactly Windows does ring-0 is less interesting than writing your own ring-0! And unless you care about writing driver-level software for Windows or contributing to the kernel, learning this is also less useful.
I'm essentially arguing that unless you work at MSFT, there's next to no reason to learn that specific abstraction layer.
> I'm essentially arguing that unless you work at MSFT, there's next to no reason to learn that specific abstraction layer.
Really? Understanding the cost of ring transitions is incredibly useful. I recently consulted with a company that was having horrible performance issues, and it came down to the fact that the primary developer didn't know that certain Win32 calls forced ring transitions. The entire fix was switching from a mutex to a critical section (one causes a ring transition, the other doesn't).
Treating the OS like an impenetrable black box will bite upcoming engineers/companies... eventually.
I was an engineer at both MS and Apple. At Apple, privacy was baked into every new feature from the start. At MS, the privacy component was glued on at the very end, if ever.
Like OP said, Apple isn't perfect nor will they ever be, but they do prioritize privacy better than most.
Something similar happened to me when I left Microsoft for Apple (I moved from the Visual Studio team to the Xcode team). MS spent six months trying to prove I'd taken "industry secrets" with me. I hadn't. The entire thing felt like a personal attack and was extremely stressful.
It sounds like, in this case, Apple has hard proof that documents were stolen.
This seems like an important post. It looks like these letters are occasionally used to as a tactic, and i can see how such a tactic can really scare employees in a country where legal bills can climb really fast.
> in a country where legal bills can climb really fast
Honest question: Are there countries where this is not the case? I'd be interested to read more about how that manage that. If it's some sort of "protecting the little guy"-type thing or a general suppression of legal costs. Or maybe I'm reading too much into your comment.
It is more that labor protections in most of the industrialized world actually mean something, such that this sort of behavior is generally not even to be considered an option by an employer.
Regulated legal insurance market coupled with „looser pays all the costs“ system.
The insurance doesn’t mind fighting for you because they will get paid by the company making the frivolous suit. You don’t pay much, 10$/month.
Although in this particular case, you wouldn’t even need that, since either you took the documents and that is criminal fraud prosecuted by the state or you didn’t take the documents and then the company would be in hella trouble if they perjured themselves to the public prosecutor claiming you did.
Doesn't that mean that if you have a slam dunk case you can get a super expensive lawyer just to run up costs as much as possible? Hell, could you ask your friend to be your legal representative and have him charge you a gorillion dollar in legal fees? Then when you win you split the loot?
Civilized countries regulate the rates that lawyers can charge for standard work. Also lawyers get only reimbursed for reasonable costs by the loser. Still expensive, but not absurdly so.
No. The fees must be objectively reasonable and usual and customary for the effort and level of skill required. To get fees, you must submit an itemized billing statement that gets picked apart by the other side.
It does, and it absolutely has a chilling effect in countries which don't do things this way.
Sue someone who can spend millions of pounds (for the sake of argument) on defence? Better be certain you can win... against someone who can spend millions of pounds, and probably went to the same public school as the judge.
In America, legal fees can be awarded as additional damages. We should do it more than we do. But given those two options? I'm on Team American Rule, 100%
In England (where pounds come from) costs are not always rewarded, but very frequently, they are: and it's actual costs, not some fixed fee. A litigant who spends more on solicitors indemnifies the loser accordingly.
They did. That said, I don’t know how much “defending” they had to do given that I was never even told what, exactly, I was supposed to have stolen. But, like I said, it was both surprising and anxiety inducing.
I would think that is almost routine when big companies trade ICs at above a certain level. They pay for armies of lawyers which is a waste if not used. So its not about you, its about them throwing rocks at each other.
Though in this case, OpenAI may have leveled up the game a bit too much.
> It sounds like, in this case, Apple has hard proof that documents were stolen.
I believe some articles mentioned about employees bragging to their former colleagues about accessing documents. Also I believe they lied to Apple about being employed elsewhere so they can continue using their access and hardware, etc.
If these are correct, the whole OpenAI playbook is very dirty, and I won't pity them a bit.
Apple also has server logs that track these former employees downloading confidential docs. It doesn't prove that they shared them over to OpenAI, but Apple has pretty solid proof that the former employees saved them without authorization.
Thank you for your service. Xcode gets a bad rap from developers but for beginners, it doesn’t overwhelm them, giving them a great entry experience into app development.
Thank you for your comment. Prior to Apple, I worked on the Visual Studio team for 10 years. Now that is a complex app now matter how experienced you are. ;-)
I retired a few years ago and now do a slew of things (photography, robotics, 3D printing, etc.) entirely for myself. I'll start a project, have a blast learning/building, then simply move on to the next thing.
Learning for the sake of learning is one of my favorite things in life.
Not finishing - or even being able to define the finish line - is a great sign you're doing this right. You're not a tortoise seeking mastery; it's ok to be a distracted hare!
> Who gets a sense of accoplishment from prompting an LLM?
I have a good friend who is a VP at a telecom company who has never written a line of code. He's been using Claude to create interactive web pages to help him understand parts of the company.
He was so excited when he got something to work he called me immediately.
I'm sure the code isn't what you or I would write, but it is good enough for my friend. That said, heaven help him if he loses access to Claude. ;-)
I have a BS in CS (and have been in the field for 25 years). I couldn't understand the transformer architecture until I built a few myself. Here are the books I worked through. I now feel I have a very good understanding of modern LLMs.
I went this route because I had difficulty visualizing the content of the Attention Is All You Need paper. After going through both books, I can now understand every part of that paper.
I'm currently working on a robotics project that uses Nvidia's GR00T N1 model, and I was able to understand the research paper. [0]
Not OP but I worked through Sebastian Raschka's "Build a Large Language Model (From Scratch)" [0] and Raj Abhijit Dandekar's "Build a DeepSeek Model (From Scratch)" [1] books.
I don't think there is anything in a transformer I couldn't explain in the smallest detail now.
Well, as I suggested, working through the implementation yourself will give you that intuition. That said, I think the simplest way to explain why positional encodings are useful is that it gives the transformer just enough information to make attention meaningful without negatively impacting any parallel, content-based comparisons.
A vanilla self-attention layer is just a set of token vectors. Without positional info, swapping two identical embeddings changes very little about what attention can compute. We can "fix" this problem by using positional encodings. Text that has meaning isn't just a set of characters; the location and order of those characters is what provides meaning.
I haven’t had a student in two years that was even remotely interested in ring-0, internals, or really understanding a debugger.
I’m not being critical; they are just focused on higher level abstractions.
reply