Joanna Goddard has been running her lifestyle website, Cup of Jo, for 16 years. Our friends at the Cut call it “the website equivalent of a Nancy Meyers movie kitchen: roomy, well lit, viscerally appealing.” Goddard is also at the helm of a newsletter called Big Salad, where she interviews people such as Ashley C. Ford and writes about her life, including venturing back into dating after a divorce. Speaking of, this week she managed to do just that with a reservation at Sailor: “There’s something just so magical about going to a restaurant, the whole performance of it,” she says.
Thursday, March 28 My youngest kid is home sick from school, and I have a photo shoot, so I take my kid with me to the shoot. We stop by Poppy’s on the way. We’re lucky enough to live on the same block as its Cobble Hill location, so I go almost every morning. We get banana bread, a lemon-poppy-seed loaf, a mozzarella sandwich, and cookies to put out for everyone at the shoot. We nibble at it and call it lunch.
After the shoot, we head home and I have a sitter in the afternoon for the boys to have another set of hands at the house. They’re 10 and 13, old enough that they don’t need a sitter, but they need someone to keep them off screens and take them to get a haircut, whatever. We have this amazing fleet of young 20-something sitters and I love them so much. I don’t know what I would do without them.
Since my marriage ended last year, my kids sleep at their dad’s on Thursday nights. For my night off, I made a reservation for dinner at Sailor, the newish April Bloomfield and Gabriel Stulman spot in Fort Greene. I’ve been twice before, so I already know how special it is, but this is my first time there on a date. It’s incredible in there — glowing lighting, surprising flavors, servers who seem almost giddy about the food. My date and I share three dishes: green toast, which tastes like spring; vegan stuffed radicchio that reads almost like meat; and the insanely juicy roast chicken with parmesan roast potatoes. Bold statement, but I think Sailor might be the most exciting restaurant in New York right now.
When I get home, I send text updates to the group chat about my date. After I got divorced, I was worried that being the only adult in our house would be lonely, but I have this amazing web of women I can reach out to, and in the group chat, someone’s always going to be awake. It adds this very supportive and cozy chorus to my life.
The Grub Street Diet
A weekly food diary that tracks the eating habits of notable New Yorkers (and, occasionally, non–New Yorkers).
Friday, March 29 I get up early for work and go to Poppy’s. The baristas tell me their gossip and know my regular order: a flat white and a piece of their salty/sweet banana bread.
I work from home during the day, taking calls and sending out our newsletter. This one is about my dating life, so I am a little nervous to send it (so personal!) and lose my appetite for lunch. I’ve written about date outfits and the types of guys I see on Hinge, but this feels way more personal. I’ve written about my life for so long, but I still get a little jittery when it’s something big like this.
In the late afternoon, I get a call from my best friend, Gemma, a screenwriter who’s in town from London. She convinces me to meet her at the Ear Inn for a sneaky glass of English cider. It was cold but we sat outside anyway for the fresh air (or as fresh as it can be next to the Holland Tunnel).
When I get back home, my boys are home from school and hungry, as always, so we order a salad and two Neapolitan-style pizzas from Aromi in Carroll Gardens. The crusts are chewy and blistered, and the toppings are generous — I especially like the capricciosa with ham, artichokes, olives, and mushrooms. The owners are four Italian friends, who feel right out of a Pixar movie. When we went there for my son’s birthday last year, they surprised him with a number 13 made of dough and topped with Nutella and ice cream. There’s so much great Italian American food in Brooklyn, but this place feels, like, Italian Italian.
After dinner, we watch Sing 2. Sing is the perfect children’s movie, and the sequel is a little over the top but still very fun. Bobby Cannavale is in the sequel, and he lives in the neighborhood, and my kids are so starstruck when we bump into him. “That’s the dad from Sing 2!”
Saturday, March 30 On Saturday morning, I let my kids play video games for longer than usual so I can lounge in bed and listen to the new Beyoncé album (my top three: “Ya Ya,” “Ameriican Requiem,” and “Levii’s Jeans”). Then I make coffee while the boys have Cheerios with sliced banana. They just eat a crazy amount. Gallons of milk, loaves of bread, rotisserie chickens, it all just disappears.
At noon, I take them to their dad’s apartment and meet up with a friend to pick up bagels at Shelsky’s in Cobble Hill. There’s a lot of neighborhood bagel drama between Smith Street and Court Street Bagels, so for the time we steer clear of both and go a little farther to Shelsky’s. I’m a very plain-bagel person. I just love regular cream cheese and a slice of tomato on a toasted plain bagel. I know it’s so boring, but I love it. Why mess with success?
Since it’s a gorgeous day, we head to Dumbo to eat our bagels in Brooklyn Bridge Park. Dumbo crawls with tourists on weekends but still has one of the prettiest views in NYC. Lots of tourists make for great people-watching. Plus, sometimes you see that skateboarding bulldog (no luck today, but it happens!).
On the ride home, we stop in Brooklyn Heights for the melty, doughy chocolate-chip cookies at L’Appartement 4F. You get the little crunch on the outside, and then it’s just fully dough in the middle and you’re like, “Is this even edible?” It’s perfect. While waiting on line, I notice that its curtain fabric has little sticks of butter, which adds to the aesthetic. Then we walk across the street and listen to the saxophone player at Books Are Magic. It’s one of those spring days when “New York has its makeup on,” as Gemma likes to say.
At 3 p.m., I join my kids at a family friend’s birthday party at Shipwrecked in Red Hook. They play mini-golf and eat triangular mac-and-cheese bites (I somehow manage to hold off).
After the party, I hang out at home and pour a glass of white wine while talking to my twin sister on the phone. When people find out I have a twin, the first question that everybody always asks is “can you sense things? If she trips, does your ankle hurt?” I’m always like, no. Regular people, regular science. But yeah, she’s the best. After graduating from high school, we’ve always lived far apart, so we’re kind of used to it. Right now, she lives in San Francisco, so we call or text almost every day. Sometimes when you call somebody and you suddenly have to go, it can be hard finding a moment to wrap it up and say good-bye. So, we have this deal where we can just be like “bye!” and then hang up no matter where we are in the conversation. This understanding makes it easier for us to call a lot.
At 8 p.m., I meet a friend for dinner at Popina in Cobble Hill. Its menu is really cool — blending food from Italy and the American South — and there is bocce ball in the back garden. I used to find the food too salty, but I’m loving the new chef’s spring dishes. We sit at the bar and have green Castelvetrano olives and crispy corona beans and crab spaghettini and spicy rigatoni. It’s all delicious.
After dinner, I cozy up on the couch and watch The Bear, which I had never seen. (I know!) I’ve only seen the first two episodes, but I already see why people love it.
Sunday, March 31 After sleeping in and re-listening to Cowboy Carter, I walk to my friend Alison’s house in Boerum Hill for an Easter brunch. I drink a cup of coffee and eat deviled eggs while she convinces her husband to dress up as the Easter Bunny. He acquiesces and then absolutely crushes it, giving all the toddlers high-fives and literally hopping around the garden.
The sun’s sparkling as I walk back home, and I take a nap on the sofa, which is so luxurious! With our custody schedule, I have the kids 75 percent of the time, so when I have weekends off, I try to lean into the freedom. For lunch, I have what my English grandmother called a “smash and grab.” It just means eating whatever’s in the fridge. Before there was girl dinner, there was the smash and grab.
At 4:30 p.m. my kids come back and we head to our neighbors’ house for an Easter dinner party. They have four kids, so there are always a million toys and games and chaos, and they served a smorgasbord of ham, potatoes au gratin, Brussels sprouts, cauliflower, baked feta and tomatoes, French bread, baba ghanoush, hummus, and crudités. It’s so good, and I end up clinking my glass and giving an impromptu toast about chosen families.
Back at home, the boys and I watch Brooklyn Nine-Nine, as one does, and pass out. It’s been a big weekend, and we’re all sleepy.
Monday, April 1 Back to the grind. Before starting work, I get an egg-and-cheese sandwich at Poppy’s called Lil Chick and a cup of coffee with my dad, who has come to town for his birthday. He’s a stiff-upper-lip Brit who drinks his coffee black. It reminds me of a scene in Brooklyn Nine-Nine where the detectives go undercover as longshoremen and, trying to look tough, Jake Peralta orders “coffee, extra black, extra no sugar.”
My dad’s love language is washing your car and changing the oil, which he does for me while I work. He always does the same for my twin, so I send her a picture of him washing my car with that emoji that looks like it’s about to cry.
My younger one has the day off school for Easter, and he pranks us! He and his babysitter make cake pops and they are all excited. While I’m at the bank, they’re texting me, “We made cake pops!” with a cute little picture. And then we get home and they are so excited to give them to me, and I bite into it. Hmmm … it’s weird. My inner monologue is on high alert, but I have to be like, “Yum!” Then I look down and see it’s a Brussels sprout covered in chocolate. The texture was so layered. My dad took a bite of one, too, and he didn’t mind the taste!
For my dad’s birthday dinner, we head to Farina in Red Hook to celebrate. It’s great, and we have a lot of fun. The crew is my kids, me, my dad, and my good friend Ryan, who knows my family super well, and his girlfriend Liz. Farina has this really delicious starter, which is a giant ball of mozzarella. It’s so big, it looks like burrata, but it’s just fresh mozzarella that they make. The staff tells us that the longest distance it travels is from their kitchen to the table. They make it the beginning of every shift. The mozzarella dish comes with marinated beets, which are sweet and yummy, and arugula and puffy bread. It’s the best thing we order, but the pizzas are very good, too. We have a sausage and broccoli rabe, a margarita, and one with artichokes and pancetta. And then we go home for birthday cake, which is a much better birthday treat than a chocolate-covered Brussels sprout.
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]