Speech presented on "The Development Conference 2016 - São Paulo" about the development of software in C++ for an Embedded Linux system. The presentation goes through a brief introduction of Linux and its history, the power of C++ and the tools for testing and debugging C++ applications on Embedded Linux Operating Systems.
This document discusses the use of C++ and Embedded Linux. It begins with an overview of Embedded Linux and its applications. Chapter 2 focuses on C++ as a good fit for Embedded Linux due to its high performance, tools, and compatibility with C. Chapter 3 covers development tools and debugging for Embedded Linux systems, including build systems, IDEs, debugging with GDB and Breakpad. Chapter 4 discusses test frameworks for C++ like Google Test and Google Mock. Chapter 5 touches on test-driven development and Chapter 6 provides considerations for Embedded Linux development like using smart pointers and following coding standards.
The document discusses plans for a security audit of the OpenSIPS project. It began when Enable Security was proposed and hired to perform the audit in April/May 2021. The first milestone of testing the OpenSIPS parser, auth, tm, and dialog modules was funded, while the second milestone of additional testing remains to be funded. The goals of the audit are to find security issues, help integrate automated testing, and contribute findings to help improve OpenSIPS security long-term. A demo showed examples of black box and instrumented fuzzing approaches to be used.
Open Source In Enterprises Apache2009 Beijing Jack CaiOpenSourceCamp
Open source software is widely used by enterprises. When using open source software, enterprises need to carefully manage legal and system risks. Some ways to mitigate risks include having a governance process to review software and conducting due diligence. Enterprises can also participate in open source development, but should take steps to manage legal risks such as patent exposure and code contamination. Overall, open source is important for enterprises both as software users and as contributors to open source projects and communities.
This document provides an overview of open source tools and libraries that can be used for .NET projects. It lists many popular options for IDEs, source control, package management, continuous integration servers, metrics, build scripts, ORM, IoC containers, database management, APIs, unit testing, mocking, acceptance testing, application automation, HTTP libraries, JSON, JavaScript libraries, routing, JavaScript MVC frameworks, view engines, roles and access, CoffeeScript, SASS/LESS, CSS libraries, and Visual Studio extensions.
This document provides an overview of GoogleMock, a mocking framework for C++. It defines what a mock object is and why they are useful for testing. GoogleMock allows specifying expectations for mock method calls, including how many times a method will be called and what it will return. It provides matchers to check arguments and actions to define return values or behaviors. The document demonstrates how to write mock classes, set expectations, and use mocks in tests to verify code interactions and behavior.
Amir Barylko gave a presentation on easy automation for everyday projects at the Winnipeg Code Camp in February 2011. He discussed setting up automated builds, tests, dependencies and continuous integration for .NET projects using tools like Rake, Albacore, Bundler, Gallio and TeamCity. The presentation provided guidance on project structure, build scripts, unit testing, static analysis, deployment and acceptance testing.
As most embedded programming is currently performed using C, it is likely that developers will need to transition their code and their working practice to C++. This session proposes a strategy that enables the benefits of C++ to be realized quickly and incrementally.
QtTest is a unit testing framework that comes with Qt. It provides classes and methods for building test fixtures to test units of code. QtTest allows testing signals without needing to write slots using QSignalSpy. It can also simulate user events like mouse clicks and key presses. While QtTest is useful for unit testing, it does not provide isolation of dependencies between units. Tests using QtTest should focus on testing one thing at a time and creating new objects for each test to isolate the code being tested.
This document discusses the use of C++ and Embedded Linux. It begins with an overview of Embedded Linux and its applications. Chapter 2 focuses on C++ as a good fit for Embedded Linux due to its high performance, tools, and compatibility with C. Chapter 3 covers development tools and debugging for Embedded Linux systems, including build systems, IDEs, debugging with GDB and Breakpad. Chapter 4 discusses test frameworks for C++ like Google Test and Google Mock. Chapter 5 touches on test-driven development and Chapter 6 provides considerations for Embedded Linux development like using smart pointers and following coding standards.
The document discusses plans for a security audit of the OpenSIPS project. It began when Enable Security was proposed and hired to perform the audit in April/May 2021. The first milestone of testing the OpenSIPS parser, auth, tm, and dialog modules was funded, while the second milestone of additional testing remains to be funded. The goals of the audit are to find security issues, help integrate automated testing, and contribute findings to help improve OpenSIPS security long-term. A demo showed examples of black box and instrumented fuzzing approaches to be used.
Open Source In Enterprises Apache2009 Beijing Jack CaiOpenSourceCamp
Open source software is widely used by enterprises. When using open source software, enterprises need to carefully manage legal and system risks. Some ways to mitigate risks include having a governance process to review software and conducting due diligence. Enterprises can also participate in open source development, but should take steps to manage legal risks such as patent exposure and code contamination. Overall, open source is important for enterprises both as software users and as contributors to open source projects and communities.
This document provides an overview of open source tools and libraries that can be used for .NET projects. It lists many popular options for IDEs, source control, package management, continuous integration servers, metrics, build scripts, ORM, IoC containers, database management, APIs, unit testing, mocking, acceptance testing, application automation, HTTP libraries, JSON, JavaScript libraries, routing, JavaScript MVC frameworks, view engines, roles and access, CoffeeScript, SASS/LESS, CSS libraries, and Visual Studio extensions.
This document provides an overview of GoogleMock, a mocking framework for C++. It defines what a mock object is and why they are useful for testing. GoogleMock allows specifying expectations for mock method calls, including how many times a method will be called and what it will return. It provides matchers to check arguments and actions to define return values or behaviors. The document demonstrates how to write mock classes, set expectations, and use mocks in tests to verify code interactions and behavior.
Amir Barylko gave a presentation on easy automation for everyday projects at the Winnipeg Code Camp in February 2011. He discussed setting up automated builds, tests, dependencies and continuous integration for .NET projects using tools like Rake, Albacore, Bundler, Gallio and TeamCity. The presentation provided guidance on project structure, build scripts, unit testing, static analysis, deployment and acceptance testing.
As most embedded programming is currently performed using C, it is likely that developers will need to transition their code and their working practice to C++. This session proposes a strategy that enables the benefits of C++ to be realized quickly and incrementally.
QtTest is a unit testing framework that comes with Qt. It provides classes and methods for building test fixtures to test units of code. QtTest allows testing signals without needing to write slots using QSignalSpy. It can also simulate user events like mouse clicks and key presses. While QtTest is useful for unit testing, it does not provide isolation of dependencies between units. Tests using QtTest should focus on testing one thing at a time and creating new objects for each test to isolate the code being tested.
Automated hardware testing system using Python. The system includes an embedded test hardware module that can measure voltage, current, resistance and test protocols. Python scripts control the hardware, run test cases, collect results and generate reports. This provides a low-cost automated solution compared to expensive automated test equipment. Test reports show pass/fail results and help locate hardware and software issues.
This document discusses using Python for test automation. It introduces the author as a senior developer in test automation using Python. The document outlines topics to be covered, including testing, automation, different Python modules for test automation, and demos. It promotes Python for test automation due to its ease of use, readability, cross-platform capabilities, large community and support libraries.
Automated Python Test Frameworks for Hardware Verification and ValidationBarbara Jones
This document discusses automated testing of hardware using Python test frameworks. It describes using test frameworks to design broad hardware tests from specifications, control external equipment, and handle test data analysis. As an example, it outlines a phase alignment test between multiple instruments, including setting up the test with a waveform generator, running a sequence of configurations, and calculating the discrete Fourier transform of the results to check for phase differences within a tolerance. The goal is to validate and verify hardware using an automated and flexible test framework approach.
This document discusses test automation strategies for embedded systems. It outlines key points like developing a test automation framework, defining the testing scope and estimating costs. It also describes challenges like accessing information on an embedded device in real-time and handling different device configurations. An example system architecture is shown using custom hardware, FPGA and drivers to test multiple device under test systems and coordinate the test stand farm from a central server.
This is a free module introducing embedded systems. It covers C programming, microcontrollers and software design in 40 ours. Its free for use in universities and institutes on condition of prior notification. Please, do not use it for commercial purposes. If you need full set If you need accompanying labs and software tool feel free to contact me by email (amraldo@hotmail.com) or by mobile (+201223600207).
Automated Testing for Embedded Software in C or C++Lars Thorup
This document discusses automated testing for embedded C software. It introduces Lars Thorup and provides an agenda for the document. It then defines automated testing, describes the Unity testing framework for embedded C, and provides an example of how to handle dependencies in testing. It advocates for continuous integration, breaking dependencies through abstraction and injection, and explains how automated testing can improve software quality through faster development and preventing bugs.
Automated Regression Testing for Embedded Systems in ActionAANDTech
This presentation shows a real world example of streamlining the software development for a medical device system, using continuous integration, Behavior Driven Development, and even robotics!
These ideas may be applied to any software project, regardless of budget or technologies.
The document provides information about embedded systems and the MC68HC11 microcontroller. It discusses the characteristics of embedded systems including speed, power, size, accuracy, and adaptability. It then describes the MC68HC11 microcontroller including its architecture, registers, addressing modes, and operating modes. Examples are provided to illustrate direct, extended, and indexed addressing modes. The document is an educational material about embedded systems and the MC68HC11 microcontroller.
This document is an introduction to C programming presentation. It covers topics like variables and data types, control flow, modular programming, I/O, pointers, arrays, algorithms, data structures and the C standard library. The presentation notes that C was invented in 1972 and is still widely used today for systems programming, operating systems, microcontrollers and more due to its efficiency and low-level access. It also provides examples of C code structure, comments, preprocessor macros and functions.
This document provides an introduction to embedded systems. It defines embedded systems as electronic systems that perform dedicated tasks and include microcontrollers. Characteristics of embedded systems include high speed, low power consumption, small size, accuracy, adaptability, and reliability. Embedded systems are classified based on their functionality and performance requirements. The document also discusses the hardware architecture of embedded systems including the CPU, memory, I/O ports, communication interfaces, and application-specific circuitry. Recent trends in embedded systems include faster processors, lower power consumption, improved communication interfaces, new operating systems, and programming languages.
This presentation provides an overview of embedded systems and describes a collision avoidance robot project. It introduces embedded systems and gives examples. It then describes the key components of embedded systems like processors and memory. It discusses the software used for the project. It introduces the collision avoidance robot project, describing its sensors, control unit, actuators and working. It provides code snippets to show how the robot's movement is controlled based on sensor input to avoid collisions.
This document provides an introduction to embedded systems. It begins with defining what an embedded system is and listing some key characteristics such as reliability, efficiency, dedicated functions, and meeting real-time constraints. The document then covers embedded hardware topics like CPUs, processors, system on chips, memory, I/O devices, and buses. It also discusses embedded software including programming languages, operating systems, middleware, applications, and development models. The document concludes with an outline of the course and exercises for students.
More & more organisations are adopting open source principles in order to build software. They recognise that open source projects are a productive & successful way of delivering high quality code that solves complex business problems. These organisations allow their developers to share their work without boundaries, require code reviews to be focussed & open to everyone in the company, encourage documentation to be added to the same code repository & implement rigorous automation to test and deploy their code. By adopting these principles they increase productivity & build better software that is shipped earlier and more often.
Slides Webinar "Start your DevOps Journey with GITHUB" (in Italiano) by Kirat...Kiratech
GitHub è il più grande host di source code al mondo, e permette agli sviluppatori di scoprire, riutilizzare e contribuire al codice; attraverso GitHub il lavoro è più rapido e i progetti diventano più smart, in quanto partono da un processo di innovazione.
Il webinar analizzerà inoltre i seguenti temi:
- L’esigenza di una Cultura Aziendale basata sull’innovazione e sulla metodologia DevOps
- Introduzione a GitHub
- GitHub come piattaforma di Social Coding
- Come funziona il Git Flow
- I benefici di GitHub e i plus di GitHub Enterprise in termini di
COLLABORATION
SECURITY
ADMINISTRATION
SUPPORT
- Con quali tool si integra GitHub
- Funzionamento e principali features
This document discusses serverless applications and Ippon Technologies. It provides an overview of what serverless computing is, how a monolith application could be broken into serverless functions, best practices for serverless development including packaging code and continuous deployment, and tools for monitoring serverless applications on AWS like CloudWatch. It also advertises that Ippon Technologies is hiring for cloud-focused roles like Cloud Cost Architect and Site Reliability Engineers.
This document provides tips and guidance for starting an information security career. It discusses the importance of continuous learning and hands-on skills development. Some key recommendations include building a home lab, participating in capture-the-flag exercises, learning programming languages like Python and Linux, finding a mentor, considering certifications, and networking within the security community through conferences, Twitter, blogs and open source projects. The document uses examples from penetration testing and security analysis to illustrate real-world scenarios.
DevOps provides the ability to increase time to market to an new level. The question is no longer if we need to speed up our delivery. The challenge is to find the right „pace“ for your product. Not every organization and every product needs to run at the speed of Netflix and Spotify, even if we’d like it to be like this. We need to adjust the organization, processes and tools appropriatly and to identify the real bottlenecks in the delivery pipeline continuously. And by the way, we need to justify our investment in the DevOps mission. Are we just automating the current processes or can we use this DevOps thing to really support our business? In this talk, I’d like to discuss with you how to find the right design for your delivery process and your organization to behave as a business enabler and how you can scale DevOps within your organization without loosing agility. Let’s explore how we can listen carefully to the unknown customer out there and to build software they really like in the speed of your business.
How Spotify reaches the 80%+ of satisfaction of the techies making developers...Francesco Corti
As Spotify grew in number of developers, services and complexity, our velocity was significantly slowing down. Preserving the squads’ autonomy and reducing the time of onboarding (60+ days for the first 10 pull requests) were major challenges destined to increase.
You'll learn how Spotify reached the 80%+ of satisfaction of its techies through the creation of Backstage: open platform for building developer portals. You'll see live demos of how things are done in Spotify and you'll learn how to be part of a hyper-growing community devoted to making the developers happy (Backstage Community).
Gerrit is great, however it is also quite an important part of a bigger DevOps process. In this talk I will describe how multiple tools can be unified under a TeamForge or better DLM umbrella and what are the immediate benefits of it.
Automated hardware testing system using Python. The system includes an embedded test hardware module that can measure voltage, current, resistance and test protocols. Python scripts control the hardware, run test cases, collect results and generate reports. This provides a low-cost automated solution compared to expensive automated test equipment. Test reports show pass/fail results and help locate hardware and software issues.
This document discusses using Python for test automation. It introduces the author as a senior developer in test automation using Python. The document outlines topics to be covered, including testing, automation, different Python modules for test automation, and demos. It promotes Python for test automation due to its ease of use, readability, cross-platform capabilities, large community and support libraries.
Automated Python Test Frameworks for Hardware Verification and ValidationBarbara Jones
This document discusses automated testing of hardware using Python test frameworks. It describes using test frameworks to design broad hardware tests from specifications, control external equipment, and handle test data analysis. As an example, it outlines a phase alignment test between multiple instruments, including setting up the test with a waveform generator, running a sequence of configurations, and calculating the discrete Fourier transform of the results to check for phase differences within a tolerance. The goal is to validate and verify hardware using an automated and flexible test framework approach.
This document discusses test automation strategies for embedded systems. It outlines key points like developing a test automation framework, defining the testing scope and estimating costs. It also describes challenges like accessing information on an embedded device in real-time and handling different device configurations. An example system architecture is shown using custom hardware, FPGA and drivers to test multiple device under test systems and coordinate the test stand farm from a central server.
This is a free module introducing embedded systems. It covers C programming, microcontrollers and software design in 40 ours. Its free for use in universities and institutes on condition of prior notification. Please, do not use it for commercial purposes. If you need full set If you need accompanying labs and software tool feel free to contact me by email (amraldo@hotmail.com) or by mobile (+201223600207).
Automated Testing for Embedded Software in C or C++Lars Thorup
This document discusses automated testing for embedded C software. It introduces Lars Thorup and provides an agenda for the document. It then defines automated testing, describes the Unity testing framework for embedded C, and provides an example of how to handle dependencies in testing. It advocates for continuous integration, breaking dependencies through abstraction and injection, and explains how automated testing can improve software quality through faster development and preventing bugs.
Automated Regression Testing for Embedded Systems in ActionAANDTech
This presentation shows a real world example of streamlining the software development for a medical device system, using continuous integration, Behavior Driven Development, and even robotics!
These ideas may be applied to any software project, regardless of budget or technologies.
The document provides information about embedded systems and the MC68HC11 microcontroller. It discusses the characteristics of embedded systems including speed, power, size, accuracy, and adaptability. It then describes the MC68HC11 microcontroller including its architecture, registers, addressing modes, and operating modes. Examples are provided to illustrate direct, extended, and indexed addressing modes. The document is an educational material about embedded systems and the MC68HC11 microcontroller.
This document is an introduction to C programming presentation. It covers topics like variables and data types, control flow, modular programming, I/O, pointers, arrays, algorithms, data structures and the C standard library. The presentation notes that C was invented in 1972 and is still widely used today for systems programming, operating systems, microcontrollers and more due to its efficiency and low-level access. It also provides examples of C code structure, comments, preprocessor macros and functions.
This document provides an introduction to embedded systems. It defines embedded systems as electronic systems that perform dedicated tasks and include microcontrollers. Characteristics of embedded systems include high speed, low power consumption, small size, accuracy, adaptability, and reliability. Embedded systems are classified based on their functionality and performance requirements. The document also discusses the hardware architecture of embedded systems including the CPU, memory, I/O ports, communication interfaces, and application-specific circuitry. Recent trends in embedded systems include faster processors, lower power consumption, improved communication interfaces, new operating systems, and programming languages.
This presentation provides an overview of embedded systems and describes a collision avoidance robot project. It introduces embedded systems and gives examples. It then describes the key components of embedded systems like processors and memory. It discusses the software used for the project. It introduces the collision avoidance robot project, describing its sensors, control unit, actuators and working. It provides code snippets to show how the robot's movement is controlled based on sensor input to avoid collisions.
This document provides an introduction to embedded systems. It begins with defining what an embedded system is and listing some key characteristics such as reliability, efficiency, dedicated functions, and meeting real-time constraints. The document then covers embedded hardware topics like CPUs, processors, system on chips, memory, I/O devices, and buses. It also discusses embedded software including programming languages, operating systems, middleware, applications, and development models. The document concludes with an outline of the course and exercises for students.
More & more organisations are adopting open source principles in order to build software. They recognise that open source projects are a productive & successful way of delivering high quality code that solves complex business problems. These organisations allow their developers to share their work without boundaries, require code reviews to be focussed & open to everyone in the company, encourage documentation to be added to the same code repository & implement rigorous automation to test and deploy their code. By adopting these principles they increase productivity & build better software that is shipped earlier and more often.
Slides Webinar "Start your DevOps Journey with GITHUB" (in Italiano) by Kirat...Kiratech
GitHub è il più grande host di source code al mondo, e permette agli sviluppatori di scoprire, riutilizzare e contribuire al codice; attraverso GitHub il lavoro è più rapido e i progetti diventano più smart, in quanto partono da un processo di innovazione.
Il webinar analizzerà inoltre i seguenti temi:
- L’esigenza di una Cultura Aziendale basata sull’innovazione e sulla metodologia DevOps
- Introduzione a GitHub
- GitHub come piattaforma di Social Coding
- Come funziona il Git Flow
- I benefici di GitHub e i plus di GitHub Enterprise in termini di
COLLABORATION
SECURITY
ADMINISTRATION
SUPPORT
- Con quali tool si integra GitHub
- Funzionamento e principali features
This document discusses serverless applications and Ippon Technologies. It provides an overview of what serverless computing is, how a monolith application could be broken into serverless functions, best practices for serverless development including packaging code and continuous deployment, and tools for monitoring serverless applications on AWS like CloudWatch. It also advertises that Ippon Technologies is hiring for cloud-focused roles like Cloud Cost Architect and Site Reliability Engineers.
This document provides tips and guidance for starting an information security career. It discusses the importance of continuous learning and hands-on skills development. Some key recommendations include building a home lab, participating in capture-the-flag exercises, learning programming languages like Python and Linux, finding a mentor, considering certifications, and networking within the security community through conferences, Twitter, blogs and open source projects. The document uses examples from penetration testing and security analysis to illustrate real-world scenarios.
DevOps provides the ability to increase time to market to an new level. The question is no longer if we need to speed up our delivery. The challenge is to find the right „pace“ for your product. Not every organization and every product needs to run at the speed of Netflix and Spotify, even if we’d like it to be like this. We need to adjust the organization, processes and tools appropriatly and to identify the real bottlenecks in the delivery pipeline continuously. And by the way, we need to justify our investment in the DevOps mission. Are we just automating the current processes or can we use this DevOps thing to really support our business? In this talk, I’d like to discuss with you how to find the right design for your delivery process and your organization to behave as a business enabler and how you can scale DevOps within your organization without loosing agility. Let’s explore how we can listen carefully to the unknown customer out there and to build software they really like in the speed of your business.
How Spotify reaches the 80%+ of satisfaction of the techies making developers...Francesco Corti
As Spotify grew in number of developers, services and complexity, our velocity was significantly slowing down. Preserving the squads’ autonomy and reducing the time of onboarding (60+ days for the first 10 pull requests) were major challenges destined to increase.
You'll learn how Spotify reached the 80%+ of satisfaction of its techies through the creation of Backstage: open platform for building developer portals. You'll see live demos of how things are done in Spotify and you'll learn how to be part of a hyper-growing community devoted to making the developers happy (Backstage Community).
Gerrit is great, however it is also quite an important part of a bigger DevOps process. In this talk I will describe how multiple tools can be unified under a TeamForge or better DLM umbrella and what are the immediate benefits of it.
Building an AI Assistant Factory - Rasa Summit 2021Rasa Technologies
Presented by Dominique Boucher Chief Solutions Architect – AI Factory, National Bank of Canada and Eric Charton Senior AI Director AI, National Bank of Canada at the 2021 Rasa Summit. Check out the talk recording on YouTube https://youtu.be/EzTfSDDE8u0
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
Key topics covered:
- Real-world examples of Choreo's comprehensive coverage from application design and deployment, security, scaling, and monitoring
- Running different types of workloads, such as web applications, APIs, microservices, integrations, and tasks at scale, and wire them together to deliver seamless omnichannel digital experiences
- How Choreo improves the developer experience by eliminating repetition, silos, and redundancy through enhanced discoverability and self-serviceability
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
OSS - enterprise adoption strategy and governancePrabir Kr Sarkar
The document discusses open source software (OSS), including its benefits and risks. It covers four main parts:
1. What is OSS and its benefits, such as lower costs, access to source code, and continued innovation.
2. The risks of using OSS, including technical issues, regulatory compliance, security vulnerabilities, legal risks, and impacts to brand.
3. The need for an OSS strategy and policy to maximize benefits while minimizing risks. Critical policy elements are discussed.
4. The importance of governance to ensure effective OSS management, avoid legal issues, and address security and support challenges. Lack of governance can result in technical failures, security breaches and legal action.
How open source empowers startups to start big, with case Double Open OyMindtrek
Track | The Future of Open Source Business
Martin von Willebrand, Attorney at HH Partners Attorneys-at-law, Founder at Double Open Oy
Mindtrek Conference
3rd of October 2023.
Tampere, Finland
www.mindtrek.org
No matter what language you use, developing code is the same ñ spec, code, deploy, maintain. The “Big Boys” have teams to manage each task, but what happens when you don’t? I’ll go over some different methods for maintaining internal and external programs that are cheap, open source, and make your life easier. PHP has a plethora of tools for us to use to effectively code and maintain our projects; and the best part is that they are generally inexpensive or even free. The trick is finding and using these tools effectively in a workflow that the developer can use.
Explain the role of a Software Engineer in a tech company like Criteo for students of last year (graduate degree M2) at Grenoble INP - Ensimag, a top french computer engineer school in order to choose his/her career professional path.
See https://ensimag.grenoble-inp.fr/
Windows Store Apps using HTML and JavaScript: Become a Windows App Store deve...Sacha Bruttin
This document provides an overview of developing Windows Store apps using HTML and JavaScript. It discusses getting started with app layout and UI, accessing and displaying data from APIs, enriching apps with features like semantic zoom and animations, implementing search contracts, and submitting apps to the Windows Store. The presentation is aimed at helping developers learn how to build their first Windows Store app in 60 minutes.
Byte9 is a software development company that specializes in agile development processes to collaboratively create web applications. They have over a decade of experience developing award-winning solutions. Outsourcing development to an agency like Byte9 provides benefits such as reduced costs, improved quality, reduced risk, and leveraging existing expertise and processes. When considering an outsourcing partner, it is important to evaluate their development methodology, infrastructure, testing practices, and experience developing the required type of solution.
Open-DO: Towards a Lean Approach for Certification (Cyrille Comar)AdaCore
In this series of talks, our panel of experts present real world examples that illustrate how Lean Production concepts are being successfully applied to software development. In particular to applications that have to meet the highest levels of safety and security.
An Introduction to Kotlin for Android DevelopmentVíctor Bolinches
This document outlines an introduction to Kotlin for Android development. It covers why Kotlin is a good choice, its use as an official Google language, compilers, IDEs, build tools, basics of the language, functions, classes, coroutines and more. It also discusses setting up an Android project in Kotlin and provides example projects.
Similar to C++ and Embedded Linux - a perfect match (20)
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
C++ and Embedded Linux - a perfect match
1. COPYRIGHT 2016 – Fundação CERTI
C++ and
Embedded Linux:
a perfect match
Vinicius Zein | Fundação CERTI
2. COPYRIGHT 2016 – Fundação CERTI
https://br.linkedin.com/in/viniciuszein
Vinicius Tadeu Zein
R&D Coordinator @CERTI Foundation
• Responsible for the Embedded Systems team
• More than 10 years developing Embedded Systems
• In companies like Atmel, LG Electronics and CERTI
3. COPYRIGHT 2016 – Fundação CERTI
R&D Institute
Founded in 1984 with the mission to
develop technology solutions for products
and processes
500 employees
Private, but results are reinvested in R&D
MCTI and SUFRAMA accredited – projects
with “Lei de Informática”, “Lei do Bem”
and Embrapii
More than 500 clients around the world
4. COPYRIGHT 2016 – Fundação CERTI
The information in this presentation was compiled from sources believed to be
reliable for informational purposes only.
Content includes opinions, presentations, articles, hyperlinks or other third party
content (“Third Party Material”) that is not intended to, nor constitutes an
endorsement by CERTI of the author or the Third Party Materials. The content
and views within the Third Party Material are solely those of the third party and
do not reflect the opinions of CERTI.
The opinions expressed in this presentation and on the following slides are
solely those of the
presenter and not necessarily those of CERTI. CERTI does not guarantee the
accuracy or
reliability of the information provided herein.
.Disclaimer
5. COPYRIGHT 2016 – Fundação CERTI
SU
MMA
RY
CHAPTER 1
Embedded
Linux
CHAPTER 2
C++
CHAPTER 3
Development
tools and
debugging
CHAPTER 4
Test
frameworks
CHAPTER 5
Test driven
development
CHAPTER 6
Final
considerations
8. COPYRIGHT 2016 – Fundação CERTI
Telephone exchanges
IP Phones and Smartphones
TVs and Set-top boxes
Printers
Electronic Control Units for cars
Cameras
Android systems
CHAPTER 1 | EMBEDDED LINUX
11. COPYRIGHT 2016 – Fundação CERTI
C++“cee plus plus”
CHAPTER 2 Multi-paradigm
Object oriented
Templates, inline functions
Metaprogramming
High-performative and powerfull
Lots of tools
Compatibility with C - just in case ;)
STL, Boost, ACE
Evolving language
CHAPTER 2 | C++
C++85 style "C with Classes”, C++98, C++03,
C++11, C++14, C++17
12. COPYRIGHT 2016 – Fundação CERTI
Don’t lower
your level of
abstraction
without a good reason!
Low-levelimplies
Morecode
Morebugs
Highermaintenancecosts
13. COPYRIGHT 2016 – Fundação CERTI
Embedded
Linux
C+
+
Perfect match
CHAPTER 2 | C++
14. COPYRIGHT 2016 – Fundação CERTI
DEVELOPMENT
TOOLS AND
DEBUGGING
CHAPTER 3
15. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 3 | DEVELOPMENT TOOLS AND DEBUGGING
“Making Embedded Linux Easy
Buildroot is a simple, efficient and
easy-to-use tool to generate
embedded Linux systems through
cross-compilation.”
Build systems > Buildroot
16. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 3 | DEVELOPMENT TOOLS AND DEBUGGING
Build systems > Yocto Project
“It's not an embedded
Linux distribution
– it creates a custom
one for you”
17. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 3 | DEVELOPMENT TOOLS AND DEBUGGING
Build systems > Autoconf
Rake
Boost.Build
Qmake
Scons
CMake
18. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 3 | DEVELOPMENT TOOLS AND DEBUGGING
IDEs * Code edition and navigation
Vim
Emacs
Sublime Text 2
Eclipse CDT
Netbeans
SlickEdit
QtCreator
JetBrains AppCode
19. If debugging is the
process of removing
bugs,
then programming must
be the process of putting
them in Edsger Dijkstra
20. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 3 | DEVELOPMENT TOOLS AND DEBUGGING
Debugging
Logs
Command Line Interface (CLI)
gdb (post morten)
gdb + gdbserver
ddd
Google BreakPad
For each
bug found,
a new unit
test.
21. COPYRIGHT 2016 – Fundação CERTI
CAPÍTULO 3 | FERRAMENTAS DESENVOLVIMENTO E DEBUGGING
Debugging > GDB
Post morten
gdb <program> -c <core_file>
bt full -> backtrace
print <variable>
frame <frame_id>
thread <thread_id>
33. COPYRIGHT 2016 – Fundação CERTI
CHAPTER 4 | TEST FRAMEWORKS FOR C++
Unit tests – gtest > Well documented
Multiplatform
Linux, Windows, Mac OS X
Easy to use, easy to configure
1 execution > multiple failures
39. COPYRIGHT 2016 – Fundação CERTI
gmock > Google Mocking Framework for tests
in C++
Real targets are not always available
Simulating behavior
Creating emulators
CHAPTER 4 | TEST FRAMEWORKS FOR C++
52. COPYRIGHT 2016 – Fundação CERTI
CAPÍTULO 6 | Final considerations
RAII
RAII
Resource
Acquisition Is
Initialization
53. COPYRIGHT 2016 – Fundação CERTI
Use a
code standard
http://www.chromium.org/developers/coding-style
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
http://clang.llvm.org/docs/ClangFormat.html
By 1995 Linux was already attracting attention beyond desktop and server
It just needed a few more steps to make it a real contender…
BusyBox:
Originally written by Bruce Perens in 1995 and declared complete for his intended usage in 1996,[14] BusyBox originally aimed to put a complete bootable system on a single floppy that would serve both as a rescue disk and as an installer for the Debian distribution. Since that time, it has been extended to become the de facto standard core userspace toolset for embedded Linux devices and Linux distribution installers. Since each Linux executable requires several kilobytes of overhead, having the BusyBox program combine over two hundred programs together often saves substantial disk space and system memory.
Making the Linux code portable
1995 Mips
1996 m68k, ppc
1998 ucLinux portadk pra Dragonball
1999 ARM
Where are we today?
Android has 1.5 million activations per day, installed base 900 million
250 million set top boxes and smart TVs per annum
Embedded Linux is the default OS
2005 Nokia 770 Internet Tablet running Maemo Linux
2002: December: Linksys release the WRT54G
2003: July Linksys post GPL source components of the WRT54G firmware
2004: OpenWRT project starts
2004 onwards: a large proportion of WiFi routers run Linux
Where are we today?
Android has 1.5 million activations per day, installed base 900 million
250 million set top boxes and smart TVs per annum
Embedded Linux is the default OS
When was C++ invented?
I started work on what became C++ in 1979. The initial version was called "C with Classes". The first version of C++ was used internally in AT&T in August 1983. The name "C++" was used late that year. The first commercial implementation was released October 1985 at the same time as the publication of the 1st edition of The C++ Programming Language. Templates and exception handling were included later in the 1980's and documented in The Annotated C++ Reference Manual and The C++ Programming Language (2rd Edition). The first ISO C++ standard was C++98 as described in The C++ Programming Language (3rd Edition).
The current definition of C++ The 2011 ISO C++ Standard described in The C++ Programming Language (4th Edition).
You can find a more complete timeline and more detailed explanations in The Design and Evolution of C++ and A History of C++: 1979-1991 and Evolving a language in and for the real world: C++ 19.
Different projects have different constraints
– Hardware resources
– Reliability constraints
– Efficiency constraints
• Time
• Power
– Time to completion
– Developer skills
Extremes
– All that matters is to get to the market first!
– If the program fails, people die
– A 50% overhead implies the need for another $50M server farm
-> para gerar fs básico, compilar bibliotecas de terceiros,
-> permite adicionar novas bibliotecas
Buildroot is a set of Makefiles and patches that makes it easy to generate a complete embedded Linux system. Buildroot can generate any or all of a cross-compilation toolchain, a root filesystem, a kernel image and a bootloader image. Buildroot is useful mainly for people working with small or embedded systems, using various CPU architectures (x86, ARM, MIPS, PowerPC, etc.) : it automates the building process of your embedded system and eases the cross-compilation process.
The major Buildroot features are:
Can handle everything in your embedded system development project: cross-compiling toolchain, root filesystem generation, kernel image compilation and bootloader compilation. Buildroot is also sufficiently flexible that it can also be used for only one or several of these steps.
Is very easy to set up, thanks to its menuconfig, gconfig and xconfig configuration interfaces, familiar to all embedded Linux developers. Building a basic embedded Linux system with Buildroot typically takes 15-30 minutes.
Supports several hundreds of packages for userspace applications and libraries: X.org stack, Gtk2, Qt, DirectFB, SDL, GStreamer and a large number of network-related and system-related utilities and libraries are supported.
Supports multiple filesystem types for the root filesystem image: JFFS2, UBIFS, tarballs, romfs, cramfs, squashfs and more.
Can generate an (e)glibc or uClibc cross-compilation toolchain, or re-use your existing glibc, eglibc or uClibc cross-compilation toolchain
Has a simple structure that makes it easy to understand and extend. It relies only on the well-known Makefile language.
Buildroot is maintained by Peter Korsgaard, and licensed under the GNU GENERAL PUBLIC LICENSE V2 (Or later). Stable releases are delivered every three months.
The Yocto Project is an open-source collaboration project focused on embedded Linux developers. Among other things, the Yocto Project uses a build system based on the OpenEmbedded (OE) project, which uses the BitBake tool, to construct complete Linux images. The BitBake and OE components are combined together to form Poky, a reference build system.
Intel
Linux Foundation
-> Autoconf -> complexo, curva de aprendizagem é alta
-> Rake -> não escala bem, depende das ferramentas do Ruby
-> Boost.build – Bjam
-> Qmake -> qt make
-> Cmake -> escala bem, é rápido, não tem outras dependências
*** 1-click / 1-line build -> alterou o código, com 1 clique ou 1 linha, reconstrói tudo
?? Falar do ninja?
Uma ferramenta de logs com informações como timestamp, thread id, file name e line number facilita muito a investigação de problemas.
Gdb para analise após o crash -> geração de stack trace, verificação de estados de objetos e seus atributos
Gdb+gdbserver -> breakpoints, debugging em real time
Breakpad ->
strace
-> gerar um core dump
-> investigar com o gdb na hr
Ulimit –c unlimited
Framework do Google para testes em C++
Google Test is designed to be portable: it doesn't require exceptions or RTTI; it works around various bugs in various compilers and environments; etc. As a result, it works on Linux, Mac OS X, Windows and several embedded operating systems.
Nonfatal assertions (EXPECT_*) have proven to be great time savers, as they allow a test to report multiple failures in a single edit-compile-test cycle.
It's easy to write assertions that generate informative messages: you just use the stream syntax to append any additional information, e.g.ASSERT_EQ(5, Foo(i)) << " where i = " << i;. It doesn't require a new set of macros or special functions.
Google Test automatically detects your tests and doesn't require you to enumerate them in order to run them.
Death tests are pretty handy for ensuring that your asserts in production code are triggered by the right conditions.
SCOPED_TRACE helps you understand the context of an assertion failure when it comes from inside a sub-routine or loop.
You can decide which tests to run using name patterns. This saves time when you want to quickly reproduce a test failure.
Google Test can generate XML test result reports that can be parsed by popular continuous build system like Hudson.
Simple things are easy in Google Test, while hard things are possible: in addition to advanced features like global test environments and tests parameterized by values or types, Google Test supports various ways for the user to extend the framework -- if Google Test doesn't do something out of the box, chances are that a user can implement the feature using Google Test's public API, without changing Google Test itself. In particular, you can:
expand your testing vocabulary by defining custom predicates,
teach Google Test how to print your types,
define your own testing macros or utilities and verify them using Google Test's Service Provider Interface, and
reflect on the test cases or change the test output format by intercepting the test events.
Antes de implementar uma nova feature, implementar testes para essa nova feature
Novo bug -> novo caso de teste
Como fazer isso em C++ e embarcados?