Michelle Sun San Francisco

// Making Change a Habit//

Recently I have joined the club of waking up early.  Starting from 6:30am, I shifted my schedule to more recently 5:30am.  Following the structure suggested by The Power of Habit, there needs to be a cue, action and reward.  My cue has been simple, putting the alarm clock far away from my bed, so that I have to get out of bed to turn the alarm off.  In fact, it is placed on my yoga mat which naturally transitions my morning routine of a 30 minute self-directed yoga practice. 

The first few days, or even week, in waking up at 6:30 was not easy.  I would lay in Child’s Pose for a good 10 minutes at times, “meditating”, aka, falling back to sleep.  Then in the new year, I switched to 5:30am, and surprisingly, it felt so normal and much easier than I started at 6:30am. 

That led me wondering, is habit creating an exercise of a diminishing difficulty?  Is it because our willpower gets stronger as we build up more constructive habits?  Can habit creation become, like a habit? 

In the past 18 months, I left the comfort and predictable of finance industry and launched myself into the unknown realm of startups.  Moving from Beijing, to starting my own company, to Hacker bootcamp, to working at a ycombinator startup.  Each time, I encounter empathetic friends who tell me, “I don’t know how you do it”.  It meaning the uncertainty, constant change. 

Like everyone, I yearn for security, and stability.  However, I have realized first hand, that no matter what situation we are in, life is constant changing.  Specifically in entrepreneurship, an awesome startup trajectory can be wiped out in market changes, founders can turn against each other and take away your baby, or the lowest low may actually turn into the darkest moment before dawn. 

From this series of change, I have somehow developed a sensitivity against inertia, and a heightened willingness to seek out change.  I used to strive for “solving” the big question, “arriving”.  These days, I just want to make change a habit. 

He knows the “why” for his existence, and will be able to bear almost any “how.”

- Victor Frankl

Photo Source: Shadowness

// 2012 in review//


2012 has been a huge year in terms of personal and professional growth.  On the professional front, I progressed significantly in pursuing my passion in products, from defining and building a product from scratch and selling it to real customers, to getting hands on with code.  On the personal front, I moved from my hometown Hong Kong to the Bay Area in Jun and have been meeting many amazing people.  

As the year draws to a close, I can’t be more thankful for a fruitful year that was made possible only by amazing people that surround me, in all parts of my life and in different parts of the world.  


Spotick was a company that I cofounded with two other partners.  It uses receipts as a platform to promote marketing messages of merchants.  Due to lack of funding and full time commitment from more than one founder, I left the company after spending a year of work on the project.  It was an extremely fun and enriching experience wearing many hats especially customer development, sales, lean product development and front end coding.  Everything from dealing with customers, learning both software and hardware development technologies, to managing team expectations, exposed me to a myriad of situations that resulted in great personal growth.  

One thing I learned from my first entrepreneurial experience, would be to spend more time cultivating relationships.  While I was actively making sales contacts for the project, I would place more emphasis in connecting with the startup community.  One of the best takeaways from my startup experience was the people I’ve met, including the inspiring Buffer team. 


It was not easy to leave my own baby, but out goes the old, in comes the new.  Hackbright was a pivotal episode of my professional life that happened in the least expected moment; when I was checking my Twitter stream one morning in late May, a tweet by Women2 came up about a program that teaches women to code.  It just clicked.   

I have always been passionate about building products, and having been in a startup and built my own, I have always felt half-blind when it comes to the technical side.  I became even more curious when Spotick’s product touches upon hardware development as well.  During my time at Spotick which I had been doing some front-end coding, I picked up Ruby on Rails on the weekends, by reading Michael Hartl’s Rails Tutorial and Peter Cooper’s Beginning Ruby.  After getting my first Twitter clone working, I was hooked.  

Hackbright helped jumpstart me from a hobbyist to a web developer.  The program teaches python, django, javascript etc, but most importantly, it teaches me how to fish; I love the ability to create something I conceive of, knowing if I don’t know something yet I will be perfectly capable to figure it out.  It is a very empowering feeling.

Aside from learning loads, I also appreciated the founders Christian and David, my fellow Hackbright classmates, who are amazing and smart individuals that made the summer a fun, challenging one.  From pair programming, to hackathons, to coding challenges, the 11 ladies and the founders have created the best environment to learn and explore.  I couldn’t be prouder to be part of the inaugural class of this amazing program. 

Bump Technologies

Since graduating from Hackbright, I have been working on data at Bump Technologies.  With over 100million downloads, it is an ideal playground for a data enthusiast.  I spend most of the work days using Python, and libraries like numpy, pandas come in handy everyday.  There are also wonderful tools like d3Gephi that makes data visualization delightfully easy and elegant.  

Having worked with data my whole career so far, it is an amazing feeling to use data to learn more about a product that I care about.  That is definitely a combination of passion and skills, and I feel very blessed to be able to do so.

As I spend more time on exploring data, I also became more interested and involved in the user experience and strategy aspect of a product.  A big part of data mining / data science relies on asking the right questions, and asking the right questions requires understanding the core values of the product.  For example, when looking at retention, the value proposition of the product plays a significant role in deciding a goal to pursue.  A social product may focus more on retention, as the network effect is sustained not only by user acquisition but also by active users, a utility application (like a Flash light app) may focus more on acquiring new users. 

Goals for 2013

Blog: In the new year, I look forward to sharing more often on this blog.  In particular, I focus on growth and product strategy.  

Coding: I’d like to pick up a functional language, to stretch my programming muscles after an intense year of ramping up with python and ruby on rails. 

I also want to invest more time on data visualization and user interface design. 

Startups: A few friends have approached me to advise on their startups, and given my transition from Spotick to Hackbright and moving to California, I have put those on hold.  I want to get involved in a project or two in the coming year. 

Project: I plan to create a software product in the new year that produces an income stream. 

A personal note

One really special gift to myself this year as I turned 25 is to find the time to get certified as a yoga instructor.  The 200-hour, 4-week teacher training was an intensive challenge and worthwhile pursuit.  While I do not intend to teach professionally full time in the near future, the training has launched my fitness level, and my awareness of such, to a new high.  That has definitely had a positive spillover effect on other aspects of my life.  

Yoga has allowed me to fill my days with energy and mindfulness.  I hope to take every opportunity in the new year to deepen my practice, on and off the mat.  

What did you learn in 2012?  What are your goals in 2013?  I’d love to hear about you in the comments.

// Can Computers Really Learn like Humans? //

John Searle, a professor of Philosophy in Berkeley, argues in the Chinese Room thought experiment that while computers can simulate rules and even pass for a human in online chat (Turing Test), it does not understand language.  

It then suggests, that understanding is beyond comprehending a set of rules; languages are full of nuances and fully learning it requires more than a functional, “if this then that” syntactic rules.  Searle argues that the computer in the Chinese Room is merely simulating knowledge, without actually understanding the language.  Syntax are not enough for creating meaning (semantics).  Human thinking cannot yet be formalized and replicated into machine thinking.  

"no matter how intelligent-seeming a computer behaves and no matter what programming makes it behave that way, since the symbols it processes are meaningless (lack semantics) to it, it’s not really intelligent. It’s not actually thinking. Its internal states and processes, being purely syntactic, lack semantics;  so, it doesn’t really have intentional (that is, meaningful) mental states.”

- Internet Encyclopedia of Philosophy 

How do we learn?  How are meaning/semantics formed?  The thought experiment (still under debate), and in a way, learning machine learning, is fascinating not only from a computer programmer’s point of view, but also from the quest of understanding the human’s mind. 

Reminds me of a quote by David Rock in his fascinating book, Your Brain at Work:

While your brain is a machine, it’s also not just a machine.  However, the only way to be more than just a machine is to deeply understand the machine-like nature of the brain… Your capacity to change yourself, change others, and even change the world, may boil down to how well your know your brain, and your capacity to constantly intervene in otherwise automatic processes. 

Photo Credit: James Yang

// Owning Your Education//

After a summer of intense, guided learning, I feel empowered and very blessed to be equipped with the right skills to pick up new skills along the way.  Learning to program is a continuous process, and it is very exciting for me to feel the amount of possibilities where I drive my learning process to.  Obviously, the best way to learn and work toward mastery of any skills is to find a job in the area or even, working on your own startup; but I would argue, even with a job or own company, it is important to work hard at our skills at the same time.

My post is inspired by an article “Learning to Learn”, by @jsonmez, who detailed a systematic approach to take control of one’s own education.  Below is a synthesis of my own thoughts and @jsonmez’s points. 

0. Find a topic you’re insanely interested in

Before devising a ‘lesson plan’, it is important to define a topic that you are passionate about.  The breadth of the topic is key; the topic can be as broad as computer science, or more specific such as machine learning and data mining.  The broader the subject, the less ‘deep’ you should target to go into.  

If you are generally new to the subject, it might be worth shooting for a broad topic with the goal to gain a general understanding of different aspects of topic (eg, ‘learn to program in Python’ can provide an overview of many topics in programming including data-structure, time/space complexity and different algorithms).  After learning about the general topic, pick a topic that interests you and start to go deeper. 

1. Scope out the topic

Once you have chosen the topic, now comes the trickiest part in self-learning; defining the scope.  At school, the curriculum is carefully designed and reviewed over many classes of students.  While self learning gives us the opportunity to define the speed of learning and the depth and breadth of knowledge we want to pursue, it is important to avoid certain pitfalls when designing our own learning.

- Avoid being overly ambitious: if you are reading this article, chances are you are intellectually curious and care about your own education.  It is tempting to sign up for too many coursera courses (I am a big fan of the site), or define an overly ambitious plan for learning.  

Psychologists found that our brains function the best with a certain level of stress (eustress), which is a delicate point between too much stress and boredom.  

When defining the scope, budget some margin of error and flexibility so that we can reap the reward of achieving a goal, instead of feeling frustrated from reaching way beyond our own abilities. 

- Learning for learning’s sake:  While it is easy to read and read about certain theories, it is important to apply the learnings to a tangible output.  For programming, the best way is to make a project, be it a mobile app, a website or a patch to an open source project, which leads to the next step.  Other ways to apply knowledge include teaching a class, or writing a blog post. 

2. Create a project, define a problem to be solved, with a clear timeframe. 

A project is a great platform in applying learning of whatever topic you are reading about. It can be a series of mini projects, or off shoots of an existing application that you’ve built.  It is best to separate coding projects with ‘startup ideas’, as startup ideas are concerned with ‘feature creep’, product-market fit etc and undermine the primary goal of coding projects which is to experiment and learn new technologies. 

3. Schedule a chunk of time everyday for learning 

Finding a fixed time to work on something not only creates space for our learning but also helps the brain anticipate a repeated action and increase the ability to concentrate.  When budgeting the time, think about your peak performance time.  Everyone is different; instead of following the morning regime strictly, or staying up late like during our college years, listen to your own rhythm.  Once you identify the peak performance time, safeguard it as if it was a business meeting - block the calendar, work around other engagements to ensure you have that period of time free everyday.  

4. Find support and accountability 

One important aspect of learning independently is to build accountability.  The tech community is great and responsive in various platforms like Hacker News, StackOverflow.

When starting a project, announce to a few friends and along the way, get feedback from people who have learned or worked in similar areas.  When hitting a milestone, share with a larger community by “Show HN”, or posting on your twitter stream or a blog post.  I am especially a fan of writing in a blog, as writing helps organize thoughts and solidify learnings.


What are the different ways that you have take ownership of your own education?  What are the roadblocks you have experienced, and any tricks that have helped you overcome those roadblocks successfully?  I’d love to hear your comments below :)

// Journey of Thousand Miles Begins With One Step (or Summer)//

This past summer, I attended a 10 week, full time course on web development, 9 hours a day, 5 days a week, learning python, javascript amongst many other interesting topics.  I had been learning programming from various sources before the program started, from Codecademy courses, to reading from cover to cover Rails Tutorial and Beginning Ruby, and making my own Twitter clone.  Yet, the past summer was a pivotal moment where I tipped over to a passionate programmer. 

It has been a month since graduation, and I have just begun to realize the tremendous impact that it had on my life, not just professionally, but personally as well.  Learning to program provided me with significant benefits such as below, and I believe many individuals, regardless of profession, will benefit from:

Understand the world in a new level: It’s a sad fact that many beautiful languages are becoming obsolete, however, digital literacy is now the new form of literacy.  Mobile devices and tablets are now everywhere.  Understanding the basics of computer language is just akin to understanding basic greetings in a common language.  Many people approach technology with a fear; when machines do not work accordingly, or crash, there is a question whether they have done something wrong.  Once the basics are understood, the fear should go away and with that, confidence in interacting with machines slowly builds. 

Communicate in a logical manner: Coding is a great training in formulating thoughts. When writing a program, one needs to think about assumptions, the flow and be critical of her own thought.  A good coder can communicate well and in small modules, hence coding is conducive to improving one’s communication skills. 

Empower and connect: Learning to program empowers people in everyday lives.  From installing a Raspberry Pi in the car , to writing a website in a cyber cafe to generate some income, people in all countries can improve their lives and access to a larger community.  

Attain a blissful, flow state: Lastly, my favorite aspect of coding is the exhilarating feeling of achieving a flow state.  The renowned Martin Seligman believes Positive Psychology includes a pleasant, good and meaning life; the most important aspect in a “good” life is achieving flow state (this is the link for the book, “Flow: Psychology of Optimal Experience”).  Today, one faces many distractions; social media, text messages, instant messages, etc.  Programming, an activity that is highly challenging and involves high skill level, has been one of the best ways I find to achieve flow state (see definition cited below).  Hours fly by without notice, it is an amazing - and addictive - state to be in. 

The flow state is an optimal state of intrinsic motivation,where the person is fully immersed in what he is doing. This is a feeling everyone has at times, characterized by a feeling of great absorption, engagement, fulfillment, and skill—and during which temporal concerns (time, food, ego-self, etc.) are typically ignored.  (Source: Wikipedia)

I am thankful for the opportunity to learn this summer and to discover a new passion (and potentially, a career).  Because of the benefits I have witnessed through learning to code, I strong recommend that all my friends and my family, and everyone with a computer learn to code.

Discussions on Hacker News

Journey of Thousand Miles Begin in One Step - Lao Tzu [The painting included Chinese characters for the phrase, source: guo-hua.com]

Game-Based Learning Units for the Everyday Teacher

Recently in a developmental psychology course I’ve increasingly picked up interest in game-based learning.  This interest has confirmed my hunch from teaching unmotivated, lagging students in remedial courses.  These are students who need, not only to get up to speed on knowledge of that subject (in my recent case, English), but even more importantly, to kindle the interest in learning. 

With my new class, I hope to devise a lesson plan based on fun, quests and motivational learning. Excited!

blog comments powered by Disqus
I work at Buffer on metrics/growth. Here I share about startups, personal improvement and wellness.
I'd love to hear from you!