I've been programming in one form or another for as long as I can remember. Since my family got its first computer when I was five, I couldn't have programmed much before that. However, I knew DOS well enough to help teachers with their computers in first and second grade, so I was probably already doing some programming by then. It wasn't sophisticated by any means, just simple code like:
10 print "Hoopla!"
20 goto 10
I'd type in code from books geared towards kids, like Superworld. I remember reading various computer magazines my school subscribed to (Byte comes to mind). In school, we had a class where we could play with Logo.
An older kid on my bus had a TI-81, and I was always amazed by it. He would write games for it, and I thought that was neat. When I entered 6th grade and had my first math class that required a calculator I convinced my parents that the TI-81 was the appropriate calculator (requirement was a scientific calculator). I learned how to program that pretty quickly; it was similar to basic, which I had some experience with. The TI-81 didn't have a graph link, so I'd print out programs from the internet and type them in. I remember printing out a Star Trek game that took me over a week to type in.
When I got to high school, I needed a more powerful graphing calculator. I got the TI-85, which was a major improvement from the TI-81. Not only was the TI-Basic on it more sophisticated, but I also had a link port to download programs from the internet and copy them straight to my calculator without typing anything. This gave me many more options. I could also trade games with other students at school. One of the early ones I remember was a breakout game. It wasn't long before I learned how to add new levels and started hacking it to do different things.
Then, I discovered ZShell. This hack for the TI-85 would allow people to run programs written in assembly. So I jumped on that and started teaching myself assembly for the Z80 processor. By this time, I had my own laptop, so when I had a gap in the computer science classes offered at school, I convinced the computer science teacher to approve an independent study class for me to learn assembly. The teacher wasn't any help, but I still figured it out pretty quickly.
The following year (Senior year), I took AP Computer Science, which taught C++. I picked it up very quickly, and the teacher was smart enough to let me go at my own pace. I finished the coursework for the three-term class (24 weeks) in about 8 weeks. The remainder of the time, I started learning more things, like graphics programming. By the end of the class, I had written a Mandelbrot set generator. I was pretty happy with myself.
After graduation, I attended UW Whitewater for a bit, studying Java. Then, I transferred to Herzing College, where I learned VB .Net and covered Java and C++ again.
At Herzing, I started teaching myself PHP so I could improve my website. My first programming job at Applied Tech started out as an ASP (VB 6) job but very quickly transformed into a PHP job. There, I developed my skills in PHP. After about a year, I started the Madison PHP Meetup group, where I taught various PHP topics to a group of developers every month. I ran this group for about 6 years until I moved to California. Upon returning to Wisconsin, I restarted it for a bit before handing it off to the current organizer, Beth Tucker Long.
In 2015, after noticing that the RSS Cloud server Dave Winer ran (using Frontier) was down, Dave suggested I rewrite it in JavaScript. This was my first Node.js app. In 2018, I started doing some Node.js development professionally, and my current job, which I began in 2019, is almost entirely Node.js.
My current interests are wikis and AI development. I plan to start experimenting with writing code against APIs like ChatGPT and creating custom agents to assist in workflows. I have yet to get into Python development, but continuing down this path will probably be a part of my future.