Using LEAPS as Leverage?

In my journey to learn more about personal finance, every time the subject is brought up the message is clear: avoid leverage at all costs. It can quickly ruin you. “There’s only three ways that a smart person can go broke: liquor, ladies, and leverage.” —Warren Buffett Recently I came across an interesting 2008 paper that runs counter to that thinking titled Life-Cycle Investing and Leverage: Buying Stock on Margin Can Reduce Retirement Risk.

Deciding between a static and dynamic site

Hi, I’m trying to blog more this year. Maybe not every day, but more frequently. In a recent post I mentioned I’ve been working on a fast frontend for a Chinese-English dictionary. In the spirit of “blog about what you’ve struggled with”, the biggest challenge I’m currently facing is choosing between designing the site as front-end heavy or back-end heavy. I’ve written two initial versions of the site: one as a fully static website and one as a fully backend app in Go.

2023 Year in Review

Hi there, it’s time to reflect on what I was up to this year. Running I started 2023 thinking I had a long-term knee injury. Around Summertime I made a breakthrough in discovering it wasn’t a knee issue but a toe issue. Since then I’ve been keeping the mileage low and trying to build a healthy base. In total I ran 361 miles this year, which is down from usual but I was very consistent in my training.

Considering File Formats for ChineseDict

Recently I’ve been hacking on ChineseDict, a fast web frontend to look up Chinese words. I started the project originally to fulfill a specific use case: when practicing chatting with friends or watching a video, I need search results in milliseconds, not seconds. The website uses the CC-EDICT dictionary to power the results. I now want to expand each term with examples and extra data in a way that’s easy to store on disk and update via git commit.

2022 Year in Review

Hi friends, Like last year, here’s a brief overview of what I got up to in 2022. Running Despite this being my biggest running year in terms of mileage (683mi), I struggled with injuries pretty much the whole year, likely due to too much racing and not enough training. My “goal race” for this year was running the Four Pass Loop, a 28mi loop with 9000ft of vert around the Maroon Bells in Colorado and rated the #1 trail run in the country on Trail Run Project.

Recent Running Lessons

When I have a running injury, it’s not always the right thing to completely stop running and wait for it to heal. Sometimes it’s worse to stop running altogether, because while the injury is healing, all the surrounding muscles are getting weaker. This actually makes injury more likely when I return to running. My current strategy is to keep running as much as possible as long as the pain is less than 3/10.

Questions I Ask Companies in Interviews

Inspired by Julia Evans’s post Questions I’m asking in interviews and Chip Huyen’s Questions to ask your interviewers section from her ML Interviews book, here are the questions I ask in interviews, targeting staff roles in ML infrastructure. Overview My general approach is: Have 3-5 “primary” questions that cover the most important things. Have a backlog of 20 questions that I can fire off as necessary. I never want to run out of questions or repeat a question in an interview.

Kuli'ou'ou Ridge Loop Trail

View from the second peak. While on vacation in Hawaii I was super pumped to get in a nice trail run. Here’s how it went. Course     Distance 5.3 miles Elevation gain 2326 ft Average grade 12%(!) Duration 2:32:43 Temperature 75F Humidity 87% Strava Link AllTrails Link Viewed on Google Earth.

2021 Year in Review

I wasn’t initially planning on writing a year in review blog post for 2021, but I was recently reminded of how nice it is to have a concise public record of the things that were important to me for each year (even if nobody other than me reads it). So here it goes! Highlights Getting vaccinated! Going back out to restaurants and dining Attending weddings of my two of my best college friends First Waymo SF ride Traveling again Wednesday morning trail runs Post-vaccination!

Favorite Books of 2021

Happy new year! Here are my 5 favorite books of 2021. Empire of Pain A sprawling, enthralling story of the opiate epidemic told through the lens of multiple generations of the family that ushered it in. This book reminded me of Bad Blood, but with far larger scope. In his book Opium: A History, Martin Booth observes that when it comes to products derived from the opium poppy, “history repeats itself.

Recruiter Autoreply Bot 2

Let me state the obvious: recruiters aren’t actually sending most recruiter emails. They automate it with software. However, the recipients of recruiter emails must spend real human time either responding to or ignoring these emails. Unfortunately just ignoring the emails triggers more followup emails (they usually come in sets of 3). This adds up to a lot of wasted time. Background Back in 2019 I created a bot that automatically responded to recruiters I tag with a certain label in Gmail.

Things I Wish I Had Known About Earlier

Anki and Spaced Repetition I’ve adopted the Anki app to help learn new vocabulary and retain various things I learn Currently my decks are: My Anki decks Spaced repetition flashcards are great. I would have done much better in school if I had known about them. Investing and Indexing For most of my 20s I didn’t know much about investing, so I avoided it. Better to not risk my money, is what I thought.

2020 Year in Review

2020. What can I say? It was a year I don’t think any of us need to live again. Here’s a brief overview of my year. Highlights In February on Valentine’s day, Elva and I adopted Noona(!), an 8 year old Siberian Husky. She’s the chillest, sweetest dog. Due to lockdown starting 2 weeks later, I’m sure she thinks that spending all day at the house giving her attention is normal.

How to clone a Google Source Repository in Working Copy iOS

I recently went through this process and couldn’t find a guide (though I swear one existed at some point in the past). Here’s how to clone a git repository from Google Source Repositories in the Working Copy iOS or iPadOS app: Navigate to Pick out the repo you want to clone and open the clone dialog (it looks like a “+” icon) Go to the “Manually generated credentials” tab Click on “Generate and store your Git credentials” Go through the authentication flow You should be prompted to copy a shell command onto your clipboard Go to the Working Copy iOS app Go to Settings (the gear icon) > Authentication Cookies Tap the “+” icon and import from clipboard You should now be able to clone the repository using the https://source.

Grace Hopper 2019 Trip Report

Despite this trip report being over 9 months late, I wanted to share it because I can’t stop thinking about how positive an experience this conference was. Grace Hopper is the largest women in tech conference in the world, with around 25,000 attendees flying into Orlando, FL from all parts of the world for the 2019 conference. In previous years I had been interested in attending but hadn’t gotten the chance—and I (as a man) also strongly did not want to take the spot of a potential woman visiting the conference.

The Most Commonly Used Chinese Words

I think the most effective way to learn a language is to prioritize learning the day-to-day most frequently used words. Picking words to study in order of frequency is the optimal way to maximally increase your marginal understanding of the language for each successive word you learn. To that end, I took a dataset of Weibo (China’s Twitter) posts and ranked all words that appeared in the dataset order of frequency.

Napa Half Race Report

The end of the pain cave. Note: the clock time in the picture is for a different race. 😆 I PR’d my half marathon at the Napa Half!! Yeahh!!!! Old PR: 1:31:37 at the 2019 Kaiser SF Half. New PR: 1:28:59 (link). Improvement: 2.9% (-2:38) In this post I want to look into the race and more closely analyze what went well, what could have gone better, and what was interesting about this race.

2019 Year in Review

In 2019 I got married—twice! (to the same person!)I changed jobs. I ran my first marathon. 2019 was a huge year in my life. I grew in a lot of ways this year. Wedding planning was a huge undertaking and strengthened our communication and quick decision making skills. Additionally this year I started working with a therapist which has been great—I’m wondering why I never thought of doing that earlier.

The Best Books I Read in 2019

Here are my 4 favorite books from 2019. 1. A British couple buys a farmhouse in the South of France and spends the next 12 months exploring the countryside, meeting the locals, renovating the house, and of course, eating and drinking well in [A Year In Provence]( 40189.A_Year_in_Provence) by Peter Mayle. For a premise that could come off as a little posh, the detail in this story is so rich and the storytelling so genial I couldn’t put it down.

CIM Race Report

I did it!! I ran my first marathon! It was painful… but worth it! Despite still being pretty sore I can tell you I would definitely do it again. Solid Type II fun. My final time was 3:59:44, sneaking in just under 4 hours. You can view the full splits here and my run on Strava here. Despite consciously trying to keep my pace under control in the first half, I went out too fast.

Marathon Training Update

I’m signed up for the California International Marathon (a.k.a. CIM) in Sacramento, which is in less than 3 weeks! This will be my first marathon (the SF Marathon this year was supposed to be, but I gave myself a toe injury by overtraining). My goal is simply to finish. I think having any sort of time-based goal would risk pushing me past the point of injury during the race. Am I ready?

I'm Joining Waymo

Quick life update: I’ve left the Chrome team and joined Waymo (formerly the Google self-driving car project). I’ll be working on ML infrastructure. It was a fantastic whirlwind 3 years working on infrastructure for Chromium and helping to–in a very small way–push the open web forward. On the team I launched, a resource to help align the APIs of all browsers. I worked on syncing source code across repos. I launched a couple TensorFlow ML models.

Things I Learned as a First-Time Intern Host

I hosted an intern for the first time this summer. It was my first time being somebody’s manager and it became a huge learning experience for me as well as a really fun time. My intern worked on adding many features to velocity-tracking charts, rewriting both of our ML models in TensorFlow 2.0, and a few other projects. Here are the biggest areas where I struggled as a host and the important lessons I took away from those experiences.

How are Words Represented in Machine Learning?

Machine learning on human languages is a super exciting space right now. Applications are exploding—just think of how many natural language ML models it takes to run a smart assistant, from transforming spoken audio to text, to finding the exact part of a web page that answers your question, to choosing the correct words with the correct grammar to reply to you. At work I recently had the opportunity to build an NLP system.

3 Tips for New Technical Interviewers

One year ago I conducted my first software engineering interview at Google. In that first interview I gave, I guarantee you I was more nervous than the candidate I was interviewing. Those first few interviews were particularly nerve-wracking. A lot was on the line—I didn’t want to screw up this person’s career by being a bad interviewer! Since then I’ve conducted a great deal more interviews and learned a lot about how to interview candidates successfully.

On Being Injured (Again)

tl;dr: I signed up for the SF Marathon (this would have been my first marathon), then overtrained, got injured, and am currently recovering. I’m probably going to defer my registration to 2020 and become a cheering squad this year. (╯°□°)╯︵ ┻━┻ This is a cycle I’ve been through over and over again. I literally wrote about this in 2015. Being injured massively sucks. I can’t exercise the way I usually do, and I don’t get see my running buddies.

Setting Up a Recruiter Auto-reply Bot

If you’re a software engineer, you’re likely familiar with unsolicited emails from recruiters. Most are probably template emails. Some of them are funny, some are thoughtful, and some of them ask you to move 3000 miles, take a 50% pay cut, and code in a language you don’t know. Impact Recruiter emails have a measurable impact on productivity. If I were to hand-write a response to each one (taking 2 minutes), and I got 1 recruiter email a day, that’s 12 hours of work, or more than one full work day of each year… gone.

Measuring My Chinese Progress

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).

Kaiser SF Half Race Report

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.

Building a Running Pace Calculator With AMP

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.

How I Host Static Sites With Automatic Deploy on Green

This site,, 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.

A Year of the Pomodoro Technique

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.

Build a Markov Chain Sentence Generator in 20 lines of Python

A bot who can write a long letter with ease, cannot write ill. —Jane Austen, Pride and PrejudiceThis 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.

2018 Year in Review

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.

Reading Notes: Mindset: The New Psychology of Success

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. Living in Silicon Valley surrounded by high-achieving people, I thought I had already embodied the teachings of this book.

How to Solve Every Software Engineering Interview Question

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. What’s more important is showing your work: demonstrating your analytical skills and problem solving ability.

Reading Notes: The Manager's Path

I can’t recommend The Manager’s Path by Camille Fournier highly enough for Software Engineers. I found this book super useful for understanding the structure of technical organizations. It contains tons of gems that I want to write on sticky notes and post above my desk at work, like: Especially as you become more senior, remember that your manager expects you to bring solutions, not problems. This book covers the nitty-gritty aspects of tech leadership like 1-on-1s, mentorship, and debugging team dysfunctions.

More Similar Mandarin Words

大家好,今天我要写一下更多相似的中文话。我的上次的blog post是英文写的 Similar Mandarin Words。下面是更同类的单词我遇到了在学中文。 “去” 和 “走” 都可以用去某处。“走”的意思是physically walk somewhere。去是more general。 “方才” 和 “刚才” 在词典方才和刚才都有同的意思。但是没有人说方才。人人用刚才。 “很有意思” 和 “很有趣” 都是同的意思。很有意思还有可能用sarcastically。 “见到”,“看到”, 或者 “看”,那个用? 看只是to see的意思。见到是看某人的意思。看到的意思是to notice。 也可以是看某人的意思但是 再次谢谢Elva给教学我中文很好。

Reasons to Try Trail Running

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.

It's OK to Make Mistakes in Coding Interviews

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.

Sydney Photos

I travelled to Sydney in July to work with Chrome folks over there. Here are my pictures from the trip. The Sydney Harbour Bridge On Saturday I took the ferry to Manly Beach, a chill beach town up the coast from Sydney. The view of the bridge and the opera house from the ferry. The old escalators in one of the subway stations was repurposed into an art piece that hangs at the entrance.

Doing Cryptography in TensorFlow

TensorFlow is a popular machine learning framework. If you look under the hood, TensorFlow is a general platform for doing computation over tensors in the structure of a graph. While studying Cryptography, a completely different field of Computer Science, one might begin to notice that cryptographic algorithms are also frequently structured as the manipulation of vectors and matrices of bytes in the structure of a graph. You might see where this is going.

Some Similar Mandarin Words

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). 正在 and 现在 Both roughly mean “now” but 正在 (zhèngzài) means currently or in general and 现在 (xiànzài) means literally right at this moment. 可以 and 可能 可以 (kěyǐ) is used when you’re willing and able to do something.

China Camp Trail Race Report: Things I Wish I Had Known

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.

Understanding the Security of Cryptographic Hash Functions

Hash functions are an extremely versatile tool that you can find nearly everywhere in software engineering. Bitcoin mining is done by repeatedly computing SHA256 hashes. git stores files internally using the SHA-1 hash of the content as the filename (content-based addressing). When you download an app, your phone verifies that the app you’re about to run is the app you intended to download by computing a checksum (a hash of the entire app) and comparing it to one provided by the app store.

What I Learned taking Stanford CS255 Introduction to Cryptography

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. 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. If you’re typing the letters “AES” into your text editor, you’re doing it wrong.

New Blog, Who Dis?

I updated the design of my blog and moved it from to The site is still available, but I’ll be moving over content shortly and setting up a redirect.

How to Export Evaluation Results in Tensorflow

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.

Goodbye 2017, Hello 2018

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. She said yes!

Example: Save and Load a TensorFlow Model

This post details how to save and load a TensorFlow model using the DNNClassifier API. The key idea here is that you define a function or a class beforehand that takes a model directory (in which it will save and restore the model parameters), adds that to RunConfig, and returns a tf.contrib.learn.Estimator, for example, tf.contrib.learn.DNNClassifier. See make_estimator for more details. import numpy as np import tensorflow as tf from tensorflow.contrib.learn.python.learn.estimators import run_config from tensorflow.

Chrome Security Architecture

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.

Mt. Rainier Backpacking Trip

I went on a 7 day backpacking adventure around Mt. Rainier with two of my best buds. Here’s the video.

2016 Year in Review

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.

Where Web Payments are Going

I gave a talk at the SF Payments Engineers meetup about Web Payments. Here’s the blogified 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. Part of the problem is that every company needs to build their own credit card form. Checkouts range from great UX to terrible UX, but the heterogeneity is what really makes it a pain for consumers.

You are an engineering manager whether you realize it or not

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.

How to be an Asshole

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.

2015 in 5 Themes

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.

Breaking the Cycle

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).

Wrist Upgrade: Suunto Ambit3

I’m not a huge runner but whenever I run I use Strava for GPS tracking. I had been carrying my phone with me while I ran, but since it’s on the larger side and I can’t easily glance at it while I run, I looked into getting a watch with GPS + a heart rate monitor. After some research, I decided on the Suunto Ambit3. Here are the things I like about it:

Reading Papers: Bufferbloat, SSL Warnings, Orleans, and more

Inspired by the article Should I read papers? by Michael R. Bernstein and the amazing Papers We Love GitHub repository, I set out at the beginning of January 2015 with the goal of reading 15 academic papers. In this post I want to share with you my notes for the 4 I loved the most. Takeaways In a certain way reading papers is a comforting activity. In a world where the front-end framework you’re using might be eclipsed in usefulness in 1 or 2 years, many of these papers present ideas that are as applicable today as they were 43 years ago.

Visualizing JavaScript Project Structure

Recently I thought to myself: fairly frequently I dive into a big JS codebase and need to poke around for a while to get acquainted with the project structure, wouldn’t it be nice if I could have a more visual way of seeing the whole thing to make sense of it all? It was this need I was trying to fill when I embarked on my open dev project last Friday.

How System Calls Work

Why should you care about syscalls? As a web developer, learning about syscalls and the infrastructure around them can make you feel quite a bit more confident in debugging and reasoning about how systems will perform. Ruby and C++ both have their own idiomatic ways of opening files, but in the end they both end up using the syscall open(). This is because userland processes (like web applications) have only one way of communicating with the operating system: syscalls.

Unforseen Perks of Pair Programming

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.[1][2]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.

Interviewing 2 Years in: What Worked

I’m almost pee-my-pants excited to announce that next week I’ll be joining the team at Braintree and Venmo to work on their JavaScript SDK. Now that my job search is over, I want to share the lessons I learned from interviewing as a software engineer 2 years into my career. Most of these are not new (or specific to being 2 years into your career), but these points are what specifically helped me the most.

Intro to Angular.js Talk

On April 24 I gave a talk, Introduction to Angular.js, to the SF HTML5 Live Code meetup group. Here’s the screencast:

Things learned while preparing for Angular Live Code

This week I learned that there’s nothing quite like signing up to teach something to make you realize you don’t actually know the material all that well. I’m giving an introduction to AngularJS talk this Thursday at Startup House SF. You should come by if you want to learn about AngularJS. It’s Tuesday and 124 people have signed up and I’m kind of nervous to say the least. I’ve tried to channel my nervousness into preparation (we’ll see if it pays off or not).

Two interesting IE JavaScript quirks

In the past month I’ve diagnosed and fixed a couple particularly pernicious bugs relating to JavaScript quirks in Internet Explorer. Hopefully if you haven’t run into these before, this will save you some pain in the future. 1. window does not inherit from Object.prototype Oddly enough, according to the ECMAScript specification, the global window object does not necessarily have to inherit from Object.prototype. In Chrome, FF, and Safari, it does, but in IE it does not.

JavaScript's Mutative vs. Non-Mutative Array Methods

This is an issue that has endlessly tripped me up in JavaScript and I hope this post will help clarify things a bit and hopefully discover a pattern one can use to discern between mutative and non-mutative array methods. 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.reverse(); console.

Hello World, Again

I’ve tried numerous times to start a consistently updated blog. The main deterring factor is that any time I go back and read my writing from a week/month/year ago, I cringe. Maybe the reason I cringe is because I was blogging for the wrong reasons. This isn’t the part where I start pontificating what blogging should be about, but I think what motivated me before was some vague need to toot my own horn, or (god forbid) build by “personal brand.

Japanese Programming

I’m certainly guilty of being a little to anglo-centric from time to time (pizza is an American food, right?), so I was pleasantly surprised when I found out that you can program in languages other than English. You can see the full list on Wikipedia. Since I’m into both computers and Japan, I thought I’d give a few of them a spin. Dolittle ドリトル According to its Wikipedia page, Dolittle is a programming language for education developed by Osaka Electro-Communication University.

Pechakucha Waterville Talk

Here’s the talk I gave at Pechakucha Waterville my senior year at Colby College. I talk about my filmmaking and quantified-self pursuits during my time at Colby.

Ueno Zoo 上野動物園

Yes, it is February and I am back in Maine. But the tale of my stay in Japan has not been completely told. On a warmer-than-normal day in late January, my Colby friend and I ventured up to Ueno to visit the famous Ueno zoo. Our first stop was naturally the panda exhibit. They did not move. Not once. Except for the first panda who turned over on his side to grab a bamboo stick and chew it.

Tsukiji Fish Market 築地市場

Located in the middle of Tokyo, Tsukiji Fish Market, or tsukiji uchiba (築地市場), is the biggest fish market in the world. On my last weekend I woke up early in the morning and headed over there with my Colby friend. Inside the inner market. The market is filled with more sea life than an aquarium, although calling it sea “life” might be a little misleading.

January in Japan

I spent January 2012 Tokyo, Japan interning at a Japanese advertising agency. Beforehand I spent some time in Osaka and Kyoto, the region where I studied abroad in 2010. Here are some highlights of my travels. Kiyomizudera 清水寺 Kiyomizu is one of the oldest, most beautiful, and most popular temples in Kyoto. It was constructed entirely without the use of nails. Legend has it that if you jump off the deck and survive the 13 meter fall, your life dream will come true.

Tokyo Tower 東京タワー

Come on, did you think I was going to be in Tokyo for a month and not do the most touristy thing you could possibly do in Tokyo - go up Tokyo Tower? Sitting before Tokyo tower is the Buddhist temple Zōjō-ji. Sitting before Tokyo tower is a fairly large temple, and in the temple's garden is an installation of hundreds of little stone children, all holding a pinwheel.

Nara 奈良

I have to preface this post with my extreme gratitude for my friend Shintaro’s family, who hosted me for the new year oshōgatsuお正月 and took me on their hatsumōde初詣. I can’t thank them enough for their hospitality. Hatsumōdeis the practice of going to a shrine or temple on the first few days of the year. For Shintaro’s family’s hatsumōde, we went to Nara. Kyoto and Nara are both very historical cities.

Fushimi Inari-taisha 伏見稲荷大社

伏見Fushimiis the ward of Kyoto where this shrine is located. 稲荷Inariis the Shinto deity to whom this shrine is dedicated. 大社Taishameans “big shrine.” On the last day of the year, I got the chance to go back to Kyoto to see a couple more shrines. There was one left that I needed to hit. (And by ‘one’, I mean over a thousand). Fushimi Inari-taishais another super-recognizable shrine in Kyoto.

Kiyomizu Temple 清水寺

After arriving at Hirakata and sleeping in late, my friends and I went to Kyoto to see Kiyomizu temple. 清水寺 (kiyomizu-dera) was one of the places I wanted to go while I was studying abroad there in 2010, but never got the chance. Study abroad friends who joined me. Kiyomizuis one of the most popular temples in Kyoto along with the Kinkaku-ji(Golden Pavilion). The impression I got is that Kiyomizu is all about making dreams come true (not in the Disney theme park sense).

Osaka Aquarium 海遊館

Osaka Aquarium is called the “Kaiyukan,” or sea 海 play 遊 building 館. I noticed two main differences between American aquariums and the Kaiyukan. All of the sea life at the Kaiyukan was really happy and lively. I don’t know what they feed the animals, but it’s working. They have a penguin parade. Several times a day, the staff will waddle a gaggle of penguins around a the front of the Kaiyukan.

Study Abroad in Japan

In Fall 2010 I studied abroad at Kansai Gaidai University. It was an awesome experience. Here’s a video I made about it.

Huge Snow

We’ve been having a warm, sunny spring here in Maine, so it was a surprise a couple days ago when a huge snowstorm hit out of nowhere. The snow lasted for about half a day, and then it returned to being sunny and nice.