The document describes code for implementing location tracking services in Android. It discusses using a HandlerThread and Handler to perform background location tracking on a recurring schedule. The code samples show setting up the HandlerThread, creating Handler subclasses to request location updates and send network requests, and scheduling the service to run every 5 minutes using JobScheduler. The smart service implementation reduces the number of location updates by using JobScheduler to run on a schedule and broadcasts to trigger the network handler.
A Series of Fortunate Events - PHP Benelux Conference 2015Matthias Noback
What is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we start with a straightforward command-only piece of code. We extract events from it and start moving the event handling code out, trying different design patterns on the way. First we try Observer. Then we introduce event data, event handlers and a Mediator between our code and the event handlers. Finally we pick a well-known event dispatcher implementation (the Symfony EventDispatcher) and see how it uses the Chain of Responsibility design pattern to control the entire flow of a web application request.
In the end I will answer some burning questions like: is it safe to use events all over the place and rely on event handlers to do some really important stuff? How do I overcome the indirection in my event-driven code? And how can I quickly find out what happens where?
By now, you’ve probably heard of Akka, the JVM toolkit for building scalable, resilient and resource efficient applications in Java or Scala. With over 12 open-source and commercial modules in the toolkit, Akka takes developers from actors on a single JVM, all the way out to network partition healing and clusters of servers distributed across fleets of JVMs.
In this technical webinar, O’Reilly author and Lightbend Developer Advocate, Hugh McKee, takes you on a deep dive into advanced Akka features for enhanced application resilience, elasticity, and responsiveness.
Building on real-world examples from his past experience as an Akka developer, Hugh will show how you can take advantage of:
• Akka Multi-Data Center Clustering improves reliability across multiple data centers, availability zones or regions.
• Logically grouping related nodes in large clusters to improve stability and scalability.
• Akka Multi-Data Center Persistence for increased fault tolerance, locate data near the user, and balance the load across data centers.
• Akka Cluster Sharding in a multi data center environment, to optimize shard locality within a single data center and go Active-Active for improved resilience and availability.
How to Build Your Own Ridesharing App (droidcon NYC 2018)HERE Technologies
When was the last time you were truly lost? Thanks to the maps and location technology in our smartphones, a whole generation has now grown up in a world where getting lost is truly a thing of the past.
Location technology goes far beyond maps in the palm of our hand, however. Today it is at the heart of a broad range of applications, from logistics to games, from social networks to ridesharing.
In this talk, we will explore how a ridesharing app works. We will ask questions such as: How do we find out where the passenger is located? How do we discover our destination? How do we find the closest driver? How do we provide a correct ETA to the passenger in heavy traffic? How do we display this information on a map? How do we find the best route to the destination?
To answer these questions, we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding, Routing, Traffic, Places, and much more.
At the end you should be able to build your own ridesharing app or any clever app for which location matters.
How to Build Your Own Ridesharing App (droidcon NYC 2018)Richard Süselbeck
When was the last time you were truly lost? Thanks to the maps and location technology in our smartphones, a whole generation has now grown up in a world where getting lost is truly a thing of the past.
Location technology goes far beyond maps in the palm of our hand, however. Today it is at the heart of a broad range of applications, from logistics to games, from social networks to ridesharing.
In this talk, we will explore how a ridesharing app works. We will ask questions such as: How do we find out where the passenger is located? How do we discover our destination? How do we find the closest driver? How do we provide a correct ETA to the passenger in heavy traffic? How do we display this information on a map? How do we find the best route to the destination?
To answer these questions, we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding, Routing, Traffic, Places, and much more.
At the end you should be able to build your own ridesharing app or any clever app for which location matters.
A Series of Fortunate Events - PHP Benelux Conference 2015Matthias Noback
What is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we start with a straightforward command-only piece of code. We extract events from it and start moving the event handling code out, trying different design patterns on the way. First we try Observer. Then we introduce event data, event handlers and a Mediator between our code and the event handlers. Finally we pick a well-known event dispatcher implementation (the Symfony EventDispatcher) and see how it uses the Chain of Responsibility design pattern to control the entire flow of a web application request.
In the end I will answer some burning questions like: is it safe to use events all over the place and rely on event handlers to do some really important stuff? How do I overcome the indirection in my event-driven code? And how can I quickly find out what happens where?
By now, you’ve probably heard of Akka, the JVM toolkit for building scalable, resilient and resource efficient applications in Java or Scala. With over 12 open-source and commercial modules in the toolkit, Akka takes developers from actors on a single JVM, all the way out to network partition healing and clusters of servers distributed across fleets of JVMs.
In this technical webinar, O’Reilly author and Lightbend Developer Advocate, Hugh McKee, takes you on a deep dive into advanced Akka features for enhanced application resilience, elasticity, and responsiveness.
Building on real-world examples from his past experience as an Akka developer, Hugh will show how you can take advantage of:
• Akka Multi-Data Center Clustering improves reliability across multiple data centers, availability zones or regions.
• Logically grouping related nodes in large clusters to improve stability and scalability.
• Akka Multi-Data Center Persistence for increased fault tolerance, locate data near the user, and balance the load across data centers.
• Akka Cluster Sharding in a multi data center environment, to optimize shard locality within a single data center and go Active-Active for improved resilience and availability.
How to Build Your Own Ridesharing App (droidcon NYC 2018)HERE Technologies
When was the last time you were truly lost? Thanks to the maps and location technology in our smartphones, a whole generation has now grown up in a world where getting lost is truly a thing of the past.
Location technology goes far beyond maps in the palm of our hand, however. Today it is at the heart of a broad range of applications, from logistics to games, from social networks to ridesharing.
In this talk, we will explore how a ridesharing app works. We will ask questions such as: How do we find out where the passenger is located? How do we discover our destination? How do we find the closest driver? How do we provide a correct ETA to the passenger in heavy traffic? How do we display this information on a map? How do we find the best route to the destination?
To answer these questions, we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding, Routing, Traffic, Places, and much more.
At the end you should be able to build your own ridesharing app or any clever app for which location matters.
How to Build Your Own Ridesharing App (droidcon NYC 2018)Richard Süselbeck
When was the last time you were truly lost? Thanks to the maps and location technology in our smartphones, a whole generation has now grown up in a world where getting lost is truly a thing of the past.
Location technology goes far beyond maps in the palm of our hand, however. Today it is at the heart of a broad range of applications, from logistics to games, from social networks to ridesharing.
In this talk, we will explore how a ridesharing app works. We will ask questions such as: How do we find out where the passenger is located? How do we discover our destination? How do we find the closest driver? How do we provide a correct ETA to the passenger in heavy traffic? How do we display this information on a map? How do we find the best route to the destination?
To answer these questions, we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding, Routing, Traffic, Places, and much more.
At the end you should be able to build your own ridesharing app or any clever app for which location matters.
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding etc.
How to Build Your Own Ride-Share App - codemotion amsterdam 2019Richard Süselbeck
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding and more.
A Series of Fortunate Events - Drupalcon Europe, Amsterdam 2014Matthias Noback
Events are the new hooks. But what is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we take a look at how events are essential to processing a Request and producing a Response. We take a look at the Symfony EventDispatcher and related classes that you need when you want to hook into this process. When you know all about the event system and how you can implement your own events, we discuss some situations which may or may not be good use cases for events. You will learn to decide if using events is the right solution for your problem.
Solid principles in practice the clean architecture - Droidcon ItalyFabio Collini
The Clean Architecture has been formalized by Robert C. Martin in 2012, it's quite new even if it's based on the SOLID principles (presented for the first time in early 2000). The biggest benefit that we get using this architecture is the code testability, indeed it separates the application code from the code connected to external factor (that usually is more difficult to test).
In this talk we'll see a practical example of how to apply the SOLID principle, in particular, the dependency inversion.
Migrating from Flux to Redux. Why and how.Astrails
When I started to work with React back in Apr-2015 there were many libraries to manage the application flow. I decided to start with classical FB's Flux implementation to understand what's missed there. Eventually react-redux and redux solved most of issues I had with Flux. This talk is about practical aspects of migration from Flux to Redux.
A Series of Fortunate Events - Symfony Camp Sweden 2014Matthias Noback
What is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we start with a straightforward command-only piece of code. We extract events from it and start moving the event handling code out, trying different design patterns on the way. First we try Observer. Then we introduce event data, event handlers and a Mediator between our code and the event handlers. Finally we pick a well-known event dispatcher implementation (the Symfony EventDispatcher) and see how it uses the Chain of Responsibility design pattern to control the entire flow of a web application request.
In the end I will answer some burning questions like: is it safe to use events all over the place and rely on event handlers to do some really important stuff? How do I overcome the indirection in my event-driven code? And how can I quickly find out what happens where?
Proper distribution of functionalities throughout many machines is very hard, especially when we leave those decisions for later. Akka toolkit gives us many tools for scaling out and we can start using them very early in a development process, enhancing our chances of success. In this introductory talk, I want to go through a very simple example and show snippets of single-noded and sharded implementations.
Improving android experience for both users and developersPavel Lahoda
Android UI and User Experience has changed dramatically in the recent version(s) and while users generally enjoy the new features, there are still several areas that are left to application-level-DIY-patterns. For developers, this is double challenge, they want to provide users with the bleeding edge UI patterns and at the same time, they have to deal with evolving API, that sometimes changes dramatically.
Presentation covers the gotchas developer might face dealing with ever-moving Android API, and how to utilize Java language and the tools it have to make the experience for developer more pleasant. Typical trends in the API will get analyzed and divided into several areas or "patterns", discussing typical scenarios how these components are designed and implemented.
This talk will propose several such UI patterns, that will compete to become "de facto" standards and details on the implementation, including possible impact on existing API as we have both end users and developers in mind.
The list of patterns/areas discussed in the talk include following :
ActionBar
ListView
TimePicker
KineticGestureComponent
Doze mode is just around the corner. Introduced in Marshmallow, as the shy guy that was allowed to step in only when your device went to sleep. ZzzZzzzz With the new N release, Doze mode becomes the rockstar. He rushes into the room with a big shabang by shooting all background services and network requests that forgot to get away. He should no longer be shy. He just shoots and dances on bones of your scheduled alarms, while you wonder why this particular task is no longer running. With the new Doze mode, you require to adapt your app architecture to the new reality. On this talk, we will learn how to survive Doze mode using Job Scheduler and stay in one piece.
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding etc.
How to Build Your Own Ride-Share App - codemotion amsterdam 2019Richard Süselbeck
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding and more.
A Series of Fortunate Events - Drupalcon Europe, Amsterdam 2014Matthias Noback
Events are the new hooks. But what is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we take a look at how events are essential to processing a Request and producing a Response. We take a look at the Symfony EventDispatcher and related classes that you need when you want to hook into this process. When you know all about the event system and how you can implement your own events, we discuss some situations which may or may not be good use cases for events. You will learn to decide if using events is the right solution for your problem.
Solid principles in practice the clean architecture - Droidcon ItalyFabio Collini
The Clean Architecture has been formalized by Robert C. Martin in 2012, it's quite new even if it's based on the SOLID principles (presented for the first time in early 2000). The biggest benefit that we get using this architecture is the code testability, indeed it separates the application code from the code connected to external factor (that usually is more difficult to test).
In this talk we'll see a practical example of how to apply the SOLID principle, in particular, the dependency inversion.
Migrating from Flux to Redux. Why and how.Astrails
When I started to work with React back in Apr-2015 there were many libraries to manage the application flow. I decided to start with classical FB's Flux implementation to understand what's missed there. Eventually react-redux and redux solved most of issues I had with Flux. This talk is about practical aspects of migration from Flux to Redux.
A Series of Fortunate Events - Symfony Camp Sweden 2014Matthias Noback
What is an event really? How can you best describe an event in your code? What types of events are there, and how do you decide whether or not to implement something as an event?
In this talk we start with a straightforward command-only piece of code. We extract events from it and start moving the event handling code out, trying different design patterns on the way. First we try Observer. Then we introduce event data, event handlers and a Mediator between our code and the event handlers. Finally we pick a well-known event dispatcher implementation (the Symfony EventDispatcher) and see how it uses the Chain of Responsibility design pattern to control the entire flow of a web application request.
In the end I will answer some burning questions like: is it safe to use events all over the place and rely on event handlers to do some really important stuff? How do I overcome the indirection in my event-driven code? And how can I quickly find out what happens where?
Proper distribution of functionalities throughout many machines is very hard, especially when we leave those decisions for later. Akka toolkit gives us many tools for scaling out and we can start using them very early in a development process, enhancing our chances of success. In this introductory talk, I want to go through a very simple example and show snippets of single-noded and sharded implementations.
Improving android experience for both users and developersPavel Lahoda
Android UI and User Experience has changed dramatically in the recent version(s) and while users generally enjoy the new features, there are still several areas that are left to application-level-DIY-patterns. For developers, this is double challenge, they want to provide users with the bleeding edge UI patterns and at the same time, they have to deal with evolving API, that sometimes changes dramatically.
Presentation covers the gotchas developer might face dealing with ever-moving Android API, and how to utilize Java language and the tools it have to make the experience for developer more pleasant. Typical trends in the API will get analyzed and divided into several areas or "patterns", discussing typical scenarios how these components are designed and implemented.
This talk will propose several such UI patterns, that will compete to become "de facto" standards and details on the implementation, including possible impact on existing API as we have both end users and developers in mind.
The list of patterns/areas discussed in the talk include following :
ActionBar
ListView
TimePicker
KineticGestureComponent
Doze mode is just around the corner. Introduced in Marshmallow, as the shy guy that was allowed to step in only when your device went to sleep. ZzzZzzzz With the new N release, Doze mode becomes the rockstar. He rushes into the room with a big shabang by shooting all background services and network requests that forgot to get away. He should no longer be shy. He just shoots and dances on bones of your scheduled alarms, while you wonder why this particular task is no longer running. With the new Doze mode, you require to adapt your app architecture to the new reality. On this talk, we will learn how to survive Doze mode using Job Scheduler and stay in one piece.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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!
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.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
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.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
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/
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
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.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
17. public class GettLocationService extends Service implements
Handler.Callback
public void onCreate() {
handlerThread = new HandlerThread("RebelServiceHandlerThread");
handlerThread.start();
Looper looper = handlerThread.getLooper();
handler = new Handler(looper, this);
handler.sendEmptyMessage(WHAT_MAKE_NETWORK_REQUEST);
}
21. @Override public void onCreate() {
super.onCreate();
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
looper = handlerThread.getLooper();
locationHandler = new LocationHandler(looper, getApplicationContext());
mReceiver = new NaiveBroadcastReceiver();
mNaiveNetworkHandler = new NetworkHandler(looper);
}
public class NaiveService extends Service {
22. @Override public void onCreate() {
super.onCreate();
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
looper = handlerThread.getLooper();
locationHandler = new LocationHandler(looper, getApplicationContext());
mReceiver = new NaiveBroadcastReceiver();
mNaiveNetworkHandler = new NetworkHandler(looper);
}
public class NaiveService extends Service {
23. @Override public void onCreate() {
super.onCreate();
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
looper = handlerThread.getLooper();
locationHandler = new LocationHandler(looper, getApplicationContext());
mNaiveNetworkHandler = new NetworkHandler(looper);
mReceiver = new NaiveBroadcastReceiver();
}
public class NaiveService extends Service {
24. @Override public void onCreate() {
super.onCreate();
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
looper = handlerThread.getLooper();
locationHandler = new LocationHandler(looper, getApplicationContext());
mNaiveNetworkHandler = new NetworkHandler(looper);
mReceiver = new NaiveBroadcastReceiver();
}
public class NaiveService extends Service {
25. public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationHandler.removeMessages(LocationHandler.WHAT_LOCATION_REQUEST);
locationHandler.sendEmptyMessage(LocationHandler.WHAT_LOCATION_REQUEST);
return super.onStartCommand(intent, flags, startId);
}
public class NaiveService extends Service {
26. public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationHandler.removeMessages(LocationHandler.WHAT_LOCATION_REQUEST);
locationHandler.sendEmptyMessage(LocationHandler.WHAT_LOCATION_REQUEST);
return super.onStartCommand(intent, flags, startId);
}
public class NaiveService extends Service {
27. public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationHandler.removeMessages(LocationHandler.WHAT_LOCATION_REQUEST);
locationHandler.sendEmptyMessage(LocationHandler.WHAT_LOCATION_REQUEST);
return super.onStartCommand(intent, flags, startId);
}
public class NaiveService extends Service {
28. public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationHandler.removeMessages(LocationHandler.WHAT_LOCATION_REQUEST);
locationHandler.sendEmptyMessage(LocationHandler.WHAT_LOCATION_REQUEST);
return super.onStartCommand(intent, flags, startId);
}
public class NaiveService extends Service {
29. public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver,
new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationHandler.removeMessages(LocationHandler.WHAT_LOCATION_REQUEST);
locationHandler.sendEmptyMessage(LocationHandler.WHAT_LOCATION_REQUEST);
return super.onStartCommand(intent, flags, startId);
}
public class NaiveService extends Service {
30. @Override public void onDestroy() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
locationHandler.removeCallbacksAndMessages(null);
mNaiveNetworkHandler.removeCallbacksAndMessages(null);
locationHandler.stop();
locationHandler = null;
mNaiveNetworkHandler = null;
looper.quit();
handlerThread.quit();
locationHandler = null;
}
public class NaiveService extends Service {
31. public class LocationHandler extends Handler {
LocationHandler(Looper looper, Context context) {
super(looper);
locationTracker = new LocationTracker(context, getLooper());
}
public void handleMessage(Message msg) {
switch (msg.what) {
case WHAT_LOCATION_REQUEST:
sendEmptyMessageDelayed(WHAT_LOCATION_REQUEST, FIVE_MINUTES);
locationTracker.start();
}
}
32. public class LocationHandler extends Handler {
LocationHandler(Looper looper, Context context) {
super(looper);
locationTracker = new LocationTracker(context, getLooper());
}
public void handleMessage(Message msg) {
switch (msg.what) {
case WHAT_LOCATION_REQUEST:
sendEmptyMessageDelayed(WHAT_LOCATION_REQUEST, FIVE_MINUTES);
locationTracker.start();
}
}
33. public class LocationHandler extends Handler {
LocationHandler(Looper looper, Context context) {
super(looper);
locationTracker = new LocationTracker(context, getLooper());
}
public void handleMessage(Message msg) {
switch (msg.what) {
case WHAT_LOCATION_REQUEST:
sendEmptyMessageDelayed(WHAT_LOCATION_REQUEST, FIVE_MINUTES);
locationTracker.start();
}
}
81. public class MyService extends Service {
@Override public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
final PowerManager.WakeLock wakeLock =
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
//...
}
82. public class MyService extends Service {
@Override public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
final PowerManager.WakeLock wakeLock =
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
//...
}
83. public class MyService extends Service {
@Override public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
final PowerManager.WakeLock wakeLock =
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
//...
}
84. public class MyService extends Service {
Thread thread = new Thread(new Runnable() {
@Override public void run() {
wakeLock.acquire();
while(true){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) { e.printStackTrace(); }
}
}
});
85. public class MyService extends Service {
Thread thread = new Thread(new Runnable() {
@Override public void run() {
wakeLock.acquire();
while(true){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) { e.printStackTrace(); }
}
}
});
86. public class MyService extends Service {
Thread thread = new Thread(new Runnable() {
@Override public void run() {
wakeLock.acquire();
while(true){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) { e.printStackTrace(); }
}
}
});
87. public class MyService extends Service {
//...
thread.start();
return super.onStartCommand(intent, flags, startId);
}
88. Will it blend?
1. After a some time service will die, wakelock will be released,
thread will be parked
2. Service will die, wakelock will be never released, thread will run
till process will be killed
3. Service will continue to run till it stopped
4. Service will die, system will release wakelock and after some time
thread will be parked
89. Will it blend?
1. After a some time service will die, wakelock will be released,
thread will be parked
2. Service will die, wakelock will be never released, thread will run
till process will be killed
3. Service will continue to run till it stopped
4. Service will die, system will release wakelock and after some time
thread will be parked
90. Will it blend?
1. After a some time service will die, wakelock will be released,
thread will be parked
2. Service will die, wakelock will be never released, thread will run
till process will be killed
3. Service will continue to run endless
4. Service will die, system will release wakelock and after some time
thread will be parked
91. Will it blend?
1. After a some time service will die, wakelock will be released,
thread will be parked
2. Service will die, wakelock will be never released, thread will run
till process will be killed
3. Service will continue to run endless
4. After a some time service will die, wakelock will be released,
thread will be terminated
92. Will it blend?
1. After a some time service will die, wakelock will be released,
thread will be parked
2. Service will die, wakelock will be never released, thread will run
till process will be killed
3. Service will continue to run endless
4. After a some time service will die, wakelock will be released,
thread will be terminated