Learning While Leveling: Terraria

Terraria! From https://terraria.org/

If Malcolm Gladwell could see my Steam account, he’d agree that out of the handful of games I’ve sunk some time into, Terraria is by far the game I’m closest to mastering. (just for the record, I’m nowhere close to my 10,000 hours, but I am over 1K including all that AFK item farming…) Terraria is a 2D open world mining fantasy game. It’s not super difficult to survive, but it literally starts you out on a sunny day in the woods with a couple of tools and a twinkle in your eye.

Day 1 – This Looks Pleasant
Night 1 – Is That a Zombie?

Before too long you’ve wandered into more hostile biomes and realized that zombies roam the world after dark. Once you’ve sorted out how to survive the first night (or died and respawned many times… it happens to the best of us) you’re off on an escalating series of stat, equipment and world improvements to become powerful enough to unlock the secrets of your world. I’m lucky to have played all of my Terraria hours with my wife during early stages of our relationship, so I can’t say enough good things about the quality cooperative play in the game. But I’m not here to sell you on Terraria, but to share some life lessons that I’ve picked up while mining my way towards Journey’s End.

Mastering Your World

After your first few moments of bewilderment in the game, Terraria naturally guides you to stake your claim over the world. There will always be natural forces at play, but just about every phenomena can be controlled with time and some good old-fashioned grunt work.

That’s going to be a pain to get around…

If you’re constantly trekking from one part of the map to another and are feeling frustrated with the myriad obstacles along the way, change them! Even a novice player can make rudimentary upgrades which massively improve your day. Once you’re feeling a little craftier, infrastructure projects like Terraria’s ubiquitous sky bridges take your experience to a whole new level. Later, you can defy physics further by building teleporters to your frequent destinations.

I think the biggest lesson here is that if you’re willing to invest the time and energy to increase your quality of life in a 2D block world, you should probably take a moment to revisit obstacles you encounter in the real world.

Life doesn’t afford us the luxury of impossibly floating roads or instantaneous teleportation, but the reminder that you can edit your world is a powerful one. Maybe you can’t strip mine the metaphorical mountain in your way, but you can probably do something about the bits you metaphorically bump into everyday.

Start small! What little environmental changes would make your life a little better? Some fixes are utilitarian: Would that second charger in the other room reduce a little frustration? How about reorganizing your pantry so you it’s a little easier to access your healthier snacks? Some fixes are more aesthetic: would decluttering the room you’ve been trapped in for most of your waking pandemic hours help you feel a little less crazy? Would a rug really tie that room together? Once you’ve exhausted the quick fixes, maybe think of some sky bridge solutions: life improvements that defy the physics of our conventional thinking.

Playing a Wiki

Open world games are great, but then you start doing research to figure out how to progress and end up playing a wiki, which in turn becomes playing a to do list… Much like life, Terraria is open enough that you’ll constantly find yourself saying “now what?” You can usually find new things to do if you wander enough, but there are very specific milestones to advance through the game and in my experience, they’re easy enough to miss.

Terraria starts in a virtual childhood, Pre-Hardmode, where you get to know your world and face your first few bosses. If you don’t know what’s coming, you might just face off against the Wall of Flesh, a milestone boss that catapults you and your world into Hardmode, a virtual adulthood where the world gets scarier, everything gets harder and there is urgency to save your world from the creeping powers of light and dark. Sorry for the spoiler, but it’s best to be prepared for Hardmode and even then it’s going to knock you on your ass a bunch of times.

Behold the wiki, your path has been revealed!

So Terraria, much like life, is much easier with a guide and in this case the best guide is the wiki. While my wife builds magnificent strongholds for our NPCs and chests full of loot, I’m often clicking around the wiki trying to figure out what we should do next and slipping it into our Terraria to do list. It’s not always a lot of fun, and it can make the game feel a little more clinical than the whimsical adventure it aims to provide, but in my case it is a necessary evil to keep moving forward.

No shit, it’s a gaming to do list…

Which brings us back to IRL progression. Sometimes to figure out what you need to do next, you’ve got to find the wiki for life and look up a guide page. Sometimes that’s a book, sometimes that’s a person. Sometimes you truly can progress by wandering even though that can be a risky strategy. There are plenty of options, but it’s important to remember that they’re there if you get stuck or bored.

From my Giphy Channel @ https://gph.is/g/E1X59Pq

I’m not going to recommend anything in particular because YMMV and I don’t think any one path Is The Way. Maybe try taking a snippet from multiple sources and Frankensteining your own path. Also, remember to use the wisdom of others to guide your path, but recall that life is more dynamic than a videogame, so someone who entered the Hardmode of adulthood generations prior was playing an earlier version, so to speak, and they had very different meta guiding them.

The Latest and Lastest Update

Terraria is great, and while it’s a contender for my most hours sunk into gaming, it’s important to remember that those hours weren’t sunk. Instead, I look at that time as successful leisure and relationship building, with the nifty side effect of reminding me to take control of my own open world adventures and to use the documentation resources at my disposal, because let’s face it: life doesn’t always narrow down the path to your next level.

An Introduction to Learning While Leveling: Discovering Lost XP

Have you ever spent waaaay too many hours doing something only to realize that it probably wasn’t worth it? Any gamer who’s ever gamed can probably share horror stories of a time when they logged hundreds of hours to attain something that most definitely wasn’t worth it, especially once you log off and re-immerse yourself in the real world. Perhaps it’s not even a piece of ephemeral loot or a maxed stats for your digital avatar, but something as empty as the conclusion of the nth round of  whatever has captured your attention. In the cold light of day we rub our bleary eyes and wonder what went wrong. Why had we immersed ourselves so dutifully in a world that let us fritter away our precious hours?

From my Giphy Channel @ https://gph.is/g/E0plmg5

This series is a discussion about those moments and my optimistic take on where we end up because of gaming, gamification and immersive grip of those digital worlds. I’ve come to realize that while I’ve definitely logged a good part of my hypothetical “10 thousand hours to mastery” doing digital chores in games, I’ve also taken so, so much from those experiences. I think that with a little reflective introspection, we can all grow a little by accessing some life lessons buried in those gaming sessions. It’s going to take serious work though, and I’m literally going to show you my version of that work through these Learning While Leveling posts.

Yeah I know I need to clean the logo up a bit, I’ll get around to it! Look at that sexy Mass Effect styling though…

As a first introspective nugget, I’ve always thought of myself as a terrible gamer. Challenging games, whether they require feats of dexterity, application of problem solving or simple observation to find and exploit the system, usually yank me back to reality. In those moments I wonder “what the hell am I doing this for?” Perhaps that’s my engineering brain being aware of optimal solutions to these problems, but it immediately pulls me out of the immersive experience. I guess I’d rather let my brain play with the idea of space marines and alien organisms rather than contemplate the tactics and frenetic dance required to be a masterful Starcraft player. As a terrible gamer, I shrink when faced with these challenges, and yet I shine when given tasks that require time on task. Of course, I’ll happily deliver this item to a faraway virtual town for a pitiful reward, after all that is just more time I get to spend in this fantastical world.

So what is the benefit of being a terrible gamer? Perhaps my biggest Learning While Leveling win is the result of my first interaction with Guitar Hero. As a rock nerd and someone with a (unexceptional) musical background, I figured my fingers would be dancing across the colorful fretboard and I’d rock this game like it had never been rocked before. Wrong. I was terrible, it was frustrating, and I starting thinking about the required hours of practice to get somewhat decent at this game. It seemed like such a waste of human effort to get good at Guitar Hero when I could pick up a damn guitar and build similar but more rewarding skills. My first day playing Guitar Hero was the day I become a guitar player. It turns out that practicing guitar can be just as fruitless and daunting as getting good at a game, but I’m pretty happy I ended up with this extra dimension in my life. Not a bad life improvement from being a terrible gamer.

Oh yeah, I also played hundreds of hours of Guitar Hero with friends and got pretty good. It turns out that games and life are not mutually exclusive. Has anyone else had any IRL insights from video games? Are there any other “terrible gamers” out there? I’d love to hear from you as I re-examine my life, game by game.

Python PSA: Pitfalls of Pivoting from requests to urllib3

Let me start this quick Python PSA with a major disclaimer: I have no idea what I’m doing or talking about and the entire reason for any issues I’ve encountered was my desire to avoid diving too deep into documentation while porting from one Python HTTP package to another, but…

I’ve been using Habitica for managing my recurring tasks and to dos for a couple of years have had success (and mild amounts of fun) battling mundane tasks and monsters alongside my wife’s digital avatar. I’ve also used Trello for way longer, but have found that it’s imposing blank slate design is equally a blessing and a curse and that bottomless Trello lists are often where I send ideas and to dos to die. But, because Trello has tons of integrations, you can turn it into an awesome productivity engine with a little careful design. As a guy who needs structure, I’ve been using planyway to drag my to dos onto the calendar and force them to become real.

Turning to dos into quests! From a Habitica overview/review @ https://lwn.net/Articles/747919
Turning to dos into calendar blocks! From a planyway review @ https://www.g2.com/products/planyway/reviews

But living life in more than one digital realm is complicated and complexity is the enemy. I want to vanquish dragons, build good habits AND use the helpful features of Trello + plugins, so I built a thing. It’s janky, but I built a little python script on AWS Lambda’s Free Tier that links Trello and Habitica webhooks and APIs so that when I make a new to do in Habitica, it crams it into my Trello Inbox where I can decide if it’s destined for Next Actions, Do It Soon or either of the nearly synonymous Do It Later or Do It At All? lists. By using webhooks to watch for changes in either of the systems, I can keep the cards linked and updated. It’s not an elegant integration, but it works for me. Or it did…

This isn’t a post about my hacky productivity system, it’s a post about the AWS Lamba Python SDK removing requests from their built in packages. For those of you who haven’t used requests, it’s a great python package that makes HTTP requests really easy and has powered an awful lot of my scraping and integration projects. AWS botocore (the Lambda standard library) had a version of requests ready to go, but since it’s disappearing I had to figure out how to either install and package requests or figure out how to use urllib3, the python standard library HTTP tool. Out of a desire to avoid learning anything new about AWS or packaging Lambda functions, I decided to figure out urllib3.

urllib3 is the underpinning of requests and does all the same things, and yet people find value in requests and I was about to figure out why. Some of my POSTs transitioned seamlessly, requiring only mild syntax changes:

Python

But then I started running into gremlins, complexities that requests had protected me from for all these years. Where requests had happily accepted a dict of field information that included lists of values for a specific key (like say, when you need to have more than one label on a new Trello card) urllib3 threw byte encoding errors that took a bit to unwind. I faffed around with lists of tuples and json encoding, but nothing seemed to work, so I ended up building a comma separated string in my field dict:

Python

Apparently I’d also made extensive use of requests’s builtin JSON parsing, so you’re going to have to think a tiny bit more about your response parsing:

Python

Also, every time I needed to use a new request type, I found slightly different behavior. POSTing to the Habitica API required an additional ‘Content-Type’: ‘application/json’ header entry, but GETting did not. For some request types such as PUT or DELETE, I ended up sticking most of the variables in manually constructed URL strings instead of headers or fields because I got sick of debugging the inputs for each request. I learned to appreciate the consistency in requests’s requests.

Lastly, next time I’m going to learn how to write proper AWS Lambda code using a local AWS SDK, because while there are some nifty features in their online editor environment, I spent way more time hunting down tab/space indentation errors than I care to admit, a frustrating time sink that would have been easily avoided with a proper editor/IDE.

This is obviously not an exhaustive list of pitfalls nor an authoritative account, but an anecdote from a non-pro programmer who tried really hard to do something quickly and ended up reading more of that docs than desired. Also, I’m not knocking either of the packages, urllib3 is the infrastructure for lots of great HTTP stuff including requests, which is still the easiest way to quickly snag web content for fun projects.

Speaking of fun projects, at some point I’ll get off my butt and post my Habitica/Trello Lambda integration to github and write a more thorough expainer post here. At least I can add that to my to do list with the knowledge that my digital domains are all still in sync 🙂

Homage to Another Space MOOSE

MOOSE - Escape from oribit stages

Since I’m using an astronomical Alces as the guiding spirit of this blog, I thought it would be appropriate to recognize the space moose that came before.  The first astromoose I discovered in my space fandom was an Apollo era moose that never came to be, but lives on as the starting point for all orbital emergency plans.  GE proposed the Man Out of Space Easiest (MOOSE) system as a “satellite life jacket,” a suitcase-sized container that unfurled into an astronaut sized reentry bag equipped with a handheld retro rocket for deorbiting and canisters of foam to create a proper aerodynamic shape and “pot[] the man and equipment in the vehicle.”  It would have looked something like this:

Formatted to fit this blog from the Analysis And Design Of Space Vehicle Flight Control Systems report

Apparently they later changed the backronym to Manned Orbital Operations Safety Equipment which, while still excellent, feels a little less exciting.  If you’re interested in reading more, check out the description of the system on page 145 of the Abort Volume of the Analysis And Design Of Space Vehicle Flight Control Systems report. This 1969 document has some good discussions of Apollo era abort systems and considerations of different abort phases and earth approaches, but more importantly it contains some amazing skedaddling-out-of-orbit concept vehicles that should tickle your retro escape pod fancy:

Formatted to fit this blog from the Analysis And Design Of Space Vehicle Flight Control Systems report
Formatted to fit this blog from the Analysis And Design Of Space Vehicle Flight Control Systems report
Formatted to fit this blog from the Analysis And Design Of Space Vehicle Flight Control Systems report
Formatted to fit this blog from the Analysis And Design Of Space Vehicle Flight Control Systems report

While MOOSE is basically an inflated microwaved astronaut bag filled with packing peanuts, some of these other proposals look far more comfortable and dare I say it, almost modern.  The paracone looks far comfier than the confined space of MOOSE and there is a definite resemblance to modern inflatable heat shield research

But wait, there is yet another MOOSE!  While poking around for more info on skydiving from orbit in a magical briefcase, I discovered the 1993 Manned On-Orbit Servicing Equipment design project from the University of Maryland College Park.  The timing of this proposal makes a lot of sense, since NASA was preparing to send the Shuttle to do some serious orbital surgery and correct the refractory errors that had hobbled the Hubble.  Of course NASA went on to complete 3 Hubble service missions with the Space Shuttle and continued the scientific reign of the telescope without the help of the MOOSE service ship.

Formatted to fit this blog from the Manned on Orbit Servicing Equipment design

Instead of bringing the relatively spacious satellite workshop that was the Space Shuttle along with you, the MOOSE orbital servicing plan is a little more Kerbal, cutting out non-essentials such as crew comfort and a nice sheltered work space.  This MOOSE would probably have been more comfortable than getting roasted in a bag, but basically amounted to a live-in toilet with some manipulator arms, engines and RCS thrusters for chasing down satellites, a heat shield for delta-v saving aerobraking maneuvers and the most adorable set of spacesuit arms sticking out the front.

Formatted to fit this blog from the Manned on Orbit Servicing Equipment design
Formatted to fit this blog from the Manned on Orbit Servicing Equipment design

The discomfort would be temporary, however, and you’d fly back to your space station after 2-3 days of wrenching and transfer orbits and unwind.  While we are definitely entering an era of CubeSats, SmallSats and mega-constellations of “commodity hardware” that will be more expendable than past satellites, we will continue to have on orbit servicing needs, especially as we start to live and work in space.  It looks like the next generation of orbital repair and refuel missions will be conducted by robots: Northrop Grumman recently docked it’s Mission Extension Vehicle to Intelsat IS-901 to act as a life extending guidance and control system. 

From https://www.northropgrumman.com/space/space-logistics-services/mission-extension-vehicle/

While the two MOOSE systems we’ve discussed never came to be, I have to assume that they will be cited as foundational schemes for many space projects to come, and while the near future of satellite repair is going to be robotic, we can’t be more than a few years away from a Red Bull sponsored astronaut diving from low earth orbit in a bag while heavy metal plays in the background.

Origin Story

Hello and welcome to alces.space, an attempt to funnel my brain onto the internet, ingratiate myself to our future robot overlords and perhaps meet some cool humans through the ether.  I’m not one hundred percent sure what this is going to entail, but here is my first stab at a mission statement:

Plain Text
alces.space Mission Statement

I suppose the idea requires a little more explanation.  I think the easiest way to make sense of the space-moose continuum, and my goals in exploring it is to walk you through my journey so far.  Let’s start at the beginning.

Hi, I’m Dan.  I’m an early 30-something who grew up wandering the hills of Vermont and playing with computers.  With the dichotomy of nature and tech as such a fundamental part of my childhood, it’s not surprising that I wound up in Boulder, CO where I live with my wife.  Along the way, I went to RPI to get an Electrical Engineering degree, worked in aerospace, transitioned to IT consulting where I spent some time living north of Atlanta, GA and working on a wide variety of projects ranging from machine learning in healthcare diagnostics, to reverse mentoring technology leaders and back into healthcare with analytics systems for Medicaid and healthcare information exchange software for Chinese hospitals.  I’m a generalist at heart, so I love bouncing between these different worlds to learn and explore as much as possible.  With that background, let’s break down the cosmic collision between the long-legged mammal and the vast void of space.

First, let us consider the moose.  The moose is widely regarded as a regal, powerful animal that caries itself with a stoic energy and resolve that comes from being a steadfast land-whale.  There is a reason that Theodore Roosevelt exclaimed that “it takes more than that to kill a Bull Moose” after he got shot on the campaign trail, an utterance that inspired the mascot of the progressive Bull Moose Party.  My point is, we could all take a few life lessons from the Alces that inhabit our planet.  I’ve met many moose throughout my life, but one particular canoe trip in Maine inspired my 18-year-old self to change my Facebook Official Religion to Moosism, and in a surprising win for early social media, that reflection sticks with me to this day.  Since moose seem to spend their days introspectively ambling through the woods, I suspect that I’m part moose and I hope to fulfill that part of myself and sharing ways that taking the Alces perspective can help.

On to space!  It’s hard not to be fascinated with space and space exploration, especially as an imaginative engineering nerd.  I never once doubted that I was destined for a technical life, so I spent my childhood basking in sciency things and learning about the incredible challenges and accomplishments in spaceflight.  I was a “shuttle kid” and my generation’s moonshot has been the development of private space.  While the generations before me had images of astronauts on the moon I had John Carmack writing about the trials and tribulations of building rockets and watching SpaceX attempt to leave the pad for the first time.  Space is hard and doing something hard is fulfilling.  There are so many lessons that can be gleaned from the cosmic perspective and the quest to find and establish our place in the universe.

So that’s it, a little about me, an attempt at an explanation for why I think a cosmic moose is a good analogy for an inquisitive human and lastly some ideas about what I’ll be putting up next.  I will be posting some shorter pieces about interesting things that I uncover and some longer essays that I hope you’ll find insightful.  I can’t promise that the topics won’t be all over the place, but I think everything is connected and seeking out those connections is valuable.  I can promise that I’ll be attempting to articulate ideas in technology, business and how to use an engineering mindset to live a better life and I hope that you can take something from my musings.