The document discusses microservices and provides an agenda for the presentation. The agenda includes discussing why use microservices, what microservices are, common antipatterns, and how to work with microservices. Examples of antipatterns that will be discussed include having a monolithic database shared across services, services with unknown callers due to lack of request IDs, hardcoded service addresses, synchronous communication between services, and using different communication protocols between services.
My speech about Microservices at Geecon Prague: what are microservices and why we use them? what are the anti-patterns? what opensource solution we can use to manage them?
A simple explanation of basic principles of Distributed Programming with NodeJS. The CAP Theorem is fully explained, with working code the you can try yourself!
Geecon10: Object Oriented for nonbelieversBruno Bossola
The document provides an overview of object-oriented principles for developers unfamiliar with OO concepts. It discusses how OO aims to maintain traceability between requirements, analysis and design to reduce complexity. The document then walks through analyzing and designing parts of a payroll system to demonstrate OO techniques like identifying abstractions and behaviors that will/won't change, using polymorphism to hide complexity, and decoupling responsibilities. The goal is to convince "nonbelievers" that applying pure OO principles from the start can provide benefits over immediately choosing frameworks/tools.
Fernando Ike provides a document discussing DevOps anti-patterns, what DevOps is and is not, and best practices. The document includes sections on DevOps training topics, common misconceptions about DevOps roles, and advice for developers, operations, and managers implementing DevOps processes and culture. Anti-patterns discussed include using buzzwords to sell products/services, treating DevOps as only tools or processes, and prioritizing experience over problem-solving skills in hiring.
This document discusses coding Java for XPage developers. It covers topics like functions, classes, code comments, error handling, and the OpenNTF Domino API project. The OpenNTF Domino API provides Java classes for working with Domino sessions and databases that can make development easier. Instructions are given on how to install the API JAR files and configure the Domino server to use the API classes.
There has been lots of talk on the importance of writing good and manageable code – code whose inherent beauty bring tears to the eyes of the developer that looks at it. This talk is not like that. This talk will focus on the techniques that are used by millions across the world to bring tears to the eyes of the maintaining developer, as well as a graphic stream of profanities.We will investigate some of the most common anti-patterns and half-measures that occur in real live code, and will marvel at the ingenuity and outright creativity necessary to create ugly messes of unmaintainable code that still manages to work for it’s users.
The document discusses clean code practices such as using meaningful names, small and focused functions, and avoiding null values and duplicate code. It also discusses bad code smells like no separation of concerns. The presenter advocates for refactoring, code reviews, and using tools like PHPLOC and PHPCodeSniffer to maintain clean code. He welcomes questions and feedback on topics like WTF as a metric, comments, and error handling best practices.
My speech about Microservices at Geecon Prague: what are microservices and why we use them? what are the anti-patterns? what opensource solution we can use to manage them?
A simple explanation of basic principles of Distributed Programming with NodeJS. The CAP Theorem is fully explained, with working code the you can try yourself!
Geecon10: Object Oriented for nonbelieversBruno Bossola
The document provides an overview of object-oriented principles for developers unfamiliar with OO concepts. It discusses how OO aims to maintain traceability between requirements, analysis and design to reduce complexity. The document then walks through analyzing and designing parts of a payroll system to demonstrate OO techniques like identifying abstractions and behaviors that will/won't change, using polymorphism to hide complexity, and decoupling responsibilities. The goal is to convince "nonbelievers" that applying pure OO principles from the start can provide benefits over immediately choosing frameworks/tools.
Fernando Ike provides a document discussing DevOps anti-patterns, what DevOps is and is not, and best practices. The document includes sections on DevOps training topics, common misconceptions about DevOps roles, and advice for developers, operations, and managers implementing DevOps processes and culture. Anti-patterns discussed include using buzzwords to sell products/services, treating DevOps as only tools or processes, and prioritizing experience over problem-solving skills in hiring.
This document discusses coding Java for XPage developers. It covers topics like functions, classes, code comments, error handling, and the OpenNTF Domino API project. The OpenNTF Domino API provides Java classes for working with Domino sessions and databases that can make development easier. Instructions are given on how to install the API JAR files and configure the Domino server to use the API classes.
There has been lots of talk on the importance of writing good and manageable code – code whose inherent beauty bring tears to the eyes of the developer that looks at it. This talk is not like that. This talk will focus on the techniques that are used by millions across the world to bring tears to the eyes of the maintaining developer, as well as a graphic stream of profanities.We will investigate some of the most common anti-patterns and half-measures that occur in real live code, and will marvel at the ingenuity and outright creativity necessary to create ugly messes of unmaintainable code that still manages to work for it’s users.
The document discusses clean code practices such as using meaningful names, small and focused functions, and avoiding null values and duplicate code. It also discusses bad code smells like no separation of concerns. The presenter advocates for refactoring, code reviews, and using tools like PHPLOC and PHPCodeSniffer to maintain clean code. He welcomes questions and feedback on topics like WTF as a metric, comments, and error handling best practices.
This document provides an overview of React including what it is, who uses it, its core concepts, and why one should use React. React is a library for building user interfaces that uses a component-based approach and virtual DOM for declarative programming. It allows components to be written once and used on the web, mobile, and beyond. Core concepts include components, virtual DOM, and unidirectional data flow. Benefits of React include the ability to write code once and deploy anywhere, fast rendering with virtual DOM, and the growing demand for React skills.
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveNETWAYS
Kris Buytaert discussed the evolution of infrastructure deployment and configuration management over the past 20 years. Early methods involved manual installations and copying config files (1996) while later approaches included tools like Mondo Rescue for single instances (2001), SystemImager for reproducible infrastructures (2003), and Kickstart/FAI for OS installation (2005). The talk advocates treating infrastructure as code using tools like Puppet, Chef, and CFEngine, with best practices like versioning, testing, and separate environments. It acknowledges early challenges in getting operators to adopt new methods but argues they are now essential for managing modern, distributed systems.
This document summarizes several Java user groups and communities in Vienna, Austria. It describes the Java Student User Group that meets monthly and focuses on core Java topics and frameworks. It also mentions DevFest Vienna, an annual conference on Java topics, and the Eclipse DemoCamp in Vienna which focuses on Eclipse tools. Other groups discussed include the AndroidHeads for Android development, and the Vienna Scala User Group. Meetup details like locations, schedules and websites are provided for each community.
Peter Kofler presented on pair programming. Some key benefits of pair programming include improved code quality, knowledge sharing between partners, and mentoring junior developers. Effective pair programming involves two programmers working together at one workstation, with one acting as the driver writing code while the other navigates, reviewing the work. It is most useful for production code, programming tasks requiring problem solving, and mentoring novices. Managing the human dynamics between partners and practicing techniques like ping-pong pairing are important for success.
This presentation is an introduction to the Joomla!Platform, what is the platform, what are the ideas behind it, why we have this separation between CMS and platform. I am speaking about the pro and cons, briefly ;-) A big part are real live examples how I or others have used the platform, when it makes sense to use the platform and when it doesn't makes sense. I do explain how to contribute to the platform and to the project at all. PHP knowledge is not necessary.
This document introduces functional programming concepts using the Elixir programming language. It summarizes that Elixir is a dynamic and functional language that runs on the Erlang VM and is designed for fault tolerance and distribution. It emphasizes immutable state, recursion over loops, and passing functions as first-class citizens. The document provides examples of communication between processes, static and dynamic typing in Elixir, and building fault-tolerant applications using supervisors. It encourages learning Elixir through patience and finding the right learning method.
TinyMCE is a well-known JavaScript library for rich text editing. In 2017, we migrated the entire codebase to TypeScript. Find out the tools we used, challenges we faced and the advantages we are now experiencing. Presented by Millie Macdonald, Software Engineer @ Tiny.
This document discusses aspect-oriented programming (AOP) and how it can be used to clean up code. It begins with an introduction to AOP and what aspects are, which are pieces of cross-cutting functionality used across multiple parts of a system. Examples are given of common cross-cutting concerns like logging and caching. The document then demonstrates how to refactor code to use aspects through examples and discusses benefits like improved encapsulation and reuse. It also covers how to test aspects by testing pointcuts and advice functionality.
Merged Automation Talk - Pete Carapetyan - Feb 2016 petecarapetyan
This document discusses different types of automation and how they have evolved over time. It identifies seven main types: imperative, declarative, templating, implicit, design, UI, and frameworks. The document then provides examples to illustrate how certain automation types have replaced others as technologies advanced. It highlights projects like Polymer, PolyRest, Spring Boot, Spring Data, and Docker that represent shifts toward more implicit and design-based approaches over declarative configurations and templating. The document concludes with references to view the code, slides, and demo for the PolyRest project discussed.
This document discusses aspect-oriented programming and how aspects can be used to clean up code by encapsulating cross-cutting concerns. It provides examples of common cross-cutting concerns like logging, validation, and transactions. The presenter explains what aspects are and how they work, including different types of advices. Demonstrations are provided to show refactoring code to use aspects and testing aspects. The overall message is that aspects promote cleaner, more reusable code by separating cross-cutting concerns from the main code logic.
This document provides an introduction to Python and the Django web framework. It discusses how Python is a modern, versatile programming language used by many large companies. It also summarizes how Django is a leading Python web framework that emphasizes clean design patterns while also allowing for fast development to meet deadlines. Code demonstrations are provided for common Python and Django features.
The document provides guidance for developers on best practices for writing code. It emphasizes following rules like clean code, code reviews, and refactoring. Key points include writing simple and readable code, avoiding duplication, learning from others, and ensuring code meets definitions of done that specify requirements like testing and code quality. Refactoring is advised to reduce technical debt by improving structure without changing functionality. Code reviews are recommended to catch defects through constructive peer review.
The working architecture of node js applications open tech week javascript ...Viktor Turskyi
We launched more than 60 projects, developed a web application architecture that is suitable for projects of completely different sizes. In the talk, I'll analyze this architecture, will consider the question what to choose “monolith or microservices”, will show the main architectural mistakes that developers make.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It adds static typing and structuring mechanisms like classes, interfaces, and modules to JavaScript to help catch errors and provide better documentation for large scale JavaScript application development. Some key features of TypeScript include optional static types for functions and variables, classes with inheritance and static methods, interfaces, modules, generics, and type inference.
Adopting language server for apache camel feedback from a java/Eclipse plugi...Aurélien Pupier
Adopting language server for apache camel feedback from a java/eclipse plugin developer perspective
https://github.com/camel-tooling/camel-language-server
Kotlin is a great language for developing server-side applications; it's an object-oriented language and also a functional one, supporting features such as function types, lambdas or higher order functions. But...is this enough to switch completely from a imperative paradigm to a functional paradigm?
In this talk we'll see how features from Arrow library completes Kotlin in order to follow a pure functional way.
What drives Innovation? Innovations And Technological Solutions for the Distr...Stefano Fago
Social networking and social marketing drove innovation over the last 5 years by creating a need for [1] big data to support large user numbers, [2] high performance to support big data, and [3] high scalability to support growth. This need led to the development of new technologies for custom and polyglot persistence, streaming analytics, high performance through concurrency and parallelism, and scalability through distributed algorithms and systems. Enabling fast evolution required tools for rapid development, testing, and deployment as well as skilled and engaged employees.
(Image on page 3: it's the traditional fast/good/cheap trade-off. Something glitched in the conversion))
The decisions we make in getting software ready to ship can have lasting consequences for later versions. Early priorities can end up setting the direction for the whole project.
My presentation from PyConAU 2012 (including bonus slides that were cut before the talk due to time limitations)
This document provides an overview of React including what it is, who uses it, its core concepts, and why one should use React. React is a library for building user interfaces that uses a component-based approach and virtual DOM for declarative programming. It allows components to be written once and used on the web, mobile, and beyond. Core concepts include components, virtual DOM, and unidirectional data flow. Benefits of React include the ability to write code once and deploy anywhere, fast rendering with virtual DOM, and the growing demand for React skills.
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveNETWAYS
Kris Buytaert discussed the evolution of infrastructure deployment and configuration management over the past 20 years. Early methods involved manual installations and copying config files (1996) while later approaches included tools like Mondo Rescue for single instances (2001), SystemImager for reproducible infrastructures (2003), and Kickstart/FAI for OS installation (2005). The talk advocates treating infrastructure as code using tools like Puppet, Chef, and CFEngine, with best practices like versioning, testing, and separate environments. It acknowledges early challenges in getting operators to adopt new methods but argues they are now essential for managing modern, distributed systems.
This document summarizes several Java user groups and communities in Vienna, Austria. It describes the Java Student User Group that meets monthly and focuses on core Java topics and frameworks. It also mentions DevFest Vienna, an annual conference on Java topics, and the Eclipse DemoCamp in Vienna which focuses on Eclipse tools. Other groups discussed include the AndroidHeads for Android development, and the Vienna Scala User Group. Meetup details like locations, schedules and websites are provided for each community.
Peter Kofler presented on pair programming. Some key benefits of pair programming include improved code quality, knowledge sharing between partners, and mentoring junior developers. Effective pair programming involves two programmers working together at one workstation, with one acting as the driver writing code while the other navigates, reviewing the work. It is most useful for production code, programming tasks requiring problem solving, and mentoring novices. Managing the human dynamics between partners and practicing techniques like ping-pong pairing are important for success.
This presentation is an introduction to the Joomla!Platform, what is the platform, what are the ideas behind it, why we have this separation between CMS and platform. I am speaking about the pro and cons, briefly ;-) A big part are real live examples how I or others have used the platform, when it makes sense to use the platform and when it doesn't makes sense. I do explain how to contribute to the platform and to the project at all. PHP knowledge is not necessary.
This document introduces functional programming concepts using the Elixir programming language. It summarizes that Elixir is a dynamic and functional language that runs on the Erlang VM and is designed for fault tolerance and distribution. It emphasizes immutable state, recursion over loops, and passing functions as first-class citizens. The document provides examples of communication between processes, static and dynamic typing in Elixir, and building fault-tolerant applications using supervisors. It encourages learning Elixir through patience and finding the right learning method.
TinyMCE is a well-known JavaScript library for rich text editing. In 2017, we migrated the entire codebase to TypeScript. Find out the tools we used, challenges we faced and the advantages we are now experiencing. Presented by Millie Macdonald, Software Engineer @ Tiny.
This document discusses aspect-oriented programming (AOP) and how it can be used to clean up code. It begins with an introduction to AOP and what aspects are, which are pieces of cross-cutting functionality used across multiple parts of a system. Examples are given of common cross-cutting concerns like logging and caching. The document then demonstrates how to refactor code to use aspects through examples and discusses benefits like improved encapsulation and reuse. It also covers how to test aspects by testing pointcuts and advice functionality.
Merged Automation Talk - Pete Carapetyan - Feb 2016 petecarapetyan
This document discusses different types of automation and how they have evolved over time. It identifies seven main types: imperative, declarative, templating, implicit, design, UI, and frameworks. The document then provides examples to illustrate how certain automation types have replaced others as technologies advanced. It highlights projects like Polymer, PolyRest, Spring Boot, Spring Data, and Docker that represent shifts toward more implicit and design-based approaches over declarative configurations and templating. The document concludes with references to view the code, slides, and demo for the PolyRest project discussed.
This document discusses aspect-oriented programming and how aspects can be used to clean up code by encapsulating cross-cutting concerns. It provides examples of common cross-cutting concerns like logging, validation, and transactions. The presenter explains what aspects are and how they work, including different types of advices. Demonstrations are provided to show refactoring code to use aspects and testing aspects. The overall message is that aspects promote cleaner, more reusable code by separating cross-cutting concerns from the main code logic.
This document provides an introduction to Python and the Django web framework. It discusses how Python is a modern, versatile programming language used by many large companies. It also summarizes how Django is a leading Python web framework that emphasizes clean design patterns while also allowing for fast development to meet deadlines. Code demonstrations are provided for common Python and Django features.
The document provides guidance for developers on best practices for writing code. It emphasizes following rules like clean code, code reviews, and refactoring. Key points include writing simple and readable code, avoiding duplication, learning from others, and ensuring code meets definitions of done that specify requirements like testing and code quality. Refactoring is advised to reduce technical debt by improving structure without changing functionality. Code reviews are recommended to catch defects through constructive peer review.
The working architecture of node js applications open tech week javascript ...Viktor Turskyi
We launched more than 60 projects, developed a web application architecture that is suitable for projects of completely different sizes. In the talk, I'll analyze this architecture, will consider the question what to choose “monolith or microservices”, will show the main architectural mistakes that developers make.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It adds static typing and structuring mechanisms like classes, interfaces, and modules to JavaScript to help catch errors and provide better documentation for large scale JavaScript application development. Some key features of TypeScript include optional static types for functions and variables, classes with inheritance and static methods, interfaces, modules, generics, and type inference.
Adopting language server for apache camel feedback from a java/Eclipse plugi...Aurélien Pupier
Adopting language server for apache camel feedback from a java/eclipse plugin developer perspective
https://github.com/camel-tooling/camel-language-server
Kotlin is a great language for developing server-side applications; it's an object-oriented language and also a functional one, supporting features such as function types, lambdas or higher order functions. But...is this enough to switch completely from a imperative paradigm to a functional paradigm?
In this talk we'll see how features from Arrow library completes Kotlin in order to follow a pure functional way.
What drives Innovation? Innovations And Technological Solutions for the Distr...Stefano Fago
Social networking and social marketing drove innovation over the last 5 years by creating a need for [1] big data to support large user numbers, [2] high performance to support big data, and [3] high scalability to support growth. This need led to the development of new technologies for custom and polyglot persistence, streaming analytics, high performance through concurrency and parallelism, and scalability through distributed algorithms and systems. Enabling fast evolution required tools for rapid development, testing, and deployment as well as skilled and engaged employees.
(Image on page 3: it's the traditional fast/good/cheap trade-off. Something glitched in the conversion))
The decisions we make in getting software ready to ship can have lasting consequences for later versions. Early priorities can end up setting the direction for the whole project.
My presentation from PyConAU 2012 (including bonus slides that were cut before the talk due to time limitations)
Software Engineering Advice from Google's Jeff Dean for Big, Distributed Systemsadrianionel
This document provides software engineering advice from Jeff Dean based on his experience building large-scale distributed systems at Google. Some key points include:
- Design systems to be simple, scalable, performant, reliable, and general while balancing different goals. Get advice on designs before coding.
- Distributed systems require careful data partitioning and high-capacity even within datacenters. Products are deployed across multiple datacenters worldwide.
- Real hardware is unreliable so systems must be designed to handle many types of failures gracefully.
- Prioritize low latency, consider data access patterns and encoding, use caching and parallelism where possible.
- Favor eventual consistency over strong consistency for availability.
- Add monitoring, debugging hooks,
Are you using an opensource library? There's a good chance you are vulnerable...Codemotion
#Codemotion Rome 2018 - Do you remember Equifax? How did someone manage to steal the data of almost 200 million users? Well, Equifax simply fell victim to a vulnerability on a framework, Struts, which older developers like me remember well. But you folks, who now use cooler things like Guava or Jackson, do you feel safe? Unfortunately, you are not. After a clear introduction to the problem, with a couple of other illustrious examples, we will perform a couple of exploits together, live, and then take a look at possible prevention strategies. This talk will open your eyes to a problem you did not know you had.
Are you using an open source library? - Bruno Bossola - Codemotion Rome 2018Codemotion
Do you remember Equifax? How did someone manage to steal the data of almost 200 million users? Well, Equifax simply fell victim to a vulnerability on a framework, Struts, which older developers like me remember well. But you folks, who now use cooler things like Guava or Jackson, do you feel safe? Unfortunately, you are not. After a clear introduction to the problem, with a couple of other illustrious examples, we will perform a couple of exploits together, live, and then take a look at possible prevention strategies. This talk will open your eyes to a problem you did not know you had.
Not my problem - Delegating responsibility to infrastructureYshay Yaacobi
Slides for for my talk, appeared on Code-Europe Poznan 12.06.2018
(https://www.codeeurope.pl/en/speakers/yshay-yaacobi)
https://github.com/yshayy/not-my-problem-talk
https://github.com/Yshayy/not-my-problem-talk/blob/master/slides/demo.md
Trunk Based Development in the Enterprise - Its Relevance and EconomicsPerforce
Paul Hammant of ThoughtWorks runs through the history of the 'Trunk Based Development' branching model, its modern usage in big enterprises, and how management and technical stakeholders can benefit from it, and Perforce in particular, in their enterprise. Takeaways include prerequisites, pitfalls, economics, scaling, and related practices.
Devops and Drupal focuses on the current state of devops practices among Drupal developers and system administrators. A survey of over 200 Drupal professionals found that while many are aware of devops concepts like continuous integration and deployment, few have fully implemented best practices for areas like automated testing, configuration management, and disaster recovery. Adopting a devops approach can help Drupal teams improve collaboration, deploy more frequently, and better manage systems over time.
This talk will try to take you into thinking about your technical reasoning for scaling on the first 18 months of your startup, some things are hard to get right and we hope you learn from our experience!
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoSzczepan Faber
Learn how continuous deployment can improve your organization's productivity. Learn about challenges, differences and similarities of CD at LinkedIn (large scale enterprise) and Mockito (OSS software library with huge user base).
More details: http://bit.do/qcon-cd-abstract
Google slides: http://bit.do/qcon-cd-gslides
Presentation abstract as in QCon session catalog:
LinkedIn and Mockito are two different use cases of implementing continuous delivery at scale. Yet the challenges, benefits and impact on the engineering culture are very similar.
In 2015, LinkedIn’s flagship application adopted a continuous delivery model we called 3x3: deploy to production 3 times a day, with a 3 hour maximum time from commit to production. At LinkedIn scale - hundreds of engineers building products for 500M users - implementing 3x3 was really hard. How did 3x3 change LinkedIn engineering culture and what we have learned on the way?
Mockito is a top 3 Java library with ~2M users. Even with that large user base, since 2014, the Mockito project has taken the surprising approach of publishing a new version of the library from every single pull request. This approach is challenging and innovative in the Java community, and Mockito leverages Shipkit to ship every change to production. Why did the Mockito team adopt continuous delivery in 2014 and what we have learned to date?
Join and learn from Szczepan Faber, the maker of Mockito framework since 2007, and the tech lead of LinkedIn Development Tools since 2015.
SACon 2019 - Surviving in a Microservices EnvironmentSteve Pember
Many presentations on microservices offer a high-level view of the architecture; rarely do you hear what it’s like to work in such an environment. Stephen Pember shares his experience migrating from a monolith to microservices across several companies, highlighting the mistakes made along the way and offering advice.
This document outlines the process of industrializing an open source software and selling it as a product. It discusses securing the intellectual property of the code, improving development practices through version control, continuous integration, testing and documentation. It also covers challenges of determining customer needs when no existing market exists, balancing innovation and technical capabilities with market demands, and the importance of user satisfaction over technical features alone. The conclusion reflects on how research labs can foster innovation and how 13 jobs have been created by building a company around code originally developed through academic research.
Effective entrepreneurship for developersCarlos Ble
Carlos Ble presented on effective entrepreneurship for software developers in the mobile age. He discussed building the right software through lean startup principles and impact mapping. He also covered building software right through practices like clean code, SOLID principles, test-driven development, continuous delivery, and mobile testing. The presentation provided an interactive hands-on session and concluded that the most important things are to continuously improve, have good communication skills, and be a good teammate.
From prototype to production - The journey of re-designing SmartUp.ioMáté Lang
Talk about the joureny of small tech team re-designing SmartUp.io from scratch, and the technical paths from MVP to Production.
High level overview of architecture and tech stack decisions, best-practices and culture.
Basic concept on Systems/Software Analysis, Design & Development, how software engineering, large projects are done, collaborated, best practices & standards.
Building a SaaS App: From Paper to Prototype to Product.Josh Rodriguez
AdStage presents Building a SaaS App: From Paper to Prototype to Product. CSU East Bay Innovation Conference, Feb. 25th, 2017. Presented by Paul Wicker and Josh Rodriguez.
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.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
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.
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.
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
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.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
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.
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.
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...kalichargn70th171
In today's fiercely competitive mobile app market, the role of the QA team is pivotal for continuous improvement and sustained success. Effective testing strategies are essential to navigate the challenges confidently and precisely. Ensuring the perfection of mobile apps before they reach end-users requires thoughtful decisions in the testing plan.
Transforming Product Development using OnePlan To Boost Efficiency and Innova...OnePlan Solutions
Ready to overcome challenges and drive innovation in your organization? Join us in our upcoming webinar where we discuss how to combat resource limitations, scope creep, and the difficulties of aligning your projects with strategic goals. Discover how OnePlan can revolutionize your product development processes, helping your team to innovate faster, manage resources more effectively, and deliver exceptional results.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
What is Continuous Testing in DevOps - A Definitive Guide.pdfkalichargn70th171
Once an overlooked aspect, continuous testing has become indispensable for enterprises striving to accelerate application delivery and reduce business impacts. According to a Statista report, 31.3% of global enterprises have embraced continuous integration and deployment within their DevOps, signaling a pervasive trend toward hastening release cycles.
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.
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.
3. l
● Developer since 1988
● XP Coach 2000+
● Co-founder and coordinator of JUG Torino
● Java Champion since 2005
● VP of Engineering @Workshare.com
….and microservices
addicted since 2013
Hey mate, who are you?
@bbossola
4. ● Why microservices?
● What are microservices?
● Demo
● Common antipatterns
● Demo
● How do we work with microservices?
● Conclusions?
Agenda
@bbossola
5. ● Why microservices?
● What are microservices?
● Common antipatterns
● How do we work with
microservices?
Agenda
@bbossola
8. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
Are you living with a monolith?
@bbossola
9. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
● your tests can take hours to run
Are you living with a monolith?
@bbossola
10. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
● your tests can take hours to run
● your db migrations are HUGE and
scary
Are you living with a monolith?
@bbossola
11. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
● your tests can take hours to run
● your db migrations are HUGE and scary
● you always scale EVERYTHING
Are you living with a monolith?
@bbossola
12. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
● your tests can take hours to run
● your db migrations are HUGE and scary
● you always scale EVERYTHING
● you have a single BIG team
Are you living with a monolith?
@bbossola
13. Why microservices?
J2EE
Ruby on Rails
.NET
● your IDE is bloated
● you are locked onto a language
● your tests can take hours to run
● your db migrations are HUGE and scary
● you always scale EVERYTHING
● you have a single BIG team
● you are generating HTML pages
(no, well... really?)
Are you living with a monolith?
@bbossola
14. ● Would not be better if...
Why microservices?
@bbossola
15. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
16. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
17. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
18. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
19. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
20. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
21. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
22. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
23. ● Would not be better if...
– you can use an IDE. Or not :)
– you can choose your favourite programming language
– your integration tests run in minutes
– your db migrations are small and cosy
– you scale independently
– you have small teams, pizza size
– you work on green field projects every time
– you can choose cool technologies
– you can fail
Why microservices?
@bbossola
24. ● Why microservices?
● What are microservices?
● Common antipatterns
● How do we work with microservices?
Agenda
@bbossola
25. ● independent (processes) communicating with each other using
language-agnostic APIs
● small, highly decoupled and focus on doing a small task
● can be written in any programming language
– we do use Ruby, C#. Java and Javascript
●
micro means small, very!
– we run 20 of them on one single machine
● deployed independently, run independently
● each use its own database
● each owned by a team
What are microservices?
@bbossola
26. ● Pros!
– highly cohesive, loosely coupled
– clean api contracts and SOC
– very easy to write and replace
– self-contained, very easy to deploy
– scaling can be very focused
– small releases, less risky to deploy
– separate databases for separate migrations
– enabler to have many small teams
● each team is in charge of some of them
● QA and OPS can be embedded in the team
● CX teams can be built around this!
What are microservices?
@bbossola
27. ● Cons!
– Lots of them!
– Every microservice is doing one thing, so a lot
of collaboration is required to perform a task
– Scaling may require considerable effort
– Frequent duplicated configuration
– Proxying for external apps is not easy
– management overhead (more moving parts)
What are microservices?
@bbossola
28. In the meantime, at Workshare...
What are microservices?
@bbossola
29. Demo!
ROME 18-19 MARCH
2016
All pictures belong
to their respective authors
➢ simple WS services (time and location)
➢ complex WS services (groups and folders)
➢ a nodejs live sample that shows some
simple microservices speaking to each
other, part one (code available at
https://github.com/bbossola/microjs )
@bbossola
30. ● Why microservices?
● What are microservices?
● Common antipatterns
● How do we work with microservices?
@bbossola
31. ● Disneyworld
● Monolith Database
● Unknown Caller
● Hardcoded Hell
● Synchronous World
● Babel Tower
● Monolith Frontend
● Early Mornings
● Crapper
Common antipatterns
Stay tuned go get more!
bbossola.wordpress.com
@bbossola
32. ● we are small, everything is nice, cosy and lovely
– no healthchecks
– no metrics
– no monitoring
● Solution
– adopt a stack that implements these basic functionalities
– adopt (and connect!) one (or two) monitoring systems
– use a circuit breaker!
Antipatterns - Disneyworld
@bbossola
33. ● your microservices uses a shared database
– all your services are coupled
– migration hell awaits you
– cannot be released indipendently
● Solution
– each server has his own database
– services talking trough API
● do you really believe that mysql wire protocol is faster
than sockets?
Antipatterns - Monolith Database
@bbossola
34. ● there's no identification in your comms:
– a call does not contain any identification
– nobody knows who called
– diagnosing a malfunction become an
endless marathon
● Solution
– each server must inject a call id if missing
– each server must propagate the call id if present
– each server should log each call (with the id please!)
–
Antipatterns – Unkown Caller
@bbossola
35. ● address of services are hardcoded
– microservices directly know about each other
– only light indirection mechanisms are supported
● configuration
● DNS or naming trickery
● Solution
– build your own simple discovery
mechanism
– introduce a discovery mechanism
● eureka, zookeper, consul, and why not, msnos
Antipatterns - Harcoded Hell
@bbossola
36. ● every call in your systems is synchronous
– microservices wait for the final result
– every call can potentially hang forever
– one bad apple and your harvest is gone!
● Solution
– respond 201 and location as much
as you can
– put queues on top of your receivers
– implement asynchronicity from
the start
Antipatterns - Synchronous World
@bbossola
37. ● using all sort of different lingos to talk
– someone uses REST
– someone uses SOAP
– someone uses RMIP
– someone uses IIOP
● Solution
– standardize protocols
● one sync protocol (i.e. REST over http)
● one async protocol (i.e. pub/sub on Redis)
Antipatterns – Babel Tower
@bbossola
38. ● you have a big fat frontend:
– you have a single page application
– you have to deploy it in full for any upgrade
– you are using vertical "feature" teams
● Solution
– split the app in small independent pieces
– make sure those are deployable independently
– assign the entire frontend to a
separate team
–
Antipatterns – Monolith Frontend
@bbossola
39. ● You have a scheduled deploy rhythm and...
– you deploy services in the early morning (6am?)
– you wan to to avoid any disturbance to the world
– you have a wiki page that lists all the new services
● Solution
– implement continuous deployment
– introduce necessary scaling in your
microservices
– onboard devops help to normalize
everything
Antipatterns – Early Mornings
@bbossola@bbossola
40. ● “Our monolith code is crap, let's write microservices!”
– your decided to move to microservices
– your code is still crap
– your microservices are difficult to change
● Solution
– DO NOT discount proper design in
your code
– LOD, S.O.L.I.D., SOC, DRY, YAGNI
must have a central place in your
code
Antipatterns – Crapper
@bbossola
41. Demo!
ROME 18-19 MARCH
2016
All pictures belong
to their respective authors
➢ let's kick some antipatterns!
➢ a nodejs live sample that shows some
simple microservices speaking to each
other (code available at
https://github.com/bbossola/microjs)
@bbossola@bbossola
42. ● Why microservices?
● What are microservices?
● Common antipatterns
● How do we work with microservices?
@bbossola
43. How do we work with microservices?
●
How did we get there?
– Replacing the monolith!
●
by executive decision
●
legacy code progressively replaced
with microservices
●
each new feature can now drive
a new microservice
– Moving to continuous delivery!
●
the business need to experiment, quickly!
●
we moved in small steps: from month, to weeks, to
days, to anytime!
@bbossola
44. How do we work with microservices?
●
Teams!
– each team owns some microservices
●
development and QA
●
deployment procedures
●
maintenance
– each team is cross-functional
●
QA, DEV, DEVOPS
●
also Design in the future
– we follow the
Spotify Model
@bbossola
45. How do we work with microservices?
●
What about client applications?
– the frontends must be modular
●
each team controls a vertical “slice” of the system
●
allows independent deployments :)
– edge microservices are useful!
●
they aggregate calls
●
they minimize roundtrips
●
they optimize content
– a proxy layer is always needed!
●
not all APIs are public
●
signing may be used internally
@bbossola
46. How do we work with microservices?
●
Some numbers!
– 9 different products (web, mobile, desktop, server)
– 40+ microservices
– 28k unit tests (run in minutes)
– 3k end-to-end integration tests (run in 3 hours)
– up to 200 RPS on the busiest microservice
– up to 0.000001 RPS on the least used :)
– fastest response in 2 ms
– slowest response in 12 seconds (!)
@bbossola
49. Why consider NodeJS?
●
It's faaaaaaaaaast
– marvellous V8 engine, compiles JS in native code
– non blocking I/O all over the place
●
Has a small footprint
– uses a tiny amount of CPU and memory compared to
traditional solutions
– can scale very easily trough clustering
●
It's easy
– Ecma6 is well, kind of Java :)
– it's single threaded: no concurrency at all!
– frontend developers can write backebd code (after training :)
@bbossola