My first computer was a hand built Sinclair MK14. I spent my hard saved allowance money while attending boarding school in England. The MK14 was a British single board "computer" based on the Scampi chip. It has a LED display and a HEX keypad. I spent hours on that thing, hooking up a TI sound synthesizer up to it. I spent a summer vacation building a rack like case for it, mounting the LED and a home made HEX keypad in the front. Now that I have a digital camera I really should take a picture of the thing.
I moved onto a pre-built Z80 single board. It still had only a segmented LED display and HEX keypad as the UI. I think fondly of the days when I could write in assembler and hand assemble from memory into machine code.
At college I went through one year of punch cards on VM/370, followed by CMS. The trick of the time was to embed control characters in messages sent to other terminals to fake "please log off" messages from the operator.
Programming was done mostly on Pascal. It was and still is a great language. Small and logical. I bought a BBC Micro with a very nice structured BASIC. That is my first encounter with real personal computing.
Started my first job as a programmer and my BBC Micro turned into mostly a terminal emulator as I started to connect to BBS's and CompuServe. That was the beginning of living with computer networks. Work is mostly done on Stratus minicomputers in PL/1. Stratus has a propriety operating system, VOS, which is very modern. It is naturally multiprocessing and multi-processoring. Inter-process messaging is an integral part of the system. So I learn to think in the multi-tasking, multi-processing, and true concurrency paradigms from day one.
When IBM PC's became more affordable, I started to do more work with DOS and later Windows using C. Microsoft Windows was truly a horrifying experience. It was bad then, and it is still bad now.
I still remember the day when I called up Zortech, which was just down the road from where I lived, walked into their office/warehouse and picked up a 1.07 version of their C++ compiler. I went to a talk by Stroustrop earlier. About 30 people showed up. I was impressed. Afterall, class-based, or object oriented program was nothing new. I did Simula programming back in College. I knew C++ was going to be useful in practical software development.
Around the same time I moved away from being a programmer on small projects onto bigger projects that requires some degree of project management. I have to start to worry not only about quality of software written by myself, but by the entire team, and interfacing to other products or teams that is outside of my control. I would call that programming in the real commercial world.
Fast forward a couple of years. Borland C++ compiler cames and went. Borland 3.x compiler was still the choice for DOS application development. Remember DOS? Microsoft Visual C++ started to look usable, although MFC was barely useful. There are now two camps of Windows programmer. The old-school C programmer that want to stick to raw SDK, and C++ programmers that can't wait until MFC gets better and better. I definitely is in the later camp.
I went out and bought the Atari Portfolio and the SDK from Atari. I actually carried the Portfolio (A "palmtop" before its time) around for about a year, keeping notes, addresses and appointments on it. I really disliked the keyboard, because of its construction, not its small size. The keys have very little travel and takes a lot of force to hit. I gave up on it a year later and sold it.
Soon I started working with Solaris as well as Windows. What impressed me most was how fast the Sparc driven machines were. I can now build my system in seconds or at most a few minutes.
At the same time I cannot believe how backwards were all these Shell "languages". Scripting at the OS level is a great idea, but what twisted minds can invent these scripting syntax? Then there is PERL. What a mistake.
Luckily I discovered Python. A scripting language that was designed. Syntax makes sense. Still not the easiest to learn because of the list and tuples paradigm, but at least it is a powerful scripting language that is not write-only, like perl.
Instead of playing with hardware, I spend most of my computing time with software. Java, then this Web thing happened, and I was designing thin-client web applications.
I started using Linux as an alternative a few years ago. Installed it on one of my old 486 PC. I was impressed by how well it install, and how well it runs on this little machine. Now I run all my content based web servers on Linux -- RedHat version, and Apache.
For transactional web applications, I have designed my own web application platform. I like my software simple and thin. Another specialty that my platforms have is they are multi-lingual. My patent application is still in the patent office's queue. I started looking into non-English web display when I was doing some volunteer work for Asian American Workshop in Boston. We built a kiosk for distributing community information in Chinese, English and Vietnamese. That carried over to my current work at AdvisorTech, in which we deploy thin-client applications around the world -- Japan, Korean, Germany, US.
Back to computing devices, the most advance consumer mobile device I think it still the Japan NTT DoCoMo phones, or i-mode. The current phones have large color displays, batteries life that lasts for days, and built in web browser supporting c-html, a kind of strip down html. So as almost a side thing I started to see how I can deliver content for this device.