I was curious how the games worked so I started hex editing them at random, seeing what would happen if I changed this and that, etc.
Long story short I learned to write programs in 68000 machine code (binary) and recognize patterns in ROMs (music, art, code). I still remember how to code simple things in machine code.
Imagine my joy when I discovered assemblers, and after that, compilers a while later :)
The biggest lesson in all this for me: all of that skill is just a function of time and practice stuff? surprisingly true. I didn't think I could ever do something like build a complier, but after going home and practicing everyday and reading constantly I got there.
The additional lesson is that this method can be applied to most anything. Want to pick up and instrument? Learn a foreign language? Learn math? do it! I meet so many people who say "oh I could never be good at X", you can. And if it takes 10,000 hours/10 years to be an expert, it probably only takes 1000 hours/1 year to become intermediate, which is good enough to have a lot fun with something.
Learning is the single most amazing thing a human can do, so don't stop
Sub poll, who's first program looked like this?
10 print "Mike Rocks"
20 goto 10
10 PRINT "GOVERNMENT ACCESS ONLY: THE FBI HAS BEEN CONTACTED"
20 FLASH
30 GOTO 10
I called her over with a worried face and said "I don't know what happened!" I could see her heart skip a beat as her eyes bugged out.We quickly started snickering and admitted it was just a joke. She laughed it off and was a good sport about it.
10 PRINT "I AM COOL! ";
20 GOTO 10
On a 40-character text display, amazing things happen... 10 FOR I = 1 to 100
20 PRINT "I WILL NOT SPEAK OUT OF TURN IN CLASS. I WILL FOLLOW CLASS RULES"
30 NEXT I
"That is fantastic that you can type all of that out on your typewrite Michael. Well done."
(The concept of Dot Matrix wasn't even well known initially and perhaps bad lenses).Star Raiders in an emu is still pretty incredible.
http://en.wikipedia.org/wiki/BBC_Master
It would have looked something like this: http://www.youtube.com/watch?v=Pj2NOTanzWI
Source: http://meta.stackoverflow.com/questions/33970/how-old-are-yo...
Around 1996, the family computer got Windows 95, and HotJava came out, and I got hold of the JDK (a very big download on a modem - I had to wait all night), and I learned Java and made a few applets. I also got a Visual Basic CD that came with a book about it. About a year later, I was able to set it up as a dual boot system, and installed Linux, giving me easier access to gcc, and I learned C. I also learned to audit code for security bugs and found a few in popular IRC daemons - after reporting them to the developers, I ended up becoming a regular contributor to the development of several ircds.
I got my first paid programming job on my 15th birthday (after applying to lots of places), for a lawyer who was running a software business on the side, developing native Windows apps.
I got a C64 for Christmas but then-surprisingly the reading-head of the bundled datassette player wasn't properly tuned and thus I couldn't load and play more than a limited few of all the games that came with the C64.
A translated version of the C64 user's guide / BASIC programming manual—I didn't know English then—came with the computer and I started reading it, typing little programs, tweaking them, and then eventually writing clones of my own, later variations.
By the time the datassette problem was identified, sent to be fixed, and returned to me I had found programming to be much more fun than the available games. I did play them and enjoyed many but I'm not much of a gamer even today, really.
(And yes, tuning the reading-head was dead easy DYI job as I learned shortly after.)
I don't know if you can really call it programming but I'd spend hours writing out huge I/O conversations with the computer that only worked if you knew how it was supposed to go in advance. I found it fascinating.
"Hello, I'm a computer, what's your name?" "Hello [name], how are you feeling today?" "I'm glad you're feeling [feeling]!" etc
And I had the companion radio shack cassette deck that you could use to store programs on. I always had to copy those programs out of the book because I didn't understand them at all.
I remember how excited I was when I was able to write data to a floppy from one of my programs. I felt like I could conquer the world.
All I had back then was the BASIC manual, but I was able to learn enough to be dangerous. My first real exposure to probability was the sample code in the manual for a Craps program. Great stuff for a kid to learn!
I was mentored by others in the group. I learned HTML and Web design. Also, I learned to program AOL add-ons using Visual Basic 6.0 and the good ole' Win32 API. I could have knocked my dad over with a feather when I told him I was learning to program. He was so excited. He is also a techy and a bit of a hacker.
I made a bunch of AOL add-ons like chat room macros, trivia games, and auto instant message responders. But, my fondest project was a chat room e-mail server. It would parse an AOL chat room for requests. Then, it would forward the appropriate message (with the software attached) via e-mail to the requester. I called in to AOL's customer support line and told them I ran a popular newsletter. I was able to whitelist my AOL account. This way, I would not be limited by their daily e-mail limit. They bought it.
After repeatedly punting and then TOSing a classmate, and having their account shutdown. AOL caught on to my nefarious ways. They terminated my families AOL account, and blacklisted our credit card. My mother, who used AOL to chat with grandma and browse the internet, was furious. My dad went along with my mom. But, later in life, told me how proud he was of me and how he told all of his friends at work. He used to joke, "Yea, AOL refuses to take my money after Robby got done with em."
The first time I specifically felt like I was programming was when friend when I was nine showed me an old QBasic book he had found. He showed me some little programs he had written and that night I spent all night on our old Windows 3.1 computer seeing what I could do with it. I just made little text adventure games and math equation solvers.
Then once I we got DSL around when I was 11 I started to hang on USENET and IRC (older technologies of the time, but they were cool to me) where some folks introduced me to Python.
My language path looked something like: Paper Assembler (hand assembled, hand executed), Basic. APL (on an IBM-5100 http://en.wikipedia.org/wiki/IBM_5100) National Semiconductor SC/MP Machine Code (hand assembled, and entered on hex keypad http://en.wikipedia.org/wiki/National_Semiconductor_SC/MP), C, C++ (dark days indeed), Scheme (ahh... that's better!), Javascript (hey... not unlike Scheme), Powerpoint (became an "executive"), Perl, Python, Groovy (surprisingly awesome, been meaning to write a "Groovy is an acceptable Lisp" post)
Never done anything meaningful in Java (all the ugly of C++!), Ruby (just haven't had a reason) nor Haskell (but think it's kind of pretty)
Scheme is still my favorite by far since I find it the most beautiful and powerful.
It's for the hours spent mostly copying BASIC programs from magazines on an Amstrad CPC464. (with very little success rate: these magazine program were not quite working) Then, there's a gap of a few years, before college where I realized that maybe I should go with Computer Science, rather than Mechanical Engineering.
Now, I'm not quite a developer per se (in that I've never had a purely development job and that I'm mostly hacking things together rather than producing production code) but still spend most of my free time thinking about projects and building early proof-of-concepts and prototypes.
At this point, I'm very glad I know some programming but am still wondering if I should go full-on with it and work on it to the point where I can confidently look for a development job...
I wrote programs that generated colorful pictures in Logo, and the barest beginnings of a text adventure game (to which my only exposure was Logo Adventure) that revolved around my stuffed animals in BASIC.
By the time I was 8 or 9, I really wanted to write something like Zork or other text adventures, but I had not the faintest idea how to make a parser for that, and nobody was really helping me, unfortunately.
Then in my early teens, I worked a bit with ARexx, AmigaVision and AmigaShell and I really, really wish we had bought Borland C because I really wanted it back then...
Then, I didn't really do anything programming-wise for 15 years until I picked up PHP a few years ago. Oops! I did a lot of interesting things in between, but I wish I'd picked up serious programming skills a lot earlier in life.
I can't believe I've been programming for 30 years! I feel old...
Unfortunately I never had a diskette drive nor some assembler books :(
Edit: I was 8.
The discussion here brings back a lot of fond memories. The Apple II was a great computer and easy for a teenager to understand. Source was available for almost everything (and what wasn't officially available had been disassembled and documented with high quality.)
Here's something other HN members might enjoy: Got access to an old Apple with Applesoft BASIC? Try this:
CALL -151
300: AD 30 C0 E6 B8 D0 02 E6 B9 4C B7 00
B1: 4C 00 03
3D0G
Now, run any BASIC program and listen. You'll quickly discover you can tell what the machine is doing. Floating point? Rapid ticks. Tight loop near the beginning of the program? High-pitched whine. Great for debugging or simulating a background thread.My mother was taking some college courses involving COBOL and Fortran. I jumped on COBOL and helped her with her homework. I later dabbled with BASIC, Pascal, and C like others my age.
This is what sparked me on computers. Before that, I worked on building, listening, and transmitting on radios with my grandfather.
I got started on "UNIX" programming on my Amiga 500 running MINIX (I had at least 3 floppy drives (no hard disk at all), but still did a ton of floppy swapping).
Props to the employer for (sort of silently) permitting this.
Separately: Email, shemail. Via TALK, I was IM-ing before most people knew what email was. ;-)
Also, turning in school papers processed through runoff greatly impressed some teachers -- deservedly or not.
Finally: I still miss the DEC manuals and the like. Back when documentation was DOCUMENTATION.
But I didn't get into programming seriously until I was 22 (VBA scripting for Excel at work). Sometimes I wonder how hard it will be to catch up, although so long as I stay ahead of the average CS graduate I should be OK. I think.
My only regret is that I never had proper books for the version of basic I was using (TI, Apple, etc.). This was b/c it was never an intention of my parents that I learn to program. I just found it more fun than video games, even though I could find no explanation anywhere for what some of the keywords did :)
Essentially: I was incredibly fortunate in a number of dimensions. (I still see themes in the way I work now that originated way back when... all these years later.)
I was quite a late starter, around 15/16 year at school I did a project for computing class to clone "cdbaby or cdnow.com" in cold fusion and javascript, I wasnt even particularly certain about going to uni to do computer science.
Couldnt feel more lucky that I did
I started programming some 3 or 4 years ago (at the young age of 14) in C. I wrote various simple tools that did cool things. For example, in mid 2008, I wrote a short program that interfaced with a wiimote (using one of the various libraries) to control xmms2. xmms2 was controlled by means of system(3).
So even if someone starts programming at a later age, experience learned with novel apps at a younger age can be helpful.
As an aside, it is amazing how we are able to adapt to new technology. I find it quite normal these days to program in Java and Lisp using a 1000x the memory of my first machine to print "hello world".
PEEKed and POKEd my way out of there pretty fast..
"In a few years from now computers will be able to program themselves and will directly respond to the end users requirements"
ROFLMAO
Bonus: They taught us COBOL...
It was the early 80's and I was about 7/8 yrs old, the guy in my local electronics shop used to allow my brother and I to photocopy programs from various magazines, of course they would be lost when we turned off the atari, also sometimes we messed up the photocoying, so we were forced to try figure it out our selves. What fun!
:-)
Anyone know are the kids starting with these days?
I wrote (in assembler) a terminal-based football simulation based on what I remembered of a program I had played on an ASR-33 terminal during a tour of Bell Labs with a friend's father a year or two before. I was 15 or so.