Sat, Apr 27, 2019
Last summer I started learning Mandarin Chinese. To start I began taking classes at a Chinese language school in SF. For more practice I started an Instagram @jeffcarp_zh and tried writing a couple blog posts.
Almost a year later, I’m still going to Chinese class on a semi-regular basis (1 hour a week except when I’m taking a break) and keep up a daily spaced-repetition flashcard habit using the Pleco Chinese dictionary app (usually on the train into work).
Sat, Feb 23, 2019
The Shame of the Nation: The Restoration of Apartheid Schooling in America
Author: Jonathan Kozol Published: 2005 Rating: ⭐⭐⭐⭐⭐ This is an upsetting book.
It describes the dream of integrated schooling enabled by Brown v. Board of Education in 1954 and how, through racist policy making at the federal, state, and local levels, this dream has been slowly dismantled resulting in an American school system that is as segregated today as it was during the civil rights movement.
Wed, Feb 6, 2019
Overall It went great, I PR’d by 10 minutes! The course is super fast and the light drizzle of rain didn’t really put a damper on things.
Report t-0:20 I arrived and was able to use the bathroom – they did a great job of making sure there were enough port-a-potties. After that since it was drizzling I hid under a tree to the side of the start line with a bunch of other runners who looked like they were from a club and knew what they were doing.
Sun, Feb 3, 2019
Sometimes you need to know how fast you need to run to achieve a personal best time. Previously the way I did this was to search “running pace calculator” and follow and use one of the top results. However, I was doing this almost always on mobile and none of those results are very mobile friendly. There might be good native apps for this, but I’m a fan of the web and don’t want to download an extra app if I can avoid it.
Sun, Feb 3, 2019
This site, jeffcarp.com, is written in markdown and uses the Hugo static site generator. This post walks you through how I set automatic building, testing, and deployment to Firebase hosting.
Project Setup I assume we’re starting from a working Hugo project. For more on how to set that up, see the Hugo docs.
Testing Setup I want the site to be Deploy-on-Green (i.e. only if it passes the tests). The CI setup I use is GCP Cloud Build.
Tue, Jan 29, 2019
The Pomodoro Technique is method for improving productivity by segmenting work into 25-minute intervals. You focus intensely on a task for 25 minutes, then take a break. Rinse, repeat.
I began using the technique to study for the cryptography course I took last winter. The benefits were clear from the beginning. I enjoyed working in 25-minute segments and started using it at work as well. I want to share with you some of the things I learned along this year-long journey.
Sat, Jan 19, 2019
Inspired is a great introduction on how to be a Product Manager by Marty Cagan, a former engineer turned product expert. Here’s one of my favorite themes of the book:
Product: build the right product Engineering: build the product right
Here are the most poignant things I learned from this book organized by category.
Product team structure It’s important to have somebody between product marketing and engineering (i.
Wed, Jan 16, 2019
A bot who can write a long letter with ease, cannot write ill.
—Jane Austen, Pride and Prejudice
This post walks you through how to write a Markov Chain from scratch with Python in order to generate completely new sentences that resemble English.
The text we’ll be using to build the Markov Chain is Pride and Prejudice by Jane Austen. You can follow along here or grab a runnable notebook version of this post on Colab.
Mon, Dec 24, 2018
For the past few years I’ve been summing up my yearly highlights in a blog post. It doesn’t matter if anyone reads these posts—it’s nice to have these to be able to look back on the big things that happened in my life each year.
So without further ado, here’s an overview of the big things that happened in my life in 2018, from Running, to Reading, Learning Work, and Health, finally looking at how I did on my 2018 goals and setting 2019 goals.
Mon, Dec 10, 2018
This book is about two ways of thinking: the fixed mindset and the growth mindset. In the fixed mindset you’re a finished product. Expending any extra effort is unthinkable because supposedly you’re already perfect. Then there’s the growth mindset, which tells us the only way you learn is from mistakes, talent doesn’t get you very far, and the people who succeed are the ones who work the hardest.
Fri, Nov 23, 2018
叽叽歪歪 词典也，谷歌翻译也没有翻译。 在网上搜索以后，我觉得叽叽歪歪用来形容话很多的人。我觉得叽叽歪歪是象声词。
半袖 我的词典有「长袖」和「短袖」但是它没有「半袖」（”half-sleeve shirt”）。 我在中文课学了这个单词。
蓝领，白领，金领 英文也有蓝领（”blue collar”）和白领（”white collar”）， 但是英文也应该有金领（”gold collar”）。VP还有CEO是金领的人。
Tue, Nov 20, 2018
The Googleplex at dusk This post unfortunately does not contain a secret skeleton key that will unlock every tricky Software Engineering interview question. What’s below is a framework that you can apply to every interview question that will set you up for success every time.
Software engineering interviews are not primarily about seeing if you can pull the #1 most perfect solution to a problem out of your hat.
Wed, Nov 14, 2018
I can’t recommend The Manager’s Path by Camille Fournier highly enough for Software Engineers. I’m not a tech lead, however I found this book super useful for understanding the structure of technical organizations. It contains many gems that I want to write on sticky notes and post above my desk at work. Like this:
Especially as you become more senior, remember that your manager expects you to bring solutions, not problems.
Sat, Oct 20, 2018
大家好，今天我要写一下更多相似的中文话。我的上次的blog post是英文写的 Similar Mandarin Words。下面是更同类的单词我遇到了在学中文。
“去” 和 “走” 都可以用去某处。“走”的意思是physically walk somewhere。去是more general。
“方才” 和 “刚才” 在词典方才和刚才都有同的意思。但是没有人说方才。人人用刚才。
“很有意思” 和 “很有趣” 都是同的意思。很有意思还有可能用sarcastically。
“见到”，“看到”, 或者 “看”，那个用？ 看只是to see的意思。见到是看某人的意思。看到的意思是to notice。 也可以是看某人的意思但是
Sun, Oct 14, 2018
Thu, Sep 27, 2018
No car exhaust fumes. Works out different parts of your legs and core that wouldn’t otherwise be exercised on asphalt. See wildlife. Visit places and see sights where roads don’t go. Races are more intimate and less anonymous. You make friends. Strangers encourage you along the trail. You encourage strangers.
Tue, Sep 25, 2018
Imagine you’re an interviewer in a software engineering interview. The interviewee writes a method and it’s completely wrong. They go on to implement other parts of the problem, then later realize there’s a bug and come back and fix the original method.
One thing that isn’t super clear for both interview candidates and interviewers is how to treat mistakes like this. The candidate definitely made a mistake. But their final implementation is correct.
Sat, Jun 23, 2018
After building a system with TensorFlow in Autumn 2017 and taking a course on Cryptography in Winter 2018, I saw some interesting parallels. TensorFlow is Machine Learning framework but under the hood it’s a general platform for doing computations in the structure of a graph. Cryptographic algorithms are frequently structured as the manipulation of vectors or matrices in the structure of a graph. I put together a Python notebook to explore this interesting relationship.
Sat, Jun 23, 2018
This year I’m trying to start learning Mandarin Chinese. Here are some confusingly similar words I’ve come across.
认识 and 知道 The difference is between knowing a person, 认识 (rènshí) and knowing a fact, 知道 (zhīdào).
你认识她妈? 你知道我很酷吗？ nǐ rènshí tā mā nǐ zhīdào wǒ hěn kù mā Do you know her? Do you know I'm cool? 正在 and 现在 Both roughly mean “now” but 正在 (zhèngzài) means currently or in general and 现在 (xiànzài) means literally right at this moment.
Sun, Jun 3, 2018
Yesterday I ran Inside Trail’s China Camp Trail Run, my first trail half. The course was good! The temperature was in the 80s but the course offered lots of shade. It was mostly single track trails with a few friendly mountain biker sightings. 1.5 miles into the race there was a nice steep 500ft climb.
As a beginner trail runner I want to share with you a few tips that I wish I had heard before the race.
Mon, Apr 16, 2018
A hash function is a function (in both the math and programming sense) that is “one way” – meaning given the output yyy , it’s near impossible to find the input xxx .
H(x)→yH(x) \rightarrow yH(x)→y Hash functions are extremely versatile and are found in all parts of software engineering.
They’re how a a Bitcoin miner tries to guess the next block in a blockchain. git stores files internally using the hash of the content as the filename (content-based addressing).
Sat, Mar 31, 2018
This Winter quarter I took Stanford CS255: Introduction to Cryptography. It was a super challenging and enriching course and I learned a ton about the mathematics and algorithms behind the cryptography we depend on every day. Here are some memorable high-level takeaways from the course.
1. Don’t implement crypto yourself Cryptography primitives like AES are extremely powerful and extremely difficult to do correctly. Use a high-level API to ensure you’re doing things right.
Fri, Mar 30, 2018
I updated the design of my blog and moved it from jeff.is to www.jeffcarp.com. The site jeff.is is still available, but I’ll be moving over content shortly and setting up a redirect.
Fri, Jan 5, 2018
In TensorFlow if you’re using a tf.estimator model, for instance tf.estimator.DNNLinearCombinedClassifier, and as part of your automated training infrastructure you want to save the evaluation results as a JSON file, it’s not super straightforward, so here’s how to do it.
Let’s say you define your EvalSpec like this:
eval_spec = tf.estimator.EvalSpec(eval_input_fn, steps=hparams.eval_steps, exporters=[exporter], name='eval') You’ll need to write a new exporter class that will take the eval_result from your evaluation step and save it to a file using the GFile API.
Sun, Dec 31, 2017
Hi friends, here’s a quick overview of what I was up to this year.
The most important thing that happened this year On a sunny day in August 2017, literally the smartest and most beautiful person I know and I embarked on a beautiful trail run on Mt. Tamalpais in Marin that ended on top of a mountain. Once we got to the summit, I asked her to marry me.
Sun, Nov 19, 2017
I wrote a quick how-to on Kaggle demonstrating how to save and load a model in TensorFlow.
Sun, Oct 22, 2017
While in Tokyo for BlinkOn8, a gathering for Blink and Chromium contributors, I gave a talk at a coding school about the security architecture of Chromium. Here are the slides.
I’m far from an authority when it comes to security or specifically security in Chrome, but I’m really interested in it and I hope this deck has some information you find interesting as well.
Sat, Dec 31, 2016
2016 turned out to be a pretty crappy year, but it wasn’t all terrible. I made some good progress on my personal goals, so there’s that. Here’s a review of my 2016. If this sort of post strikes you as excessive navel gazing, that’s because it is — therefore I urge you to stop reading right now.
Work The theme for this year of my life is probably “insane amounts of learning.
Sun, Jul 31, 2016
I gave a talk at the SF Payments Engineers meetup about Web Payments. Here’s the blog-ified version of that talk. Check out the slides from my talk here.
Mobile checkouts are a terrible experience for customers. Both consumers and merchants are both feeling the pain. Mobile checkouts convert about 66% worse than desktop checkouts.
A slide from the PaymentRequest presentation at Google I/O 2016. Part of the problem is that every company needs to build their own credit card form.
Mon, Jul 25, 2016
Over the past few months I’ve mentioned to friends that I want to learn engineering leadership skills. Each time the reaction is: “you want to get into management??” That’s not how I see it.
As engineers we hold the lone wolf in high regard, the hoodie-wearing coder hacking away in the corner at a genius project. But large projects that deliver a ton of value are made by teams of engineers, not lone wolves.
Thu, Jul 14, 2016
Do something rude.
Make sure to realize that what you did was a huge infraction. Unforgivable. Your friends or coworkers will always remember that thing you did and your character is now permanently besmirched.
Don’t make an effort to apologize or clean up the damage you caused, because your friends will no longer accept you.
Seeing your friends reminds you of the damage you caused. Distance yourself further from these people.
Mon, Jan 11, 2016
Here are the 5 most defining themes of my 2015, in no particular order.
1. Scapula I fractured my scapula (shoulder blade on my right side) on December 24, 2014 while skateboarding with my sister. I spent most of January 2015 resting and recovering. Part of that meant starting physical therapy.
PT was such a good influence on not just my scapula, but other parts of my life, that I consider breaking my scapula a highly net positive life event.
Sun, Nov 29, 2015
I’ve always been interested in running and looked up to friends who’ve trained for marathons or go running all the time. Running is great because it’s really easy to fit into a busy schedule and it leads me to explore new parts of my city (or better yet, a city I’m visiting).
Throughout my life, however, I haven’t been able to run much due to an ongoing series of injuries. In Middle School I absconded from the swim team for a semester to join the track team, but I didn’t end up running much due to excessive heel pain (maybe I was growing too fast).
Sun, Jun 15, 2014
As someone who had never pair programmed before, it was exciting to get thrown into the deep end during my first week at Braintree where engineers pair nearly 100% of the time.
The relative merits of pair programming have already been spoken about at length. This post is not an attempt to argue one way or another. Whether it works for any organization is probably too context-dependent for any axioms I could lay down.
Mon, Apr 28, 2014
On April 24 I gave a talk, Introduction to Angular.js, to the SF HTML5 Live Code meetup group. Here’s the screencast:
Thu, Feb 20, 2014
First, let me define what I mean when I say mutative:
// If a method is mutative, that means it changes the original array. var foo = [1, 2, 3]; foo.