New Year, New Goals

Talking to Chris the other night, I asked him what his New Year’s Resolutions were for 2018. I always assumed that most people set year-long goals at the start of each year. I never considered that that’s not always the case. Sometimes, we might already be doing all the things we care about and as much as we have time for that a New Year’s Resolution isn’t really necessary.

But… I like setting goals. Of course, most of them are running-related, so it’s a bit boring, but hey! It keeps me active right?

This year, I’ll be running Berlin. I woke up early last year to catch the leaders of the marathon at Kottbusser Brucke. It was awesome to see them! Insanely fast runners have a way of making something that looks deeply uncomfortable somehow look desirable. But, no runner ever starts a training season thinking that there won’t be any pain or misery involved. Much less, think that running fast is the product of effortlessness. So it goes without saying that you shouldn’t necessarily envy insanely fast runners, because so much work goes into that. And excellent genes… I guess I’m enviable of their exceptionally good genes.

It rained so much that day. Mother nature must have been laughing at everyone for thinking that 2017 was the year someone would set a new marathon record. But the crowd showed up! Everyone was geared for the weather. People were there to cheer and have a good time. It made me really want to run it. And, being lucky with marathon lotteries, I got in.

In February, I’ll be running the Barcelona Half. I’ve got the Madrid Half in April, and my first 50km run in Oslo at the end of May. I’d like to run a few shorter road races leading up to Berlin, but it remains to be seen where we’ll be from March onwards, so it’s too soon to plan that far in advance.

It’s our last year in Europe. It would be great to live in another capital city like Prague, Vienna, or Lisbon. Maybe a few short weekend trips…

And, if Nate and Poliana’s January visit is any indication of what’s to come, then I have a feeling that 2018 will be an eventful year.

Nate & Poli in Berlin

Amsterdam Marathon 2016 Race Report (sort of year-end review)

There were lots of new things about this particular training cycle. I’ve always been a consistent runner but, for years now, I’ve been stuck in a rut. Part of the problem was because we moved around so much that it was impossible to find a reliable “everything” running route. Either the routes were too short for long runs or too segmented by street crossings for speedwork. The other problem was that I wasn’t setting any real goals for my running. Month over month goals are fine but, in order to progress, you kind of have to throw a few uncomfortable situations in there. So, after much delay and getting a really bad case of the flu last season, I signed up for 6 races this year.

On schedule was:

  • EcoTrail Paris (18km) – March 19th
  • La Pyrénéenne (10km) – May 15th
  • La Course Royale in Versailles (15km) – June 19th
  • EcoTrail Brussels (18km) – September 24th
  • Lyon Semi Marathon – October 2nd
  • Amsterdam Marathon – October 16th

The two trail races and the Versailles run, which was an all-terrain course, were thrown in there to satisfy my craving for off-road runs – I do miss trail running daily.

This is, by far, the most number of hard effort races I’ve signed up for within the same year. When I lived in Brooklyn, I frequently signed up for the NYRR events, but I never really “raced” them. I hadn’t really discovered “racing” until much later on in my running. When I was staying in Virginia Beach, I raced my best 5k at 23:35 and that was really hard for me. I actually trained for that run, and I placed second in my age group. When Chris and I lived in Split (Croatia), I ran a 1.32km staircase race and finished in 11min 50s, placing first in my age group. I genuinely trained for that one too! Of course, we were so excited about the free buffet that came with the race entry, that we skipped the awards ceremony and I missed out on a snazzy medal (maybe a trophy!) In any case… those 2 runs were really the only ones I’d consider hard effort races, following my NYC Marathon and Maratón de Santiago, both of which were a long long time ago.

Having just surfaced on the other side of all my races this year, I feel really good about doing what I did. I PR’d during La Pyrénéenne and finally skimmed a 50min 10k. I PR’d my Lyon Semi with 1h 50min. And I PR’d Amsterdam with 4h 2min. It wasn’t the PR I wanted, but it’s still 18min off my previous marathon PR.

I was coming off of a minimal base heading into my first EcoTrail. That first race was really meant to get me back into training mode. Unfortunately, I picked up the flu shortly after that race which, ironically, compelled me to sign up for 5 more races for the rest of the year (plus 1 next year – the Marathon de Paris in April).

La Pyrénéenne was my first real race this year. It’s a local 10k held in the 19th arrondissement. There are fewer than 2,000 participants and it’s a hell of a hilly course running through Belleville and Ménilmontant. The start of the course is mostly downhill, then flat, and then a long hard ascent up Rue de Ménilmontant before another fast descent. Then a slight downhill gradient all along Boulevard de Belleville and Boulevard de Ménilmontant, past Père Lachaise and around heading back on a slight uphill to finish at Place Gambetta.

Coming off La Pyrénéenne made me realize how much I enjoyed hilly courses. As much as I’d like to think I could’ve run an even faster 10k on all flat, that’s probably not true for me. I’m incredibly efficient at running uphill and I’m almost at the point where I can charge hard downhill without breaking. And it’s just so much more fun than a flat and fast course.

Following my 10k, I knew I needed to stretch out my legs for the longer distances coming up. So I put in lots of easy runs during the week and did a couple of 15-17km runs to start building my base. This was all pre “training plan”, which I didn’t actually put together until about mid-July. It was a nice comfy 4 months out from Amsterdam.

The plan was pretty straightforward. 4 runs a week (Tuesday, Thursday, Saturday, Sunday): 1 easy w/ strides, 1 speedwork, 1 easy, and 1 long run. As I got closer to Amsterdam, there were slight variations: increased distance of easy runs, increased number of strides, cut downs/ Short Tempo/ Long Tempo for speedwork, and more cut downs plus marathon pace towards the final laps for long runs.

This was the first time I toyed with cut downs, which I’m surprisingly good at doing. I’ve always paced conservatively, so I like to start slow and gradually speed up. I’m way less good at it once I start the cut down at about 13mi (21km). Learning the concept of running on tired legs was a nice addition to my training repertoire but … it’s something that I’ve yet to master.

I felt a little aggressive about my base building phase, mainly because I was out of practice. My long runs were 9mi, 11mi, 13mi, 15mi, 10mi, 16mi, 18mi, 11mi, 13.2mi – with the last one being my Lyon Semi. The first 3rd of my plan averaged 26mi/week, the second third was about 33mi/week, and my peak week was 38mi.

In retrospect, the Lyon Semi was scheduled way too close to my marathon. I seriously aggravated my hip flexors following my half marathon PR, which came back in full force during the Amsterdam Marathon.

Okay, so I know this was a stretch, but I really thought it was possible to get an 8% improvement over my 4:20:00 marathon. If I did, that would’ve put me at 3hr 59min. So I decided to train for a 3hr 50min finish, with the assumption that I’ll actually finish right around 4 hours.

The Course
The course starts and finishes at the Olympic Stadium, which is pretty cool. It will take you through Vondelpark, the Rijksmuseum, and along the Amstel River. Most of the roads are narrow and, because there’s about 30,000 runners running with you, it’s safe to say that you should expect quite a few bottlenecks. The course is mostly flat, with the occasional small grade hills, especially when running underneath the overpasses.

We had, what appeared like, a minor Smashrun emergency the day before the race – also our day of travel. So we had to pack up Chris’ computer and bring his monitor all the way to Amsterdam so we could put a patch together and release it before Sunday. Like clockwork, Thalys was delayed on the way up from Paris, but we still made good time.

I left Chris to work on the patch and I headed out to grab my race bib. We stayed close to the stadium, so it was easy for me to get to the marathon expo. They had a well-oiled operation going. I found the sign for bib pick-up and also got my race shirt within 5min of entering the building. Then they funnel you through to the expo (two buildings of it) before you can get back out. I wasn’t in the mood to linger. It was a cloudy, rainy, miserable day out and I needed to head back to help with QA testing.

When I got back, Chris had already furiously coded away with a solution. We tested it and everything looked good. We also found out that it wasn’t as big of a problem as we thought it was and didn’t need to bring the computer at all. Ah well.

By then, it was almost 5pm, so we went to the city for our dinner reservation… for ramen! It was the perfect pre-race dinner. You see, Chris had found a study indicating that marathoners consuming carbs the day before the race at a quantity of >7 g/kg body mass had significantly faster overall race speeds and maintained it for a much longer period of time than marathoners who didn’t. What’s more is that those who consumed that much carbs ran an average of 13% faster. Basically, he tried to get as much carbs into my system as I could tolerate over the course of 36 hours. So soup for dinner, the day before the race, was such a welcome change – without compromising the carbs! I also had 2 beers the night before, because fuel. I really should’ve had 3.

Race morning
I woke up at 7:30am, ahead of my 7:45am alarm, feeling pretty sharp. Showered and dressed by 8am. I ate 1 hard-boiled egg, a banana, and a stroopwafle – I kid you not. And an espresso. Then Chris and I planned our meeting points and walked to the Olympic stadium so that I could line up by 8:45am.

It was a little messy getting into the stadium. There’s a separate public entrance and one giant entrance for all the marathoners. You’re literally shoulder to shoulder with other runners for about 15min before you’re inside. Once you’re in, though, it clears up pretty quickly and it’s easy to spot the separate corrals.

Now then… I ran this thinking in kilometer splits, so we’ll have to do the breakdown in kilometer splits.

Km 1-5: target was 5:31-5:48/km
I ran a little faster than I wanted in the beginning, but I wasn’t far off. It was a bit of struggle to lock down my pace, because it was much more crowded than I anticipated. The spectators both inside and outside the stadium were totally nuts. So much cheering! So much joy!

The first turn off just outside the stadium was really slow for some reason so I tried to stick as close to the side as possible. There was quite a bit of uneven pavement to get used to and the tram tracks were a hazard and a half. There were also a couple of islands in the middle of the road for the tram/bus stops, so there was a bit of hop-on-hop-off action going on. The course narrowed significantly as we turned into Vondelpark, so it took a lot of mental energy to just focus on not stepping on someone’s feet or bumping into them while trying to squeeze past. And it didn’t really clear up until we ran past the Rijksmuseum.

Splits: 5:29, 5:27, 5:28, 5:30, 5:20

Km 6-20: target was 5:34-5:37
Km 6-10 was when I first realized how hot the sun was going to be. After leaving Vondelpark, most of the course was pretty exposed and there wasn’t a single cloud in the sky. I was running with my watch set to show my lap pace so I was aware that I was running way too fast again. I was getting worried about the heat and started wondering if I should bank more in the first half than trying to run a reverse split. I wavered back and forth, but decided that I was gonna try and stick as close as possible to 5:30 unless I was breaking away from a crowd that’s running slower in front of me.

At km 14, we entered Amstelpark and started running along the Amstel River. The crowd thinned out pretty quickly at this point so it was much quieter, and the next 6km is all pavement and no shade. The temperature went up a bit. I missed my music. It was a last minute decision to not run with music, making this my first marathon without music. I guess I figured, if I could PR so well in Lyon without music, who’s to say it won’t be the same with my marathon?

Anyway, I ate the piece of banana I picked up from the last water station, thinking that it’ll be somewhat hydrating. The next water station was on the other side at 20km. Most of the runners around me looked a little beat by the time we got to the turn off to cross to the other side of the river. That sponge station felt AH-mazing.

Splits: 5:21, 5:27, 5:17, 5:24, 5:17, 5:26, 5:24, 5:28, 5:23, 5:28, 5:38, 5:23, 5:29, 5:28, 5:29

Km 21-35: target was 5:29-5:34/km
I assessed everything at the half marathon mark. Was I hungry? Still thirsty? Overheated? How did I feel about running another half of what I just ran? It was a bit of a downer that I didn’t “race” my first half knowing that I could’ve done it in 1:50, but I also knew that I was starting to feel tired. I don’t ever drink too much at water stations – I don’t like the sloshing of the water in my stomach. But coming off that last 6km under the sun really got to me.

Spotted Chris as km 24! He was generous enough to say that I looked good. Ha! He asked if I needed anything, to which the guys next to me said: “an ice cold beer!” And to which Chris responded: “ok, you wait right here and I’ll be back with a beer in 10min.” Haha. Anyway… it was such a relief to hear from him that there was a water stop just past km 25. So we parted ways and I hurried off to the next km marker.

I think I drank two glasses of water and carried along one of the ISO energy drinks for back-up. It really slowed me down at km 27. I tried to pick up my pace again, but I couldn’t manage to hit my target zones and really fell off a cliff at km 31-32. It was a little disheartening. But, much like Dory, I just kept going.

Splits: 5:28, 5:29, 5:30, 5:35, 5:35, 5:34, 6:13, 5:36, 5:44, 5:46, 6:14, 6:21, 5:43, 5:43, 5:35

Last 7km: target – run it as fast as I can
Which is to say that it wasn’t very fast at this point. Can anyone else spot the wall in there?

My right hip started to kill me after km 35. I felt like I was just shuffling my feet, but they were still giving me trouble. This was a lot of speed up, slow down, speed up, slow down. Anything to keep my legs from slowing down to a walk. I would look for something in the distance, and pick up my stride. Then slow down for the next couple hundred meters. I did this for the last 5k, before I settled back into the rhythm of the runners near me.

I was so relieved to be running through Vondelpark on the return. The spectators were still so cheerful. I got lots of “Go Jacklyn! Go!” I can’t even imagine what I looked like at km 39-40, after having sponged my hair, my neck, and my arms sporadically for the last several kilometers just to cool down.

Approaching the stadium, I managed to pick up my feet a bit. Honestly… you could be crawling back into that stadium and you still wouldn’t be able to help but feel like you’re so cool for finishing your marathon at the Olympic Stadium. So I did what I imagined was a full-out sprint, plastered on a smile, and laughed a little as I crossed the finish line.

Splits: 6:16, 5:50, 6:17, 6:50, 6:09, 6:07, 6:17, 5:29

A few minutes later, a guy ran up to me, “Hey! You run around Buttes Chaumont, right?” Crazy! Same guy I see running around my local park in Paris, who actually spoke to me in French mid-run around Buttes Chaumont… at the time when my French vocabulary was limited to maybe 30 words.

He asked how it went. “It was okay.” “But did you enjoy the long run?” Huh… I know he was referring to just this one run. On that particular day. But this long run really felt like it started for me back in April. I guess I don’t feel like I sacrificed that much because it’s not like I went on any special diet. I didn’t really change my sleeping habits. I didn’t skip spending two weeks with my friend and my sister this summer. Or skip the Brooklyn Brewery Mash, which involved so many Brooklyn lagers, preceding my 18mi run. So, with that and my several PR’s in mind, I turned to him with a big smile and said “I did!”

I met Chris about 20min later, with a beer waiting for me. Win! I was pretty sore, but not immobile. We had two flights of stairs up to our Airbnb so I was in pretty decent shape to be walking up and down. We headed straight to the city after and filled up on Indonesian food. Then we walked around for the next 3-4 hours before I felt like crashing.

My legs, as expected, were a bit stiff the day after on Monday. Nothing out of the ordinary. We walked around some more and explored the De Pijp neighborhood before our train back to Paris. Tuesday was about the same, but I felt less awkward walking quickly from place to place. By Wednesday, I felt ready to run again, but laid low for another day before starting my reverse-taper.

I’ve got a bit of work to do for my next marathon and I have to look into my hip flexor issue. A little consistent strength training will probably go a very long way. Nevertheless, this was a strong year for my running. I’m looking forward to next year already!

A scope tug-of-war

Most people don’t realize how small we are. We don’t have a group of engineers or dedicated client support. We don’t have “ambassadors” or interns. There are only two of us building and maintaining Smashrun full time, and a third who’s trying to balance a full time job with our startup, which means that we have to be ruthless about scope.

Ideas are plentiful and it’s easy to get excited about a new idea! If we had a forum, I bet “Suggest a new feature” would be the most popular section.

All new features are at the tip of something big

On the surface, a lot of things might seem simple enough to implement, but there’s always unforeseen overhead costs that go hand in hand with developing new features and improving existing ones. When features are closely tied to one another and, when there are a lot of interdependencies, it gets tricky whenever you build new things on top of it.

From a design perspective, I have to constantly make room for new additions, swap out unpopular sections of an existing page, or create an entirely new interface that is expected to grow into something larger.

  • When you make room for something, inevitably, you’re making a decision to emphasize this new addition over an existing feature.
  • When you swap out existing features, you’re at risk of upsetting the small group of users that still use that functionality.
  • When you create an entirely new interface, you have to ensure that it’s discoverable, learnable, and usable.

From a technical perspective, if there’s new data that we’re importing, we have to figure out how we store it, in what form, how we retrieve it, and how we display it.

There’s also a more prominent multiplier effect when working with numbers. If the cost of delivering a particular feature is something like:

(x # of variables) times (y # of runs) raised to the nth power of number of users

…we’d have to seriously think hard about our server costs or spend even more time (than the crazy amount of time we already do) thinking about performance optimization.

This led to our development principles

Every time we’re on the fence about adding something, every time some new tech catches our attention, or a new suggestion pops up in our inbox, we go back to these guideposts:

Minimize Noise
– Noise is unnecessary information.

Manage Attention
– Users only have so much bandwidth. Every decision to emphasize one thing is at the expense of something else.

Try to Extend Before Branching Out
– Build on top of something vs. creating something entirely new.

Weigh Support Costs Before Building
– Consider ongoing maintenance and 3rd-party dependencies.

Understand the Target Demographic Before Building the Feature
– We’re not our customer, but saying ‘yes’ should be an informed decision.

Features providing a social good should be accessible to all users
– Paid features should essentially support the development of features that benefits the largest number of users in the biggest possible way.

With these in mind, we’ve gotten better at this tug-of-war. I certainly have. The drawing board has gotten much bigger, but there’s something kind of fun about understanding the scope of something from ideation to design to testing and implementation.

I imagine a silly giant iceberg and ask how far down the base we’re going in order to build something new. If we’re heading too far under water, it’s probably worth shelving for now to revisit at another time.

Seven Years

I have memories of a small white kitchen where I first discovered how to prepare the perfect steak. Season the hell out of it, sear it on both sides at high heat, then pop it in the oven. There’s an art to knowing how long you sear it before it goes in the oven, and to knowing how long before you take it out. I still haven’t mastered it yet.

I was introduced to the tricky business of experimenting with goat cheese, fish pies, and Everclear cocktails. I was told that my NYC isn’t the same as everyone else’s, and that’s good. That I should embrace my version of NY. My world of pupusa platters, arepas, Crif Dogs, disco fries, Nublu, and NYU-discounted events. I was introduced to the wonderfulness of “recession specials” and “craptacular” beer buckets, indoor pétanque and drunken table tennis. I went to every street festival as though I was a tourist and every concert as though I was discovering the next soon-to-be mainstream band.

I was told to travel. To leave everything behind and to accept occasional loneliness because being lonely can teach you a lot about happiness. So I found myself taking 2-hour bus rides to beaches in the middle of nowhere, eating fish and chips while reading the paper at Manly, djembe sessions in Bondi, and holding bonfires at Tamarama.

I was encouraged to explore. To feel at home with my stubborn sense of independence. I kept traveling and went to Tokyo, Hong Kong, and Thailand.

I quit my job and I started working on Smashrun. It was like being given a new kind of freedom. I suddenly understood why nearly all the women in my family have owned a business. I still can’t explain to people how happy I get about receiving user emails that start with “I love everything about Smashrun” even when it’s followed with a “but”.

I struggled a lot with the startup transition. I realized, in Santiago, that I was out of my league 50% of the time, I absorbed information 25% of the time, and I probably fucked up the other 25% so that made for a very shitty scorecard.

I somehow managed to get over it. Someone reminded me that I’m capable and that I just needed to get my hands dirty, so I could learn by doing. That it’s not impossible to pick up any programming language I wanted to, or any foreign language for that matter! I was convinced to Duolingo five languages simultaneously.

I keep telling myself, “you can’t reclaim your 20’s”. That’s still the best advice I’ve ever gotten from someone.

I am reminded everyday that having a fulfilling life sometimes mean taking the longest route, being far away, being frustrated, failing a ridiculous number of times, missing deadlines, and being teased by hitting rock bottom.

Broke, but living. Currently, the title of my nonexistent book.

Seven years with this guy, and I can’t imagine being me without him.


This guy tolerates my Mean Girl episodes, silent treatments, and disturbing obsession with ramen. He would give up potato, because I want rice, and skip the documentaries to compromise on sci-fi. He would share whatever dish I order at a restaurant and switch with me, because I chose poorly. He would even switch beers even if he picked the best in the house and I ended up with something that smelled like someone’s foot and tasted like water.

He would chase down mosquitos for me like his life depended on it.

The only person I know who used to put chunks of steak and bacon in burger patties, and makes mashed potatoes with five different kinds of potatoes.

This guy makes the best seared scallops and steak I’ve ever had.

He also FOREVER ruined CGI for me.

Seven years with Chris. Eight countries. That adds up to a lot of beer festivals. It’s never boring and, while I know he’s just pulling my leg, I like to think that he’s telling the truth whenever he says to me that I don’t age. My kind of guy.

Here’s to more of living the good life.


Running Events

Every race is an excuse to celebrate my training, so I’m always on the lookout for my favorite distances. Although, it’s gotten much tougher to find the right events. Mainly, because I’m traveling so much, but also because races have become really expensive.

How is it ever acceptable for anyone to pay $100 for a half marathon?

So, I do a lot of searching, but there’s really no site that can filter by cost, which makes no sense to me. I even went as far as consider creating a website that listed every race but categorize the heck out of it for super awesome filtering by:

  • length,
  • terrain,
  • elevation profile,
  • location,
  • type (fun run vs. adventure trail, for-profit vs. charity-driven etc.),
  • number of participants,
  • and, of course, by cost.

Someone should’ve built that site already. I’ve looked and I haven’t found it.

Why don’t certain events include a route of the run? That’s so lame.

Seriously, just give me an elevation profile when it matters.

I need a better site for race listings. Does anybody know one that lists all or most events internationally, notes the size of each event, and/or has a filter for cost?

I’m currently using,, and Your go-to online resource(s)?