Why I suck as a programmer or: The Mystery of the Lost Volume
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
Have you though of trying a new series? One that actually concludes may help. :-D "For as long as I can remember, I have had memories. Colin Mochrie."
-
Have you though of trying a new series? One that actually concludes may help. :-D "For as long as I can remember, I have had memories. Colin Mochrie."
:laugh::laugh::laugh::laugh: I think Michael is trying to encourage you to not give up :) Seriously, I dimly recall the sense of bewilderment at this game called 'programming' when I first tried to understand a simple program on a National Semiconductor SC/MP chip (way back in 1977) and how it suddenly 'gelled'. 'Ah, so we move this from there to here? And then we add 1 and move it back to there? And then we copy it to there? Ah, ok, I see. So the copy sets the LED's and the second move stores it in memory?' Well you get the idea... Likewise, the sense of bewilderment at trying to move from DOS programming to Windows Programming in 1990. The O/S calls me? Say what??? And the O/S will move memory behind my back and I have to lock that sucker? You've got to be kidding. :) Rob Manderson http://www.mindprobes.net "I killed him dead cuz he was stepping on my turf, cutting me out of my bling the same way my ho cuts cookies, officer" "Alright then, move along" - Ian Darling, The Lounge, Oct 10 2003
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
Hehehe. That reminds me of the ZX81 (Basic) manual (which I still have on my shelf at home). It went through the basics (so to speak), and asked you to write a simple program in BASIC. Underneath it said (or words to the effect): "No cheating and using assembly language" What was funny was that this book didn't teach you assembly at all - it was the only book that shipped with the '81 hardware (AFAIK), and while it had an assembly reference of sorts in the back pages somewhere, I don't think it told you anything about the op-codes other than the hex value, character set representation, and the assembler mnemonic. IIRC, you could actually write inline assembly in ZX81 BASIC - there was some command, and then you chucked one of the '81s characters at the end to indicate which opcode you wanted :-D I'm going to have to dig this out when I get home now :rolleyes: -- Ian Darling "The moral of the story is that with a contrived example, you can prove anything." - Joel Spolsky
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
Even more: 1. If you are a programmer, you never have enough math. If you are a mathematician trying to program, all your math is useless. The subject of bugs, language exceptions and compiler errors is so critical for producing working programs that the subject of good math reary comes out. The implication on comp. graphics is crutial: the current state of theory is a few code libraries ahead. The theorists use quaternions as a basics and switch from one nilpotent number system to another. They say that somewhere in those jungles there are efficient and fast algorithms to solve everything. 2. BIG memory issue: Win16 GlobalAllock() sucks but sits inside COM-technology. Win32 VirtualAllock works but nobody seems to use it. Shared memory in Win32? Pure hack. Files more 2GB? How come? The ANSY set of routines implies they all fit in 32-bit byte size. The whole memory issue is a set of exceptions or bugs including famous VC5 or BorC auto dispose on return or static arrays bug in Intel libraries. 3. Missing volume on programming at large: Basics of DLL, static libs, processes, threads and exceptions, real time. The most important feature was never included: the SMALL program for Windows is LARGE. 4. Why my projects do not compile? I honesty try to compile GNU with VC but nothing happens. Thanks to Darwin Mac project, the guys recompiled GNU stuff so it may be done for Windows too. 5. What sucks the most: Still I do not see reasonable solution to the serial port problem. This thing is inside network protocol, custom solutions, slows down everything and NEVER works as you might expect from manuals. Serge Chychkan
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
Isaac Sasson wrote: Why I suck as a programmer I don't believe that to be true. 1. You discovered a deficiency in your knowledge and went to rectify it. 2. You sought the answer by looking up some books 3. The information was not found, so you are now seeking the information from other sources. There are many programmers who, once they leave education, become lazy and just ask people to solve their problems without attempting to find the answer for themselves. On numerous occasions I have had a problem and on my search through the documentation and books I have discovered a lot of other useful information on the way. Stuff I would never have found by just asking dumb questions in newsgroups and forums. There was one guy in the forums here on CodeProject that asked a lot of dumb questions. He claimed to hold MCSD, MCDBA among other certifications. If he really held them then the couse material for passing these exams would have given him the answer. My response was "I'm just a humble MCAD, but if you look in your course notes for these exams you've already taken you'll have the answer" I only ever ask in a forum/newsgroup if I am really stuck, and often someone there just needs to point in the direction of the correct book or online documentation and I have the answer. So, don't feel that you are a bad programmer. All programmers must continue to learn and educate themselves. I'm just happy that you try to solve the problem yourself first then come to ask for help because that shows you really are interested in becoming better at what you do. --Colin Mackay--
"In the confrontation between the stream and the rock, the stream always wins - not through strength but perseverance." (H. Jackson Brown)
-
Isaac Sasson wrote: Why I suck as a programmer I don't believe that to be true. 1. You discovered a deficiency in your knowledge and went to rectify it. 2. You sought the answer by looking up some books 3. The information was not found, so you are now seeking the information from other sources. There are many programmers who, once they leave education, become lazy and just ask people to solve their problems without attempting to find the answer for themselves. On numerous occasions I have had a problem and on my search through the documentation and books I have discovered a lot of other useful information on the way. Stuff I would never have found by just asking dumb questions in newsgroups and forums. There was one guy in the forums here on CodeProject that asked a lot of dumb questions. He claimed to hold MCSD, MCDBA among other certifications. If he really held them then the couse material for passing these exams would have given him the answer. My response was "I'm just a humble MCAD, but if you look in your course notes for these exams you've already taken you'll have the answer" I only ever ask in a forum/newsgroup if I am really stuck, and often someone there just needs to point in the direction of the correct book or online documentation and I have the answer. So, don't feel that you are a bad programmer. All programmers must continue to learn and educate themselves. I'm just happy that you try to solve the problem yourself first then come to ask for help because that shows you really are interested in becoming better at what you do. --Colin Mackay--
"In the confrontation between the stream and the rock, the stream always wins - not through strength but perseverance." (H. Jackson Brown)
Excellent answer ! Colin Angus Mackay wrote: There are many programmers who, once they leave education, become lazy As you state. When do you leave education? Keep it up Isaac, the bad programmers that I know are clueless, I have one sr guy (15+ years) who still can not tell what function the errors are in from the messages. "For as long as I can remember, I have had memories. Colin Mochrie."
-
This is a bit long-yet-well-worth confession of a young programmer gone mad, losing his conception of time and space, cought in another dimension of horror. I've been called back to base this afternoon, but I leave you this document - a captivating evidence from the other side of game programming.... :laugh: -------------------------------------------------------- Finally I have come to the conclusion that I suck as a programmer. More over, I have a solid theory of why that is. But to answer this baffling question we must travel way back to the early 90's, or better yet - the early 80's. Come, take a stroll with me through the time machine...... The Mystery of the Lost Volume It was 1984. I was born on a rainy day on late November. My parents have recently bought a brand new Commodor 64. For some unknown reason they've also purchased a set of 3 small books for teaching the wonders of programming in Basic. Little did they know of the effects this purchase would make of my life... 11 years later. Doing some cleaning around my old XT 8086 PC environment I come across these 3 old books. Promising to make one a fearless game and business programmer within weeks. Fascinated by the posibilities I started reading. It took me a while to port the old syntax down to a newer version of BasicA I had installed on my XT. 8 years later. There I am, working on yet another game, figment of my undying imagination. The code gets too complicated - too many if's and for's. I'm having trouble dealing with the math. The sprites aren't just as right. Something is wrong. Worst of all, I can't get the compiler to link everything together. The same problems made me terminate my former game projects, this time I'm not going to give up until I figure out what's wrong. I decide to take a break and organize my old books. Once more, I come across the devilish series of books that started it all-o'-so-long ago. As these being long lasting problems of my programming life, I dive back in time through these books in order to find out what went wrong 11 years ago. And there it was! The answer. 7 minutes later. It seems like each book tought different topics. The first being about the basics, syntax and simple commands. The second tought loops and conditions, and other corner-stones of programming languages. The third tought you how to approach the memory directly and all about data structures. But it didn't stop here! Seems like there were another 3 books my parents did
So I am not alone in the Universe!!! Just like you I started with Commodore C64 and BASIC - I learned the basics of it by myself. Then I was taught Pascal at secondary school - but again only the basics. After that came the university and C - only the basic stuff. I also learned some Java - and guess what! - I was using it without even understanding what object-oriented programming meant. Now I am learning Visual C++ and it's a really long and winding road. So this is my advice - if you start learning a new language, spend some money to buy a few good books and learn it thoroughly. And possibly find somebody who is good at the language you are going to learn and who can help you if you have a problem - searching for a solution in books or on the Internet can become really frustrating. "Gods die, when their believers are gone." --from Sandman by Neil Gaiman
-
Excellent answer ! Colin Angus Mackay wrote: There are many programmers who, once they leave education, become lazy As you state. When do you leave education? Keep it up Isaac, the bad programmers that I know are clueless, I have one sr guy (15+ years) who still can not tell what function the errors are in from the messages. "For as long as I can remember, I have had memories. Colin Mochrie."
Michael A. Barnhart wrote: As you state. When do you leave education? Never, in my opinion. --Colin Mackay--
"In the confrontation between the stream and the rock, the stream always wins - not through strength but perseverance." (H. Jackson Brown)
-
Even more: 1. If you are a programmer, you never have enough math. If you are a mathematician trying to program, all your math is useless. The subject of bugs, language exceptions and compiler errors is so critical for producing working programs that the subject of good math reary comes out. The implication on comp. graphics is crutial: the current state of theory is a few code libraries ahead. The theorists use quaternions as a basics and switch from one nilpotent number system to another. They say that somewhere in those jungles there are efficient and fast algorithms to solve everything. 2. BIG memory issue: Win16 GlobalAllock() sucks but sits inside COM-technology. Win32 VirtualAllock works but nobody seems to use it. Shared memory in Win32? Pure hack. Files more 2GB? How come? The ANSY set of routines implies they all fit in 32-bit byte size. The whole memory issue is a set of exceptions or bugs including famous VC5 or BorC auto dispose on return or static arrays bug in Intel libraries. 3. Missing volume on programming at large: Basics of DLL, static libs, processes, threads and exceptions, real time. The most important feature was never included: the SMALL program for Windows is LARGE. 4. Why my projects do not compile? I honesty try to compile GNU with VC but nothing happens. Thanks to Darwin Mac project, the guys recompiled GNU stuff so it may be done for Windows too. 5. What sucks the most: Still I do not see reasonable solution to the serial port problem. This thing is inside network protocol, custom solutions, slows down everything and NEVER works as you might expect from manuals. Serge Chychkan
DrSerge wrote: BIG memory issue: Win16 GlobalAllock() sucks but sits inside COM-technology. Win32 VirtualAllock works but nobody seems to use it. Shared memory in Win32? Pure hack. Files more 2GB? How come? The ANSY set of routines implies they all fit in 32-bit byte size. The whole memory issue is a set of exceptions or bugs including famous VC5 or BorC auto dispose on return or static arrays bug in Intel libraries. Win16's GlobalAlloc was how you allocated memory that could be used from outside your task. In Win32 it's a wrapper around LocalAlloc, which is itself a wrapper around HeapAlloc on the process default heap. Heap allocations are for small (smaller than a page) memory blocks. COM on Win32 uses a local heap in each process, allocating and freeing during marshalling as appropriate. A common factor in heap implementations is that you must free a memory block using the same API that you used to allocate it. Mixing APIs normally leads to at best failing to free the block, at worst, crashing the process. VirtualAlloc is for allocating memory a page at a time, with less overhead than the heap, but you must do your own management. Shared memory in Windows is implemented as memory-mapped files, which you can create with CreateFileMapping then map with MapViewOfFile[Ex]. I don't see this as a hack. Maybe you're only familiar with
#pragma init_seg
and marking that segment as shared? The Win32 API is perfectly capable of handling files larger than 2GB: see SetFilePointer[Ex], GetFileSizeEx, and the OVERLAPPED structure. You can't read or write more than 4GB to or from a file in one go, but I think it's pretty rare that you'd need to. You could always use a memory-mapped file (on a 64-bit system!) The ANSI C standard I/O routines simply assume thatlong
will be long enough on your platform, but for backwards compatibility reasons, it's not. 4. Why my projects do not compile? I honesty try to compile GNU with VC but nothing happens. Thanks to Darwin Mac project, the guys recompiled GNU stuff so it may be done for Windows too. Because GNU people don't care about Visual C++, they only care about gcc. Few GNU projects compile using Sun CC, Metrowerks CodeWarrior, Intel C/C++, ... There are two solutions: port the software yourself, or download Cygwin. 5. What sucks the most: Still I do not see reasonable solution to the serial port problem. This thing is inside network protocol, custom solutions, slows down everything and NEVER work -
Isaac Sasson wrote: Why I suck as a programmer I don't believe that to be true. 1. You discovered a deficiency in your knowledge and went to rectify it. 2. You sought the answer by looking up some books 3. The information was not found, so you are now seeking the information from other sources. There are many programmers who, once they leave education, become lazy and just ask people to solve their problems without attempting to find the answer for themselves. On numerous occasions I have had a problem and on my search through the documentation and books I have discovered a lot of other useful information on the way. Stuff I would never have found by just asking dumb questions in newsgroups and forums. There was one guy in the forums here on CodeProject that asked a lot of dumb questions. He claimed to hold MCSD, MCDBA among other certifications. If he really held them then the couse material for passing these exams would have given him the answer. My response was "I'm just a humble MCAD, but if you look in your course notes for these exams you've already taken you'll have the answer" I only ever ask in a forum/newsgroup if I am really stuck, and often someone there just needs to point in the direction of the correct book or online documentation and I have the answer. So, don't feel that you are a bad programmer. All programmers must continue to learn and educate themselves. I'm just happy that you try to solve the problem yourself first then come to ask for help because that shows you really are interested in becoming better at what you do. --Colin Mackay--
"In the confrontation between the stream and the rock, the stream always wins - not through strength but perseverance." (H. Jackson Brown)
Colin Angus Mackay wrote: I would never have found by just asking dumb questions in newsgroups and forums Someone once told me, there is no such thing as a stupid question. Just stupid people who ask questions :P Matt Newman If you chose to continue this discussion, I am fully prepared to make you my bitch. I invite you to ask around, and you'll find out that I'm quite capable of doing so - John Simmons on Trolls
-
Hehehe. That reminds me of the ZX81 (Basic) manual (which I still have on my shelf at home). It went through the basics (so to speak), and asked you to write a simple program in BASIC. Underneath it said (or words to the effect): "No cheating and using assembly language" What was funny was that this book didn't teach you assembly at all - it was the only book that shipped with the '81 hardware (AFAIK), and while it had an assembly reference of sorts in the back pages somewhere, I don't think it told you anything about the op-codes other than the hex value, character set representation, and the assembler mnemonic. IIRC, you could actually write inline assembly in ZX81 BASIC - there was some command, and then you chucked one of the '81s characters at the end to indicate which opcode you wanted :-D I'm going to have to dig this out when I get home now :rolleyes: -- Ian Darling "The moral of the story is that with a contrived example, you can prove anything." - Joel Spolsky
I remember that ole zx81...:) I had the opcodes clipped out of some magazine and taped by my bed. I -loved- that thing (except when I'd bump the 32K expansion pack:mad: I learned Z80 pretty well on that thing. Then i bought a C64... DEGRADED to 6502 class assembly :( YUK! But at least the graphics hardware was MUCHO cooler and it had a SOUND chip! I wrote my first precursor to a sequencer in 6510 asm for the C64. And the first version of my text editor - ned. Then I found out about midi and my whole world changed...:rose: Ya know, I wish there were HALF the magazines available for programming now that there were back in the 80s...:( TONS of books for doing asm programming, graphics, sound with CRAPPY simple UIs so you could concentrate on FUNCTIONALITY, not stupid glitz. The younger generation is forced to use high level crap like java and VB... They make real cool lookin apps that do NOTHIN. And it's soooo complicate to scramble over the UI crap, that it's tough to get to ANYthing useful... It's taken me years to learn Win32. It would have taken me even longer to learn MFC. And it's all so ugly and complicated compared to those simple, beautiful machines of old... I wish I'd kept my c64 for my son. If I was a professor at a college, the first thing I'd give to aspiring programmers would be a c64 reference manual... And a c64 machine. Remember the instantaneous reboot? Sighhhhhh...:|