Thursday, March 24, 2016

Moving To The Cloud


THE CLOUD


My Story

An adventure. That's the best way that I can describe this process. My development work, at least in this part of my life, has always been a side project, but I'd taken it somewhat seriously. I found myself, though, wandering off to do other things instead of concentrating on my true passion. Writing software. I hadn't really thought about solving the concentration problem because, who cares right? It's just a hobby, no need to get serious about it. I do have a degree in software engineering, but I'm not using it in my current position, so why bother?

The why bother? question is what really got me thinking though. That's not the self that I knew. That is someone totally different. I have never been the one to just settle. Be happy with what I know and move on. I have to keep learning, it's in fact always been one of my life goals. I don't want to stop learning. So, I started thinking of ways to solve the concentration problem.

Phase One

Phase one of solving the problem was a complete and utter failure, but that's okay. An attempt was made. I decided to remove distractions with pure and utter will power. Now, for someone with an addictive personality, I find, at least for myself, that just will power is not enough to force a change in my life. It has to be something drastic, unsettling, but, I tried anyway. Eventually I slipped back into wandering off to different things, gaming, media consumption, Internet wars, etc.. This was when I realized that I needed to do things a bit differently.

Phase Two

Phase two was when I started thinking of different ways to remove the temptation of distractions from my workflow if one could even call it that. I started looking into a laptop computer. Something if you'd asked me a couple years ago if I'd ever go back to, I would have called you crazy. I loved my desktop, and had built it with my own two hands to do exactly what I wanted it to do, but, alas, I needed to make a change. So, for a few months I researched into many different options. I eventually had made my mind up and decided to go back to a Mac. I started moving my workflow over to an OS X VM to see if I could quickly adapt to the OS again. I had no trouble and was quickly back into the groove. The problem was, the groove was still the distractions and unfocused groove that I was trying to avoid. I didn't end up purchasing a Mac, although, let me tell you, I was close. Very close. And I'm so happy that I didn't.

Phase Three

Enter Google Compute Engine(aka THE CLOUD). This is where I am now. I write this post in Markdown inside of VIM, and quite frankly I'm loving it. The distraction has gone away as I sit here, SSH'd into a GCE instance with very limited resources, but it's just enough to run all of my development tools. I did, however, have to make a change to my development style. A drastic one at that. Most of the tools I used on a daily basis already ran just fine on Linux as that is where I was doing my development before. What they didn't do, though, is run without a graphical user interface. They were (mostly) capable of doing so, but it was not something that I was used to. So, onto learning I did, and I still am. I have written a few Python scripts that wrap up some of the build tools that I was used to just clicking a button for, but that's okay. I'm learning, and that's been my whole goal.

Where to from here?

Well, Phase Three does address part of the concern about reducing distractions, but I want to take it a few steps further. I'm in the process of selling my beloved desktop computer that I built, and moving onto something a bit less powerful, but free of many of the distractions that I had before.

Google Pixel C - With Attached Keyboard
That will be a tablet with attached keyboard. Now, this is a huge jump from the three monitors I'm sitting in front of at the moment and multiple cores of x86 power backing them, but I think it's the right move for me. A move I should have made a long time ago in my life. A move that I hope will bring about more learning and fewer distractions. I'm looking into a couple of tablets at the moment, but I'm mainly focusing on the Pixel C by Google along with it's available keyboard accessory. My only worry is that when I want to take it mobile, the keyboard is lacking some keys that I would normally use on I'd say a semi-regular basis.

I don't know if that will be the tablet that I end up going with, but I do know, that if I want to keep learning and remove distractions from my workflow I have to change something. This desktop will not do. I hope to, a few months from now, come back and revisit this topic. As it's something I've become very passionate about. I do not think this is for every, or for every developers style. What I do believe, however, is that if you're having trouble with distractions, this would be a great direction to at least experiment with.

I have a few more posts in the works that have more detail about what tools I'm using, how I'm using them, and what I'm working on developing to help improve my workflow.

Inspirations

I thought I should mention what inspired me to make the move to a cloud based development approach, along with ideas on what to change my hardware out for. Links below.
There are more, but I seem to have lost the links to them. Irregardless, these posts might be a few years old, but things have only gotten better, not worse. Tablets have improved, cloud computing instances have gotten cheaper, it's just all around better. I will say that taking this route, you will most likely need to write a bit of custom toolery to get started, as not much exists for development based around the CLI anymore, at least not for the typical Joe Computer Programmer.

More to come, stay tuned!