solar has a point here with the failing attempts.
I for example have written several throw-away bootsector code and small "kernels" just for experience. These were the training thingies while I 've tampered with a printer driver for Gimp Print - a prohject which failed in the middle of it's way to success for my printer broke.
In the last four years, I've smashed lots of Kernel modules or service modules into shingles in order to rebuild them and to make something more senseful outta them.
But I haven't bothered to redo everything from scratch. Why bother with this. BlueIllusion works, it doesn't fail on me and it still amazes me with quite stunning twists of evolution (see the recently born tcp/ip suite)
Of course, there are Things I'd do differently if I 'd restart it from scratch, know ya?
stay safe
