Archive for category Tech

A look back: Roughly 9 years of email behavior analyzed

In passing I have seen several plugins/apps/sites that offer to retrieve your email history and present some sort of analysis. My wife mentioned this recently and I thought this idea sounded like fun so I did a little processing on my own email. I have email records going back to late 2003 – just about the time I started undergrad. So with some grep/java/gnuplot magic I present to you a graph of the timestamps for every email I have sent since then. I just processed sent emails because my behavior should be more evident than in received.


The graph contains a red dataset – my personal emails and a green dataset – emails sent from my university account. The Y axis is time of day and the X axis is the date. Each dot is an email sent at that time on the given day.


  • The first region that you see is before I started logging school email. It just has personal emails… spanning all times of day/night. Seriously? I sent more email from 0000-0800 then 1600-2400???
  • Second region introduces university emails. During this time I also worked for the university part-time 0900-1800. Nothing too surprising here.
  • Third region is what I call early grad school. A general increase in both of my email volumes.
  • Fourth region – the ASSERT period. The ASSERT project was a massive 2-2.5 year research lab project with a lot of people working on it and a lot of work. Check out the huge increase in school emails. I bet you could spot deadlines in there too.
  • Fifth region – Summer internship
  • Sixth region – Late grad school. Post-quals, post-course work, post-ASSERT, just relaxed set my own schedule time
  • Final region – Real Job. Strict no-email hours, waking up early, less email, yup, that’s real life for ya.

Global observations

  • Maybe I imagine it but I swear you see that the time that I start sending emails in the morning gradually becomes later and later — same for cease time. What/who is to blame? Grad school or my GF/fiance/wife?
  • I sent more school email than personal: 5,164 messages to 4,849 messages
  • You can vaguely spot summer breaks. Look for swaths of lower green density bordered by bursts.
  • Sadly you can’t really spot certain events like: marriage, quals, proposal or defense.


Number of emails sent per year:

Year Personal Count School Count
2003 57
2004 145 310
2005 412 310
2006 474 354
2007 728 815
2008 831 1,378
2009 804 1,140
2010 893 438
2011 438 464
2012 – to May 68 59

DROID X micro SD card speed test

Okay, so I know there must be 1k sites out there with this info already but I felt like finding out for myself.

Out of curiosity I wanted to know how fast manufacturer provided the micro SD card in my DROID X phone is. Today I did a test to figure that out.


  1. Copy contents of sd card to computer
  2. Reformat SD card using phone. For Droid X, go into settings -> SD card … -> Unmount -> Format
  3. Connect phone to PC in USB Mass Storage mode
  4. Download ATTO disk benchmark tool:
  5. Select the correct drive and test.
  6. Copy data back to phone (from step 1)


You can see that the write speed peaked at about 7.5MB/s and read peaked at just over 13MB/s. These speeds qualify this card as a class 6 card. Not bad considering the card is labeled as class 2. I expected far worse. So, if you are planning to replace this card and want one with at least the same performance buy class 6 or higher. Numerous forum users are reporting that cards higher than class 4 cause problems on the Droid X. I tried a class 10 and had to return it. Now I am using a class 4 with no problems.

Cross Compile libmysql

The key to cross-compiling libmysql is to google “cmake cross compile” instead of “libmysql cross compile”.  Took me a bit to think of this but it makes sense because cmake is the build system for libmysql.

My How-To

My how-to assumes you have a Linux system with standard development tools and compilers installed as well as GNU cross-compilers for the target platform.

  1. Download libmysql source: In the drop down box change to source. Otherwise you will be presented with pre-compiled binaries.
  2. Extract libmysql: tar -xzf mysql-connector-c-x.y.z.tar.gz
  3. run: cd mysql-connector-c-x.y.z
  4. Create a toolchain.cmake file (See section below)
  5. run: cmake -G “Unix Makefiles” -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_TOOLCHAIN_FILE=toolchain-arm-linux.cmake
  6. run: make
  7. run: make install
  8. Your libs are in `pwd`/install/lib

Toolchain file

The toolchain file sets a few parameters for the cmake system to override the default behavior of searching for the system compilers. I modified a sample from CMake wiki. Here is my modified sample that cross-compiles for an ARM processor running Linux.

# this one is important
#this one not so much
# specify the cross compiler
SET(CMAKE_C_COMPILER   /usr/local/bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /usr/local/bin/arm-linux-g++)
# where is the target environment
#SET(CMAKE_FIND_ROOT_PATH  /opt/eldk-2007-01-19/ppc_74xx /home/alex/eldk-ppc74xx-inst)
# search for programs in the build host directories
# for libraries and headers in the target directories