Wednesday and Thursday

Plan was 9mi/5mi, went about a quarter mile long each day.  Felt great Wednesday, going pretty fast without feeling strained – after 2 warmup miles, settled into clicking off 6:30’s, with the last two right around 6:00.  Took it a little easier Thursday.  Walking a fine line this week between not racing every day and getting the wheels spinning while the mileage is low enough to not put me in a hole.  Strava links below.



Hamming Error-Correcting Codes

This is part 1 in hopefully a series on the Hamming error-correcting codes, to be continued on Friday.  The problem is this:  suppose you wish to send a message composed entirely of 0’s and 1’s, but suspect part of it might get “corrupted”.  More concretely, I am going to send you the message


but there’s a chance that you receive instead something like 00101 (so the second bit was flipped), or 01111 (so the fourth bit was flipped).  Is there any way to control for this?  An idea that is both natural and wrong is to send two copies of the message.  In this case, I’d send along


Now if a bit gets flipped (note that there are now more bits that could be flipped), you can see exactly where — perhaps you receive

where the non-matching bits are highlighted.  The problem here is that you cannot tell whether the offending bit should be interpreted as a 0 or a 1 (which might be ok if you are only interested in error detection).  But if we want to be able to correct the error, we’ll have to be a little more clever.  As a very broad outline of our strategy, we are going to take each of the symbols we would like to transmit and encode them into a “big enough” space so that each symbol has a buffer zone around it to account for any errors in transmission.

In some sense, this is a familiar strategy: on touchscreen keyboards you do not have to hit the exact spot for a key to work, only be close enough.  In this case, the “symbols” I’m referring to are letters, and the “buffer zone” is the area of the screen you can touch so the computer recognizes that you are trying to touch this particular letter.

The trick here (and what is sort of confusing about this) is that the symbols we wish to transmit are bits, and the space that we will be embedding our symbols into will also be bits (rather than a shiny retina display!) As a hint of things to come, I’ve displayed below a representation of the space of 2-bit strings (which will not be big enough to detect 1-bit errors), and a representation of the space of 3-bit strings, which is of perfect size to detect 1-bit errors in a 1 bit message.

All 2-bit strings, with a line connecting them if the distance between them is 1, so you can get to one from the other by switching a single bit.




All 3-bit strings, connected whenever the distance between them is 1. Notice that the points (0,0,0) and (1,1,1) have disjoint balls of radius 1 around them. This will be the basis of the error correcting code, by agreeing that anything received in the red “ball” will be interpreted as the symbol (0,0,0), and anything received in the blue “ball” with be interpreted as (1,1,1). Then this can be turned into a 1 bit error correcting code.


Monday and Tuesday

Planned to go 4mi/6mi, ended up going 5mi/7mi.  Ok for now.  Felt much better than Sunday, but still not rolling super well.  Hopefully I’ll get into a groove by the end of the week and have more focused efforts next week.  Links to Monday and Tuesday runs.

As an aside, Strava is fairly addictive, though not *quite* enough people appear to use it.  My recent guilty pleasure has been going and blasting nearby segment records (this morning took a segment record from 3:25 down to 3:06) — hopefully someone else will take them back so there’s some competition to it!

Good linear algebra projects?

Have been talking up learning linear algebra to some of the programmers at work (in particular, using Gil Strang’s fantastic lectures), and am now looking for projects to work with them at various levels.  In particular, any interesting programs/scripts/projects that might only utilize matrix subspaces.

Excited to move on to perhaps interactive curve fitting once they cover least squares, PageRank when they get to eigenvalues, and maybe image compression using singular values.  Just having a hard time coming up with a good project that *actually* starts from matrix subspaces (i.e., not casing an eigenvalue as a mysteriously useful null space value).

A great end result of all this might be a project investigating large networks and locating clusters.

Nov. 25

5miles, exactly as planned.  Was feeling awful tired most of the time, but I guess that’s to be expected early in the training cycle.  On the plus side, I don’t appear to have any lingering injuries or new ones from my recent hiking adventures.

Marathon training starts today

Haven’t posted much on my own running, but wanted to stay honest on this one.

Not me, but at least I took the photo.

Building up to the 2013 Austin Marathon, with a goal of sub-2:30, which should be good for a top-5 (top-1?) finish.  Training started today, after 2+ weeks entirely off, the first time I’ve managed that in quite a while.  Hoping that a 12 week focused buildup will work well.  My daily mileage is borrowed mostly from here, though the 90 mile week I will likely substitute 10-12-15-11-10-22-10 to keep the second long run down a little bit.

Additional workouts will be marathon pace (5:30-5:50) segments built into the long run, starting at ~30 minutes this week and building up to (hopefully) ~90 minutes.  These will be negative splits.

Wednesdays will be faster pieces, ~5 miles at 5:00-5:20/mile, broken up at first, and (hopefully) continuous by the end of the cycle.  I’ll bring the Wednesday workout in after two weeks of training.

Weekly mileages (tempo time, Wednesday workout):

  • Nov. 25 45mi (30mins)
  • Dec. 2 56mi (35mins)
  • Dec. 9 66mi (40mins, 5xmile, 2mins recover)
  • Dec. 16 78mi (45mins, 4 x 2km, 90s recover)
  • Dec. 23 66mi (50mins, 4 x 1.5mi, 90s recover)
  • Dec. 30 78mi (55mins, 3 x 3km, 60s recover)
  • Jan. 6 90mi (2 x 2.5mi, 60s recover, long run pushed back one day)
  • Jan. 13 78mi (3M half marathon the 13th, 70mins the 19th, 2 x 3mi, 30s recover)
  • Jan. 20 90mi (80mins, 5miles continuous)
  • Jan. 27 90mi (90mins, 2 x 3mi, 30s recover)
  • Feb. 3 78mi (60mins, 5miles continuous)
  • Feb. 10 70mi (no saturday long run, 3miles continuous, race sunday)