- IBM and their voice recognition software
- A culture of continuous learning
- Incorrectly cited the source of a picture (Southeast Asia instead of Hawaiians)
- Tasks to achieve end goals
- Defining a precise SLA for performance
- Should put the user first, every decision we make, should all be done in service of the user
- Problem with racing websites that means you're racing with competition instead of checking how you're measuring up with how your satisfying your customers when they are on your website
- Referencing Apdex - measuring response time based on a threshold
- Metric: How long have the customer waited? And what was their behavior as a result from that waiting?
- Consumer Performance Index
- Discovering operations expertise
- How do we design systems to prevent catastrophic failure?
- This ends up reviewing how we design teams in order to solve how we can prevent catastrophic failure
- Escaping tabs with progressive (web) apps, Ilya Grigorik
- mobile apps vs web apps, experience in installing on mobile is slow compared to just going to a web app
- Progress web app - webpage that upgrades it's capabilities, via ServiceWorker
Polyglot Datastores at Yelp
- docs. Evolve with your code. Denote if it's old or deprecated.
- lectures (5-40 minutes)
- a network of experts
- office hours (good to have a set time)
- irc or other chat
- Store evolved over time
- went over Cassandra, Elasticsearch
- Elasticsearch - acts as a database and can search things like JSON documents
- Puppet - general purpose tool. Not so good at healthchecking, dynamic cluster, etc
- SmartStack - general purpose cluster load balancer, healthchecking.
- Sensu - Monitoring/alerting via chat, emails, tickets, pages
- Monitoring - when to ticket
- MySQL - 10s replication delay for 2 hrs
- Elasticsearch in prolonged yellow state
- Cassandra losint local_one
- Zookeepr losing quorum
- Don't monitor single hosts
- Graph everything - robust metrics to dig in
- Good abstractions
- Writes and reads
- Query proxy between service and logic layer to marshal
- This is similar to how we have hub or how Core is abstracted with lower-level logic hidden and can be swapped/maintained
- Well defined interfaces to easily test
- Rapidly iterate and change and not having to tie down developers to code that is tightly coupled
Sidenote and Action
- Cool that they do Q&A randomly,to keep interest picqued.
- Read engineering blog article
Mobile Continuous Delivery
Discussed workflow and a myriad of tools.
Measuring the Performance of Single Page Web Applications
- Boomerang created from open-source project from Philip Tellis at Yahoo. SOASTA uses it
- Hard navigation vs Soft navigations - page first load, then route from this page, respectively
onloadpotentially not relevant anymore for when user can actually see some content.
- Traditionally RUM tools don't measure after
- Browser won't tell you when all resources have been downloaded. How?
- We care about perceived performance. In some cases, when user can do the next action, when the UI is available for the user to start using it
- We care about the
- Start event: when browser starts the process of loading the next page
- Different events you can use, browser history changing, SPA framework routing events, user click or XHR trigger.
window.historycan tell us when the URL is changing
- End event: How do you tell the end when SPA navigation is complete?
- Could be when networking activity is complete
- When UI is visually complete above the fold
- When the user can interact with the page
- Traditional RUM (Real-User Monitoring) measures up to the
- When all resources have been fetched
- Which resources could effect the visual completion of the page?
- Need to monitor all network connectivity
- Let's make our own
onloadevent, from waiting for all network activity to complete
- monitor any XHR requests and proxy it
- By proxying:
- upside: can monitor start and loading of assets
- downside: need additional code to support XDomainRequest
- Mutation Observer
- listen for DOM change events
- downside: not supported across all browsers
- polyfills: to get a mutation observer like callback. Performance implications. Don't recommend, as they will cause performance problems
- What happens over time? How well does your app behave?
- Track memory usage
- DOM length, complexity of the page
- Bytes fetched
- Specs out there
- w3C Fetch standard
- Fetch observer
- Presentation Slides
- Review slides again
- Review tools
- View Webpagetest.org film strips and see where in waterfall
onloadevent with filmstrip on our application to see relevance of
- Look at what they are doing in boomerang
Docker Learning Notes
- Docker client uses Docker daemon to do the heavy lifting in working with Docker containers.
- Containers are made from Docker images which is an instance of the blueprint of the OS like Ubuntu and possibly the web application and all its necessary packages installed.
- These containers are stored on a Docker Hub or registry. This is also open-sourced so users can host their own registries.
- Downloading Docker Toolbox - didn't work, so just working with
boot2docker. Was buggy and not running commands.
- Always run
$ boot2docker upand export Docker variables before running commands
- Always run
- Quickly testing app in environment similar to DEV/QA/Production with less overhead than a Virtual Machine (VM)
- Sharing your app+environment with other developers == fast/reliable onboarding