Discussion of how tools technologists create impact culture, and how culture impacts those tools. Not really a standalone presentation but hopefully useful.
Tools For jQuery Application Architecture (Extended Slides)Addy Osmani
Hey guys. I just wrapped up my talk on Tools for jQuery Application Architecture over at Web Directions in London and wanted to make sure everyone interested had access to the slides. Some of the topics I cover include:
MVC & MVVM architecture patterns for client-side development
JavaScriptMVC, Backbone, Spine, SproutCore, Sammy.js
Design patterns for JavaScript applications
Dependency management
JavaScript templating
Cross-browser persistent storage
Feature detection
Widgets & Component libraries
Unit Testing & testing environments
Build Processes, concatenation and minification.
and more!
An Introduction to User Experience for Dev's & TechiesScott Savage
Presented by Scott A. Savage (www.scottAsavage.com) for Web Content Mavens at General Assembly in Washington, DC on March 18, 2015.
This presentation provides an overview of how developers and non-user experience people can integrate good user experience ideas and methodologies into their professional processes and work.
Windows 8: Does Microsoft have a lesson to learn about UX?Matt Radbourne
This is a presentation that I gave at Untapped Conference in London in 2012. It asks whether the world is ready for the newly-released Windows 8 and answers the question with primary research.
Tools For jQuery Application Architecture (Extended Slides)Addy Osmani
Hey guys. I just wrapped up my talk on Tools for jQuery Application Architecture over at Web Directions in London and wanted to make sure everyone interested had access to the slides. Some of the topics I cover include:
MVC & MVVM architecture patterns for client-side development
JavaScriptMVC, Backbone, Spine, SproutCore, Sammy.js
Design patterns for JavaScript applications
Dependency management
JavaScript templating
Cross-browser persistent storage
Feature detection
Widgets & Component libraries
Unit Testing & testing environments
Build Processes, concatenation and minification.
and more!
An Introduction to User Experience for Dev's & TechiesScott Savage
Presented by Scott A. Savage (www.scottAsavage.com) for Web Content Mavens at General Assembly in Washington, DC on March 18, 2015.
This presentation provides an overview of how developers and non-user experience people can integrate good user experience ideas and methodologies into their professional processes and work.
Windows 8: Does Microsoft have a lesson to learn about UX?Matt Radbourne
This is a presentation that I gave at Untapped Conference in London in 2012. It asks whether the world is ready for the newly-released Windows 8 and answers the question with primary research.
Agile Development Overview (with a bit about builds)David Benjamin
I gave this presentation to our dev team when i started at Hannan IT back in October. Its a quick run through the Agile basics, with a bit of extra discussion on continuous integration.
I experimented here with scripting in two tangential sections in the hopes that it would avoid many more spontaneous tangents. It worked!
When going into the development of a software product, a possible source of mistake is the incorrect evaluation of the complexity that lies behind an idea , as well as a clutter coming from the massive amounts of technologies enabled. This presentation explains a possible way to deal with such issues.
User Experience Basics for Product ManagementRoger Hart
User Experience (UX) has matured as a discipline and radically changed how products are delivered. It touches workflows, usability, customer needs, and of course visual design and UI. Product managers can't ignore it, even if they want to... and if they want to, they're probably wrong. The tools of User Experience can help us get closer to our customers and differentiate our products.
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)Liz Filardi
These are my slides for the first week of the class "Mobile and Tablet UX" at the NYU School of Professional Studies. The course is taught online in 4 sessions.
All That Glitters Is Not Gold: Usability Design for "When Things Go Wrong"⌨️ Steven Proctor
Things fail or otherwise go wrong all the time; to believe otherwise is to be unprepared for reality.
You might have a great usability story for when things work, but what user wants to hear “Have you tried turning it off and then on again?” when something goes wrong?
Come start your journey of being able to ask the right questions for your application domain for what should we expect to happen when things start going off the happy path.
How can I find ways to delight the user when something “unexpected” happens?
What kinds of reduced functionality can we deliver while things are breaking, and then get them back to a good state.
Could we even deliver the ultimate goal, giving the user a great experience while the alerting and monitoring team is getting a swarm of Severity 1 errors that would normally cause them to be panicking.
Architecting a Post Mortem - Velocity 2018 San Jose TutorialWill Gallego
Engineers are frequently tasked with being front and center in intense, highly demanding situations that require clear lines of communication. Our systems fail not because of a lack of attention or laziness but due to cognitive dissonance between what we believe about our environments and the objective interactions both internal and external to them.
It’s time to revisit your established beliefs surrounding failure scenarios, with an emphasis not on the “who” in decision making but instead on the “why” behind those decisions. With attention to growth mindset, you can encourage your teams to reject shallow explanations of human error for said failures and focus on how to gain greater understanding of these complexities and push the boundaries on what you believe to be static, unchanging context outside your sphere of influence.
Will Gallego walks you through the structure of postmortems used at large tech companies with real-world examples of failure scenarios and debunks myths regularly attributed to failures. You’ll learn how to incorporate open dialogue within and between teams to bridge these gaps in understanding.
Sometimes, they just don’t get it.
We’re just trying to do the right thing here. Isn’t our success dependent on our users being able to shop, buy, apply or contact us through our web site or app? So if we’re dependent on our users, shouldn’t we at least involve them somehow in the design process?
Not so easy.
For some of “those” people, design is easy. Don’t we already know what the problem is and what design we can use to fix it? Can’t we just leverage best practices? Why do we even need to test the design if we’re experts? No one ever says these things, right?
In the real world, user-centered design and usability is ironically, not that easy to adapt. It’s counterintuitive because it’s such hard work to make things easy. What we have to do is to make what we do easy to understand and easy to choose. This session may not change your reality, but by sharing in some lessons learned, hopefully you’ll have the tools to help change some minds.
Visualizing Work: If you can't see it, you can't manage itFernando Cuenca
Presentation delivered at Toronto Agile Conference - Oct 30, 2018
--
Unlike a factory, where we can see work literally moving around, piling up waiting, being worked on, or even deteriorating with time, knowledge workers have to deal with abstract constructs that are largely invisible. Suddenly, answering questions like "what are we working on?" or "how does work get done here" can become tricky.
The basic premise that the first step towards effectively managing knowledge work is to make it visible will not come as a surprise for anyone with some familiarity with Agile. That said, there's more to effective work visualization than a 3-column board showing "To Do | In Progress | Done" columns, and visualizing work items is only the first step.
This session will explore approaches for visualizing otherwise invisible aspects of work, such as commitments, process, rules and, of course, work items, and using them to enable more effective management and collaboration.
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)Whitney Hess
Have you fallen in love with your solution and forgotten the original problem? Are you certain that your product actually makes people’s lives better? Not every company can hire someone like me to help you listen to your users, so you’re gonna have to learn how to do some of this stuff yourself. I’ll show you techniques to find out who your users are, what they really need and how to go about giving it to them in an easy to use and pleasurable way. And it doesn’t have to bankrupt you or kill your release date.
As individual contributors and non-senior management, we're always trying to figure out how to get leaders to see and implement DevOps. But what if I told you, you didn't need management to implement DevOps? This talk will give several practical tips that anyone in the technical organization can do to help implement a DevOps type culture.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Agile Development Overview (with a bit about builds)David Benjamin
I gave this presentation to our dev team when i started at Hannan IT back in October. Its a quick run through the Agile basics, with a bit of extra discussion on continuous integration.
I experimented here with scripting in two tangential sections in the hopes that it would avoid many more spontaneous tangents. It worked!
When going into the development of a software product, a possible source of mistake is the incorrect evaluation of the complexity that lies behind an idea , as well as a clutter coming from the massive amounts of technologies enabled. This presentation explains a possible way to deal with such issues.
User Experience Basics for Product ManagementRoger Hart
User Experience (UX) has matured as a discipline and radically changed how products are delivered. It touches workflows, usability, customer needs, and of course visual design and UI. Product managers can't ignore it, even if they want to... and if they want to, they're probably wrong. The tools of User Experience can help us get closer to our customers and differentiate our products.
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)Liz Filardi
These are my slides for the first week of the class "Mobile and Tablet UX" at the NYU School of Professional Studies. The course is taught online in 4 sessions.
All That Glitters Is Not Gold: Usability Design for "When Things Go Wrong"⌨️ Steven Proctor
Things fail or otherwise go wrong all the time; to believe otherwise is to be unprepared for reality.
You might have a great usability story for when things work, but what user wants to hear “Have you tried turning it off and then on again?” when something goes wrong?
Come start your journey of being able to ask the right questions for your application domain for what should we expect to happen when things start going off the happy path.
How can I find ways to delight the user when something “unexpected” happens?
What kinds of reduced functionality can we deliver while things are breaking, and then get them back to a good state.
Could we even deliver the ultimate goal, giving the user a great experience while the alerting and monitoring team is getting a swarm of Severity 1 errors that would normally cause them to be panicking.
Architecting a Post Mortem - Velocity 2018 San Jose TutorialWill Gallego
Engineers are frequently tasked with being front and center in intense, highly demanding situations that require clear lines of communication. Our systems fail not because of a lack of attention or laziness but due to cognitive dissonance between what we believe about our environments and the objective interactions both internal and external to them.
It’s time to revisit your established beliefs surrounding failure scenarios, with an emphasis not on the “who” in decision making but instead on the “why” behind those decisions. With attention to growth mindset, you can encourage your teams to reject shallow explanations of human error for said failures and focus on how to gain greater understanding of these complexities and push the boundaries on what you believe to be static, unchanging context outside your sphere of influence.
Will Gallego walks you through the structure of postmortems used at large tech companies with real-world examples of failure scenarios and debunks myths regularly attributed to failures. You’ll learn how to incorporate open dialogue within and between teams to bridge these gaps in understanding.
Sometimes, they just don’t get it.
We’re just trying to do the right thing here. Isn’t our success dependent on our users being able to shop, buy, apply or contact us through our web site or app? So if we’re dependent on our users, shouldn’t we at least involve them somehow in the design process?
Not so easy.
For some of “those” people, design is easy. Don’t we already know what the problem is and what design we can use to fix it? Can’t we just leverage best practices? Why do we even need to test the design if we’re experts? No one ever says these things, right?
In the real world, user-centered design and usability is ironically, not that easy to adapt. It’s counterintuitive because it’s such hard work to make things easy. What we have to do is to make what we do easy to understand and easy to choose. This session may not change your reality, but by sharing in some lessons learned, hopefully you’ll have the tools to help change some minds.
Visualizing Work: If you can't see it, you can't manage itFernando Cuenca
Presentation delivered at Toronto Agile Conference - Oct 30, 2018
--
Unlike a factory, where we can see work literally moving around, piling up waiting, being worked on, or even deteriorating with time, knowledge workers have to deal with abstract constructs that are largely invisible. Suddenly, answering questions like "what are we working on?" or "how does work get done here" can become tricky.
The basic premise that the first step towards effectively managing knowledge work is to make it visible will not come as a surprise for anyone with some familiarity with Agile. That said, there's more to effective work visualization than a 3-column board showing "To Do | In Progress | Done" columns, and visualizing work items is only the first step.
This session will explore approaches for visualizing otherwise invisible aspects of work, such as commitments, process, rules and, of course, work items, and using them to enable more effective management and collaboration.
DIY UX: Give Your Users an Upgrade (Without Calling In a Pro)Whitney Hess
Have you fallen in love with your solution and forgotten the original problem? Are you certain that your product actually makes people’s lives better? Not every company can hire someone like me to help you listen to your users, so you’re gonna have to learn how to do some of this stuff yourself. I’ll show you techniques to find out who your users are, what they really need and how to go about giving it to them in an easy to use and pleasurable way. And it doesn’t have to bankrupt you or kill your release date.
As individual contributors and non-senior management, we're always trying to figure out how to get leaders to see and implement DevOps. But what if I told you, you didn't need management to implement DevOps? This talk will give several practical tips that anyone in the technical organization can do to help implement a DevOps type culture.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
3. Caveats
* My opinions, not Turnitin’s (or anyone else’s)
* Series of anecdotes rather than stories :-)
* Set of people and resources at end, will post link on twitter later (@cwinters)
4. Goals for today
❖ Culture is central to work
❖ You are part of the culture
❖ You can help change it
❖ Tooling can be one of your levers
Central to our enjoyment or dislike of work
Central to how productive we are individually or as a team
Why focus on tooling? It’s something we tend to like iterating on, maybe because we’re the customer?
5. Tooling
What do you use
to do your job?
So what is tooling? It’s the answer to this question.
Yes, it’s broad.
6. Examples
❖ Editors/IDEs, keyboards, debuggers
❖ Test runners, build systems, traffic sniffers
❖ Team messaging, video conferencing, shared calendars
❖ Status reporting, ticketing systems, file sharing
❖ Whiteboards, post-it notes, screen recorders
❖ Headphones, video cameras, microphones
I bet if I got five of you in a room you could come up with 20 more in five minutes.
People in the sorts of work that we do use a lot of tools to do our jobs.
It also emphasizes that our job is not writing code. It’s making products that help people in some aspect of their life or job.
7. Feedback loop
A system’s output
amplifies or inhibits
future system output
Next definition
Amplifies: positive
Inhibits: negative
When we talk about systems we inevitably have to talk about these. It’s not complicated, but if you’re not thinking about these sorts of things you’re probably considering
things statically
8. Examples
❖ Speaker (out) picked up by microphone (in) — classic!
❖ Higher temps melt more ice, which exposes darker
ground, which absorbs more heat, which melts more ice
❖ Building a highway to alleviate congestion spurs more
development along the highway, which leads to more
cars, which leads to more congestion
❖ More predators means less prey, which means predators
die from starvation, which means prey can bounce back
More:
* Drought kills plants, which limits water released by plants, which increases dust, which makes air even dryer
* The last one shows both positive and negative, though which is which probably depends on whether you’re the eater or the eaten
9. Examples - Software
❖ “Infinite” storage shaping an early web site of mine…
❖ Systems hard to test means that tests are hard to write…
❖ Releases are risky, we should do fewer releases…
* Agile is built around feedback loops, preferably more frequent so the time between an activity and reflection on that activity is short
* “ZARNETZKE!” (time when 1GB HD was ~$1k, and you got 20-50MB with your website)
* …which means only the easiest tests get written, which means we rush to fix inevitable bugs, which are really hard to fix because the system is hard to test…
The last one is a core loop that may have happened to some of you. You put software out in the world and something bad or embarrassing happens. (It happens to
everyone)
And the natural human tendency is the find the thing that changed, and do less of that. But unless your company is okay with you shipping fewer features the side-effect
is that you’ll be putting more features into fewer releases. So every release that goes out is riskier because there are more things that can go wrong.
10. Risk is scary!
❖ Answering angry customers sucks
❖ Natural to want to control and limit variables
❖ But what if those variables are what you do?
This reaction happens for good reason!
Control is literally the job of some people, and you can’t just ignore that.
11. Break the cycle
❖ How to do smaller releases?
❖ …how to give everyone confidence?
❖ …how to make change sustainable?
* It’s all well and good to say “we need less risky releases”, but how do you do that?
* Your process is tooling, and it’s probably adapted to chunky releases
* …full regression tests: necessary?
* …change review board?
* …separate teams doing handoff reviews?
* This tooling has created a culture
* …and culture is really hard to change
13. Examples
❖ What do you celebrate? What do you punish?
❖ Communicate via speaking or via document?
❖ Implicit AND explicit
❖ Intentional AND accidental
❖ “I know it when I see it”
* What are some phrases you use to describe a company’s culture?
Open, friendly, collaborative, passive aggressive, sales driven
* Implicitly: example from Jeff Koenig accidentally dropping the production database
* “I know it when I see it” from Justice Potter Stewart on obscenity case (Jacobellis v Ohio, about the airing of a Louis Malle film “The Lovers”) — also known as an
Elephant Test (“hard to describe, but instantly recognizable when spotted”)
14. Themes
❖ Agency: can I affect it?
❖ Independence: can I do it without asking?
❖ Re-use: can I make your thing part of my thing?
* Back to caveats, a lot of the way I see this is driven by the way I see everything — people generally want to do a right thing, and part of our job when making tools
and processes is to make doing a right thing as easy as possible.
* Going to go through two areas around this: Testing, and CI/CD
15. Chrome plugin to show you a new piece of art every day
Is this a tool? Y
Does it help me do my job? N
Take a drink
16. 1. Testing
❖ One of the most powerful tools we have
❖ Culture deeply shapes how we test
❖ Culture deeply shapes the impact of testing
❖ Scrummerfall still reigns?
* Powerful: Not only to ensure quality (which is our professional responsibility) but also so that we can focus on building useful features instead of scrambling to fix
bugs with the pressure of a broken system limiting our vision.
* Many people still do cycles of build-test-release, which means testing is “the only thing sitting between devs and customers” — that BETWEEN is a problem. It’s a
hold-up if testing folks actually do the job we want them to do.
17. Slightly controversial
❖ Why separate software engineers and quality engineers?
❖ Why don’t engineers test their own code?
* Yay, not everyone separates like that, SDET (in MS, Amazon, elsewhere) seem to be at the same level money and status-wise
* I think “you can’t see the problems with your own code” is bullshit. It’s absolutely true if you never do it, but like everything else the more you do it the better you get at
it. This idea that quality engineers “think differently” about problems verges on the mystical — you can learn to do that just like you learned to program, or write, or play
the guitar, or bake bread.
* Your job is not to write code. Your job is to solve problems. And shit that doesn’t work doesn’t solve problems.
* Can you imagine civic engineers leaving the testing of roads or bridges entirely to someone else?
* I suspect this has happened because writing tests is generally seen as lower status. The assumption is that if you *can* write code you are. Therefore if you aren’t
writing code you can’t. And writing code is high status. Could it be seen as asking a race car driver to take on a school bus route.
18. People still matter
❖ Automation is not the end of testing
❖ Testing gives us confidence our systems will work
❖ …and that they’re right
❖ …we need people for that
* “Right” systems because of UX; my conversion story
23. Testing microservices
❖ Microservice world: feature can span multiple front-
end, edge, and back-end services
❖ Multiple teams, multiple features, all operating
simultaneously
❖ Testing 😳
24. Standard way
❖ Standard way: three production-like environments
❖ Dev: Test out your mostly-baked changes
❖ QA: Verify those changes
❖ Production: Let users test your changes
25. Negative loops: one environment
❖ Dev and QA envs become bottlenecks
❖ Option: serial (coordinate who can deploy and when?)
❖ Option: hopes and prayers (do what you want)
❖ How do the services that many others depend on test
themselves without breaking everyone else?
❖ Same feedback loop as “release less often”
* same loop as “release less often” - larger changes, less certainty about what may be causing problem, less frequent iterations
26. Positive loops: color environments
❖ Ready to test a feature? You get an environment!
❖ Reset state (Postgres, Redis) every time
❖ “Color” refers to their name in URL: gold, ruby, sage
❖ Create via Slack commands, 5-10 minute turnaround
❖ Technical info (quickly)
* Naming shapes this
* Technical info:
* All services (~30) running on one EC2 instance
* Front-end served up from S3 buckets
* Docker makes this possible
* Services don’t require much memory (Python)
* All containers built on-demand (weird)
27. “Make it easy”
❖ Accessible: just need a URL
❖ Defaults: specify only changes from production
❖ Independent: no permission needed
❖ Everyone can create an environment, not just devs
❖ Product owners, designers, curriculum team
* It wasn’t pie-in-the-sky optimism that led us to create tools so that everyone could create an environment.
We didn’t want to be gatekeepers.
Plus we have always had very active Product Owners
28. Primary effects
❖ Concurrent features can move forward independently
❖ Anyone can scratch an itch
❖ “Works on my machine” never heard again
* Concurrent independent features: huge
29. Secondary effects
❖ Trust: powerful tools used by everyone, good people
recognize the power and use it wisely
❖ Focus: (mostly) abandon efforts for local full stack
❖ Public: accessible via URL = perfect for demos
❖ Test: vector for integration tests to run automatically
❖ Everybody tests, not “somebody else’s job”
❖ …everybody* more familiar with the product
trust: giving people agency engenders trust
test: re-use
30. So how’s it going now?
❖ Rest of the company probably tired of hearing about it
❖ Replicating system to larger platform, Java services
❖ Hugely beneficial to build services with this in mind
❖ Current system still results in weekly conflicts
❖ Original: A
❖ Current: Incomplete
32. 2. CI/CD
❖ Huge level up for a team or org
❖ Shorter feedback loops dev => prod
❖ …also between thought and service
* Continuous Integration: get your code running in as real an environment as possible, all the time
* Continuous Deployment: deploy changes as they occur and are verified, don’t wait for arbitrary time boundaries
* “thought and service” — making it easy to create a new thing and have it act like everything else, the special bits should be in the code and the domain of its change,
not in how it’s built and run
33. Starting state
❖ Multiple systems with ops ownership only
❖ New projects: copy-and-adapt
❖ Little-to-no agency, second-class citizen
❖ No artifact re-use despite Docker
❖ Runtime/deployment config in separate repo
❖ Few (if any) docs per repo
❖ Manual deployment ceremonies at sprint end
* Multiple: 2-3x Jenkins, Circle CI 1.x and 2.x, Codeship
* Copy Circle/Jenkins files from closest project at hand, no re-use, kubectl commands everywhere
* Second-class: weird combination of recognizing the value while being mad when things don’t work — how to recognize? “Someone should take care of this”
* No artifact re-use: tests run via maven/gradle commands on worker node, not in container. And repos generally had a dockerfile generation script rather than an actual
dockerfile
* Separate repo: secrets in one, deployment config in another, each controlled by separate team and each with its own processing logic and know-how — for example,
rewriting commonly used keys for database config into what spring expects, but not really documented everywhere (“why document when everyone just copies files
from another project?”)
34. Secondary effects
❖ Spread-out ownership of deployment adds FUD
❖ Fewer deployments, more change in each, more risk
❖ Deployment know-how not everywhere…
❖ Silo: barrier to cross-team coding collaboration
❖ …which IMO leads both product and code collaboration
through product management process, inappropriate
* Fewer deployments: sensing a theme?
* Deployment know-how — better than about a year ago, when a guy (A GUY) was doing deploys. In fact one of the first things that happened when I took over this
team was his leaving. And I tried really hard to keep him out of fear, and everybody telling me he had all this knowledge that nobody else did. But it all turned out ok,
adaptation wasn’t as hard as some people thought.
* Silo: one of the benefits of smaller services is that people can spin up on them quickly without asking the author; but scattered docs and deployment confusion make
this harder.
We’re making it hard to do a right thing.
* Barrier: how can someone get started with a service? make changes themselves and have confidence their changes won’t break anything?
35. Change goals
❖ Overall goal: Anyone can checkout a repo, run it, make
pull requests against it — without asking permission
❖ Prereqs: Docker, Docker Compose, jet, Quay account
❖ Documentation
❖ Follow through
❖ Ownership (?)
* Goal: Flatten barrier to entry, allow people to focus on the actual hard stuff
* Quay account: not wired to SSO :-( — only available in self-hosted version, ugh
* Documentation: Started in Github Enterprise (yay markdown) but will probably move to Confluence
* Tangent: This is a separate tooling issue that’s really hard to solve. Everyone has different needs and nobody will be happy. Keep dev docs in GHE? You’re
artificially limiting their scope. Keep all docs in Confluence? Until recently required VPN access (now on SaaS) and all standard problems of wikis.
* Follow through: my impressions are that previous build-and-release efforts got put out too early before they were fully baked, and because the org didn’t treat it as a
first-class thing the authors went back to their “real” jobs before the task was complete, so users were stuck with tools that *mostly* worked.
* Long-term ownership of tools is another really hard problem, my opinion is that things that are valued get resources. So if the org values it you’ll get folks dedicated to
it at least PT.
36. Change mechanics: systems
❖ Create new (another!) Jenkins instance, this one running
on Kubernetes
❖ New jobs are pods, pod autoscaling FTW
❖ Change deployment from running kubectl/helm
commands to generating messages
❖ App generates deployment message to queue
❖ Service reads messages from queue and processes
37. Change mechanics: repos
❖ Move Kubernetes charts into repo, with global config
and per-environment overrides
❖ Move secrets into repo using git-crypt
❖ Create Docker-centric workflow using Codeship tools,
all files in repo
❖ Add Jenkinsfile (declarative pipeline) to repo
❖ Set examples for documentation in-repo
* Kubernetes charts: Helm charts describing resource use, environment variables, pull secrets, etc
* git-crypt: store files as encrypted in git, be able to decrypt if you have the key
* Jenkins has the key as a credential
* Security folks like because you can limit the people who need the key
* Codeship tools boiled down into jet, a Go binary that uses a docker-compose-like workflow to declare and run containers
* Allows you to spin up dependencies (postgres, redis, cassandra, mail servers, etc)
* Can run locally JUST LIKE Jenkins (yay docker)
* Jenkins instance spins up new pods for jobs, does not rely on installing the “correct” versions of supporting software (Java, Python, node, Selenium, etc.) on worker
nodes
38. Building it out
❖ “Docker-centric” workflow is crucial
❖ Represent common tools as containers, SUPER RE-USE
❖ Small tools encourage sharing and contribution
❖ Automatic version bumping
❖ Deployment message generation
❖ Library publishing to private repo (Java, Python)
39. Find your early adopters
❖ Familiar with what you’re doing
❖ Willing to go through some pain
❖ Talk and listen, talk and listen
❖ Source of ideas
❖ KEEP THEM HAPPY
❖ You need help to change culture
* Working with Marco on all these tools, very willing to experiment
* …but he’s also got to do his job: MAKE IT EASY TO DO A RIGHT THING
* just because you’re super responsive to suggestions (AND YOU SHOULD BE) doesn’t mean you have to be a pushover
* Talk and listen: importance of Out of Box Experience emphasized in visit to other office with some early adopters “It would be great if you had a set of files you could
get started with”, next day we had a bootstrapping project that templated out the most common things for different languages. HUGE HIT.
MAKE IT EASY TO DO A RIGHT THING
40. Progress
❖ Start slow and work out the kinks
❖ First impressions are important, that README needs to
be awesome.
❖ …just like open source
❖ More and more teams coming onboard
❖ My heart swells when I get a question from someone
who I didn’t even know was working on it
41. Deployment feedback
❖ Deployment is No Big Deal
❖ Teams are definitely deploying more
❖ Exposing weirdness in testing (in-memory DBs 😡)
❖ Easier to create new services… less chunky services (?)
❖ More in control… more invested in process (?)
42. What even is a “sprint”?
❖ If we can deploy anytime we want?
❖ …why do we need sprints anymore?
43. So how’s it going now?
❖ B+, maybe an A- on good days
❖ Still have bits here and there we need to consider
❖ Some pieces feel too opaque (more logging?)
❖ It’s still early but the Docker mindset hasn’t sunk in yet
❖ Resistance diminished by the carrots of automation
(deployment, versioning)
❖ Got others to tackle branch naming
44. Learnings
❖ These are doable things
❖ Put yourself in their shoes
❖ Make it easy to do a right thing
❖ Nobody cares about your tool… until it fails
❖ Big systems are hard to maintain and hand-off
❖ You should always look to put yourself out of a job
45. Other tools and levers
❖ DRY and effects of taking it to limit
❖ Default all docs/repos to viewable/writeable by
everyone within the company
❖ SSO
❖ Rotational work alongside support
❖ Easy standard code formatting (gofmt #)
❖ 100% reliable renaming
* These are all things you DO have day-to-day influence on (maybe with the exception of documentation defaults)
* The effects of these might not be immediate, but they will ripple
46. “Give me a lever long enough
and a fulcrum on which to place it,
and I shall move the world. ”
Be
The
Lever