Programming thread

  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account
I realize this is a very indian-coded question to ask instead of simply trying it. But is it feasible to make a graphical OS by yourself nowadays (minix could be probably used as a kernel, but the file system and a graphics server would need to be made completely new at the very least, and a lot of the other software needed for a working system forked and modified to support some new features)? Even if just to support just one specific hardware config and hope people pick it up and add support like with linux (not at that scale, but a handful of hobbyists who want it working on their own systems would be enough).
I have some ideas I would like my computer to have, that I do not really see anywhere, but do not want to end up like Ted Nelson at worst or Terry Davis at best.
My best guess for a timeline on something barely functional, after reading a lot of the osdev wiki, would be around 10 years. However I very much don't know how much I don't know in this field, so I'm not sure if I'm not being overly optimistic in even assuming it possible. I have never really touched anything this deep before.
 
But is it feasible to make a graphical OS by yourself nowadays
What's the biggest project you've completed solo? Without a history of completing large, difficult projects, I'd say your odds are very slim.
 
is it feasible to make a graphical OS by yourself
It is a dice roll. If you have decent people skills, and can market in on youtube, you might get following and enough people willing to help to make it possible. Alternatively you have to be very driven to not give up when you will eventually have to come up with solutions that aren't really readily available on the web.
Anyway I won't say that you can't make it. But the mere fact that you ask if it is feasible, for me, indicates that you aren't into it enough to make it.
It's kind of a project where you really have to be a lil delulu.
 
I realize this is a very indian-coded question to ask instead of simply trying it. But is it feasible to make a graphical OS by yourself nowadays (minix could be probably used as a kernel, but the file system and a graphics server would need to be made completely new at the very least, and a lot of the other software needed for a working system forked and modified to support some new features)? Even if just to support just one specific hardware config and hope people pick it up and add support like with linux (not at that scale, but a handful of hobbyists who want it working on their own systems would be enough).
I have some ideas I would like my computer to have, that I do not really see anywhere, but do not want to end up like Ted Nelson at worst or Terry Davis at best.
My best guess for a timeline on something barely functional, after reading a lot of the osdev wiki, would be around 10 years. However I very much don't know how much I don't know in this field, so I'm not sure if I'm not being overly optimistic in even assuming it possible. I have never really touched anything this deep before.
how much experience do you have with low level stuff
how much time are you able and willing to commit to this

saint terry could do it so it's technically possible but whether it's a reasonable solo project for you personally is another question
 
What's the biggest project you've completed solo?
It was decently big, cannot really reveal much without workdoxing, but it worked mostly with geometry stuff, and was written in C#. So probably not really relevant to OS programming.
market in on youtube, you might get following and enough people willing to help to make it possible
I wouldn't market it or ask for any collaborators without a working prototype, and I seriously doubt anyone would commit without that even if I did lol.
the mere fact that you ask if it is feasible, for me, indicates that you aren't into it enough to make it.
Kind of my thought process too. I just have a pretty big itch that keeps getting worse, but I am afraid to commit.
how much experience do you have with low level stuff
Not much in the real world, one semester of x86 assembly and one semester of VHDL which ended in making a CPU capable of executing brainfuck, which was really fun, but I'm not much sure if relevant.
you don't know what you don't know, so why not start by following an OS programming textbook and then loop back around if you like it
This may sound retarded, but I actually did not think of that.
Probably because why make something just to throw it away. But just getting to know, in praxis - not theory, what would actually be involved to get a working system could give me the confidence to actually try it (or, alternatively, it could be the piece of evidence I need to see that I lack the intellect to make an OS). Thank you.
 
it worked mostly with geometry stuff, and was written in C#
Depending on what exactly you mean by geometry, there's a good chance this might be adequate. I'm looking primarily for systems-thinking capacity. In a very abstract sense, what are some of the more interesting problems you dealt with, if you can? For example, a function of a project of mine involves validating proofs like geometric ones. This requires a bunch of multi-system reasoning that I think would qualify as being competent enough. Actual systems thinking is another critical component, but that can be mediated to some degree by research ability. It's really contingent upon personality types.

On the other hand, it wouldn't take much hacking with Cosmopolitan ( https://github.com/jart/cosmopolitan ) to bootstrap this quickly, so it's more approachable today than ever.
 
Unless you're willing to make it your life project, do not directly build an OS on a modern hardware stack (components you find in modern desktop PC). Try looking for software libraries that provide bare API's like a framebuffer and build an 'OS' on top of that. If you want to dabble with hardware get an Arduino with an OLED screen, SPI SD card module, etc.
 
I think I finally clicked with using my abstractions (and my levels of abstractions) more intentionally over the weekend. It's like hearing a frequency I couldn't before, I was very scattershot in which things I rolled into functions for reasons not-strictly-functional, and what level of abstraction I wrote any given thing at. Kinda shows how rookie I am in a lot of ways, still.

It is kinda funny how code better grouped by level of abstraction looks "simpler", and I guess as a beginner I had unfairly assumed that anything that could be understood at a glance merely wasn't "big boy" coding. It's one of those moments where life humbles you and you realize you've got further to go than you thought.
 
you can almost certainly achieve it with Linux
If I add a bunch of extra servers/services I sure could, but it seems like a too-roundabout way of doing it. I should clarify that it is not meant for general computing stuff, the focus is pretty narrow (user, desktop only, browsing/writing documents/multimedia only - no gaming, server, production or whatever)
unless it's a passion project
It sounds like a really interesting project, I don't have a boner for it, but think it would be a nice thing to exist.
Unless you're willing to make it your life project, do not directly build an OS on a modern hardware stack (components you find in modern desktop PC). Try looking for software libraries that provide bare API's like a framebuffer and build an 'OS' on top of that. If you want to dabble with hardware get an Arduino with an OLED screen, SPI SD card module, etc.
I do want it to be graphical, will keep this in mind. I am not pigheaded on having to make everything by myself (as I said, I think I may be able to use the minix kernel), just getting it working the way I want, on my computer, would be enough for me.
 
For the last two years I quietly maintained a repo. Posted about it and got a few stars, couple of forks, and useless comments. Is what I have completely useless to anyone on this planet there is no one willing to pay me for the value of having such software? It's possible. Just like it should be possible for one person to create an OS but most people capable of doing this on their own are living too comfortably and they're at the stage where they're aware their time is limited, so they avoid such side quests in their lives. It's better to not rock the boat. If you're able to and you are not, you should be shot so you don't use up the oxygen of someone able and willing.

You people are the reason we don't have alternative in word processors. Markdown will have to be made the standard international. Another reason is no one is willing to because have you ever tried to open a window in winapi?

It's like trying to build a boat at sea.

I think it's ridiculous that Spotify hides it's play button behind 30 divs. Can I just purchase raw bytes? Can we just get an endpoint and you keep your stupid control stack?

It's like those faggots at Chipotle at a meeting trying to make the line go faster so they program the receipt to be printed before transaction is authorized, they are at the bottom of the barrel.

If your business depends on crud application you have a very big problem ahead. They won't even have backups for you to download. They never invested into backup because they never imagined their customers would leave.

They're treating us like cattle and our women like whores.

Fucking women can't stick to nurse or bondage so they fuck everything up they don't understand now a bunch of men have to come and fix everything while these whores are kicking and screaming.

It always starts with "I think it would be nice..." and then you're over budget and the accounting department is throwing someone under the bus and into prison for 12 years because some closed source system farted.
 
FFmpeg has started releasing its own assembly-language tutorial in the hopes of getting more folks interested in the language: https://github.com/FFmpeg/asm-lessons
It's a noble effort but they just got started. You can find a lot of resources by searching, say, 'learn assembly programming online' (omitting 'programming' got a bunch of hits for US legislatures because of the 'assembly' part). Microcorruption was mentioned on le Reddit. I think that looks intriguing but I want to build more prior experience with assembly before I try it in earnest. nand2tetris was also mentioned. I did part I on Coursera (which is the relevant one for assembly). I think it's a great idea but the book and course both seemed a bit rushed. However there is a new edition of the book, and it is a bit fatter. Maybe things are somewhat better now. One other thing you should know is that the Hack assembly language used in nand2tetris is really stripped down for conceptual purity and you will run into quite a bit more nuance doing x64 or even ARM assembly. Here's a quick Abominable Intelligence rundown:
chatgpt_comparing_hack_assembly_with_x64_and_arm.png
ChatGPT also suggested to expand on the aforementioned book with other volumes like Digital Design and Computer Architecture and a few other things. Just ask it something like "how should I supplement nand2tetris?" Also, I'm going to plug Exercism again. I haven't used any of the assembly tracks yet—there are three AFAIK, x86-64, ARM64 and MIPS—but I've been both a student and mentor elsewhere on the site. It's a great resource.
 
I want to try Neovim, how fucked am I?
At the end of the day, text editors are just tools. Pick the one that makes sense for you. I don't trust mechanics that don't own their own tools, don't trust barbers who don't own their own tools, why would I ever trust a programmer who doesn't "own" and configure the box he looks at all day? It ain't hard tbh, if you can play video games and remember hotkeys, you can use it. If you can install Linux, you can configure it.
 
the Hack assembly language used in nand2tetris is really stripped down for conceptual purity and you will run into quite a bit more nuance doing x64
x86 is a complete quagmire for a learner because on one hand it's designed to be a backwards-compatible instruction set almost back to the stone age of PC processors, and on the other it has a huge number of very specifc fringe-use instructions that'll have a learner scratching their head trying to figure out why the computer is doing what it's doing.

Instead of learning with a pure fully abstract Teletubbies assembly language, a newbie had better learn to first program a chip like 6502 which has both a fairly simple instruction set and will confront you with the very real hardware constraints involved, particularly if you emulate it at its real speed.
 
Instead of learning with a pure fully abstract Teletubbies assembly language, a newbie had better learn to first program a chip like 6502
I dunno man, while I respect the 6502, there's quagmire here too. "What do you mean there's no multiply instruction?" Thing about x86 ASM is that you've got opcodes for most of what you want, and if all you wanna do is use some limited subset, that's fine.
 
I dunno man, while I respect the 6502, there's quagmire here too. "What do you mean there's no multiply instruction?"
That's right, and the indirect addressing options have very restrictive requirements, always working off the zero page, and are even confusingly described in the actual manual. I'm not saying you need to stay on 65c02 forever and create 8 bit TempleOS with a 100% Aryan almost-C compiler. After you learn on a conceptual level you can graduate to a modern machine.

A dynamically typed and garbage-collected interpreted language is great for beginners because it has training wheels and the 6502 is great for beginners because it has blinders.
 
Back
Top Bottom