site logo

Random rantings and such

Programming & Opensource, then and now, as seen by me

by Dan August 8 2018 9:20AM 3 years, 173 days ago

I yammer on about this in chats or in person quite frequently, so it's about time to get it out on "paper". This is my view of things as a hobbyist level programmer.

The best I can remember, this is how I got into "programming".

  • BASIC:
    • or some clone form of. On the PC and on some whacky tape deck computer you hooked up to the TV, for the sole purpose of programming and running programs off the regular style cassette tapes used for audio. Wish I knew what happened to that thing. Was probably early teens like 13 or so.
  • Visual Basic:
    • 3.0, or 4.0, sounds about right. These were Windows 95 days. I didn't do a whole lot of this, I wrote a notepad program. Was attempting to write a remote control type program, to control the PC over the internet. I don't remember what it was supposed to do exactly, just that once I discovered Linux this all became pointless.
  • mIRC scripting TCL scripting (Eggdrop & Xircon):
    • Did quite a bit of this, mind you this was always considered "scripting". This is what passes as "programming" now though.
  • C++:
    • I figured I'd mention this, because technically I went out and bought a C++ book and gave it a tinkering, before deciding to learn C instead.
  • C:
    • Practical C Programming Some.Edition sits on my shelf still. Had a real hard time opening the door into the world of C. Had an ephiphany about pointers one day and finally could understand what I was looking at, and it wasn't so bad from there.
  • PHP:
    • This was just natural, as all the functions from the standard C library were right there for me. And the dynamic web was exploding onto the scene, so I've done and still do a lot of PHP.
  • Python:
    • Only dipped a toe into writing my own things in python.
  • Javascript:
    • Same story, as far as writing my own javascript, very minor stuff.
  • Misc:
    • Obvious odds and ends stuff, bash scripts, etc.
  • Java:
    • No, not really learned any useful Java. Still poking at it here and there when I mess with Android apps.

Somehow did not get into Perl. As a language I don't have any hate for it. But the way it got used, much like today, is what turned me off: the endless dependencies. It made everything annoying to install. Made it the slowest running option that was available to accomplish whatever task you needed it for. I did my best to avoid Perl programs.

And to now skip to the point of why I'm writing this post: All I see now is Perl. In a non-literal sense. What I hated about dealing with or using Perl programs, seems now, to be the One and Only way to do software now. Writing a (insert simple program here) calculator program, with a dependency tree that pulls in 300 other packages, is not frowned upon. It's even encouraged. Don't reinvent the wheel they say. Whilst simultaneously writing a new calculator app, failing to see the irony.

There is some theory that letting someone else, focus their time into whatever component you need, will net you the best component and save you the most time. Not sure theres any theory on whether your program will be efficient, I hope not because thats not usually how it plays out. But efficiency is also taught as an afterthought. An afterthought that often never comes to light. But back to the first theory. I'd like to focus on that one a little bit.

I remember when poking around attempting a go at C++, and learning C, a long with plenty of other people, the Boost C++ library was all the rage. All the tutorials I was finding used it, I think the book I was reading relied on it (not sure). It turned me off messing with C++. I was running on a copy of RedHat 5.2 that I purchased at the store (wow, I forget what it was before it was GameStop ???). That machine outlived it self by years, because I installed everything by hand from source. At some point I even had to update libc itself from source to keep going with it. So I was very aware of every dependency required. I'm partially guessing the boost libraries were a huge thing to download (on my dialup connection) and store (on my tiny hard drives) and compile on my slow computers. Back then 1Ghz was blazing fast, but this is all probably before I moved onto those greener fields, I probably had a Pentium 2, 233mhz or slower even. So every little thing added up to make a big negative impact on wanting to use said software at all.

All those annoyances aside however, there was still the problem that, here I am trying to learn the art of programming, and everyone is trying to skip most of that and show me the way to all the premade functions for anything I could ever want to accomplish. I was, and am still, very big on learning how things work. I was the kind of kid who would fix a problem, and if I didnt understand WHY whatever I did fixed the problem, then I would break it again and fix it again to try and understand. That might sound crazy but I did that frequently. Now days I'm too old for that most of the time and am just happy that whatever it is, is working again. I'll point out also that, back then, Google was not the saviour it is now. It could not magically answer all your questions. Simply because the answers weren't even out there yet, or the questions for that matter. I dont remember any stackoverflow type websites, where today, you'd be hard pressed to come up with a question that hasn't been asked and answered before, in explicit detail. Getting into programming now is very accessible.

What boggles my mind however, is how things are done, or not done perhaps. Watching the github style workflow in a bureaucratic project, is absolute torture for me. People are coding in languages very easy to use and understand, they have all the answers at their fingertips, they have all the integration tools you could dream up, there often even being paid for this work... and yet, snails pace at best. Proceeding that wonderful new way, you had the WWW take over everything, which murdered the performance of everything (and still does to this day) but, it was fine they said, PCs keep getting faster. Its funny to me that your phone, where they need performance to keep your battery going all day, etc, is probably the only place people install programs anymore. Once upon a time folks, you ran programs on your computer. Actual programs, for all the various things you did. Not poorly made javascript in your browser to accomplish any and everything you do in a day now. Theres a number of advantages to this new way, but theres a number of downsides also. One being that, IMHO, this helped push opensource software off a cliff to its death. Stuff that you used to grab off to host on your own premises, got replaced by companys building walled gardens. And it was an easy choice, because of the very inefficient way everything was being programmed and utilized, you actually did need real power & bandwidth behind your service. And someone to babysit it for you 24/7 because its going to be updated six times a day, you dont want to deal with that. So insert Cloud buzzword here, and hop on board, because software sucks too bad to manage yourself now, and requires too much hardware.

And welcome to the new release cycle for software. How many times a day would you like to update this program? Does twelve sound OK? Why do I see major security vulnerabilities patched on an almost constant basis. Back to what I said before, we're working on this "dont reinvent the wheel" and "let the experts handle it" philosophy here, then why is all software continously riddled with bugs and vulnerabilities. If this way actually worked the way people think its going to, then this would not be the case. But here we are. In a system that you really need to do daily updates, if not more, of all your software, to keep safe (hopefully). Which is why my android comes out of the box setup to do updates anytime an update is pushed. Which for some things is multiple times a day.

Here are the basic problems I see with software now, and they are somewhat related.

  1. Very few actual programmers out there. I'm sorry if this view seems eliteist, but thats not where I'm coming from with this. Everyone is more of a.... Project manager or something now, then a programmer. You search out Frameworks to enable most of what you think you'll need, you seek out of the other Components you think you'll need. Then you learn just enough programming to tie those things together into a "working" program. Which Its not uncommon your share of the work is the smallest code of all the included dependencies. You might have a huge listing of your works on github, and yet 50k total of actual written code by yourself. Its not uncommon that you release it in Proof-of-Concept level quality and then walk away. Whats ultiamtely crazy about this, to me, is that often times people are being paid to make this stuff. They have a 9-5 at a company and this is what they have them working on. And this barely hobbyist level stuff is coming out of it. This brings me to #2.

  2. People create and abandon, proof-of-concept level stuff, all over the place. Github is full of barely workable projects that are considered a release. I've written lots of stuff like this. My POC level work has never seen the light of day. Now I dont neccassarily think thats the right way to go about it. I would have preferred to had community involvement and seen the projects live on for another day, sometimes. And sometimes the projects were more about learning than putting out there as something that should expanded upon and used as reference material by others. The problem I see with all this POC software out there, is that people want to create projects that haven't already been created. They don't want to "reinvent the wheel" (that wheel just keeps following us). So best case scenario github will be full of similar projects, as long as they are written in different languages. So here you have all these unfinished/unpolished options for software. Hard forking is generally frowned upon... its amazing how infrequently it happens. The "pull request" workflow is not all inviting. The odds your wasting your time and won't be commited into the code are high. The odds that someone on the other end of that will have you doing so much additional work to get it accepted, that they should probably be paying you, is high. So you have this enviroment now where people program and release unfinished works, that they may have no intention of continuing with. People eat it up though, if it works to any degree at all they will hold out hope that it can improve. New programmers don't want to mess with that wheel, kind of like research scientists don't want to redo old studies, because that doesn't get you published. And forking projects is rarely used and frowned upon. I recently started using borgbackup which is a fork of attic, and I thoroughly read the discussion on github they had before the fork happened. It was painful, because there was a lot of people that didn't want to see that happen, but the author confirmed he had no time for this anymore right now AND had no interest in allowing contributions. That right there clearly should have ended the conversation but it went on for much longer, and I believe to this day the original author has not made any changes in 3 years. And so this was a rare example of an actually useful piece of software carrying on life with a fork.

  3. Closed source software and Open source software had 2 real differences in my mind, all along. (NOT in ALL cases, obviously). But to been an opensource programmer, you had to want to be doing what you were doing. To program closed source software ($$$) you have to do whatever it takes to avoid being fired, and the bar for that is clearly NOT very high. We live in this strange time now where Microsoft is the largest (2nd largest?) contributor on github. The first largest ($$$) company, who is the best at getting nothing done with all their time and manpower, is also the largest single provider of opensource code. What planet am I on? Microsoft? If microsoft dominated before hand, none of this ecosystem wouldn't even EXIST. Quite for real, if Microsoft had been able to have their way of the years, just none of this would even exist, the entireity of the Internet would be different. Truly, the whole ecosystem exists despite microsoft, not because of it. Opensource software used to be actually, good alternative options, if not better to closed source ($$$) stuff. Not just on your wallet. We aren't running this internet on a backbone of Windows NT right now, and there is a reason why. So I'll just continue this as #4.

  4. Programmer is simply a good and valid career choice. It's easy to get into, learning programming does not take the investment in mental resources it use to. It pays good, its the future. Its a no brainer. I've known people and still know people, who never had any interest in programming and maybe even computing in general, go into computer science in college. And I was always baffled by this, as if taking 4 years of courses is suddenly going to give you an interest in this stuff. People like to proclaim they need the structured enviroment to learn in, but I really don't think thats the issue. Coding has been a barrier free enviroment as soon as you aquired a PC. Internet is a huge bonus. It's all right there to tinker with. So the biggest difference now is the amount of software (at least in the open source world) thats put up by disinterested parties. Not to be rude, but maybe its even more then just disinterest, maybe that lack of interest stems from not being as talented in this area. Opensource always had companies behind it, but also a mass of nerds who enjoyed making a free alternative to something, and enjoyed making it better.

My android phone is mostly full of Apps, paid or otherwise, built by nerds. I'm not using this as an offensive term, I'm saying these people honestly had a passion for what they were doing. It's also full of commercial level stuff by paid programmers. The difference is astounding. It's like, heres 2 options for an App:

  • Written by a hobbyist, probably in their home office during free time, takes up 1MiB of your flash storage, works amazing, has great feature set, programmer interested in improving it.
  • Written by a company (unknown amount of heads behind this), at work being paid, takes 100MiB of your storage space, uses half your ram to run, doesn't work that great and is lacking features from the former App.

It's a completely absurd everyday scenario. And I'm more then happy to pay those first people whatever they want for a genuinely good peice of software, because its so rare.

And so basically, after that giant mess of ramblings, I think this is where we are at now. Software is not only not managed by people who actually enjoy writing software, its not programmed by people who enjoy it either. It's really not about genius level intellect that is the divide between, some people produce more amazing stuff in a week then a whole company does in a year. There was different motivations behind the whole thing.

Unfortunately I think the new wave of truly interested programmers are learning all there cues from the generation of disinterested ones. The "dont reinvent the wheel" and "let the experts handle the details" way of thinking is not going anywhere soon. And yet neither is the constant reinventing of the wheel. I mean seriously, what are you writing that has not been done before? So it's a moot way of thinking to me. And who are the experts handling all those various components and frameworks for you? If you have any belief in the above pile of ramblings, there aren't a huge pile of experts out there anymore. And frankly while your pulling in your 300 package dependency tree, you aren't paying any attention to who wrote any of that stuff.

Thats my thoughts on that, for now. More another time.

Add Comment
Categories: Programming, $geek->stuff()