I mentioned in my last post (and a couple others) how invaluable my wife has been in my journey to learn Python. That was turned up to 11 last week and I (we) started working on the scoring calculations.
I started to write the scoring calculations exactly as you would expect a newbie coder to – step by step. With the changes to the data model Kelly recommended, I still have a hard time wrapping my head around how we’ve abstracted the pick information.
NFLPool has been live for almost two weeks – and hasn’t crashed (yet!) After the rush to get the site up and allow a user to make their picks before I left on vacation, there is one more large chunk of work to get to 1.0 release: calculate the score for all players every week of the NFL season.
I spent all of last week in the middle of Minnesota at a friend’s cabin.
It’s been a long journey, but the first release of NFLPool is now live at NFLPool.xyz.
We’ll call it a 0.5 release. Features include:
New installation service: Upon starting the Pyramid app for the first time, the database and all of its tables are created. I’ve built an admin panel where the administrator log into and kicks off the installation service: Downloads all of the team information from MySportsFeeds including NFL team names, conference, and division information and inserts it into the database.
We’re a day away from launch. The NFL season starts in just over three weeks and players will need to submit their picks for NFLPool for the 2017 season. The majority of the picks won’t come until days before the season kickoff, but it would be nice to iron out some bugs… like the last one that might prevent me from launching for a few more days (but more on that later).
I’m not even sure where to start from last update on Friday. The last 48 hours have been a roller coaster of up and downs of getting stuck and then figuring it out.
After completing the the functionality to create a new installation and add a new season to NFLPoo (or update to a new season) l, I needed to start working on letting a user make their picks for the new season.
I came across a thread on /r/LearnPython a few weeks ago that summed up my experience with Python. The thread was the typical “I’m learning Python, but I feel stuck and I’m not learning”. Someone replied with encouragement, and pointed out that studying Python is very different than learning Python and how it works.
I can relate. It’s been just over a year since I started down this path and almost two years (where does the time go!
I took the week off from work to see how much progress I could make on NFLPool this week (and to get some stuff done around the house, but really, for NFLPool). I told myself I’d blog my progress every day and here it is Wednesday already.
In my last blog post, I noted how I was going to have to move back to SQLite for the database. Over the weekend I ripped out most of the MongoDB code and started laying the groundwork for SQLite.
Yesterday was a good day.
With the static pages for nflpool.xyz complete, I started thinking about the dynamic pages. These are going to require access to the database and I’ll be using MongoDB. I had started the MongoDB course from Talk Python, but put that aside to go back to the Python for Entrepreneurs course to get the site up using Pyramid.
I took a step back and did some brainstorming about the data model I’ll need for the database.
One of the things I’m not doing well is focusing on one task at a time. As I continue to learn Python, every time I across a way to do something, I want to implement it right away without thinking ahead of how all the different things work together. Then I’ll get stuck, and frustrated, and my pace slows.
I need to find a task, stay on target, and just finish it, rather than jumping from feature to feature.
I followed through on my last blog post and made a lot of progress over the weekend – the best way to learn is by doing. I’ve updated my roadmap for nflpool and broke the development of the nflpool app into chunks:
0.1: Database creation complete – write the Python code and SQL statements to create all the needed database tables using sqlite3. This includes using the requests module to import all players in the NFL into the database from MySportsFeeds.