Author Archive: adamaig

A successful year of body transformation

Ever since about 1999 when I first started doing something like the Body4Life program, I’ve wanted to be fit. I just never really found a program that I’d systematically stick with. I finally hit on a set of solutions that has been maintained for nearly the entire year (a few breaks here and there), but I’ve found very sustainable and enjoyable. I’ve lost 20lbs+ of fat, and increased my muscle mass ever so slightly. But the big thing is I’m just much stronger, and feel so much better.

The key to this started with reading the 4-hour body by Tim Ferris. It opened my eyes to body experimentations that were useful, and set me on the path to my current success. I’d tried cutting carbs and grains out of my diet the previous year while “following” the Primal Blueprint, but going full-on with that program hadn’t worked out well for me. I dropped a few pounds from ~198lbs to fluctuate between 194-189lbs, but this wasn’t the flat-ab solution I was looking for.

The diet suggested by Tim Ferris had two key elements for my success: 1) a weekly reward a.k.a. the binge day, and 2) a path to carb reduction by legumes which for me was primarily black beans. After a few weeks of eating great primal meals + the beans, I found I was needing to add beans less frequently in order to keep my energy levels up. The binge days also allowed me to mentally reward myself for good behavior on a regular schedule. It just wasn’t that hard to stay on the diet with the known reward just a few days away. These rewards were typically lattes and bread treats at coffee shops, burgers and fries, etc.

The workout plan that is suggested with the 4-hour body is a just a few exercises, but the key one that attracts people is the kettlebell swings. This quickly got me turned on to kettlebells more broadly, which have been fantastic for my strength, and general joy of moving. I followed Tracy Reifkind’s “The Swing” program, and worked up to 28 minutes of swing as I hit 185lbs. I was feeling great. Then work disrupted my life, as I was pulling 20hour days at a new job to get a research study ready to go. After doing that for a month, I just didn’t get back to things. Swinging a heavy weight seemed dangerous when I was that tired. And at that time I discovered body-weight (calisthenics) conditioning, starting with the Convict Conditioning program. I also grabbed of copies of “Enter the Kettlebell” and “The Naked Warrior” by Pavel Tsatsouline. These two books conspired to give me a plan for rapid strength development, in a safe and sustainable way.

The key for me was the “ladder”, a way of safely building volume (total work or reps) over time. For me this was focused in the pure strength range of 1-5 reps max per set. Lifting in this rep range helps trigger myofibral hypertrophy, you grow more dense muscle fiber that can contract harder, resulting in greater strength. This also avoids or minimizes the development of puffy muscles, which was a key desire for me.

A ladder is just a way of structuring the reps in a sequence of increasing difficulty that allows you to progress without failing. For example a 3-ladder has a max of 3 rungs, and is executed as: 1 rep, rest, 2 reps, rest, 3 reps, rest. A 5-ladder is the same except you continue with 4 reps, rest, 5 reps, rest. I.e., the rung count is the number of reps you work up towards.

To use ladders, I followed this plan:

Start by testing yourself with 3×3-ladders (18 total reps). When you can do this successfully, increase to 4×3-ladders (24 reps), and then to 5×3-ladders (30 reps). Then begin adding rungs, while staying with 5 sets of ladders, so that your next workout you shoot for  5×4-ladders (50 reps), and ultimately work up to 5×5-ladders (75 total reps). Throughout this process if you struggle with the current rung, stop to rest, and move on to the next set. For me this would typically mean I would do something like 3×5-ladders, 1×4-ladder, and 1×3-ladder as I started to add the rungs.

This is all made more achievable by “waving” the intensity across the week as follows.

Monday, go easy-effort with ladders 2-rungs lower than your heavy day.

Wednesday, go mid-effort with ladders 1-rung lower than your heavy day.

Friday, go heavy-effort with your max ladders.

Never train to failure, because you are in effect training your nervous system to fail at a certain point. This is why you should pay attention to the current ladder progression, and stop even if your plan was to go for more reps the next set.

By sticking with this restriction, and the waving plan I never was too exhausted to make it to a workout due to lifting, and progressed week after week. Over the course of 7 weeks I went from struggling with 5×3-ladders doing clean&press with a 16kg to blowing through 5×5-ladders with a 24kg, without injury, which for me was very impressive. To put that in perspective that was a starting point of pressing ~1058lbs to ~3968 per workout in just a few weeks, which is ~4x increase in the volume of work. It is much better to “bank a rep” for the next workout, than to over do it now, and get injured or be too tired to do the next workout. Optimize across months, not just today. The body transformation game is a long one, no need to rush.

One other modification was that rather than actually resting, I just did supersets with pull-ups, and I progressed from regular grip to close grip, and started working on 1-arm pull-ups during the same period. That maybe is the more impressive thing: going from 30 pull-ups in 3-ladders, up to 75 pull-ups per workout! These workouts took me from 35minutes on easy day to about 47 minutes on hard day.

The point of this plan for me was that I finally had a sustainable program that gave me day over day improvement that was easily tracked, and to date hasn’t failed me. I’m not hedging to the low side of 170lbs (~168lb @ 13%bf), from starting training seriously in February at 185lbs @ 17%bf. I’ve had spots of slow progress from under-eating, or high-stress (dissertation defense, running a summer camp, regular long work hours), but overall I’m continuing to redefine my body.

This journey started last summer with the diet, and kettlebell swings, and after 1 month, I had dropped from ~192-194 to ~185lbs. So it hasn’t been instant, but it has been thoroughly satisfying, and I’m nearing in on my vanity goal of visible, bullet-proof abs.

A few tools I’ve picked up along the way that have helped:

  1. a gamified workout social network. Great people, and a fun design. This gives access good tracking, and metrics if you pay for hero status, and helps motivate me to progress when I need that external push for a goal. A sample workout of mine is here:
  2. I track my meals using
  3. I started using a Body Media Link armband to track my daily activity. I’ve been happy with it thus far, and wear it all the time. I’ve found the calorie tracking to be fairly accurate, and the results seem consistent with my dieting.
  4. is what I’ve stuck with for gps tracked workouts.
  5. A Withings Smart Body Analyzer scale to keep track of my heart rate and body composition stats. This data can be shared with your doctor if you like, which is a super smart feature I think. For me I’ve loved seeing how my resting heart rate has dropped as I’ve become more fit.

For the most part all of these tools integrate with each other, so you get to paint a pretty complete picture of your life, if you desire to.

Lastly, because you always have your body with you, If you want to do body-weight work, check out this body-weight progression chart: . Just stick with the ladder progressions above to build strength so that you can do anything safely. It is amazing how quickly your body can adapt when you take it slow, but deliberate.

The Reverse Stockholm Paste Design Pattern

The Reverse Stockholm Paste Design Pattern describes projects where a programmer takes the stance, “I’m awesome doing ****loads of crazy copy and paste”, and a later programmer takes the stance, “F*** this, and the people asking me to do this.”

Named, but not implemented, by Logan Barnett.

Back to rails after 6 months

I haven’t done any programming in Rails since about June, most of my time has been spent on the perl innards of Quest Atlantis where I’ve been changing a lot of the code in preparation for my dissertation, and to handle some performance issues that were killing us.

Getting back to rails hasn’t been easy, its a different way of thinking for me than perl–which is good. But with rails I always want to be principled. So I started out writing tests, trying to use them to help me work through a very incomplete design I was handed. But the upgrade to rails 3.0.3 hasn’t been smooth, in part because a lot of bits are rapidly changing given the relative newness of rails 3 and the libraries I’m using in this project.

But the big thing is that I just figured out the way to have nginx-passenger serve the new app I’m working on via a base_uri and still pass through all the other non-static requests to the apache instance running mod_perl. Since the passenger documentation contains errors and was unclear for me, I’m sharing this here in case someone else needs it.

The config I ended up with is:

server {
  listen 8000;
  root /var/www/www_home;
  location ^~ /foo_bar {
    passenger_enabled on;
    rails_env development;
    # for this config to work:
    # ln -s /path/to/foo_bar/public /var/www/www_home/foo_bar
    root /var/www/www_home;
    passenger_base_uri /foo_bar;
    # break is not necessary because of the ^~ match

  # If a specified static file type exists as named, serve it up directly
  location ~* \.(jpg|jpeg|gif|png|css|js|zip|)$ {
    root /var/www/www_home;
    if (-f $request_filename) {

  location / {


Recently I’ve had the experience of being subjected to what I’m terming jargonstorming. Jargonstorming is like brain-storming, except the brain has been replaced by jargon. The jargonstormer (i.e., the speaker or writer leveling the jargonstorm at listeners or readers) frequently is unaware that they are not actually saying anything due to a lack of understanding of the underlying meanings of the jargon they employ as they fail to make any point; cynically, the jargonstormer is sometimes aware of this, and is leveraging the jargonstorm strategically to preempt meaningful contributions from others, by overwhelming those unfamiliar with the jargon and alternatively disgusting those who “see” through the jargonstorm to the point that the jargonstormer is not called  to task for their transgression.

I wish everyone the best in their attempts to avoid jargonstorms.


Remembering Tyler Dodge

After days of being concerned over his disappearance, today the IUPD were convinced to enter Tyler’s home where they found him deceased.

Tyler Dodge looking very proper and professional, perhaps the best image I've found of him.

Tyler was a wonderful person, and a central part of my life for the last 5 years. We had worked together first with him as reluctant-mentor and me as newbie, then as more or less equal partners in research on a paper that never was sent out but was enlightening and fun collaboration. And in the last two years I spent more time arguing with Tyler over details of theory and methods than anything else, but it was also my great pleasure to push and support him in finishing his dissertation with programming and conceptualization…it is heart-breaking that after all his efforts he won’t be here to see the pay-off as I finish, one of the mutual goals we’d set in late 2007. I guess I took too long.

Finally, in this last year he had become an emotional support to both Sinem and I as we finish our work on the same project that consumed the better part his last decade. He had just moved on to other work and was relaxing and enjoying life in a way that the PhD process had muted in him. The last time we met for breakfast was pure joy, and a great memory to have as some of my final interaction with him.

Michael Tomas and Tyler Dodge. Taken during AERA 2010 Denver. Two of my favorite, most considerate mentors.

He was an extremely gentle man that was too often misunderstood. Something about him was displaced in time, his mannerisms reflecting an era of respect that has passed. I very much doubt I will ever meet my own Mr. Rogers again, but that man might resemble Tyler for those of you that don’t know him. Part of his character was to always gift the most delicate yet appropriate, and respectfully targeted to the recipient gifts: High-quality writing pens were a long time favorite, but more recently he had switched to simple yet powerful reading lamps in addition to music he would spend weeks composing in his basement.

Some of these gifts will make it into this posting as I digitize and add them. I hope that this will allow those who are interested to experience and remember some of what Tyler offered the world.

He was resolutely moral in a challenging world and never wavered in his commitment to making things better, regardless of the challenge. He deserved more than he received from world.

I will miss him greatly.

We are preserving Tyler’s website,, and
Tyler’s friends from his IST community have started sharing their recollections of Tyler at For a broader sense of who he was, please visit both of these sites.]

Tools and projects to date, part 1.

I finally realized what I should start posting about: all the tools I generate. I’ve done a terrible job documenting and ultimately getting credit and recognition for what I’ve spent my time on, and a large part of that is, in my current thinking, the result of my not talking about it. So to start addressing that I’m going to review some of my history here. Overtime I’ll add links to the code and published projects as well.

The most recent tool is what has evolved into . Originally I sat down and built this tool with my friend and colleague Shah. My inspiration was because my advisor kept pulling Shah to do simple edits on the static html files that were the original Quest Atlantis worked examples, and I wanted Shah’s time to be freed up to help me do more interesting things. My advisor, Shah’s boss, had gone to Hawaii for a few weeks, and so I sat down and started developing the first version of the tool.

Over the next 4.5 days Shah banged out the upload management parts of the system, styled much of the site, while I worked out the core functionality, and ported the original static files over to the new tool. It was a good few days, and at the end I let my advisor know what we’d done. This back in January 2009, and I’m only writing it up now. At this point the worked examples tool has taken on a life of its own, and gone in a lot of directions I’m not particularly a fan of because they are at odds with my original design intent. But that is also the nice thing about open sourcing your work: you get to see how those that come later take up the work and change it.

The next personal project I took on was a ruby binding library for the Activeworlds, Inc. bot SDK. The first version was done using hand-crafted ruby bindings, and never fully covered the portions of the SDK I didn’t directly need or want to use. My motivation for doing all this was to replace the C based bots I’d written for the Quest Atlantis project over the last few years for managing 3D world changes and avatars. I also wanted to write a new version of our management bot so we could avoid paying 20k$ for something we might not end up with full control over.

Ultimately I replaced that binding library with one based on the ruby-ffi bindings in late July 2009. In 4 days I wrote a replacement user management bot (OTAK), a 3D game element management bot, a new avatar management bot, and 4 versions of a map bot. We’ve been running these bots with few changes other than some unicode string management stuff for handling international chat since then with few problems.

Since that time I’ve been mostly working on my dissertation project. My project requires building a new scripting system for the Quest Atlantis game engine, and in particular making the programming tools accessible to elementary aged children. The work is funded by a Creative IT grant from the NSF, and I’m getting to collaborate with some great folks: Eric Klopfer, Daniel Wendel, David Lam, and (previously) Angel Izzary at MIT from the OpenBlocks & Star Logo:TNG projects; Kylie Peppler at IU, from using Scratch with Computer Clubhouse members; and of course my advisor Sasha Barab of Quest Atlantis.

The work on that project started in May 2008, but due to various performance and scaling issues with the existing system, much of that year was lost to sysadmin work to support the general operations of QA. The projects discussed above were how I chose to balance the work when I need a break from the grind of the grant and sysadmin work. Ultimately this has led to where I am this last week. I’m almost ready to release the adult version of my new scripting system, and have been slowly eliminating performance problems with our existing perl system.

Same blog title, new place, new year, new …

After a number of my colleagues expressed disappointment that I’ve let me web presence slide for the last 5 years, I’ve caved and opened up this blog. Hopefully I’ll take advantage of the push, and start writing more consistently …. but its not a practice I’ve ever really enjoyed. And that may be a large theme throughout whatever does end up here.

I’ve hit that point in my life where I spend moments in conferences lost in thought about how our knowledge worker’s daily grind blinds us to reflective analysis of what we are accomplishing, and as a result spend a lot of time dwelling on my place in this scheme of human development and progress. At the end of the day I think I will always walk the line of design-research because I both enjoy making things, but care deeply about why my designs have an effect, if any, much less the desired one.