A Programmer’s Journey Beyond Microsoft
For many years, I’ve relied heavily on Microsoft products to support my professional and personal coding projects. It all started when I got my first job helping a small business owner manage the company’s computers, network, software, and more. Although I didn’t have an official title, looking back, I’d say my role aligned with that of a Systems/Network Administrator. This was my first job in technology; before this, I had been working in manufacturing and clerical roles. I had some of the required knowledge, but the reality was that I had to learn most of it on the job—and it worked out well!
One of the first things I did after starting was to automate some of the office’s routine tasks. I also saw an opportunity to create two apps: a Windows app to help us manage customers internally, and a web app to allow our customers to access their documents securely via a browser. The business offered document scanning services, digitizing paper documents for other businesses. Our main service was converting all of their paper documents into digital formats, mostly TIFF images and PDFs. Once the documents were digitized, we would place them on DVDs and send them to the customer. The DVD included a simple index to help customers find specific documents. We also offered to keep copies of these documents on our servers for secure, long-term backup.
Keep in mind this was around 2001. Although the web was popular, not all businesses—especially smaller ones—had adopted it yet. After a few months on the job, I came up with the idea of creating a secure web app where customers could log in and view their images online. This web app offered far more advanced image organization and search capabilities than the simple index file we provided on the DVD. It also allowed multiple users to access the images simultaneously, set access levels, and add metadata to the images. The idea resonated with the business owner, and the next step was getting the tools I needed to make it happen.
A few days later, a package arrived at the office addressed to me. It was a box about the size of a cereal box, a little shorter but thicker, it contained a copy of Microsoft’s Visual Studio 6. That’s right. Back then, software came in DVDs and boxes. I don’t remember the exact number of DVDs, but there were a few. I installed the software on my Windows desktop, running a fresh copy of Windows 2000. Over the next several weeks, I spent a lot of time experimenting with the software, reading books about it, and creating simple Windows apps to get familiar with it.
I first developed a Windows app to replace a Microsoft Access database. This new app still used MS Access for data storage, but the user interface was more intuitive. I called it “iDoc.” (Don’t judge—I know putting an “i” before a name was trendy back then!) The application stored all of our customers’ information, including instructions on how to handle their document scans. The business owner loved it, so we decided to move forward with the web app I had pitched earlier.
After many months of work, I had a basic app that allowed us to log in via a web browser and view a list of links to image files that had been scanned. I included a simple search function, though it wasn’t very advanced. The images were stored on a server in a private rack we leased at a nearby data center. The web app was also hosted on one of those servers, and I used FTP to update it. After testing the updates on a separate instance, I’d replace the main files on the server with the new ones. It was a simple, raw process, but it worked for us. The index and other metadata associated with the images were stored in a database on MS SQL Server, for which we had a license.
Eventually, we hired a software consultant with much more experience than I had. He helped us take the app to the next level, and I learned a lot from him, which improved my programming and server management skills.
By this point, we were a Microsoft shop. All our computers and servers ran Windows and MS Office, and most of our tools were from Microsoft. For our imaging needs, such as creating, compressing, and transforming images, we used LEADTOOLS, while everything else was Microsoft-based.
More than twenty years have passed. While I still frequently use Microsoft tools, I now rely on many other companies and their software, as well as a wide range of open-source tools, to support my programming needs. Visual Studio and Windows have remained constants throughout my career. However, until recently, I felt unable to code efficiently without them.
I’ve been using a MacBook as my personal computer for a while now and enjoy its integration with my phone and iCloud services. It’s convenient to save anything in one place and access it across all my Apple devices. While I still use Windows and Visual Studio nearly every day, I no longer feel inefficient when I code on my MacBook.
The main barrier to switching was my long-standing reliance on MS SQL and SQL Server Management Studio (SSMS). Since these tools aren’t natively compatible with macOS, I often felt something was missing when working on a web app that needed a database. I had used other databases like SQLite, PostgreSQL, and MySQL, but my experience with Visual Studio and MS SQL made me dependent on these systems. On my MacBook, I use VS Code and MySQL for some projects, but it wasn’t until I discovered JetBrains Rider and DataGrip that I felt I could code on a Mac as comfortably as on Windows. Rider is a complete IDE, and DataGrip lets me interact with MS SQL and other databases, working just as well as SQL Server Management Studio.
Currently, I’m developing a web app that lets me search for book categories and terms, displaying the book’s image, metadata, reviews, and a summary. I’m using Rider as my IDE and PostgreSQL as the database to store the book data. The programming language I am using is C#, and it all works well on my MacBook. The book’s metadata comes from Google’s Book API, and then use OpenAI to summarize the books. It’s a basic setup, but it works well—and the best part is that I can continue enjoying my programming projects with options beyond Microsoft products.
There are many other tools and services available as alternatives to Microsoft’s, but this is my perspective as someone who has been a .NET programmer for decades and still finds C# one of the best programming languages out there. I can achieve the same results reliably and effortlessly without relying solely on MS products or Windows. This is liberating.
Vivant optiones!