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.
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachPROIDEA
TOWARDS THE FASTEST (J)VM ON THE PLANET!
When designing new language, one usually starts with an AST interpreter. When the language is ready for use, users find out it is great, but slow. So one starts to design a bytecode to speed things up. That may help a bit, but usually the result is clear: still the execution is slow. Truffle project offers you a different perspective: write your AST interpreter using Truffle nodes API and we make it fast! In addition to that we also give you tooling for free! As a proof we'll demonstrate that our implementation of Ruby is ten times faster than any other one, including indy based JRuby. Stop by for a short introduction how to be create the fastest execution environment for any language!
Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)Igalia
By Alberto García.
Adding Linux support for industrial hardware entails a number of problems not usually found in consumer devices. In most cases they are installed in critical environments with limited availability, where fixing bugs, developing new features and foreseeing possible fault conditions is often a hard task. Using the support of industrial devices in the Linux kernel, the presentation will show how to use QEMU to solve these issues, improve the robustness of the device driver and speed up its development.
People interested in ways to write and test software and hardware using virtualization technologies will find this talk useful, in particular hackers working in testing, device drivers and hardware development.
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
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.
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachPROIDEA
TOWARDS THE FASTEST (J)VM ON THE PLANET!
When designing new language, one usually starts with an AST interpreter. When the language is ready for use, users find out it is great, but slow. So one starts to design a bytecode to speed things up. That may help a bit, but usually the result is clear: still the execution is slow. Truffle project offers you a different perspective: write your AST interpreter using Truffle nodes API and we make it fast! In addition to that we also give you tooling for free! As a proof we'll demonstrate that our implementation of Ruby is ten times faster than any other one, including indy based JRuby. Stop by for a short introduction how to be create the fastest execution environment for any language!
Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)Igalia
By Alberto García.
Adding Linux support for industrial hardware entails a number of problems not usually found in consumer devices. In most cases they are installed in critical environments with limited availability, where fixing bugs, developing new features and foreseeing possible fault conditions is often a hard task. Using the support of industrial devices in the Linux kernel, the presentation will show how to use QEMU to solve these issues, improve the robustness of the device driver and speed up its development.
People interested in ways to write and test software and hardware using virtualization technologies will find this talk useful, in particular hackers working in testing, device drivers and hardware development.
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
Overview and Status of LibreOffice Accessibility (LibreOffice Conference 2014)Igalia
By Jacobo Aragunde.
The purpose of this presentation is to provide participants with a basic understanding of LibreOffice accessibility. It will begin with a brief introduction to accessibility support, including the challenges assistive technologies are meant to address and how they are able to do so through the implementation of accessibility APIs. With this background having been established, the remainder of the session will be spent examining the specific case of LibreOffice: which accessibility backends are implemented and how the architecture is designed to support multiple backends while maximizing code reuse, making the addition of new backends easier. The presentation will conclude with a discussion of the current health of LibreOffice accessibility supported by an analysis of bug trends and repository statistics.
PHP is one of the most commonly used programming languages in the world. Learn about the tools that help PHP keep up with its competitors in the world of web development. Hear about the tools that can be used to help with build and test automation on your PHP project, as well as demonstrations of the Composer dependency manager and PHPUnit.
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)PROIDEA
Kolejny język dla JVM? Dlaczego Kotlin? Czy to już czas na porzucenie Javy? Chcę się podzielić moim odczuciem na temat języka Kotlin począwszy od motywacji dla której powstał, przez cechy które posiada, po stan obecny i perspektywę rozwoju. Jeśli chcielibyście używać cech innych znanych języków na platformie JVM, nie przepisując całych aplikacji - poznajcie alternatywę.
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.
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.
Shimon Tolts about Serverless code components at the AWS User Group Israel on Feb 6 2018 http://datree.io https://github.com/datreeio/serverless-web-template-aws
Geralmente aplicativos buscam resolver uma única tarefa. Mas conforme o passar do tempo, a aplicação tende a ganhar novas features e otimizações, consequentemente ela tende a crescer. Mais features e mais usuários significam mais código. E quanto mais código você escreve, mais código você precisa manter e reescrever. Nos livros "Effective Java" e "Android programming - pushing limits", Joshua Bloch e Erik Hellman, respectivamente, demonstram boas práticas para o desenvolvimento em Java e na plataforma Android. A idéia é fazer um apanhado das melhores práticas trazidas por estes livros. Detalharei o que deve o que não deve ser feito ao aplicar tais práticas.
2018 (codeone) type safe approach to invoking restful services with microprof...César Hernández
The selection of the right toolset to develop, test, and maintain the interoperability between RESTful web services is a crucial part of any migration or new project. With the imperative constraints for shorter-time-to-market implementations with quality and standardization, the Eclipse Project’s MicroProfile Rest Client makes it possible to write type-safe RESTful client applications with more model-centric code and less boilerplate code in a standardized manner. During this session, the audience will be able to see the features, advantages, use cases, and code demos with the open source project Apache CXF, one of the MicroProfile Rest Client implementations used by Apache TomEE and OpenLiberty application servers.
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”Cisco DevNet
Programming and API knowledge are common themes across SDN and “Open”. As we focus more on software, we will see a proliferation of APIs and a need to understand programming. An effective _hybrid_ engineer tomorrow will have both solid networking skills as well as an understanding of programmatic concepts. Keeping these technology and industry transitions in mind, Cisco Americas Partners Organization (APO) kicked off “Project Hybrid Engineer” this summer for Cisco Partners SEs with a focus on enhancing hands-on network programmability knowledge. This session highlights some of the key initiatives underway where APO is taking its experiences and enabling key Cisco Partners workforce for Cisco's Network Programmability solutions early on in the lifecycle. If you are a Cisco Partner, come and learn how you can benefit from “Project Hybrid Engineer” and get your workforce ready for this key technology transition.
Overview and Status of LibreOffice Accessibility (LibreOffice Conference 2014)Igalia
By Jacobo Aragunde.
The purpose of this presentation is to provide participants with a basic understanding of LibreOffice accessibility. It will begin with a brief introduction to accessibility support, including the challenges assistive technologies are meant to address and how they are able to do so through the implementation of accessibility APIs. With this background having been established, the remainder of the session will be spent examining the specific case of LibreOffice: which accessibility backends are implemented and how the architecture is designed to support multiple backends while maximizing code reuse, making the addition of new backends easier. The presentation will conclude with a discussion of the current health of LibreOffice accessibility supported by an analysis of bug trends and repository statistics.
PHP is one of the most commonly used programming languages in the world. Learn about the tools that help PHP keep up with its competitors in the world of web development. Hear about the tools that can be used to help with build and test automation on your PHP project, as well as demonstrations of the Composer dependency manager and PHPUnit.
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)PROIDEA
Kolejny język dla JVM? Dlaczego Kotlin? Czy to już czas na porzucenie Javy? Chcę się podzielić moim odczuciem na temat języka Kotlin począwszy od motywacji dla której powstał, przez cechy które posiada, po stan obecny i perspektywę rozwoju. Jeśli chcielibyście używać cech innych znanych języków na platformie JVM, nie przepisując całych aplikacji - poznajcie alternatywę.
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.
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.
Shimon Tolts about Serverless code components at the AWS User Group Israel on Feb 6 2018 http://datree.io https://github.com/datreeio/serverless-web-template-aws
Geralmente aplicativos buscam resolver uma única tarefa. Mas conforme o passar do tempo, a aplicação tende a ganhar novas features e otimizações, consequentemente ela tende a crescer. Mais features e mais usuários significam mais código. E quanto mais código você escreve, mais código você precisa manter e reescrever. Nos livros "Effective Java" e "Android programming - pushing limits", Joshua Bloch e Erik Hellman, respectivamente, demonstram boas práticas para o desenvolvimento em Java e na plataforma Android. A idéia é fazer um apanhado das melhores práticas trazidas por estes livros. Detalharei o que deve o que não deve ser feito ao aplicar tais práticas.
2018 (codeone) type safe approach to invoking restful services with microprof...César Hernández
The selection of the right toolset to develop, test, and maintain the interoperability between RESTful web services is a crucial part of any migration or new project. With the imperative constraints for shorter-time-to-market implementations with quality and standardization, the Eclipse Project’s MicroProfile Rest Client makes it possible to write type-safe RESTful client applications with more model-centric code and less boilerplate code in a standardized manner. During this session, the audience will be able to see the features, advantages, use cases, and code demos with the open source project Apache CXF, one of the MicroProfile Rest Client implementations used by Apache TomEE and OpenLiberty application servers.
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”Cisco DevNet
Programming and API knowledge are common themes across SDN and “Open”. As we focus more on software, we will see a proliferation of APIs and a need to understand programming. An effective _hybrid_ engineer tomorrow will have both solid networking skills as well as an understanding of programmatic concepts. Keeping these technology and industry transitions in mind, Cisco Americas Partners Organization (APO) kicked off “Project Hybrid Engineer” this summer for Cisco Partners SEs with a focus on enhancing hands-on network programmability knowledge. This session highlights some of the key initiatives underway where APO is taking its experiences and enabling key Cisco Partners workforce for Cisco's Network Programmability solutions early on in the lifecycle. If you are a Cisco Partner, come and learn how you can benefit from “Project Hybrid Engineer” and get your workforce ready for this key technology transition.
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
Open Source IoT Project Flogo - Introduction, Overview and ArchitectureKai Wähner
Go-powered Open Source Project Flogo for Lightweight IoT and Edge Integration:
The Internet of Things (IoT) brings up 50 billion devices until 2020, which have to be connected somehow. Challenges include low bandwidth, high latency, non-reliable connectivity and the need for low network costs. Therefore, a gateway at the edge is needed remotely on site of the devices to filter, aggregate and send just relevant data into the cloud or data center.
This session introduces open source project Flogo, which allows developing ultra-lightweight IoT edge applications with a zero-coding web user interface. Coders can also rely just on Go code if they want. It is written in Go programming language and therefore 20-50x more lightweight than similar Java or JavaScript frameworks.
The session focuses on live demos and shows how to develop ultra-lightweight microservices and how to integrate IoT devices using standards such as MQTT, WebSockets, CoaP or REST. The last part of the session compares Project Flogo to other open source IoT projects like Eclipse Kura or Node-RED and cloud offerings such as AWS IoT.
Check out www.flogo.io and https://community.tibco.com/products/project-flogo for more information and community.
Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)Nedelcho Delchev
This BoF is focused on one of the development models "In-System Programming", that can be used in combination with cloud platforms. It leverages also content-centric architectural style by using centralised repository, dynamic languages and multi-container runtime.
The main goal is achieving the shortest development turn-around time ever.
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...Demi Ben-Ari
Talk that specifies the history and the reasons to start using Kubernetes and implementing a microservices architecture. Talking about Docker, Kubernetes basic terms and some of the pitfalls that you can get too while implementing it.
Also mentioning the use case of Panorays.
LAS16-108: JerryScript and other scripting languages for IoTLinaro
LAS16-108: JerryScript and other scripting languages for IoT
Speakers: Paul Sokolovsky
Date: September 26, 2016
★ Session Description ★
Overview of small-size/low-resource VHLL (very high-level languages)/scripting languages available for embedded/IoT usage (JavaScript, Python, Lua, etc.). Typical/possible usage scenarios and benefits. Challenges of running VHLLs in deeply embedded/very resource-constrained environments. Progress reports on porting JerryScript to Zephyr. (Possibly, architecture comparison of JerryScript and MicroPython).
★ Resources ★
Etherpad: pad.linaro.org/p/las16-108
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-108/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
GlueCon 2015 - How REST APIs can glue all types of devices togetherRestlet
An exploding variety of devices need to communicate with the software you're developing today or soon in the future. What's your plan to handle access from mobile phones, thermostats, heart rate monitors, health and temp sensors, desktop computers, tablets, smart watches, and more? The key to gluing everything together is to use APIs. Data and code logic can be published as APIs, making your application much more flexible. In this session, Jerome will do a technical deep into how to use open source and free to-use tools for API design, development, management, deployment, version control, and documentation. He will also explain the acute problem with API management today, evolution, and future direction.
Project Flogo: An Event-Driven Stack for the EnterpriseLeon Stigter
In today's world everyone is building apps, most times those apps are event-driven and react to what happens around them. How do you take those apps to, let's say, a Kubernetes cluster, or let them communicate between cloud and on-premises, and how can developers and non-developers work together using the same tools?
Eclipse Con Europe 2014 How to use DAWN Science ProjectMatthew Gerring
This is a talk given at Eclipse Con Europe 2014 on how to use the open source project DAWN, Data Analysis Workbench. This project has two papers with more than three hundred citations of using the software.
Eclipse science group presentation given at Eclipse Converge and Devoxx 2017 in California. These slides give an overview of projects in the Eclipse Science working group in 2017.
Nutraceutical market, scope and growth: Herbal drug technologyLokesh Patil
As consumer awareness of health and wellness rises, the nutraceutical market—which includes goods like functional meals, drinks, and dietary supplements that provide health advantages beyond basic nutrition—is growing significantly. As healthcare expenses rise, the population ages, and people want natural and preventative health solutions more and more, this industry is increasing quickly. Further driving market expansion are product formulation innovations and the use of cutting-edge technology for customized nutrition. With its worldwide reach, the nutraceutical industry is expected to keep growing and provide significant chances for research and investment in a number of categories, including vitamins, minerals, probiotics, and herbal supplements.
Nucleophilic Addition of carbonyl compounds.pptxSSR02
Nucleophilic addition is the most important reaction of carbonyls. Not just aldehydes and ketones, but also carboxylic acid derivatives in general.
Carbonyls undergo addition reactions with a large range of nucleophiles.
Comparing the relative basicity of the nucleophile and the product is extremely helpful in determining how reversible the addition reaction is. Reactions with Grignards and hydrides are irreversible. Reactions with weak bases like halides and carboxylates generally don’t happen.
Electronic effects (inductive effects, electron donation) have a large impact on reactivity.
Large groups adjacent to the carbonyl will slow the rate of reaction.
Neutral nucleophiles can also add to carbonyls, although their additions are generally slower and more reversible. Acid catalysis is sometimes employed to increase the rate of addition.
Remote Sensing and Computational, Evolutionary, Supercomputing, and Intellige...University of Maribor
Slides from talk:
Aleš Zamuda: Remote Sensing and Computational, Evolutionary, Supercomputing, and Intelligent Systems.
11th International Conference on Electrical, Electronics and Computer Engineering (IcETRAN), Niš, 3-6 June 2024
Inter-Society Networking Panel GRSS/MTT-S/CIS Panel Session: Promoting Connection and Cooperation
https://www.etran.rs/2024/en/home-english/
Observation of Io’s Resurfacing via Plume Deposition Using Ground-based Adapt...Sérgio Sacani
Since volcanic activity was first discovered on Io from Voyager images in 1979, changes
on Io’s surface have been monitored from both spacecraft and ground-based telescopes.
Here, we present the highest spatial resolution images of Io ever obtained from a groundbased telescope. These images, acquired by the SHARK-VIS instrument on the Large
Binocular Telescope, show evidence of a major resurfacing event on Io’s trailing hemisphere. When compared to the most recent spacecraft images, the SHARK-VIS images
show that a plume deposit from a powerful eruption at Pillan Patera has covered part
of the long-lived Pele plume deposit. Although this type of resurfacing event may be common on Io, few have been detected due to the rarity of spacecraft visits and the previously low spatial resolution available from Earth-based telescopes. The SHARK-VIS instrument ushers in a new era of high resolution imaging of Io’s surface using adaptive
optics at visible wavelengths.
Travis Hills' Endeavors in Minnesota: Fostering Environmental and Economic Pr...Travis Hills MN
Travis Hills of Minnesota developed a method to convert waste into high-value dry fertilizer, significantly enriching soil quality. By providing farmers with a valuable resource derived from waste, Travis Hills helps enhance farm profitability while promoting environmental stewardship. Travis Hills' sustainable practices lead to cost savings and increased revenue for farmers by improving resource efficiency and reducing waste.
This presentation explores a brief idea about the structural and functional attributes of nucleotides, the structure and function of genetic materials along with the impact of UV rays and pH upon them.
Phenomics assisted breeding in crop improvementIshaGoswami9
As the population is increasing and will reach about 9 billion upto 2050. Also due to climate change, it is difficult to meet the food requirement of such a large population. Facing the challenges presented by resource shortages, climate
change, and increasing global population, crop yield and quality need to be improved in a sustainable way over the coming decades. Genetic improvement by breeding is the best way to increase crop productivity. With the rapid progression of functional
genomics, an increasing number of crop genomes have been sequenced and dozens of genes influencing key agronomic traits have been identified. However, current genome sequence information has not been adequately exploited for understanding
the complex characteristics of multiple gene, owing to a lack of crop phenotypic data. Efficient, automatic, and accurate technologies and platforms that can capture phenotypic data that can
be linked to genomics information for crop improvement at all growth stages have become as important as genotyping. Thus,
high-throughput phenotyping has become the major bottleneck restricting crop breeding. Plant phenomics has been defined as the high-throughput, accurate acquisition and analysis of multi-dimensional phenotypes
during crop growing stages at the organism level, including the cell, tissue, organ, individual plant, plot, and field levels. With the rapid development of novel sensors, imaging technology,
and analysis methods, numerous infrastructure platforms have been developed for phenotyping.
The ability to recreate computational results with minimal effort and actionable metrics provides a solid foundation for scientific research and software development. When people can replicate an analysis at the touch of a button using open-source software, open data, and methods to assess and compare proposals, it significantly eases verification of results, engagement with a diverse range of contributors, and progress. However, we have yet to fully achieve this; there are still many sociotechnical frictions.
Inspired by David Donoho's vision, this talk aims to revisit the three crucial pillars of frictionless reproducibility (data sharing, code sharing, and competitive challenges) with the perspective of deep software variability.
Our observation is that multiple layers — hardware, operating systems, third-party libraries, software versions, input data, compile-time options, and parameters — are subject to variability that exacerbates frictions but is also essential for achieving robust, generalizable results and fostering innovation. I will first review the literature, providing evidence of how the complex variability interactions across these layers affect qualitative and quantitative software properties, thereby complicating the reproduction and replication of scientific studies in various fields.
I will then present some software engineering and AI techniques that can support the strategic exploration of variability spaces. These include the use of abstractions and models (e.g., feature models), sampling strategies (e.g., uniform, random), cost-effective measurements (e.g., incremental build of software configurations), and dimensionality reduction methods (e.g., transfer learning, feature selection, software debloating).
I will finally argue that deep variability is both the problem and solution of frictionless reproducibility, calling the software science community to develop new methods and tools to manage variability and foster reproducibility in software systems.
Exposé invité Journées Nationales du GDR GPL 2024
Professional air quality monitoring systems provide immediate, on-site data for analysis, compliance, and decision-making.
Monitor common gases, weather parameters, particulates.
2. Background
▌ Landmark would be one of the top 50 largest software companies
▌ Scientific and Engineering software for Energy sector
Exploration
Construction
Production
▌ Neftex
Exploration
3.
4. What kind of developer are you?
▌ Experienced with Java (since 1.1 which is ~1998)
▌ Python hacker (what other kind is there?)
▌ Javascript noob (!! How hard can it be? Typescript, Uglify)
▌ Fortran deny all (literally don’t tell anyone)
▌ C++ dangerous (enough to be)
▌ C# not much (linux?)
▌ Wrote much UI and Server Architecture
6. Happy Developers?
▌ Modern Programming Languages like Java and Python
Developers became happy
They write more code
Thing Why we liked it? What Happened?
3G/4G
Languages
(Java, C#, Python, C++)
Manage memory,
Powerful APIs, UI
toolkits
We wrote lots of code
IDEs
(Xemacs, JCreator,
Eclipse, IntelliJ,
VisualStudio)
It make our code
more colourful and
we could write more
We wrote lots of code
Frameworks
(RCP, Struts, JSF,
Django, ASP, etc. etc.)
Do more stuff,
Organise things
We wrote lots of code and
it was more efficient
Incremental
Programs
(OSGi, Jigsaw, etc.)
Our massive
programs still worked
We wrote lots of code and
it didn’t all have to fit in
memory!!
7. Introducing the Monolith
▌ Single Tier Software Application
▌ Horizontal Approach to Features
▌ Modularity is Code-Based
▌ Examples:
Scientific Desktop Application
Some Types of Server Application
− Thick client
− Multiple web page single server
8. Some problems I have hit with…
▌ Developers working horizontally, less efficiently
▌ Encapsulation of modules – entropy increases
▌ Multiple APIs doing the same task
CORBA/RMI/JMS
Swing/SWT/JavaFX
DOM+SAX/Xpath/Castor/Gson/Jackson
▌ Ability to scale in various directions (scale cube)
▌ And… Deployment / Testing / Understanding / Agility
Despite all this
Powerful,
Well used and understood,
Profitable
Monolithic, or nearly monolithic, software
9. Some I think which can be okay with…
▌Testing
Well defined interactions
Limited set of interoperable features
▌OSGi Services – one monolith multiple services
▌Developer ownership, interoperability
▌Cost
Monolithic, or nearly monolithic, software
10. Summary
▌ We have lots and lots and lots of code
▌ We find it hard to change it
▌ Customers/Users get
releases infrequently
more defects
lower scale solutions
…depressed
11. Service Oriented Architecture (SOA)
▌ Application is a collection of loosely coupled services
▌ One service
Logically represents a business activity with a specified outcome.
Self-contained.
black box for its consumers.
May consist of other underlying services
▌ Idea been around in one form or another since early 2000’s
µServices are one type of SOA
12. µServices
▌ Fine grained and light weight
▌ Modularity is enforced, each component easy to understand, develop
and test
▌ Small autonomous development teams
Vertical development rather than horizontal
Less for one developer to deal with / understand / have to compile
▌ IMPORTANT Services can scale independently and on the fly
▌ Technology choices weakly linked and easy to change
15. This is all very well but…
▌ How do we apply it to scientific algorithms?
▌ How will they scale?
Different algorithms have different requirements
Scale out in the cloud
▌ What kind of cloud? We are looking at DC/OS, Kubernetes and native:
AWS, Azure, Google Cloud etc.
▌ What about Big Data?
16. Case Study – Automatic Lithostratigraphy
▌ Python Research Code
Machine learning
Parallelizable algorithm each python process can work on one part of the problem
prediction
▌ Java µService using JSON-REST and Kafka deployed in a Jetty Server to a docker container
▌ Large amounts of data but highly parallel each run being only O(10)xO(100,000), for instance
9 1D datasets of size 25,000.
▌ Scale in:
Y - (web service front end and data splitter) + (analysis)
X - Many (analysis) processes
Z – No need to scale
17.
18. Standard Python Project Containing
R&D Code
Module for exposing running one facet
of the code by Kafka message
(competitive consumer)
A readme / getting started and other docs are
contained in the project
Jenkins build runs the tests and
deploys the python consumer to the
cluster as a docker image
19. Python client
µservice code using JSON-REST Spring
Boot, etc
Self contained set of unit tests and resources
Separate build which
• Downloads dependencies for developer
• Builds on Jenkins a ‘fat’ jar
• Deploys to DCOS
The build is deployed to docker image for
running on the cluster
A readme / getting started and other docs are
contained in the project
20. 2ms
▌ Binary artifacts can be published and consumed = modularity old skool
E.g. IO packages
▌ µservice design patterns
E.g. Aggregator
Bit of an side note: Artifactory and Aggregation
20ms
20ms 20ms
2ms
= 62ms
2ms
20ms
2ms
= 28ms
2ms
Aggregator