How should a professional software developer behave in code? What guidelines should one follow? How should we name our constructs? What about OOP principles? What's their real use?
This classic training module in my training curricula is the cornerstone of my professionalism. These are my conduit guidelines at work. I've held this training > 10 times, including at Voxxed Days Bucharest 2016 and at a Bucharest Java User Group meetup.
El lenguaje Swift ha revolucionado el mundo de la programación entorno al sistema operativo iOS, y es por ello que muchas empresas han optado por migrar de Objective-C a este nuevo lenguaje de programación para estar actualizadas.
- Introducción
- Que es Rx
- Que es RxSwift
- MVVM
- MVVM & RxSwift
Slides for my deep dive session at Devoxx Belgium 2019.
Main concepts:
OOP, Functional Programming, Functions, Feature Envy, Design, Refactoring, Extract Method, Signatures, side effects, pure functions, programming paradigms, emotions
Abstract:
Would you attach your last commit to your CV:
"Sample: how I write code"?
What do others think of your code?
Writing Clean Code: an old topic, but never less important, nor challenging than today!
During the first part of this deep-dive session, we will go through the essential clean code rules, learning to detect code smells, discussing refactoring ideas and alternative designs pros/cons.
Then, after the break, we will apply what we learned in a refactoring live-coding kata, explaining 10 key practical techniques you can immediately apply in your code. By the end of the session, you will have a clear picture of what clean code means and quite a variety of ways at hand to get there.
Along the way, we will also point out the differences between procedural/oop/functional paradigms and whether they are competing or complementary, speak in detail about Extract Method, statefulness, separation by layers of abstractions, OOP, and many more.
Can't wait to share my greatest passion with you: writing professional, expressive code that is a pleasure to work with.
Clean Code with Java 8 - Functional Patterns and Best PracticesVictor Rentea
My talk about how the Clean Code principles and techniques apply/change when you start using functional programming with Java 8. Presented in Paris at Devoxx FR 2018
Functional Patterns with Java8 @Bucharest Java User GroupVictor Rentea
The slides for the presentation I gave at Bucharest Java User Group. This session was the largest Romanian Java community meetup ever organized until now.
Functional Programming Patterns with Java 8 (at Devoxx BE)Victor Rentea
The slides for my talk at Devoxx BE 2018.
Contents: Optional, method references over heavy lambdas, Passing-a-Block, Loan Pattern, Execute Around, Hiding Checked Exceptions, Method References on Enums.
This talk was rated #1 talk of the whole conference.
How should a professional software developer behave in code? What guidelines should one follow? How should we name our constructs? What about OOP principles? What's their real use?
This classic training module in my training curricula is the cornerstone of my professionalism. These are my conduit guidelines at work. I've held this training > 10 times, including at Voxxed Days Bucharest 2016 and at a Bucharest Java User Group meetup.
El lenguaje Swift ha revolucionado el mundo de la programación entorno al sistema operativo iOS, y es por ello que muchas empresas han optado por migrar de Objective-C a este nuevo lenguaje de programación para estar actualizadas.
- Introducción
- Que es Rx
- Que es RxSwift
- MVVM
- MVVM & RxSwift
Slides for my deep dive session at Devoxx Belgium 2019.
Main concepts:
OOP, Functional Programming, Functions, Feature Envy, Design, Refactoring, Extract Method, Signatures, side effects, pure functions, programming paradigms, emotions
Abstract:
Would you attach your last commit to your CV:
"Sample: how I write code"?
What do others think of your code?
Writing Clean Code: an old topic, but never less important, nor challenging than today!
During the first part of this deep-dive session, we will go through the essential clean code rules, learning to detect code smells, discussing refactoring ideas and alternative designs pros/cons.
Then, after the break, we will apply what we learned in a refactoring live-coding kata, explaining 10 key practical techniques you can immediately apply in your code. By the end of the session, you will have a clear picture of what clean code means and quite a variety of ways at hand to get there.
Along the way, we will also point out the differences between procedural/oop/functional paradigms and whether they are competing or complementary, speak in detail about Extract Method, statefulness, separation by layers of abstractions, OOP, and many more.
Can't wait to share my greatest passion with you: writing professional, expressive code that is a pleasure to work with.
Clean Code with Java 8 - Functional Patterns and Best PracticesVictor Rentea
My talk about how the Clean Code principles and techniques apply/change when you start using functional programming with Java 8. Presented in Paris at Devoxx FR 2018
Functional Patterns with Java8 @Bucharest Java User GroupVictor Rentea
The slides for the presentation I gave at Bucharest Java User Group. This session was the largest Romanian Java community meetup ever organized until now.
Functional Programming Patterns with Java 8 (at Devoxx BE)Victor Rentea
The slides for my talk at Devoxx BE 2018.
Contents: Optional, method references over heavy lambdas, Passing-a-Block, Loan Pattern, Execute Around, Hiding Checked Exceptions, Method References on Enums.
This talk was rated #1 talk of the whole conference.
Decades ago, IT started as a single engineering practice, but as time passed by it got increasingly fragmented. Conflicts broke out between testers vs developers vs sysadmins vs DBAs vs many other roles. Recently, developers themselves split into many subspecialties like backend/frontend/iOS/Android/microservices/functions/etc. The overspecialization we face today causes huge communication overhead, a low bus factor, lack of responsibility, blaming, repeated isolated patching and fulminating costs. The software craftsmanship movement is rising in this post-agile world with professionals eager to take control of their careers and continuously learn in the pursuit of mastery. This talk will show you practical ways in which to seed a continuous learning culture in your team or company, and foster the enthusiasm of your developers.
Starting with ECMAScript 2015, JavaScript gains support for the Proxy object allowing you to intercept and define custom behavior for fundamental language operations. ECMAScript 2015 Proxy is rarely used because cannot be transpiled by Babel, due to the limitations of ES5. As for now, all evergreen browsers support it and it is time to learn more about ES2015 Proxy.
We will overview ES2015 Proxy features, how to use them, and look to the cases where the proxy can be used.
Decades ago, IT started as a single engineering practice, but as time passed by it got increasingly fragmented. Conflicts broke out between testers vs developers vs sysadmins vs DBAs vs many other roles. Recently, developers themselves split into many subspecialties like backend/frontend/iOS/Android/microservices/functions/etc. The overspecialization we face today is a rich source of communication overhead, a low bus factor, lack of responsibility, blaming, repeated isolated patching and fulminating costs. More than a ‘full-stack’ developer, a software craftsperson distinguishes oneself by acting professionally and taking responsibility for as many aspects of one’s work. Jump on this never-ending journey of continuous improvement and decide what’s the next level for your own case.
For a company/individual training, check out my website: victorrentea.ro
GraalVM is a recent development from Oracle. It's supposed to replace HotSpot just-in-time compiler technology, but actually, it's much more. From a JIT compiler to a language implementation framework for JVM to a native image generator, it's going to change how software for JVM is written and run. During the presentation, we will explore the new possibilities and benefits provided by GraalVM.
Podczas drugiego XSolve Laboratory (xLab), wspólnie z doświadczonymi programistami XSolve, poznacie dobre praktyki programowania.
Celem warsztatu będzie przejście przez wzorce projektowe i architektoniczne oraz narzędzia wspomagające wytwarzanie oprogramowania odpornego na zmiany.
Poznacie realne problemy z prowadzonych przez nas projektów i na ich przykładach wspólnie przygotujemy SOLIDny kod, działający zgodnie z przyjętymi założeniami, przedstawionymi jako przypadki testowe.
A Tale About the Evil Partial Mock and Separation by Layers of AbstractionsVictor Rentea
We'll see that every partial mock is a wasted opportunity: instead of dropping a spy in there, think a bit about redesigning the system on finer-grained level of abstractions. Instead of mocking a method in your class, think of extracting it away in another class instead, and use a 'regular' mock.
These are the slides from my quickie session at Devoxx Poland 2017: https://youtu.be/pYG0jhCfT2A
Refactoring blockers and code smells @jNation 2021Victor Rentea
The only way to survive in a codebase is by refactoring continuously. We know that since the Extreme Programming days. But what stops us from doing so today? In this talk, Victor summarizes what he learned discussing Clean Code and Refactoring with hundreds of teams throughout the world. You'll find ideas to tackle a broad spectrum of factors: technical, cultural, psychological, emotional, social, and even political. Using these you might unlock the freedom to refactor for you and your colleagues.
After this roundtrip, the talk briefly overviews several of the most dangerous code smells in the projects today: God Class, Duplicated Code vs Divergent Code, Temporal Coupling, Middle Man, Speculative Generality, Mutable Long-Lived State, Comments, and more. For each of them we’ll discuss a typical workaround, plus several subtleties and variations.
Unit Testing your React / Redux app (@BucharestJS)Alin Pandichi
React and Redux took the world by storm. These JavaScript libraries allow you to write applications consisting of reusable components while avoiding bugs related to side-effects. But I suspect that developers do not unit test their React/Redux code. Or at least not as much as they could. During this talk, I will showcase the unit tests we have written for our eventriX product. These tests run fast and cover the most important aspects of our client-side code running in the browser. These practical real-world examples could inspire you to write more and better unit tests for your own React/Redux application.
Java Test Automation for REST, Web and MobileElias Nogueira
Presentation about how to use REST, Web and Mobile open source tools to increase your test codebase.
This presentation was made by me and Edson Yanaga for JavaOne 2017 San Francisco on 04/09/2017
Short presentation of Tuleap release process. How we are leveraging Gerrit, Jenkins, Tuleap and docker to make a very efficient integration pipeline and to deliver 10 times a day.
In this talk we will cover how we apply QA in Emergya for Python projects, covering from the inception phase to the delivery phase.
We will see a showcase of a real python project to learn by examples (code guidelines definition, Continuous Integration system, Continuous Unit and Functional testing, Performance testing and Continuous Delivery.
We will focus the talk in how a team should manage a Python project from the QA side, showing how a team of developers and QA build a real team.
http://bedjango.com/
BeDjango Jenkins theme: https://github.com/agomezmoron/jenkins-simple-theme-bedjango
How we use automated constraints at iAdvize, Redsmin and Bringr to bring up to speed our teams maturity and efficiency as well as improving the overall project quality.
http://blog.fgribreau.com/2015/10/automatic-constraints-as-team-maturity.html
Efficient JavaScript Unit Testing, May 2012Hazem Saleh
One of the biggest challenges of many web applications is the support on the different browsers with different versions. JavaScript code that runs on Safari does not necessarily mean it will work on IE or Firefox or Google chrome. This challenge is inherited from the lack of testing the JavaScript code that lives in the presentation tier from day one. Without unit testing the JavaScript code, organization will pay much money for testing, re-testing, and re-testing web applications for just deciding upgrading or supporting new browsers. This presentation shows the solution of this problem.
Decades ago, IT started as a single engineering practice, but as time passed by it got increasingly fragmented. Conflicts broke out between testers vs developers vs sysadmins vs DBAs vs many other roles. Recently, developers themselves split into many subspecialties like backend/frontend/iOS/Android/microservices/functions/etc. The overspecialization we face today causes huge communication overhead, a low bus factor, lack of responsibility, blaming, repeated isolated patching and fulminating costs. The software craftsmanship movement is rising in this post-agile world with professionals eager to take control of their careers and continuously learn in the pursuit of mastery. This talk will show you practical ways in which to seed a continuous learning culture in your team or company, and foster the enthusiasm of your developers.
Starting with ECMAScript 2015, JavaScript gains support for the Proxy object allowing you to intercept and define custom behavior for fundamental language operations. ECMAScript 2015 Proxy is rarely used because cannot be transpiled by Babel, due to the limitations of ES5. As for now, all evergreen browsers support it and it is time to learn more about ES2015 Proxy.
We will overview ES2015 Proxy features, how to use them, and look to the cases where the proxy can be used.
Decades ago, IT started as a single engineering practice, but as time passed by it got increasingly fragmented. Conflicts broke out between testers vs developers vs sysadmins vs DBAs vs many other roles. Recently, developers themselves split into many subspecialties like backend/frontend/iOS/Android/microservices/functions/etc. The overspecialization we face today is a rich source of communication overhead, a low bus factor, lack of responsibility, blaming, repeated isolated patching and fulminating costs. More than a ‘full-stack’ developer, a software craftsperson distinguishes oneself by acting professionally and taking responsibility for as many aspects of one’s work. Jump on this never-ending journey of continuous improvement and decide what’s the next level for your own case.
For a company/individual training, check out my website: victorrentea.ro
GraalVM is a recent development from Oracle. It's supposed to replace HotSpot just-in-time compiler technology, but actually, it's much more. From a JIT compiler to a language implementation framework for JVM to a native image generator, it's going to change how software for JVM is written and run. During the presentation, we will explore the new possibilities and benefits provided by GraalVM.
Podczas drugiego XSolve Laboratory (xLab), wspólnie z doświadczonymi programistami XSolve, poznacie dobre praktyki programowania.
Celem warsztatu będzie przejście przez wzorce projektowe i architektoniczne oraz narzędzia wspomagające wytwarzanie oprogramowania odpornego na zmiany.
Poznacie realne problemy z prowadzonych przez nas projektów i na ich przykładach wspólnie przygotujemy SOLIDny kod, działający zgodnie z przyjętymi założeniami, przedstawionymi jako przypadki testowe.
A Tale About the Evil Partial Mock and Separation by Layers of AbstractionsVictor Rentea
We'll see that every partial mock is a wasted opportunity: instead of dropping a spy in there, think a bit about redesigning the system on finer-grained level of abstractions. Instead of mocking a method in your class, think of extracting it away in another class instead, and use a 'regular' mock.
These are the slides from my quickie session at Devoxx Poland 2017: https://youtu.be/pYG0jhCfT2A
Refactoring blockers and code smells @jNation 2021Victor Rentea
The only way to survive in a codebase is by refactoring continuously. We know that since the Extreme Programming days. But what stops us from doing so today? In this talk, Victor summarizes what he learned discussing Clean Code and Refactoring with hundreds of teams throughout the world. You'll find ideas to tackle a broad spectrum of factors: technical, cultural, psychological, emotional, social, and even political. Using these you might unlock the freedom to refactor for you and your colleagues.
After this roundtrip, the talk briefly overviews several of the most dangerous code smells in the projects today: God Class, Duplicated Code vs Divergent Code, Temporal Coupling, Middle Man, Speculative Generality, Mutable Long-Lived State, Comments, and more. For each of them we’ll discuss a typical workaround, plus several subtleties and variations.
Unit Testing your React / Redux app (@BucharestJS)Alin Pandichi
React and Redux took the world by storm. These JavaScript libraries allow you to write applications consisting of reusable components while avoiding bugs related to side-effects. But I suspect that developers do not unit test their React/Redux code. Or at least not as much as they could. During this talk, I will showcase the unit tests we have written for our eventriX product. These tests run fast and cover the most important aspects of our client-side code running in the browser. These practical real-world examples could inspire you to write more and better unit tests for your own React/Redux application.
Java Test Automation for REST, Web and MobileElias Nogueira
Presentation about how to use REST, Web and Mobile open source tools to increase your test codebase.
This presentation was made by me and Edson Yanaga for JavaOne 2017 San Francisco on 04/09/2017
Short presentation of Tuleap release process. How we are leveraging Gerrit, Jenkins, Tuleap and docker to make a very efficient integration pipeline and to deliver 10 times a day.
In this talk we will cover how we apply QA in Emergya for Python projects, covering from the inception phase to the delivery phase.
We will see a showcase of a real python project to learn by examples (code guidelines definition, Continuous Integration system, Continuous Unit and Functional testing, Performance testing and Continuous Delivery.
We will focus the talk in how a team should manage a Python project from the QA side, showing how a team of developers and QA build a real team.
http://bedjango.com/
BeDjango Jenkins theme: https://github.com/agomezmoron/jenkins-simple-theme-bedjango
How we use automated constraints at iAdvize, Redsmin and Bringr to bring up to speed our teams maturity and efficiency as well as improving the overall project quality.
http://blog.fgribreau.com/2015/10/automatic-constraints-as-team-maturity.html
Efficient JavaScript Unit Testing, May 2012Hazem Saleh
One of the biggest challenges of many web applications is the support on the different browsers with different versions. JavaScript code that runs on Safari does not necessarily mean it will work on IE or Firefox or Google chrome. This challenge is inherited from the lack of testing the JavaScript code that lives in the presentation tier from day one. Without unit testing the JavaScript code, organization will pay much money for testing, re-testing, and re-testing web applications for just deciding upgrading or supporting new browsers. This presentation shows the solution of this problem.
Throwing complexity over the wall: Rapid development for enterprise Java (Jav...Dan Allen
For many, development of enterprise Java has long been an arduous undertaking. We're of the opinion that application programmers should be free to focus on their business logic only.
In this session, we'll cover:
• What makes us most productive?
• What tasks should we be programming; more importantly, what shouldn't we?
• What is a component model, and what does it buy us?
• How is this stuff usable in the real world?
We'll discuss how testing relates to the features of the Java EE 6 stack. By the end, we'll have introduced a pair of simple and powerful frameworks that render the testing of real enterprise components as natural as calling "add" on a CS101 Calculator.java.
Camunda advises to separate business logic from the engine's API to keep your software simple, maintainable, and easy to migrate. However, this can also prove tricky to implement. Hear from Stephan Pelikan at Phactum Software about their new Camunda community extension that resolves this challenge by providing the separation and giving you the freedom to move to C8 independent of your current process implementation backlog.
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
Have you ever faced OutOfMemoryError? Was it in your CI or during the local run? Maybe you faced it as a user while playing your favorite video game or using online banking to pay your bills.
That’s annoying, isn’t it? Every time we give the application more and more memory, it seems never enough…
In Sonar we know how important it is to use memory efficiently. As our tools are often a part of your ci jobs, we care how much you spend on the infrastructure and try to minimize the cost.
So in this session, I will try to share some tips for investigating, fixing, and preventing potential memory leaks and reducing the memory footprint. In simple words, I will show how you can help your applications eat memory « healthier ».
How are systems in finance design for deterministic outcomes, and performance. What are the benefits and what is the performance you can achieve.
Included a demo you can download.
JavaScript has a well deserved reputation of be hard to write and debug. Put it on a mobile device and the problems increase exponentially. Mobile browsers lack all of the niceties that developers rely on to do testing and debugging including the most fundamental tool, the debugger. But it is possible to write quality JavaScript on a mobile device without relying on blind luck. In this talk I will show all of the tools and tricks that I learned in my 12 month development of the new KBB.com mobile site.
This is a talk that I gave for the Boston Ruby Group on Dec. 13, 2011. The talk covers the use of MacRuby as a Cocoa REPL for learning and exploration, and integration between MacRuby and Xcode for the development of OS X applications.
The feature we always hear about whenever Java 9 is in the news is Jigsaw, modularity. But this doesn't scratch the same developer itch that Java 8's lambdas and streams did, and we're left with a vague sensation that the next version might not be that interesting.
Java 9 actually has a lot of great additions and changes to make development a bit nicer. These features can't be lumped under an umbrella term like Java 8's lambdas and streams, the changes are scattered throughout the APIs and language features that we regularly use.
In this presentation Trisha will show, via live coding:
- What the Java Platform Module System is and how to make your code modular
- How we can use the new Flow API to utilise Reactive Programming
- The improvements to the Streams API that make it easier to control infinite streams
- How to the Collections convenience methods simplify code
Along the way we'll bump into other Java 9 features, including some of the additions to interfaces and changes to deprecation.
Testing strategies for modern software architectures are evolving. As we transition from monolithic structures to team-sized microservices with crisp APIs aligned to bounded contexts, we encounter more stable testing surfaces. This shift leads many high-performing teams to favor integration tests over fine-grained, brittle unit tests. These integration tests, which are closer to the functional requirements, prove more trustworthy and are more resilient to internal refactoring, though they may come with a higher cost. In a vivid and engaging style, this talk addresses the primary challenges of integration testing in the microservices era: cognitive overload, test isolation, and test execution speed. Join the testing revolution and discover how to enhance your team's testing efficiency and effectiveness.
(java2days) Is the Future of Java Cloudy?Steve Poole
Java – it’s on billions of devices. We think it powers the world. Others disagree.
In this talk we’ll examine a few of the reasons why some developers believe Java is being left behind by younger (or at least different) programming languages. We’ll show where the claims make sense and debunk some of the more outrageous slander. We know the future of Java includes a more polyglot world so we’ll help you understand with practical advice where Java shines today and where you might be better using something else. We’ll also cover the challenges that all runtimes have in the new era of Cloud and how the Java community is leading the way in evolving Java into becoming the Cloud runtime of choice.
This talk will help you become more informed when dealing with those inevitable language cage fights around the water cooler. You’ll be able to refute the fake news and replace it with clear facts. Vote for Java – you know it makes sense
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
1. A journey to automatic Java refactoring
Software Quality Days 2019
Martin Huter & Ardit Ymeri
A journey to automatic Java
refactoring (and jSparrow)
2. A journey to automatic Java refactoring
Who are we?
Slide 2
3. A journey to automatic Java refactoring
Agenda
▪ Refactoring
▪ Software aiding the refactoring process
▪ Creating an automatic refactoring tool
Slide 3
4. A journey to automatic Java refactoring
Management: Do we really need that?
Refactoring
Slide 4
5. A journey to automatic Java refactoring
What is Refactoring
Slide 5
▪ Changing the code and keeping functionality
▪ Reasons include
▪ Improve readability
▪ Reduce complexity
▪ Improve maintainability
▪ Improve internal architecture
▪ Improve performance
▪ Improve security
▪ Parallelization
6. A journey to automatic Java refactoring
Typical Problems
▪ Design and code structure
▪ Lack of Cohesion
▪ Tight Coupling
▪ Repeated Code
▪ Spaghetti Code
▪ Lack of Performance
▪ Lack of Tests
▪ Security Issues
Slide 6
7. A journey to automatic Java refactoring
Human Approach
▪ Define a goal
▪ Understand the code base
▪ Set up a safety net - Tests!
▪ Refactor
▪ Go with baby steps
▪ Test
▪ Does everything still work?
▪ Repeat
Slide 7
Refactor
Test
8. A journey to automatic Java refactoring
Preserving Functionality
▪ Testing helps - but never guarantees.
▪ Program Equivalence
▪ Do programs P and Q terminate on the same state when starting on the same
one?
▪ Reducible to the Halting Problem.
▪ Undecidable!!!
▪ All nontrivial semantic properties are undecidable 👉 Rice’s Theorem
▪ The good news: Undecidable only in general!
▪ Show correctness for specific cases
▪ Trivial properties are decidable.
Slide 8
9. A journey to automatic Java refactoring
Using Functional Interfaces
Slide 9
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
passwordField.requestFocusInWindow();
passwordField.requestFocus();
}
});
SwingUtilities.invokeLater(() -> {
passwordField.requestFocusInWindow();
passwordField.requestFocus();
});
10. A journey to automatic Java refactoring
Using Standard Outputs
Slide 10
System.err.println(e.getMessage());
logger.error(e.getMessage());
e.printStackTrace();
logger.error(e.getMessage(), e);
11. A journey to automatic Java refactoring
Cognitive Complexity
Slide 11
public void remapIds() {
Attribute idAttribute = getAttributes();
if (idAttribute != null) {
// very long code
…
}
}
public void remapIds() {
Attribute idAttribute = getAttributes();
if (idAttribute == null) {
return;
}
// very long code
…
}
12. A journey to automatic Java refactoring
Other Code Smells
Slide 12
▪ Methods should not be empty
▪ Deprecated code should be removed
▪ Sections of code should not be commented out
@Deprecated
public static void doSomething(Object changeMe) {
// throw new UnsupportedOperationException();
}
13. A journey to automatic Java refactoring
There is Software that might help
Help me?
Slide 13
14. A journey to automatic Java refactoring
Assessing Technical Debt
Slide 14
▪ Existing Solutions
▪ Integration in development process
▪ Reporting technical debt
▪ Evaluating efforts
15. A journey to automatic Java refactoring
Addressing Technical Debt
Common scenarios for 100k lines
▪ 10s Thousands issues
▪ Hundreds working days
Addressing by:
▪ Avoid creating more debt
▪ Continuously removing debt
▪ Automatically resolving issues
Slide 15
16. A journey to automatic Java refactoring
Resolving Automatically
▪ Spotting issues
▪ Generating refactored code
▪ Avoiding Conflicts
▪ Preserving Functionality
▪ Test automation
▪ Preserving Comments
Slide 16
17. A journey to automatic Java refactoring
From Spotting to fixing
Can I automate that?
Slide 17
18. A journey to automatic Java refactoring
Change source with AST
Slide 18
1
Parsing
source
to
AST
Firstyou
need
a
toolthatw
illparse
your
source
code
like
a
com
piler
2
M
anipulating
AST
Use
the
resulting
AST
to
adoptthe
code
and
apply
fixes
3
Assure
syntax
stillvalid
Verify
changes
resultin
a
valid
source
code
4
W
riting
Changes
Apply
the
changes
to
the
source
file
and
replace
it
19. A journey to automatic Java refactoring
What framework to use?
Slide 19
Java Grammar Java Compiler Advantages of the Framework
● Open source
● Integrated within Eclipse IDE
1 Eclipse JDT
● Open source
● Integrated within Intellij IDE
2 Javaparser.org
● Mostly independent
● Building a lot from scratch
3 Antlr 4
20. A journey to automatic Java refactoring
jSparrow
Slide 20
Eclipse JDT
Eclipse Plugin
GitHub App
Maven Plugin
21. A journey to automatic Java refactoring
Automatic Refactoring
● Pros
+ Save time
+ Reduce debt
+ Set standards
+ Integration in development process
+ Improve coding habits
● Cons
- Technical restrictions
Slide 21
22. A journey to automatic Java refactoring
jSparrow Features
▪ 53 Rules and growing
▪ Custom rule profiles
▪ Portable between platforms
▪ Built-in review functionality
Slide 22
23. A journey to automatic Java refactoring
The end
▪ Thanks for your time, we now got some time left to discuss
questions.
▪ You can also visit us at our booth at number 13
Slide 23