Saturday, February 4, 2017

It's Been a While

   
A few years is a long time. If you don't care to listen to a ramble about what's happened in that time, skip down to the asterisks. I've finished college, had a job as a night stocker at a local grocery store, made a trip to Canada happen, moved out of my parents' place into my own apartment, and have had a job with a small web app company for almost a year and a half. I'm a legitimate paid programmer now. It started off as being a "support technician", an assistant to the guy who took customer call/emails and made changes to the database. We also had a guy doing automated testing, and they noticed my enthusiasm for the subject. After about a month when we'd worked down the support guy's backlog and ran out of stuff for me to do in that area, they moved me over to the automated testing alongside the other guy.

    It took a long time to learn all the ins and outs of the testing suite's code base, which had changed hands multiple times over the past ten years, and grown all sorts of warts. The site code has also gone through a lot of phases. This article basically describes what my job has been. But I'm a fast learner, and grew in skill quickly. One of my biggest accomplishments was an optimization in the test code's wrapper class for working with web page elements, which literally cut the test suite run time in half. Improved handling of table navigation, upgrading the suite to Typescript from an ancient JScript implementation, adding and improving many tests. Eventually the support guy and one of the developers moved on. Between me and the other tester, the other tester was moved into the support guy's role and now I'm the lead (and only) automated tester.

    More than that though, I've improved and automated the process over my time here. The test suite used to run in one giant 8-hour overnight chunk where if anything failed or stalled, nothing would get tested until we started it again. I developed an automated system in C# that listens to our existing automated system for builds - when anything new gets built, it gets pulled down to the test environment and kicks off the relevant tests. They're on a distributed queue system, where every active machine picks up the next test in the queue, also grabbing any test code that has been checked in. There's also a web UI I made for checking on the automated testing, with progress bars and such. The process is incredibly smooth now. A developer checks in code and within a few minutes to a a couple hours depending on the extent of the changes, they can look and see if everything passed or if something broke and where, without having to fiddle with the build or testing process themselves.

    It's not just test writing though. As I've improved efficiency across the board and worked down the pile of testing To-Do list, my boss has handed me a few development style tasks. If there's a bug, he'll have me look into and fix it first, only coming to him if I legitimately get stuck and he points me in the right direction, or the fix is more of a major redo of how something works. The latest task had nothing to do with bugfixing or testing at all; instead he had me develop an internal tool to track what customer databases have had what changes applied to them. Now if there's a restored or "dead" database to be resurrected, simply running a stored procedure will necromance it up to date with the rest as if by magic. Also written in C#.

*****Adventurer News*****
    So the point of that whole ramble is to say that I've learned a loooooot about programming and C# in particular over the years, especially in the past year. Now that I've gotten more adjusted to my job, I feel comfortable in starting to work on Adventurer and other projects of the evenings and weekends when I'm not unwinding or taking care of adult responsibilities. I've already retooled how Adventurer loads in content like creatures and all the way down to atoms to use XML instead of the more difficult parsing from a text file in my own unusual format. Hopefully that will make it easier for any future modders to tweak the makeup of the universe.

    Currently, I'm working on moving off of the Tao.SDL library to MonoGame. SDL's a C# port of a C++ port of a low level C library. As such, it's difficult to work with. That attached screenshot? That's an Adventurer level being loaded and displayed in MonoGame. Anyway, I do apologize for being gone so long. While I may not be able to work on this as feverishly as I used to with a third of my life being work and another third being sleep, I feel comfortable enough in starting to make a little of that remaining third about development on Adventurer again. You can follow the project on GitHub at https://github.com/Kalasen/Adventurer. Don't forget to pick up the KalaGame library as well, where I'm starting to move the bits from Adventurer that are useful in other projects I'm tinkering with.


No comments:

Post a Comment