Ask HN: How do I get over my obsession with operating systems?
I'm not officially a programmer, although I code a lot. And despite the impression people get from me, my college degree is not in CS. One of my tech obsessions in the past few years has been reading about operating systems, their differences, their history, and the decisions they made along the way. Sometimes it's a sad story (like when I read what happened to Solaris and BeOS), and sometimes it gives me joy (like seeing how Linux distros are getting more stable and consumption-ready for end-users). On that note, sometimes I ask myself how the world would be different if UNIX had won instead of Windows, and then I remember that I actually don't hate the Windows kernel as it's honestly a rock solid design. Still though, I think a lot about OS's and sometimes get sad that Unix (as it was meant to be) didn't get into consumer's hands. OS X and Linux are out there, but they're more like Unix-like OS's.
But I feel like this obsession neither benefits me in any meaningful way, nor does it go away on its own. Is there something I can do that'll help me stop thinking about OS's and focus on the tasks and things that we can do on them instead?
37 comments
[ 4.8 ms ] story [ 81.6 ms ] threadOr build distro or something. You've got an itch, might as well scratch it.
https://www.linuxfoundation.org/tools/participating-in-open-...
A few family members and colleagues are autistic and have “obsessive” special interests. Some of them are very useful in helping them forge their path in life and some cause trouble. I have a colleague who has needed some very strict workplace boundaries to be able to function without his other interests stopping him being productive. Not suggesting you are autistic, just underscoring I’d like to know what friction this interest causes you.
Also, it sounds like you enjoy thinking/learning about OSs, so saying it doesn't benefit you in any meaningful way sounds strange to me. As if your happiness means nothing. Maybe think about what's really important in life.
Also, OP, maybe look into building an operating system from first principles like that dude who made the tetris OS [0] or look into creating a nice collection of curated OS VM snapshots that demonstrate the things you're into in a running environment with tools like LXC/LXD [1] ( these days it's surprisingly easy to share VMs running with very detailed emulated specs running connected to a web browser) or look into taking the time to assemble one of those kits that lets you build a historic processor with LEDs and transistors on a bread board [2]. Or if you just like reading about it, even just keeping a journal or private wiki will I think make it so it gains personal context. Also, you like what you like. If it's not really hurting you to have a hobby about loving the history of OSs, I know some folks that are pretty encyclopedic about the inside baseball of pro wrestling or star trek. Hunt your bliss.
For what it's worth, I'm pretty sure your insights into the things your reading is something I'd enjoy reading or exploring. If/when you figure out how you want to share that, I hope to see it and I can dig in and read or watch every entry and ignore what I'm really supposed to be doing in a day and bore my girlfriend with the details. I think possibly this is just describing how human history is assembled after it's done being the human present.
[0] https://www.youtube.com/watch?v=FaILnmUYS_U
[1] https://www.youtube.com/watch?v=aIwgPKkVj8s
[2] https://www.youtube.com/watch?v=fCbAafKLqC8
If you have money it's the best thing you can do, I don't have money for medication (I only have enough for depression medication) and I have to manage having OCD without medication.
This particular obsession sounds more ASD-like than OCD-like (although it could be a symptom of either, both, or neither.)
The same type of abstractions would have been build on top of whatever was left standing and we would have more or less the same things we have now. These accounts are not epic battles, they are just businesses competing with each other. An OS is just software that manages hardware, a lot of the innovations are academic, if it runs the hardware properly, it works.
That said, as long as it's not taking up time you should be utilising for other things, I don't see a reason to stop. As you've been doing it for a couple of years you're going to run out of material and you will have it all memorised soon anyway
Perhaps give this a try: https://wakingup.com/
I'd say, "just stop thinking", but thinking about it or framing it like that never really works for anyone.
I came to the conclusion that all current kernels have the same philosophy, basically there's a concept of process (aka address space), threads, virtual memory, interrupts, i/o devices, concurrency and synchronization, etc. Unix/BSD/Linux, macOS (BSD with a Mach kernel), Windows NT (a descendant of VMS), all have more or less the same core concepts. This is why I also started looking outside those systems, and started exploring mainframe operating systems and their history (starting from IBM OS/360 all the way to z/OS).
I started asking myself what if there was a different way to design an operating system. What is a "program"? Does every program have to be loaded into its own address space? Can we be more efficient when composing small programs together by colocating them in the same address space (think of piping without IPC)? How can we maintain protection in this case? Can we leverage memory protection keys to help there? Can programs define metadata about how they should be integrated in bigger flows (think execution DAGs)? Can we blur the difference between CLI, GUI, and server programs such that all of them are considered pieces of functionality that is registered system-wide and invoked in the context of other "programs" (think of embedding behaviour of one program inside another). Can we think of interrupts as hardware callbacks? Can we structure interrupt handlers as async workers in a unified programming model? How does that influence async i/o and events design?
To enable this kind of thought, I think we'll need a different breed of programming languages. Can we have a language that doesn't just focus on control flow, data types, etc. and instead allow us to define large, complex system behaviour in a way that guides the design, rather than implement the design? This is what I'm obsessed with, and I still don't have an answer.
This is rather telling. > OS X and Linux are out there, but they're more like Unix-like OS's
OS X is a literally certified, specification-compliant, Unix-family OS with a clear BSD lineage. Just because the userland is closed sourced and custom hardware being necessary to get the best performance doesn't make it any less of a Unix.
https://www.opengroup.org/openbrand/register/
I admit I have a soft spot for software that didn't stand the test of time. I was once on a team that developed a product that was killed in favor of another product. Reading the history of Windows Longhorn (and how much effort was thrown away), I felt a connection with these developers who no doubt felt similar disappointment.
If that doesn't work, perhaps you could make this into something useful. Blogging about something you're passionate about is a good way to signal to people that you're generally an intelligent person, and can help you get jobs, etc.
Those words are also on my sheepskin paper that I got on the graduation ceremony walk-thru.
So, I suggest you make the best of what you know and branch out … earnestly.
Writing, blogging, teaching, researching, applying, and most importantly … never … never stop learning.