Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Articles Key Takeaway Points and Lessons Learned from QCon San Francisco 2017

Key Takeaway Points and Lessons Learned from QCon San Francisco 2017

Early in November around 1,800 attendees descended on the Hyatt Regency in San Francisco for the eleventh annual QCon in the city and the biggest QCon we’ve held in the US.

QCon SF attendees - software engineers, architects, and project managers from a wide range of industries including some prominent Bay-area companies - attended 107 technical sessions across 6 concurrent tracks, 21 in-depth workshops, facilitated open spaces and, as at all English language QCons, had near instant access to all filmed presentations from the event on InfoQ. The publishing schedule for presentations can be found on the QCon SF web site. In addition, you can see numerous photos of QCon on Flickr.

We tried a number of new things at the event this year including simultaneous text to screen for the keynotes and largest room, and 10 “Ask me Anything” sessions where attendees could talk to speakers in an informal setting. The transcripts from the text to screen will be made available along with the videos on InfoQ.

The conference started with Julian Guthrie and Dan Kreigh telling the story of the Ansari X-Prize, a competition driven by outsized characters—Burt Rutan, Richard Branson, John Carmack, Paul Allen—and discuss the construction/testing of the bullet-shaped SpaceShipOne. SpaceShipOne was a historic feat of aerospace engineering that produced the first privately built manned reusable spaceship to fly to space twice in two weeks.

Day two opened with Leslie Miley discussing this increasingly important topic of Bias in BigData and AI/ML and where it can lead, near the end connecting it to the role the social platforms play in the media:

We have, for years, have been able to craft systems and platforms with little oversight. And I think that has been, for the most part, a good thing. Those times are changing, and they are actually coming to a close. I would rather be self-regulated than regulated by the government. I'm sure most of you in here would rather be self-regulated than regulated by the government. But you have to start leading today. Don't wait for these problems that we've seen with Twitter and Facebook and Reddit and the other, you know, platforms that have been co-opted by foreign governments to spread false information.

Day three started with Nick Caldwell, VP Engineering @Reddit, Inc, discussing his his engineering team's approach to agile development as they scaled from 40 to 120 engineers

Some members of InfoQ's team of practioner-editors were present and filed a number of stories about the event, and we’ve already started publishing videos on the site. We’ve included some summaries of the news we produced from the event here, but the main focus for this article is the key takeaways and highlights as blogged and tweeted by attendees.


Bias in BigData/AI and ML

by Leslie Miley

Twitter feedback on this keynote included:

@kbal11: This has been an unprecedented year because we've seen so much of social media being powered by bias, powered by ML, powered by angst, powered by fear" -@shaft#qconsf

@RealZenaDave: “Twitter is a media platform with no accountability.” - @shaft #QConSF

@kbal11: Facebook and Twitter have done a magnificent job of creating a timeline to show you, your friends, and your family the most popular tweets. But there's a problem with that - they are a publisher, and a publisher with no accountability" -@shaft #qconsf

@RealZenaDave: “What if there were 100s of millions of fake/compromised accounts sharing information?” - @shaft #QConSF 

@danielbryantuk: Social media organisations are media outlets, whether they admit it or not - they aren't simply 'platforms' for sharing. They should be responsible for this" @shaft #qconsf

@RealZenaDave: “Facebook is hiring 20,000 people to tackle Fake News.” - @shaft #QConSF

@IvanaMcConnell: Facebook and Twitter throw people at the fake-news problem, but nobody just says "we'll change our algorithm.": @shaft #qconsf

@thepatleong: AI and Machine Learning can be abused to influence our world and behavior, being a platform, not a publisher reduces the accountability by social networks. @shaft

@charleshumble: The next big thing WILL be an AI/ML company. It may be something that one of you end up creating. #qconsf

@IvanaMcConnell: The @ProPublica algorithm bias article that @shaft brought up for #qconsf:  Read it. Code isn't neutral.

@kbal11: .@shaft: Use of ML in systems like sentencing guidelines, picking folks up via Lyft and Uber, using historical data encodes historical biases of racism & poverty traps into black box algorithms. This is real and causing life-and-death consequences TODAY #qconsf

@IvanaMcConnell: We can just be transparent about what it is we're collecting, what we're using, and how we're using it. Seems so simple, doesn't it? #qconsf @shaft

@shanehastie: #qconsf @shaft actionable steps you can take

@kbal11: Every engineering team I've been on with more women has been a better engineering team -@shaft #qconsf

@IvanaMcConnell: Let's not make the same mistakes. Let's not make a data/ML weapon of mass destruction, use it on people, and say 'we're just a platform.'" @shaft #qconsf

Shane Hastie  attended this session:

He started by emphasizing that 2017 has been an unprecedented year because social media has been overwhelmed with bias powered by fake news, machine learning and AI.  He recounted the numbers that Facebook acknowledged - in 2016 they claimed that fake news was not a problem, then in October 2017 they stated that 10 million people saw fake ads and in November they revised this number to 126 million, and climbing.  Twitter identified 6000 Russian-linked bots which generated 131,000 tweets between September and November 2016, viewed by 288 people globally and 68 million in the USA.  He asked the question - how can this happen? …

He explained why this concerns him - he is sure that the "next big thing" will be an AI/ML company and asks if they will repeat the mistakes of the past.  Without conscious care and effort, this is a very likely outcome.  

There is a growing and thriving industry emerging around the use of algorithms in a wide range of areas.  He gave the example of their use in ride-sharing – what would happen if the algorithm determines that in a particular area most rides are under $5.00?  Will they send people to pick up in those areas, will they send drivers who are lower-rated?  What is the impact on the people who live in those areas? This is already happening – and there is no visibility into what is going on.

It is also happening in sentencing guidelines where the algorithm resulted in African-Americans being 45% more likely to get sent to prison for the same crime, because the dataset they used to train the model was inherently biased.  This algorithm has been deployed in 25 states in the USA, without being changed….

He then identified concrete things we can do to prevent these problems from happening.  This starts with having the discussion about where the training data comes from; is it over-sampled or under-sampled, how are the algorithms built? Be transparent about what information is collected, how it is used, what elements are taken into account in the calculations.

He presented some actionable steps we can take:

  • Seek people outside of your circle for your data training experiments – widen your datasets
  • Practice radical transparency in what data is being used – ensure the data set identification and algorithm is peer reviewed
  • Hire more women in engineering – just do it; engineering teams with more women in them produce better results
  • Work on empathy and self-awareness – every day try to wring a little bit of the bias out of yourself (referencing President Obama); refactor your empathy and self-awareness

How to Make a Spaceship

by Julian Guthrie

Twitter feedback on this keynote included:

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book 1) Follow your passion

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book 2) take big chances

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book 3) Small teams do big things

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book 4) experts are (sometimes) clueless

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book 5) persist

@shanehastie: #QConSF @JulianGuthrie key takeaways from the book - dream big, change the world

@shanehastie: #QConSF @JulianGuthrie Space Ship 1 in the Smithsonian

@bigdana: Success Is Going from Failure to Failure Without Losing Your Enthusiasm -Winston Churchill #QConSF keynote

@bigdana: It's not that I'm so smart, it's just that I stay with problems longer - Albert Einstein #QConSF keynote

@danielbryantuk: Dream big –> "The day before something is a breakthrough, it's a crazy idea" - Burt Rutan, via @JulianGuthrie at #qconsf

@shanehastie: #QConSF @JulianGuthrie Design guidelines Keep it simple - true MVP

@shanehastie: #QConSF @JulianGuthrie Space ship 1 needed 3 different control systems

@danielbryantuk: Designing the prototype SpaceShipOne by keeping it simple –> "There was no throttle, the power was either on or off” Dan Kreigh #qconsf

@shanehastie: #QConSF @JulianGuthrie iterations to get into space

@shanehastie: #QConSF @JulianGuthrie If you want innovation, don’t “manage” - inspire

@kbal11: Love this keynote quote on managing vs leading: "If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea" - Antoine de Saint-Exupery #qconsf #qconsf2017

@shanehastie: #QConSF @JulianGuthrie Space Ship 1 inspired the current flurry of space entrepreneurs

@RathoreAmogh: Spaceship One model #qconsf

@VJth: At #QCon #QConSF interesting keynote about “how to build a spaceship”. Key takeaway: “Don’t listen to Naysayers”, Experts are clueless

Track and Talks

21st Century Languages

The Why of Go

by Carmen Andoh

Twitter feedback on this session included:

@jpetazzo: think about the things you've built and done in the past. What would you have done differently if you had known what you know today?"—@carmatrocity explains the origins of @golang#qconsf

@jpetazzo: That slide represents the turning point: from threads to green threads, advent of affordable multicore, scalability challenges like C10K... If you wonder why @golang is popular today, the technical seeds were planted back then! #qconsf

@jpetazzo: @golang Two diametrally opposed approaches: Java+threads+blocking vs NodeJS+callbacks+async. Latter is more lightweight but "less forgiving: blocking operations translate into elevated latency"—@carmatrocity #qconsf

@jpetazzo: @golang @carmatrocity "I'm sure that there are tons of SRE at Google working on reducing tail latency—because it eventually turns into under utilization of resources"—@carmatrocity#qconsf

@jpetazzo: modern CPUs are memory bound. Memory speed and cache size are bounded by the speed of light. And that's why it's time to be aware of memory locality, and what @golang does about it.—@carmatrocity at #qconsf

@bigdana: If you can't be replaced, you can't be promoted. - @carmatrocity #QConSF

@jpetazzo: Never write the smartest code you can. Because you won't be able to debug it.—@carmatrocity #qconsf (see Kernighan's quote for full context!)

@bigdana: Focus on sustaining engineering, - think beyond "I got it working" @carmatrocity #QConSF

@s0ulshake: Programming is "it works." Software engineering is that, plus everything that comes after. @carmatrocity #qconsf

Architectures You've Always Wondered About

Architecting a Modern Financial Institution

by Edward Wible & Rafael Ferreira

leonson attended this session:

Nubank, a startup bank in Brazil shared their evolvement in architecture which enabled them grow significantly from their birth in recent years. It’s an amazing story which broke my stereotype of a financial institution: critical safety requirement, dense regulation being obstacles of creativity. They did an amazing initial job to gain a rapid customer growth, but they soon faced big problems with data writing throughput at scale (They use a git-commit style database called Datomic), they considered and tossed out the idea of sharding the database, they ended up sharding by “unit of services” with global routing. Another challenge they have is, the git-commit style database makes it hard for aggregation, they can’t quickly answer CEO’s question “How many customers do we have?”. They ended up doing log tailing for those transactional DB rows to their data warehouse.

Scaling Slack

by Bing Wei

leonson attended this session:

Slack talked about how they split a monolithic system to a microservices architecture: in the past they loaded the full snapshot all at once, which made their cold start (every morning, every Slack user) very slow and expensive. Now they reduced P99 load time from 40s to 4s.

Beyond Being an Individual Contributor

Making a Bigger Impact: Important Skills to Master

by Ariya Hidayat

Twitter feedback on this session included:

@shanehastie: #QConSF @AriyaHidayat Practice is important- build muscle memory so that when you need to apply the skill in a real life situation you are well prepared

@kbal11: .AriyaHidayat using the one and only @StephenCurry30 to illuminate the power of practice. #qconsf joins #DubNation

@kbal11: To avoid the nightmare of stakeholders all asking about project status, first thing to do is implement a centralized project dashboard - @AriyaHidayat #qconsf

@kbal11: If you have the ability to communicate something with confidence and clarity, you will stand out. You will without realizing it start to create some followers" -@AriyaHidayat#qconsf

@kbal11: How to use email structure to improve communication - @AriyaHidayat #qconsf -- These techniques are money!

@kbal11: When communicating, as much as possible stay absolute and avoid the need for the receiving end to understand the context" - @AriyaHidayat #qconsf

@kbal11: I love that @AriyaHidayat included book recommendations for additional study in his #qconsf talk, but this is DANGEROUS for book addicts. Anyone else purchase multiple books in the last 50 minutes?

Vision & Strategy - Epiphanies of a Netflix Leader

by Josh Evans

Twitter feedback on this session included:

@danielbryantuk: Managers climb hills (which is highly valuable), but leaders take mountains. Vision is vitally important for leaders" @ZenTeknologist #qconsf

@danielbryantuk: The goal of a leader is to be proactive @ZenTeknologist #qconsf

@danielbryantuk: All technologists should be grounded in business strategy, especially technical leaders. We are always aspiring to deliver business value in what we do" @ZenTeknologist#qconsf  

@kbal11: .@netflix beat Blockbuster with a 1-2 punch - Not only could Blockbuster not grok the counter-positioning of the business model, but Netflix deeply invested in their process so by the time Blockbuster started thrashing Netflix had a 5 year headstart" - @ZenTeknologist #qconsf

@danielbryantuk: Netflix's economy of scale with creating and licensing content has been a competitive advantage @ZenTeknologist

@kbal11: Align your infrastructure goals to align with the strategic imperatives of the business - @ZenTeknologist #qconsf

DevOps: You Build It, You Run It

Designing Services for Resilience Testing @Netflix

by Nora Jones

Twitter feedback on this session included:

@danielbryantuk: While unit testing and integration testing are valuable for defect detection, chaos testing can find new issues in production" @nora_js #qconsf

@kfirondev: ChAP - Netflix tool for chaos engineering, nice approach #qconsf

@danielbryantuk: Many organisations don't have good monitoring around configuration changes, but these can cause a lot of problems" @nora_js #qconsf

@danielbryantuk: Great #qconsf talk about chaos testing by @nora_js! Key takeaways ->

Daniel Bryant attended this session:

Key takeaways from the talk included: engineers should not lose sight of the company's customers and the experience they are having; designing for resiliency testability is a shared responsibility; configuration changes can cause outages; and engineers should have have explicit monitoring in place to detect antipatterns in configuration changes.

Jones … began the talk by exploring how teams can design services for resilience or "chaos" testing. Concepts discussed included building services that support Failure Injection Testing, ensuring service-to-service communication is conducted via an RPC framework, implementing RPC call fallback paths and ways to discover them, implementing proper monitoring -- including key business metrics -- and enabling proper timeouts and ways to discover them….

Jones concluded the talk by sharing several success stories of the chaos engineering team's efforts and automation from other Netflix internal teams, stating that production incidents were avoided, and other undesired side-effects were identified and fixed before deploying the service in production. A key message was reiterated several times during the talk: don't lose sight of you company's customers. Resilience testing is one part of Netflix's overall approach to ensuring a consistently excellent customer experience.

Evolving Java

Fresh Async with Kotlin

by Roman Elizarov

Amit K Gupta attended this session:

During his presentation, Elizarov demonstrated how Kotlin addresses the difficulties faced in writing asynchronous code in languages such as Java, C# and Javascript. Asynchronous code in Kotlin looks very much like the normal synchronous code that most developers are used to writing in languages such as Java….

Kotlin coroutines aim to help mitigate the issues a developer face with Futures/Promises. Coroutines allow the developer to write the code with natural signatures that  developers use when writing synchronous code. Coroutines use the suspend keyword at the beginning of the coroutine definition to indicate asynchronous operation….

Developers are encouraged to explore the Kotlin coroutine library for all the coroutines available in Kotlin to support asynchronous programming. These libraries are still evolving and are experimental at present. However, they include integrations with other asynchronous programming approaches, such as CompleteableFuture, RxJava and Reactive Streams. They also provide hooks to allow Kotlin to integrate with single-threaded UI frameworks, including Android and JavaFX.

Going Serverless

Securing Serverless – by Breaking In

by Guy Podjarny

Twitter feedback on this session included:

@danielbryantuk: Serverless platform vendors will patch the underlying platform infrastructure, but it's up to you to secure your dependencies" @guypod #qconsf

With Great Scalability Comes Great Responsibility

by Dana Engebretson

Twitter feedback on this session included:

@jpetazzo: Problem statement: "In an ideal world, we would fetch all the data in a single query. In reality, we have to break that down to many smaller queries."—@bigdana#qconsf

@thepatleong: Owning your own server is like owning a family car, cloud services are like leasing a car, spot instances are like renting a car, and #Serverless is like @car2go" - @bigdana #qconsf

@jpetazzo: My batch job was running every day, for 8 hours. The rest of the time, the instance was doing nothing. I wondered if this would be a good opportunity to use AWS Lambda?"—@bigdana#qconsf

@jpetazzo: AWS Lambdas run on Linux machines. If you develop on a Mac, you can use a Linux VM to test your code; or even simpler, a @docker container."—@bidgdana #qconsf  

@jpetazzo: The code+dependencies for a lambda has a 250MB size limit. Seems generous, but you'd be surprised: some Python packages can bust that limit easily, e.g. fastparquet. — @bigdana#qconsf

@jpetazzo: Step functions: they're great, but they don't support dynamic fan out (i.e. invoking an arbitrary number of "sub-lambdas" in parallel). (I'm sure @QuinnyPig would say "not YET!" but @bigdana is giving that #qconsf talk *before* re:invent, wise timing!)

@jpetazzo: Next strategy: S3 event triggers! For each job to execute, create a file in S3. This triggers the execution of a lambda. That lambda can, in turn, create more files in S3, which triggers more lambdas. "And that's where I broke our monitoring's provider API!"—@bigdana #qconsf

@jpetazzo: You can't rate into a rate limit if you never scale.—@bigdana #qconsf

@jpetazzo: The final (and winning) approach puts tasks to execute in SQS queues, and kicks off Lambdas with CloudWatch events (~crontab). @bigdana #qconsf

@thepatleong: SQS Queues Pros: Scalable, store failed tasks, controls rate limits. Cons: Task can wait in large queues. #qconsf @bigdana

@jpetazzo: Save 80% off your lambda's costs with that one weird trick courtesy of @bigdana at #qconsf :-) ?

@jpetazzo: Lessons learned with AWS Lambda:"- Expect limits- Expects to exceed these limits- Expect you'll have to handler failures" —@bigdana #qconsf

@thepatleong: Cloudwatch triggered #AWS #Lambda Pros: Specific Schedules. Cons: 1 trigger/min = fastest, doesn’t scale to queue.

@jpetazzo: Managers: invest in new hires. Decouple learning process of different parts. Example: @thesecondshade joined as an SRE intern, deployed her first Lambda after a month, and 6 months later, maintains 6 serverless apps."—@bigdana #qconsf

Hardware Frontiers: Changes Affecting Software Developers Today

TensorFlow: Pushing the ML Boundaries

by Magnus Hyttsten

Twitter feedback on this session included:

@kbal11: on image recognition in ML: "That's a serious breakthrough. We started out with cats, and now we can detect a medical condition better than the median doctor" -@magnushyttsten #qconsf

@kbal11: They've built an android app that you can swipe over your skin and it will diagnose skin cancer BETTER than a median doctor" -@magnushyttsten #qconsf

@kbal11: Most people will tell you that if you're going to do Machine learning you need 'data, data, data'... some will follow with 'compute, compute, compute', but the missing element many forget is 'humans, humans, humans' -@MagnusHyttsten #qconsf

@kbal11: If you're interested in Machine Learning... in the last 6 months ML has taken a huge leap from being very low level to having some very high level APIs for defining and training models" -@MagnusHyttsten #qconsf

@kbal11: There are now cloud-based REST APIs where you can upload images or videos and get back actionable meta-data about the contents" - @MagnusHyttsten #qconsf  

@kbal11: At the root, most machine learning is simply matrix multiplication over and over again -@MagnusHyttsten #qconsf

@kbal11: The scale of computation @Google blows my mind. #qconsf

@charleshumble: A Google TPU pod (in the middle). 11.5 petaflops of matrix manipulation. The CPU towers (left and right) feed it.

Microservices: Patterns and Practices

Managing Data in Microservices

by Randy Shoup

Twitter feedback on this session included:

@jkuner: My favorite @randyshoup quote from #qconsf - repeat but still true

@omkhan: Don't start your startup with #microservices @randyshoup #QConSF

leonson attended this session:

Randy Shoup talked about how StitchFix fixed a problem that they had with a monolithic shared DB which could not scale: they split it into a few core databases, built services on top of each, then served client applications; and how they deal with joins (basically built another service which caches the joined view, backed by a flow of events) and transactions (construct a state machine of atomic events, so that when a rollback is needed, they would run a workflow of “compensating events”).

Microservices: Patterns and Practices Panel

by Randy ShoupRoopa TangiralaRafael SchlomingLouis Ryan & Chris Richardson

Twitter feedback on this session included:

@danielbryantuk: If your development velocity is not where you want it to be, then look at your processes first -- look at CI and testing -- before considering microservices" @crichardson #qconsf

@danielbryantuk: Microservice panel at #qconsf @randyshoup: "I'm thinking of running an event masterclass"@crichardson: "You should run it at least once..."

@danielbryantuk: When designing microservices, you must think about the data ownership within an external data store -- this is different in comparison to most module design" @rschloming #qconsf

@kfirondev: From Microservices panel at #qconsf :the gentlemen from Google says that they are almost not using message brokers. They do retries #strange

@l1m5: A great conversation with @randyshoup at #qconsf yesterday evening. You shouldn't think about "selling x", rather "showing why x is going to help solve their problems". It might seem pedantic, but a very important distinction between the two phrases.

Microservices: Service Oriented Development

by Rafael Schloming

Twitter feedback on this session included:

@danielbryantuk: Many people start with the wrong questions when beginning to explore microservices @rschloming begins his #qconsf talk

@danielbryantuk: It's not the practices or tooling that limits microservices development, it's often the process @rschloming #qconsf

@kbal11: On microservice adoption - Slow movers fell into 2 camps. 1 was doing a bakeoff of all the tech choices, the other was trying to figure out exactly the set of services to decompose. Fast movers started 1 service at a time driven by need. -Rafael Schloming from @datawireio #qconsf

@kbal11: Velocity comes from Process, not Architecture -> "Service Oriented Development" instead of "Service Oriented Architecture" - Rafael Schloming from @datawireio #qconsf

@kbal11: If you are trying to add features while maintaining stability, there is no Goldilocks point. A single process is inefficient because it forces a single stability vs velocity tradeoff" -Rafael Schloming from @datawireio #qconsf

@kbal11: If your leadership doesn't understand the tradeoffs between velocity and stability, then they can end up setting up a combination of goals that literally pits an organization against itself" - Rafael Schloming from @datawireio #qconsf

@kbal11: Microservices are valuable not because of the technical architecture, but because they let you set up a distributed workflow that customizes the processes *by service*, optimizing for its needs. Brilliant insight by Rafael Schloming of @datawireio #qconsf

@danielbryantuk: Instead of asking how do I break up my monolith, instead ask how do I break up my process... @rschloming #qconsf

@kbal11: For your first microservice "Pick a real, urgent business problem that you wish you could buy instead of build, and then form an internal spin-off to build it" - Rafael Schloming from @datawireio #qconsf

@danielbryantuk: Spin up early microservices teams as start-ups, with full product lifecycle responsibility. Aim to minimise centralised coordination" @rschloming #qconsf   

@kbal11: When thinking about velocity/stability tradeoffs there are 3 stages - prototyping, production users & growth, and mission critical. - Rafael Schloming at @datawireio #qconsf

@kbal11: You need to minimize friction for spinning up a new service, otherwise you might get lazy and put an independent new feature into an existing service and accidentally couple the process from the existing process into the new one - Rafael Schloming from @datawireio #qconsf

@kbal11: COOL! For development - do dev inside a container, and use a 2-way proxy to wire your in-development service into your remote cluster so you can get live-reload and debugging while sending & receiving traffic from other live services - Rafael Schloming of @datawireio #qconsf

@kbal11: On why rapid deploy == resilience: "In modern systems, things often break because of unanticipated environmental changes, and rolling back does not really help with those" - Rafael Shloming from @datawireio #qconsf

@kbal11: Cascade failures come up when you have long chains of synchronous dependencies. To prevent them, you either need to make services mission critical and slow them down to a crawl, or change the dependency to make it async, cache it, denormalize it, or eliminate it" #qconsf

@danielbryantuk: For the application growth phase of a microservices application, using something that supports dynamic traffic shifting and canarying can be very effective for evolving the system rapidly" @rschloming #qconsf

Daniel Bryant attended this session:

Rafael Schloming … argued that an organisation migrating to microservices must seek to break up their monolithic development processes in addition to attempting to break up the system architecture. Treating newly formed microservice teams as internal "spinoffs" provides boundaries and encourages self-sufficiency and autonomy, and these teams must be supported by effective tooling for debugging, deploying and observing services within production….

When developing an application or service, the overarching delivery lifecycle can be divided into three phases: prototyping, production, and mission critical. It is often much easier to maintain high velocity of feature delivery in the prototyping stage, because stability is less important. As delivery moves from production to mission critical, velocity is often sacrificed for increased stability. Using a single delivery process for all components within an application is inefficient, as this forces a single stability vs velocity tradeoff….

From an organisational perspective, the creation of self-sufficient and autonomous software teams focused around a product is highly beneficial. However, this change from monolithic process to micro-processes requires education, communication and delegation. Everyone within a microservice product team will be exposed to the full development lifecycle -- from coding locally to deploying code to production via a continuous delivery pipeline and observing the application -- and this typically requires additional education. Ultimately, this change means that specialists have the opportunity to become generalists, which leads to the implementation of better holistic systems and operations….

Schloming argued that the best way to conceptualise the organisational change required to implement microservices is to think of each product team as a business spinoff. In much the same way as existing development teams may consume third-party services such as Twilio or Stripe, product teams should integrate with internal services using the same approach….

Schloming summarised his talk by stating that when an organisation begins a microservices migration, attention should be paid in regards to breaking up the monolithic process in addition to (and in priority of) breaking up the monolithic architecture. Organising microservice product teams as self-sufficient and autonomous "spinoffs" is beneficial, and tooling must be created in order to enable effective service-oriented development.

The Art of Chaos Engineering

Chaos Architecture

by Adrian Cockcroft

Twitter feedback on this session included:

@danielbryantuk: From microservices to ephemeral functions...@adrianco showing off his very cool slide animations at #qconsf

@danielbryantuk: @awscloud instances are now charged by the second, and serverless by the millisecond. This creates new possibilities with architecture. You just have to get good at turning stuff off..." @adrianco #qconsf

@danielbryantuk: For cloud native apps you need a build pipeline that automatically tests and deploys immutable versioned artefacts”

@danielbryantuk: The cloud native principles by @adrianco at #qconsf

@KoltonAndrus: Availability theater - if you haven't exercised, you don't know if it works (and it probably doesn't) @adrianco

@danielbryantuk: What's your maturity of disaster recovery and backups?@adrianco asking the difficult questions to awkward laughter at #qconsf

@danielbryantuk: With disaster recovery the switching mechanism must be more reliable than the redundant elements you are switching to" @adrianco #qconsf

@danielbryantuk: Microservices can limit the blast radius for software incidents. Favour the DITTO architecture, and avoid update and delete semantics" @adrianco #qconsf

@danielbryantuk: People are the most important part of chaos testing. However people need training. Ask yourself who runs the 'fire drill' for IT?" @adrianco #qconsf

@GermanKlf: Break it to make it better. Chaos Architecture by Adrian Cockcroft #QConSF

@wesreisz: You want enough exercise so you don't break anything when you need to use it. @adrianco #QConSF Good advice for life and software.

@danielbryantuk: I've seen this mentioned several times in today's #qconsf chaos engineering track ->"There is no such thing as (individual) 'human error' - it's a system error, and humans have usually built the system" @adrianco #qconsf

Daniel Bryant attended this session:

Adrian Cockcroft … discussed the evolution of cloud native architecture, and how chaos engineering can be applied to produce better and safer systems. Effective chaos architecture and engineering was presented as consisting of "four layers, two teams, and an attitude": infrastructure, switching, applications, and people; chaos engineering and security red teams; and "break it to make it better"….

Cockcroft switched gears halfway through the presentation, and focused on chaos engineering and chaos architecture, the essence of which he believes is captured with "four layers, two teams, and an attitude". The first two layers are infrastructure and switching, and here customer requests should be routed to specific local regions and services, data should be replicated and requests re-routed to active services during an incident, and the switching mechanism must be more reliable than the redundant components being switched between.

The next layer, applications, can be made more resilient by designing microservices to limit the "blast radius" of any incident. Circuit breakers limit damage and bulkheads prevent it spreading. …

The fourth layer, people, are a core component of implementing resilient systems - unexpected application behaviour often causes people to intervene and make the situation worse. Fire drills save lives in the event of a real fire, because people are trained how to react -- but who runs the "fire drill" for IT? The "two teams" presented were the chaos engineering team and the security red team….

Cockcroft concluded the talk by discussing risk tolerance, and asking what is more important for an organisation: availability - being permissive and "failing open"; or consistency and security, with the associated downtime.

Expedia’s Journey Toward Site Resiliency

by Willie Wheeler & Sahar Samiei

Daniel Bryant attended this session:

Samiei, senior product manager at Expedia, began the talk by stating that in 2016 Expedia was the 11th largest Internet company by revenue, at $8.77B. With a "back of the envelope calculation" of revenue loss due to unplanned site unavailability, moving from 99% uptime ($87.7M potential loss) to 99.9% site availability ($8.77M loss) results in ~$80M difference…

Wheeler, principal application engineer at Expedia, discussed how a shared learning space was created within Expedia, which facilitated the sharing of information around resilience, and led to the creation of "resilience champions". Much effort was made to collect and present baseline resiliency data, in order to allow teams to track improvements….

Wheeler discussed how the focus on core principles was more valuable than individual tooling, and shared how his team defined a "resilience engineering lifecycle":

  1. Prioritise services that will benefit from improved resilience
  2. Investigate vulnerabilities
  3. Apply resilience patterns
  4. Conduct resilience experiment in test
  5. Conduct resilience experiments in production (increasingly referred to as "chaos testing")…

Resilience experiments were conducted in tests as an addition to the continuous delivery pipeline. Production experiments were conducted with the use of Netflix's Simian Army and Chaos Monkeys….

The results of resilience testing have generally been positive: Chaos Monkey has been running daily in production since May 15th; resilience tests have been added to four Tier 1 service pipelines; there has been an increase in organisational awareness; and a resilience community of practice has been established with 65+ active members. In regards to the challenges, establishing development team engagement has been a struggle due to limited team capacity, and the drive for improving Expedia's products is still currently greater than the need for improved resilience.

Samiei and Wheeler concluded the talk by discussing that the focus of resilience engineering at Expedia for 2018 will be around automation, specifically: service mesh/proxy-based resilience testing enablement (e.g. via Linkerd or Envoy); testing via service discovery; and increased observability. The primary goal is to reduce the cost of resilience engineering through automation.

Failure at Netflix Velocity

by Dave Hahn

Twitter feedback on this session included:

@danielbryantuk: After the latency monkey had crashed our services we tried to alter the latency dials to travel back in time... it didn't work" @relix42 #qconsf

@danielbryantuk: What is the primary cause of issues at Netflix?via @relix42 at #qconsf

@danielbryantuk: Production incidents are expensive, stressful and public - don't underestimate the impact of this on the business and (critically) your people" @relix42#qconsf  

@danielbryantuk: Incidents should be short, unique, and not forgotten. When Netflix goes down I want it to come back quickly, and I want it to have been a completely new issue. We also want to learn as much as possible, and share" @relix42 #qconsf

@danielbryantuk: Gotta love the embrace of failure at Netflix. Engineers that bring down production get this badge :-)@relix42

@danielbryantuk: The Netflix four pronged approach to managing failure and incidents, via @relix42 at #qconsf

@danielbryantuk: What does the Netflix team do before, during and after production incidents?@relix42 explains at #qconsf

@danielbryantuk: We expect failure and incidents at Netflix, but we make sure we cultivate empathy @relix42 #qconsf

@danielbryantuk: Any change made to a complex adaptive system is a gamble. We mitigate risks, but we can't eliminate them @relix42

@danielbryantuk: Be aware of bias when conducting incident reviews. There is typically no 'root cause' in a complex distributed sociotechnical system" @relix42 #qconsf

@danielbryantuk: Measuring success at Netflix @relix42 #qconsf

The Practice & Frontiers of AI

Automating Netflix ML Pipelines with Meson

by Eugen Cepoi & Davis Shepherd

Twitter feedback on this session included:

@kbal11: We can only innovate as quickly as we can take a hypothesis and turn it into an experiment - Motivations for Meson, flexible ML framework used at @netflix #qconsf #qconsf2017

@r39132: Netflix’s Meson Model Training Flow #qconsf

@danielbryantuk: Great insight into the need for good observability when debugging issues (even if it's just monitoring performance at percentiles, and adding println statements to get started), via @spladug at #qconsf

@shubhanabar: Innovation is driven by experimentation @netflix. Netflix talk on orchestration service “meson” at #qconsf

@r39132: Netflix’s Meson Architecture #qconsf

@r39132: Automated Canary CI/CD of Meson workflows #qconsf

@shubhanabar: Meson provides workflows as a service via REST API @netflix #qconsf

Building Bots and Conversational AI

by Mitul Tiwari

Twitter feedback on this session included:

@shubhanabar: Messaging has surpassed social network usage. @mitultiwari talking about conversational bots at #qconsf

Michelangelo: Uber’s Machine Learning Platform

by Jeremy Hermann

Twitter feedback on this session included:

@shubhanabar: DSL for feature engineering helps ensure same features are used at scoring time as at training time @jeremyhermann @Uber #qconsf

@shubhanabar: Michaelangelo allows @Uber data scientists to automatically train best model for every city @jeremyhermann #qconsf

@wynv: Any company regardless of size and any business user should be able to use AI #qconsf

Models in Minutes Not Months: AI as Microservices

by Sarah Aerni

Twitter feedback on this session included:

@kbal11: Woah - @iTweetSarah just showed us Salesforce Einstein letting you build an ML model with a few clicks, expose data immediately to your users, and see the breakdown of factors leading to predictions. #qconsf

@shubhanabar: “Even if you are building one application today, you will want to build many more. Think about reuse from the start.” @iTweetSarah #qconsf

@bigdana: Enabling data scientists is a team sport #QConSF @iTweetSarah

@kbal11: Inevitably what will happen is data scientists will say 'great, I have this model, now what?' -@iTweetSarah

@shubhanabar: “Building a good model takes iterations and time. You don’t want it to end in just a pretty plot in a PowerPoint” @iTweetSarah #qconsf

@kbal11: All of the surrounding pieces for deploying ML in production -@iTweetSarah #qconsf

@bigdana: Supporting models in production is a team effort #QConSF @iTweetSarah

@bigdana: Enable your data scientists to focus so they can iterate faster #QConSF @iTweetSarah

The Whole Engineer

Attitude Determines Altitude- Engineering Yourself

by Randy Shoup

Twitter feedback on this session included:

@kbal11: You would think it's obvious, but absorb this for a moment. The most effective way you can improve in your life, is to believe that you can" -@randyshoup #qconsf

@kbal11: Ability to focus is the best predictor of success and high achievement -@randyshoup #qconsf

@kbal11: Attention is a mental muscle - it can be developed. Every single meditation and mindfulness practice is trying to get at this: how can I focus my attention and avoid distractions" -@randyshoup #qconsf

@charleshumble: If you can't change your organization, change your organization - @randyshoup quotes @martinfowler at #qconsf

@charleshumble: Imposter syndrome - @randyshoup #qconsf - 70% of people will experience at least one episode of Imposter Phenomenonin their lives.

@kbal11: Confidence is a cubic function. When you're confident, you have a virtuous cycle. But when you're not, you get stuck in a vicious one." -@randyshoup #qconsf

@kbal11: Don't fake it til you make it - that never worked for me - do it until you become it -@randyshoup #qconsf

@kbal11: A ship in port is safe, but that is not what ships are built for. Sail out to sea and do new things –@randyshoup quoting Admiral Grace Hopper #qconsf

@kbal11: Key insight from @randyshoup: your top priority may not be the same thing as your core that you derive strength and confidence from. Know what each is for you, draw strength from your core, and don't compromise on your priority. #qconsf

leonson attended this session:

Have a “growth mindset” rather than fixed mindset, and realize “I know I can improve”, not “I cannot get better” nor “I am never good enough”. It’s easier to realize you can get better, but the trickier part is people can have the imposter syndrome, thinking “never good enough”, and cannot realize that, which is actually very destructive. Trust, not “distrust” nor “being naive”, is a good way to support people to grow. Instead of thinking people are inherently lazy, avoid responsibility, and require extrinsic motivation (theory X), believe people are intrinsically motivated, seek ownership, want to perform well (theory Y). Be confident, avoid “fear” or “arrogance”, and again imposter syndrome can do more harm than you think. Randy openly told his own story that he planned to give talk about same topic 2.5 years ago at QConNY, but because of imposter syndrome he cancelled that talk at that time. He also gave suggestions on how to build confidence: “Do it till you become it”, and “Find your core”. 

Engineering Inclusion

by Kevin Stewart

Twitter feedback on this session included:

@kbal11: When trying to promote diversity, you need to make your arguments in the language the company understands - how this will impact their bottom line" - @kstewart #qconsf

@shanehastie: #QConSF @kstewart here’s one reason why diversity matters - up to 35% improvement in profitability

@kbal11: Gender diverse companies outperform by 15%, ethnically diverse by 35%. If I'm a business owner, I want a piece of that" -@kstewart #qconsf

@IvanaMcConnell: The pipeline problem— people might not be applying, but what about the rest of the hiring process? The recruiter, hiring manager, interview team, executive? Go and _find_ the representative candidates! @kstewart #qconsf #techinclusion

@IvanaMcConnell: It's not just your workplace that needs to be inclusive, but so does your hiring process! @kstewart doing a great job emphasizing this. Something we're working hard on @CustomerIO these days, esp @rachelroyall#qconsf

@kbal11: WOW! Simply by increasing transparency about the process, @kstewart and @heptio saw fewer women dropping out. Wouldn't have expected that - what other hidden barriers are we putting in place? #qconsf

@shanehastie: #QConSF @kstewart explore what’s happening in the whole pipeline, not just at the top of the funnel. Small changes in communication resulted in far lower drop off.

@IvanaMcConnell: The transparency of @heptio's leadership was what attracted @kstewart to the company: "We're two middle aged white dudes. We need to change that." #qconsf Honesty is paramount!

@kbal11: If I bring in a lot of diverse people to an organization, but don't keep them, have I actually solved the problem? It's not about the numbers, it's about the effort. The difference between diversity and inclusion is about the effort" -@kstewart #qconsf

@kbal11: If you are not able to articulate and document the bar you have at your company, you don't have a bar, you just have a bias" -@kstewart #qconsf

@shanehastie: #QConSF @kstewart what culture really is - behaviour of everyone in the organisation

The Effective Remote Developer

by Dave Copeland

Twitter feedback on this session included:

@IvanaMcConnell: Breaking down projects into "smallest viable changes" makes communication easier and clearer in remote settings.

@jschulenklopper: “The half-life of trust is six weeks”- executive near Steve McConnellh/t Dave Copeland at #qconsf

@IvanaMcConnell: We don't have a culture of critique in programming— code review comments are cold and harsh. This is especially damaging in a remote setting. @davetron5000 #qconsf

@IvanaMcConnell: In remote environments, it's critical to help others help you: try to communicate in the medium that the other person prefers, if possible! @davetron5000 #qconsf

@IvanaMcConnell: Working remotely should make you a better writer— read what you write, learn to revise, learn the impact of your words. This is so true. @davetron5000 #qconsf

@IvanaMcConnell: Don't forget to give affirming feedback - argh this is so important, not just in remote but in tech in general @davetron5000 #qconsf

The Whole Engineer Panel

by Dave CopelandKevin StewartAnjuan Simmons & Justin Becker

Twitter feedback on this session included:

@kbal11: There is only a finite set of senior engineers available to us - you're not going to be able to hire them all. You need to learn how to grow them" -@kstewart #qconsf

@kbal11: We used an internship program not only to train the interns, but to train US on how to bring up junior engineers -@kstewart #qconsf

@kbal11: With regards to interns - "The more you treat them as regular members of your team, the more you'll get out of it and the more they'll get out of it" -@kstewart #qconsf

@kbal11: A lot of people have somehow gotten the idea that becoming a manager is a promotion. It is not. It is a thankless job, and if you don't get satisfaction from what your team does instead of what you do, you won't be a good fit for it" -@kstewart #qconsf

@kbal11: A person is a leader because they bring something to the table - it is not something that is bestowed upon you, and it is not limited by role." - @kstewart #qconsf

@kbal11: Counterintuitively, we become more empathetic to the people we help, not the people who help us. So as a manager to cultivate empathy, prompt new/out-group team members to ask members of the majority for help. -@anjuan #qconsf

@kbal11: On dual coding & management roles - The energies required for coding and managing are completely different. Very hard to deal with people problems and then find the energy to fire up your IDE and get back to code. -- DEFINITELY resonate with this statement by @kstewart #qconsf

@kbal11: To manage challenging personalities "Try to extract people from the process. Create a design document, and focus the discussion around the document. It helps a lot to write things down and have people read through it before discussing" - @kstewart #qconsf

@kbal11: The point of a design document is not to exactly spec out what we're going to build, but to communicate the intent to a larger group of people" -@kstewart #qconsf

Tools and Culture: What's Beyond a Stack of Containers?

Debugging Containerized Microservices

by Idit Levine

Twitter feedback on this session included:

@jpetazzo: Debugging a monolithic is relatively easy. You can get the big picture by attaching a debugger to a single process. Microservices are a different story!"—@Idit_Levine #qconsf

@danielbryantuk: Debugging microservices is hard @Idit_Levine framing the problem in her talk at #qconsf

@danielbryantuk: Our first tool for debugging microservices is tracing e.g. @opentracing @Idit_Levine #qconsf

@jpetazzo: OpenTracing principles: attach a unique ID to each request entering the app. That unique ID will persist across subrequests. The graphs on the further screenshots are not web inspection, but latency across microservices, shown by Jaeger. (@Idit_Levine #qconsf

@jpetazzo: OpenTracing is nice but it's not *runtime debugging*. It's like printfs across your code. Nice smart printfs, but still, you can only see what was printed. You can't see arbitrary values, let alone change them."— @Idit_Levine #qconsf

@danielbryantuk: The tradeoffs associated with using distributed tracing to debug microservices, via @Idit_Levine at #qconsf

@danielbryantuk: The second choice for debugging microservices is our new container-friendly Squash debugger, which works with @kubernetesio and @code " more details at via @Idit_Levine #qconsf

@danielbryantuk: Adding the Squash microservices debugger to @IstioMesh and @EnvoyProxy, via @Idit_Levine at #qconsf

Daniel Bryant attended this session:

Levine … outlined the issues of debugging a distributed microservice-based system, and provided three potential approaches to overcoming the inherent challenges. The talk also introduced a new open source microservices debugger that Levine is working on, Squash, which integrates with the VS Code IDE and allows developers to debug microservices applications deployed onto Kubernetes.

Levine began the talk by stating that debugging microservices is currently very difficult. A monolithic application typically consists of a single process, and attaching a debugger to this process allows the viewing of the complete applications state and the flow of execution. A microservice-based application is inherently a distributed system consisting of multiple processes communicating over a network, and this adds significant complexity to the challenges of debugging effectively.

The remainder of the talk presented three potential approaches to debugging microservices: distributed tracing, using the open source Squash microservices debugger that Levine has created, and using a service mesh….

Distributed tracing tooling, such as Open Zipkin -- which implements the Open Tracing Cloud Native Computing Foundation (CNCF) hosted API specification -- can be used to monitor and understand the flow of execution through a microservices-based application….

The second approach … Squash currently only supports debugging of microservice applications within CS Code that are written in a language that can be debugged by Delve (Golang) or GDB (C++, Objective C, Java etc) and that are deployed to the Kubernetes container orchestration platform -- although more IDE, language and runtime platform support is planned in the future…

The third approach presented for debugging microservices was to utilise the capabilities of a service mesh, such as Istio / Envoy….

Levine concluded the talk by suggesting that the ultimate solution would be to integrate all three of the debugging approaches mentioned.

Going Production with Docker and Swarm

by Bret Fisher

Twitter feedback on this session included:

@jpetazzo: Many container projects are too big on scope. Maybe you don't need (on day one) full-on CI/CD. Automated image building is a good start!"—@BretFisher #qconsf

@jpetazzo: The Dockerfile maturity model: a convenient step-by-step checklist of guidelines when creating Dockerfiles! Courtesy of @bret_fisher #qconsf

@BretFisher: Creating your first Dockerfiles from your existing apps? Follow this simple "maturity model" to keep it from getting more complex then it needs to be, especially early on in project #qconsf #dockerprod #docker

@BretFisher: Don't use "latest" tag in your Dockerfiles. Get out of the habit now before it's too late . Here's examples of pinning to date-based, version-based, and also your apt/yum packages too! #qconsf #dockerprod #docker

@jpetazzo: Another anti-pattern: baking different @docker images for different environments. Don't! (Use environment variables etc. to specialize at run-time.) – @bretfisher#qconsf

@jpetazzo: VMs or containers? "It depends." You have to do your homework, i.e. do some testing (e.g. performance-wise) to figure out what's best for your apps. — @BretFisher#qconsf

@BretFisher: Want to run production #containers? Do you do VM's or baremetal? Which #Linux distro? Which Kernel version? What base images? Generally sticking with what you know is best, but here are some rules of the road #qconsf #dockerprod #docker

@jpetazzo: PSA: Docker is very highly kernel dependent. If your kernel sucks, your containers (Docker or otherwise) will suck. Move to kernels 4.x already! — @BretFisher #qconsf

@jpetazzo: Three stages of @Docker Swarm: baby Swarm (1 node), HA Swarm (3 nodes), biz Swarm (5 nodes, so I can take one out for maintenance and still lose one), Flex Swarm (5 dedicated managers, separated workers). —@bretfisher #qconsf

@BretFisher: 3 examples of mostly cloud-agnostic tech stacks for container orchestration on #docker #swarm. From pure open-source to the most pre-packaged options #qconsf #dockerprod

Managing the Docker Change - Disrupt and Innovate

by Tim Tyler

Twitter feedback on this session included:

@AshlynnPolini: #ProTip from @timotyler START SMALL! You don't need to solve all your problems at once. #QConSF

@BretFisher: “Yay we decided to do microservices” but did you ask ops? Says @timotyler #qconsf #dockercaptain

@jpetazzo: What does disruption look like in big Enterprise organizations? @timotyler #qconsf

@BretFisher: I seriously need to step up my team-naming skills. “The ModSquad” just makes you want to be on that team! Via @timotyler #qconsf #docker #containers

Web as Platform

Gaining Control with the Web Animations API

by Dan Wilson

Twitter feedback on this session included:

@kbal11: CSS Transitions and Keyframe animations are great, they're declarative, you say what you want and the browser figures it out for you... but it's declarative, if you want to make something interactive it's a lot of work" -@dancwilson #qconsf

@kbal11: What I want is something as simple as CSS animations where I'm just saying what I want, but with the flexibility to use JavaScript when I need to do something a little more complicated" -@dancwilson #qconsf

@kbal11: There is no public acknowledgement that Edge is working on the Web Animations API, but they have a lot of people working on animations at Microsoft, so there's probably something going on" -@dancwilson #qconsf -- Any hints you can drop us @rachelnabors? ;)

@kbal11: The web animations API is essentially just a new function call 'animate' on DOM elements that takes 2 properties - a set of keyframes and some configuration options" -@dancwilson#qconsf

@kbal11: If it already has an equivalent in CSS, what the Web Animation API gives you is finer control, the ability to know when you finish, and the ability to add player controls to stop, start, and jump ahead" -@dancwilson #qconsf

@kbal11: Woah! @dancwilson showing how the web animations API gives us the building blocks to implement interactive hooks into a unified timeline across multiple animations #qconsf

Go Beyond Native with Web-based VR and AR

by Kieran Farr

Twitter feedback on this session included:

@kbal11: Its easy to get sucked into the sense that this is a fad, and just for gamers, but if you take one thing from this conference it is this: this is not just about virtual reality, but about a new way to interact with computers, using the technology we already have" -@kfarr #qconsf

@kbal11: Immersive experiences are progressive - they map through a wide range of devices and user preferences -@kfarr #qconsf

@kbal11: Reframe VR to immersive media and it becomes clearer what an incredible opportunity we have here - @kfarr #qconsf

@kbal11: Edges are so pervasive in the way that we record and share information that we don't even think about it anymore. One of the things that is absolutely remarkable about this medium is that for the 1st time we have the opportunity to make those edges disappear" -@kfarr #qconsf

@kbal11: Even to 2 to 4 years ago, this would have been science fiction. Now it's a product that's available in our living room" -@kfarr #qconsf #WebVR

@kbal11: Total mindshift for me about #webVR from @kfarr's #qconsf talk - we should be thinking about this not as virtual reality, but as progressively immersive media.

@kbal11: Say I've convinced you this is a revolutionary medium, but now you're telling me the best way to deliver this is through the web? That's crazy! Yes, I am, and it is." -@kfarr #qconsf

@kbal11: We need to invert the mainstream VR experience. We need to pull people in to a progressively enhanced experience by giving them a taste of the content. You can't do that in an app. You have to use the web. There's no choice." -@kfarr #qconsf

@kbal11: No need to write 400 lines of code... if I would like a box, I will just write <a-box> -@kfarr on the amazingness that is @aframevr #qconsf

@kbal11: Because A-frame acts like a DOM, you can use all of your favorite JavaScript libraries with it. If you like React, use React. If you like Angular - because you're old school - use Angular!" -@kfarr #qconsf

@kbal11: We're now at the level where I can teach virtual reality to middle school students, using @aframevr -@kfarr #qconsf

Streamlining Online Checkout Using Web Standards

by Michel Weksler

Twitter feedback on this session included:

@kbal11: With the web payments API, the 'payments sheet' that handles gathering payment information is handled by the browser, so this is not something that I as an engineer need to worry about anymore" -@mweksler #qconsf

@kbal11: From a payments perspective, @Airbnb is an escrow service. We charge a guest, then hold the money on their behalf until the service has been rendered to their satisfaction. Which means of course that we need to hold on to a lot of money" -@mweksler #qconsf

@kbal11: On why payments request API for mobile will be HUGE: "Mobile is 21% of e-commerce payments, 66% of mobile purchases made on the web rather than native, and conversion rates on mobile are much lower" -@mweksler #qconsf

@kbal11: Currently 30% of internet users are using a browser that supports the web payments api - we expect that to go up to over 80% by mid 2018." -@mweksler #qconsf

@kbal11: The payment requests API does not process payments in itself, it is just an easier way to collect payment credentials and pass that back to the merchant" -@mweksler#qconsf

@kbal11: Using the web payments API, if I enter a different country, say Australia, the fields and UI change. As an engineer, I don't have to worry about the UI for all these varied details, someone has already taken care of it for me." -@mweksler #qconsf

@kbal11: With web payments API, basic is specced in but companies can add their own payment mechanisms by creating a manifest, so it is flexible to innovations in payments moving forward. This creates a useful default AND an open ecosystem . @mweksler #QConSF

@kbal11: The payments working group is involved in a few standardization efforts. Basic card is the first, making all browsers able to provide cards. @Interledger is another effort being considered." -@mweksler #qconsf #cryptocurrency

@kbal11: The payments industry is moving towards a direction where vendors do not store cards on file. Cards on file are a huge security risk, so there is tremendous pressure to have vendors accept one-time-use credentials instead" -@mweksler #qconsf

@kbal11: In the next few worlds we're going to move to a system where most payments are going to be made using some type of native app, which will authenticate using some type of biometric, and return a one time use credential to the vendor" -@mweksler #qconsf  

@kbal11: For gift cards, at the moment, if your gift card is a credit card, it will work out of the box. If your gift card works differently, you will need to create a manifest that developers will reference explicitly" - @mweksler #qconsf  

The WebAssembly Revolution Has Begun

by Jay Phelps

Twitter feedback on this session included:

@kbal11: You can override the prototype of an array and have a length 0 array where arr[0] returns 'lol'. But it's valid, it's JavaScript. (room laughs) I didn't mean that to be as derogative as it came out" - @_jayphelps #qconsf

@kbal11: v1 MVP of Web Assembly is best suited for languages like C++ or Rust, where you're not leaning on any type of garbage collector" -@_jayphelps #qconsf

@kbal11: What is web assembly good at right now? Heavily CPU bound number computation. Things like games, crypto, ... -@_jayphelps #qconsf

@kbal11: With asm-dom, you can use JSX and virtual dom technology in C++. Do you want to do that? I personally don't, but it's great that you can" -@_jayphelps #qconsf

@kbal11: Within the next year or two, you'll be consuming Web Assembly from libraries without even knowing it. -@_jayphelps #qconsf

@kbal11: Looking at binary can be pretty intimidating, so my recommendation is unless you're working on compilers, don't do it. There is a textual representation of the binary." @_jayphelps#qconsf

@kbal11: If you're debugging web assembly, it is important to remember that compilers can apply optimizations. Fast code is not necessarily readable code" -@_jayphelps #qconsf

@kbal11: The memory model for Web Assembly is linear. You have one giant piece of memory that the compiler can do whatever it wants with. It's sandboxed, so you can't access other applications, but for your application it is just one big piece of memory." -@_jayphelps #qconsf

@kbal11: Emscripten is an equivalent to clang that can compile to wasm. So you can compile your C code to a #wasm file, or even to a complete standalone application with HTML file that will load your wasm and you're ready to go" -@_jayphelps #qconsf

@kbal11: Imagine #webpack with a cpp-loader and a rust-loader, where you can just add your c++ or rust files and it will just make it all work" -@_jayphelps #qconsf

@kbal11: If you're going to have direct access to JavaScript and the DOM, you must have garbage collection b/c you can create a DOM element and hand that reference off to JS. It needs to be handled, so garbage collection is going to be a 1st class citizen in #wasm" -@_jayphelps #qconsf

@kbal11: A lot of this has been talking about WEB assembly, but if you actually read the spec it really has nothing to do with the web. It's a very generic bytecode that can be generally applied. The new #etherium VM is using #wasm. " - @_jayphelps #qconsf

Sponsored Solutions Track 1

Event-driven Architecture for Real-time Analytics

by Mike Spicer

Twitter feedback on this session included:

@wynv: Real-time is now - time to start moving to this architecture to harness the reality of massive and current data. Adapt or die. #eventdriven #qconsf

@wynv: Functions as a service (FaaS) is big-time in data analytics #qconsf

Sponsored Solutions Track 2

Using Microservices to Build an API That Lasts

by Chris McFadden

Twitter feedback on this session included:

@thepatleong: focus on what's useful for users, not following the rules tops for designing your API from @cristoirmac #qconsf #rest

@thepatleong: APIs shouldn't be an after-thought, they should BE the application. API-First development @cristoirmac #qconsf

Opinions about QCon

Twitter feedback on QCon SF 2017 included:

@IvanaMcConnell: Overwhelmed by the scale of #qconsf! But armed with coffee and sugar and ready to take it on 

@charleshumble: Behind the scenes. Rendering the videos from #qconsf at the event for attendees.

@rdagumampan: What could be better than meeting and asking the C# Language designers themselves. I hope to catchup with Anders Hejlsberg soon. #qconsf #csharp #futures


@ProducerWorkman: I had a great time at #QConSF. I’m excited to take all the knowledge I learned back to friends and colleagues at @dish network. See yah later San Francisco.

@msanfacon: Lots of great talks and chats on company culture at #qconsf this week. Also, great workshop on the same subject by @randyshoup!

@arungupta: Hats off to @wesreisz for running an awesome #qconsf. It always beats my expectations in terms of content, speakers, socializing and food!

@madhuri06083729: One of my takeaways from this conference @randyshoup #qconsf

@wesreisz: One of the behind the scenes test flights before #QConSF opening keynote.


InfoQ produces QCons in 6 cities around the globe. Our focus on practitioner-driven content is reflected in the fact that the program committee that selects the talks and speakers is itself comprised of technical practitioners from the software development community. Our next QCon will be in London March 5-7, 2018. We will return to San Fransisco April 9-11 2018 with a brand new event focussed on machine learning and AI for developers.

Rate this Article