- making many changes to the product, many releases per day
- centralized dashboards/logging
- Terraform for infrastructure as code
- First microservice in ECS in 2017-2018
- Why move to microservices?
- Scalability problem with teams
- Slow and difficult with a monolith
- Desire to use multiple languages (monolith in python, wanting to
incorporate scala, nodejs, ...)
- Flexibility
- Velocity
- Reliability
- Cost savings
- What to carveout first?
- Not the largest chunk
- Start with a small but impactful feature
- move up in size, complexity, and risk
- consider dependencies
- First thing was the reminder service 🦉🗡
- Using circuit breakers to make microservices independent
- Why docker?
- Kind of the only game in town
- Why docker with ECS?
- task auto scaling
- task-level IAM
- needs to be supported by the aws client library (e.g., boto)
- cloudwatch metrics
- dynamic alb targets
- manageability
- Microservice abstractions at Duolingo
- Abstracted into terraform modules
- Web service (internal or external)
- load balancer and route 53
- worker service (daemon or cron)
- sqs and event-based scheduling
- data store
- monitoring
- CI/CD
- Github -> Jenkins -> ECR/Terraform (S3) -> ECS
- Load balancing
- ALB vs. CLBs
- ALBs more strict when handling malformed requests (defaults to
HTTP/2 (headers always passed in lowercase)
- Differences in cloudwatch metrics (continuous in CLBs, discrete
in ALBs)
- Standardizing microservices
- develop a common naming scheme for repos and services
- autogenerate as much of the initial service as possible (?)
- move core functionality to shared base libraries
- *provide standard alarms and dashboards*
- /periodically review microservices for consistency and quality/
- Monitoring microservices
- includes load balancer errors
- pagerduty integration
- includes links to playbooks
- emergency pages, warnings go to email
- schedules and rotations are managed by terraform
- Grading microservices
- Cost reduction options
- Cluster
- instance type
- pricing options
- auto scale
- add/remove AZs
- using "Spot" (spotinst) to save money on ephermeral cluster instances
- drains ECS services
- spreads capacity across AZs
- bills on % of savings
- ECS allows oversubscription of memory, *WE DO NOT RECOMMEND THIS*
- AWS Limits
- EC2 has a hard-coded maximum # of packets(1024/s) sent to an amazon
provided dns server
- Nitro is not caching DNS requests where Xen was
** Mentoring the way to a diverse and inclusive workplace
:PROPERTIES:
:Speaker: Alexandra Millatmal
:Twitter: @halfghaninNE
:Email: hello@alexandramillatmal.com
:Slides: http://alexandramillatmal.com/talks
:END:
- Developer at Newsela (Education tech company promoting literacy in
the 2nd-12th grade space)
- The tenants of mentorship are similar to the tenants of inclusive
companies
- Mentorship doesn't work for folks of under-represented backgrounds
- Finding very similar entry level jobs, very homogenous teams, no time to
support learning
- Skill-building and diversity appear related
- What if strong mentorship /begets/ diversity & inclusion?
- Good mentorship / good diversity
- Supporting and retaining engineers with underrepresented identities
- be welcoming and inclusive in the recruiting process
- post openings on "key values"
- company must list their values
- conveys people and tech values on the same level
- candidates filter jobs based on their prioritized values
- referrals can cut both ways
- can increase the homogenous nature of the workplace
- maybe direct referall bonuses into donations to inclusive
groups that attract and talent
- affinity groups
- caucuses across departments working with management
- standardized review process
- stanford research into review proceseses
- men overrepresented in the higher tier, women in the middle
- standardizing removed the bias
- clear definitions of roles and responsibilities
- do they have ownership
- are these employees getting a seat at the table for decisions
- representation in leadership
- are there people there that look like me?
- is there a clear model of advancement? allyship in leadership?
- investment in internal & external advocacy
- signals that copmanies understand the systematic barriers to
inclusion and diversity
- sponsorship - "super mentorship"
- stark differences in valuation of the above bulletpoints between
underrepresented groups and well-represented groups (women vs men,
lgbt+ vs straight men)
- Supporting and leveling up junior engineers
- recruiting process / relationships
- the candidate should be receiving feedback on their performance in
the recruting process!
- Gives them constructive advice and context
- apprenticeships and clearly defined entry-level positions
- is there a clear path for growth?
- clear and structured onboarding
- please do not make their point person a person they report to
- need to go to information from somone that doesn't involve
company politics
- information should exist outside of leads/managers heads
- define onboarding procedures in a shared space
- learning groups
- space to ask questions and demonstrate leadership, particularly
with peer-to-peer learning
- formalized mentorship
- ensure that compensated time is resulting in measurable goals
for the junior engineer
- recommend them for opportunities
- standardized review process
- reframe junior-ness as an opportunity, not a deficit of skill
- Mentorship with diversity and inclusion in mind
- this work is really hard
- easy to fall into a pattern of saying you're making progress
without measuring to make sure that's the case
- intent is only half of the picture
- the other half is /sacrifice/ to make real, measured investments
- mentorship should begin during the interviews
- [[https://www.wired.com/story/for-young-female-coders-internship-interviews-can-be-toxic/][wired article on young women's interview experiences]] (today?!)
- place serious focus on developing mentors
- forces mentees to manage /up/
- mentorship is a two-way street
- have you ever seen someone become a better collaborator after
mentoring a junior engineer?
- mentorship is leadership and it's learned
- have clear growth objectives for the mentor and the mentee
- mentorship should happen on compensated time
- rethink the peer group
- slack channel for juniors spread across different offices
- wasn't an organic space to share knowledge
- a black junior woman engineer's peers aren't just other black
employees, or women, or other limited groups
- What's the value to the company?
- make a business case for mentorship
- that will drive diversity and inclusion
- mentorship can
- build brand halo among candidates
- distribute management responsibilities
- build its own workforce
- distributes business knowledge working on real business projects
- fosters relationship building and belonging
- practices wielding expertise, fosters bonding over work
** Sextech: The good, the Bad & the Bias
:PROPERTIES:
:Speaker: Alison Falk
:Twitter: alisonfalkpgh
:Slides: https://bit.ly/MillatmalAbstractionsII
:END:
- Deepfakes
- people onforums requesting deepfakes of coworkers, etc.
- takes few photos
- women are most typically targeted
- silenced, made less credible due to the video
- no criminal recourse
- currently thriving
- nonconsensual / revenge porn
- laws are vague (interstate implications)
- sexting & development of sexual identity not reflected in the law
- this gets caught under the net of sharing child pornography
- Just because you can doesn't mean you should
- harms sex workers
- sex trafficing is only 19% of human trafficing
- 25% of sex workers sexually assaulted by officers
- multiple times during stings
- arrests inflate statistics
- 90.8% of victims are deported
- Bias
- don't need to reach orgasm to procreate? considered a vice, not
- Working at odds with professional development and depression
- Cognitive Behavioural Therapy
- "Feeling Good" by Dr. David Burns
- parallells with developer life
- Experiences -> 👩 Thoughts -> Responses
- "There is nothing either good or bad, but thinking makes it so" (Shakesspeare)
- We can change how we feel if we change how we think
- Input -> 💻 Code -> Output
- Starting a project, getting overwhelmed, distracted, guilty, nervous
- Similar to application in an incorrect, incomplete state. Not what
we wanted yet.
- We test our output
- We trust our feelings
- Emotional reasoning
- Because I feel something, it must be true
- Not rational
- Would be like looking at the app in that state, "I guess I'm
done."
- Feelings should be
- +positive+
- helpful
- reasonable
- rational
- good at /rationalizing/, working our way /back/ from the
feelings, not super helpful
- Mind reading
- We respond to what /we/ think /they're/ thinking
- Leads to impostor syndrome
- Test the feelings instead. Ask the question, don't guess.
- All-or-nothing thinking
- Perfectionism
- Test
- Antiperfectionism sheet
- Task, Effectiveness, Satisfaction
- Testing helps identify problems, but doesn't fix them
- Code won't get any better without changes
- Editor for thoughts
- Notebook
- two column technique
- left hand side: automatic thoughts
- thought patterns that are causing us to feel that way
- "I'm overwhelmed" -> thinking, "this is going to be hard"
- "Guilty" -> thinking, I'm a procrastinator
- Nervous -> thinking, I'm not going to finish this on time
- right hand side: rational responses
- fortune telling
- we've predicted the future, and are responding as though
it's true
- I can't know this
- it could also be fun, educational
- labeling
- fancy term for name-calling
- reduces people to one trait
- "I've always been a procrastinator, I'll always be a procrastinator"
- I'm not any one thing (I'm procrastinatING)
- I don't always procrastinate
- fortune telling
- takes away our autonomy (it's inevitable)
- I have control over the outcome
- there are other options
- Thoughts can have a "home field advantage" in our heads
- How does this change when it comes from someone else?
- It doesn't
- Still just an experience, just your thoughts
- "No one can make you feel inferior *without your consent*" -
Eleanor Roosevelt
- Magnification and Minification
- Disqualifying the postitive
- [[https://scontent.fakc1-1.fna.fbcdn.net/v/t1.0-9/68566036_10157557143404198_4347573004629180416_n.jpg?_nc_cat=107&_nc_oc=AQlSWxEozmxHxlCrAqSBkrAgw36nZo5LIgQEXM_4-_cAMjq40YTtDIdZCUDpjqdSKQY&_nc_ht=scontent.fakc1-1.fna&oh=7680c5d2de15765ec963f4e059bdae6c&oe=5DD47835][Accepting a compliment]]
- pause
- say thank you
- Using the two-column technique, have someone to role play them with
- We don't always extend sympathy to ourselves
- "Should" is the worst word in the english language