Learn hints, tips and tricks from the Twitter Fabric development team, and the principles that guided their creation of this modular and powerful SDK.
Presentation delivered at DroidconNL, Amsterdam, Nov 2014
Thanks to Andrea Falcone and the Fabric team for content and materials. You can see a lightning version of this talk delivered at Twitter Flight here -> https://www.youtube.com/watch?v=3h7jQU1AOvw&index=2&list=PLFKjcMIU2WsjUiy7UcPiWNxktpin0WDgu
A Google dork query, sometimes just referred to as a dork, is a search string that uses advanced search operators to find information that is not readily available on a website. Google dorking, also known as Google hacking, can return information that is difficult to locate through simple search queries.
Learn hints, tips and tricks from the Twitter Fabric development team, and the principles that guided their creation of this modular and powerful SDK.
Presentation delivered at DroidconNL, Amsterdam, Nov 2014
Thanks to Andrea Falcone and the Fabric team for content and materials. You can see a lightning version of this talk delivered at Twitter Flight here -> https://www.youtube.com/watch?v=3h7jQU1AOvw&index=2&list=PLFKjcMIU2WsjUiy7UcPiWNxktpin0WDgu
A Google dork query, sometimes just referred to as a dork, is a search string that uses advanced search operators to find information that is not readily available on a website. Google dorking, also known as Google hacking, can return information that is difficult to locate through simple search queries.
Elasticsearch Query DSL - Not just for wizards...clintongormley
Â
The Elasticsearch Query DSL is a rich, flexible, powerful query language for full text and structured search, but with power comes complexity. Which of the 40 available queries should you use? What's a filter and when should you use it? How do you combine multiple filters, or multiple queries or queries with filters?
To most users, "relevance", and how it is affected by different queries, is a black box. Multi-field queries in particular can be difficult to get right if you don't understand how they work.
In this talk, I will explain the Query DSL from the ground up: how filters and queries use the inverted index to find matching documents, how the relevance score is calculated, how to combine the filter/query building blocks into complex statements. And finally, I will talk about the pitfalls of multi-field queries and how to avoid them.
Scaling real-time search and analytics with Elasticsearchclintongormley
Â
See the video here: https://www.youtube.com/watch?v=o6lSeNatVFM
A look at the elements required by Elasticsearch to turn a simple inverted index into an auto-clustering, horizontally scalable real time search and analytics engine. The talk will start from first principles, explaining how an inverted index works, how to make an inverted index suitable for real time search, how to scale that out, and how to add reliability and failover to the cluster.
Clinton Gormley â Elasticsearch Query DSL â Not just for wizardsâĻ- NoSQL matt...NoSQLmatters
Â
Clinton Gormley â Elasticsearch Query DSL â Not just for wizardsâĻ
The Elasticsearch Query DSL is a rich, flexible, powerful query language for full text and structured search, but with power comes complexity. Which of the 40 available queries should you use? What's a filter and when should you use it? How do you combine multiple filters, or multiple queries or queries with filters?To most users, "relevance", and how it is affected by different queries, is a black box. Multi-field queries in particular can be difficult to get right if you don't understand how they work. In this talk, I will explain the Query DSL from the ground up: how filters and queries use the inverted index to find matching documents, how the relevance score is calculated, how to combine the filter/query building blocks into complex statements. And finally, I will talk about the pitfalls of multi-field queries and how to avoid them.
Redefining technical SEO & how we should be thinking about it as an industry ...WeLoveSEO
Â
Itâs time to throw the traditional definition of technical SEO out the window. Why? Because technical SEO is so much bigger than just crawling, indexing, and rendering. Technical SEO is applicable to all areas of SEO, including content development and other creative functions. Join this session to learn how to integrate technical SEO into all areas of your SEO program.
Searching on Google is not about typing some keywords and getting results. Google search is a powerful tool which can be used to do much more than just search the web. You can use it to retrieve desired information, translate text, do math calculations or retrieve flight details. Read on for further details
Alexis max-Creating a bot experience as good as your user experience - Alexis...WeLoveSEO
Â
Creating a bot experience as good as your user experience: what does technical SEO look like in 2019?
Dans cette confÊrence en anglais et français, Alexis Sanders et Max Prin, Technical SEOs chez Merkle aux Etats Unis sâattaqueront aux sujets SEO les plus techniques.
DonnÊes structurÊes, budget de crawl, AMP : ils vous livreront les clÊs pour mettre une point une expÊrience robot aussi optimisÊe que celle des utilisateurs.
In this talk, I will walk through multiple tools/resources available to help you handle large datasets from log files to Google Analytics. These new techniques will empower you to find more valuable insights and help you avoid the annoyance of crashing Excel spreadsheets.
Our industry is abuzz with talk about Progressive Web Apps (PWAs) and with good reason: they are a great way to improve the experiences our users have on our sites, especially when it comes to performance. Using Service Workersâa key component of PWAsâwe can manage network requests and the cache to an incredibly granular degree. We can also totally abuse the privilege Service Workers grant us when it comes to writing files to disk.
In this session, Aaron Gustafson will discuss some of the potential pitfalls in implementing Service Workers, especially when it comes to managing heavy files like images and video. Heâll provide guidance on current best practices in cache management. And heâll offer a few simple recipes you can put to use right away to deliver amazing experiences for your users that respect their data usage and disk space.
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
Â
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website. In this session, Aaron Gustafson will discuss how smart markup choices can improve the overall usability and accessibility of your projects without disrupting your current workflow.
Elasticsearch Query DSL - Not just for wizards...clintongormley
Â
The Elasticsearch Query DSL is a rich, flexible, powerful query language for full text and structured search, but with power comes complexity. Which of the 40 available queries should you use? What's a filter and when should you use it? How do you combine multiple filters, or multiple queries or queries with filters?
To most users, "relevance", and how it is affected by different queries, is a black box. Multi-field queries in particular can be difficult to get right if you don't understand how they work.
In this talk, I will explain the Query DSL from the ground up: how filters and queries use the inverted index to find matching documents, how the relevance score is calculated, how to combine the filter/query building blocks into complex statements. And finally, I will talk about the pitfalls of multi-field queries and how to avoid them.
Scaling real-time search and analytics with Elasticsearchclintongormley
Â
See the video here: https://www.youtube.com/watch?v=o6lSeNatVFM
A look at the elements required by Elasticsearch to turn a simple inverted index into an auto-clustering, horizontally scalable real time search and analytics engine. The talk will start from first principles, explaining how an inverted index works, how to make an inverted index suitable for real time search, how to scale that out, and how to add reliability and failover to the cluster.
Clinton Gormley â Elasticsearch Query DSL â Not just for wizardsâĻ- NoSQL matt...NoSQLmatters
Â
Clinton Gormley â Elasticsearch Query DSL â Not just for wizardsâĻ
The Elasticsearch Query DSL is a rich, flexible, powerful query language for full text and structured search, but with power comes complexity. Which of the 40 available queries should you use? What's a filter and when should you use it? How do you combine multiple filters, or multiple queries or queries with filters?To most users, "relevance", and how it is affected by different queries, is a black box. Multi-field queries in particular can be difficult to get right if you don't understand how they work. In this talk, I will explain the Query DSL from the ground up: how filters and queries use the inverted index to find matching documents, how the relevance score is calculated, how to combine the filter/query building blocks into complex statements. And finally, I will talk about the pitfalls of multi-field queries and how to avoid them.
Redefining technical SEO & how we should be thinking about it as an industry ...WeLoveSEO
Â
Itâs time to throw the traditional definition of technical SEO out the window. Why? Because technical SEO is so much bigger than just crawling, indexing, and rendering. Technical SEO is applicable to all areas of SEO, including content development and other creative functions. Join this session to learn how to integrate technical SEO into all areas of your SEO program.
Searching on Google is not about typing some keywords and getting results. Google search is a powerful tool which can be used to do much more than just search the web. You can use it to retrieve desired information, translate text, do math calculations or retrieve flight details. Read on for further details
Alexis max-Creating a bot experience as good as your user experience - Alexis...WeLoveSEO
Â
Creating a bot experience as good as your user experience: what does technical SEO look like in 2019?
Dans cette confÊrence en anglais et français, Alexis Sanders et Max Prin, Technical SEOs chez Merkle aux Etats Unis sâattaqueront aux sujets SEO les plus techniques.
DonnÊes structurÊes, budget de crawl, AMP : ils vous livreront les clÊs pour mettre une point une expÊrience robot aussi optimisÊe que celle des utilisateurs.
In this talk, I will walk through multiple tools/resources available to help you handle large datasets from log files to Google Analytics. These new techniques will empower you to find more valuable insights and help you avoid the annoyance of crashing Excel spreadsheets.
Our industry is abuzz with talk about Progressive Web Apps (PWAs) and with good reason: they are a great way to improve the experiences our users have on our sites, especially when it comes to performance. Using Service Workersâa key component of PWAsâwe can manage network requests and the cache to an incredibly granular degree. We can also totally abuse the privilege Service Workers grant us when it comes to writing files to disk.
In this session, Aaron Gustafson will discuss some of the potential pitfalls in implementing Service Workers, especially when it comes to managing heavy files like images and video. Heâll provide guidance on current best practices in cache management. And heâll offer a few simple recipes you can put to use right away to deliver amazing experiences for your users that respect their data usage and disk space.
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
Â
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website. In this session, Aaron Gustafson will discuss how smart markup choices can improve the overall usability and accessibility of your projects without disrupting your current workflow.
Interactive Visualization With Bokeh (SF Python Meetup)Peter Wang
Â
Bokeh is an interactive web visualization framework for Python, in the spirit of D3 but designed for non-Javascript programmers, and architected to be driven by server-side data and object model changes. Learn more about it and play with online demos at http://bokeh.pydata.org.
These slides are from a talk at San Francisco Python Meetup on September 10, 2014
Designing the Conversation [Concatenate 2018]Aaron Gustafson
Â
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
Â
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website. In this session, Aaron Gustafson will discuss how smart markup choices can improve the overall usability and accessibility of your projects without disrupting your current workflow.
SMX West 2020 - Leveraging Structured Data for Maximum EffectAbby Hamilton
Â
After this session, you will be able to:
1. Understand how search engines render and see your content and extract structured data to power rich experiences
2. Discover tools and resources that can help you to easily generate and test structured markup
3. Increase the likelihood of you content displaying as rich-results, which have been found to increase click-through rate
4. Fully realize the role semantic markup plays in determining the searcher experience and what types of schema you should use for best results
Christy Robinson is the digital coordinator at public media station KERA in North Texas. Before that, she worked in digital for Computer Task Group and The Dallas Morning News. Robinson specializes in growing audiences, improving user experience, communicating analytics, coaching colleagues, organic and paid social media strategy, web copy writing and editing, testing and conversion and SEO. @christyrobinson
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...Mario Heiderich
Â
The clipboard is one of the most commonly used tools across operating systems, window managers and devices. Pressing Ctrl-C and Ctrl-V has become so fundamentally important to productivity and usability that we cannot get rid of it anymore. We happily and often thoughtlessly copy things from one source and paste them into another. URLs into address-bars, lengthy commands into console windows, text segments into web editors and mail interfaces. And we never worry about security when doing so. Because what could possibly go wrong, right?
But have we ever asked ourselves what the clipboard content actually consists of? Do we really know what it contains? And are we aware of the consequences a thoughtless copy&paste interaction can have? Who else can control the contents of the clipboard? Is it really just us doing Ctrl-C or is there other forces in the realm who are able to infect what we believe to be clean, who can desecrate what we trust so blindly that we never question or observe it?
This talk is about the clipboard and the technical details behind it. How it works, what it really contains â and who can influence its complex range of contents. We will learn about a new breed of targeted attacks, including cross-application XSS from PDF, ODT, DOC and XPS that allow to steal website accounts faster than you can click, turn your excel sheet into a monster and learn about ways to smuggle creepy payload that is hidden from sight until it executes. Oh, and weâll also see what can be done about that and what defensive measures we achieved to create so far.
Capybaras are the largest rodents in the world. They are related to guinea pigs, but are the size of a big dog or small pig. They live in South America, and they're pretty damn cute.
Capybara is also the name of a Ruby gem written by Jonas Nicklas. It helps you write integration tests for web apps by pretending to be a user with a web browser. It takes a black box approach to testing, letting you go to URLs, click links and buttons, fill in forms, and check that the rendered page contains what you think it should have in it.
This talk is about Embracing Capybara: how to understand Capybara, train it to do new tricks, and discipline it when it misbehaves.
As described in the April NISO/DCMI webinar by Dan Brickley, schema.org is a search-engine initiative aimed at helping webmasters use structured data markup to improve the discovery and display of search results. Drupal 7 makes it easy to markup HTML pages with schema.org terms, allowing users to quickly build websites with structured data that can be understood by Google and displayed as Rich Snippets.
Improved search results are only part of the story, however. Data-bearing documents become machine-processable once you find them. The subject matter, important facts, calendar events, authorship, licensing, and whatever else you might like to share become there for the taking. Sales reports, RSS feeds, industry analysis, maps, diagrams and process artifacts can now connect back to other data sets to provide linkage to context and related content. The key to this is the adoption standards for both the data model (RDF) and the means of weaving it into documents (RDFa). Drupal 7 has become the leading content platform to adopt these standards.
This webinar will describe how RDFa and Drupal 7 can improve how organizations publish information and data on the Web for both internal and external consumption. It will discuss what is required to use these features and how they impact publication workflow. The talk will focus on high-level and accessible demonstrations of what is possible. Technical people should learn how to proceed while non-technical people will learn what is possible.
AWS re:Invent 2016: State of the Union: Amazon Alexa and Recent Advances in C...Amazon Web Services
Â
The way humans interact with machines is at a turning point, and conversational artificial intelligence (AI) is at the center of the transformation. Learn how Amazon is using machine learning and cloud computing to fuel innovation in AI, making Amazon Alexa smarter every day. Alexa VP and Head Scientist Rohit Prasad presents the state of the union Alexa and Recent Advances in Conversational AIn for Alexa. He addresses Alexa's advances in spoken language understanding and machine learning, and shares Amazon's thoughts about building the next generation of user experiences.
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs - Front in Bahia...Ãcaro Medeiros
Â
In my talk I walk throgh Semantic Web initiatives, like RDF and SPARQL, linked data principles, discuss some implementation and adoption issues and talk about semantic annotation in HTML. Semantic annotation using the Schema.org vocabulary is demonstrated using both HTML 5 Microdata or JSON-LD input. There is a strong highlight in benefits seen in Google search results with Rich Snippets, Actions in Email, and Google Now with real examples.
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
Â
Early on, Internet access was considered a luxury. Those times have passed and the Internet, especially the Web, has become a necessity. Whether your users are trying to access their money, gather health information, attend class, apply for assistance, or any of the other hundreds (if not thousands) of critical tasks people do on the web, your site needs to be prepared to meet their needs. And it needs to work, no matter what.
In this session, I discuss the many challenges to delivering critical information and services as well as the steps you can take to overcome those challenges. Heâll explore ways to make sure you can meet users on a variety of devicesâand not the just the latest and greatest high end ones folks are talking about; how to make it accessible to people with disabilities; and how to loadâand load quicklyâon limited- bandwidth connections.
For the last three years, our industry has been coming to terms with Progressive Web Apps (PWAs) and what they mean for the work we do every day. Scores of articles, reams of documentation, and dozens of white papers touting the successes and failures in this space can really get your head spinning. Itâs easy to get lost in the complexities of service workers, manifests, and oh so many JavaScript frameworks and toolkits. Aaron believes itâs time to take a step back and refocus our attention on what really matters: building great web experiences. In this session, youâll learn how to apply modern web design and development best practices to your web projects. Youâll learn how to grow a project from a core, universally-accessible experience to a sophisticated Progressive Web App that ensures users will be able to access your product, no matter what.
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
Â
After enjoying more than a decade of relative stability in designing for the 'desktop' web, smartphones had to come along and throw a wrench in the works. It seemed that in an instant, everything changed and nothing was certain any more. The truth is, though, nothing was ever certain.
One of the webâs major strengths is its ability to adapt, to travel anywhere and everywhere in service of its users. All those years we were the ones restraining it with our desire to create a single monolithic experience. But experience is not monolithic. Every person is different, and we all bring our unique perspectives, experiences, and capabilities to the table. A one-size-fits-all approach rarely fits anyone well. When we embrace that, our designs, products, and experiences will be all the better for it.
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, writing more appropriate copy, and (of course) building accessible experience. But experience is about more than just interface. Our usersâ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. Youâll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
Â
In this session, you'll learn how to apply modern best practices to grow your Progressive Web Apps fluidly from mobile devices all the way to large screen desktop environments. Youâll even learn how to lay the groundwork for reaching users of future form factors and âheadlessâ UIs. We'll focus on design patterns that set you up for success on every device and across platforms and guarantee your users will be able to access your product, no matter what. Additional topics will include a primer on how your PWA can integrate more tightly with Windows 10âincluding how to distribute your PWA via the Storeâand how to incorporate accessibility from the very beginning.
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
Â
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our usersâ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. Youâll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
We, as an industry, tend to have a pretty myopic view of experience. Those of us who work day-to-day in accessibility probably have a broader perspective than most, but I would argue that even we all fall short now and again when it comes to seeing the Web as others do.
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
Â
Aaron Gustafson
Author, Adaptive Web Design
Performance as User Experience
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our usersâ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. Youâll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
Â
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our usersâ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. Youâll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
Over time, your users will become more accustomed to and interacting with their computers on the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
So how do you design a "headless" UI? That's easy: You design the conversation.
Conversation is at the root of every interaction we have, be it with another human being, a game, or with a website. This session will discuss how to design and implement a web application that will allow you to create a web page that will allow you to create HTML documents.
After enjoying more than a decade of relative stability in designing for the 'desktop' web, smartphones had to come along and throw a wrench in the works. It seemed that in an instant, everything changed and nothing was certain any more. The truth is, though, nothing was ever certain.
One of the webâs major strengths is its ability to adapt, to travel anywhere and everywhere in service of its users. All those years we were the ones restraining it with our desire to create a single monolithic experience. But experience is not monolithic. Every person is different and we all bring our unique perspectives, experiences, and capabilities to the table. A one-size-fits-all approach rarely fits anyone well. When we embrace that, our designs, products, and experiences will be all the better for it.
In this talk, Aaron will discuss and dissect several adaptive interfaces and demonstrate how they smartly morph to meet their usersâ needs â slow connections, older browsers, narrow screens, and even no screens at all. Heâll also introduce you to a battle-tested tool for planning, discussing, building and testing adaptive interfaces.
Progressive Web Apps and the Windows Ecosystem [Build 2017]Aaron Gustafson
Â
Whether at home or at work, the web plays an increasingly critical role in our daily lives. As we have become more dependent on accessing the tools it powers, weâve also struggled to overcome some of its limitationsânetwork connectivity, for instance. At Microsoft, weâve long been interested in the power of the web for software development and we are even more excited for the future possibilities offered by progressive web apps (PWAs). In this session, we discuss what PWAs are, how they can be integrated into the development process of modern websites, the advantages and disadvantages of PWAs vs. native development, and what opportunities they present when installed alongside native apps in Windows.
Designing the Conversation [SmashingConf 2016]Aaron Gustafson
Â
Users are gradually becoming more accustomed to and reliant on voice-based interactions, so enabling users to complete critical tasks without a visual user interface is crucial for the long-term success of websites. This session shows how designing such a âheadlessâ user interface is equivalent to designing the conversation you want to have with your users. Learn how to ensure that the technological decisions you make with respect to HTML, CSS, and JavaScript respect and support that conversation.
The Features of Highly Effective Forms [SmashingConf NYC 2016]Aaron Gustafson
Â
Web forms are complex beasts with many moving parts. Thatâs one of the reasons they're so challenging to build well. In this session, Aaron Gustafson will walk you through the process of creating a formâfrom planning to productionâand give you sage advice for improvement. Youâll learn ways to keep forms focused, how to leverage HTML5 for better user interaction, and a variety of design techniques to enhance formsâ usability. Whether you have one form or a thousand, youâll leave this session with a much better handle on how to take them from distressing to delightful!
Users are gradually becoming more accustomed to and reliant on voice-based interactions, so enabling users to complete critical tasks without a visual user interface is crucial for the long-term success of websites. This session shows how designing such a âheadlessâ user interface is equivalent to designing the conversation you want to have with your users. Learn how to ensure that the technological decisions you make with respect to HTML, CSS, and JavaScript respect and support that conversation.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
Â
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more âmechanicalâ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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.
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.
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.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
Â
As AI technology is pushing into IT I was wondering myself, as an âinfrastructure container kubernetes guyâ, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefitâs both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
Â
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
âĸ The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
âĸ Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
âĸ Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
âĸ Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Â
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
Â
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Â
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Â
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Dev Dives: Train smarter, not harder â active learning and UiPath LLMs for do...UiPathCommunity
Â
đĨ Speed, accuracy, and scaling â discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Miningâĸ:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing â with little to no training required
Get an exclusive demo of the new family of UiPath LLMs â GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
đ¨âđĢ Andras Palfi, Senior Product Manager, UiPath
đŠâđĢ Lenka Dulovicova, Product Program Manager, UiPath
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Â
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overviewâ
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
2. @AaronGustafson
Follow along
āš Slides: https://aka.ms/btconf-pwa-slides
āš Work files: https://aka.ms/btconf-pwa-code
āš Final Demo: https://aka.ms/btconf-pwa-live
30. @AaronGustafson
HTTPS is simple (& free) now
āš Many hosts include it
āš GitHub
āš Netlify
āš AWS
āš etc.
āš LetsEnrcypt & Certbot for everything else
https://letsencrypt.org/
45. @AaronGustafson
Letâs make a manifest!
āš Open a new text document in your site
and name it manifest.json
āš Create a basic JSON object inside, including the
following Manifest members:
1. lang,
2. name,
3. short_name, and
4. description.
46. @AaronGustafson
Yours should look like this
{
"lang": "en-US",
"name": "Aaron Gustafson",
"short_name": "AaronG",
"description": "The online home and work of Aaron Gustafson."
}
47. @AaronGustafson
Letâs prep for installâĻ
{
"lang": "en-US",
"name": "Aaron Gustafson",
"short_name": "AaronG",
"description": "The online home and work of Aaron Gustafson."
}
83. @AaronGustafson
Letâs make a Service Worker!
āš Create a new file for your service worker
āš Register the Service Worker
navigator.serviceWorker.register( path )
āš Log to the console from the following events:
āš install
āš activate
93. @AaronGustafson
Letâs preload assets
āš Leverage the install event to pre-load some assets
āš Load your page in a browser and see that the assets
are loaded
āš Bump your version number and reload the page
āš What happened?
94. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
95. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
96. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
97. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
98. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
99. @AaronGustafson
We need to clean up
const VERSION = "v1";
// install event
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
});
101. @AaronGustafson
Use the new SW immediately
const VERSION = "v1";
self.addEventListener( "install", function( event ){
event.waitUntil(
caches.open( VERSION ).then(function(cache) {
return cache.addAll([
"/css/main.css",
"/js/main.js"
]);
})
);
self.skipWaiting();
});
102. @AaronGustafson
Take over any active clients
self.addEventListener( "activate", event => {
// clean up stale caches
event.waitUntil(
caches.keys()
.then( keys => {
return Promise.all(
keys.filter( key => {
return ! key.startsWith( VERSION );
})
.map( key => {
return caches.delete( key );
})
);
})
);
clients.claim();
});
103. @AaronGustafson
Look what happens
āš Add skipWaiting() to your install event
āš Look at the DevTools and observe how the state of
the Service Worker changes with and without this
line of code.
āš What happened?
āš Open your site in two tabs and add clients.claim() to
your activate event
āš Look at the DevTools in each.
āš What happened?
111. @AaronGustafson
Letâs try it out
āš Add a fetch event handler
āš Load your page in a browser
āš What happened?
āš Instead of a string, log event.request.url
āš Load your page in a browser
āš What do you see?
112. @AaronGustafson
We can issue our own fetch
self.addEventListener( "fetch", function( event ){
event.respondWith(
fetch( event.request )
);
});
113. @AaronGustafson
We can issue our own fetch
self.addEventListener( "fetch", function( event ){
event.respondWith(
fetch( event.request )
);
});
116. @AaronGustafson
What if the request fails?
self.addEventListener( "install", function( event ){
event.waitUntil(
caches.open("v1").then(function(cache) {
return cache.addAll([
"/css/main.css",
"/js/main.js",
OFFLINE_PAGE
]);
})
);
});
117. @AaronGustafson
What if the request fails?
self.addEventListener( "fetch", function( event ){
if ( event.request.mode === "navigate" ) {
event.respondWith(
fetch(event.request)
.catch(error => {
console.log( "Fetch failed; returning offline page." );
return caches.match( OFFLINE_PAGE );
})
);
}
});
118. @AaronGustafson
What if the request fails?
self.addEventListener( "fetch", function( event ){
if ( event.request.mode === "navigate" ) {
event.respondWith(
fetch(event.request)
.catch(error => {
console.log( "Fetch failed; returning offline page." );
return caches.match( OFFLINE_PAGE );
})
);
}
});
119. @AaronGustafson
What if the request fails?
self.addEventListener( "fetch", function( event ){
if ( event.request.mode === "navigate" ) {
event.respondWith(
fetch(event.request)
.catch(error => {
console.log( "Fetch failed; returning offline page." );
return caches.match( OFFLINE_PAGE );
})
);
}
});
120. @AaronGustafson
What if the request fails?
self.addEventListener( "fetch", function( event ){
if ( event.request.mode === "navigate" ) {
event.respondWith(
fetch(event.request)
.catch(error => {
console.log( "Fetch failed; returning offline page." );
return caches.match( OFFLINE_PAGE );
})
);
}
});
121. @AaronGustafson
Letâs try it out
āš Add an offline.html page
āš Pre-cache it during install
āš Remember to rev VERSION
āš Add a fetch handler for navigations, providing the
offline page as a fallback
āš Turn off the network (once you know the SW is
running) and see what happens
145. @AaronGustafson
Letâs make it a function
function cacheResponse( response ) {
event.waitUntil(
caches.open( VERSION ).then( cache => {
return cache.put( request, response );
})
);
return response.clone();
}
146. @AaronGustafson
Letâs make it a function
function cacheResponse( response, event ) {
event.waitUntil(
caches.open( VERSION ).then( cache => {
return cache.put( event.request, response );
})
);
return response.clone();
}
147. @AaronGustafson
And we can use it like this
return fetch( request )
.then( response => cacheResponse( response, event ) )
151. @AaronGustafson
Who will win?
document.addEventListener('DOMContentLoaded', function(event) {
var networkDone = false;
var networkRequest = fetch('weather.json').then(function(response) {
return response.json();
})
.then(function(json) {
networkDone = true;
updatePage(json);
});
caches.match('weather.json').then(function(response) {
if ( ! response) throw Error('No data');
return response.json();
})
.then(function(json) {
if (!networkDone) updatePage(json);
})
.catch(function() { return networkRequest; })
.catch(function() { console.log('We have nothing.'); })
.then(hideLoading);
});
https://git.io/v56s4
152. @AaronGustafson
Who will win?
document.addEventListener('DOMContentLoaded', function(event) {
var networkDone = false;
var networkRequest = fetch('weather.json').then(function(response) {
return response.json();
})
.then(function(json) {
networkDone = true;
updatePage(json);
});
caches.match('weather.json').then(function(response) {
if ( ! response) throw Error('No data');
return response.json();
})
.then(function(json) {
if (!networkDone) updatePage(json);
})
.catch(function() { return networkRequest; })
.catch(function() { console.log('We have nothing.'); })
.then(hideLoading);
});
https://git.io/v56s4
153. @AaronGustafson
Who will win?
document.addEventListener('DOMContentLoaded', function(event) {
var networkDone = false;
var networkRequest = fetch('weather.json').then(function(response) {
return response.json();
})
.then(function(json) {
networkDone = true;
updatePage(json);
});
caches.match('weather.json').then(function(response) {
if ( ! response) throw Error('No data');
return response.json();
})
.then(function(json) {
if (!networkDone) updatePage(json);
})
.catch(function() { return networkRequest; })
.catch(function() { console.log('We have nothing.'); })
.then(hideLoading);
});
https://git.io/v56s4
154. @AaronGustafson
Who will win?
document.addEventListener('DOMContentLoaded', function(event) {
var networkDone = false;
var networkRequest = fetch('weather.json').then(function(response) {
return response.json();
})
.then(function(json) {
networkDone = true;
updatePage(json);
});
caches.match('weather.json').then(function(response) {
if ( ! response) throw Error('No data');
return response.json();
})
.then(function(json) {
if (!networkDone) updatePage(json);
})
.catch(function() { return networkRequest; })
.catch(function() { console.log('We have nothing.'); })
.then(hideLoading);
});
https://git.io/v56s4
155. @AaronGustafson
Letâs discuss
āš In what scenarios would these different caching
strategies be most appropriate?
āš Are there other strategies youâd like to discuss?
āš Do you want to add these caching strategies to
your site now?
Hi there, my name is Aaron Gustafson
Pronouns he/him/his
WaSP
Microsoft - Web Standards & a11y
Thank you to Jeffrey & Eric for having me and to Toby, Marci, Mike and all of the staff that keep this conference running so smoothly.
Iâm sure many of you may be wondering: What exactly is a PWA? (apart from yet another acronym)
PWA stands for Progressive Web App. And, believe me, youâre not alone in asking this question.
Lots of very smart people are wrestling with it right now.
When it comes down to itâĻ
I think one of the things about the term progressive web app that trips folks up is the âweb appâ bit.
What is a web app anyway? Jeremy Keith likes to say âLike obscenity and brunch, web apps can be described but not defined.â
Whatâs important to realize, however is that any web project can (and probably should be) a progressive web app.
In fact, you might as well think of these as progressiveâĻ
Web sites.
PWAs have a lot of support from the browser world and at this point, most of the major capabilities of PWAsâwith some exceptions like Push on iOSâare available in all modern browsers.
As someone who builds websites, âPWAâ as a marketing term isnât terribly helpful. So letâs look at a what it takes to turn your site into a PWA.
It starts with making your site secure. Most of the APIs you will need access to are only available under SSL.
Next, youâll need to add a Web App Manifest to your site. This contains a lot of the âmetaâ information about your site that can be useful should a user choose to install it.
The final requirement for a MVPWA is a Service Worker. I am going to hold off on discussing Service Workers for a moment, but weâll circle back to them momentarily.
So thereâs a lot of hype around PWAs. Should you believe it?
Maybe? Probably. Here are a few tidbits you might find interesting.
There are a ton of success stories out there.
I higly recommend checking out PWA stats.com, from the folks at Cloud Four, for more.
In truthâĻ
The key word here is enhance
Combine enhance with the first word in PWAâprogressiveâand you arrive at the age old philosophy of
Progressive enhancement, which is really at the core of progressive web apps
So what does that actually look like? Letâs tuck into itâĻ
So weâve got a normal site that can become a PWA.
So back to our MVPWA. I mentioned that I would come back to Service Worker, so letâsâĻ
So back to our MVPWA. I mentioned that I would come back to Service Worker, so letâsâĻ
So back to our MVPWA. I mentioned that I would come back to Service Worker, so letâsâĻ
So back to our MVPWA. I mentioned that I would come back to Service Worker, so letâsâĻ
Everything is optional, butâĻ
First off, you can define the language. If you have a multi-lingual app, you might consider providing multiple manifests tailored to each as there isâas of yetâno way of managing translations within the manifest.
If you want, you can define a writing direction like âltrâ for left to right or ârtlâ for right to left, but you could alsoâĻ
Set it to optional, which is the default.
In which case, you donât really need it.
Name is the preferred name for the app. Short name enables you to define a specific short option just in case the host operating system doesnât support as many characters as you need for your appâs name. Better to not leave it to chance.
Description says what the site or app does.
Weâll come back this this more in a moment.
The next step is to connect this file to your site via HTML, using the link tag
The relationship of the linked document is âmanifestâ
And the href should point to your JSON file.
Itâs worth notingâĻ
5-7 min
This is the page that should open when your app is launched after install
This is the page that should open when your app is launched after install
There are a few modes available hereâĻ
This can be overridden via JS as well using the Screen Orientation API
You can see the title bar is colored
Here the background is applied to the splash screenâĻ
But what about this icon?
Three different options
The src is the location of your source file (can be relative to the manifest URL)
Any image format is possible, though SVG is not well supported (yet)
MIME declaration for the image to enable browser to select based on support
Space-separated list of dimensions (width x height) supported by the image. ICO files can have multiple, otherwise it should be the natural dimensions.
5-7 min
So weâve got a normal site that can become a PWA.
Or to break it down further
5-7 min
5-7 min
So back to our MVPWA. I mentioned that I would come back to Service Worker, so letâsâĻ
Focus on that.
A special kind of web worker (it runs in itâs own thread)
Concerned with reducing network dependence
Your own personal âman in the middleâ
In order to take advantage of this, you need to register a service worker in the browser.
First test for the feature
Then register the worker by pointing at the Service Worker JavaScript file youâve created.
The path is very important. If you want to run your service worker for the whole site, it must be in the root directory, NOT your javascript subdirectory. If it is in a subdirectory, it can only run against requests for assets in that subdirectory or deeper.
The registration returns a Promise, so you can act on it.
The great thing about this is that itâs an enhancement. The site will work fine without Service Worker as well, but it works better with it.
A Service Worker has a lifecycle. There is a lot of nuance to it, but hereâs the Cliffâs Notes versionâĻ
The Service Worker is registered with the browser. Then it goes through the install process. You can use this opportunity to pre-cache some assets if you like.
Once installed, itâs activated. This is generally a good time to clean up any old caches.
Then itâs ready to use, but it will not actually do anything until the next page is loaded.
Iâm going to quickly go through some examples of how Service Workers can operate, but itâs important to remember you are in total control of their behavior.
5-7 min
Install is a great time to download key resources & add them to the cache
5-7 min
Here Iâm actually using ES6 syntax with the fat arrow function. ES6 is allowable in Service Worker because all Service Worker-supporting browsers also support the more modern JavaScript syntax
5-7 min
Normally an installed ServiceWorker will wait until the next page load to activate. This skips the waiting.
And this allows you to claim any open clients (windows, tabs, etc.) and apply the service worker to them.
5-7 min
5-7 min
In a traditional networking scenarioâĻ
When a Service Worker is in play, it sits between the browser and the network.
It also has programmatic access to a local cache.
It can intercept network requests from the browser and respond with items in the cache without ever going out to the network. Say, for instance, requests for CSS and JavaScript files you pre-cached during install
You could also set up rules to tell the SW to go to the cache first, but fall back to the network if a cached copy of the resource is not available. Then you can keep a copy for next time too.
Caching is key to improved performance and good offline experiences, which are the hallmark of a PWA.
5-7 min
But thatâs not terribly interesting
But thatâs not terribly interesting
Navigation only
This you saw before.
But now we catch errors and respond from the cache
5-7 min
Different approaches for different needs
We just looked at thisâĻ what if we want to try the network and fall back to a cached version of the page?
Iâm going to make the code a little easier to read by extracting two useful pieces of data, the request and itâs URL
So thisâĻ
Becomes this
Then, before we can actually respond from the cache, we need to add HTML to the cache
First, we insert a then() block, which gets the response object
And cache it, using the request as a key
And then we return the response
Now we can focus on the catch() block
Now we can focus on the catch() block
Now we can focus on the catch() block
Now we can focus on the catch() block
Now we can focus on the catch() block
Now we can focus on the catch() block
Different approaches for different needs
Technically, this is an elseâĻif
First we check for a cached result and we send it if we have it
Questions?
Questions?
Questions?
Questions?
Questions?
Now we can focus on the catch() block
Questions?
Different approaches for different needs
Questions?
Questions?
Questions?
Questions?
Cache first with a server refresh in the background (for next time), falling back to the network, then offline
New conditional for images
Respond with cache match first
If all is well
Otherwise, we need a fallback
Incidentally, we can use this same approach as a fallback for a fail state.
Adding two new constants
And a new function to generate an svg response
This
Becomes this, passing in the appropriate SVG
Service workers even have their own levels of enhancement
CLICK
And more will come with time, like background sync.