This article was written as part of our initial docs. I have many more articles about React, and I’m debating whether I should cover them in a single article, or multiple. Stay tuned.
At Clear Labs, the web app is a front-end application built on top of React. React is a javascript library that, when paired with other libraries, creates a front-end framework. In our project, we have React on the front-end and nginx serving the assets on the back-end.
If you are starting React with no previous knowledge, please start with the official docs.
Once you have familiarized yourself with the library, play around with it on Codesandbox or on your local system using Create React App. If you can build yourself a basic UI, continue reading this wiki.
Base Foundation
To build with React, each developer should hone their vanilla Javascript knowledge. Please refer to the Javascript wiki to see if you have any missing gaps in your knowledge base.
A must for each developer onboarding is a clear understanding of how React works. This includes the following:
What are React’s lifecycle functions? And how are they supplemented with React hooks?
Why would I use a React class component over a functional component? And when?
This post tries to address these questions and many more.
Newer React Functionality (React v15+)
The application uses many techniques that are worth highlighting because we’ve developer our own set of best practices to follow.
React Context
React Hooks
React Performance APIs (useMemo, useCalllback)
Supporting Libraries
Many supporting libraries help support the development of the app. Most of these supporting libraries are open source and have dedicated wiki pages. Here are the highlights:
React-Final-Form
Downshift
d3
i18next
Luxon (migrating from moment)
Components
Our project includes Storybook, an interactive UI tool to develop and document components. In each component, an extra js file is created with the stories suffix. E.g. index.stories.js. This helps with developing components on their own and reduces overhead with creating component properties.
Refactoring class components to functional components
Lifecycle functions can be replaced with useEffect. But be careful, as we mentioned in useEffect vs useLayoutEffect, useEffect is asynchronous and lifecycle functions aren’t a 1
match.
componentDidMount() {// do something}// now becomesuseEffect(() => {// do something}, []);
Building Components
While the previous section introduced us to components, this section expands on how we write components.
Class or Function?
When creating a new component, start off with a function component. What is a function component?
const FunctionComponent = (props) => <div>Here's the JSX</div>;
A function component is an easier markup to read. To React, a function component vs. a class are indistinguishable. As developers, we aim for clean code. Ask yourself the following questions of whether you might need a class.
Do we need lifecycle functions? If this is yes, evaluate whether you can use Hooks instead. If not, use a class.
Do we need a constructor? Rarely do we need a constructor. If you need one ask what special cases are you doing to state or what the justification is for other constructor needs.
Does the component need private or public methods? On a rare occassion, we may want to expose a public class method. Use a class.
Maybe there are private methods a class should have. Use a class.
In general, for most components are function components. With the introduction of hooks, function components can also have state. We have our own section about hooks too.
Component or PureComponent?
If using a class, we can further ask whether a PureComponent should be extended vs. a Component.
Compound Components
Compound components allow you to create and use components which share this state implicitly.
Other Related Articles
I’ve written a few other React articles, as shown below:
The following guide is a modified version that we use at Clear Labs dev team. It’s a starting point for team dev work and contribution.
When contributing to this repository, please first make sure a ticket is filed for the change, whichever ticketing system is used.
At Clear Labs, we use JIRA, but the same can be done for Github issues, or any other ticketing system.
Please note we have a code of conduct. Please follow it in all your interactions with the project.
How To Contribute
When beginning development, you will need to create a git branch. See Git Branches
for more information about naming your git branch.
Git Branches
The app has three main branches.
develop ➡ Maps to the Development environment
main ➡ Maps to the Production environment
release ➡ Maps to the released versions on the Production environment (we have slow release cycles, )
In development, a developer will create a feature branch, named after a ticket number, e.g. ENG-2120.
When the ticket is ready to test, the develop will create a pull request (PR) against the develop branch.
When a set of features are completed, a PR will be created between the develop branch and the master branch.
Before the PR is merged, the developer needs to tag the develop branch with the proper version tag.
QA will approve this PR when they are ready to upgrade the QA environment with the developer’s latest changes.
When a set of features are tested, a develop needs to create a PR between the main and release branch.
When QA approves this PR, the developer will tag and merge this PR.
Naming Scheme for CI
Name your branches with these prefixes. This will test and build the application in our CI.
ENG-*
hotfix-*
feature-*
Commits
All commits need to contain a ticket number. If a commit does not contain a ticket number, the push to Bitbucket will not be allowed.
Example:
git commit -m “ENG-2120 resolve breaking change from GraphQL API for test runs”
In case a commit does not contain a ticket number, you have a few strategies to resolve this:
rebase against develop. git rebase develop -i
if it is the latest commit, you can amend it. git commit --amend
Pull Request Process
Ensure any install or build dependencies are removed before the end of the layer when doing a build. Please use the .gitignore file for ignoring unnecessary files. Make sure all commit messages have a JIRA ticket tag. e.g. git commit -m "ENG-100 commit message"
Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. If there are changes to development, please update the development guide.
If creating a PR to master branch, tag the develop branch with a bump in the version. The same goes for a PR to release by tagging main. For develop ➡ main branch, take the base version, add a hyphen, and concat the date (mm/dd) plus an incrementor. e.g. v1.6.0.0.1-Feb.01.1 For master ➡ release-candidate branch, give the version. e.g. v1.6.1. For additional information about versioning, please refer to the next section.
JIRA should add a list of commits going into this PR. If not, please add them with the JIRA ticket tag.
You may merge the Pull Request in once you have the sign-off of one other developer, or if you do not have permission to do that, you may request the second reviewer to merge it for you.
Preleases are used for git tagging between develop and master branches. This is denoted by an alpha-{number}, e.g. v0.9.13.alpha-1
Releases are versioned without prerelease words, e.g. v0.9.13
For hotfixes, bump the patch version. e.g. v0.9.13 -> v0.9.14
Upon later inspection, we no longer use prereleases.
🚨 Deprecation Notice
Moving forward, release-candidate will be deprecated in favor of using main without release.
Code of Conduct
Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
Our Standards
Examples of behavior that contributes to creating a positive environment
include:
Using welcoming and inclusive language
Being respectful of differing viewpoints and experiences
Gracefully accepting constructive criticism
Focusing on what is best for the community
Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
The use of sexualized language or imagery and unwelcome sexual attention or advances
Trolling, insulting/derogatory comments, and personal or political attacks
Public or private harassment
Publishing others’ private information, such as a physical or electronic address, without explicit permission
Other conduct which could reasonably be considered inappropriate in a professional setting
Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Engineering Manager. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.
These notes are a guide I’ve written throughout coding the initial part of the application. The note starts out with fundamentals and continues with specific testing edge cases.
Philosophy
Write tests. Not too many. Mostly integration.
Guillermo Rauch
The more your tests resemble the way your software is used, the more confidence they can give you.
Kent C. Dodds
This project focuses mainly on integration tests. Why? We shouldn’t mock too much as the tests themselves become unmaintainable.
When you make any changes to the code with tests that have a lot of mocking, the tests also have to be updated.
Mostly manual. And we end up creating more work for the developer than is actually worth.
Code coverage also isn’t the best factor to aim for. Yes, we should have tests to cover our code. No, we shouldn’t aim for 100% coverage.
Pareto’s law can apply here. For most cases, we expect few test to cover most use cases. At some point, there’s diminishing returns.
Out of the box, the testing framework and its tools are installed with dependencies.
For more information, checkout the installation section of the README.
Unit tests are run before a building the Docker container.
Tests are run with Jest, that has the Expect expectations library given.
As mentioned in the testing philosophy, we try not to focus on mocking. Sometimes this is inevitable and we have included Enzyme for shallow rendering.
Use shallow sparingly. For more, read this article.
yarn test
Additional Commands
If there are any jest flags you want to add to your tests, like watch mode or coverage, you can add those flags to the command.
Watch
# Run tests in watch modeyarn test --watch
Coverage
# Run a coverage reportyarn test --coverage# This will build a `coverage` folder that can be viewed for a full coverage report
Single file or folder
# Run tests over a single fileyarn test src/path/to/file# Run tests over a folderyarn test src/path/to/folder
State Management Testing
Test all actions, sagas, and reducers.
Action tests are ensuring the action creators create the proper actions
Reducer tests are ensuring the state has been changed properly
Saga tests are more for E2E testing, making sure all side-effects are accounted for
Move data fetching code or side effects to componentDidUpdate.
If you’re updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state
Rename componentWillReceiveProps to UNSAFEcomponentWillReceiveProps to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE name will work. To rename all deprecated lifecycles to their new names, you can run npx react-codemod rename-unsafe-lifecycles in your project source folder.
Please update the following components: *
With a move to React v16.8 -> v16.9, componentWillMount, componentWillReceiveProps, and componentWillUpdate lifecycle methods have been renamed.
They will be deemed unsafe to use. Our library has updated already, but some libraries may still use this.
Known libraries with issues:
react-dates
react-outside-click-handler (dev dependency to react-dates)
Invariant Violation: Could not find “store” in the context of “Connect(Form(Form))”.
Either wrap the root component in a “Provider”, or pass a custom React context provider
to “Provider” and the corresponding React context consumer to Connect(Form(Form))
in connect options.
Solution
Add imports
import { Provider } from "react-redux";import configureStore from "redux-mock-store";
Create the mock store. Wrap renderer with provider.
You’ve included redux in your test, but you might get the following message.
[redux-saga-thunk] There is no thunk state on reducer
If this is the case, go back to your mock store and include thunk has a key.
it("renders a component that needs to thunk", () => { const mockStore = configureStore(); const store = mockStore({ thunk: {} }); // Be sure to include this line with the thunking const tree = renderer .create( <Provider store={store}> <TestedComponent /> </Provider> ) .toJSON(); expect(tree).toMatchSnapshot();});
i18n Error
Sometimes, an i18n provider isn’t given. The error doesn’t appear to be useful.
TypeError: Cannot read property ‘ready’ of null
Check if the component or a child component uses the Translation component. If so, Translation requires context Provider be wrapped around.
Solution
Add imports
import { I18nextProvider } from "react-i18next";import i18n from "../../../test-utils/i18n-test";
Rerun the test and check the snapshot. If the snapshot looks good, add the -u flag to update the snapshot.
Apollo Error
If the component requires an apollo component, you will want to pass in a mock provider.
Invariant Violation: Could not find “client” in the context or passed in as a prop.
Wrap the root component in an “ApolloProvider”, or pass an ApolloClient instance in via props.
Add imports
import { MockedProvider } from "@apollo/client/testing";
TypeError: Cannot read property ‘createLTR’ of undefined
Solution
Solve by adding the following to the top of the test file
import "react-dates/initialize";
As of v13.0.0 of react-dates, this project relies on react-with-styles. If you want to continue using CSS stylesheets and classes, there is a little bit of extra set-up required to get things going. As such, you need to import react-dates/initialize to set up class names on our components. This import should go at the top of your application as you won’t be able to import any react-dates components without it.
Final Form
Warning: Field must be used inside of a ReactFinalForm component
When you use the test renderer, this won’t work.
For an exhaustive way of triggering events, check out
this post.
The preliminary solution is to run act from the react-test-renderer library.
Currently, there is no documentation to this, so it’s best to
read the code.
Here’s how we use act.
it("creates component with useEffect", () => { // Create your tree const tree = renderer.create( <TestComponentWithEffect>My Effect</TestComponentWithEffect> ); // Tell the renderer to act, pushing the effect through renderer.act(() => {}); expect(tree.toJSON()).toMatchSnapshot();});// Drawbacks:// - Can't handle flushing (yet)
This will be revisited as the API matures.
Dealing with Time
If you need to mock time, you could use this implementation.
const constantDate = new Date("2019-05-16T04:00:00");/* eslint no-global-assign:off */Date = class extends Date { constructor() { super(); return constantDate; }};
I’ve been a bit fascinated by an episode of the Cortex podcast about Yearly Themes.
In the episode, Myke and Grey discuss what the over-arching theme of the year is. If I were to make-up a theme for 2018, it would be reinvention.
I’m in an inflection point of my life. One where I’m ready to let go of my past and look forward to things to come.
Recap
January-February
I was working at Inform in our new office - a co-working space that felt more like a downgrade. I wanted to line up another job so I could quit.
As a co-worker said to me later, “What are you still doing here?”. Touché.
Traveled to Las Vegas to visit friends and get my TSA pre-check.
Around mid-February, I interviewed and accepted my new place of work. Clear Labs. Hired on as a web developer.
March-May
I started my new gig. Forgot how much work it is being at a start-up, but quickly landed on my feet as we build the software from the ground up.
Traveled to Portland for a quick visit to see friends.
Ended April with a vacation to Norway and Sweden with my friend, Teagan. We saw the fjords, viking ships, and some questionable art.
The Questionable Art Pose
Visited the Color Factory & Ice Cream Museum. Watched my sister graduate college. Found out my co-workers at Inform got laid off.
June-July
Participated in my first Kubb competition. Was dating someone I thought could be good for me…
Got Life Insurance. Really didn’t think I’d need this, but after the financial incentives, I had to get it.
Reeling back from slow heart-ache.
September
The busiest month this year. Married my friends. Watched different friends get married in Colorado Springs. Started dating someone substantial. Went to St. Louis for the 2nd time for the Strangeloop Conference.
October-November
Participated in my very first triathalon. It was a relay, and I did the biking portion. We got third!
A Japanese experimental comedy-horror film that revolves around a group of seven schoolgirls who travel to one of their aunts' country homes, where they encounter supernatural events.
This is my last letter for the series, “Seven Degrees of Strangers”. If you haven’t followed the journey, you can check it out on my website. I’ve written about 6 different people I talked to one degree of separation apart.
For those of you who may have noticed an error, the phrase is six degrees of separation, not seven. I would like to say I did that on purpose. I didn’t. I could have lied and said this is to close the loop. To be frank, I was deluded by my title, I thought this would be a great experiment.
Nevertheless, Raina chose a wonderful person last. Someone with a perspective I don’t have, yet we had a fantastic conversation.
Enter Megan Jolly
Megan lives in Portland and met Raina through a basketball camp Raina’s husband was starting. I believe Raina chose to ask me to speak with Megan because of Megan’s vision impairment. She has Leber’s disease, a mitochondrial defect that affects the optic nerve and can lead to blindness. Men are more prone to blindness from this recessive trait, and Megan is one of the unlucky ones in the gene pool. She found out in 2016 when she was getting a new prescription for her glasses. That was subsequently the last time she drove.
Going Blind
Megan isn’t completely blind. She’s got no central vision and about 45% of her peripheral vision. Before her diagnosis, Megan’s life was playing soccer, working in non-profit land, hanging out with friends. And after the diagnosis, Megan still does many of the same things, but some activities are a lot harder. Since Megan doesn’t drive, she relies on public transportation. While service is good in Portland, it takes longer to travel. Also, Megan can’t do some of her finances, so her friend became her power of attorney since the banking website she’s supposed to use has poor accessibility support.
For the first two months, Megan’s life wasn’t going well. A few months in, Megan’s mom found the Oregon Commission for the Blind and got her to sign up.
Oregon Commission for the Blind
The Oregon Commission for the Blind is a state agency with paid staff to help teach the blind best practices by delivering courses. They also help students find jobs. The classes run 4 terms a year and each of them lasts around 12 weeks. These classes range from orientation and movement to sightless self-defense.
The instruction is 1 to 1, tailored for each student. Everyone’s skill level is different, like computer competency. Megan’s an expert at using a computer, so the teacher tailored her education accordingly. Someone with no computer skills would have to start out as a novice, like starting by using a keyboard.
While the curriculum has some general guidelines and best practices, the teachers help with one-off things too. Megan wanted to vote for the upcoming election but didn’t know how to do it. Her instructor and she went to the voting station and the person manning the booths didn’t know either. They investigated and figured it out given some other voting staff support.
The commission’s job is to help the blind reach the point of doing what people normally do. Megan loves to hike, so with her instructor James, she’s been able to hike around. Some spots are a bit tricky than others. She recommends Angel’s Rest if you’re every around Portland want to see an awesome view of the Columbia River.
As I was doing some follow-up research about the organization, I ran across this quote. “The real problem of blindness is not the blindness itself—not the acquisition of skills or techniques or competence. The real problem is the lack of understanding and the misconceptions which exist.” It’s from the National Federation for the Blind. After talking to Megan, I walked away with a better understanding of blindness and how it affects us.
Takeaways
I loved talking to Megan. I was able to learn how her disability does not limit her. She told me how the commission has sightless defense classes, how students there come to learn about blind athlete events such as dragon boat races. She is mentally competent, and would like some kind takeaways for readers.
If you come across a blind person, please ask if they need help before helping them.
Don’t touch them. Introduce yourself and ask them if they assistance.
For my web developer friends out there, please build websites with accessiblility in mind
I’ve opened my eyes to a new kind of awareness by talking to Megan. So if you have the chance, strike up a conversation with a visually impaired person. You never know what you’ll learn.
Acknowledgments
I want to take this opportunity to thank everyone who helped me with this project. This wouldn’t be possible without all of you readers who have stuck with me, even while I went through a few months hiatus. It’s time for me to re-read Steven Pressfield’s “The War of Art”. First, I’d like to recognize Megan Gebhart whose blog turned book, 52 Cups of Coffee, inspired me to write this short series.
Of course, I’d like to call out every person I got to interview. To my good friend, Simon, who helped kick off this series and being kick-ass at what he does and reminds me how much potential we have. To the fantastic Evan whose illustrations elevate the writing and logo that signifies the connections between all of us. To Joe for being such a great storyteller and having such a great philosophy on life. To Mary who gave me a phone call earlier this year and continues to remind me how much connections matter. To Julie for writing a book that read after and uses her last concept as a mantra for life. To Raina for waiting patiently for my piece to come out and for reaching out and being a champion. To Megan for showing me a part of life I rarely get to see. You all have been great guests, and I thank every one of you.
And I thank my family and friends for sticking with this series. Your feedback has inspired me to continue writing. And maybe had to stick around and were forced to listen to me talk about all of my guests. Thank you. You’re the best.
If you’ve been keeping up with me for this long, that means I have some loyal readers out there. Hi, it’s been a while. Haven’t spoken about this project in forever. I’ve had this aching feeling of completing this project for months. Every time I would start, I’d get distracted by something else. A new job, obligations, travel. Needless to say, I had trouble with time management for creative pursuits.
And now I’m back. Ready to tell you about the last two people I interviewed for “Seven Degress of Strangers”. This week, I’ll recall a conversation I had with Raina Evans, last September. Yikes. Raina, if you’re reading this, I’m truly sorry this took so long.
Enter Raina Evans
After speaking with Julie, I asked for someone diverse, with a varied background. Enter Raina Evans.
Raina and Julie’s ex-husband used to work for a youth organization in the mid to late 90s. Her daughter and Julie’s oldest son used to play together and were the same age.
On the day I spoke to Raina, she had finished a nice brunch with her daughter and grandchild at Black Bear Cafe. Raina was radiant. This woman was full of energy, excited to talk about what she does and what she’s accomplished.
Raina’s worn many hats. She is the current owner of Ready to Rent, a program to train residential renters. As the owner of the program, Raina trains the instructors of this program. After speaking to Raina, I only found a glimpse of how rich her life really is.
She adds so much detail through her language and exuberance of how she talks. It showed in our conversation in the tiniest details, like her mention of how her brunch went. I knew this was going to be an interesting conversation.
Ready to Rent
In the early 2000’s, Raina was working at the Portland Housing Center. This organization she worked for ran a training program for first time renters. They called the program “Ready to Rent”. In 2006, the board wanted someone to run this program. They asked around, but couldn’t find someone with the right skill set. They kept getting candidates with social work backgrounds. What they were looking for than management and marketing backgrounds. Putting two and two together, and they looked at Raina’s background and saw a great fit. But the first time the board asked her, Raina refused. They came back a few days later and asked again. And again, she refused. On the third try, Raina relented. She just got married a few months prior and lost her position on the board. The new marriage came with their own children. Raina thought this was the third time, and perhaps this might be her calling.
Raina gave the board one year to try it out. And then it turned to giving it a second year. By the third year, Raina stayed at this position. But the board came back and told Raina they would be cutting the program. The board chair asked Raina if she might want to run “Ready to Rent” as a private entity. Ready to Rent’s curriculum is one of a kind. There isn’t one quite like this. Raina, with the support of the chair, spun this out on her own. To her surprise, the program grew. A lot. Raina took this operation across the US and Canada. She trains instructors to be certified in the program.
By 2010, Raina took the IP from the commission. She’s been working at this for a decade and still going strong.
Memorable Moments
I asked Raina what were some memorable moments she’s had training adults. She gave me two stories.
1
On the big island of Hawaii, the mayor of Hawaii country was amongst the group Raina trained. Raina doesn’t jump into the material on the first day of training. She focuses instead on how adults learn. After that first day, Raina jumps into the program.
The mayor spoke with Raina after the class was over and said, “Now I get it. We’ve been communicating wrong this whole time. We’ve been communication with our people and with clients the wrong way. You taught us how adult learners learn.” The course changed the policy on communicating with others. This was an eye opening experience for the mayor.
2
Raina came out to teach in Sacramento, California. During the first week, she taught city and county workers. The second week, she taught a consortium of agencies. Today, about 100 trainers in Sacramento delivers this curriculum. But it didn’t stop there. The woman who first asked Raina to teach in Sacramento moved to another county. She asked Raina to teach people in the county over as well.
Raina continues to thrive by a viral effect. The cirriculum is effective from years of iteration. People take away a lot from the course. All in all, Ready to Rent continues to grow through word of mouth. As Raina puts it, “the program markets itself.”
3
Raina’s niece and boyfriend had a baby shower. The family’s mother came out from the other side of Mt. Hood. Essentially the boonies. They may be the only African American family in their town.
The mom was talking about how they send clients to Ready to Rent. She asked Raina if she heard of it, and Raina revealed she’s behind it. “You are ‘Ready to Rent’?” Raina proves word of mouth is one of the best techniques in marketing. Also, Raina’s right. The curriculum is so good, it does market itself.
Class Evaluations
One of the requirements of teaching the course is distributing class evaluations. At the end of the course, students fill out class evaluations and get sent back to Raina. This helps Raina gauge how the students and teachers are doing and if the classes are of quality. One of the questions on this evaluation asks the students how prepared they are in renting. The students always respond with similar answers: Yes, they are ready.
There’s also freeform text where the students can give back general feedback. Raina was blown away when she read the student “no longer has to lie on housing apps”. Ready to Rent was taught in prisons, and the inmate had that profound realization.
To circle back to the viral effect, 80% of evaluations show they would recommend the course to a friend. Raina often sees the same feedback. “Everyone needs to take this course”. Former students bring “Ready to Rent” up at church, AA meetings, at work. All over.
Takeaway
Raina’s takeaway message was “you never know what your calling is. Leave yourself open to everything”.
Conclusion
After each interview, I realize I want to continue the conversation. Each person I’ve spoken to for this newsletter have more stories to tell. Many more than could ever fit in a one hour time slot or 300 page biography. And, as I truncated an hour-long interview for you, dear reader, I have no doubt I could write so much more.
At the end of our conversation, Raina told me about a talk show she hosted on local broadcasting. This was back in the late 80’s, and it was called “Let’s Talk with Raina”. Raina was talking about inclusion and diversity. I have a huge interest on teaching diversity to youth and Raina and I could talk for hours about this.
At my new job, because we’re building the project from the ground up. The team decided to move forward with a css-in-js approach, which perked my ears. First I was skeptic. How could this remove my css files? What about psuedoelements and complex selectors.
Having worked with it for three months now, I’m a convert. Those initial skepticisms wore away as I started to write React with styled components in mind. Before I jump into a length explanation, let’s do a starter demo.
Intoduction through exercise
import React from "react";import styled from "styled-components";const Wrapper = styled.div` padding: 1rem;`;const MainContent = styled.div` font-size: 1.2rem; text-align: center;`;const App = (props) => ( <Wrapper {...props}> <MainContent> Lorem ipsum dolor sit amet, vim at quando possim oporteat, eu omnium apeirian argumentum per. </MainContent> </Wrapper>);
A slice of life look at Oscar Grant on the events preceding getting shot and killed by a BART police officer on January 1, 2009, at Oakland's Fruitvale Station.
This year has been tough. Stressful, hard to bear, testing my beliefs. Yet, for all the negative events, I still found time for finding myself and having a deeper understanding of life.
I have not come out publically to talk about my friend’s suicide. It was painful. And then a ex-co-worker died. Then a family friend. Then my backpack was stolen. After that event, I crashed. My emotions got the better of me. I went hermit mode for a month, unsure if I could come out. But I’m reminded I have friends along the way, helping me through the tough times. I also have the option to seek grief counseling. The world can be cruel. The world can be delightful. Depends how you look at it.
So as I take the time this year to reflect on my list of accomplishments, I also reflect on the unexpected. Here’s my list.
The List
I gave a speech at my friend’s wake. I told a story about the last time we hung out. He told me a crazy story where he met a hangglider while hiking. The glider asked my friend if he wanted to try hanggliding. Of course, my friend accepted. The next day, he’s harnessed with the stranger, and he said he felt so serene up in the air. He fell asleep for an hour. When he woke up, he tapped the stranger and told him how peaceful he felt. The glider said my friend was crazy.
I traveled to St. Louis, Missouri, marking off one more state. 15 to go for my goal of all 50 states before 30.
I wrote two series of newsletters. One on repeated failures. The other interviewing people about communication and connection.
I went to New York within a month time-frame for two different conferences. I’m inspired to be submit a call for proposal for conferences next year.
I watched more films this year.
I attended too many talks and lectures to count, ranging from group biases to the history of women in the Black Panther movement.
Attended the “Papers We Love” conference and got to meet some developers I always wanted to talk to
If this is the first time you are reading this series, welcome. This is a series about communication, connections, and perspectives. My last interviewee, Mary Aipoalani, gave me too many choices on who to interview next. I was in choice paralysis until I received this text from Mary. “You need to connect with her. I just told her about you.”
Attached to the text was a VCard, a digital business card that makes it easy to add them to your contacts list. Or at least in theory it’s supposed to be easy. I had the complication of incompatible file formats. Android phones hate Apple’s VCards attachments. If you ever run into this problem, save the VCard text to a computer and add it to your contacts online. And if you’re a iOS or Android developer, please make this integration easier. Thanks.
Enter Julie Valenti
Julie is alive, energized by the southern California sun. She harnesses that energy and uses it to help people rewire their brains. Rewire metaphorically. Her hidden agenda is by rewiring brains, people will be more alive. And by being more alive, she hopes people can become contributors and producers in our world. In turn, she hopes people consume less.
Let’s step back for a moment. Who is Julie? She’s a new resident of San Diego. She moved here because she’d rather soak up the sun than live in a cloudy and low-lit place like Portland, Oregon. She lived in Portland for the past 23 years. From Portland’s dreary weather, she developed SAD - Seasonal Affective Disorder. When Julie’s friend invited her to come out to San Diego months ago, she knew she had to move there.
Besides sun worshipping, Julie is the owner of Portland’s Wisdom and Recovery Wellness Center. She works with patients who suffer from confusing childhoods. This is post-traumatic stress disorder in childhood. This is a result of bad parenting. The range varies from parents who were abusive, or neglectful, or emotionally taxing.
Julie’s center has been around for over a decade. Julie has been in practice from much longer. Julie is also an author. She wrote a book called “Knowing How: The 20 Concepts to Rewiring Your Brain” based off her practice.
Empty Nest Syndrome
Julie cites one of the reasons to move to San Diego was to be closer to her youngest son. Her son was the last child to leave home. He moved to Los Angeles, and Julie wanted to be able to visit.
I asked Julie what was a mother’s perspective on empty nest syndrome. Julie explains “empty nest syndrome” is a fancy term for grief. When children are around, the mother produces a bonding hormone, oxytocin. When the children leave the nest, the mother stops producing as much oxytocin. A result of the hormonal change is the same symptoms of grief and loss.
The mother must come to her terms with the life adjustment. When neglected, the result is oftentimes a “mid-life crisis”. She withdraws and re-evaluates herself. When recognized, the mother feels it in her body.
The mother must setup boundaries with her children. The child is in a different place with life, independent from the nest. Part of the re-adjustments Julie talks about is developing boundaries with the children. For Julie, she had a conversation with her son in LA. She asked how often they would talk over the phone, how often they would see each other, how much space they needed from each other. Julie wants to make sure she would not suffocate her child.
I asked Julie about empty nest syndrome for personal reasons. My sister, the youngest sibling, has left the nest. My mother hasn’t been dealing with empty nest syndrome head on. Armed with a better understanding, I am tasked with having a conversation with my mom about empty nest syndrome and grief.
Wisdom and Recovery Wellness Center
Julie works with patients who suffer from PTSD introduced from childhood. She spends every two weeks in Portland to help with logistics for the center. When she’s back in San Diego, she takes clients remote. When Julie is on-site, she is also training staff members.
To be clear, Julie is not practicing traditional psychotherapy. That means, clients do not come in and lay on a couch for an hour every week for the rest of their lives. Julie is a licensed hypnotherapist. She wants her patients to heal and be less dependent of a therapist. Stop going altogether.
Neuroplasticity
“You can’t teach a dog new tricks.” This is not true. Brains are not fixed after a certain age. Recent research shows neurons that fire together wire together. The result is neuroplasticity, an ability to rewire your brain. By taking the time to learn or un-learn, the brain will form neuropathways that forms new habits.
Carol Dweck wrote a book about this called “Mindset: The New Psychology of Success”. In the book, Dweck describes and differentiates between fixed mindsets and growth mindsets. Dweck talks of people with fixed mindsets are less prone to take risks and fail. She talks about how people with fixed mindsets shut down after unable to do specific tasks. On the contrary, people with a growth mindset allow for failure and learn from mistakes and try again. In reality, everyone is a little of both. We allow for failure in some aspects of our lives, growth mindset, and we are set in our ways in others, fixed mindset.
Julie uses this understanding of neuroplasticity to teach her clients they have the ability to change. With some guidance and practice, the client will be able to re-wire their brains.
Rewiring Communication
I had the chance to read Julie’s book on a plane ride from San Jose to St. Louis. The book is for people with a confusing childhood and therapists. I would make the case the book can also be for people who don’t have a confusing childhood. I recognize I struggle with some of the concepts.
The 20 concepts are tools to help arm the reader. Julie writes about each concept by going into examples of how the concept applies. At the end of the concept, she supplies a self-assessment. The self-assessment asks the reader questions. These questions help solidify their understanding of how the concept relates to them. I have not finished through the self-assessments on my first reading, and will return to them.
Many concepts apply to the reader’s efforts in dealing with tough decisions. By giving alternatives to dealing with these situations, the reader can build habits. Or unlearning habits that have been ingrained since their childhood. After reading the book, Julie hopes the reader asks themselves the big questions. What they are doing in the world? Why do they do what they do based off their hardwiring? What they can do different? How to go about doing different?
Betty is at home, making dinner for her husband James. She’s had a stressful day when her car broke down. She wants to ask James about buying a new car when he gets home. Betty hears James come in and welcomes him home. James has a frustrated look on his face and tells Betty he can’t talk now. James proceeds to the living room, sits down, and turns on the television.
Betty’s confused and frustrated. As mentioned, Betty was expecting James to come home and talk to her. Now that her expectations are thwarted, Betty must face her own thoughts and emotions. Betty has yelled at James in the past for similar behavior before. None of the previous encounters have ended well. Betty takes a breath and reviews the 5 part communication formula.
Observation
Betty takes an objective view of the situation and reviews the events. Betty was making dinner and she noticed her husband came home. He looked frustrated and told Betty not to talk to him.
Thoughts
Betty thinks this is rude. Betty thinks this is a form of rejection, and thinks James doesn’t love her.
Feelings
Betty feels rejected, sad, depressed, confused.
Analyze Desires
Betty wants James to talk to her when she comes home.
Participate
Now that Betty has followed the first four steps, she can recount that to James when they both have calmed down.
“James, I’d like to bring up what happened earlier. I was making dinner and noticed you came home. You looked frustrated and told me not to talk to you. I thought this was rude. I thought this was a form of rejection and thought you don’t love me. I felt rejected, sad, depressed, confused. When you came home, I wanted to be able to talk to you. I wanted your attention because I’ve been alone all day. Are you willing to talk to me when you come home?”
At this point, James could counter with something else. He needs time to calm down from his day at work. The important thing is the conversation has started. Each party can reach a point of compromise. Also, James understands Betty’s perspective, so he is primed with an answer or counter.
With practice, Betty can get better at communicating with others. She can work through her thoughts and feelings and let others know what she is going through. Betty is a metaphor for people who go through similar situations. Betty is a metaphor for situations I’ve found myself in.
Adult Responsibility is Non-Negotiable
Julie grew up in Idaho. Her mother had an addiction to pain killers. Her mother’s addiction affected how her children. Julie’s upbringing and relationship to her mother was toxic. Julie writes how her mother’s dependence to legal drugs created problems at home. When the drugs were there, Julie’s mother was fine. But when the drugs weren’t, Julie’s mother would turn into a different person. Julie thought she had to take care of her mother, and became the caretaker for her mother.
It wasn’t until much later Julie understood the impact. Her relationship with her mother resulted in bad behavior and life choices. For example, Julie was in a relationship where her partner was an addict. Julie played the rescuer to her partner and created a co-dependent dynamic.
Julie made decisions to change her behavior. She studied issues in parent-child relationships. She was able to develop a framework to help her re-wire her brain.
Julie sees traditional therapy as ineffective. Some therapies continue for decades without lasting results. Patients come back, lie on the couch, and talk out their issues to their therapist. Rinse and repeat for years to decades. It feels like all the therapist is there for is someone who will listen, for a hefty sum. Sounds eerily familiar to the co-dependent dynamic.
At the end of the book, Julie’s last concept is “Adult Responsibility is Non-Negotiable”. Say there’s a situation you have had a tough time dealing with. Like having a conversation with a complete stranger. Or getting angry over things out of your control. What do you do now? You take the high road. You act like an adult because you’re an adult. This is my personal take on the book - of being able to liberate yourself. It’s not an easy road for all. For some, it will take time and practice. Julie’s hope is if you’re not able to take on adult responsibility, it is your duty to get to that point.
Takeaway message
Julie’s takeaway is to understand and resolve your childhood trauma. Resolution may come in the form of rewiring your brain.
Promotion
I read through Julie’s book and recommend it. I want to giveaway one free copy of Julie’s book to one of my readers. To enter, reply to this email and tell me what you think of this series so far. If you read this on my social media links, subscribe to the newsletter. New subscribers will be added to the contest. You have one week to apply. Deadline is December 18th, 2017, 12AM PST.
If I have perked your interests with childhood trauma, please buy Julie’s book. If you’re interested in joining a reading group, let me know. I would love to continue the conversation.
Last week, I wrote about my interview with Joe Lazzara, owner of Joe’s Butcher and Fish Market. This week, we’re reviewing the core theme of the series: connection. If you’re new to this newsletter series, I’m interviewing strangers one degree of separation at a time to chronicle connections. And there’s no one better to talk about connection with none other than Mary Aipoalani.
Enter Mary Aipoalani
I had no background on Mary when I asked her to be my next interviewee. I called her a few days before our interview to schedule the meeting, and immediately, I knew I was going to enjoy our conversation. She exuded a lot of energy in her voice. It’s as if she was ready to take on the world and ready to jump on any opportunity.
Mary met Joe through work. Mary is the VP of Product Development at Renaissance Food Group. She met Joe on a business trip to Indiana. Although her company does not sell their products at Joe’s butcher shop, she struck a great conversation with Joe. Mary knows the who’s who in the food industry. When Mary’s work brought her to Indiana, and she could tell the city’s placed a lot of capital building their downtown. She spoke to Joe for two hours about her products, about his shop and life, and the competition he faced. Mary has an eye for marketplaces that sell well.
Mary came from humble beginings in Michigan. She grew up on a farm and her food was her family’s language. She and her husband travel around all over the US, selling and managing food products. From what I can access, Mary is a busy person. Yet, as I find out, Mary makes time for people. Case in point, during our conversation, she was driving her daughter to an appointment.
Storing Contacts
If you’ve read Malcolm Gladwell’s book, “The Tipping Point”, Mary’s a prime example of a super-connector. A super connector is someone who keeps a record or memory of a lot of different people. They connect people who don’t know each other but have mutual benefits. The average person keeps tabs with about 150 people, also known as the Dunbar number. Mary keeps tabs with so many more people. She’s able to do this by her system on how to connect with people.
I was super interested in Mary’s system of recording contacts. Mary explains it to me with Joe as an example. After Mary finished talking to Joe, she writes down additional information about him. She may write, “Joe’s Butcher Shop and Fish Market. Spices and seasoning blends. Carmel, Indiana.” The description can inform Mary that Joe knows how to season meat, and if Mary needs help, she can call him. She may also synthesize later other vendors that might want to work with Joe based off the store name.
Entrepreneurs work on connecting, Mary tells me. They figure out people’s capabilities. At the end of chatting, I mentioned some opportunities I’m looking for. Mary was able to take that information and come up with a few names I could collaborate with. She connects people with head hunters. She elects them to be advisory board candidates. She pairs them with a founder. Mary’s theory is when the student is ready, they have to find the right teacher. If you’re past step one of identifying your problem, step two is to talk to Mary. Check with her if she knows someone in her network. Mary works like a matchmaker and marries the student with the teacher.
I’ll admit, I’m not the best at keeping notes or tabs on people. I try for a little while until I’m discouraged from making any headway with others. I am pessimistic in trying to get people to do things. But I can reframe my position. I can think, “how would Mary approach this?” I would try to get people together who don’t know they need to reach out to each other. If nothing comes out of it, that’s that. But for the few times it does, innovation can happen.
The World is Ripe with Opportunity
Mary sees opportunity. She can’t help it. Her family is a group of entrepreneurs. When I asked Mary who I should speak to next, she recommended her brother, Ed Dominion. It was amusing she referred to her brother as D6, the first letter of their last name followed by their birth order. He runs his own company in Portland, Oregon. Mary runs businesses on the side. For example, she has a high performance camera company. She is starting another venture called Animal Bacon.
When it comes down to it, Mary’s journey reminds me of the protagonist in “The Alchemist”. Mary’s journey is wandering, yet focused on goals. And at the end of goals, that’s not the end of the journey, but the beginning. We talked hypotheticals. If Mary wanted to go to the White House, she’s pretty sure she could go with little to no credentials. That’s because she thinks that in her mind.
Mary learned a long time ago the importance of connections. When her father died, the funeral was packed. People came all over to visit her father. Her father was a man who could walk up to anyone and strike a conversation with them. He would listen to them and try to help in any way. Because the paper wrote about his passing in the paper, people picked up on his passing from all over and came to visit him. That made an impact on Mary, and it’s shaped her to be the way she is today.
And she doesn’t believe in coincidences. Life is nothing buy coincidences. And that’s led to successes. Action comes first. Things are not handed over to you. She gave me some strategies in optimizing the search for opportunities.
Traveling is a great way to make connections. You’ll listen better with fewer distractions.
Dress Appropriately. Don’t wear sweatpants. Dress up. Why? Because people judge you by your appearance. If you dress in business attire, you will attract business people.
Be Interested in people. Ellen DeGeneres does it for a living. You can do it for yourself.
Record people you meet. Everyone has a different strategy of this. You can go with Mary’s, like I described in the last section. Or you could use Twitter and follow handles. It could be rolex based, if you’re into paper.
The Game
Mary travels a lot for work and could spend her time eating alone. But she refuses to. Instead, she’s come up with a game.
Mary enters a restaurant and looks for the bar. She scouts the bar to see if people are there eating alone. This has to be someone who’s eating alone who’s towards the end of their meal. She will sit next to this person and wait for the bartender. When the bartender comes over and asks Mary what she wants to eat, she turns to the person next to her. This is the same person she scouted for when she entered the restaurant. She asks this person, “Oh, that looks delicious. What are you having?”. The person responds with the name of what they’re having. Then, Mary asks the ultimate question, “Can I have a taste?”. Every single person has given her a sample, if not the rest of the plate, of food. Inevitably, this turns into a conversation.
The goal is to have a better experience than to eat alone. If Mary can have a conversation with someone, she will try to. She’s proven to friends and family this game works. She’s even had her daughter do it once. Mary’s daughter isn’t embarrassed by her mother, as I thought. Instead, her daughter has a role model who is brazen and bold to approach strangers.
Mary told this to an Uber driver once. He said, “You inspire me.” He is sold on the experience. I am sold on the experience. The next time I’m traveling and am hungry, I’ll run through the game.
Mary’s pitched this idea to television producers and they say she could get a TV show deal. It sounds appealing because it acts on our human tendencies to want to connect. And she doesn’t do it to flirt with strangers. Mary’s more interested in the stories people have to tell.
Takeaway message
Take the opportunity to reach out to people. And Mary has a saying to go along with this. “Stop looking at your glass, get off your ass”. Her daughter was listening to the conversation, and told me she couldn’t say that last word.
Mary says in the younger community, boys are always on their glass. It is important to move your ass. It can be exercise, smiling and making eye contact with other people, or working on body language. That’s how she sees life.
Side Tangent
Years ago, I visited Budapest and hung out with a friend of a friend. She surprised me by bringing me to the river across from the parliament building during sunset. It was the most magical moment of the trip, and we attempted to open a bottle of wine. We clicked glasses took a sip, and she asked me, “So, Jeremy, what’s your story?”. The question confused me.
“You mean, what do I do?”, I asked.
“No, like what’s your story. Everyone has stories.”
I understood, and told her about the beginning of my trip, the tragedy that had befallen my family. I started to cry. Both for the tragedy as well as for my friend who listened to my story. That was one of many turning points I found in the power of conversation and of listening.
My journey so far has been to listen to others’ stories, to listen to what matters to each of us. If there’s anything I’ve learned from my friend in Budapest is the power each of us has to listen. When Mary tells me the opportunity to reach out to people, I remember this period of my life I didn’t do it. I lived oblivious, not connecting to the people around me. Mary’s takeaway is reinforcement for me and invigorates me to continue this project. I’m glad each stranger I’ve talked to has given me something special, and I hope you have enjoyed this series so far. See you next week for more stories.
Author’s Notes
I lost half of our conversation. Mary was driving through poor cell service areas, so the call dropped many times. For the last part of the interview, I couldn’t record it so I transcribed notes. As my luck would have it, my notes were stolen along with my backpack. I’ve chosen to omit this conversation because my memory is impartial. And to be frank, I can’t remember what we talked about.
Data exploration of inflows and outflows of city trash to other cities. Data from the US Commodities Survey from 2012. Project from Science Hack Day 2017
Welcome to the Jear Bear Letter’s third letter of the series “Seven Degrees of Strangers”. If you’ve started reading this series, I interview a stranger one degree of separation at a time. This week, I’m presenting a conversation I had with Joe Lazarra. He runs a butcher shop and fish market in Carmel, Indiana. He also happens to be the previous interviewee, Evan, father’s best friend.
Joe has walked an unconventional path. We dive into his past work, his butcher shop, and so much more.
Enter Joe Lazzara
I wasn’t expecting Joe to be a masterful storyteller. If you ever talk to him, he has a very solid sense of self. He started his story by transporting me back over a century ago. His great grandparents grew up in Sicily. Different invaders have conquered Sicily time and time again. So much so that other Italians call them outsiders. Sicilians have a different dialect and different culture. They value family, culture and food. Especially food.
Joe’s grandparents and their brothers sold produce in California and southern Indiana.
Their lives included stories of escapades, murders, and running from the KKK. If I ever get to hang out with Joe, I’d love him to tell me some of them. What’s important to Joe is the Sicilian heritage followed them to America.
Joe’s mother learned recipes passed down from the older generation. Joe’s aunt taught his mother how to cook, handing them generation to generation. Needless to say, the family bonds over food, like Joe helping make the sauce.
Joe is youngest of 6 children. There’s an 18 year generational gap between his oldest brother and himself. Because of that, his father, his eldest brother, and he are born in different generations. His father was born in the 20s, his brother in the 40s, and Joe in the 60s.
Joe’s father didn’t make much money. Yet, he valued education and funded all 6 children through college. He knew that going to college is important. He didn’t have a large house. He made sure none of his children never paid a dime. Joe’s very fortunate and grateful to his father.
College and Early Career
In college, Joe met Charlie Roar, Evan’s dad. They became dependable friends and fraternity brothers. Today, they remain close. Joe is a godfather to Charlie’s daughter. Joe’s a part of Charlie’s family as they moved from Chicago to Minnesota to North Carolina. When Joe’s father passed away, you can bet Charlie was there for him and his family.
Joe studied Quantitative analysis, which during the mid to late 80’s, was the thing to study and get a great job. When Joe graduated, he worked at Indiana Bell on a software project. That project got sold to General Telephone and Electric, GTE. But, Indiana Bell didn’t want to help with maintaining the software.
GTE needed consultants. Joe’s co-workers and Joe saw this as an opportunity to create their own consulting company. They formed United Informations Technology. Joe was 23 at the time and moved with the company to Tampa Bay. On weekends he’d invite friends. The job demanded Joe travel all over. With the sales commissions, Joe was making 6 figures. But the company’s success didn’t last long. The company hired an HR manager to manage pensions as they started growing. But, no one else knew this HR manager would take their pensions and buy coke in Florida and resell it in Chicago. One day, the FBI and DEA knock on Joe’s door asking about the illegal activity. Joe exits as soon as he can; the company gets dissolved.
Joe took a position with GTE in Indianapolis selling cellular to wireless carriers. The market was ripe for cellular networks, and selling was like shooting fish in a barrel. Year over year, Joe was the top 1% of sales people. He rose the ranks and became a general manager over other sales people.
During this period, he got married and had kids. He’s in his early 30’s, and he’s traveling all over the U.S. for his sales job. He got tired of going out to the bars with his guy friends. Instead, he uses this time to explore restaurants. Today, many of these restaurants have Michelin stars or are James Beard candidates. Those are prestigious accolades in the food world.
Joe told me a story of how he met Emeril Lagasse before he was famous. He was in New Orleans. Charlie’s cousin invites Joe to meet Nellie Brennan, owner of Brennan’s restaurant. Nellie brings them to the Commander’s Palace to meet the head chef, who turns out to be none other than Emeril. This was right before he opened his flagship restaurant. Well before he was a Food network celebrity.
Joe meets Susan Spicer before she became big at the Bistro at Maison de Ville. Some of these restaurants catch wind of Joe, thinking he was a food critic. They would invite him at the Chef’s table if he called. When they found out he was only a food enthusiast, they laughed and would cooked up a storm. It was during this time Joe’s food and wine palette expanded.
GTE gets bought out by Bell Atlantic and forms Verizon. Joe becomes in charge of the telecomm act where he has to negotitate contracts on behalf of Verizon. He has to travel even more. In 1999, Joe quits to join a telecomm start-up in Indiana, First Mile Technology. The company was ahead of their competitors.
Business was going well. Then 9/11 happened. VC capital dried up. Joe had a tough time getting developers to invest upfront because they didn’t have the money. Joe left and consulted for a bunch of small companies.
After that, he consulted for a few years. But Joe grew tired on traveling around. Clients were asking Joe to do things that tested against his principles. For example, they asked him to move phone numbers around, move money around, and lose trails. He sought solace from his brothers and Charlie. They reminded him of wanting to start a restaurant or be in food.
Butchershop
Carmel, Indiana is a progressive city and their mayor wanted to build a city center. The mayor asked Joe if he wanted to start a restaurants there. When Joe asked his wife, she objected. She told him they have three children, ages 3, 5, and 7, and he wouldn’t be there for them at night. Joe remembered his friend, Mark Zannoni. He was also Italian, and Mark’s father owned a butcher shop outside of Chicago. Joe asked his wife about a butcher shop, and she agreed that would be a better choice.
They put about a year of work into opening the shop before it opened. The first year’s return was at a loss, but since then, they’ve been on the up. They’re netting a few million a year, and it has become such an integral piece to the community. Joe’s been at it for 11 years. You can find the butcher shop and fish market’s website at the end of the article.
There was an old couple that used to shop at Joe’s butcher shop weekly. They loved talking to Joe and the staff. One week, Joe noticed the husband stopped coming. The next Saturday, she came in early, right after the opening hour. She walks through the entrance, dressed top-to-bottom with a red dress.
Joe asked the lady where her husband. The lady leans over the counter and tells Joe her husband passed away. Joe tells her he’s sorry to hear, but the lady stops him.
“I came here to tell you. We loved interacting with you and the staff. Coming here for the past 5 years made him happy.”
Of course, Joe’s ready to melt after this. It’s situations like this that has taught him he’s the caretaker of community trust. He’s seen customers have babies who have now grown to become pre-teens. He caters to community member’s funerals.
Joe tells me it’s not about the money. It’s all about giving back to the people. It’s the satisfaction knowing you are delivering the turkey to your customer’s home during Thanksgiving. Early on, Joe wanted to franchise the business and build many “Joe’s Butchershops”. Now, Joe wants to make his shop iconic, like Ann Arbor’s Zimmerman’s Deli or San Francisco’s Ghirardelli’s Square. Carmel is an up and coming, affluent city, about an hour or two away from Indianapolis. People from all over the state come to visit the butcher shop.
Joe picked the right location, and he owes his success to his background in sales. Without it, he couldn’t see a different side of business. One where the customer gives you feedback and where you listen. Joe’s mission is to share good karma, because things come back. And he can’t see himself doing anything else.
“I sleep at night. I sleep like a baby, for the most part. Whereas before, I was always concerned about the next sale, or how I was going to get that revenue stream.”
Takeaways
Joe’s takeaway makes a wonderful quote. “Love unconditionally, and you will be returned with unconditional joy.” Very humbling.