I learned how to use a computer on DOS and Windows. My first programming projects were written in QBASIC and my first Web applications were written in VB using ASP on Windows 2000. The first job where I made decent money was developing a SQL Server-based application. I bought my first car, an engagement ring, and a honeymoon with money from making software on Windows. Needless to say, I found a lot of intellectual and financial fulfillment from Windows over the years.
That first real job also allowed me flexibility in what technology I could employ, and I helped implement a features using Redis on top of Ubuntu. This was a fun time, because my company basically paid me to study a new technology and to gain experience using it. On my own, I began to use Linux and to embrace open-source ideas, one of which is that the consumer is also the producer. I changed my mindset about what it means to use software: for open-source projects, it often means digging in to debug code or to write supplementary scripts.
Linux also carries on the philosophy of making programs that good at one thing, and play nice with others to construct more elaborate systems. This is a basic engineering principle that is applied not only to the program as a whole, but also to functions or objects when you organize your code, or tables when you create your database schema. I really like this idea, and it makes complex tasks quite simple when organized into smaller, more comprehensible chunks.
I began to be dissatisfied with Microsoft and their products when I learned that they were hiking the cost of their database up by quite a bit., and they continued to push their hosted service offering. At the same time, I really wanted to start working on open-source software.
So recently, I quit that job, and started another working on PHP/MySQL running on Linux. This transition has not been easy, even though I had a fairly solid understanding of the basics, and I had used the LAMP stack quite frequently. I felt like my wings had been clipped: I had to relearn quite a bit when I transitioned to using Linux on my workstation and on my servers.
Then there’s MySQL. I have found that manage databases on Linux can be much more of a challenge because it is much, much easier to do something tremendously stupid, and each distro has its own way of doing things (such as starting and stopping a service or where MySQL is installed). MySQL in particular is very much an open-source project that has many quirks I would not expect for such a widely used product.
Windows has many features I would like ported to Linux, and the universality of a Windows installation is useful more often then not. SQL Server has a bunch of features that I appreciate, but I know that both Postgres and Oracle are than competitive, and those are available on Linux and Postgres is open-source. I still miss some aspects.
I am happy I’ve made the transition, even though it was (and is) hard. Windows is an entirely different ecosystem, and it often feels stifling and centered towards marketing the latest OS upgrade or SQL Server refresh. Linux, on the other hand, is much more about doing things because they were useful or correct.
Regardless of platform, I just love working on software, helping people while making money. If Linux, Windows, or Solaris can help me with that, I’m happy.