Sunday, February 23, 2020

Software - What the blog was originally tracking

Originally, when I re-found Traveller after a couple of decades of wandering the gaming wilderness, I decided to write some software for it. Way back in the day, I did a lot of that during college: back then, hexadecimal programming was a thing with assembly and some of the early robotics that I was doing. Traveller itself uses a lot of pseudo-hexadecimal coding, so it was a natural fit.

Flash forward a few decades, a few OS and programming languages, and a family (much to my constant surprise!) and I got back into it. I wrote a Winforms trade program that basically worked, if it was a bit clunky and horrible architecture as I just kept throwing more stuff into it. It probably still runs - that was 3 computers ago but I've the source code and pretty sure it would compile. A few people I think actually used it.  Then I managed to get back into actually playing and the software updates became game updates, except when I was between jobs and would decide to try my hand again, updating to newer frameworks. Tried the MVVC route but still cannot wrap my head around it - too much implied routing and seems to make some things just so much harder. Tried a few other things but finally settled on .NET Core, which, other than the UI, will run on any machine. I am fairly certain down the road they will port XAML to other OS as it is a pretty sweet markup language. And after a few weeks, perhaps months, finally re-opened the IDE and fixed the issue with the buttons not having the images show up: had to mark the images as content.

And then I get an email from a fellow COTI working on the Rails side of things and invites me to help. I put it off for a long time, then recently decided I needed to actually learn Ruby and Rails (its MVC framework) as it is what is used at work for half the software we use, the other half being Filemaker which is slowly getting converted to Ruby to make a single, monolithic app (and there have been multiple discussions on that!). Then I get another friendly ask to see if I was interested at the same time, so I figured it is the software gods reminding me that a developer that is no longer learning is no longer a developer (or as a friend of mine from almost 30 years ago told me: a rut is just a grave without ends)

So, I've installed Ruby & Rails on my computer, installed Ubuntu thinking I could mimic the workflow from work at home, and cloned work's repo to the Ubuntu subsystem. And now I'll be cloning the Traveller repo to see if I can start to learn and help out with what is an open-source program I think.

So look at me, getting all modern :)

I just need to figure out how to actually USE Ruby & Rails, either on the Windows side or purely in the Linux / Ubuntu side. And in testing, the Mac-specific things do not work on Ubuntu, no surprise there. So not entirely sure how I'll get a working environment up to speed. Yet. I can learn, and staying employed is a pretty good motivator!

Now for those not familiar with a lot of the technical side of things, here is a brief primer from my perspective.

Ruby is a scripted language, written to delight the developer. It is something like 20+ years old now but gained greater attention when the Rails framework was added, making it an ideal MVC (Model-View-Controller) system for web development. The framework helps in adding persistence (saving the data to the database) and make things a lot easier for the developer as it uses "convention over configuration". What this means is that as long as you follow in the Rails conventions, things just work. Do not cross the line, though. Ruby is available for most OS I think, and has a lot of really nice features. The last few versions they have been working on increasing speed and scaling. Scripted languages tend to be slower than compiled but poorly written software in any language is slow: there are things we can do to make Ruby & Rails scale. I believe Kickstarter is a Rails project for the most part (I think parts have been swapped out lately though).

Microsoft, seeing the popularity, basically copied the Rails MVC framework into its .NET MVC framework, .NET are compiled languages, and a bit more complicated in some ways. While personally I think it makes for faster development as things won't compile if wrong and refactoring is a lot easier, there is an entirely different learning curve as the .NET does not hold your hand as much. But it also gives you what I think is greater freedom, such as being faster and scaling better. And as of a couple of years ago, big chunks of .NET are now open source and, with .Core, cross-platform as well. MS saw the writing on the wall, and has been focusing more on the backend and less on what used to be their cash cow, Windows. Linux is no longer a cancer (pretty sure Balmer may regret saying that)

In the end, software is software. The same principles apply regardless of language or framework, just the details differ.

No comments: