Marco Altini
  • Home
  • Research & Publications
  • Apps & Projects
  • Blog
  • Substack

Heart Rate Variability Logger - app details

12/12/2013

39 Comments

 
Picture
Heart Rate Variability Logger is an app I developed to record, plot and export time and frequency domain Heart Rate Variability (HRV) features (as well as heart rate and RR intervals). The app is available for iPhone. This post is a short user guide where I cover in more detail the different features and some implementation choices.


App features:
  • Extracts, plots, stores and exports heart rate, rr-intervals, time and frequency domain heart rate variability features (AVNN, SDNN, rMSSD, pNN50, LF, HF, LF/HF) 
  • Configurable experience sampling for events annotation 
  • Comparison between up to 3 recordings lets you get a better understanding of autonomic regulation and sympathetic/parasympathetic activity under different contexts in a glance 
  • Step counter or accelerometer derived motion intensity for user context and activity tracking (step counter only for iPhones 5S) 
  • Location tracking (lets you select between either GSM/WiFi to save battery power or GPS for high accuracy)
  • Lets you filter data based on custom thresholds
  • Shows heart rate in the app badge
  • Configurable time window for features computation (choose between 30 seconds, 1, 2 or 5 minutes) 
  • RR-intervals correction can be enabled to prevent ectopic beats or artifacts from affecting HRV features 
  • Data export using iTunes or Dropbox 
  • Tested for recordings longer than 24 hours 

I tried to cover also most of the questions that I got by email in the last few months. Please comment or email me if you have other comments or requests for future versions. More specifically, the post covers:

1. Introduction on HRV and applications
2. Hardware requirements
3. Quick start guide
4. Data acquisition and signal processing pipeline
5. RR-intervals correction
6. Features extraction
7. Data export and format

1. Introduction on HRV and applications

The cardiovascular system is mostly controlled by autonomic regulation through the activity of sympathetic and parasympathetic pathways of the autonomic nervous system. HRV analysis attempts to assess cardiac autonomic regulation through quantification of sinus rhythm variability. The sinus rhythm times series is derived from RR intervals (R peaks of the QRS complex derived from the electrocardiogram (ECG)), by extracting only normal (NN) intervals. 

Since HRV aims at quantifying autonomic regulations, it can be used as marker of sympathetic or parasympathetic predominance, and therefore become relevant in many applications. In athletes for example [1] heavy training is responsible for shifting the cardiac autonomic balance toward a predominance of the sympathetic over the parasympathetic drive, and HRV analysis attempts to quantify this shift (see this post for more on HRV for training). 

Other applications span from stress monitoring during public speaking [2] or daily life [3], assessment of pathological conditions [4] and even emotional regulation during financial decision-making (trading) [5].

If you are new to HRV, check out our Ultimate Guide to Heart Rate Variability (HRV).

2. Hardware requirements

Heart Rate Variability Logger requires a Bluetooth Low Energy (also called Bluetooth Smart or BLE or 4.0) heart rate monitor. Personally, the most reliable I tried is Polar's H7 which we also validated in this paper. The first iPhone to support BLE was the 4S.

3. Quick start guide

Open the app, and push the Bluetooth icon to connect to your heart rate monitor. No pin or passcode is required to connect to Bluetooth low energy monitors, the only thing you need to do is to turn on your Bluetooth radio. The app will prompt you in case your Bluetooth radio is off. Once you are connected, the real-time view will be enabled and HRV logger will start processing RR-intervals and computing features. More details in this slideshow (includes info on experience sampling, activity and location tracking):

4. Data acquisition and signal processing pipeline

The following block diagram represents the signal processing pipeline implemented in HRV logger. The single blocks are explained in more detail in sections 5-6.
Picture

5. RR-intervals correction

RR-Intervals correction prevents artifacts due to ectopic beats or motion from affecting features computation, as often reported in literature for HRV analysis. 

It is advised to keep RR-interval correction to 20%, meaning that every RR-interval which differs by more than 20% from the previous one, will be discarded. HRV Logger provides three options, the correction can be completely disabled, in case you are interested in looking at PVCs or other events. By default the correction is set to 20%. The third and last setting is 50%, which is a less aggressive correction, since every RR-interval which differs by more than 50% from the previous one, will be discarded. 

6. Features extraction

The time window used to compute features can be configured choosing between 30 seconds, 1, 2 or 5 minutes. Windows of at least 2 minutes should be used when using low frequency features (LF) [2]. Given the non-constant frequency at which RR-intervals are received, a buffer of RR-intervals is used to collect 30 seconds to 5 minutes of data, on which features extraction is executed.

The following features are extracted from RR-intervals:
  • Mean of beat-to-beat intervals (AVNN),
  • Standard deviation of beat-to-beat intervals (SDNN), 
  • Square root of the mean squared difference of successive RRs (rMSSD),
  • Number of pairs of successive RRs that differ by more than 50 ms (pNN50),
  • Low frequency power (LF, 0.04-0.15 Hz),
  • High frequency power (HF, 0.15-0.40 Hz),
  • Low to High frequency power ratio (LFHF).
Additionally, Motion Intensity is computed from accelerometer data.

The term NN (e.g. AVNN) is used instead of RR to emphasize the fact that the beats used to extract HRV features are sinus beats (this is also why it is important to keep the RR-interval correction enabled). Assuming we have $n$ beats in our buffer:

RR-intervals
Time-domain features
AVNN, mean of NN intervals:
\[AVNN = \frac{1}{n} \sum_{k=1}^n NN_k\]
SDNN, standard deviation of NN intervals:
\[SDNN =\sqrt{\frac{1}{n} \sum_{k=1}^{n} (NN_k - AVNN)^2}\]
where AVNN is computed as above.
rMSSD, square root of the mean squared difference of successive NN intervals:
\[rMSSD = \sqrt{\frac{1}{n-1} \sum_{k=1}^{n-1} (NN_{k+1}-NN_{k})^2}\]
pNN50, number of pairs of successive RRs that differ by more than 50 ms
The difference between beats is calculated as above:
\[NN_{k+1} - NN_{k}\]
Then, if $n50$ is the number of beats for which we have a difference greater than 50 ms ($(NN_{k+1}-NN_{k}) > 50$), pNN50 is computed as:
\[pNN50 = \frac{n50}{n} 100\]

Frequency-domain features
Since RR-intervals come at non-constant frequency, they are linearly interpolated before frequency analysis. After interpolation, a hamming window is applied before performing the FFT. 

Accelerometer
Motion Intensity
Motion Intensity (MI) is computed after filtering the accelerometer data to remove the static effect due to gravity (basically isolating dynamic movement only). Accelerometer is sampled at 2Hz, to prevent battery drain. Assuming $n$ filtered accelerometer samples, MI is computed as follows:
\[MI = \frac{1}{n} \sum_{k=1}^n ACC_{k}  \]
where $ACC_{k}$ is the sum of the absolute signal over the three axis:
\[ACC_{k} = abs(ACCx) + abs(ACCy) + abs(ACCz) \]
MI should be use simply to get an indication of the user movement when carrying the phone. Especially in situations where HR and HRV can be affected by both movement and stress, it can help in acquiring more context.  


For iPhones 5S motion intensity is replaced by the actual steps taken, computed using the M7 co-processor. 

Location Tracking
Location tracking is available since version 4.0. By enabling location tracking you can add even more context to your HRV recordings. If coarse location information is sufficient, do not enable the high accuracy location tracking, since it will drain more battery (uses GPS).

7. Data export and format

Data can be exported either by connecting your iPhone to iTunes, or by connecting HRV Logger to your Dropbox account. Four files are exported for each recording:
  • date_HR_recording_name.csv. download example.
  • date_RR_recording_name.csv. download example.
  • date_Features_recording_name.csv. download example.
  • date_Events_recording_name.csv. download example.

All files are in csv format, making it easy to import them in other tools. The example files include approximately 2 hours, split in half sedentary and half running.

References

[1] Aubert, AndrĂ© E., Bert Seps, and Frank Beckers. "Heart rate variability in athletes." Sports Medicine 33.12 (2003): 889-919.
[2] Kusserow, Martin, Oliver Amft, and Gerhard Tröster. "Analysis of heart stress response for a public talk assistant system." Ambient Intelligence. Springer Berlin Heidelberg, 2008. 326-342.
[3] Vrijkotte, Tanja GM, Lorenz JP van Doornen, and Eco JC de Geus. "Effects of work stress on ambulatory blood pressure, heart rate, and heart rate variability." Hypertension 35.4 (2000): 880-886.
[4] Nolan, James, et al. "Prospective study of heart rate variability and mortality in chronic heart failure results of the United Kingdom heart failure evaluation and assessment of risk trial (UK-Heart)." Circulation 98.15 (1998): 1510-1516.

[5] Fenton-O'Creevy, Mark, et al. "Emotion regulation and trader expertise: Heart rate variability on the trading floor." Journal of Neuroscience, Psychology, and Economics 5.4 (2012): 227.
[6] Berntson, Gary G. "Heart rate variability: Origins, methods and interpretive caveats." Psychophysiology 34 (1997): 623-648.
39 Comments
Leo
7/2/2014 11:55:36 am

Dear Marco,
first of all I wanna say thank you for your useful
and perfectly made App.
I just wanna suggest that you include an App badge count showing the real time HR on the App icon and that the X-axis of the various charts reports the related time.
Thank you again e grazie,
Leo

Reply
mihryazd
13/2/2014 10:59:30 am

Dear Marco

How accurate is the PSD results relative to Kubios software or Matlab?

Reply
Marco Altini
13/2/2014 04:03:21 pm

I am not familiar with Kubios but all steps implemented in iOS for frequency analysis are manually implemented (linear interpolation, hamming windowing) except for the FFT which is performed using iOS libraries. Everything that I manually implemented was double checked against MATLAB interpolation and windowing functions.

The steps are the following, and might differ in other implementations:
- get all RR intervals in a time window (I keep all this values in milliseconds)
- interpolate RR intervals at 4Hz (so 1 point every 250 ms, this is necessary since RR intervals are not evenly spaced in time, and we need evenly spaced data in order to perform frequency domain analysis)
- remove the DC component
- at this point I convert into seconds
- compute hamming windowing on the time series I've got from previous steps
- perform FFT
- compute frequency power for the 2 bands of interest (LF and HF).

Reply
David Coneff
6/3/2014 02:07:59 pm

I know this post is old, and you've probably moved on to bigger things since this app.. but have you thought about adding a poincare plot of the LF/HF?

From what I've read on HRV (not much), the shape of the poincare plot for LF vs. HF is an easy visual indicator of high vs. low stress (I forget which.. but I think high stress is a more oblong oval along the ascending y=x axis).

There is only one app in the playstore that I can find that does a poincare plot, and it unfortunately only supports older heart rate monitors, not the newer BLE 4.0 like the Jarv that have a long battery life.

Reply
Marco Altini
6/3/2014 03:20:00 pm

Thanks for the suggestion David. As far as I know Poincare plots should be used to plot RR intervals at time n against RR intervals at time n+1. The shape of the plot can be indicative of various factors (from disease to most likely stress as well). Anyway, I'll see what I can do. Thanks again!

Reply
Adrian Corella
9/3/2014 07:21:38 am

Marco, just downloaded your HRV logger app for Android. So far working great. However, could you please change the naming scheme of the files so that they can be fully compatible with Dropbox? Currently the time uses a colon, which produces problems with Windows. See: https://www.dropbox.com/help/145/en
Thanks!

Reply
Marco Altini
9/3/2014 05:30:58 pm

Hi Adrian, I overlooked the time format (which indeed includes a colon), thanks for pointing it out. I've just uploaded a revised version.

Reply
Amanda
16/7/2015 02:30:17 am

Hi Marco, I would love to be able to check out the android version of this App. Is there somewhere I can download it?
Thanks!

Reply
serg
12/3/2014 09:13:23 am

does it work with http://www.amazon.com/gp/product/B0096DM3ES/ref=wms_ohs_product?ie=UTF8&psc=1

Reply
Marco Altini
12/3/2014 04:39:42 pm

it's bluetooth 4.0/low energy, so it will work

Reply
hagen
17/3/2014 08:31:24 am

Hi Marco. Thanks for that good APP.
I also would appreciate poin clair plot chart, but in order to get it to real relevance wie need to know how high is the resolution in the RR in your downloadable file are a lot of same n+1 RR and the smalest difference seems to be 15 ms. So it seems that if the RR difference is smaller it will measure the same RR for n+1. Is that so? Professional RR measurements work with a resolution of 2ms which is around 500hz. Why pin50 is only calculated after 10 minutes? The VLF would be also a gold inicator to know as it shows stress and sympaticus activity. In my nexus 4 the Export of files dont work. Thanks for your gold work! Regards, Hagen.

Reply
Marco Altini
17/3/2014 06:06:50 pm

Hi, indeed the downloadable file is probably not the best example. It's data collected with the mio alpha, which averages a lot the data to get a stable HR, and therefore it's useless for HRV analysis. Using a Polar you won't have this problem (data is sampled at much higher frequencies, and the accuracy is 1 ms). I'm gonna have a look at the problems, however I find it very difficult to debut on Android due to the huge fragmentation.

Reply
Sean
21/3/2014 08:40:54 pm

This is a great tool and the raw data and IOS app are extremely useful, both for sports and psychological use. Thanks for all the hard work.
Are you aware of or do you have plans to develop any PC or other desktop software that can be used to analyse further the exported data? I wanted to plot SSDN and LF/HF over 24 hr + periods (inc sleep patterns).
Also, out of interest, is there a difference using your software with the Zephyr HxM Smart Heart Rate or the Polar H7? I have both but wasn't sure if one was capable of providing more accurate data than the other.
Thanks in advance for any guidance.

Reply
Marco Altini
21/3/2014 09:58:25 pm

Hi Sean, unfortunately I haven't tested the Zephyr HxM Smart Heart Rate, so I'm not sure on how it compares against a Polar. Polar is for sure very accurate (you can have a look at the hardware section here: http://www.marcoaltini.com/2/post/2013/12/heart-rate-variability.html). No immediate plans to develop desktop software, but might happen in the future. Thanks for your feedback.

Reply
al
31/3/2014 05:31:29 am

Really interesting Marco. Will purchase app once I get my h7.

Interesting that you provide lfhf. Using a different app I found I had a big difference between lf and hf. I've heard it mentioned on a couple of podcasts that the ratio should be close to 1:1. Have you got any thoughts on this (ie if true how to change the ratio) or any pointers on where I can learn more?

Thanks

Reply
Marco Altini
31/3/2014 06:02:43 am

Hi al,
the two values represent quite different aspects. The LF/HF ratio is often considered as a marker of stress in literature. Parasympathetic activity is lower during stress and it is more or less shown in HF getting higher (higher parasympathetic activity -> higher HF -> lower LF/HF). This is more or less consistent with what happens during training, where you have HF going down in weeks of high intensity training and going up again when you rest (physical stress in this case, but anyway stress). At the same time, HRV is influenced by breathing. The respiration frequency is reflected in HRV (RSA, respiratory sinus arrhythmia) and this can also influencing either HF or LF depending on the breathing rate. I think, in general, HF is the value you should look at. Literature showed more consistent results and since it involves higher frequencies you can get stable results with relatively short measurements. Hope this helps.

Reply
Brett
4/8/2014 06:19:13 am

Hi Marco.
I was wondering if it could be possible to annotate during a single use? e.g., "Opened angry email from Bob", and then in the .csv download each such text entry would be in a cell corresponding to the time of entry (time stamp). I think this could already be done by making new files and combining the csv data. Just a bit more awkward for the user.

Thanks for your exceptional work. I have looked at dozens of HRV apps. You rock.

Reply
cogsci
5/2/2015 12:26:47 pm

This is a great piece of software!

I know this is an older post, but it would be a very useful feature. If one wants to do offline analysis it would be very useful to have a single file with event markers included. Ideally one column for numeric event codes and perhaps a second column for verbos descriptions.

e.g.
No.,date,rr,since start,event code,description

Thanks!

Reply
Mike
4/9/2014 06:51:53 am

Hi Marco, great app! Can you give a quick guide on how best to use it to check for exercise overtraining? I was thinking something like every morning do 2 minutes and compare the RR-Intervals data with last days. If it changes a lot than take a rest day?

Reply
Tim
30/9/2014 12:13:28 pm

Hey Marco,

I'm having a few problems with uploading the data to dropbox. I have connected to drop box and uploaded data before. However, the last 30 days I recorded won't upload? Is anyone else having this problem?

I'm using an iPhone 4.

Regards,

Tim

Reply
Doug
9/10/2014 12:16:23 pm

If you have trouble with the app not detecting your Heart Rate monitor like the Polar H7 then UNPAIR the device with your iPhone.
My problem was IOS 8.0.2 and iPhone 6
I got the Polar H7, paired it (because I thought I had to)
The HRV logger software was very hit and miss. (mostly miss) about linking when I pressed the bluetooth button.
After I removed the pairing as the OS level from Settings Bluetooth, it worked perfectly. And other apps worked well. iOS seems to hog to device if you pair it under the iOS settings section.

Reply
cogsci
5/2/2015 11:01:17 pm

Again great app.

You state that this app only works with "iphone", is that true or will it work with a 5th gen ipod touch (as bluetooth LE)?

Thanks!

Reply
D link
1/3/2015 08:25:17 pm

Hey there
That is one great app you created! It works nicely with Zephyr HxM Smart sensor.
If you don't mind I would like to throw in some questions and suggestions.

There is everything in your app I could possibly want, except integration with iOS 8 Healthkit. Since you already track HR and steps, would you consider adding this functionality in the future?
Also, the graphing functions and colours on your blog look much better than those contrasting blue and green in your app, if you have the time I think revamping design could help a lot.
Any chance for adding info button with explanation of abbreviated feature names, at each feature screen?
All the best

Reply
Marco Altini
1/3/2015 11:12:43 pm

hi there,
Healthkit is on my list, so integration will be coming sometime in the next month or two. I'll consider the other suggestions as well. Thanks for your feedback!

Reply
David
4/3/2015 05:43:14 am

Hi! I'm interested in using this in conjunction with the mio alpha. Specifically, I'd like to be able to pull data off of the alpha after the fact (eg. wear the watch without pairing it to an iphone and then examine the heart rate measures later). Would you app allow me to do this?
Thanks!

Reply
Marco Altini
4/3/2015 06:27:50 am

hi David, the mio alpha doesn't store data, so you'll have to keep your phone connected and around you. The app allows you to export all data afterwards (and visualize it in real time)

Reply
David
4/3/2015 11:27:57 pm

Thanks for the fast reply! Sorry, I meant the mio alpha *2* which can hold up to 25hrs of data in memory. According to the manufacturer it will export all the data to their app once a device is paired. I realize you probably haven't tested your app with this device, but do you have any sense of whether it would work the same way?

Marco Altini
5/3/2015 12:40:18 am

Hi David,
I doubt it's gonna work. There is probably a custom protocol, and therefore you'd need to use their app.

Reply
Lars
16/3/2015 04:17:22 am

Hi

Great app you have made here. Besides using it for training purposes, i also use it to capture irregular heart beats. I have a problem with beats that are skipped. Sometimes just over a periode of at few minutes, but can also last for hours. For training i use RR-Intervals correction 20%. If it is for the last purpose i have the RR correction completely disabled.
I use mainly a Wahoo Tickr, which is generally working well. I also have a Mio-link which i wear all the time. I would like to compare the two sensors, to evaluate whether the Mio-link is actually usable for my purpose or there e.g. are too much filtering in the device sensor.
So i have 2 iphones, and would like to use this app for capturing data from each sensor on the 2 iphones. This is not working well. One of them looses connection after a short while. Separately, only device switched on is working well. SO is there something in the protocol that prevents that i can capture data from two sensors on two iphones, using the same app?
A new feature could be display of the HWID from the sensor that is used in the app.
Another feature could the that it is possible to lock the app so it only uses the sensor with a specific HWID.

Again, great app you have made!

br Lars

Reply
Samantha Brown
1/4/2015 11:11:47 am

Hello,

I plan to use the HRV Logger App for research purposes and have several questions. I am hoping to measure RR-intervals over a 20 minute timeframe. What should I set the "Features Computation Window" to? The greatest amount of time listed is 5 minutes. Will the app still allow me to track HRV over a 20-minute timeframe? Also, if I give each participant their own recording name, will their files will be exported to dropbox individually? Are the annotations connected to the time the data is being collected and does this show up in the exported file? I appreciate your assistance! Thank you!

Reply
Marco Altini
1/4/2015 07:02:35 pm

hi Samantha,
the feature computation window time means that every 5 (or other) minutes features are computed, but you can record as much as you want (I got to more than 24 hours). If you do your own analysis, you will be able to do it in whatever way you are used to, since all RR intervals can be exported. Annotations and names are all exported.

Reply
Mike
6/4/2015 07:29:50 am

Hey Marco,

Nice app. I am thinking of using this with a FitBit Surge, but so far I have not seemed to be able to get RR Intervals. Is there a simple way to determine if a HR sensor provides RR intervals (and not just the more basic HR periodic sample)?

Thanks

Reply
Marco Altini
6/4/2015 08:32:41 am

hey Mike,
probably the only way is to contact the vendor. However remember that even if they do provide RR intervals, it doesn't mean they are correct (which makes no sense and it's confusing, but that's what happens). For example other optical HR devices (see the mio alpha) do provide RR intervals, but it's the averaged signal used to provide a stable HR, and therefore useless for HRV.

Reply
Tony
6/4/2015 12:26:33 pm

Hi Marco,

Does Basis Peak compatible with your app ?

Thank you

Reply
Marco Altini
6/4/2015 04:26:45 pm

Hi Tony,
The app implements the standard Bluetooth low energy / smart heart rate profile, so as long as the watch does the same, you should have no problems. I don't know if the basis does, but you can always try and get a refund via apple in case it doesn't work

Reply
Andreia
4/8/2015 09:58:15 pm

Hi Marco,

First of all I would like to thank you and to congratulate you for the great app. I have used the it for research with children with autism and I would like to know if there are any published papers reporting the validity and reliability of the app for measuring HRV.

Many thanks!

Reply
David
13/3/2016 02:01:24 pm

First of all, congratulations on wrapping up your PhD and recent publication in JAP! Also for a fantastic app (HRVLogger). Could you please explain to me how the app handles data dropout? For example if I collect data for an hour and subject with hr strap walks away and loses contact with Bluetooth connection for 5 minutes, what happens? To existing data prior to losing connection? Will auto-connection to Bluetooth happen when in range again? Why about subsequent data connection? Thanks!!

Reply
Marco Altini
13/3/2016 02:27:54 pm

Thank you David! I must say I haven't used this app myself in a long time, however if I recall correctly the app when it loses connection, tries to connect again (I implemented this reconnection mechanism for some users that were losing connection during the night, due to the body impeding the communication), all data between the two connections is lost since the sensor doesnt have memory, but the data should be timestamped correctly so that you can reconstruct where the gap is. Hope this helps!

Reply
Lance
29/9/2019 11:18:04 am

Dear Dr. Altini

My iPhone 6S sent me a notification this morning, Screen Time had increased. I used HRV Logger for 33 hours 26 minutes last week. This reminded me that I was remiss in not sending you a note after more than four years of using HRVL.

The features I appreciate the most are straightforward access to heart rate, RRi, and rMSSD via .csv file sharing. Without getting into details I can simply say that sharing these data with my Cardiologist has revolutionized my cardiac rehab and the outcome, so far, is very positive. My Cardiologist wishes he had this type and quantity of data for all his patients. My experience is living proof of your belief that the n=1 data pool can be a major contribution to living a healthy life and performing beyond one’s own expectations.

I am surprised that there are so few reviews for HRVL on itunes. Anyone, athlete, sports and outdoor recreation enthusiasts, those interested maintaining a healthy lifestyle or recovering from an injury, can benefit from HRVL and HRV4Training.

HRVL is a 5-Star+++ app, perhaps with a few quirks, that has worked well for me since 2014. You have my greatest appreciation Dr. Altini. Thank You.

N.B. Your desire to go beyond your current achievements by getting a MS in Human Movement Sciences is inspiring.

Reply

Your comment will be posted after it is approved.


Leave a Reply.

    Marco ALtini

    Founder of HRV4Training, Advisor @Oura , Guest Lecturer @VUamsterdam , Editor @ieeepervasive. PhD Data Science, 2x MSc: Sport Science, Computer Science Engineering. Runner

    Archives

    May 2023
    January 2023
    December 2022
    August 2022
    June 2022
    April 2022
    March 2022
    February 2022
    January 2022
    December 2021
    November 2021
    October 2021
    September 2021
    July 2021
    June 2021
    May 2021
    April 2021
    March 2021
    February 2021
    January 2021
    December 2020
    November 2020
    October 2020
    September 2020
    August 2020
    July 2020
    June 2020
    May 2020
    April 2020
    March 2020
    February 2020
    January 2020
    November 2019
    October 2019
    May 2019
    April 2019
    March 2019
    November 2018
    October 2018
    April 2018
    March 2018
    June 2017
    December 2016
    July 2016
    March 2016
    September 2015
    August 2015
    May 2015
    March 2015
    February 2015
    January 2015
    December 2014
    May 2014
    April 2014
    January 2014
    December 2013

    RSS Feed

  • Home
  • Research & Publications
  • Apps & Projects
  • Blog
  • Substack