Starting the challenge

Tomorrow I start the #100DaysOfCode challenge with Python, working through Talk Python's #100DaysOfCode in Python course and writing up each day here.

The plan

  • Code every day for 100 days
  • Follow the course's 33 three-day modules, from datetimes and collections through to Flask, databases and GUIs
  • Post a short write-up here each day: what I did, what I learned, and the code

What the course covers

The course is taught by Michael Kennedy, Bob Belderbos and Julian Sequeira. The opening "sampling of what we'll cover" lecture gives a taste of the ground it covers:

  • Python fundamentals: collections, lists and dictionaries
  • Reliable code: testing with pytest, proper error handling, and logging to keep a history of what an app has done
  • Object-oriented programming: building a Dungeons and Dragons style game with classes and inheritance
  • Data from the outside world: JSON, calling JSON-based web services, web scraping (turning any HTML page into a data source) and RSS feeds
  • Automating services: the Twitter and GitHub APIs, and sending email
  • Automating the desktop and web: programming against Excel, and driving a browser with Selenium to log in, navigate and click buttons
  • Web apps and databases: Flask (probably the easiest way to write a web app in Python), the built-in SQLite database, and the SQLAlchemy ORM for mapping classes to database tables
  • Data visualisation: graphs with Plotly, with about a quarter of the course presented in Jupyter notebooks
  • GUIs: cross-platform desktop apps for Windows, Linux and macOS in just a few lines of code
  • Building APIs: extending Flask to create my own API and put it on the internet

That's only part of it. There are 33 modules in all, three days each.

Flask is the one I've already had a head start on, because this blog is a Flask app. Each post is written in Markdown, and Frozen-Flask turns the site into static pages hosted on AWS.

The grid on the home page fills in as each day gets logged.