Index | Archives | Categories | Tags | Atom Feed

Heart Rate Trackers

Recently I acquired one of the new fitbit alta HR bands, mainly because it promised to track my heart rate 24/7 without the need to wear any chest strap.

I always expected this to be less accurate than a chest strap, but how much less? I also happen to have a Polar H10 chest strap (which I use when running), so I decided to record with both for an extended period today.

The results are below (click for the full image):

Chart showing heart rate as measured by Polar H10 vs fitbit alta HR

The fitbit is in blue, the Polar strap in green. There are a few gaps in the data for the Polar strap because I recorded in parts with an app on my phone, which ran out of batter at some point.

Interestingly enough the fitbit actually overestimates my heart rate. If anything, I'd have expected the opposite, because it's easier to miss heart beats with an optical sensor …


Linux on the Alienware 13 R3 (2017)

I recently bought a new laptop because my trusty old Thinkpad (x230) finally got a bit too old for my taste (apart from the battery it still works perfectly though!).

After a lot of searching around and gnashing of teeth - how can current laptops be barely faster than my 4 year old Thinkpad?! And what do you mean, the laptop comes with at most 16 GB of RAM and I can't even upgrade it?!

Finally, I settled on the Alienware 13.

As a gaming laptop, it has a quad core i7 - 7th gen Kaby Lake - and a great GPU, the GTX 1060. 3.5 TFlopscache in a laptop! Since I'm partial to a bit of machine learning, that kind of performance was very enticing. It's also fully upgradeable - 2 m2 slots for SSDs, as well as 2 SO-DIMMs for RAM.

Additionally, the Alienware 13 comes with a stunning OLED …


Error handling with Status(Or)

I just read an article linked on Hacker News advocating the use of Either<L, R> to signal errors in functions. While I think this is a good start, in my experience Either is too general, the lack of standardizing of the error value makes error handling abstractions hard. How did that file function signal again that a file was not found?

What works a lot better in my experience is a more specialized type Status, with a standardized enum of error codes and a free form error message.

Here's an excerpt from the Status type we use at Googlecache:

enum Code {
  OK = 0,
  CANCELLED = 1,
  UNKNOWN = 2,
  INVALID_ARGUMENT = 3,
  DEADLINE_EXCEEDED = 4,
  NOT_FOUND = 5,
  ALREADY_EXISTS = 6,
  PERMISSION_DENIED = 7,
  UNAUTHENTICATED = 16,
  RESOURCE_EXHAUSTED = 8,
  FAILED_PRECONDITION = 9,
  ABORTED = 10,
  OUT_OF_RANGE = 11,
  UNIMPLEMENTED = 12,
  INTERNAL = 13,
  UNAVAILABLE = 14,
  DATA_LOSS = 15,
};

class Status {
public:
  ...

  bool ok() const;
  int error_code() const;
  StringPiece error_message() const;

  ...
}

This …


Tea

Tea has become my favorite beverage, bar none.

With flavors stretching from light and sweet white and yellow teas all the way to dark and earthy pu-erh, no other drink can match its variety of flavor.

Best enjoyed freshly brewed from whole leaves in a small pot, you need very little to start drinking great tea.

  1. Some hot water, from a kettle or pot, doesn't matter.
  2. A tea pot or infuser with lots of space for your tea to expand, see mine as an example: my tea pot
  3. Loose leaf tea!

Some of my favorite tea includes:


Work Rules!

Work Rules! is the title of a great book by Laszlo Bock, SVP of People Operations at Google.

It's a pretty accurate portrait of life at Google (at least from what I've seen over the last three years), and at the same time it is a great guidebook for companies that haven't yet come as far along the path of employee empowerment.

If you are in any way involved with work - be it employer or employee - this is a must read, with lots of practical advice on how to improve your organization (and your life!). It may also give you a bit of an idea of why I consider Google such a great place to work, probably the best I've seen so far anywhere.


WaniKani on Anki

WaniKanicache has long been my favorite way of studying Kanji, but I've always disliked the need to type in every single reading and meaning. At 300 reviews a day that's a lot of typing!

Today I finally had enough. First I considered making a user script for WaniKani to make it work a bit more like Anki (where you don't type the answer at all, you simply indicate how well you knew it with one tap). But then I realized that I might as well just use Anki directly.

I quickly found wanikanitoanki.comcache, which is great to export all Radicals, Kanji and Vocabulary and has really nice Anki templates too. Alas, the exported data didn't include the critical mnemonics! Presumably because these aren't returned by WaniKani's API.

Luckily, WaniKani is almost trivial to scrape:

import requests
from bs4 import BeautifulSoup

s = requests.Session()
login_page = BeautifulSoup(s.get …

Usability Testing on 10 Cents a Day

I just read Steve Krug's Don't Make Me Think and while I really liked the whole book, what especially stuck out was the chapter on usability testing as often as possible.

It doesn't need to be an expensive or time intensive process - just grab 3 people for 45 minutes each, pay them 50$, show them your website or app and ask them to use it while thinking aloud. Maybe give them a few simples tasks to do.

Repeat this process regularly - say once a month - and you should be able to catch a significant fraction of the usability problems on your site very cheaply.


Standing Automation

I've had a standing desk at work for a long time, but I've always felt that I wasn't using it enough, that I still spent most of my timing sitting.

This week I finally decided to do something about it.

LV-MAXSONAR-EZ1

I bought a small sonar sensor (LV-MaxSonar-EZ1), hooked it up to an Arduino and added a little Python script to sample the sensor once a minute.

The sonar is mounted to my table and measures the distance to the floor, and with ~3 cm accuracy it's very easy to distinguish whether I'm sitting or standing.

Since the Sonar happily runs of 5V, I just connected its power input pins directly to the VCC and GND pins of my Arduino. Conveniently it also provides the measured distance as analog voltage on a pin, I just connected that to A0 on the Arduino.

The Arduino code to regularly sample the sonar is …


Big Problems

After having been sidetracked by AlphaGo for nearly a year, I finally had some solid thinking time for myself today. Mostly inspired by an interview with Yanis Varoufakiscache and a remark he made about why we need basic income, I started thinking about the big problems our world has and what I can do about them. These are from my perspective as a privileged first world citizen in the 1%, my aim is to identify the steps that are necessary to bring us to the next level as a species.

As an example - there are two ways you can solve global water shortage due to farming. Either try to work with farmers locally in each case and try to help them become more sustainable, or make nuclear fusion production ready, desalinate water on a large scale, grow crops underground with LED lightingcache where they are needed. This post …


Distractions

Reddit, Hacker News, Tumblr, Twitter, Imgur, Netflix, YouTube. The onslaught of pseudo information and conversation is relentless, it's easy to get lost in the comments. Feeling as if you are learning a something new all the time, a little gem in every post.

Somewhere along the way our natural curiosity and joy of learning has been hijacked and we waste away our lives reading and responding to useless chatter that seems useful and educating.

Every spare moment is filled by a quick glance to our smartphones, no time for thought and introspection left at all. Yes, that one post was very entertaining and spending half an hour reading all the comments sure felt interesting, but at the end of the day, what did you actually learn, what will you remember of it tomorrow?

Maybe waiting for five minutes on the tube with nothing to do but let your thoughts run …

© Julian Schrittwieser. Built using Pelican. Theme by Giulio Fidente on github. .