This presentation provides an introduction to Ansible OpenSource IT automation and Cloud orchestration engine. It comes with an overview of what Ansible is and how it can compete (and outcome) legacy automation systems such as Chef or Puppet. Based on real-life experience, Ansible tips & tricks will be provided as how to automate your servers' deployment ever more easily. Additional software will be presented, allowing people to describe their full Cloud application topology, getting the best out of OpenStack APIs and Ansible Playbooks to fully automatize one's application's deployment and continuous integration.
This presentation provides an introduction to Ansible OpenSource IT automation and Cloud orchestration engine. It comes with an overview of what Ansible is and how it can compete (and outcome) legacy automation systems such as Chef or Puppet. Based on real-life experience, Ansible tips & tricks will be provided as how to automate your servers' deployment ever more easily. Additional software will be presented, allowing people to describe their full Cloud application topology, getting the best out of OpenStack APIs and Ansible Playbooks to fully automatize one's application's deployment and continuous integration.
What’s Android System?
Kinds of Android Devices
Kinds of Android Type
Android Source Code
Inside Android
Boot Sequence
About init File
Hands On
Nexus7
Pandaboard
How to Debug
We all want our devices to boot faster, but how much effort do you want to dedicate to optimizing and maintaining a custom kernel and apps? This presentation offers a graded list of things you can do to reduce boot time. They start with simple changes, such as adjusting the position of your main application the init sequence. Then there are the changes you can make to the kernel and bootloader configuration to speed things up, and finally, there are moderately advanced techniques such as using U-Boot in falcon mode.
All of this is done using standard configuration techniques, with the idea of being able to maintain these changes in the future. I will show the effect of each of these changes on typical a embedded dev board so that you can judge for yourself where on the journey you want to jump off.
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKMarco Cavallini
Excerpt of the lectures at Yocto Project Dev Day in Prague, 2017
During the advanced class Marco Cavallini ran this presentation about the creation of a Linux kernel module with eSDK.
Linux is changing the way embedded systems are put together even faster than it is influencing data centres and desktops. I gave this talk at Embedded Linux Conference Europe 2012 in Barcelona
Slides from Android Builder's Summit 2014 in San Jose, CA
The 4.4 KitKat release includes the results of “Project Svelte”: a set of tweaks to the operating system to make it run more easily on devices with around 512 MiB RAM. This is likely to be especially important for people working with “Embedded Android”, that is, implementing Android on devices that are not smart phones or tablets.
Embedded Android: Android beyond the smartphoneChris Simmonds
We are all familiar with Android as an operating system for smarphones. Looking beyond that,
Android is an open-source operating system that runs on top of Linux, which opens up a wide range
of applications in the embedded space. Using Embedded Android, you get the well-known user
interface, with it’s familiar touch screen gestures, and you get a well-known programming interface
based on Java. So, why would you not want to consider Embedded Android?
Android is beginning to take off as an embedded operating system alongside Windows Embedded and traditional embedded Linux. What are the motivations for using Android? What are the potential problems? This presentation addresses these points, with use-cases based on real-world applications of Embedded Android
Bugs happen. Identifying and fixing them is part of the development process. This tutorial demonstrates one of the key tools in the embedded Linux developer’s toolbox: the GNU Debugger, GDB.
You will begin by using GDB to debug a program running on a target device. You will learn about debug symbols: how build them into programs and libraries, and the places that GDB will go looking for them. Next, you will perform basic debugging tasks, including setting breakpoints, stepping through code, examining variables and modifying variables. After that you will lean about GDB command files and how they can help you by automating certain tasks. You will receive a handy GDB cribsheet to help you with all of this. If time allows, we will discuss how to use GDB to analyse core dumps so that you can perform a post-mortem on a crashed program
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Slides from a lightning talk at FOSDEM 2019
https://fosdem.org/2019/schedule/event/android_pi/
Configuring an embedded Linux system with a read-only rootfs has many advantages: reduced wear on flash memory; easier to update and trivial factory reset being among them. This presentation shows you how
NCA GTUG 2012 - Cloud is such stuff as dreams are made onPatrick Chanezon
There is a profound architecture transition happening in software in 2011, like we see every 15 years: html5 and mobile on the client, cloud on the server.
This talk will explain the opportunities and challenges that the Cloud represents for developers, in 4 areas: Infrastructure, Platform, Software and Development.
This talk will describe the capabilities, philosophies and issues associated with current Cloud Platform offerings (Google Appengine, Azure, Beanstalk, CloudFoundry, Heroku), for different use cases (public, private, hybrid clouds) and the nascent Cloud Development services (Cloudbees, Exo, Cloud9, Github).
We will dive into the code of a sample Cloud Foundry app using Node.js, MongoDb, the Twitter API and Lanyrd Calendar feeds, to show how Cloud Platforms enable a more agile development process.
We will also discuss opportunities and risks for developers to move their apps to the Cloud, new skills to learn, and old habits to forget.
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
What’s Android System?
Kinds of Android Devices
Kinds of Android Type
Android Source Code
Inside Android
Boot Sequence
About init File
Hands On
Nexus7
Pandaboard
How to Debug
We all want our devices to boot faster, but how much effort do you want to dedicate to optimizing and maintaining a custom kernel and apps? This presentation offers a graded list of things you can do to reduce boot time. They start with simple changes, such as adjusting the position of your main application the init sequence. Then there are the changes you can make to the kernel and bootloader configuration to speed things up, and finally, there are moderately advanced techniques such as using U-Boot in falcon mode.
All of this is done using standard configuration techniques, with the idea of being able to maintain these changes in the future. I will show the effect of each of these changes on typical a embedded dev board so that you can judge for yourself where on the journey you want to jump off.
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKMarco Cavallini
Excerpt of the lectures at Yocto Project Dev Day in Prague, 2017
During the advanced class Marco Cavallini ran this presentation about the creation of a Linux kernel module with eSDK.
Linux is changing the way embedded systems are put together even faster than it is influencing data centres and desktops. I gave this talk at Embedded Linux Conference Europe 2012 in Barcelona
Slides from Android Builder's Summit 2014 in San Jose, CA
The 4.4 KitKat release includes the results of “Project Svelte”: a set of tweaks to the operating system to make it run more easily on devices with around 512 MiB RAM. This is likely to be especially important for people working with “Embedded Android”, that is, implementing Android on devices that are not smart phones or tablets.
Embedded Android: Android beyond the smartphoneChris Simmonds
We are all familiar with Android as an operating system for smarphones. Looking beyond that,
Android is an open-source operating system that runs on top of Linux, which opens up a wide range
of applications in the embedded space. Using Embedded Android, you get the well-known user
interface, with it’s familiar touch screen gestures, and you get a well-known programming interface
based on Java. So, why would you not want to consider Embedded Android?
Android is beginning to take off as an embedded operating system alongside Windows Embedded and traditional embedded Linux. What are the motivations for using Android? What are the potential problems? This presentation addresses these points, with use-cases based on real-world applications of Embedded Android
Bugs happen. Identifying and fixing them is part of the development process. This tutorial demonstrates one of the key tools in the embedded Linux developer’s toolbox: the GNU Debugger, GDB.
You will begin by using GDB to debug a program running on a target device. You will learn about debug symbols: how build them into programs and libraries, and the places that GDB will go looking for them. Next, you will perform basic debugging tasks, including setting breakpoints, stepping through code, examining variables and modifying variables. After that you will lean about GDB command files and how they can help you by automating certain tasks. You will receive a handy GDB cribsheet to help you with all of this. If time allows, we will discuss how to use GDB to analyse core dumps so that you can perform a post-mortem on a crashed program
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Slides from a lightning talk at FOSDEM 2019
https://fosdem.org/2019/schedule/event/android_pi/
Configuring an embedded Linux system with a read-only rootfs has many advantages: reduced wear on flash memory; easier to update and trivial factory reset being among them. This presentation shows you how
NCA GTUG 2012 - Cloud is such stuff as dreams are made onPatrick Chanezon
There is a profound architecture transition happening in software in 2011, like we see every 15 years: html5 and mobile on the client, cloud on the server.
This talk will explain the opportunities and challenges that the Cloud represents for developers, in 4 areas: Infrastructure, Platform, Software and Development.
This talk will describe the capabilities, philosophies and issues associated with current Cloud Platform offerings (Google Appengine, Azure, Beanstalk, CloudFoundry, Heroku), for different use cases (public, private, hybrid clouds) and the nascent Cloud Development services (Cloudbees, Exo, Cloud9, Github).
We will dive into the code of a sample Cloud Foundry app using Node.js, MongoDb, the Twitter API and Lanyrd Calendar feeds, to show how Cloud Platforms enable a more agile development process.
We will also discuss opportunities and risks for developers to move their apps to the Cloud, new skills to learn, and old habits to forget.
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
Discuss challenges of implementing imaging pipelines on mobile chipsets with ARM Mali T604 GPU and Qualcomm Adreno 3xx GPUs.
Presented at Bay Area multimedia meetup (http://www.meetup.com/Bay-Area-Multimedia-Meetup-Group) on Dec. 19, 2013
Kit kat convergence interaction research (slideshare)Posterscope
2012 was the year that saw the largest ever NFC/QR Code OOH campaign for Nestle with its “We Will Find You” activity. This presentation from Posterscope looks at insights gained from interaction data and demonstrates the positive brand effects from such interactions.
Yaklaşık olarak 15 yıldır aktif olarak yazılım geliştirme işinde yer alıyorum. Son 4 yıldır ise bir bankanın kurumsal çözümlerinde çalışıyorum. Tüm yazılım hayatım boyunca ağırlıklı olarak .Net platformu üzerinde çalıştım. Zaman ilerledikçe sürekli olarak aynı şeylerle uğraşmanın beni paslandırdığını gördüm. İçimdeki araştırmacı kişiliği uyandıracak beni tekrardan keyiflendirecek bir şeyler gerekiyordu. Sonuç olarak çok sıkıldığım bir günün devamında yeni ne öğrenebilirim diye araştırmaya karar verdim. Daha önceden Java ile ilgili bir maceram olmuş ve 24 bölümlük bir makale serisi hazırlayabilmiştim. O zamanlar epeyce keyif alıyordum. Bu kez düşünce yapım biraz daha farklıkaştı. Çocuklara nasıl programlama öğretilebilir fikrinden yola çıktım. İlk iş bir Lego yapmaktı.ve devamı geldi...
Finans sektöründe nasıl daha verimli yazılımcılar olabiliriz. Yıllara dayanan tecrübe, gözlem ve biraz araştırmanın sonucu olarak hazırlanan maddeler ile cevap bulmaya çalışıyoruz.
Often called as the Swiss Army Knife of Embedded Linux, BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. It is written with size-optimization
and limited resources in mind. Here is a presentation that details about BusyBox.
File system is an approach on how the data can be
organized in order to have a meaningful read or write in a
system. File systems provides a very easy way of identifying data like where it begins and ends. The group of such data can be called as “Files”. The method used to manage these groups of data can be called as “File systems”
In Embedded system a set of applications used to perform a complex task or to create a product, which is typically another computer program or a system of programs. Tools are linked (or chained) together by specific stages. Output or resulting environment state of the tool becomes input or starting environment for the next one. By default the host contains some development tools which are called native tool-chain. Here is the presentation that shares mode details on components of tool-chain and how to build them for your own embedded distribution.
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017Codemotion
The current craze of Docker has everyone sticking their processes inside a container… but do you really understand cgroups and how they work? Do you understand the difference between CPU Sets and CPU Shares? Spark is a Scala application that lives inside a Java Runtime, do you understand the consequence of what impact the cgroup constraints have on the JRE? This talk starts with a deep understand of Java’s memory management and GC characteristics and how JRE characteristics change based on core count. We will continue the talk looking at containers and how resource isolation works.
Sanger, upcoming Openstack for Bio-informaticiansPeter Clapham
Delivery of a new Bio-informatics infrastructure at the Wellcome Trust Sanger Center. We include how to programatically create, manage and provide providence for images used both at Sanger and elsewhere using open source tools and continuous integration.
Real-World Docker: 10 Things We've Learned RightScale
Docker has taken the world of software by storm, offering the promise of a portable way to build and ship software - including software running in the cloud. The RightScale development team has been diving into Docker for several projects, and we'll share our lessons learned on using Docker for our cloud-based applications.
Latest (storage IO) patterns for cloud-native applications OpenEBS
Applying micro service patterns to storage giving each workload its own Container Attached Storage (CAS) system. This puts the DevOps persona within full control of the storage requirements and brings data agility to k8s persistent workloads. We will go over the concept and the implementation of CAS, as well as its orchestration.
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)Tibo Beijen
Slides of the presentation about Kubernetes practices and learnings at NU.nl.
This presentation was the first of two at the Dutch Kubernetes meetup at the Sanoma Netherlands offices, that took place on Sept. 5th 2019
Cloud providers like Amazon or Goggle have great user experience to create and manage PaaS and IaaS services. But is it possible to reproduce same experience and flexibility locally, in on premise datacenter? This talk describes success story of creation private cloud based on DC/OS cluster. It is used to host and share different services like hadoop or kafka for development teams, dynamically manage services and resource pools with GKE integration.
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Sysdig
How to secure microservices running in containers? Strategies for Docker, Kubernetes, Openshift, RancherOS, DC/OS Mesos.
Privileges, resources and visibility constrains with capabilities, cgroups and namespaces. Image vulnerability scanning and behaviour security monitoring with Sysdig Falco.
Live Container Migration: OpenStack Summit Barcelona 2016Phil Estes
A talk presented by Phil Estes & Shaun Murakami, IBM Cloud Open Technologies, at the Barcelona OpenStack Summit on October 25, 2016. This talk covers a new feature that will be available in the Docker 1.13 engine for using the CRIU project to checkpoint and restore container processes on Linux. Phil & Shaun present details of this new capability and then demonstrate a proof-of-concept "live migration" of containers across nova compute hosts.
This is a summary of the sessions I attended at PASS Summit 2017. Out of the week-long conference, I put together these slides to summarize the conference and present at my company. The slides are about my favorite sessions that I found had the most value. The slides included screenshotted demos I personally developed and tested alike the speakers at the conference.
The Lies We Tell Our Code (#seascale 2015 04-22)Casey Bisson
We tell our code lies from development to deploy. The most common of these lies start with the simple act of launching a virtual machine. These lies are critical to our applications. Some of them protect applications from themselves and each other, some even improve performance. Some, however, decrease performance, and others create barriers to simply getting things done.
We lie about the systems, networks, storage, RAM, CPU and other resources our applications use, but how we tell those lies is critical to how the applications that depend on them perform. Joyent's Casey Bisson will explore the lies we tell our code and demonstrate examples of how they sometimes help and hurt us.
Slides as presented at http://www.meetup.com/Seattle-Scalability-Meetup/events/219709036/. Video from that meetup is on YouTube, https://www.youtube.com/watch?v=LtPS2z_c2v4.
The Proto-Burst Buffer: Experience with the flash-based file system on SDSC's...Glenn K. Lockwood
Comparing the burst buffers of today, such as the Cray DataWarp-based burst buffer implemented on NERSC Cori, to the proto-burst buffer deployed on SDSC's Gordon supercomputer in 2012.
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!
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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.
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/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...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.
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
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
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.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
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.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
2. These slides are made available o you under Creative Commons Share-Alike 3.0 license.
The full terms of this license are available here:
https://creativecommons.org/licenses/by-sa/3.0/
Attribution requirements and misc., PLEASE READ:
- This slide must remain as-is in this specific location (slide #2),
everything else you are free to change; including the logo ;-)
- Use of figures in other documents must feature the below “Originals at” URL
immediately under that figure and the below copyright notice where appropriate.
- You are FORBIDDEN from using the default slide #3 as-is or any of its contents.
(C) Copyright 2014 - Opersys inc.
These slides are created by: Benjamin Zores
Originals at: http://www.opersys.com/community/docs
3. A Few Things About Me …
• Day:
• Linux Embedded Systems (now Cloud)
R&D Architect / Director for Alcatel-Lucent.
• Night:
• Android “Jack of all trades” for Opersys.
• Weekends:
• Technical Writer for GNU/Linux Magazine France.
• Recurrent ELC/ABS speaker.
• Open Source leader/contributor in previous life:
• GeeXboX, OpenBricks, uShare, MPlayer, FFmpeg.
14. Android GFX Architecture
• Triple Buffering
• Better coordination and sync. of animations
between CPU, GPU and display.
!
• Multi-Threaded GFX Rendering Engine
• GPU or multi-cores CPU
!
• OpenGL ES 3.0
• For NDK and Java apps
• Optimized HW 2D Rendering
• ETC2/EAC Texture Compression support.
15. Vertical Synchronization
• Events are synchronized against display refresh cycles.
• Avoid tearing effect
• Display refresh rate updated from 30 to 60 fps.
• A 16ms timeslot is allocated to each frame to be displayed.
• Apps draw frame at start of VSYNC period.
• SurfaceFlinger starts composition at the start
of next VSYNC period.
!
!
• HW Composer HAL to be updated:
void (*vsync)(const struct hwc_procs* procs,
int disp, int64_t timestamp);
• Max timestamp tolerance between caller and callee: 1ms
to be called at each
VSYNC event
reception.
16. Vertical Synchronization
• Gralloc HAL:
• Composition buffers to be acquired/released
in sync with VSYNC events.
• Producers and consumers to notify
when they're done with a buffer.
!
• Explicit sync through:
• kernel driver, used to sync HW with HW composer
• HAL v1.1: sync mechanisms through set() and prepare()
• libsync for user/kernel communication
• system/core/include/sync/sync.h
• system/core/libsync
17. Better Touch Reactivity
• Touch events are HW synchronised
with VSYNC events.
!
• Predict upcoming actions on touchscreen
based on finger position:
• Where it's gonna be at next VSYNC period.
• Instant CPU boost at wake-up, for better latency.
!
!
18. Multiple Displays Support
• True Dual-Head Support (ICS was limited to mirror/clone)
!
• HWComposer HAL v1.1:
• Display detection routine:
void (*hotplug)(const struct hwc_procs* procs,
int disp, int connected);
!
• Check display capabilities:
int (*getDisplayAttributes)(struct hwc_composer_device_1* dev,
int disp, uint32_t config, const uint32_t* attributes, int32_t* values);
• HWC_DISPLAY_VSYNC_PERIOD : VSYNC period (ns)
• HWC_DISPLAY_{WIDTH,HEIGHT}: screen resolution (pixels)
• HWC_DISPLAY_DPI_{X,Y}: screen density (pixels / 1000 inches)
!
• Blanking:
int (*blank)(struct hwc_composer_device_1* dev, int disp, int blank);
!
• New Display Manager Service: allow apps to talk to HAL and displays.
20. "We were kind of joking that, when I started, the first
thing that I was working on was Project Butter to make
the system smoother. The thing is, butter puts on
weight. So then I did Project Svelte to lose weight. So
now my contribution to Android is basically zero.”
Dave Burke, head of engineering for Android at Google.
21. Goals
• Reduce system memory footprint to allow
running on devices with 512 MB RAM.
!
• Reduce the footprint (memory usage) of the apps
that run on a Google Experience (Nexus) device.
!
• Fix how apps react and crash during
bad memory situations.
!
• Provide better measurement and instrumentation
of how apps are running in Android so developers
can see how memory-conscious their apps are.
22. Kernel Same-Page Merging (KSM)
• Introduced in Linux 2.6.32
• Allow processes to share memory pages.
• Kernel scan for identical pages (marked as
MADV_MERGEABLE) and merges through COW
operations.
• Great for memory but not for performances
• Consumes CPU, hence battery too !
!
• Enable KSM through init.rc:
write /sys/kernel/mm/ksm/pages_to_scan 100
write /sys/kernel/mm/ksm/sleep_millisecs 500
write /sys/kernel/mm/ksm/run 1
23. Swap to ZRAM
• Uses compressed memory as SWAP.
• Allow more processes to be launched.
• Great for memory but not for performances
• Consumes CPU, hence battery too !
!
• Enable Swap-to-ZRAM through fstab:
/dev/block/zram0 none swap defaults
zramsize=<size in bytes>,swapprio=<swap partition priority>
!
• and init.rc:
swapon_all /fstab.X
!
• ActivityManager makes low-priority threads
more elligible to swap.
24. LowRamDevice
• New ActivityManager.isLowRamDevice() API.
!
• Allow apps to know if device has 512 MB RAM (or less):
• Allow them to disable some features in that case.
• System also kills heavy idle apps
and services earlier.
• System starts services sequentially.
!
• Device must declared themselves in BoardConfig.mk:
PRODUCT_PROPERTY_OVERRIDES +=
ro.config.low_ram=true
!
25. System Memory Footprint
• Shrink of system_server and SystemUI provides a few MB
here and there.
• DEX caches preload inside Dalvik VM.
• Java framework replaces ArrayMap/ArraySet
by HashMap/HashSet for better efficiency.
• Reduction of fonts management cache.
!
• Option to disable Dalvik JIT: saves 200 kB memory per app
• Overall system gain of 3 to 6 MB RAM.
• Done through BoardConfig.mk:
PRODUCT_PROPERTY_OVERRIDES +=
dalvik.vm.jit.codecachesize=0
!
26. MemTrack
• New HAL plugin to check memory usage.
• See hardware/libhardware/include/hardware/memtrack.h
!
• Mostly used to track GFX surfaces allocation.
• Must interface with HW (e.g. GPU).
• A texture is allocated in GPU memory
(even if dedicated system memory).
• Invisible from process address space.
!
• GFX memory can be categorized:
• Camera, GL, Graphics, Multimedia, Other.
!
• Stats can be retrieved through:
getMemory(<pid>, MEMTRACK_TYPE_GL)
27. ProcStats
• Allows developers to track their
applications memory consumption.
• Provides execution time metrics for apps and
background services.
• Provides continuous metrics, not instant snapshot.
• Stats are automatically retrieved by system
• No special compilation option is required.
!
• Started through:
adb shell dumpsys procstats –details
!
28. Now let’s consider an app with 2 services
(FirstService and SecondService)
29. ProcStats
* com.test.procstats / u0a51:
* com.test.procstats / u0a51:
TOTAL: 100% (4.4MB-5.0MB-6.1MB/3.0MB-3.1MB-3.1MB over 3)
Top: 1.7% (6.1MB-6.1MB-6.1MB/3.1MB-3.1MB-3.1MB over 1)
Service: 90% (4.4MB-4.4MB-4.4MB/3.0MB-3.0MB-3.0MB over 2)
Service Rs: 8.1%
* com.test.procstats.FirstService:
Process: com.test.procstats
Running count 2 / time 0.23%
Started count 1 / time 0.23%
Executing count 2 / time 0.01%
* com.test.procstats.SecondService:
Process: com.test.procstats
Running count 1 / time 92%
Started count 1 / time 92%
Executing count 1 / time 0.01%
!
FirstService consumed 0.23%
of app's global execution time.
SecondService consumed 92% of
app's global execution time.
30. * com.test.procstats / u0a51:
Process com.test.procstats (3 entries):
Screen On / Norm / Top : +30s259ms
* com.test.procstats / u0a51:
Process com.test.procstats (3 entries):
Screen On / Norm / Top : +30s259ms
Service : +26m35s118ms (running)
Service Rs: +2m23s130ms
TOTAL : +29m28s507ms
# [...]
mActive=true
mNumActiveServices=1 mNumStartedServices=1
Service com.test.procstats.FirstService:
Process: com.test.procstats
Running op count 2:
Screen On / Norm / +4s116ms
TOTAL: +4s116ms
# […]
Service com.test.procstats.SecondService:
Process: com.test.procstats
Running op count 1:
Screen On / Norm / +27m4s66ms (running)
TOTAL: +27m4s66ms
Let's check for
real execution times:
adb shell dumpsys -a
mNumActiveServices=1
=> Service is still running !
Guess why battery is running out ?
SecondService
ran for 27 min.
FirstService
ran for 4s
ProcStats
32. Android RunTime
• New experimental VM.
• See libcore/libart.
!
• Aims at superseding
Dalvik anytime soon.
!
• Though not yet
100% compatible with
Dalvik
(may prevent application
from running correctly).
!
!
Can be enabled through
Settings >
Developer Options
!
33. Android RunTime
• ART is supposed to be more efficient than Dalvik.
!
• Today devices have more memory
and better CPUs than once Dalvik was designed.
!
• Can be added/enabled at build in
build/target/product/core_minimal.mk:
!
PRODUCT_RUNTIMES :=
runtime_libdvm_default
PRODUCT_RUNTIMES += runtime_libart
34. Android RunTime
• Replaces JIT by AOT ("Ahead-of-Time") approach.
• Native code is compiled at app's installation time.
• Apps execute faster as code is already compiled.
• Prevents lags as CPU is not compiling code in
background anymore.
• But consumes more storage space (not really an issue)
and a bit more memory.
• CPU is used less often and should save battery life
(a bit).
!
• Developers may hate that apps take more time
to install on a daily basis.
!
• Early benchmarks show a 10-20% performances bump.
36. Wireless Display
• JB 4.3 introduced Miracast support.
• Transmits audio/video over HDMI.
!
• Requirements
• HW radio chip must be P2P compliant.
• HW radio chip must support multiple
connections at a time.
• AudioFlinger's policy must provide r_submix
remote audio mixing capability.
• Device must provide HDCP keys as to stream DRM
protected content.
!
• Can be enabled through
frameworks/base/core/res/res/values/config.xml:
<bool name="config_enableWifiDisplay">true</bool>
37. Bluetooth
• Provides BTLE (Bluetooth Low-Energy) / Bluetooth Smart Ready support.
!
• JB 4.2 replaced BlueZ by Broadcom's BlueDroid (external/bluetooth/bluedroid)
• Got rid of GPL dependencies (BlueZ and D-BUS).
• Reference implementation can be customized by every vendor.
!
• Now features a HAL (like other sub-systems).
• See hardware/libhardware/include/hardware/bluetooth.h
• Vendor-specific HCI communication can be done
through libbt-vendor plugin.
!
• BT profiles are implemented through HAL, BlueDroid and called by apps (JNI).
• See hardware/libhardware/include/hardware/bt_{profile}.h
• See packages/apps/Bluetooth/jni/com_android_bluetooth_{profile}.cpp
!
• Now supports the following profiles: A2DP, AVRCP, GATT,
HDP, HFP, HID and PAN.
39. Near Field Communication (NFC)
• HAL Update:
• From NXP's PN544-centric HCI HAL
• To Broadcom's more generic NFC-NCI HAL.
• Both continue to exist while new
developments should use NFC-NCI one.
• See hardware/libhardware/include/
hardware/nfc.h
!
• New Broadcom's external/libnfc-nci
NFC Controller Interface user stack.
41. New Features
• Multi-channels (e.g. 5.1 surround) support.
!
• USB devices output.
!
• Audio streams pre-processing FX.
!
• Remote audio devices streaming.
!
• Low Latency enhancements through OpenSL ES APIs.
42. Supported Devices
• Audio HAL v2.0 now supports multiples
input/output types:
!
• primary: usually SoC's internal sound card.
• a2dp: optional Bluetooth device
• e.g. headset or speakers.
• usb: optional USB external device
• e.g. DAC or audio dock.
• r_submix: optional remote interface
• e.g. HDMI TV over Miracast.
• codec_offload: optional HW audio DSP.
51. Features Enhancements
• Low-Level NDK Media Codec Access
• Provides codec capabilities query
(availability, HW/SW implementation ...).
• GStreamer-like pipeline design capability.
!
• Media Routing
• New MediaRouter, MediaRouteActionProvider
and MediaRouteButton APIs.
• Allow streaming to newly-supported remote output devices.
!
• Media Muxing
• StageFright now offers API to create TS/PS streams from
ES ones.
52. Features Enhancements
• Media Rights Management
• Allows apps to add DRM to MPEG DASH over
HTTP.
!
• HW VP8 Encoder
• Profils/Levels can be configured through
NDK's OpenMAX 1.1.2 APIs.
!
• Video Surface Encoding
• StageFright now offers 0-copy OpenGL ES
video surface encoding (e.g. screen recording).
53. Camera New Features
• Support for Computational Photography
• High-Dynamic-Range (HDR) pictures
• Panoramic pictures
• Post-Processing FX
• Blur, noise, image enhancements …
!
!
• Requires new camera sensor's metadata
to process raw images and deliver
the expected final picture.
!
54. Image Processing Pipeline
• HAL has to implement image processing
pipeline through
3A ISP algorithms:
• AF: Auto Focus
• AWB: Automatic White Balance
• AE: Auto Exposure
• Consumes a RAW YV12 sensor image,
applies filters and produces picture.
• Pipeline construction usually
is a secret recipe
• See Qualcomm's
SnapDragon 800 Nexus 5
HAL v3 implementation.
55. Camera API vs. HAL API
ANDROID
VERSION
CAMERA_MOD
ULE VERSION
CAMERA_DEVICE
(HAL) VERSION
SDK VERSION FEATURES
4.0 1.0 1.0 14
Face
Recognition
4.0.4 1.0 1.0 15
Video
Stabilisation
4.1 1.0 1.0 16
AutoFocus
Control
4.2 2.0 2.0 17
HDR,
Shutter
Sound
4.3 2.1 3.0 18 N/A
4.4 2.2 3.1 19 N/A
56. Camera API v2 Compatibility
• Multiple HALs
• 1.0 (camera.h)
• Introduced with ICS as a 1:1 mapping of old C++ CameraHardwareInterface.
• Perfect compatibility with SDK android.hardware.camera API v1.
• 2.0 (camera2.h)
• Introduced with JB 4.2 but considered as unstable/deprecated.
• Extends HAL v1 with manual control capabilities and Zero Shutter Lag support.
• Requires specific HW sensors.
• Perfect compatibility with SDK android.hardware.camera API v1 and v2.
• 3.0 (camera3.h)
• Introduced with JB 4.3 and considered as stable.
• Complete HAL ABI breakage but offer same hardware requirements than HAL
v2.
• Complete rework of synchronization mechanisms and actions handlers.
• Perfect compatibility with SDK android.hardware.camera API v1 and v2.
• 3.1 (camera3.h)
• Introduced with KK 4.4 and considered as stable.
• Add flush() command to cancel all queued requests (and associated buffers).
• Perfect compatibility with SDK android.hardware.camera API v1 and v2.
To be compliant with Camera Module API v2, device must
implement Camera HAL v2 or v3+.
57. Camera API v2
• Camera HAL v3 is stable but Camera SDK v2 IS NOT !
• Packaged as android.hardware.camera2 (a.k.a “CameraPro").
!
• Not available to application developers (yet), unless:
• You extract Kit Kat Java framework:
adb pull /system/framework/core.jar .
adb pull /system/framework/framework.jar .
• And convert DEX to JAR:
dex2jar core.jar
dex2jar framework.jar
• Then import JARs in Eclipse
Project > Properties > Java Path >
Libraries > Add external JARs
59. Multi-Users Support
• Each user now has it own jailed virtual data partition
• Though large OBB files can be shared in Android/obb directory.
• SD/eMMC user data partition is FAT32 formatted
• => Try to managed user rights there ;-)
Dynamic per-user /sdcard mount point
• New "sdcard" daemon (see externals/core/sdcard)
• FUSE-based FAT emulator that manages files/directories permissions.
• Enabled as a service through init.rc:
# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard /data/media
/mnt/shell/emulated 1023 1023
class late_start
• Vold also supported user data encryption (see init.rc):
on fs
setprop ro.crypto.fuse_sdcard true
60. Multi-Users Support
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage/emulated 0555 root root
!
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
!
# Support legacy paths
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
!
on post-fs-data
mkdir /data/media 0770 media_rw media_rw
Sdcard daemon mounts
EMULATED_STORAGE_TARGET
directory when user
connects to Android
61. Batch Sensors
• Sensors can now deliver events in batches.
• SoC stays idle instead of being woke up at each sensor's
IRQ.
• Saves battery
!
• Events can be retrieved in 3 ways:
• Explicit request at any time.
• Postponed request at end of batch cycle.
• Postponed request through cycle's delivery frequency
control.
•
• Sensors HAL has been extended:
• See hardware/libhardware/include/hardware/sensor.h
• New batch() feature to be implemented by each driver.
62. Batch Sensors
• While in batch mode:
• Reported events are stored.
• Events are provided all together once an event reaches timeout.
• Each event features a timestamp allowing apps
to process all batch-delivered events.
!
• Batch processing:
• When SoC's awake, all events are delivered at each period's end
(when timeout has been reached).
No event can be lost.
• When SoC's idle, sensors MUST NOT wake up the CPU.
Events are then stored in sensor's internal FIFO buffer.
Events can be lost.
Only the latest available ones will be delivered to CPU at
wakeup.