WARNING: Limited functionality mode due to unsupported browser

Programming Hobby

Updated on February 27, 2016

In my college days, the Computer Science program (like most universities at that time) concentrated on using "teaching" or "educational" programming languages such as Modula-2 or Pascal that were typically not used in professional programming. In short, I knew several programming languages (many of which were self taught) at this point in my career that were rarely utilized going forward except for Basic and assembly programming languages. In fact, my first professional job required a lot of assembly language programming because I could beat the C compiler by 20%. Since we were manipulating very large images, we couldn't afford the performance penalty. Although, I did plenty of programming in C as well. Later in my career as I moved away from product development and into network engineering, I utilized mostly Basic and TCL.

After I no longer needed to do programming for my job, I found myself wanting to program for fun. Also to maximize that fun, I have been using scripting languages such as BASH, JavaScript, or Python. None of these languages since they are interpreted typically would be ideal to crunch a lot of numbers, manipulate big data sets, or use in performance critical areas; nonetheless, they provide higher level constructs so you don't have to build a personal library of functions to accomplish basic data manipulations. Anyway, BASH is good for task automation or simplification on Linux based systems, and JavaScript is very useful for providing additional functionality to web pages in addition to other tasks. Python is actually quite powerful, and it comes with a large standard library of functions. In addition, Python is a surprising programming language in that it can be used for complex programming tasks, and it can be found in many production applications that would normally require a compiled language.

As much as I enjoy programming for fun, I only generate code if needed. In other words, I sometimes have scrapped code because I have found a better option or it became obsolete including due to a feature retirement or being bundled now. In short, the software I write typically has to fill a need or provide some kind of enhancement that isn't already available. In addition, all of my software is designed usually for Linux. What I truly enjoy about Linux based systems over traditional desktop systems is their flexibility and performance. If you don't like a particular component of the Mac OS or Windows, you might not be able to bypass that. In addition, most modern Windows based systems that I have used such as Vista, 7, 8, or 8.1 were all painfully slow requiring faster and faster CPUs and significantly more memory and disk space. Using older or newer computers, Linux based systems can have almost any look and feel that you want and performance is usually excellent (i.e. fast CPUs, significant amounts of memory, and SSDs are not required for quick boot up or application loads), and you don't have to run performance zapping antivirus software. In addition, it is truly amazing the sheer number of applications available for free to accomplish nearly any task that you could ever think of or want. Even old hardware such as my Eye One Display 2 color calibrator can be utilized which is no longer supported on Windows 8 or later.

To be good at programming, it requires an unique blend of talents such as a proficiency with mathematics; organizational skills; technical understanding especially considering device drivers or optimizations to address memory, CPU, or hardware usage; and perhaps even an artistic side for code that is visually consistent for easy readability. In addition, it is typically useful to be good with languages including an eye for rigid syntax compliance. Although, these days many programmers use Integrated Development Environments (IDEs) to assist with software development. Oddly, I have never used or required one including a debugger. To learn more about programming or my software, select one of the buttons above (on the ribbon of color).

Copyright © 2016 Walter (All rights reserved)