As I work through development upgrades for the wow_auctions repository, I thought it would be a good idea to quickly reflect on the development status. This will discuss the shape of the project after the first sprint of development, the initial upgrade stage, and plans for the future.
Ultimately the first version was a success - the program was completed and it helped me to make more gold from my auctions. The following graph shows gains over time. The blue line is gold on my auction characters, orange line represents inventory on auction characters and the black line is gold + inventory on all characters.
There are a few distinct phases of the project which are reflected in the graph
Mid-April was when the first MVP version of the program came online. One of the first challenges was to maintain a record of gold, inventory, inventory value, across characters, over time. The mere ability to record and plot this was a major milestone for the project, as it became a way to objectively measure gold making improvements over time.
Overall, this is the phase where the program really showed itself to be valuable. Early in the period is where I created the concept of an alternative 'market price' which could tell me if current prices were over/under valued versus a longer trend. I also created the basic sell policy rules.
Further into the month I also created the first version of the buying policy, which allowed for a steady stream of herb buying and potion sales. I also started some optimization work; analyzing and reducing the program runtime.
This period represents an increase in holdings of 2,500g - not bad!
During this phase I was more focused on a work project, and did not continue to execute. This is why we see a long tracked line; there was virtually no usage of the program during this time.
What we do see is that I moved a lot of gold into inventory. The thinking was that inflation may eat up the value of the gold, so it was better put into items.
As work projects began to finish up, and noticing that my in-game gold reserves were getting desperately low, I resumed executing on the project. The early periods here I spend a lot of gold on characters for other things, and shuffled holdings more towards gold, herbs and potions.
The past two weeks are more reflective of the initial Mid-April to Mid-May period, where the engine is doing a lot of work. This is also where I've began to think about performance improvements and software development practices.
On the performance improvement side, I was not satisfied with the herb buying policy as I found it too conservative which limited supply. I realized that by basing market price on my auction history, I was unintentionally biasing the market price towards my own actions as opposed to a more real price.
I considered changing the program to define market price as auctions that existed in one snapshot, but not the next (if they were not due to expire). Alternatively, I decided it was easier and robust to use more general data from Booty Bay Gazette on auction values. To absorb the information in an API-like form, I needed to experiment with creating WoW addons with lua, so that I could scrape the BBG information in-game, and save it to my own addon file so that the auction program could read this market price information. I created a wow_addon github specifically for this sub-project.
Now within the past few days, with a working project, I'm turning my attention more to improving the software architecture, documentation and thought process (this!), and best practices.
While I am waiting to be onboarded onto my next work project, I'm looking to improve the project with a couple of quick wins:
In my other post I discussed some tools and methods to increase my software development expertise - https://www.ndjenkins.com/articles/professional/2020/07/07/increasing-software-development-expertise
I spent some time over past few days looking to implement CLI + Packaging + Dependency management; ideally this would use Click + setuptools + Poetry, but I am not quite understanding how these will fit together at this stage. I thought it would be best to implement CLI and dependency management that I am familiar with, and move on to other topics.
Today I'm looking to (finally) learn good logging habits, then I might work on cleaning up the script configurations.
Programming and analytics in games
Increasing software development expertise
More advice from studying omscs
Some tips for success in omscs
A new programmers reading list
Organising digital media using python
Product analytics metrics and ab tests
An overview of my market research experience
An overview of machine learning concepts
Natural language processing review 2018
Marketing segmentation approaches
Categorizing text data planning