Thursday, October 22, 2015

Moving to windows 10 from OS X? Ongoing experiment

I wrote earlier about the possibilities of using Windows instead of doing OS X. Well life got in the way of doing quick results, busy at work, busy with kids and family, but a few weeks later, here I am and I am bearing some results.

My premise of the experiment was to see if I could start to use Windows machine as my main machine instead of using a Mac. I work as a web developer, deep with Linux servers and most of the latest cool kids toys, Go, NodeJS, Python, NoSQL with Redis and MongoDB.

Well besides my day to day work, I have a side project that is starting to become huge, I wrote from scratch a travel management system for, go have a look.

This system uses Python tornado web server, nginx, redis, mongo and a number of libraries. It is running on a Linux server. My main goal IS NOT TO get the site it self running on Windows in production, I will never do that (I know, never say never). My goal is to see if I can develop, debug and run the service on windows without using a virtual machine.

Well, today I am here to say, YES, yes you can do that. Of course you can't do this out of the box, but you can't do any windows development out of the box, it does not come with any such tools, you have to fetch them all by your self. This isn't a good thing.

So I fetched and installed Go, Python, Mongodb and Redis. I found easy way to get mongodb and redis to run as windows services, so I don't have to manually start them, but that would have been an option if needed. Once I had python installed, I installed pip, the python package manager and virtual env with setup tools, both python packages.

Well, the cmd.exe is quite bad, especially after being a unix geek for so long, copy paste among other things. I installed Cygwin and apt-cyg tool. Through Cygwin I installed Gnu C++, Git, automake, make and other developer tools and libraries, they even had libxml and libyaml. Cygwin has ssh, so setting up ssh was easy and I had Git up and running. Pretty much everything that is in the build-essentials on Ubuntu.

Little by little I had everything running, my website eventually started from inside Cygwin, and from Microsoft edge, http://localhost:8000 started. I had everything. It was easy to get my dummy data into mongo, edit my hosts file and I was running. This took me a few hours, all in all.

But an experiment is worth nothing if you can't reproduce it, right ?

In walks Thinkpad T430s. Clean installed Windows 10, patches. And then I re-do everything. Install Cygwin and check out my code, it works. I had done it now, under 1 hour.

Now, in theory, I can go to any electronic shop and buy some cheap HP machine and have it up and running for 1/4th the cost, at least of a high end Mac, and 1/2 of the price of a decent mac.

Things are not as good as they are on the Mac. Not as smooth. But I manage and learn new tricks. I can't put my finger on it fully and of course Windows machine will not work the same as a Mac, and I am not trying to. I am not remapping keys or changing layout. I would say things are close, 80% perhaps. Some things like moving and scaling windows and apps from keyboard are extremely cool and only possible on a Mac with 3rd party support.

Now the question is, is 80% good enough ? Will I get used to using windows and learn the quirks and ins and outs of it ? Yes I am sure I will.

Just today, I made some changes in the code, a pretty large change, tested, debugged and put into production, all from my windows machine. No matter if it is my game machine or if it is my Thinkpad.

This is pretty cool, yes it is.

Why am I doing this ?

I really don't have an answer. There are a few things that bother me with the Apple system. Their locked down computers, not the operating system, but the machines themselves.. I am fine with how locked down the iPad is, although it is infuriating to put a movie on it just before going on a road trip with the kids. I have no objections to the new MacBook with its 1 port. But I have an issue with changing a PRO machine into something that is locked down. I don't want to buy a machine for $2500 that I can't swap out the hard disk or extend the memory. I don't want to buy a new machine to get a 1TB ssd disk. And then there is the app fanboyism. That someone spends a year doing the design of a note taking app and twitter clients, just the look and comparing all apps to it. It doesn't take much to write a twitter client, it is actually easy, so how can you spend a year doing the client ?

And the client is so slow, speed and usefulness is not valued, just looks and animations. I think that is just so wrong. Looking at the Mac App store, you see plenty of 0 (zero) star reviews that state though the app is great, it just looks bad. That's just stupid. Of course I am not advocating that an app should have pink background and cyan color letters, it should look good, but it should be speedy. We have computers that are million times faster than the faster machines in 2000 and they made Jurassic park and Terminator 2 back then on those machines. Things should be fast and not crash because a bitmap background is using megabytes of memory. Everyone that disagrees with it gets flogged. There are sites on the network where "ugly" apps are put up and shamed, they get thousands of users and twitter posts. That is just bullying, most of these apps are made by first time programmers and teenagers.

There is no one there saying, this is how you should do this, there is no one there to assist. No, no one has shamed me, yet. I think Apple is going in the wrong direction with the OS X and Mac Pro machines, (Macpro and MacBook Pro). Let the pro people tinker with their machines. I can put 3 hard disks inside a normal Thinkpad. When you need to do it, you know why. When you buy a machine for your wife with 8 MB memory and find out that you really wanted 16GB, you can't do it yourself you have to sell the machine and buy a new one, on a thinkpad you can.
My Game machine has 8 disks in it, yes I use them all, because I can. I can't have a Mac pro machine that I can do this with.