It's probably best to adjust unrealistic expectations first.You are probably not ready for operating system's development. To truly succeed at osdev, you must become an expert on what you are doing and what your code is doing. You don't have to be an expert from the start, but you must be able to reason about exactly what your code does and what is happening, to have a lot of confidence in this area.
You say that you are lost as to what you want to achieve. This is a problem. Without a goal, an utility function, it's hard to help you get what you want. You should think about whether you want to do it for fun, to accomplish something, to learn something, to get clarity from having built a whole system and understanding all of it, to be a programmer, to challenge yourself, to make a profit, to trick people into thinking you are an osdever, to contribute to the osdev wiki, do something interesting, keep boredom away, and so on. It's entirely up to you want you want to do. It helps if you can define this. Try examine your mind, find out why exactly you want to do osdev or general programming, look for that little thought, write that down and accept it. It's generally helpful to examine what you want to do and your motivations to do so. For instance, if you are not getting joy from it, something might be wrong, and you should consider what you actually wanted to experience.
Paying for a webserver is generally pretty cheap these days. Don't use that as an excuse. You probably use more money on food and other forms of entertainment. Don't forget to divide the cost with the amount of use you get out of it. For instance, if you go watch a movie, you only see it once, and then that money is gone, while a website can be useful every day. Web programming, though, is distinctly different from more traditional general purpose programming. I personally don't enjoy web programming and don't do it. You might feel different. There can be a shorter feedback cycle between doing work and experiencing results than with operating systems development, leading to a better flow and building of confidence.
I don't know the particulars of your asperger syndrome and how it affects you. I've heard of people where cognitive disorders have been turned into personal strengths in some areas, while in others it is just a cognitive disorder. I don't truly know anything about this, really. As a first approximation of bad advise, I'd wonder if your lack of math skills is due to teaching methods that were unsuitable for you, or whether you have not yet learned proper ways of reasoning about mathematics. Simple school math can be confusing because it doesn't make rigorous sense. I'm personally more confused by a poor explanation than a true one. If you want to learn math, find out which ways of learning it actually work, and which ones don't. For instance, class room teaching, self-study, one-on-one tutor sessions, lecturers, online videos (see khan academy for instance), reading excellent books on mathematical concepts (I'm reading Gödel-Escher-Bach these days, I think it introduces some advanced topics in a very approachable manner compared to how you usually learn it at university), and so on. Find out what works, what doesn't, then use the methods that do work. There are methods you might think, but immediately reject automatically and prematurely (like asking for help, or bribing someone), try not to do that, but instead think of why you truly rejected that method, bring it to a coherent conscious thought. I've made my idle thought to think about what I am doing, what I want to do, how to optimize that; and found it useful.
Being good at math (like calculus, vectors, and what not) is useful as a programmer, but isn't that truly crucial. What, however, is crucial is the ability to reason systematically about your code and be right. You'll pick this up with practice. There is a similarity with math here, as you need to be rigorous, but you can also pick up short cuts where you can convince yourself of something complex by seeing a few patterns and knowing something follows (like if seeing x = 6y, you know y = x/6 immediately without doing all the steps to isolate y). Programming might improve the same thought processes in math, although experience does matter there too.
It's probably a good idea to also locate people that you think you can learn from, or can learn with, topics that you decide interest you. If this works, you can create some social pressures in the group that drive you all forward.
If you want to do osdev, you probably would do well getting to learn to do C programming well (do this on Unix, it's yuck on Windows). This might be hard. Starting to master something like Python is probably a good start, I think that's a decent language to learn and also useful as an experienced programmer. Every post will probably suggest something different. Don't be too quick to rule out their advise. But it's easier to pick technology when you have concrete goals. I would suggest some simpler goals so you can develop a flow where the challenges fit your skill and you have a positive feedback loop.
These are just some random thoughts based on my personal experience. I don't know your situation well enough to give you proper advise, so I gave some meta-advise to help you figure out what to do. You might have to read this post a couple times and not immediately reject all ideas. Or perhaps it doesn't apply to you.
Note that I'm not treating you as an intellectual inferior here. I get why you fear that reaction, and people might think that when seeing this topic and being unable to give any useful advise, but that's just them defaulting to victim blaming. It's definitely a problem on these forums, where someone posts a hopeless topic, and established members think of that person as hopeless. You're not doing that here. You are going one level higher and posting a meta question where you ask for help getting a coherent direction. That's a good thing.
|