About Rick van Hattem (Wolph)


My name is Rick van Hattem (nickname: Wolph, hence the domain name). For the last couple of years I have been working on a couple of startups, more recently I have decided to take a step back and do some consultancy to do research for my next startup.

My main areas of expertise are currently:

  • Scaling systems with large amounts of data and/or users
  • PostgreSQL
  • Python
  • Django

Mastering Python, the Python 3.5 and above book I wrote for experienced Python programmers to improve their skills:

For more info about me and my projects:

The things that interest me are mainly the big/difficult problems, the more difficult a problem is the more fun I’ll have solving it.

Bookmark and Share

16 Responses to “About Rick van Hattem (Wolph)”

  1. Anshu Kumar | 2016-07-18 at 08:42:01 #

    Hi Rick,

    I was going through your wonderful book, mastering python.

    I think when you are explaing “Beautiful is better than ugly” in Chapter-2

    filter_modulo = lambda i, m: [i[j] for i in range(len(i))
    if i[j] % m]

    It looks like a nit, for loop should iterated with variable “j”.

    Thank You,

    • Rick van Hattem | 2016-07-18 at 09:07:23 #

      Hi Anshu,

      You are indeed correct. While rewriting that code sample (I switched from i and j to items and modulo) it seems I have forgotten to modify that sample as well.

      The sample should be either:

      filter_modulo = lambda i, m: [i[j] for j in range(len(i)) if i[j] % m]


      filter_modulo = lambda items, modulo: [items[i] for i in range(len(items))
                                             if items[i] % modulo]

      Thanks for letting me know. I’ve added the correct code samples to the repository: https://github.com/mastering-python/code/commit/f7ec4fc2480614ea8369f7d27a99b22046e2a780

      Best, Rick

  2. Mark London | 2017-02-25 at 02:58:48 #

    Can your “Django Tags Input” module be used in front end user forms in django, rather than the admin page? K.s

  3. Tom Deg. | 2017-05-05 at 22:13:48 #

    Hi Rick

    First, many thanks for your numpy-stl module. Most helpful. I have one suggestion to make:

    The only rotation you have enabled in your code is around an arbitrary axis (and a point), which is super helpful. I understand that you are using the rotation_matrix function which calculates the appropriate rotation matrix, which you then use to rotate the stl.

    I would find it very useful (and powerful) to provide a second function that would allow a rotation around a user supplied rotation matrix.

    What I am thinking is this:

    rollMatrix = mesh.Mesh.rotation_matrix((1,0,0), heel_rads)
    pitchMatrix = mesh.Mesh.rotation_matrix((0,1,0), pitch_rads)
    combinedMatrix = numpy.dot(rollMatrix, pitchMatrix)

    This would allow for very easy chaining of matrices.

    The work-around is very easy, but this seems like a really quick and useful addition…

    Kind regards,


  4. Bob | 2018-01-10 at 15:48:03 #


    Just wanted to say thanks for python-progress bar, it’s very nice

  5. Pinchas Weisberg | 2018-01-30 at 10:13:40 #

    I am trying to use portalocker in order to lock a file written to by a few processes:

    with open(timing_filename, ‘a’, 1) as timing_file:
    portalocker.lock(timing_file, portalocker.LOCK_EX)

    However, some lines are skipped, it seems the locking is NON blocking or there is a short timeout.

    Thank you, in advance, for any help you can give me.

    • Rick van Hattem | 2018-01-30 at 13:13:54 #

      The problem is (most likely) that you are opening the file in append mode before locking it, which means that your position within the file is decided before the file is locked. If someone writes something in the mean time your script won’t notice that.

      To resolve this you can simply seek to the end after locking: timing_file.seek(0, os.SEEK_END)

  6. Grov | 2018-11-05 at 14:40:29 #


    Since when have you been using my wolf avatar?


    • Rick van Hattem | 2018-11-05 at 15:30:39 #

      I’ve downloaded it about 15 years ago from a website that had free to use animated gifs. Did you make it at some point?

  7. Grov | 2018-11-08 at 16:41:58 #

    It was made for me as a gif about 16 years ago and i have been using it ever since. Xan you remember which website you got it from?

  8. Isaac | 2018-11-10 at 18:03:30 #

    It is exactly the same

  9. Johan van der Veen | 2019-01-27 at 11:14:01 #

    Hi Rick,

    Is there any SW update available for the RT68U router with the Mesh functionality?
    I have a Mesh configuration but still see a lack of transmission power.
    My current Router software version is

    I hope you can help me just a little

    • Rick van Hattem | 2019-01-28 at 10:24:22 #

      I think your best bet is to change your location to one that allows for a lot of transmit power. Beyond that the new firmwares are limited in terms of transmit power

Leave a Reply