fbpx
Home Blog Page 1466

Ask a Data Engineer: Warby Parker Edition 👓

0
Ask a Data Engineer: Warby Parker Edition 👓

wp-header

Codecademy’s very own Nick Duckwiler (left) and Ryan Tuck from Warby Parker (right) in our office. (📷: Mitch Boyer)

Last month, Codecademy and Warby Parker came together to work on a special Learn SQL from Scratch Capstone Project. It was during this time when I met Ryan Tuck, a Data Engineer at Warby, who played a major part in this partnership. So when he decided to drop by our office for the final QA round, I had to break out my notebook and ask some questions. Enjoy.


Hey Ryan, let’s start off with a question I’ve had for a while — what is a Data Engineer? (Is it similar to a Data Analyst or a Software Engineer?)

At Warby Parker, data engineers are responsible for creating and maintaining the plumbing required to support the data and reporting needs of the business. We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.

What languages/frameworks do you use at Warby?

On data engineering, we use Python as our general purpose programming language, as do most of the other teams in our Technology department. When it comes to databases, we use PostgreSQL for the majority of our SQL needs, and are beginning to use Amazon Athena and Google BigQuery for some of our larger datasets. We use Looker as our exclusive business intelligence entry point to all of this data.

What are some of the projects you worked on?

I’ve had the privilege of working with a lot of of smart people in every department at our company to help them solve their varied data needs, from reconciling financial data with the Accounting team to automating and modeling standardized performance metrics for our team of over 200 customer experience advisors.

As part of a team of five supporting the data needs of a rapidly growing company, I’ve tried where possible to focus on helping our analysts solve their own problems. This includes helping people learn Python and commit to our codebase, guiding the creation of data models in SQL, and encouraging people to submit pull requests to add features in Looker, our BI tool.

Seeing dozens of otherwise “non-technical” colleagues opening up PRs on a daily basis, and consequently being part of the democratization of tech that we value at Warby Parker, is probably the most rewarding “project” I’ve been a part of.

One project finished recently during our first annual “Hackweek” is called Pipes, which allows anyone at the company to easily move large amounts of data from wherever to wherever (Looker, Google Sheets, PostgreSQL, BigQuery, etc) on a regular cadence, or manually through a simple one-line chatbot interface. The adoption has been overwhelmingly positive and we’re looking to grow this sort of tooling out even more.

“We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.”

What got you into the data field?

I’ve always been drawn to analytical fields like math, and became pretty proficient in Excel during some internships in college. Once I had learned to program and learned more about data science and its applications in artificial intelligence, I knew that anything I could do to immerse myself in the world of data would be a step in the right direction.

Three and a half years ago, I landed a job as a junior software engineer at Warby Parker not fully knowing what I was in for, but am so glad I got the opportunity to help build tools to support an interesting and ever-changing data-driven culture here.

Where did you learn SQL and Python?

I had a background in C++, and was exposed to Python through an Intro to Data Science course. When Warby Parker hired me onto the Data team in 2015, I had never written a SQL query in my life, but picked it up quickly and within a few months started up internal SQL training classes, which I still teach on a monthly basis.

What does your tattoo say?


The ultimate cheatsheet.

This is Bayes’ Theorem, which is an equation that describes how to update probabilities given new evidence. Two summers ago I worked on building a tool to help predict weekly fantasy football performance. Some colleagues suggested a Bayesian approach would be appropriate, since there aren’t really enough data points in an NFL season to be able to use statistical approaches that require larger datasets, and I’d want to regularly update my predictions after each player’s latest performance.

I did a deep dive into understanding the (simple) math underlying Bayes’ Theorem and came out of that experience with a whole new worldview, understanding my entire knowledge of the world as a big and intricate probabilistic model that I was continuously updating with every experience I ever have. It was pretty transformative, and I figured that was worth a tattoo.

What is a concept in SQL/Python that’s essential to your work?

Donald Knuth said, “Premature optimization is the root of all evil.” I’ve generally found this to be true, and try to live by it in my work. For example, I’ll generally prefer to keep a data model simple by rebuilding it for all time on a daily basis using a single SQL query instead of making a more complicated model that requires iteratively adding to a table, keeping track of state, updated timestamps, when something last ran, etc.

A wise man once said, “Duplicating data makes things go fast,” but databases are already impressively fast to begin with, without implementing anything to improve performance. Ultimately, I almost always approach a problem thinking about optimizing for my time over machine time, for readability over performance, and for introducing as little cognitive overhead as is required by the problem at hand. Only once performance issues or readability issues present themselves will some code be worth a rewrite.

Last question! Since you wrote Warby Parker’s internal SQL training courses, I know there gotta be some inner Curriculum Developer in you. Can you teach a SQL concept in 2 minutes?

Sure! Have you ever written a query that yields some result set and you think, “I’d love to query the stuff I just produced like it was a table?” Enter the WITH clause.

Suppose I have a mega query that gives the transaction summaries:

select
    transactions.date as transaction_date,
    sum(items.price) as total_cost,
    count(*) as number_of_items
from
    transactions
inner join
    customers
    on
    customers.id = transactions.customer_id
inner join
    transaction_items
    on
    transactions.id = transaction_items.transaction_id
inner join
    items
    on
    items.id = transaction_items.item_id

Using WITH, I can create a temporary table within my query that I can SELECT from and treat it just like a regular old table.

I will put everything from the previous query in a parentheses and use WITH to give it the name transaction_summaries.

Then I’ll apply the date and customer filtering down below for a more readable query, to separate out all the JOIN logic from the actual WHERE filters that I want to apply on that data.

with transaction_summaries as (
  select
      transactions.date as transaction_date,
      sum(items.price) as total_cost,
      count(*) as number_of_items
  from
      transactions
  inner join
      customers
      on
      customers.id = transactions.customer_id
  inner join
      transaction_items
      on
      transactions.id = transaction_items.transaction_id
  inner join
      items
      on
      items.id = transaction_items.item_id
)

select 
        * 
from 
        transaction_summaries
where 
        first_name = 'beyonce'
        and 
        transaction_date > '2018–01–01'
order by 
        total_cost desc
limit 
        5

If you’re familiar with subqueries, this does a similar thing but makes the SQL far more readable, even if your query isn’t quite as performant as it would have been. This is essentially an implementation of the mantra “Don’t Repeat Yourself” that’s common in the world of programming.

Incredible. And love the SQL styling! 😍


Huge shout out to Ryan and the whole Warby Parker team for making this partnership happen. Special hat tips for behind-the-scenes support from:

  • Lon Binder, Chief Technology Officer, Warby Parker
  • Maddie Tierney, Executive Assistant, Warby Parker
  • Kayla Robbins, Executive Assistant, Warby Parker
  • Kaki Read, Senior Communications Manager, Warby Parker
  • Isabel Seely, Senior Brand Manager, Warby Parker

It’s been an absolute pleasure. And of course, the fam at Codecademy. You know who you are. Couldn’t do it without you.

Are you Ready for the New WordPress Editor?

0
Are you Ready for the New WordPress Editor?

Tomorrow, December 6th, WordPress 5.0 is scheduled to be released. This is a highly anticipated update and has had people talking for over a year. Before you update, be sure you have a backup copy of your website so you can restore your previous version if needed.

We also recommend waiting a few weeks before doing the update to give the developers some time to work out any kinks that are sure to occur with such a major update.

The most noticeable change in WordPress 5.0 is the editor. Once you perform the update, the editor you are currently using will be retired and replaced with a new editor called Gutenberg. There will certainly be a learning curve as we all adjust to this new editor.

We know change is hard, but in the long term, everyone will benefit greatly from the new editor.

Please let us know if you have any questions!

Happy holidays,
The DB Team

Most Wonderful Time of the Year Free Printable

0
Most Wonderful Time of the Year Free Printable

The holiday season is in full swing and Christmas and New Year are just around the corner. Celebrate the most wonderful holiday season with this free printable reminding us of this beautiful time of the year filled with love and cheer.

For Personal Use Only.


Free December Wallpaper

0
Free December Wallpaper

Our December wallpaper features Christmas Lights and the free Playfair Display font.

Included in the free download are two files per device – one with the calendar and one without the calendar so you can choose the option you prefer.

Enjoy!

For Personal Use Only.


Black Friday Sale

0
Black Friday Sale

Now through Monday, get 30% off everything on our site (excluding accessories) with coupon code BLACK30. That means 30% off:

Don’t miss this great opportunity to save big. Sale ends Monday, Nov. 26th at midnight (MST).


Have you been wanting to make the jump to WordPress? TODAY ONLY (Nov. 23rd) you can get Bluehost hosting as low as $2.65/month! That’s huge savings! You can also take advantage of all of these great deals today only:

• Shared hosting as low as $2.65/mo!
• 60% off Second Account
• 50% off Select Domains
• 30% off WordPress Pro
• 57% off WooCommerce Hosting and more!

Click here for the deal. 

Need help setting up a WordPress blog? Be sure to check out this helpful tutorial: How to Launch a Blog on WordPress.

Why Using Blog Labels is Important on Blogger

0
Why Using Blog Labels is Important on Blogger

Why Using Blog Labels is Important on Blogger

Blogger has a built-in feature that allows you to add blog labels to your posts to organize them into specific categories. You may have used it sporadically from time to time when creating a post or ignored it as you found it too much of a hassle. On the other hand, you may have hundreds of tags and use dozens for each post. These are all huge mistakes for blogging on Blogger.

For blogging on Blogger, strategically using blog labels is a beneficial step in growing your blog. Blog labels require planning and foresight when incorporating them into your blog but the extra step of effort makes them worth it.

Here we will show why it is important to use blog labels on Blogger and the top tips to strategically use them on the Blogger platform.


WHY USING BLOG LABELS IS IMPORTANT

1. Organize Your Content

This is the main reason why you want to use blog labels. Blog labels can help organize your blog content so that you have more time to spend on other important parts of your blog such as taking photos and writing your blog content.

When you have hundreds of posts over the years, it saves time and yourself a headache to have blog labels easily automatically group each of your posts to a general category which can be found when searching on your blog or the specific blog label page. There is no need for you to have to manually categorize your posts when Blogger can do all the hard work for you.

RELATED: Adding Labels to Your Blog Posts

2. Blog Post Planning

Use your blog labels to help you plan and influence your future posts. Blogger’s labels help you easily see the posts you have posted about a certain topic. You can quickly scan your blog posts on certain topics and plan accordingly to write new posts filling in on parts you may have missed or want to explore further in the future.

For example, you may want to focus more on gardening posts for next year as you have moved and have more lawn space to devote to your gardening hobby. You can browse through your posts with the gardening label and easily scan through topics you may want to cover or elaborate further.

For an end of the year post, use your blog labels to scan through your posts to quickly compile a list of your top posts in a particular topic so that your readers can revisit an old post and your new readers can see a post they may have missed.

RELATED: 20 Questions That Will Inspire a Year’s Worth of Blog Posts

3. Blog Data

Blog labels can help you quickly compile information about your blog posts. You can see how much content you have written about a certain topic and show where your interests about your blog are.

If you are thinking about revamping your blog, take a peek at your blog posts using your blog labels to see if your interests for your blog have changed enough to warrant revamping your entire blog. If your blog posts have consistently leaned towards your new topics of interest for the past year, a blog revamp may be a wise move to reflect your changing interests.

Having quick access to your blog posts using blog labels is especially helpful when you are approached by a brand wanting to work with you on a sponsored post. If they want to see other posts you have worked on related to a topic, use your blog labels to find your posts and compile data about this topic. If you have worked with sponsors in the past, create a “sponsored post” label and use it to keep track of your sponsored posts for the future.

RELATED: How to Install Google Analytics to Blogger

4. Enhanced Reading Experience

Blog labels can enhance the reading experience of your readers as they can easily sort through your content and find more posts about a specific topic by clicking on a label link. While your main categories for your blog should be on your navigation menu, your labels on each post are another way you can help your readers navigate your blog as blog labels add an extra level of categorization for more specific topics.

RELATED: 12 Tips for Making Your Blog Easier to Read


SEO Myth

One myth about blog labels is that they are related to SEO. Blog labels on Blogger are not related to SEO. Blog labels are categories for your blog for organizing your content.

While the SEO relationship has been revealed to be a myth, it is important to remember it is possible any text in your blog posts will be read by a search engine bot and used to influence your search engine ranking. This is why spamming with fake key words is frowned upon and can lead to search engines penalizing misleading content.

Your blog labels are another way to show your blog has content about a specific subject. Research shows search engine bots are smarter than ever and taking a more comprehensive approach to reading blog posts as a whole nowadays instead of scanning and focusing on a few key words for blog posts. Your title, your key words, your pictures, your blog labels, and everything else inside of your blog post are all important.

Tags Myth

To tackle another myth about Blogger’s blog labels, your labels are only categories for your blog. Your Blogger blog labels are not tags. Tags is an incorrect term. Your blog labels are visible to everyone as the categories for your content. Tags are not visible as they are embedded in the html of your blog. This is only relevant on the Blogger platform as Blogger uses labels but other blogging platforms such as WordPress use categories and tags.

Now that we have covered the reasons and myths why it is beneficial to use blog labels, we can focus on the correct way to use your blog labels on Blogger.


TOP TIPS FOR STRATEGICALLY USING BLOG LABELS

1. Focus Your Blog Labels

Curate a list of your top blog labels and strategically use them for your blog posts. It benefits your blog to have a handful of blog labels that frequently get used rather than to have a new blog label for each new post.

If you find that you have more than a hundred blog labels and each label is only used a few times, take a moment to organize your blog labels. Delete any duplicate labels.

As Blogger is case sensitive for blog labels, you may find you have more than one blog label with the same words but with different cases. Delete any blog label that is used less than a handful of times and another more general blog label can be used in its place. Delete any unimportant blog labels such as “uncategorized” or “blog” as these are not necessary to categorize your posts.

Why Using Blog Labels is Important on Blogger

2. Use Them Sparingly

Plan to use a maximum of three blog labels per blog post. Less is more here. Using a dozen labels per blog post will only confuse and overwhelm your readers and make your blog post appear disorganized. Search engines may also see this as spamming. Using more blog labels will not benefit your blog in any way and could actually hurt your blog.

For each blog label, use a maximum of three words per label. Phrases of several words should be avoided. Think of blog labels as keywords or folder labels. You wouldn’t have “my summer activity ideas for the kids” on a folder tab when you can have the shorter and more succinct “kid summer activities” instead.

3. Use At Least One Label

Make sure each blog post has at least one label. Don’t leave a blog post, no matter how short or unimportant it may be, without a blog label. If you are going to do a quick announcement, create an announcement label and save it for future announcements or incorporate your announcement into your next lengthier blog post. This helps your blog appear more uniform as each post has a label and no blog post gets lost in the archives of your blog.

4. Avoid Being Too Specific

Don’t be too specific with your blog labels. Think of blog labels as general folders where you would organize your content. You wouldn’t create a folder titled “summer 2018 party ideas” and expect to use it more than one summer for your blog. A more general term such as “summer party ideas” would benefit your blog as you could revisit this topic each year and use this blog label to grow a collection of blog posts focused on summer party ideas.

If you are planning on using a blog label only once, it doesn’t need to be a blog label and shouldn’t be created. When you are creating a blog label, plan to have more posts with it to ensure you are effectively using this blog label.

If you have any questions about using blog labels, leave them in the comments.

Good Interventions Do NOT Have to be Expensive

0
Good Interventions Do NOT Have to be Expensive

A common misconception that we hear is that education and neuroscience are related disciplines and that those who study the brain must know how we learn. While one can inform the other, I promise that training in neuroscience does NOT include an understanding of how those brain processes translate into classroom practices. We often talk about a very necessary dialogue between educators and researchers, because very few individuals have extensive experience in both domains.

My first hesitation when reading this article came from the title. Why did they ask a behavioral geneticist for his opinions about an educational intervention? That’s not to say he couldn’t read that research and develop a decent understanding given his expertise in research design, but he comes to very strong conclusions about something I’m not sure he is fully trained in.

One of the things I appreciate so much about my colleagues here at the Learning Scientists is that we try to approach similar conversations with caution. You can ask us about how cognitive science applies to developmental disorders and we will tell you exactly what we know and admit that we are NOT experts in developmental disorders, so any conclusions we are making need further analysis.

Ok, this statement isn’t completely untrue, but there’s only one part of it that is a problem. That problem is his use of the word “everybody”. That’s correct, there’s no one solution that will work for every single learner every single time. The best interventions are flexible and adaptable, but there are processes that work for every learner. And they don’t have to be complicated (see Issue #3).

I would love to see any piece of research that backs up this claim, especially given that it is the opposite of our recommendations. Strategies that will improve education do not have to be these giant curriculum overhauls. (See Megan’s blog from last week for more on this.) Educators can use the same content that they have always used, but reinforce that encoding with retrieval practice (for free) and voila! Retention is improved… A good intervention that is both free and not terribly labor intensive.

What’s Going On in This Graph? | Feb. 13, 2019

0
What’s Going On in This Graph? | Feb. 13, 2019

1. This graph shows the relative size of military budgets by country in 2015. It originally appeared elsewhere on NYTimes.com.

After looking closely at the graph above, think about these three questions:

What do you notice?
What do you wonder?
What are you curious about that comes from what you notice in the graph?
What might be going on in this graph?
Write a catchy headline that captures the graph’s main idea. If your headline makes a claim, tell us what you noticed that supports your claim.

The questions are intended to build on one another, so try to answer them in order. Start with “I notice,” then “I wonder,” and end with “The story this graph is telling is ….” and a catchy headline.

2. Next, join the conversation by clicking on the comment button and posting in the box that opens on the right. (Students 13 and older are invited to comment. Teachers of younger students are welcome to post what their students have to say, or they can have their students use this same activity on Desmos.)

3. After you have posted, read what others have said, then respond to someone else by posting a comment. Use the “Reply” button or the @ symbol to address that student directly.

On Wednesday, Feb. 13, our collaborator, the American Statistical Association, will facilitate this discussion from 9 a.m. to 2 p.m. Eastern Time to help students’ understanding go deeper. You might use their responses as models for your own.

4. On the afternoon of Thursday, Feb. 14, we will reveal more information about the graph at the bottom of this post. Students, we encourage you to post an additional comment after reading the reveal. How does the original New York Times article and the moderators’ comments help you see the graph differently? Try to incorporate the statistical terms defined in the Stat Nuggets in your response.

_________

• Read our introductory post, which includes information about using the “Notice and Wonder” teaching strategy.
• Learn about how and why other teachers are using this feature, and use the 2018-19 “What’s Going On in This Graph?” calendar to plan ahead for the 25 Wednesday releases.
• Go to the A.S.A. K-12 website, which includes This is Statistics, resources, professional development, student competitions, curriculum, courses and careers.

Word + Quiz: adjudicate

0
Word + Quiz: adjudicate

Note: Our Sixth Annual 15-Second Vocabulary Video Challenge is underway. It will run until Feb. 18.

1. put on trial or hear a case and sit as the judge at the trial of

2. bring to an end; settle conclusively

_________

The word adjudicate has appeared in 142 articles on NYTimes.com in the past year, including on Jan. 9 in “Mysterious Spike in Complaints About Street Signs Moves Council to Halt Violations” by Karen Zraick:

The New York City Council voted on Wednesday to institute a two-year moratorium on violations related to store signs and awnings after a mysterious spike in 311 complaints that led to costly penalties for small businesses.

…. Councilman Menchaca is also arguing for a permanent change in how the city adjudicates violations related to signs and awnings. In a statement, he said businesses should get a citation or warning, not a civil penalty, if a violation is found.

_________

How Would YOU Describe the State of Our Union?

0
How Would YOU Describe the State of Our Union?

President Trump delivered his second State of the Union address on Tuesday night. The speech was scheduled for last month, but was postponed because of the partial government shutdown, prompted by Mr. Trump’s demand that Congress pay for a wall along the southern border with Mexico.

Were you watching? Why or why not?

Though we welcome your reactions to what the president said — and to the Democratic response — in this forum we’re chiefly asking how you think our country is doing right now.

Are we better off than we were a year ago? Two years ago? Why or why not? What are the main issues we face, in your opinion? In general, how strong is the state of our union right now?

In Trump Asks for Unity, but Presses Hard Line on Immigration, The Times summarizes the speech and the reaction to it:

President Trump delivered a message of bipartisan unity on Tuesday night in his first address to Congress in the new era of divided government, but signaled that he would continue to wage war for the hard-line immigration policies that have polarized the capital and the nation.

In a nationally televised speech that toggled between conciliation and confrontation, Mr. Trump presented himself as a leader who could work across party lines even as he pressed lawmakers to build a wall along the nation’s southwestern border that leaders of the newly empowered congressional Democrats have adamantly rejected.

…The change in the power structure in a Capitol long dominated by men was on display as Ms. Pelosi and scores of House Democratic women wore white, the color of the suffrage movement, reflecting the fact that 131 women were sworn into the new Congress, the most in American history.

When Mr. Trump noted this breakthrough, the women leapt to their feet, cheering, dancing and high-fiving each other. “That’s really great,” he said. “Congratulations.”

He made no direct mention of the issues that may yet come to dominate the year, such as the Russia investigation by the special counsel, Robert S. Mueller III, or the parallel inquiries that House Democrats intend to conduct into his campaign’s ties with Russia and efforts to impede investigations.

Instead, he alluded to them only in passing, but pointedly. “An economic miracle is taking place in the United States,” he said, “and the only thing that can stop it are foolish wars, politics or ridiculous partisan investigations.”

But Mr. Trump indicated no retreat from his almost singular pursuit of a border wall, directly taking on Ms. Pelosi, who has called it “immoral.” He devoted 15 minutes of the hour-and-22-minute speech to immigration with no concession to Democratic priorities like a path to citizenship for immigrants brought into the country illegally as children.

“This is a moral issue,” Mr. Trump said as Ms. Pelosi sat unmoved behind him. “No issue better illustrates the divide between America’s working class and America’s political class than illegal immigration,” he added. “Wealthy politicians and donors push for open borders while living their lives behind walls and gates and guards.”

In the official Democratic response, Stacey Abrams, who lost a close race for governor of Georgia in November, scorned the idea of unity from a president who has practiced the politics of division. “We know bipartisanship could craft a 21st-century immigration plan,” she said, “but this administration chooses to cage children and tear families apart.”

Ms. Abrams, who is African-American, challenged Mr. Trump’s history of racial provocation, saying, “We must hold everyone from the highest offices to our families accountable for racist words and deeds and call racism what it is — wrong.”

The president’s speech, built on a theme of “choosing greatness,” came at a pivotal moment halfway through the president’s term as he seeks to regain momentum after the midterm election defeat that handed control of the House to Democrats and after his failed effort to use a partial government shutdown to extract money for the wall.

Students, please tell us:

— Is the state of our union strong, in your opinion? In other words, how do you think the country is doing right now? Are we doing better, worse or the same as we were a year ago? What should be the nation’s priorities? What are the biggest issues we face? For instance, do you agree with President Trump’s focus on immigration and the need for a border wall?

— What is your reaction to President Trump’s State of the Union address? What, to you, were the most memorable moments or lines? How effective do you think it was over all?

— What reactions to the address — whether from political commentators, members of Congress, social media or your friends and family — did you find most interesting? Why?

— Which descriptions of the state of our union that you have heard or read this week do you find most compelling or persuasive? Why?

— If you were to make your own one-minute State of the Union speech, what would you say? Why? What issues, policies, ideas or themes would you highlight?