Banner background from wallpapercave.com
I've been programming computers for years (1978 to present) as a hobby but never as a job. Now I have time to put into my hobby, but it comes at a great cost. My life took a nosedive after my stroke; stroke happened a month before COVID causing havoc with my rehab and follow-up medical care, retired from my job for obvious medical reasons, had to move twice, etc. Life didn't just give me a lemon, it dumped a truckload on my head. How does that saying go, "If life gives you lemons, make lemonade." Coding is my lemonade; I decided to become an open source software developer. My life is (mostly) stable and I've got lots of time on my hands to put into my hobby.
A software developer doesn't just write code to solve problems, that's just a part of their skills. They need to know and practice software development methodologies, version control practices, master object oriented programming (OOP), and stay current on new languages and frameworks. Looking as what skills I have compared to what I need, I've chosen to focus on the following:
TDD, or test driven development. I've never done unit testing, and the TDD process itself seems fairly easy. The hard part isn't the testing, it's following the "test first, code second" process.
Git for version control. Among open source projects, git is everywhere. There are different "workflows" for git, and choosing among them depends on the size of the project and the goals. For my first project, I'll be using the "feature branch" workflow.
C# is the "modern" OOP language I picked. I grew up learning structured programming so OOP is a very different beast. Many of the coding paradigms of structured programming lead to inefficient or just plain bad code in OOP. The language itself isn't difficult, the hard part is learning the language API and coding in an OOP style.
As I start coding in C#, I need an easy project to practice OOP and software engineering. I'm learning all of this at once so the learning curve is steep. The best way, for me, is to tackle everything at once knowing I'm going to make a ton of mistakes. Mistakes are memorable, and helps me avoid the same mistakes later on. The goal of the project is to let me make those mistakes, so I can work better in the future. This project isn't testing my coding skills; it's a test of how well I practice the software developer skills that go along with coding.
SETVER is an easy coding project, something I can hammer out in a day or so in FreePascal. It started as a Bash script and, when I decided to learn C#, it became my project to become familiar with software engineering (e.g. design, testing, version control, documentation, etc., all the important parts outside of coding). I've already coded the project in Bash--it's basic, works on one file, and is very limited but gets the job done. The code logic is done, the VS Code integration has been worked out, it just needs to be converted from a structured bash script into an OOP C# program.
This will not be a "fast" project. Project pace depends on how quickly I pick up C# and the software engineering aspects that goes with open source project development. Almost forgot, learning git as well as practicing TDD, and did I mention that I'm trying very hard to suppress 30+ years of coding habits not suitable for C#?
Coding for Linux, making it a first class platform for software development, is a priority for me. All of my development takes place on Linux first, then cross-platform adjustments to work on Windows and possibly Mac. The advent of Visual Studio Code IDE (VSCode) made Linux development much easier and has become my primary IDE.
I've been a daily Linux user since 2014 and aside from gaming, I did everything on Linux. Since 2019, gaming on Linux improved enough for my games that I changed my desktop from dual boot to just Linux. So while I don't advocate that everyone must use Linux, my platform of preference is Linux.
This site documents my coding experience with VSCode on Linux. I have at least three projects I want to document, more depending how far my mind wanders. The first project is a CLI console program to assist with SEMVER versioning of projects. It's a perfect first project since I'm learning git, C#, and TDD as I write this project. The second is a Monogame game project, with real 3D. I'm familiar with the 3D math theories, but this project would be the first time I put them into code. Third project is a cross-platform GUI using Photino to manage C# projects in VSCode. Keep in mind that the 2nd and 3rd project are subject to change until they're started.
SEMVER versioning for VSCode projects.
Features (Planned):
Integration with VSCode build tasks and shell scripts
Inserts SEMVER standard version strings
Custom version strings
Update multiple files
Multi-platform (Linux, Windows, OSX)
3D hex tile game demo.
Features (Planned):
Zero-player game demo, run on it's own
Real 3D with dynamic hex tile map
Procedurally generated everything (mostly cause I'm not an artist)
Game consist of RED/BLUE opponents battling for territory
User moddable combat tables
GUI for C#
Features (Planned):
Cross-platform GUI for C# projects
Tweaks *.csproj settings
Templates for new files and projects