The first half of the GSoC coding period is almost over, and this first entry to the developer journal has been long overdue. I’ll get right to the point:
Schedule
I have fallen behind on the schedule I had proposed. Partly due to bad judgement, but mostly as my university academic schedule got super hectic because of COVID.
Progress
Over the last month, I have
  - Read through a large part of the codebase to understand the general lay of the land
 
  - Made a new YAML based configuration system:
Configuration was earlier stored in a file, as valid Python code, which was then basically passed to 
exec
 to read all the settings in.
Now, configuration is stored in a YAML file, that is read and parsed. 
  - Migrated away from pycurl:
Pycurl code is tough to read and maintain; we now use 
httpx (which comes with the added advantage of asyncio support) 
Plans
Next, I’ll move on to
  - Updating the CLI code (maybe use something like the 
click library instead of stdlib argparse) 
  - Update the multiprocessing engine 
 
  - Migrate to loguru:
loguru is an alternate logging library that is simpler to use than the stdlib 
logging, and gives prettier outputs. The codebase has a mix of logger.log and plain old print statements, so I’ll also standardize them (and only use the logger) 
Roadblocks
  - Getting smashbox itself running was quite difficult, I probably wouldn’t have been able to do it without the mentor’s explaining how to do it first. The existing README instructions have some out-of-date instructions. This could potentially be improved in my project; maybe also releasing a Docker image would make it easier to get started?
 
  - Working with a Python 2 codebase has been more difficult than I anticipated. I find myself constantly reaching for the documentation to find what some old deprecated function did so that I can find modern equivalents.
 
Hoping for an even more productive month of coding ahead! 🤞