# About Me I am Jordan Savant. A programmer amongst other things such as father, outdoorsman, indie game developer and enthusiast, axe-collector, PC builder, fitness-goaled achiever, studious bible-son, UTD alum, handyman and renovator, DND game-master (of sorts), kombucha addict, certified AWS solutions architect, Lifeblue employee and craft lead, advocate for others, advocate for human rights, advocate for AI (but maybe not human rights), DOOM fanboy, `mpg123` music listener, OS agnostic, wannabe comedian. ## Programming Roots ### TI Days I started programming sometime around 6th grade, when TI-83 Plus calculators became allowed. I found myself spending more time writing programs on it to solve math problems than just learning the formulas. It was "cheating at math" in a sense, but concreting my love for an industry ironically rooted in mathematics and science. I guess that makes my first language `TI-BASIC`. I even recall working on an RPG for it, "Call of the Dragon" or something similar. Every string of text I represented as an individual `char` (until I ran out). Maybe I will take a stab at programming one again for fun. Thinking back there was an allure to writing in this obscure computer language. I felt like I was speaking to a secret magical race of lifeforms in a language more logical than humans were naturally prone to speak. It did not lie, it was deterministic and when invoked it brought life and creativity to a tiny screen. ### Sins of the Early Internet From there it continued throughout middle and high school ages. My father was an avid Macintosh fanboy and we mostly owned Power Macintosh computers year after year. My mother did work on a DOS installation that you could boot into on MacOS 8 which let me get some pinball gaming in from time to time. My father was a photoprapher and artist and very intelligent and I think he was hooked by the famous [1984 Apple Super Bowl ad](https://www.youtube.com/watch?v=VtvjbmoDx-I) from an artisitic standpoint. It was around this time that I started dabbling in graphics design and 3D rendering (Bryce3D). Mostly I worked within the Macromedia and Adobe suits learning how to slice images into html. My first website existed at an earthlink address, long forgotten but something along the lines of `earthlink.net/~galandracos`. Did I mention I was a Dragonlance fan? HTML was a good entry point into another "programming language" (even though its not) but I remember enjoying and preferring the pure markup to the Dreamweaver experience. Markup was where the webmasters worked. GUI land was where your friend's dad managed his website for his bugling band (true story). Of course I wanted to have all of the bleeding-edge effects of the web at the time which included mind blowing `font` tags, `center` tags and everything right with 1990s internet. Then flash was born and it all took a nosedive, and I went with it. ActionScript enabled horrifying options not previously allowed in the HTML world and I even recall build a website with a flying sword at one time. But my efforts, regardless of their lawlessness, did end up working for good. I was able to work my way into more and more development over time eventually landing some significant contracts at the end of high school and in my early twenties. ### Will Work for College I am thankful that a relative was also into web development at the time and started an agency. He primarily needed a programmer. He was an artist and media man by first nature and was not as passionate about programming. I am eternally thankful that he despised it because it allowed me to learn and grow into something I really loved. At that time it was mostly `PHP` and `JavaScript` and I guess the world has not changed too much since those days. Mostly it was hacking osCommerce and other solutions to create ecommerce sites but we started breaking big into home development companies and building custom software. I recall my early days trying to understand why my PHP would not run in an `onchange` attribute. Shows how fundamentally flawed I was at understanding something I had been working with for quite a while. But striving on and on I began exploring MVC architectures and taking a stab at more professional quality architectures. I failed mostly, but I learned and most of that striving and failing is why others trust me to make good decisions today. This time period was also good exposure to proficiency, speed and decision making that went into contract work. Billable hours were important and needed to be justifiable for the output. Clients hire you to do a job they cannot, and its important that you do your best to gather requirements and meet their expectations. It was not too long into this venture that I started my higher education at the University of Texas at Dallas. ### Will College for Work UTD was an awesome experience. I majored in Software Engineering and spent most of my time continuing agency freelancing and having my mind blown open by lots of new languages, architectural principles, mathematics (13 course for crying out loud). I loved every minute of it (ok perhaps biology was not a love of mine) but I absolutely look back on it with the best of memories. I grew close to my wife over that time period as well. I am thankful I kept a lot of my education resources from back then. I would recommend archiving any slides, lectures or homework you do because someday your going to remember something from it and having the hard info is great. Some of the languages explored were: `Java`, `C++`, `Scheme`, `SML of New Jersey`, `Lua`, `Prolog`, `MIPS Assembler`, `perl`, `shell`, and `C` and of course `Java` again. They had converted a lot of coursework over from C++ to Java part way while I was there and I have mixed feelings about it. It perhaps better prepared me for the business world of software, but left a lot of educational lessons provided by C and C++ on the cutting room floor. During my graduation I recall Dr. Cy Cantrell, senior associate dean for academic affairs in the Erik Jonsson School of Engineering and Computer Science, stating "your time here is about education, it should only be about education. The fact that you may gain a better life and career for yourself does not stem from degree or a university, but from an education." It was wise words that are corroborated by human history. We often conflate the purpose and titles afforded by a University as affordances for success. I met like-minded people struggling to understand and survive a college endeavor. Made friends who stand until today. I learned the theory of software engineering, design principles, architecture, business integration (way too many diagramming formats) alongside physics, statistics, game design, arts and technology and more. ## Software Middle Ages ### SaaS Tooth Post college I cut my teeth in the professional world (sans contracting) in a smaller but strong-spirited SaaS company. It was an experience replete with the symptoms associated with carrying the mass of a software service developed on a loosely typed language with startup funds and standard turnover. What that means is that after a few years it had turned into largely spaghetti code with a few heroic programmers holding important knowledge about how it all worked. That to me is sad. When programmers no longer maintain their work. They may even create incredible and well architected ecosystems for businesses or ventures and life or careers or whatnot pulls them away leaving a large system with very little knowledge. And lets be honest, even the best documentation is usually as verbose and complicated as the codebase itself and likely outdated and essentially a half-truth at best. Especially if the programmers write the documentation. Generated documentation has the benefit of essentially exposing the codebase in a more accessible way with the internals hidden, so that has merits, but does very little for product owners or customer service trying to learn the ins and outs of a new feature. But it was where I was forced to learn: vim, Linux system administration, devops, unit testing, pair programming and learning to lock step with product owners and business needs. I.e. it was where I learned to be a programmer in the real world. Not ably free to jump from one contract to the next, I and my friends lived with my sins. As time went on more and more features were added to the boat as we manned the engine rooms covered in sut and suffering from black lung. It was glorious, painful, slow and unfortunately just couldn't pick up enough steam to live more than ten years. I think I would have liked it more had there not been ridgid workplace rules from a bygone era. I was a programmer built for efficiency and speed and sitting at my desk for a mandated nine hours a day just didn't make sense for motivating those engines. Perhaps it was a bad thing being so devilshly fast and decent, because things were implemented that were dreamed about, and sometimes dreams should not live in reality. Hell I even created an embedded language and recursive descent parser for manipulating content presented or emailed based on data and variables of constituents. I called it `Merlin` short for "Molecular Embedded Rule Language and Interpreter". That was one of my crowning moments as it was a boon to the sale of the company later on and was the correct solution to a business need at the time. It had roots in those college years learning about syntax trees, tokens and grammars and some day I want to reexplore that idea. ### Handyman That SaaS company was eventually sold, and me with it in a sense. Another agency took over the project and took the faulty approach for rapid profitable gain by firing some of those engine-room programmers. The boat didn't shrink mind you. It was now at the whims and fancies of an overpowered devops engineer who thought it best we go master-master MariaDB. It wasn't. I worked 36 hours straight doing data recovery on a split brain database system all for a new leadership that had fired my compatriots and had seemingly regretted the purchase of our system. But was not bitter or upset about it. I knew it was the matter-of-fact way of things being in the real world, working with real problems for real money. Don't forget, we are all in this together, in its circular dependency kind of way. We are all insecure about our future and rely on eachother to survive. VP of Sales needs the commissions and sales so the business can meet its agenda and he can get his bonus, but thats so that the business vision can succeed as defined by the executives, who honestly are pretty decent at weighing the pros and cons of decision making for a broad business and because their noses are in the air they do sometimes see further down the road, or at least over the shoulders of other execs. You may feel like your are the antagonist to that relationship, the blue-collar programmer who just can't ever seem to explain the danger of creating an AMI while the EC2 is online, but in reality your important job as builder and maintainer _is_ important and that tug of war is important to the growth of the business. Sometimes it _is_ the right call to leave the code unrefactored because it won't see the light of day again. Nevertheless my time a the SaaS company had come to a close. I was in fact tired of the office politics as per usual, but also just needed a break. I had been programming since I was 12, every year of my life. And that life needed a break. Enter Handyman Jordan Savant. I spent the better part of a year as a handy man and remodeler. I had no real experience in it besides a semi-unrelated degree somewhere in the field of engineering. But I was decently intelligent enough and honestly had learned to learn years back so I decided to give it a shot. It was amazing. I am not going to lie. There is no better feeling than getting in your old pick up truck to go to a job site at the time _you specified_ to work with your hands. To cut lumber, trim, drill pilot holes and frame a deck or build a fence. Texas in summer is intensely hot, well over 100 degrees on average, and I loved every bit of that heat and that truck and those Milwakee tools and Home Depot receipts. Unlike software it was easy to show problems to customers. It was easy to visualize visual things. And when I built a thing, there was no arguing the amount of work and effort that went into it. Receipts were verifiable and time spent on the job site was apparant. I especially enjoyed helping the elderly with projects they had been unable to get to for years. But most of all I loved the feeling of the outdoors as my primary workspace. Unfortunately, when your a father and not a professional, professional remodeler the income is not great. I was able to make ends meet, but just barely. And during that time I let my programming skills lay idle. I loved development and software, and I loved handyman work. And it was hard to argue that one provided a better life and future for my children than the other. After one year of fence building, tile laying, construction and remodeling I decided to return to the field of engineering. ### Indie Game business aspirations and failures during my tour in SaaS Land I want to take an aside here for a short bit. There was a time during my early tenure in SaaS land that I partnered up with a college friend to do some fun projects on the side. I missed some of the projects from university, the diversity of experience and challenge. So we set ourselves up in a small room in my house to try some things out. The first thing I did was a Java based A\* Algorithm program with a fun little 2D overlay to show the path. When I showed it to him, it sparked our interest in what else we could do in that realm. We were both gamers and now that we were both programmers why not explore game development? Enter Microsoft XNA and Xbox game development. Of course we would go extreme. Our first project was nearly a year long venture building a 2D shooter in infinite space called Galactic Gunman. The [trailer for Galactic Gunman](https://www.youtube.com/watch?v=18yQNCrGzuE) is still hosted on YouTube. I think we spent more time arguing about how to organize our game library and engine and over object-orienting the entire thing into oblivion. It totally ran on PC and the Xbox, but had some stutters with memory management roots. I learned the consequences of using `new` keyword anywhere in your primary game loop. On a road trip to a "Video Game Olympics" in Rogers, Arkansas we came up with yet another idea for a game. One where you were survivors of a zombie apocaplypse standing on a roof pushing zombies off as much as you could. That [trailer for Pushmasters](https://www.youtube.com/watch?v=BlTHd1Xk_m8) shows the gameplay. It was called Pushmasters and to be honest it was a lot of fun to make because we stopped focusing on engine building and over-architecting and focused on having fun and making it fun for us and others. We essentially abandoned Galactic Gunman and moved to focus on this game only. My only goal was not to make it great but to get it actually launched to the Xbox Indie game store. And after six months we succeeded. It actually had decent reviews to boot [https://www.co-optimus.com/article/10208/pushmasters-shoves-its-way-to-xblig.html](https://www.co-optimus.com/article/10208/pushmasters-shoves-its-way-to-xblig.html). And that's what it was, it was us shoving this game into the Xbox Indie game marketplace. There was a peer review process for that by the way. Other XNA developers would review your game for how well it abided by the Xbox rules for the system. Rules for things like adhering to the main account and controller switching and pause and trial version enforcement etc. So it had a bit of a double-edged sword being reviewed by your marketplace competitors. I would sometimes get depressed reviewing someone elses dream of a game they worked hard on, knowing we were all likely doomed to the back pages of a massive catalog of trash. Game development sucks in that regard. It is a _lot_ of work, and there are a _lot_ of games. Your chances of success are beyond miniscule, almost like a minnow in the ocean, and if you want to find success there I will warn you that I experienced more indie game failures from the game development community than I could imagine. There are literally thousands of active games in development right now, all at the cost of their social lives and family lives and basically none of them will gain the success they truly deserve. But it is games after all. Importantly though was the breadth and depth of programming experience I gained doing game development. Performance matters. Memory matters. Bytes and formats matter. State machines matter. Threads matter. Entity component systems and functional programming and object oriented programming matter. Content matters. Graphics and story and dialogue trees matter. Physics matter. Vector mathematics and matrix mathematics matter. Your gonna learn those damn data structures and algorithms boys and girls! My time doing indie game development probably gave me the greatest depth of programming skills to this date and I still do it to this day. Be it a networked [Roguelike written in C++](https://github.com/jordansavant/roguezombie), or an in browser 3D shooter written in Three.js. I love it and will continue to make them. ## Modern Development So here we are today. Today I work at Lifeblue as a Craft Lead for back end development at a fast-paced, crazy agency of great repute. I work with amazing people who are the best at what they do. I am amazed at this opportunity that I have on a daily basis to continue to grow alongside coworkers and leaders who care. This journey in development has had some dark, broke, cubicle-dwelling moments and I am so grateful everyday to work where I do now. No one may ever read this which is why its the truth. Where I work is the best place to work. I am not a cog in a giant corporate machine. I work hard, we all do, and we respect each other for doing so. Modern development for me is not so much about the 1s and 0s, its about building life, a living body of work knit together across crafts and experiences that a place like Lifeblue can only create. Designers and front end developers sketch dreams on paper. Engineers create portals into other worlds of data and bring it into a user experience unlike anything else. Leaders and producers don't build what clients think they need, they craft strategies for their businesses to succeed, businesses that grow the world and improve other people's lives. Thats modern development. Find yourself a place to plug in where you can join forces with others, all equal and inspired and do something, build something together. And spice it up with a some ascii art while your at it.