Simulated Success

Take my experience in Stardew Valley for example, where I lived an entire life over the course of a few weeks. As a single-fella that showed up in town, I created a rather successful farm, went on several adventures, and courted my wife Emily (with whom I had a couple kids). Of course I can’t forget about my faithful companion Brownie, my horse that carried me wherever I wanted to go.

My point is: I’m not incompetent when it comes to making a successful life for myself. I pursued and achieved my goals. The only reason I stopped playing, was because there was no growth potential left — my farm produced tons of income and I had lots of savings, but the farm-work was getting tedious, and I couldn’t simply hire farm-hands to take over. Essentially there were no upgrades left, nothing else to buy.

Stardew Valley is somewhat open-ended too. I specifically chose to build up a very profitable farm and start a family. Yet it vexes me in this life that such financial success eludes me. To be fair, my in-game character inherited his farm — which provided a starting point. But in this life, I’ve been more of a rudderless boat, adrift and anxious over my lack of resources and direction.

And Stardew Valley is no isolated incident by the way, there are plenty of games in which I’ve built up slowly yet purposefully, becoming a dominant figure over time. It’s not that I spend a lot of time playing games either, these are just occasional tangents. Am I incredibly bad at THIS game? Is the difficulty setting simply TOO high? I don’t know but I don’t like it. Therefore, although I am loath to do so, I give this game ONE star. Enough of this lobby-level B.S.

Finding Goals

As I mentioned previously, I believe life presents us with a constant slew of challenges. And if we so choose, we can pick the domain from which those challenges arise. I’ve been too long allowing my meandering mind to pick stupid stuff, so I’m finally going to focus on a specific path — that path is computer programming. The next step is to come up with a goal to pursue. And in order to do that, I’m going through an exercise detailed below:

Compile a list of people whose careers would potentially satisfy you. These aren’t icons you admire per se, but real people with real careers that seem pleasing to you. So although I like Steve Jobs, Elon Musk, and Jeff Bezos — I don’t want their high-flying intensity-fueled careers. Although I appreciate the bigger fish, I prefer to live in a much smaller fish bowl.

But that’s not to say that these real people aren’t famous in their fields. For example, Brian Kernighan co-wrote The C Programming Language, the seminal book on the subject. To play such a large role in the birth of Unix and C is a big deal in the computing/programming world.

Then there’s guys like Guido van Rossum and Rasmus Lerdorf, the founders of Python and PHP. Or Anders Hejlsberg, the lead architect of C#. And Miguel de Icaza of Gnome and Mono fame. Or even Charles Petzold, author of Programming Windows, the definitive book on Windows programming (which I purchased on Oct 16, 1999 according to Amazon).

Now from that cast of characters, what common themes can I discern? It seems that I picked people that were founders and/or documenters of new technological tools. So either my goal can be to create a new tool OR document and explain an emerging tool. Hmm, that sounds like something I can work with.

The next step would be to find that tool. A tool I can pick apart and explain to others in a clear and succinct way. Or, a tool I build myself and present to others as a new way of doing things. So now I must be on the hunt for such a tool, and once found, my goal should be to create or document it. That doesn’t sound too bad.

Path of the Programmer

A couple months ago, I purchased a laptop computer so I could get back into computer programming. Prior to that, I had been using an iPad Pro to fulfill my computing needs. Because I was mostly dedicated to writing this blog, I didn’t require much in the way of computational power.

Since receiving the laptop, I researched a bunch of programming paradigms and installed a few development environments. After the dust settled, I picked Javascript as my language of choice. As for tools, I’ve been using Visual Studio Code and the Chrome web-browser. Oh, and the developer docs over at Mozilla.org have been extremely helpful. And shout-out to all the various websites and YouTube videos that provided insightful tidbits as well.

My programming portfolio at WellCraftedSoftware.com is filling-out nicely I think. In just a month of programming with Javascript, I’ve got quite a few samples up there. Simple stuff on the surface, but it takes effort to write code that isn’t overly complex. My goal is to write the cleanest, most uncomplicated code possible.

I have no other objective at the moment but to continue adding to my portfolio — and in the process, practicing and honing my craft. I’m having more fun this time around — just programming for programming’s sake, there’s no rush to get anywhere in particular. Why do I want to climb the mountain? “Because it’s there.” And so I continue my quest, following the path of the programmer….

More Programming

I’ve spent the last few weeks reacquainting myself with programming. First it was Codea on the iPad, then Godot on the PC, and then Javascript on the web. It’s been interesting to see what’s changed and what hasn’t in the near-decade that’s passed since I stopped programming. It seems like Javascript became a big deal for instance.

I even re-established my old domain-name (which I couldn’t get rid of for sentimental reasons): https://WellCraftedSoftware.com. It now points to an Ubuntu instance on AWS — I always wanted my own Virtual Private Server. It hosts some of my recent experiments with Javascript, including a simple Node.js server demonstration.

I’ve been using Visual Studio Code to whip-up some quick little programs that utilize Javascript to manipulate Canvas elements within the browser. I’ve also familiarized myself with the CSS Grid spec and found it a decent way to do layout. When I left programming many years ago, Javascript and CSS were an absolute mess — now they seem downright pleasant (if done right).

I did look into a few other programming areas, but I wasn’t that pleased with what I found. I still dislike Xcode, but I’m excited to see if SwiftUI can turn things around. I also looked into Android Studio and saw that they switched from Java to Kotlin — very interesting. But overall, the development environment is too big and heavy — I prefer a leaner/meaner setup.

For the time being, I think I’ll concentrate on browser-related stuff. The HTML Canvas element is pretty primitive, but it’s kinda fun for now. I haven’t touched NoSQL databases yet, but they look promising: just throw them some JSON? Cool. Oh and honorable mention to https://developer.mozilla.org, their documentation for Javascript and other web-related stuff has been phenomenal.

Search for Success

Did you ever try searching for the thing you’re good at? Like when you see an interview with a super-successful person, and they mention how well-suited they were for the particular path they took. And so you start thinking, “Hmm, maybe I have an obvious talent within a specific domain as well!” So you run down a checklist of traits and abilities trying to ascertain where you fit within the catalog of available professions.

Psh. After several decades, I’ve yet to come up with anything conclusive. The areas which I’ve explored most are: exercise/nutrition, computer-programming, writing. Yet nothing has yet to snowball into a viable long-term career. In each of those domains, I invested YEARS of practice. The most financially successful was programming, but for some reason it just kinda stalled.

Recently, I procured a Windows-based laptop and installed a bunch of programming-related stuff on it. I’ve been browsing around for the most suitable programming paradigm — one that matches my temperament and skill-set. So far I’ve installed Python, Python with Qt, C# and .NET, Roblox Studio, Godot, and Android Studio with Kotlin. I also looked at a few others but passed them by.

I don’t have anything particular I want to make, I just want to “program” and have fun while doing so. Therefore I’m attempting to find an appropriate medium with which to express myself — something that’s powerful but not too complex. So far Godot seems the most promising, it’s a blank canvas backed by a physics engine — but of course its feature-rich flexibility comes with a learning curve. I’d actually like to get into robotics programming, but I haven’t found an entry-point yet.

But anyway, that’s where I’m at right now: trying to find something I’m good at. Of course I was very good at being negative and complaining and scaring myself, but now I’m looking for an activity on the fun-side of life. Something I can invest myself into and experience a return of appreciation. “Wow Rich, great job! Thank goodness you’re around to do what you do!” That kinda thing.

Simple and Efficient

I enjoy cheat-codes. Back in the day, I utilized the famous “Konami Code” to receive extra-lives on Contra for the original NES. It was something like: up, up, down, down, left, right, left, right, B, A, B, A, Start, Start. If you look it up now, it’s slightly different, but that’s what I entered and it worked. I learned it from a kid in my class — he was a video-game expert. He’d read about video-games in magazines or something. He also helped me to find all the hidden stuff in the Legend of Zelda for NES.

In other words, I’m not a stranger to taking the “easy route”. I guess that’s why magic and wishing pique my interest. I’m a slave to efficiency — and what’s more efficient than cheat-codes, magic, wishes, etc.? I suppose I like the feeling of taking shortcuts because I love efficiency so much. In fact, the more effort I put into something, the less I appreciate it. The end-product seems too convoluted to be worth all the trouble. For me, simple is best.

But usually, I use cheat-codes when I literally couldn’t have done it any other way. I couldn’t have beaten Contra with a measly 3 lives, I’m not that good of a video-game player — I don’t care enough to dedicate the time nor are my reflexes fast enough. So boom!, there I am with all those extra-lives, reaching the end. From feeling frustrated at my inability, to complete domination of the game itself — how’s that for a self-esteem boost!?

Perhaps it’s part of my character, but I don’t feel like I’m cheating myself. Because I value simplicity and efficiency, the easier and quicker route feels correct to me. So if the game-of-life, for whatever reason, hands me millions of dollars — I’d say “oh, well it’s about time! But thanks, I appreciate this. I was struggling quite a bit with the gameplay, but this will provide the boost I need.” I’m not particularly good at games, but my persistence and willingness to utilize shortcuts typically pays off in the end.

P.S. I serve as a beacon of hope to pessimistic slackers ONLY. I am NOT a type-A hard-charging go-getter. I understand that some people really do get a sense of satisfaction from effort and “hard work” — and that’s great. But it’s also great that variety exists. There’s a path for everyone in this world and some of us have fun taking the accelerated routes.

Batch of Roles

From my perspective, individuals are hard-wired to be something in particular straight out the gate. People are in no way “tabula-rasa” i.e. empty slates at birth. Everyone seems to have a drive within them to do something specific. And conveniently, the roles we pursue are evenly distributed enough that we find ourselves within a decently-functioning interconnected system of activity. It seems to me that these separate roles coordinate too well to be random-chance.

I would speculate that a central coordinating mechanism exists beyond the visible world. We all have certain characteristics and special abilities suited for some roles but not for others. And from what I’ve observed, you can’t teach people. Either they can do something or they can’t. If it looks like people are being taught, it’s simply that individuals gravitate toward what they’re good at — that’s it. If teaching was an actual functioning mechanism, you could teach anyone to do anything — but you can’t.

For instance, throughout my many years here, I’ve practiced playing musical instruments and I’ve tried cooking delicious meals. Ultimately I’m not good at either activity. And my friend, who’s a natural artist can whip-up a world-class meal without breaking a sweat and she can play an instrument or sing as if it’s second nature. If you simply watch children growing up, you can see how proficiently they perform certain activities that they’ve never been trained to do — it’s just part of their character.

So I think it’s true when you hear: you have to discover who you are. What role have you come here to play? What are your characteristics? What’s your dossier list as your strengths and weaknesses? But you can’t figure it out by logic, you have to feel your way there. You have to sample the selection and see what suits your palate. And this part you play is not a limitation by the way, it’s you being who you were meant to be — it’s your role, your pathway to fulfillment.