An Uncertain Path


I’ve been working towards becoming a Software Engineer Manager for several years now. 2019 was a crucial year for my path to management that held as much doubt as it did promise.

At the beginning of the year I was working with my director/manager to officially request a promotion. I had been shadowing and taking on management responsibilities over time.

The more managerial tasks I took on, the less coding I was doing. That was expected and I was fine with that. I was still able to create proofs of concept and stay ahead of my developers.

However I hit a roadblock along the way that postponed my promotion. There were some things I still needed to work on to make others comfortable with me managing. It was a strange time in my career, I felt like I was losing touch with my software engineer skills and I wasn’t a manager either.

To be honest, it was a bit scary because I thought I was existing between roles and facing the reality my path may dead-end.

One fear that kept creeping up in my mind was becoming rusty with programming. If things didn’t pan out with management, would I be in trouble from rusty programming skills?

I got my answer towards the later end of the year after looking into what responsibilities a lead hold in other companies. For some, it didn’t differ much from what I was doing. The responsibilities for management and a lead could overlap quite a bit.

I no longer felt as lost, but I had also gained a lesson; roles aren’t cookie cutter. From company to company, they mean different things. And over time they may be redefined (though there are some foundational attributes that stay the same).

Fast forwarding a bit, as of last week I finally got my promotion. It involved quite a bit of personal growth that I didn’t touch on here.

What I’ve been focusing on here is feeling in between roles and discovering it isn’t abnormal.

However others may have a more well defined sense of roles. Mileage may very.

I still have a fear of letting my skills become rusty. This last weekend it became apparent I need to work on some side projects again to sharpen my skills.

I’m feeling really good about my daily responsibilities though and am looking forward to helping my developers go and working through challenges.

More on that later.

A* Pathfinding In Game


I wrote a post on implementing a simple A* Pathfinding algorithm a couple months ago. When I went to add it to my game I ran into some interesting differences I wanted to write an update on.

Here is the algorithm working on my game server. Both player and NPC are red blocks. When the player is within viewable range of the NPC, the NPC will start chasing it.

The pathfinding algorithm allows the NPC to maneuver around blocked tiles.

Coordinate to Tile Mapping

One thing I discovered while incorporating it into my game was my simple example had a 1:1 coordinates to tile ratio. Coordinates 0,0 was the first tile, and 0,1 was the second tile. When tiles were 16×16 pixels, the coordinate to index mapping broke.

To address this, I needed to pass  map width and map height in tiles, as well as the tile size so it was known when a new row started and the bounds of the map.

I did this by creating a map struct that contained the width, height, size, and pointer to the tile vector.

struct GameMap {
	GameMap() {}
	GameMap(int _map_width, int _map_height, int _tile_size, std::vector<unsigned int>* _tiles) : map_width(_map_width), map_height(_map_height), tile_size(_tile_size), tiles(_tiles) {}
	int map_width = 0;
	int map_height = 0;
	int tile_size = 0;
	std::vector<unsigned int>* tiles;
};

Metroid: Samus Returns


Metroid II is one of the most memorable titles for me on the Gameboy. The game play, aesthetic, and soundtrack  are really good and create an immersive experience.

I remember being sucked into the alien world. The sounds and environment were strange and mysterious.

One memory that sticks with me is after defeating a metroid, sometimes the soundtrack/sound effects would change, giving the impression that my actions had somehow changed something, and adding to the suspense of what would happen next.

In all, this was a game that fully immersed me, encouraging me to explore and take my time, instead of trying to just get through each level. Investing the effort to solve puzzles was well worth it and gave a bit of an edge against the next baddie.

In 2017 Metroid: Samus Returns was released. This is a remake of Metroid II that sticks to the core of what made the classic, while bringing it up to modern times with some quality of life improvements and additional changes. It’s different, yet unmistakably Samus Returns.

October Development Progress


This is the first of my weekly reviews. I’m starting this to help keep track of what I’m doing and and to set forward goals.

The past two weeks have been a mix of new and old projects, including business-oriented project planning web applications, a World of Warcraft data sync, and two game development projects.

Asana Features

I use Asana to manage my teams tasks. Asana is very simple and flexible, but is missing some features we need to keep track of our sprints and better organize our tasks and Kanban board.

Sprint Reporting

One of these missing features is a burndown chart based off of effort estimation. I’ve been building out our own burndown chart in an Electron app using Google Charts to display the statistics and feeding in the task data from Asana using their API. At this time I’ve got the chart but also a break out of the effort we’ve committed and the effort we’ve knocked out.

This has already proven to be really helpful, as we now have an easy way to track our progress and see the sum of effort completed at the end of the week.

Asana Bot

Asana supports custom fields, but doesn’t allow us to make them required. Requiring the effort estimation for a new task would be ideal. In addition there are a few other events where I would want additional info provided, such as when a task is labeled as blocked, a due date is passed, or a new task is added to the sprint.

To solve these problems, I’m building out a Slack chat bot using the Botkit framework. So far I’ve been learning the ropes of what the chat bot can do and building out the groundwork.

October Gaming Progress


Here is a quick look at the games I’ve been playing recently. I’ll try to post some updates on progress now and then.

This time around, I finished Metal Gear Solid (1998), some World of Warcraft, Destiny 2, and Diablo 3.

Metal Gear Solid (1998)

I finally completed Metal Gear Solid after many deaths from the Metal Gear mech and the fist fight with Liquid Snake.

MGS is a game I watched being played and beaten. Though it’s been so long I could only remember pieces of it. Needing to  transform the card key between rooms was one of those pieces, though I thought it was in a different game in the series.

Finishing it myself was gratifying. There were a lot of frustrating and tiring moments. I have the Metal Gear Solid HD Collect (MGS 2, 3, Peace Walker) to finish at some point.

World of Warcraft

I jumped on WoW and ran an instance of “The Motherlode!”, which was interesting experience with other players. I was playing with a new tank (but not new to the instance) and unfortunately I kept aggroing mobs when I chased bubbles from the Azerite armor talent Secrets of the Deep. I may need to switch that out. The dungeon map for “The Motherlode!” is pretty open with branching pathways. If you meander or lag behind, it’s easy to accidentally pull enemies. So far this is my least preferred Dungeon, strangely, this makes me want to play it more so that I will learn how to do it right. My favorite Dungeon so far is Waycrest Manor.