I'm not sure if there are many Wiki contributors like me who program fairly seriously but as a sideline and without any formal training.
I work for a specialist engineering firm in the UK, mostly responsible for producing documentation and running a tiny intranet. However I've ended up programming some moderately serious tools for them:
My programming story
In 1981 I answered the ad for the SinclairZxEightyOne. My first program allowed me to enter the date as 20/6/81, confirming my doubts about the insistence of my employer's IBM terminals on 81/6/20 "because computers can't understand dates otherwise".
After a few months I tired of working with only 1K of RAM, ordered a 2K memory upgrade, opened the ZX81 case and installed it. Wow - at last a full screen of characters! Then I got tired of how slow the Basic ran and tried a bit of machine-language (first write your Basic routine to poke hex values into memory). Wow again - this is so fast!
The next year I bought a Spectrum with 16K memory and colour display, but machine-programming now had too many 2-byte commands, so I rather lost interest and returned to my non-programming interests as below.
In the late 1980s I worked (on the marketing side) for a CambridgeUK start-up that managed to program sizeable derivatives systems in QuickBasic; after leaving I tried it myself and of course found it familiar from SinclairBasic?.
In 1994 I went on a CeeLanguage course and nearly loved it: compact syntax, pointers, direct access to hardware - but also malloc. I wrote the first of my generalised user-interface frameworks and used it for a little German vocabulary tester for classes at the school where I was now teaching. It can't have been bad, because they loved to use it and couldn't break it. The modules communicated by a sort of home-brew message passing; possibly the verbal part of me (see below) wanted to be able to tell things to do things.
So first I used CeePlusPlus to tell words to arrange themselves in a wordsearch grid, then in 1999 looked at doing the same in the JavaLanguage. Aha - compact syntax, no pointers but intelligent arrays, and no malloc!
I tried to write a music processor to test some theories I'd developed (as below), but that was too hard. Then I remembered a wireframe program that I programmed on the Spectrum, re-implemented that in a slightly more elaborate way. When I came to build it a UI there was a puzzle: Java allows you to use abstractions very easily, but neither official nor unofficial APIs offer a decent set of abstractions for a UI. By which I mean they would let you define a flag in a domain object and let you view and set it from multiple widgets, with all the communication and view consistency stuff hidden under the hood.
So, being more valorous than discreet, I'm writing one. For the theory behind it (developed like all the best theories retroactively to fit the facts) see SuperficialMts.
My non-programming story (relevant bits)
By education and raw talent I'm primarily a words man, with a degree in Russian (and ex-wife to match), solid French, and self-taught in German far enough to teach the British A-level.
Though a child of the 60s I largely missed out on the music of the time through being hooked instead on Beethoven, followed by Mozart and ultimately (inevitably) Bach. I've spent (wasted?) much of my adult like trying to work out exactly how this stuff worked and why no one can write it any more.
Perhaps blood will tell - my father was a doctor-cum-engineer (several standard medical devices bear his name) who preferred clockwork or batteries to mains power. When I explained my growing interest in software to him shortly before he died, for the first time in thirty years I felt he understood what I was doing.
Welcome to wiki. I suppose you're not the David Wright I've shaken hands with -- mathematician, fractals, OSU ? I'm still LearningJava myself. -- DavidCary
Definitely not I'm afraid, maths is my weakest subject (apart from sport and gardening).