Category: python

Chin Up motivation tracker

Chin Up is my personal motivation tracker. Every day I rate from 1 to 10 how I am feeling in certain metrics like strength, flexibility, relationships and happiness.

Home View of Chin Up

There are two types of metrics:

  • Daily - Measured every day
  • Monthly - Measured on the first of every month

It is meant to be hosted locally/somewhere free, like Heroku.

Input data every day to Chin Up

What I track

If you want the same setup I have, go to the admin screen and add these items.

Daily checklist (binary=True)

  • Vitamins
  • Coffee
  • 20 pushups for 3 sets
  • 20 squats for 3 sets
  • 8 pull ups for 3 sets
  • (a lot more, this depends entirely on what you do/want to do every day)

Daily tracking

  • Happy
    • 1 being seeing my mom with tubes coming out of her face and head
    • 10 being happiest I've ever been, nothing feels impossible
  • Motivated
    • 1 being ultra depressed not even eating
    • 10 being I did everything I needed to and more
  • Flexibility
    • 1 being no stretching in chair all day no walking around
    • 10 being I did every stretch possible and did the splits
  • Strength
    • 1 being I feel as soft as an 8 year old girl
    • 10 being I squatted and deadlifted the day before--now I can't move
  • Endurance
    • 1 being I got winded getting out of my chair
    • 10 being I jump roped for 10 minutes and ran a mile without breathing hard
  • Relationship
    • 1 being I got into a huge argument and feel terrible
    • 10 being we made dinner together and wrote each other poetry

Monthly tracking

  • Life goals
    • 1 being no progress towards goals and very depressed
    • 10 being I got a world record deadlift
  • Power
    • 1 being no physical activity
    • 10 being I ran and worked out every opportunity I had
  • Nature
    • 1 being no outdoor activity
    • 10 being I spent the entire time camping and fishing

Why?

To become the best I can be: I need motivation, I need to get my chin up.

How do you measure?

Every metric that I believe significantly effects my motivation and health will be measured on a scale from 1 to 10. If there is something significant to note, I'll put that down as well. However, the main goal is to motivate myself through numbers and statistics.

1 being the worst, least effort I could possibly put in and 10 being the best, most effort I could possibly put in.

Ease of use

django-pin-passcode screen

To make it easier to use, I made a simple app and threw it on pypi called django-pin-passcode. It logs you in to the user you define after you enter a certain passcode composed of 0-9 and #.

Stats

highchart stats

  • Month to month - Average for the entire month
  • Week to week - Average for the entire week
  • Day of the week - Average for that day of the week for the last year
  • 7 day - Last 7 day simple
  • 30 day - Last 30 day simple

Correlations

Correlations

Thanks to numpy I added really quick correlations between metrics, it's pretty ugly but it will tell you what metrics might positively/negatively correlate to each other.

— 04 May 2014
…discuss this

Python Interview Tests

I have been applying to a lot of jobs lately and I've done quite a few "prove you know what's up" tests and projects. I think it might be a good exercise to go over them in my head and talk about how everyone could win from these tests.

Note: this write up is meant for remote development work!

When are employment tests good?

I think tests for entry level/junior positions are necessary to prove:

  • Understanding of fundamentals (list, tuple, etc.)
  • Experience with testing (nose, pywebtest, selenium)
  • Experience with an ORM/SQL
  • They are a self-starter and motivated

When are employment tests not as helpful?

If the position you are trying to fill is for an expert or senior level position that applicant should already have ample code samples and open source contributions to go through. I don't think it's necessary to check for fundamentals in this situation. It'd be more important to me that the person is a good fit personality wise for the team.

For a senior position it might be more valuable to give them a problem and ask how they would organize a team to solve it? Not sure, I'm still a Junior!

Two heads are better than one
Photo by JISC

What are useful takeaways?

A good employment test should give the interviewee an opportunity to showcase their skillset.

For example, if testing someone for a Django/Python environment:

  • They understand the WSGI-way of building web apps, django views vs class based views, mixins, etc.
  • They should be able to write unit tests and functional tests with selenium
  • They should be able to do queries with the ORM and build models
  • Given very specific instructions, they should be able to finish the test in a reasonable amount of time.
  • Give opportunities to showcase something interesting

A good experience I had

In one test I made up a set of models and as a bonus the employers asked me to write up a strategy to test the models.

Not only does this give me an opportunity to strut-my-stuff, but it makes the problem just a little more interesting. I started to open up my brain and think of ways to test the code which made me think more clearly about the overall architecture—and it was fun!

A bad experience I had

If your interviewee is completely baffled by the test because it's so specific and they could solve the problem using their own tools: that is a bad experience for everyone. Valuable time is soaked up during the test Googling how to use library X and framework Y.

Instead, the applicant should be encouraged to use whatever strategy they see fit to solve the problem and then they should be tasked with explaining why they chose that route. Often times when you meet someonew new, they have a few tricks up their sleeve you may have never seen before!

Another bad experience I had

The test was super vague, as if the person who wrote the test didn't care much about the end result. It bothered me that there was a one paragraph explanation and so much openness. No real time limit, no concrete goals. Also, when I asked for more details it took almost a week to get a response. The lack of response made me lose interest in that position.

Coder
Photo by Matthew Roth

What are less useful takeaways?

  • They know how to do some obscure binary arithmetic.
  • Large chunks of the test not entirely related with the position's description, like applying for a Python position but being tested on ASP.
  • Solving a problem within very particular restrictions.

When testing an employee for remote work

Do

  • Be super organized and descriptive.
  • Leave the interviewee alone, only a few questions should be asked. If you are too available it might get the interviewee out of the creative headspace and into the follow-the-leader headspace.
  • Test internally first, if no one else can pass your test then it may be too obscure.
  • Take as many parts of setup out of the equation as you can: git vs mercurial, database fixtures. Allow the interviewee some latitude to solve problems.

Don't

  • Change/improve instructions during testing, it breaks focus and uses up valuable nervous energy.
  • Put off answering interviewee questions.
  • Put short time limits, give them a way to prove speed but at the same time architect something nice.
— 01 May 2014
…discuss this