I want to include mypy as part of my CI pipeline but my existing code contains a lot (> 100, but < 500) of issues. How can I get started?

Create a minimalist configuration of mypy such that it will list issues that need to be fixed and return a non-zero exit code. Based on the problem definition, we assume that at this step you have more than 100 issues that are listed and that fixing those issues will take many hours you'd rather invest in improving the code than to fix typing issues.

Add a step in your CI pipeline that runs mypy and list all those issues. Verify that it indeed breaks the build.

Once you've satisfied yourself that CI fails, we will "fix" the mypy issues by adding the #type: ignore and/or # noqa comment after the offending lines with issues. This will have the effect of resolving all the currently found mypy issues, such that mypy should now return a zero exit code. With this, any future code that fails to pass the mypy check will break the build. This will allow you to use mypy from this point forward to check your types.

I suggest adding an additional comment such as # FIXME: TICKET-ID, where TICKET-ID refers to the id of a ticket in your issue tracking system that explains that you need to take care of this technical debt.

Always prefer to fix the issues instead of ignoring them. However, also consider whether fixing those issues is an appropriate use of your time when you want to introduce mypy (which should be as soon as possible in my opinion).

24 Feb 2020

Rotten Tomatoes ratings exporter

History / Edit / PDF / EPUB / BIB / 1 min read (~129 words)
problems php

I have rated a lot of movies on Rotten Tomatoes and I'd like to export them to a text format. I also know PHP. How can I do that?

In 2013 I wrote Rotten Tomatoes ratings exporter for the purpose of exporting the movies I had rated into a format I could read and also store.

To automate the process of acquiring the ratings, I wrote a small class which needs information available in the site's cookies once you are logged in. With this information in hand, it is then possible to fetch the ratings from the website and store them in any desired format, given that the data returned to you is a plain PHP array.

  • Define the audience
  • Define the purpose
  • Define the assumptions
  • Provide a way to contact the author
  • Provide a way to ask additional questions
24 Feb 2020

The definition of value in business

History / Edit / PDF / EPUB / BIB / 1 min read (~126 words)
questions

How is value defined in a business context?

For a solution to be valuable it must solve an actual problem.

If a need exist for the solution, then the solution must do one or many of the following:

  • Reduce costs/time: reduce human resources needed to produce the same results
  • Increase quality: Increase accuracy/repeatability of a process
  • Solve a problem that could not be solved previously
  • Have a significant impact on costs for improving an already solved problem
  • Offer the ability to scale the process without having to scale the necessary human support linearly with the growth of the process
  • Help with identifying the most important pieces of the business in order to follow the 80/20 principle
23 Feb 2020

IMDb ratings importer

History / Edit / PDF / EPUB / BIB / 1 min read (~182 words)
problems php

I have movie ratings that I would like to import into IMDb. I also happen to know PHP. How can I do that?

In 2013 I wrote IMDb ratings importer for the purpose of importing ratings I had created in another system (Rotten Tomatoes). I wanted to import my ratings into IMDb so that I could use their statistics reporting tools, which let you see your distribution of ratings and the distribution of the release year of the movies you've seen. A friend of mine also had his bot send a message to our discussion channel whenever one of us would update their ratings after watching a movie.

The library is pretty straightforward. It expects you to provide it with a string that uniquely identifies your cookie on the server side. With an array of all the titles and ratings that you have, you can submit those ratings and the library's importer will take care of calling IMDb by finding the closest movie title and assigning it the desired rating.