
ExDOS is developed by Omar, “almost 14 years old” - vmorgulis
http://exdos.eu.pn/
======
chaostheory
The server hosting his site went down. Here's the github link:
[https://github.com/omarrx024/exdos](https://github.com/omarrx024/exdos)

~~~
e19293001
Here is an archive
[https://web.archive.org/web/20150810162221/http://exdos.eu.p...](https://web.archive.org/web/20150810162221/http://exdos.eu.pn/)

------
chetanahuja
Regarding learning assembly, I'm beginning to come to the view that it's in
fact the best way to teach the first course in programming to kids. They don't
come with any preconceived notions of what programming should _look_ like and
given an explicit, visual model of the computer, they quickly learn the small
number of operations to write programs. More over, once they learn to do

    
    
       LDA A
       ADD TWO
       STA A
    
       DAT TWO 2 <-- initializing variable TWO 
    
    
     then, this line of code
    
        A = A + 2
    

in C or a higher level language makes soooo much more sense. That awkward
phase of internalizing that '=' is an assignment operator and is different
from another operator meant to test equality gets a lot shorter for a
beginner.

Btw, this is the best online CPU simulator I've found for that use
[http://peterhigginson.co.uk/LMC/](http://peterhigginson.co.uk/LMC/) I'm
shocked at how all the code academies and hour of code's haven't created a
polished version of LMC (Little Man Computer... look it up).

~~~
tachion
In my personal case I am not sure if it didnt end up 'bad' for me. The first
language I've learned was 6502 ASM on C64 (and learned is a word of many
degrees here, I can't say I've written anything serious in it, ever) and for
some reason I've been struggling with many other languages for years to come
after that - tried Perl, PHP, C, AmigaE, without being able to grasp any of
those. Until I've met Python, that in few days took me from ground to the
stratosphere (which today again looks like a ground, but that's a different
subject). And even then, old habits of counting cycles and thinking about what
the hell is the language doing made me to prematurely optimize my code (like
doing 'while 1' instead of 'while True' because in 2.7 True is simply a
variable, what means the interpreter will have to check its value first and
that means lost CPU cycles, and lots of other things that made sense in 6502
ASM) instead of getting it to do shit ;) It took me a while to 'unlearn' those
habits and to simply enjoy the language in its own form.

~~~
themartorana
Well yeah, except now I have some `while True:` statements to clean up...

------
byuu
I'm very happy to see people are still doing this sort of thing!

I've always wanted to see something of a truly 'barebones' OS; but one that
could at least get you 64-bit mode, OpenGL ES, audio output, USB polling and
network connectivity with libc available. Yet not be as complex and large as
Linux/BSD.

Being able to run a real-time application with no pre-emption, no virtual
memory protections, no kernel transitions, etc could probably eke out an
additional ~20-30% of performance on a CPU-bound application. Plus the near-
instant boot would be great for media players, emulator arcade boxes, etc.

Probably just not possible, due to the driver situation. There was a bit of
hope UEFI could lead to better drivers for hardware prior to boot, but efforts
around things like GOP (graphics output protocol) haven't really gone anywhere
that I've seen.

Sadly, there's a very small amount of modern things you can do with 32-bit
mode, VESA and a keyboard. I've never even found a video card with a 1920x1080
VESA display mode; they're almost exclusively still 4:3 only.

Plus, no sound rules out gaming and media; no internet (let alone Wifi) rules
out any connectivity; no strong filesystem rules out moving data around
easily; no USB rules out loading things from external storage, gamepads, etc.

Only strong use case would be for embedded; but ARM platforms have this area
beat substantially in cost, power, tooling, etc.

~~~
jacquesm
> Plus, no sound rules out gaming and media; no internet (let alone Wifi)
> rules out any connectivity; no strong filesystem rules out moving data
> around easily; no USB rules out loading things from external storage,
> gamepads, etc.

> Only strong use case would be for embedded; but ARM platforms have this area
> beat substantially in cost, power, tooling, etc.

[http://docstore.mik.ua/orelly/linux/run/ch01_02.htm](http://docstore.mik.ua/orelly/linux/run/ch01_02.htm)

Linux started out as something quite a bit less impressive than what you see
today.

------
trsohmers
This is anecdotal, but when I was his age and getting into the "real" tech
world (and getting my work recognized), I really disliked my age being made a
big deal. A big influence on my own view (and I think many others in this
community) of being a "hacker" was Steven Levy's "Hacker Ethic", which
specifically said:

"Hackers should be judged by their hacking, not criteria such as degrees, age,
race, sex, or position"

While it is great that we recognize good work like this, bringing up his age
in the title is focusing on a pretty irrelevant metric when we should focus on
good work, no mater who makes it.

~~~
JDDunn9
Maybe we should get rid of weight classes for boxing, women's leagues for
sports, and anything that acknowledges accomplishments for anyone that is not
100% objectively the best on the planet.

~~~
cbd1984
You're acting like this wouldn't be interesting if it were an adult doing it.

~~~
iopq
it wouldn't

~~~
vezzy-fnord
I don't see why not, given that the threshold for plenty of Show HN entries
that make it to the front page isn't high at all.

------
voltagex_
This is extrememly impressive.

I just ran through the OSDev Bare Bones [1] tutorial this evening, even
implementing newline support! I don't understand all of it yet and here's a
kid half my age doing amazing things. Goes to show what you can acheive with
time and perseverance. I really wish I learned Assembly at that age.

[1]: [http://wiki.osdev.org/Bare_Bones](http://wiki.osdev.org/Bare_Bones)

------
jeswin
Congrats to Omar. I remember I was in awe about Marcelo Tosatti when he became
the 2.4 kernel maintainer at 14. Here's an interview
[http://www.informatica.co.cr/linux/research/2002/03.htm](http://www.informatica.co.cr/linux/research/2002/03.htm)

~~~
ploxiln
That interview says he started working for Connectiva at 14 and started
maintaining the 2.4 kernel at 18.

(still impressive)

~~~
jeswin
That's right, my bad. Thanks for the correction. I remember thinking at that
time that he's younger than me and knows so much more.

------
vezzy-fnord
Someone should set up an AMA for him, I'd be really curious to hear his
opinions on the state of OS research and similar topics.

~~~
dkarapetyan
He's a kid. Just let him be. You can pick his brain when he is a little older.
People forget that even prodigies need time to grow up.

------
socceroos
Good on him. Building an OS from the ground up is actually fun when you get
into it. I found it to be a great learning experience (but did it years later
than this dude).

------
jakub_g
It seems HN crowd DDOS-ed the page, here's the archived link

[https://web.archive.org/web/20150810162221/http://exdos.eu.p...](https://web.archive.org/web/20150810162221/http://exdos.eu.pn/)

------
NickHaflinger
[http://exdos.eu.pn/](http://exdos.eu.pn/) .. ERROR 403: FORBIDDEN WEB PAGE

~~~
omarrx024
My free web hosting is limited. It seems the maximum view limit has been
reached. :/

------
lmitchell
I've lurked on the OSDev forums he credits on his website for a long time, and
both Omar and Muazzam (mentioned as well on the website) are goddamn
impressive for barely-teenagers. Someone hire those kids!

~~~
meddlepal
Eh, let them enjoy their early formative teenage years without the stress of a
job. There's a time and place for working but barely 14 isn't it.

~~~
lmitchell
You're right, of course - they're incredibly talented though.

------
omarrx024
My site has apparently reached the view limit. I'll move to GitHub Pages, I'll
let you all know when I finish. Thanks a lot!

------
NickHaflinger
ERROR 403: FORBIDDEN WEB PAGE

------
S4M
The screenshots link is dead at the time I write this (5h after submission).

------
pknerd
Muazzam's Twitter handle: @muazzam_kazmi

~~~
muazzam
Keep in mind that I rarely use Twitter. However, feel free to contact me
through email or Facebook.

------
101914
Muzzam's site: [http://alotware.hol.es](http://alotware.hol.es)

"Q: Why did you choose Assembly?

A: It is easy, simple, and the language of real programmers."

Will he still believe this when he's older?

I hope so. Because it is the truth.

~~~
na85
But don't _real_ programmers use a magnetized needle and a steady hand?

~~~
derefr
No joke: I strongly believe that "real programmers" do indeed write in
assembler. Not _x86_ assembler, mind you. Rather, "real programmers" first
compose an abstract machine semantics for the solution domain, create an
instantiation of those semantics in the form of a virtual machine on some host
architecture, and then express the solution in an assembler language targeting
the abstract machine semantics. (See, for example, the Prolog abstract machine
semantics to represent the solution domain of expert systems.)

They might, if their problem is _really_ hairy and requires large amounts of
exploratory programming, create a high-level programming language (usually a
macro-language) that allows easy access to the same abstract machine
semantics, and then code in that. For well-defined "closed" problems (e.g. in-
kernel packet filtering), this added baggage is usually unnecessary, but for
more "engineering-oriented" problems, you might end up with something more
like an Erlang than a Prolog.

Note that C itself follows this rule; the "C abstract machine" is a pretty
good fit (though perhaps not perfect) to the solution domain of low-level
systems programming.

~~~
pekk
Can you explain why this is a smarter way to build software?

~~~
derefr
Mostly that it's the simplest and oldest (and, in my opinion, the least
"sandwiched in between five layers of indirection") version of a very common
idea, that I'm not quite sure the name of. It's the idea behind DSLs, and
Lisp-like languages. Most of Chuck Moore's writings on the potential behind
Forth-like languages are also about this idea. The most modern instantiation
of the idea, I believe, is "Behavior-Driven Development" with Cucumber et al.
But it's all the same thing, in the end.

Generally, the idea is: first, you should define a language to directly
express statements about your problem domain. Then, in one place, you can
define the solution in terms of the problem domain. Completely separately to
that, you can implement the mechanism by which a machine interprets and acts
upon statements about the problem domain. Putting the two together results in
a program that solves your problem. But either may be maintained separately.

The term "separation of concerns" has effectively always been about making
sure that demands for change that come from separate "departments" don't end
up touching the same line of code. This model excels in that: maintaining the
specification of the solution is solely the province of the business, while
maintaining the interpreter of that specification is solely the province of
some engineers somewhere. As long as the interface between the two is stable—a
stable ABI—improvements can be made to one or the other without the other
group ever having to be aware.

A great example of this is the Inform 7 language. One group of people writes
text adventures in this language, or enhancements and plugins for text-
adventure development. A separate group of people maintains interactive-
fiction interpreters that parse a given ISA. Neither group has to think about
the other. The ecosystems of the IDE and the runtime are, in fact, completely
divorced.

------
zaroth
From "About me"

    
    
      My name is Muazzam Ali Kazmi, a hobbyist programmer from Shahpur,
      Layyah, Punjab, Pakistan. I am a student of grade-11 and I started
      programming about 4 years ago. I am developing the OS since 7
      September 2014. My interests include religion(s), philosophy,
      operating systems, virtual machines, simulating a universe in the
      computers, compilers, theoretical computer science, artificial
      intelligence, mathematics, and science.

~~~
akclr
[https://disqus.com/by/muazzamalikazmi/comments/](https://disqus.com/by/muazzamalikazmi/comments/)

