Jan 2018 Learning

Books Read (work or professional development-related):


update: how can I be more assertive at work?

  1. “Reframe who had the power in these situations. I don’t need to network with these people, I don’t need these people to recommend me for other jobs because I do not want to work with them again. In a way, by being so upfront about their sexism they were giving me the gift of letting me know immediately not to waste my time, and the people who would be missing out on work is them, because I would never recommend them for jobs in the future and would actively discourage hiring them if I was able. Any short term jobs I miss out on now, are well worth it to form a network of people that are actually respectful that I want to keep working with.”
  2. “Give up on ever having that perfect retort that would wither them to their bones, or beautiful speech that would change their life. Instead, I wrote out some very simple, one line, adjustable scripts for every situation I’d come across.”
    1. ”You don’t need to tell me this, it’s making me uncomfortable.” + Silence. If they apologize, say you appreciate it and walk away
  3. Embrace awkward silence if you don’t want to make scene and just say your one line script. “Let me be uncomfortable without anyone ever being able to say I was being unprofessional.”

Blameless PostMortems and a Just Culture

  1. ‘Having a Just Culture means that you’re making effort to balance safety and It means that by investigating mistakes in a way that focuses on the situational aspects of a failure’s mechanism and the decision-making process of individuals proximate to the failure, an organization can come out safer than it would normally be if it had simply punished the actors involved as a remediation.’
  2. The cycle of name/blame/shame ends up with cover-your-ass engineering in which “Management becomes less aware and informed on how work is being performed day to day, and engineers become less educated on lurking or latent conditions for failure due to silence.”
  3. Understand how failures happened to that they can be learned from and to temper reactions to failure

How to Build a Successful Team

  1. “I hire the best people and get out of their way” is a nice line, but leaders need to play a hands-on role in making sure the group works well together and stays on the right priorities.
  2. Have a few simple priorities
  3. Simple shared scoreboards that affiliate all the tribes of the team so people aren’t arguing about keeping score. When you make statements in difficult conversations, “don’t make statements that include assumptions about the motivations behind someone’s behavior” and focus only on your feelings, reactions, and observations – you don’t really know what’s going on and being accusatory without evidence can derail progress.

SMART criteria Wiki

  • Specific – target an area for specific improvement. Or strategic and specific
  • Measureable – quantify or at least suggest an indicator of progress. Or motivating
  • Assignable – specify who will do it. Or achievable
  • Realistic – given available resources. Or reasonable, resourced, relevant
  • Timebound – specify when results can be achieved. Or testable, time limited, trackable

Start-up Metric for Pirates: AARRR! and Slides

  • Acquisition – users who come to site
    • Visit Site, Landing Page, Doesn’t Abandoned (stays 10+, visits 2+ pages)
    • Comes in via, SEO, SEM, PR, Blogs, etc. other marketing channels
  • Activation – users enjoy 1st visit
    • Views x pages, does z clicks, Signs up for E-mail/Acct/Widget
    • A/B tests critical here
  • Retention – users who come back
    • E-mails Opens/RSS Clickthroughs
    • Weekly e-mails, event-based e-mails, blogs
  • Referral – users who enjoy product enough to refer to others
    • Refers users who visit site, refers users who activate site
    • Campaigns, contests, e-mails
  • Revenue – users conduct some monetization behavior
    • Users generate minimum revenue
    • Users generate break-even revenue
  • Subs, Lead Gen, etc.

Measuring What Matters: How to Pick a Good Metric

  1. Good metrics are comparative, understandable, a ratio or a rate, and changes the way you actually behave
  2. To start something, you need qualitative input from talking to people because quantitative data can be misinterpreted
  3. Look beyond Reporting Metrics and find Exploratory metrics. Look beyond lagging metrics (that have happened in the past) and look for Leading metrics that might have insight into the future – eg. rising complaints

Continuous Integration

  1. Continuous integration is software dev process where work is integrated frequently, multiple times a day, and automated builds detect integration errors as soon as possible and allows software to be developed quickly and cohesively with reduced risk
  2. Requires a maintain a single source repo with a decent source code management system
  3. Everything should be included in automated builds and have multiple environments to run tests

A day in the Life of Joe Leech, Product Consultant

  1. There’s not a single solution or framework that’s a magic bullet to solve clients’ problems. Product management should be relationship people first and build glue across organizations to do so
  2. “Startups are good at speed, big companies are good at making good decisions,” and startups and enterprise have a lot to learn from each other, he believes. Startups are lean and for them fast actions are crucial, but their people often lack the knowledge or skill to make the right decisions, he believes. “Startup founders are especially hard to work with because the company is their baby. They hate formal processes because it gets on the way of getting going.”
  3. Prioritization as PIE (potential, importance, ease)

pm@olin: Presentations (Class 9)

  1. Tell them what you’re going to say, tell, them, and tell them what you said
  2. PRES framework: Present, Reaching Out, Expressive, and Self Knowing
  3. Relatable, to audience good content, humor, and leave audience wondering for more

How to Hire the Right Person

  1. Take them on a tour and see how they respect and if they treat everyone they meet with respect. Same with taking people out for a meal
  2. Ask unusual questions so you reveal more about a person -> not brain teasers. Find natural strengths
  3. Get them to ask questions and see if they’ve done their research, care about goals and culture

The Secret to Becoming a Better Data Visualization Practitioner

  1. Be able to express all intentions behind design decisions, including citing best practices or evidence from research to show you are using logic over feelings
  2. Document unconscious choices – write down all the micro-decisions that lead you to your current state
  3. Visualize differences in decisions, be ready and practiced in whiteboarding before and after decisions

Treehouse Learning

AJAX Basics Treehouse

  • AJAX form request example and responding to a submit event
    • Select form
    • Add JQuery submit method
    • Stop form from submitting
    • Retrieve value user inputted with JQuery’s val method

$(document).ready(function() {

$(‘form’).submit(function (event) {

event.preventDefault(); // stops browsers normal reaction to event, eg prevent from leaving page in this case

var $searchField = $(‘#search’);

var $submitButton = $(‘#submit’);

$searchField.prop(“disabled”, true); // disable search field so you can’t type new text

$submitButton.attr(“disabled”, true).val(“searching…”); // as request is happenign, user gets message search is underway

// the AJAX part

var flickerAPI = “http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?”;

var animal = $searchField.val(); // capturing text user types in the field

var flickrOptions = {

tags: animal,

format: “json”


function displayPhotos(data) {

var photoHTML = ‘<ul>’;

$.each(data.items,function(i,photo) {

photoHTML += ‘<li class=”grid-25 tablet-grid-50″>’;

photoHTML += ‘<a href=”‘ + photo.link + ‘” class=”image”>’;

photoHTML += ‘<img src=”‘ + photo.media.m + ‘”></a></li>’;

}); // end each

photoHTML += ‘</ul>’;


$searchField.prop(“disabled”, false); // renable search field

$submitButton.attr(“disabled”, false).val(“Search”); // renable submit button and put value back


$.getJSON(flickerAPI, flickrOptions, displayPhotos);

}); // end click

}); // end ready

Understanding “this” in JavaScript

  • this is a special keyword to give access to a specific context – access values, methods, and other objects on a context basis
  • JavaScript interpreter assigns a value to this based on where it appears
    • In normal function calls
    • Within methods on object
      • This, when it’s being called by a method on an object, will always reference object itself and this.anyKey will look up any value that exists

var Portland = {

bridges: 12,

airport: 1,

soccerTeams: 1,

logNumberofBridges: function() {

console.log(“There are “ + this.bridges + “ bridges in Portland!”)



Would print There are 12 bridges in Portland!

  • Within an object that has been constructed
  • Invoked with .call. apply or bind
  • When we use a constructor function to create a new object, this will actually refer to the object that is created, nto the constructor function.
  • here’s a basic constructor function

var City = function(name, state) {

this,name = name || ‘Portland’;

this.state = state || ‘Oregon’;


portland = new City();  // new instance of constructor function

seattle = new City(‘Seattle’, ‘Washington’);


results in -> console.log(portland); console.log(seattle);


{ name: ‘Portland’, state: ‘Oregon’}

{ name: ‘Seattle’, state: ‘Washington’}

  • The first object is the one created without any parameters, so it defaults to Portland and Oregon.
  • The second one uses Seattle and Washington
  • They keyword does not correspond to the constructor function (city) but corresponds to the instance object itself. This basically allows you to create applications with highly replicable code

November Learning

I’m trying to give myself at least half an hour during the workdays (or at least blocking two hours or so a week at least) to learn something new – namely taking classes on Treehouse, which I still have a membership to, reading job related articles, and reading job-related books. Tracking notables here as a self commitment and to retain in memory.

Treehouse UX Basics: Modeling, Testing, and Executing the Experience:

  • Modeling a solution -> demonstrates to users, eg. axure that is not the interface. Design for the experience
  • Test interface with people likely to use your product
  • Learn to present to clients and sell your work
  • Success in UX is keeping mindful of all other players at all times and being a translator between engineering, qa, account management, project management, etc.
  • Context is about predicting the right information at the right time for the user


Treehouse UX Basics: How UXer’s Think

  • Think big in order to think small – system thinking – match any small feature to larger experience. All parts and processes should be part of a congruent narrative
  • Empathy is different from user-centered design -> do you know how the user actually feels. Be the user advocate of users needs, goals, and tasks
  • Be able to think beyond the end user. Eg. business stakeholders in the org, coders, etc. They are also “users”
  • Think of content beyond traditional sense – eg everything on site
  • Understand how site users will be, content available, and context – think of problems to solve just beyond surface level like articles, etc.


Treehouse UX Basics: Tools

  • Understand who you’re communicating with, what needs to be shared, and the context
  • Conducting User Interviews: Google Forms, Survey Monkey, Ethnio


Treehouse Javascript: AJAX Basics

  • Make sure property names are set properly and insert into divs
  • The jQuery method if handling errors in an AJAX response is .fail()
  • The .fail() method does not work when using the .load() method or when making requests to another site
  • Application Programming Interfaces provide a method for accessing certain content using a server-side programming language: defines what you can get and how you can get it. Some let you just get it with AJAX without server side programming
  • API key acts sort of like a password, when you connect to a server, you have to send along your API key


10 Steps for a Successful Wiki

  1. Link to only external files when necessary
  2. You need a well-defined structure off the bat because users build habits quickly
  3. Use good tagging for search


What Are Wikis, and Why Should You Use Them?

  1. Flexible access for editing
  2. Hyperlinking is the power – adding quickly and linking
  3. Key uses are having an easily searchable knowledgebase and training


Best practices for staging environments from increment mag

  1. Staging’s purpose is the validate the known-unknowns of your systems, eg. the dependencies, interactions, and edge cases that are foreseeable by people in the company.
  2. Tests don’t account for all the possibilities that staging can.
  3. Staging should be constructed the same way as production, eg. same load balancers, deployment tooling, security group settings, etc.


pm@olin Class 6

  1. Launch stages: alpha, friends & family, beta, public soft launch, traditional launch
  2. Launch communications: Internal thank you notes to team and individuals. Internal/External: customer support, blog posts, homepage announcements. External: Product Hunt Post, Press Release/PR, Help Documentation, FAQs
  3. People tend to anchor on first things you say – it can be hard to keep things general when you want to (in her class notes but applies a lot to other things)


pm@olin Class 7

  1. Goes without saying, but complement/criticism/complement is not a good tactic compared to specific feedback
  2. Mental model for feedback, it’s information you or a person can use if they like
  3. Johari Windows -> something useful to understand relationship with themselves and others


Five Levels of Communication

  1. Ritual: most simple form of conversation: eg. quick hello
  2. Extended Ritual: day to day pleasantries that may change day to day – but it’s at a safe level of no danger of being misinterpreted but are the foundation of building trust and safety in interpersonal relationships
  3. Surface: What people are in place of work, eg. receiving information at meetings and giving. Talking about basic life conversations such as politics, hobbies, families, etc.
  4. Feelings (about self in relation to content): Just below surface and sharing of riskful real feelings.
  5. Feels (about us and our relationship): Greatest level of risk and involves giving honest feedback

Organizations that are able to have four and five communication can increase potential dramatically. Companies that are just between one and three can lack harmony and cohesion and the weakness is clear in crisis situations.


Shipping is a Feature: Some Guiding Principles for People That Build Things

  1. The hardest part of PMing is achieving clarity and maintaining a POV and vision for a product when literally everything conspires against this
  2. Figure out how to do compromises without muddling the product
  3. 10% better can be 100% different – incremental improvements can have huge effects


Why Most Product Launches Fail

  1. Companies can’t support fast growth
  2. Products get released too early and aren’t ready (Windows Vista)
  3. Product limbo and positioning a product to leverage a fad is a mistake
  4. If customers don’t get it quickly – it’s toast
  5. There’s no market for it even if product is revolutionary – should answer the question “Who will buy this and at what price?”


Engineering Management from Yishan Wong: Hiring is number one

  1. “The quality of coworkers is the single greatest determinant of workplace happiness, and fully engaged participation by everyone is the primary way by which everyone exercises direct power over making their job experience better.”
  2. Are you hiring the best or just hiring the best people you were able to interview?
  3. Hiring good candidates ensures you have a strong internal pipeline for promotion


Engineering Management from Yishan Wong: Engineering Management – Process

  1. Processes should only be implemented if they are specifically wanted and by the people directly involve in using it versus management who are only really thinking about command, control, coordinating, or communicating -> true costs cannot be seen in this fashion and benefits maybe illusionary
  2. Managers can figure out how to coordinate and communicate without necessarily implementing more engineering process (eg. endless jira loops)
  3. “Managers may need to psychologically contend with more chaos than they are comfortable with, but there is a huge difference between chaos that makes one uncomfortable and chaos that actually threatens the business. Stepping as close to the latter as possible confers one of the greatest advantages in the technology business: execution speed.

    Process typically builds up at a regular and roughly constant rate. Shaping this rate is therefore key to long-term efficiency. If your company has a certain amount of process at size X and it’s less than other companies of size X, you’re faster, and when you’re much much larger you’ll have less comparative bureaucracy, and the same multipliers will apply: doing things twice as fast now while you’re small helps you get things done in two weeks while your competitor needs four weeks, but once you’re large you’ll be able to do something in two years while your competitor takes another two to catch up. Two additional years might just mean the end of them.”


Engineering Management from Yishan Wong: Internal Promotion

  1. “A successful manager needs to understand core elements of the company culture and values, including what makes the startup uniquely successful and what steps it needs to take next. An impressive resume or even the memory of their performance by others who worked with them in larger companies is not a reliable indicator of their ability to do this.”
  2. “Source management candidates who are willing to join as individual contributors. While the company remains below a certain size, it’s is eminently possible for highly talented technology managers to join as individual contributors and rapidly rise into positions of leadership, and they should be encouraged to do so.”
  3. People who join companies because “they’re great” tend to have very different orientations and motivations (money, security, conservatism) versus those who shared early core values in a start-up. Tread carefully and have a pipeline


Engineering Management from Yishan Wong: Tools Are Top Priority

  1. Internal tools shouldn’t be regulated to the back office, but rather have talented engineers work on them because there’s a direct impact on operational efficiency
  2. “The quality of your tools and your ability to continue to evolve them will allow you to suppress the need to hire for operational roles, allowing each front-line individual to do more, which simultaneously improving overall coordination (fewer people means coordination is easier) and keeps costs down.”
  3. You need a foster a culture in the organization that values internal tools so your best engineers will be willing to work on them


Engineering Management from Yishan Wong: Technical Leaders

  1. “All external management hires must be able to write code and show a high level of technical proficiency, up to and including the head of the technical department. If the company is a technology company, this should also include the CEO.”
  2. “Leaders are unable to tell when the technical staff is not performing up to snuff, because they cannot reliably differentiate between excuses for poor technical performance and true obstacles that arise when contending with difficult technical challenges. Performance management then becomes impossible, leading to mediocre work and eventually, outright and repeated project failures.” – > the more you understand the rules of the game, the better you can play it
  3. “Unfortunately, a non-technical leader has no personal ability to gauge the actual risk profile of overriding technical suggestions (i.e. shrewdly exceeding old limits in certain special situations) and is then prone to eventually overriding technical advice which should not be overridden.”


Esc the City Un-Conference Talk: Simple Slide Design and Data Viz Crash Course

I’m currently attending a program called Escape the City which “helps mainstream professionals make proactive & entrepreneurial career changes.”  We’re part of the “Founding Members” cohort as the first iteration of this program stateside.

I’m not looking to leave my current job, which I’m pretty happy with. I definitely did want to meet other ambitious people and unconventional thinkers.  A mentor who had done the program in London, where Escape started, said I’d benefit.  I have been loving it so far.  I’ve found it beneficial to being more present, proactive, and creative at work and outside of it.

One of part of the program we did last night was the Un-Conference, where individuals in the program presented on different topics: everything from Learnings from Training for Endurance Races, Self-Acceptance and How to Love Yourself, Web Development 101, Relaxation with Origami, to name just a few.

As part of building on my knowledge and sharing it, I did a talk on Simple Design with a Data Visualization Crash Course below.  I hope my fellow participants found it useful, especially since many of them are thinking about starting and pitching their own businesses.

Day 177 of 180 Days of Data Viz Learning #jfdi #dataviz

I’m doing some form of data visualization learning for 180 days because I need to #JFDI.

See post explaining how and why I’m doing this.

Reading and Learning Data Visualization Theoretically/Critically:

Show Me the Numbers by Stephen Few

Three Takeaways Today

Chapter 5 Visual Perception and Graphical Communication
  • “Built into visual perception is the assumption that the light is coming from above.”  Our real-life perception of everyday objects influence how we interpret graphics, in this case how shapes are “lit” p 62
  • There is iconic memory that relates to pre attentive processing in visuals, the fast recognition of color hues in text.  It is important to think of iconic memory when quickly making groups distinctive and highlighting objects p 66
  • Working memory is temporary and has limited storage capacity, only three or four chunks can be stored at one time.  Think of how you structure tables and graphs – if you have ten different symbols, the reader won’t be able to process it p 67

Day 172 of 180 Days of Data Viz Learning #jfdi #dataviz

I’m doing some form of data visualization learning for 180 days because I need to #JFDI.

See post explaining how and why I’m doing this.

Reading and Learning Data Visualization Theoretically/Critically:

Three Takeaways Today
  • “Designers speak of objects as having affordances- characteristics that reveal how they’re supposed to be used and make them easy to use in those ways.  A teapot has a handle.  A door that you need to push has a push-plate.  The design of an object should, in and of itself suggest how the object should be used.” p 5
  • Don’t forget about reference lines p 6
  • Tables and graphs in quant biz data have four uses: analyzing, communicating, monitoring, planning, be cognizant of what you’re working on and  the goal p 10

Day 172 of 180 Days of Data Viz Learning #jfdi #dataviz

I’m doing some form of data visualization learning for 180 days because I need to #JFDI.

See post explaining how and why I’m doing this.

Three Takeways Today

Chapter 4 General Charting Principles 
  • Axis is a function that is a d3 component that lets you draw all graphical elements needed for an exists.  eg.  d3.svg.line() lets you draw a straight or curved line across many points. p 108
  • D3 functionality can be put in three broad categories p 109:
    • Generators take in datapoint array values.  They produce “SVG drawing code for the d attribute of <path> elements.  Generators include area(), line(), diagonal(), arc()
    • Components take in Functions such as scale(), axis(), brush(), zoom().  They productive “elements and event listeners ‘<g><line class=“tick”/><text class=“label” /></g>”
    • Layouts take in whole datasets.  These include stack(), pie(), chord().
  • After creating an axis function, we define how we want the axis to look like.  We use the .call() method from a selection on <go> element on where we want the graphical elements drawn.
    • var yAxis = d3.axis().scale(ySale).orient(“right”);
    • d3.select(“svg”).append(“g”.attr(“id”, “yAxisG”).call(yAxis);
    • var aAxis = d3.svg.axis().scale(xScale).orient(“bottom”);
    • d3.select(“svg”).append(“g”).attr(“id”, “xAxisG”).call(xAxis);
    • The .call() method of a selection invokes a function with the selection thats active in the method chain.  Same as: xAxis(d3.select(“svg”).append(“g”).attr(“id”, xAxisG”));

Day 160 of 180 Days of Data Viz Learning #jfdi #doneisbetterthanperfect #dataviz

I’m doing some form of data visualization learning for 180 days because I need to #JFDI.

See post explaining how and why I’m doing this.

Reading and Learning Data Visualization Theoretically/Critically:

Edward Tufte Visual Display of Quantitative Information

Chapter One Graphical Excellence
  • Pair small multiples with other information, e.g. a map to give more context – example of a map of socal and 3d view of pollutants p 42
  • “Indeed, in modern scientific literature, about 40 percent of published graphics have a relational form, with two or more variables (none of which are latitude, longitude, or time.  This is no accident, since the relational graphic- in its barest form, the scatterplot and its variants- is the greats of all graphical designs.  It links at least two variables, encouraging and even imploring the viewer to assess the possible causal relationship between the plotted variables” p 47
  • “Graphical excellence is that which gives to the viewer the greatest number of ideas in the shortest time with the least ink in the smallest space.  Graphical excellence is always multivariate.  And graphic excellence requires telling the truth about the data” p 51 (example of Minard’s graphic of the fate of Napoleon’s Army)