Bites

Bites is the developer site from the team building the platform for local food shopping and distribution at goodeggs.com. Here we share our experiences building applications with full-stack JavaScript, our open source projects and insight into a developer's life at Good Eggs.

CommonJS Modules Make Brittle Singletons

Adam Hull on

We occasionally rely on node's module caching to share a single instance throughout a full-stack javascript project. This strategy breaks more than we'd like.

If modules butternut and delicata both require('squash'), they'll usually get the same (think ===) squash instance. But not always.

Here are a couple times it hasn't worked out.

Getting started with Selenium Webdriver for node.js

Max Edmands on

If you're writing a web application using node.js, you will want to spend some time writing integration tests for it. At Good Eggs, we use selenium-webdriver for our integration tests. It's a reliable and comprehensive library, but finding great documentation on the internet is surprisingly difficult. That changes today. Here's a step-by-step guide to start controlling a browser using selenium-webdriver for node.

Things Last: Work vs School

Sarah Sterman on

In school, nothing lasts longer than 10 weeks--at least if you’re on the quarter system that Stanford subscribes to. A few do, like your roommate or your unfortunate streak of nights where you had to drink coffee after midnight, but, otherwise, your life is turning over every quarter of the year. New classes, new projects, new teammates.

The funny thing about work in the real world: things last.

Speed up your responsive app with Node and Varnish

Adam Hull on

This is the fourth article in a series of posts detailing the launch of our mobile site.
  1. Good Eggs Goes Mobile
  2. Rivets for Mobile Web
  3. Planning Page Load Sequence
  4. Speed with Node and Varnish
  5. Appropriate image sizes with imgix
  6. Integration testing over unit testing

Conversations about responsive design often focus on the browser: media queries, grids, and the like, but there's more! Creating a great experience on all sorts of consumer-grade doo-dads demands some work on the server.

On Good Eggs, shoppers with full-sized computers don't want all their grocery aisles hidden behind a collapsible menu. The markup to generate the desktop navigation is different enough from the mobile navigation that using media queries would be a stretch (heh, get it?). By trimming the more complicated desktop markup from the mobile response, we save precious page weight for a faster load time.

Let's take a journey along the request-response cycle to illustrate how we send different responses to different devices while maximizing cache hits:

Flow Diagram

Being an Intern at Good Eggs

Estefania Ortiz on

My name is Estefania Ortiz and I am a rising Junior studying Computer Science at Stanford. This summer I am working as a Software Engineering Intern at Good Eggs. A typical conversation when meeting or running into other interns in the area usually goes something like this:

-Hey! What are you doing this summer?
-Interning at Good Eggs, working on the Shopping Team.
-Cool, what are you working on?
-I'm doing full stack web dev.
-Yeah, but what’s your project?
-Emm, the website...

Given that a lot of interns have an intern project, this conversation can be a little awkward sometimes. Questions like How do you get evaluated? and How do you know what to do? often come up, and to be completely honest I have been looking for answers to these questions myself during the summer.

So far this is what I've got...

Video: A Conversation on Service Design with Airbnb, Good Eggs and Lyft

Alon Salant on

Last Wednesday, Aug 6, we hosted A Conversation Service Design with Airbnb, Good Eggs and Lyft. Here's the video of that conversation for those who were unable to join us in person.


Thanks to Patrice Martin from IDEO.org for her skillful moderating and to Katie Dill from Airbnb, Robin Bigio from Good Eggs and Frank Yoo from Lyft for their great insights. Thanks also to those who shared photos and thoughts with #cultivatedesign.

What I learned

One concept in particular stood out for me. It was the idea that you can't actually design all touch points of the customer experience across a service that spans the physical and digital realms and where much of the actual service is provided by a third party. Rather, identify and nurture a set of core values across all members of your team, your customers and your service providers and allow them to manifest those values in ways that are natural to them. Through this you will find behaviors emerging out in the wild that are consistent with those core values and result in a remarkably consistent experience for all involved.

For Airbnb a core value is that the host is the hero of the guest experience. For Good Eggs it is the mission to grow and sustain local food systems worldwide. For Lyft it is a quirky style that celebrates individualism.

What did you learn?

Loud and Proud: What's Your Ideal Workplace?

Adam Perelman on

Imagine your ideal workplace. What’s it look like? More to the point, what’s it sound like?

The Good Eggs foodhub in San Francisco, where the engineering team resides, isn’t the quietest place I’ve ever worked. Every morning, there’s local farmers wheeling in crate after crate of watermelons and tomatoes and so much more. There’s the sound of our operations team working to get all that food into the right bins and later into the right cars, delivering people good, local food, grown with integrity. There’s the chatter of the daily standup meetings that spring up all around the foodhub throughout the morning as each team gears up for the day.

Is all that action distracting? Not for me! I absolutely love it. When I wake up every morning, I can’t imagine a better, more exciting place to go work. Our foodhub isn’t a shrine to silent contemplation. And it shouldn’t be. It’s a living, breathing part of the new food economy that we’re helping to build.

There are two things in particular that I love about coding in the foodhub.

A Conversation on Service Design with Airbnb, Good Eggs and Lyft

Alon Salant on

Eventbrite - A Conversation on Service Design with Airbnb, Good Eggs and Lyft

Recent years have seen the rise of companies that serve well-established needs in people’s lives with novel supply chains built on the resources and hard work of individuals rather than faceless corporations.

Airbnb provides travel accommodation by aggregating rooms, apartments and houses from individuals around the world. Good Eggs provides home groceries by aggregating food available directly from local farmers and foodmakers. Lyft provides daily transportation by connecting passengers to people with cars and spare time.

Travel accommodation, groceries and transportation are age-old needs. These companies are serving them in new ways with hybrid online/offline services that build on the ubiquity of internet technology to organize complex supply systems into simple-to-use services for their customers.

How do you design and deploy a brand across digital and physical experiences? How do you provide a consistent customer experience when much of the product experience is provided by a third party?

Join us for a conversation on the challenges, learnings and opportunities in designing for these kinds of services.

This event is a panel discussion with leaders in design from Airbnb, Good Eggs and Lyft.

Katie Dill, Experience Design Lead, Airbnb
Robin Bigio, Creative Director, Good Eggs
Frank Yoo, Director of Product Design, Lyft

Moderated by Patrice Martin, Co-Lead + Creative Director, IDEO.org

Doors open at 6:30pm for great nourishing local snacks and drink from Good Eggs producers. Panel discussion starts at 7:30pm. Doors close at 9:30pm.

Eventbrite - A Conversation on Service Design with Airbnb, Good Eggs and Lyft

Out of the frying pan

Erik Pukinskis on

I am 32 and Good Eggs is the first company I have ever drawn a salary from. That wasn't exactly my intention. As a teenager I sketched out user interfaces in my room and dreamed of working at Pixar or Alias|Wavefront. But I guess my most exciting opportunties were always hourly gigs, contracting jobs, grad school, and—most recently—founding a startup.

I like design and development because they are super creative, but I can't resist applying that creativity to management philosophies, corporate structures, and every other aspect of a business. That can make it hard to work for other people, who will inevitably have different ideas about how things should work.

Founding a startup is an alluring alternative. There's no technical debt to work around. There are no power structures you have to reckon with. You can call shots all day without worrying much about stepping on other peoples' toes. You make compromises and code up ugly hacks, but they're your compromises and your ugly hacks.

It's addictive.