Eric Feng

Developing opinions.
GitHub X
  • Scaling customer engineering

    Agents made intelligence cheap. Scaling customer engineering now means managing scarce attention, clear protocols, and human ownership.


  • Dear Reader

    I clicked merge again this morning and felt a bit numb. It is the late agentic summer, and leaf has subsided to leaf.


  • Your users table is chaos

    Self-serve is chaos, but customer communciations and agents require a uniform, cross-linked data plane.


  • GTM in a loop

    The primary job of go-to-market is communication with humans outside the company. Sales, marketing, support—all of it is outbound communication. And communicati...


  • Cross-company issue threading

    Moving from customer requests to customer validation


  • Forward acceptance testing

    SLA contracts are outdated, the future is contractual acceptance testing


  • Dialogues

    What does it means to "publish" a blog post anymore? Once published, a post represents what I thought on that date. The back catalog is stale. But I keep musing...


  • Human excellence after AI

    John Henry has been in the SF zeitgeist lately. Physical strength used to define worth. Machines changed that. Intelligence is in the middle of the same transition.


  • Software as a shim

    I'm writing this post in a dialogue with Claude. I'm not just querying, coding, or automating. I'm drafting, refining, and even rewriting my thoughts via a dial...


  • Customer support in the age of coding agents

    Coding agents aren’t just writing more software. They’re generating software like games have procedurally generated terrain. This has changed the support demand...


  • What is customer engineering?

    The practice of scaling customer obsession


  • Incident support

    During incidents, SaaS becomes support as a service


  • Wrong about Jira

    Re-reading my "Valley of Jira" post


  • Lean Back Onboarding

    Dodging clippy, drip marketing and webinars


  • Loglink

    Hyperlinks for logs (update, logpoints are better)


  • Conversion & Code

    wild exuberance and slop hangovers


  • Thoughts on Breakneck

    My reflections on Dan Wang's book based on my own experiences


  • ted

    a database table editor


  • Your house is an asset, your agent is an asset manager

    Why not compensate them like one?


  • Sinophobia

    Thoughts on being Chinese amid increasingly anti-Chinese propaganda


  • Apple Vision Pro opinion

    iPod before iPhones


  • Code is law

    Broken code are broken laws


  • Self-driving cash flow

    Tesla's model may be more "realistic"


  • Strewn amongst the reasons

    "Everything happens for a reason." I believed that. I had a trajectory. The child of Chinese immigrants who fought and sacrificed everything to hurl their son h...


  • Health and Fitness

    Putting down thoughts on fitness, lifestyle, and health


  • An assortment of opinions

    Decentralization, cars


  • Guest Bed Rabbit Hole

    Guest bedrooms have become a luxury, but hosting friends and family remains a social necessity. Run through the math. Homes in SF are $1K per square foot, $2k i...


  • Finance's commissars

    Capitalism can be just as blind to reality as communism


  • China-verse

    Observations from visiting China at the end of 2023


  • JavaScript streams and partitioning

    A note to keep myself from repeatedly banging my head against the same compromise.


  • BUSL is good for open source

    A thoroughly mediocre and nonplussed view on a unnecessarily controversial topic


  • 2023 SF rent vs buy

    Me confirming to myself that buying right now is probably a bad idea.


  • v8go and parallelism

    Parallelism with v8go is rarely worth the cost.


  • Embedded engine

    I've been building Pipet in the dumbest way possible.


  • Reaction to React Server Components

    The Next Meteor.js


  • JSON Set

    JSON Patch for simpletons


  • Markdown Table Subselectors

    mdtss, a proposed syntax for subselecting markdown tables


  • ETL sucks

    The what and why of my project, Pipet


  • Chinese diaspora

    I recently came acrosshttps://twitter.com/mathemakitten/status/1595603994566545408 the term "Asian diaspora" and it struck a chord with me. It's because my...or...


  • v8go worker pool

    Using v8go with goroutines


  • 'Cloud Prem' isn't going to happen

    Data warehouses are **not** a new data platform


  • Bay area housing copium

    Speculation on the near-term future of the Bay area housing market


  • Typing before correctly parsing

    Bad ideas and redemption with sqlc, bigint, and JSON parsing


  • Event streams aren't event sourcing

    I keep getting nerd sniped by event sourcing. A warning for my future self.


  • Optional create and update parameters with sqlc

    A few SQL tricks for optional parameters for create and update API endpoints with sqlc


  • Rust first impressions

    Impressions of Rust from someone who learned Python, JavaScript, Golang in that order.


  • SQL Passthrough

    Direct SQL access for the browser


  • Dos and don'ts of cold emails

    Notes from the cold emails I've both sent and received. Don'ts 1. "Display images below" 1. links to the position 1. 🚀 or 🦄 emoji in the subject line 1. unsu...


  • Ultorg

    A wedge to introducing data sanity to business operations


  • The valley of Jira

    Jira is good enough.


  • Regulating gaming in China

    Thoughts on the new regulation of gaming hours for minors in China


  • A case for Opendoor

    The Internet is shifting preferences and changing the shape of the housing market.


  • Numeracy's acquisition

    A perspective on what happened and what I should have done to improve myself and the product during my time there.


  • A Dropbox wishlist

    If Dropbox was built just for me


  • The cloud killed open source as a distribution model

    I've been struggling to make sense of open source since college. I remember installing Linux for the first time and marveling that I could get an operating syst...


  • Parking should always cost money

    There should be no such thing as free public parking. SF's streets are clogged with street parking. Convenient for low-density areas, street parking is a disast...


  • Frosty the Founder

    Some holiday spirit


  • Everything is a table

    SQL shares more in common with bash scripts than most other languages. It's more mortar than brick, used to smooth and adhere chaotic data for human or machine consumption.


  • SQL AST IDE

    Leveraging AST into a better SQL editor


  • Executing SQL from the browser

    An exceptional idea for a database frontend


  • xi editor and modularization

    In the 🔗 xi editor retrospectivehttps://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html, Raph touches on modularization's costs that I have experienced...


  • BI wasteland

    Business intelligence is a tempting market with high ACVs, but the climate's been shifting and the market is becoming a wasteland.


  • Show me a better way

    Detailing a thoughtful response to the master branch debate


  • Birthday candle billing

    As more niche software is developed, usage-based billing should become the new default


  • Designing sharing for enterprise

    Enterprise sharing. When Numeracy was acquired by Snowflake, sharing was one of the core features they wanted to integrate. One year later If we're going to tal...


  • Company Non-Values

    Well-defined projects have both goals and non-goals. If companies have values...should they have non-values?


  • Think harder less

    Rambling on languages and committing


  • REPLs vs Notebooks

    How and why notebooks are different than REPLs


  • Writing down conversations

    When I first started blogging, I wondered: What am I going to write that hasn't been written already?


  • Setting up tree-sitter on macOS

    Hiccups and fixes along the journey to using tree-sitter.


  • When should a product be open source?

    tl;dr There are reasons, but mostly not.


  • Evaluating Seed Startup Offers

    This does not constitute investment advice.


  • Managing database migrations across git branches

    Proposal for a system for managing divergent database state created by migrations in distributed version control


  • Backfills, JSON, and Columns

    The hidden cost of storing data as JSON


  • An Economics Major Learns Go

    Why bother learning a new programming language?


  • More Prettier SQL

    Some ideas around readable SQL


  • GIF screen recordings on macOS

    Automatically convert screen recordings to gifs and copy them to clipboard with built-in tools.


  • An engineer's SQL client

    Jotted down random ideas on a SQL client I'd love to build.


  • Open Source and Engineering Labor Markets

    How might open source software have made unions redundant?


  • How do I get a job in data?

    Why data is probably a good bet for Valley outsiders and what to focus your time on learning.


  • Identifying Trials from Stripe Invoices

    I recently calculated trial conversion in Stripe, but found it remarkably hard to find historical trials. In case others have need, here's what I found. Invoic...


  • Thoughts on Open Source

    This post was prompted by Ben Thompson's discussion on the latest open source angsthttps://stratechery.com/2019/aws-mongodb-and-the-economic-realities-of-open-s...


  • Hindsight and Uber

    20/20


  • React and Flask for Side Projects

    Adding React to my side project toolchain.


  • Generating Mock Data for Postgres

    I created Faker.sqlhttps://github.com/ehfeng/faker.sql, my first Postgres extension for generating mock data. What's the point of it? When generating mock data...


  • Numeracy's Product Hunt Launch

    random stats from Numeracy's Product Hunt launch


  • SQL for Active Cohorts

    aka users active X days after signup


  • Avoid Analytics

    Focus. Every idea, whether a full fledged startup or blog post, has its own runway. Whether that runway be outside capital investment or your personal enthusias...


  • Startup Data Infrastructure

    tl;dr just use postgres


  • Postgres Connections and Serverless Computing

    exploring the limitations of lambda functions and databases


  • Querying Your Google Calendar

    Uploading your Google Calendar events to BigQuery


  • ics.py vs icalendar

    Tried out ics.pyhttps://github.com/C4ptainCrunch/ics.py and icalendarhttps://github.com/collective/icalendar to parse Google Calendar calendars with Python with...


  • Reply Times with SQL by passing ARRAY<STRUCT> to UDFs

    How long is a customer waiting for reply? Supposing you had this simplified table for tickets donating when the message was sent and if the sender was an employ...


  • Value of Marketing Pages

    Were https://sentry.io/for/&lt;PLATFORM&gt; pages valuable?


  • Cold Emailing Developers

    Thoughts and experience after cold emailing 1,000 developers


  • On Being Helpful

    tl;dr don't be helpful, be useful


  • Data Process

    Thoughts on potential improvements to data tooling


  • Cohort Analysis with SQL

    User journeys abstraction as a rollup table


  • Company Culture

    No company *has* a culture; every company *is* a culture. - Zero to One


  • Mirroring Stripe

    I've been setting up a Sigma-like replica of Stripe. However, unlike the Gmail API, the Stripe email isn't built for data sync, but for...well, billing flows. G...


  • Decision Making Around Pricing

    Pricing decisions are multi-faceted your product has an infinite number of potential pricing scheme and price points and each part of the decision is susceptibl...


  • Querying BitFields with SQL

    tl;dr SELECT * FROM user WHERE subscriptions & (1 << FLAG_POSITION)


  • Web Analytics with Google Cloud Functions and BigQuery

    Following up on my last post/building-side-projects-on-a-budget and a Twitter exchangehttps://twitter.com/arikfr/status/972712708612206592 and of course, musing...


  • Building Side Projects on a Budget

    Things learned along while building FormEndpoint for $10/month.


  • Three Laws of Cold Emails

    This year, I'm going to start cold emailing customers. Every VC and growth guru will tell you to do drip campaigns as growth engineer, I've heard the whispers f...


  • Build versus Buy

    Economics of building versus buying in the case of A/B testing tools


  • SaaS Economics

    Or things I've learned as a growth engineer at a SaaS company


  • Growth by the numbers

    It's best to define a job by the projects and their results. Projects vary by company, but results are generalizable across businesses especially SaaS. Everyone...


  • A Walkthrough of a Complex Flask App

    Flask is my favorite server framework, due to its clarity and flexibility. However, getting Flask beyond "Hello, World" always feels iffy, with most popular onl...


  • Learning to Deploy with Google Container Engine

    A predominantely self-taught application developer learns to deploy with Google Container Engine. Background As a growth engineer, I spend most of my time with...


  • Pipet

    Infrastructure, commodities, and margins.


  • Individual GitHub Repository Access

    Notes on various GitHub API auth methods


  • SaaS Pricing Read

    A well written piece on pricing by a SaaS founder


  • Defining Growth Metrics

    If a tree falls in the forest and no one is around to hear it, does it make a sound? Growth requires metrics. Historically, growth had per-project, tactical met...


  • Basic Math

    A bit of admiration for Elon's breathtakingly simple, even naive, approach to The Boring Company.


  • Naive Musings on Uber

    Disclaimer: I know very little to nothing about how investors value private companies. But I've never read an article that even attempts to do basic arithmetic ...


  • Some Assembly Required

    Musing on the long-term value of non-engineering roles.


  • Commodity Pricing

    Why and what happens when you price yourself as a commodity.


  • What's the difference between Jekyll Posts, Pages, and Documents?

    To those hooking into the internals of Jekyll, knowing a bit more about what each variable includes can be helpful. site.pages only returns pages.^1 site.posts ...


  • What is Growth Engineering?

    You see growth engineering in consumer tech Facebook, Pinterest, Uber, but I've seen less of it for B2B SaaS, so one year in, I wanted to share my understanding...


  • Lessons on Pricing

    Things I've learned from working on three major pricing changes.


  • Philosophy (2017)

    Taking note on why I live. Personal philosophy I don't have one yet. I've never known how to view myself. Something to think about this year. Interpersonal ph...


  • 2016

    Working in a startup, it's easy to forget all the random things I've done. A brief retrospective. Marketing Ad buys: Managed Adwords and Twitter spend. Setup r...


  • Gmail API MIME types

    I've found Gmail's API surprisingly confusing, mostly because email was so clearly built in a time before JSON. The message payloadhttps://developers.google.com...


  • Stretching Metaphors

    To stand on the nose of a dragon.


  • Postgres Analytics Tips

    For analytics startup folks with prod access


  • Notes from Atlassian S-1

    Reading through major S-1s, starting with Atlassian.


  • Redash Python functions

    We've been using Redashhttps://github.com/getredash/redash at Sentry lately. I'd never heard of it before Mode being the frontrunner in this category, but it's ...


  • Full Page Screenshots on macOS (free!)

    How to set up a keyboard shortcut for taking full page screenshots only using Homebrew and Automator.


  • My 36 Hours in Kyoto

    The journey from Tokyo to Kyoto might just be a quick nap on the Shinkasen Nozomi, but it could not be a more different side of Japan.


  • My First Trip to Japan

    Itinerary: Tokyo and Kyoto My Maphttps://drive.google.com/open?id=1rF449KVep4dt8I5iPsHnql-rks0&usp=sharing Japanese I love Fodor's basic phraseshttp://www.fodo...


  • Measuring the Golden Path

    Thoughts on nailing down and measuring the "golden path"


  • A few quotes

    Words said by famous, clever, or just talkative people.


  • Growth Engineering at Facebook

    Really well put together talks on growth engineers. What it is, but just as importantly, what it isn't.


  • How I feel when I say I am searching for inspiration

    I want it to rain. Slowly, at first. A soft mist surprising me when I emerge from the BART. The kind nudges you awake. Makes you take off your headphones and fo...


  • A letter to Convex

    Something I wrote to a friend at the company