Ein Großteil der praktizierten Software-Entwicklung ist Wartung, also das Herumbasteln an Software, die eigentlich schon fertig sein sollte, aber trotzdem irgendwie noch nicht ganz so funktioniert wie sie soll. "Bastelorientiertes Programmieren" ist so ziemlich das Gegenteil von robuster und sicherer Entwicklung, aber die meisten heutigen Informatik-Systeme werden genauso entwickelt. (Inbesondere die allgegenwärtigen IoT-Geräte, denen wir immer mehr Aspekte unseres Lebens anvertrauen.) Wie also bekommen wir die Kontrolle über die Software der Zukunft zurück, die zunehmend außer Kontrolle gerät? Nicht mit objektorientierter Programmierung: Veränderbarer Zustand, die Abwesenheit von uniformen Abstraktionsmechanismen und vererbungsbedingte Komplexität machen es für Menschen schwer, korrekte und robuste Software zu entwickeln. Während agile Methoden Entwicklerinnen und Entwickler von den seelensaugenden Prozessen der Vergangenheit befreit haben, ist die vorherrschende Technologie - Objektorientierung - immer noch Teil des Problems, nicht der Lösung. Es ist an der Zeit, sich davon zu verabschieden: Wir sollten die systematische Konstruktion korrekter Software propagieren. Im Zentrum dieser Revolution steht die konsequente Anwendung funktionaler Programmierung - also unveränderlicher Datenstrukturen, systematischer Abstraktion und Datenmodellierung. Weg mit den toten techologieorientierten Objekten der Vergangenheit, her mit geschmeidigen Modellen, die unsere Domänen bereichern und unsere Seele!
Java agents are pluggable self contained components that run embedded in a JVM and intercept the classloading process. They were introduced in Java 5 along with the powerful java.lang.instrument package. Java agents can be loaded statically at startup or dynamically (programmatically) at runtime to attach to a running process.
Java agents were an awesome addition to the JVM as it opened a lot of opportunities for tool designers and changed Java tooling landscape quite drastically. In conjunction with Java bytecode manipulation libraries it is now possible to do amazing things to Java classes: we can experiment with programming models, redefine classes at runtime, record execution flow, etc.
I’d like to give an overview of Java agents’ functionality along with the usage examples and real world experiences. You will learn, how to implement an agent and apply Instrumentation API in combination with bytecode manipulation libraries to solve interesting tasks.
Slides from my workshop at Hack.LU 2010 in Luxembourg. This workshop introduced the basic concepts of Return Oriented Programming with some hands-on exercises.
- Fluent Decorator
- In, Out, In, Out, Shake It All About
- The Lonely Override
- Monad
- Functional Reactive?
你可以在以下找到中文說明:
http://www.codedata.com.tw/social-coding/java8-patterns/
Going native with less coupling: Dependency Injection in C++Daniele Pallastrelli
Slideshow from C++ Meetup Bologna 2014, about the central role of Dependency Injection in OO software.
The slide deck contains detailed explanation about dependency injection in general and C++ frameworks in particular.
Java agents are pluggable self contained components that run embedded in a JVM and intercept the classloading process. They were introduced in Java 5 along with the powerful java.lang.instrument package. Java agents can be loaded statically at startup or dynamically (programmatically) at runtime to attach to a running process.
Java agents were an awesome addition to the JVM as it opened a lot of opportunities for tool designers and changed Java tooling landscape quite drastically. In conjunction with Java bytecode manipulation libraries it is now possible to do amazing things to Java classes: we can experiment with programming models, redefine classes at runtime, record execution flow, etc.
I’d like to give an overview of Java agents’ functionality along with the usage examples and real world experiences. You will learn, how to implement an agent and apply Instrumentation API in combination with bytecode manipulation libraries to solve interesting tasks.
Slides from my workshop at Hack.LU 2010 in Luxembourg. This workshop introduced the basic concepts of Return Oriented Programming with some hands-on exercises.
- Fluent Decorator
- In, Out, In, Out, Shake It All About
- The Lonely Override
- Monad
- Functional Reactive?
你可以在以下找到中文說明:
http://www.codedata.com.tw/social-coding/java8-patterns/
Going native with less coupling: Dependency Injection in C++Daniele Pallastrelli
Slideshow from C++ Meetup Bologna 2014, about the central role of Dependency Injection in OO software.
The slide deck contains detailed explanation about dependency injection in general and C++ frameworks in particular.
ESUG 2017
Video: https://youtu.be/yDKaHphbFow
At ESUG in Cambridge I introduced Sista, an optimizing JIT design for the Pharo VM. The current implementation is now running 1.5x times faster on production applications and up to 5x faster on specific benchmarks that the production Pharo VM. In this talk, I will present the overall optimization pipeline and I will try to show the myriad of implementation details, including the interaction between Sista and other optimizations (Context-to-Stack mapping, closure optimizations, ...), pathological code patterns or the problems related to stack deoptimization and closures.
Bio: Clement Bera implemented the Sista optimizing JIT in the Cog VM for Pharo. He worked 5 years with Eliot Miranda on improving the Cog VM.
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
MSK DOT NET #5
2016-12-07
In this talk Adam will describe how latest changes in.NET are affecting performance.
Adam wants to go through:
C# 7: ref locals and ref returns, ValueTuples.
.NET Core: Spans, Buffers, ValueTasks
And how all of these things help build zero-copy streams aka Channels/Pipelines which are going to be a game changer in the next year.
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
Modern Programming in Java 8 - Lambdas, Streams and Date Time APIGanesh Samarthyam
This presentation provides a comprehensive overview of modern programming in Java. It focuses only on Java 8 features: Lambdas, Streams and Date Time API. It also briefly covers refactoring legacy Java code to Java 8.
어느덧 스무살이 된 자바. 좋든싫든 프로그래밍의 세계에 몸담고 있는 이상 부딪히지 않을 수 없는 언어인데요, 이 자바에 대한 올바른 모습의 이해화 앞으로 나아가야 할 방향을 모색해본다는 의미에서 "모던 자바의 역습"이라는 타이틀로 실시한 온라인 세미나의 슬라이드 자료입니다.
진행자: 김대우(http://lekdw.blogspot.kr/)
정도현(http://moreagile.net)
이번 세미나는 게임개발자이신 김대우님을 모시고 진행하게 되었는데요 자바 언어와 관련 하여 다음과 같은 주제로 두시간에 걸쳐 발표를 진행합니다.
- 간단히 살펴보는 자바20년의 발자취
- 자바를 둘러싼 진실 혹은 거짓(성능,생산성,품질)
- SI영역 이외에서 자바의 가치
- 모던자바의 역습: 자바8과 함수형 프로그래밍
- 자바 개발의 새로운 패러다임들
Slides from tech talk about the art of non-blocking waiting in Java with LockSupport.park/unpark and AbstractQueuedSynchronizer. Presented on JPoint 2016 Conference.
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Yulia Tsisyk
Сегодня на .NET-конференциях мы все чаще мы слышим про WinDBG, но в тоже время он все еще остается в стороне среди .NET-разработчиков, считается крайне специфичным и даже ненужным инструментом.
В докладе мы попробуем привнести альтернативный взгляд. Покажем как выстроить процесс сбора дампов, их анализа и исправления, встроить его в жизненный цикл разработки вашего приложения, сделав неотъемлемой частью для диагностики как рядовых, так и уникальных случаев. Затем рассмотрим группы основных проблем (deadlocks, out of memory, access violation, logical errors, etc.), которые могут произойти с вашим приложением, и инструменты для их анализа. И, конечно же, разберем примеры каждой из проблем, которые встретились нам на практике в наших продуктах, в коде .NET и WPF:
— Как при помощи флэшки «повесить» WPF-приложение?
— Безопасно ли вызывать DateTime.Now?
и другие жизненные ситуации.
Moscow .Net Meetup #4·14 ноября 2016
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
ESUG 2017
Video: https://youtu.be/yDKaHphbFow
At ESUG in Cambridge I introduced Sista, an optimizing JIT design for the Pharo VM. The current implementation is now running 1.5x times faster on production applications and up to 5x faster on specific benchmarks that the production Pharo VM. In this talk, I will present the overall optimization pipeline and I will try to show the myriad of implementation details, including the interaction between Sista and other optimizations (Context-to-Stack mapping, closure optimizations, ...), pathological code patterns or the problems related to stack deoptimization and closures.
Bio: Clement Bera implemented the Sista optimizing JIT in the Cog VM for Pharo. He worked 5 years with Eliot Miranda on improving the Cog VM.
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
MSK DOT NET #5
2016-12-07
In this talk Adam will describe how latest changes in.NET are affecting performance.
Adam wants to go through:
C# 7: ref locals and ref returns, ValueTuples.
.NET Core: Spans, Buffers, ValueTasks
And how all of these things help build zero-copy streams aka Channels/Pipelines which are going to be a game changer in the next year.
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
Modern Programming in Java 8 - Lambdas, Streams and Date Time APIGanesh Samarthyam
This presentation provides a comprehensive overview of modern programming in Java. It focuses only on Java 8 features: Lambdas, Streams and Date Time API. It also briefly covers refactoring legacy Java code to Java 8.
어느덧 스무살이 된 자바. 좋든싫든 프로그래밍의 세계에 몸담고 있는 이상 부딪히지 않을 수 없는 언어인데요, 이 자바에 대한 올바른 모습의 이해화 앞으로 나아가야 할 방향을 모색해본다는 의미에서 "모던 자바의 역습"이라는 타이틀로 실시한 온라인 세미나의 슬라이드 자료입니다.
진행자: 김대우(http://lekdw.blogspot.kr/)
정도현(http://moreagile.net)
이번 세미나는 게임개발자이신 김대우님을 모시고 진행하게 되었는데요 자바 언어와 관련 하여 다음과 같은 주제로 두시간에 걸쳐 발표를 진행합니다.
- 간단히 살펴보는 자바20년의 발자취
- 자바를 둘러싼 진실 혹은 거짓(성능,생산성,품질)
- SI영역 이외에서 자바의 가치
- 모던자바의 역습: 자바8과 함수형 프로그래밍
- 자바 개발의 새로운 패러다임들
Slides from tech talk about the art of non-blocking waiting in Java with LockSupport.park/unpark and AbstractQueuedSynchronizer. Presented on JPoint 2016 Conference.
Рахманов Александр "Что полезного в разборе дампов для .NET-разработчиков?"Yulia Tsisyk
Сегодня на .NET-конференциях мы все чаще мы слышим про WinDBG, но в тоже время он все еще остается в стороне среди .NET-разработчиков, считается крайне специфичным и даже ненужным инструментом.
В докладе мы попробуем привнести альтернативный взгляд. Покажем как выстроить процесс сбора дампов, их анализа и исправления, встроить его в жизненный цикл разработки вашего приложения, сделав неотъемлемой частью для диагностики как рядовых, так и уникальных случаев. Затем рассмотрим группы основных проблем (deadlocks, out of memory, access violation, logical errors, etc.), которые могут произойти с вашим приложением, и инструменты для их анализа. И, конечно же, разберем примеры каждой из проблем, которые встретились нам на практике в наших продуктах, в коде .NET и WPF:
— Как при помощи флэшки «повесить» WPF-приложение?
— Безопасно ли вызывать DateTime.Now?
и другие жизненные ситуации.
Moscow .Net Meetup #4·14 ноября 2016
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
Presentation from JVMLS 2015
One bottleneck in the Nashorn JavaScript engine is startup time. Nashorn, as it works currently in Java 8, JITs everything to Java bytecode, accruing overhead in code generation and class installation. Nashorn in Java 9, can in unfortunate cases, increase this compilation workload significantly, as the new optimistic type system, which has greatly increased steady state performance, requires more code invalidation on warmup. Based on our optimistic type compilation framework, which contains all the mechanisms for quick code replacement and on stack replacement on the bytecode level, I will present the new execution architecture we are developing. It will minimizes compile time intelligently, while maintaining or possible even increasing code performance, due to extra profiling and execution frequency information being passed to the JIT. I will also talk about what the future will bring in terms of other dynamic languages on the Nashorn engine, partial method compilation of hot paths and other intriguing possibilities that our new execution model opens up.
Object-Oriented Programming has well established design principles, such as SOLID. For many developers architecture and functional programming are at odds with each other: they don’t know how their existing tricks of the trade convert into functional design. This problem becomes worse as hybrid languages such as Scala, Java 8 and Ruby become common. I will talk about how functional programming helps you implement the SOLID principles, and how a functional mindset can actually help you achieve the holy grail of OO, encapsulation.
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav DukhinFwdays
Is it possible to write a program that significantly changes its behaviour during the runtime without changing its source code? Have you ever wondered about native TypeScript support in Node.js? Or whether it is possible to write JavaScript code that syntactically feels a lot different but is still valid? The answers to these and a lot of other questions will be discussed in detail in this talk. From the basics of metaprogramming theory to practical examples of its application in enterprise projects. We are going to talk about metalinguistic abstractions, domain-specific languages, and how they can help us solve software engineering problems. We will take a look at how popular frameworks and libraries like React.js, Express.js, Nest.js and Lodash use metaprogramming to develop systems that are used worldwide. Moreover, we will learn how to think in terms of metaprograms and broaden our outlook towards the great world of metasystems.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020.
Reactive web-applications are an answer to the new requirements of high-availability and resource efficiency brought by this rapid evolution. On the JVM, a set of new languages and tools has emerged that enable the development of entirely asynchronous request and data handling pipelines. At the same time, container-less application frameworks are gaining increasing popularity over traditional deployment mechanisms.
This talk is going to give you an introduction into one of the most trending reactive web-application stack on the JVM, involving the Scala programming language, the concurrency toolkit Akka and the web-application framework Play. It will show you how functional programming techniques enable asynchronous programming, and how those technologies help to build robust and resilient web-applications.
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineRoman Kirillov
This is a slide deck of a talk given to a London GDG meeting on 2013/07/10. It covers following topics:
* Building RESTful APIs using Cloud Endpoints and Google AppEngine
* Building Javascript and Android clients for these APIs
* Enabling OAuth2 authentication for this APIs.
Full video recording of the talk will be available later.
JavaScript basics
JavaScript event loop
Ajax and promises
DOM interaction
JavaScript object orientation
Web Workers
Useful Microframeworks
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
The Architecture of Uncertainty - Kevlin HenneyDevDay Dresden
Slides of our Meetup 14.04.2022
Contents:
Ralph Johnson defined architecture as "the decisions that you wish you could get right early in a project, but that you are not necessarily more likely to get them right than any other". Given our inability to predict the future, how can we design effectively for it? Much project management thinking is based on the elimination of uncertainty, and advice on software architecture and guidance for future-proofing code often revolves around adding complexity to embrace uncertainty. In most cases, this is exactly the opposite path to the one that should be taken.
The talk looks at how uncertainty, lack of knowledge and options can be used to partition and structure the code in a system.
About:
Kevlin Henney is an independent consultant, speaker, writer and trainer. His development interests include programming languages, software architecture and programming practices, with a particular emphasis on unit testing and reasoning about practices at the team level. He has helped many teams with their code, culture and practices. He is co-author of two volumes in the Pattern-Oriented Software Architecture series, editor of 97 Things Every Programmer Should Know and co-editor of 97 Things Every Java Programmer Should Know.
DevDay 19 Accessibility: Praxistipps für EntwicklerDevDay Dresden
Die einfachste funktionierende Lösung muss das Erreichen eines positiven Nutzererlebnisses für jeden Nutzer ermöglichen.
Mit der Aufnahme von nur 10 Praxistipps zur Barrierefreiheit und Software-Ergonomie in den Entwicklungsalltag kann jeder Web- und Softwareentwickler zu dieser Vision beitragen. Das Entwickeln von Softwarelösungen - die super funktionieren, die von den Anwendern gern genutzt und von allen Nutzern, auch beeinträchtigten oder älteren, bedient werden können - ist kein Hexenwerk. Diese Session tritt den Beweis an!
Dev Day 2019: Phillip Krenn – Aggregierte Logging PatternsDevDay Dresden
In verteilten Applikationen besteht immer der Bedarf Logs zu zentralisieren - sobald man mehr als ein paar Server oder Container hat, reichen SSH und cat, tail oder less nicht mehr aus. Das übliche Problem ist aber, wie man möglichst effizient zu einer zentralisierten oder aggregierten Log-Lösung kommt.
Dieser Vortrag stellt mehrere Ansätze und Patterns mit ihren Vor- und Nachteilen vor, so dass die Zuhörer den auswählen können, der am besten zu Ihrer Organisation passt:
* Parsen: Bestehende Logdaten können weiterverwendet werden und die relevanten Informationen werden per Regular Expression extrahiert.
* Senden: Mit einem geeigneten Log-Appender werden die Ereignisse direkt gesendet, ohne dass sie in einer Logdatei gespeichert werden müssen.
* Strukturieren: Ereignisse in einem strukturierten Format abspeichern, das dann direkt zentralisiert werden kann.
* Containerisieren: Das Logging mit Containern erfordert zusätzliche Automatismen, um effizient mit Logs arbeiten zu können.
* Orchestrieren: Auch wenn Dienste nur kurzfristig laufen und dynamisch verteilt werden, gibt mit Kubernetes Möglichkeiten den Überblick zu bewahren.
Dev Day 2019: Mirko Seifert – Next Level Integration Testing mit Docker und T...DevDay Dresden
Docker hat in den letzten Jahren die Art und Weise wie wir Software ausliefern revolutioniert. Aber Docker ist darüberhinaus ein Werkzeug, das auch beim Testen von Anwendungen extrem nützlich sein kann.
Im Vortrag stellen wir verschiedene Anwendungsmöglichkeiten von Docker beim Softwaretest vor. Anschließend zeigen wir Euch welche Tools/Bibliotheken im Java-Umfeld (u.a. testcontainers.io) in diesem Kontext eingesetzt werden können. Zum Abschluss des Vortrags besprechen wir mit Euch Fallstricke sowie Lösungsansätze zu komplexeren Testszenarien.
Dev Day 2019: Nathan Mattes – Kommunikation ist wichtig, scheiße wichtig und ...DevDay Dresden
Gemeinsam mit einem Freund nehme ich einen Podcast auf, bei dem es sich ein Kaltgetränk lang um irgendwas mit Softwareentwicklung dreht, manchmal bei Limo und Tee, meistens bei Bier. Manchmal haben wir Gäste, meistens nicht. Der Name des Ganzen: Codestammtisch. Uns fällt immer wieder auf, wie wichtig Kommunikation im Alltag von Softwareentwickler*innen ist. Die schlechte Nachricht: Kommunikation ist schwierig, du fliegst eigentlich ständig auf die Fresse. Über die guten, was das Leben von Programmierer*innen sonst noch erleichtert, wie ihr dahin kommt — Kommunikation! — und was wir sonst noch so bisher während des Podcasts gelernt haben, möchte ich gerne ein Kaltgetränk lang auf einer Bühne erläutern.
Dev Day 2019: Stephan Birnbaum – Die Glaskugel hat ausgedient, wir machen Sof...DevDay Dresden
Unser über Jahre gewachsenes monolithisches System soll modernisiert werden und wir ziehen dafür eine Restrukturierung bzw. Zerlegung in Betracht. Wie gut kennen wir aber eigentlich unser Legacy-System? Die Dokumentation ist veraltet und die verantwortlichen Entwickler haben das Unternehmen vor langer Zeit verlassen. Wie finden wir nun heraus, wie sich fachliche und technische Aspekte in der Code-Struktur abbilden, welche Zusammenhänge zwischen diesen bestehen und wo Risiken schlummern?
Der Vortrag nähert sich dieser Frage via Software Analytics. Am Beispiel eines Open-Source eCommerce-Systems wird gezeigt, wie die werkzeugunterstützte Analyse von Code-Strukturen und Metriken Licht ins Dunkel bringen kann. Mit den gewonnenen Informationen und geeigneten Visualisierungen kann anschließend der Prozess von der Aufwandsabschätzung bis hin zur Umstrukturierung wirkungsvoll unterstützt werden.
Dev Day 2019: Markus Winand – Die Mutter aller Abfragesprachen: SQL im 21. Ja...DevDay Dresden
Wussten Sie, dass das rein relationale Dogma von SQL bereits 1999 aufgegeben wurde?
SQL-92 war der letzte Standard, der auf die relationale Idee beschränkt war. Ab 1999 wurde SQL um nicht-relationale Operationen und Datenstrukturen erweitert. Obwohl dieser Schritt damals viel diskutiert wurde, dauerte es Jahrzehnte, bis die Datenbankhersteller dieses Paradigmenwechsel verdaut hatten. Viele Entwickler haben bis heute nichts davon gehört.
Dieser Vortrag gibt einen Überblick über die Evolution von SQL seit 1999 und stellt einige der neuen Funktionen anhand häufiger Anforderungen vor. Dabei wird auch aufgezeigt, wann diverse Hersteller begonnen haben, nicht-relationales SQL zu unterstützen. Letztendlich zeigt der Vortrag, dass sich SQL in den letzten Jahrzehnten genauso weiterentwickelt hat, wie die Anforderungen mit denen man in der Entwicklung zu tun hat.
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...DevDay Dresden
Bereits vor der Einführung von agile Methoden und DevOps war das Ziel von Entwicklungsprojekten die schnelle Bereitstellung von hochwertigen Produkten. Im Vordergrund stehen die Überlegungen zur optimalen Architektur und zum passenden Design. Die Aspekte der Qualitätssicherung kommen meist später, was sich während der Tests bemerkbar macht. In diesem Vortrag werden die Überlegungen und Erfahrungen zum design for testability angesprochen, die sinnvoll sind, um in Softwareprojekten von Beginn an eine optimale Testbarkeit gewährleisten zu können.
Dev Day 2019: Kathrin Friedrich/Michael Kunze – Design better together - Styl...DevDay Dresden
Impulsvortrag über das Potential eines Living Styleguides zur ganzheitlichen und effizienten Ausgestaltung verschiedener digitalen Kanäle: Website, Shop, Newsletter bis hin zu Powerpoint.
Was uns an gängigen Tools am Markt störte und wie wir unsere eigene Toolkette für ein Brand Design Framework von Konzeption, Design, Spezifikation hin in die Frontend Entwicklung optimiert haben.
Dev Day 2019: Benjamin Wolf – "Some fixes" - Commit Message 101DevDay Dresden
Commit-Messages wie etwa “some fixes” bei mehr als 200 betroffenen Dateien und mehr als 70.000 geänderten Zeilen Code sind nicht hilfreich. Im Gegenteil.
Sie sind extrem schädlich.
In diesem Lightning Talk erkläre ich, weshalb Entwickler*innen oft an Commit-Messages scheitern und wie ihr mit gezielten Fragen sowie mit sieben kleinen Regeln in Zukunft großartige Nachrichten für euch und euer Team schreiben könnt.
Dev Day 2019: Lucas Fiedler – DevOps-Dashboard: Transparenz für DevOps-TeamsDevDay Dresden
Neue Zusammenarbeitsmodelle, Verantwortung in crossfunktionalen Teams und automatisierte Workflows erfordern Transparenz für Alle. DevOps ermöglicht schneller auf Feedback zu reagieren und Geschwindigkeit, Kosten, Qualität und Risiken auszubalancieren. In Zukunft wird es daher mehr und mehr Pipelines geben, die überwacht und evaluiert werden müssen. Wir stellen unsere Idee für ein DevOps Dashboard als Tool-unabhängige Lösung, um DevOps-Metriken und Erkenntnisse entlang der der DevOps-Toolchain.
Dev Day 2019: Ulrich Deiters – Offene Daten und IT-Lösungen für den RadverkehrDevDay Dresden
Das Fahrrad gewinnt als flexibles und umweltfreundliches Verkehrsmittel wieder eine stärkere Bedeutung für die Mobilität in Städten. Zivilgesellschaftliche Initiativen wie z.B. die Radentscheide fordern von Politik und Planung eine schnellere Schaffung zeitgemäßer Infrastruktur, bringen sich ein und schaffen eine neue Fahrradkultur. Aber auch Unternehmen entdecken das Rad als Teil innovativer Mobilitätskonzepte.
Der Talk gibt einen Überblick über IT-Ansätze für die Unterstützung des Radverkehrs von Experimenten und Kampagnen über Sensoren, Apps und Tools bis hin zur Integration mit Verwaltungsprozessen zur Erhöhung der Transparenz.
Offene Daten stellen eine wesentliche Basis dar, um sowohl der Zivilgesellschaft als auch Unternehmen die Entwicklung innovativer Mobilitätslösungen zu ermöglichen. Am Beispiel von Berlin wird aufgezeigt welche Daten es schon gibt und wie ein umfassendes Open Data Angebot aussehen sollte.
Dev Day 2019: Alexander Lichter - JAMstack - Eine neuartige Webanwendungs-Arc...DevDay Dresden
JAMstack, und damit ist nicht der portablen Gitarrenverstärker den man beim Googlen als erstes findet gemeint, ist eine framework-unabhängige Architektur für moderne Webanwendungen. Bestehend aus *J*avascript, *A*PIs und *M*arkup verspricht der Ansatz besser Sicherheit "by default", einfachere Skalierung und auch noch erhöhte Performance. Ob das so einfach geht?
Dev Day 2019: Martin Schurz - Manual Work Is A Bug!DevDay Dresden
Manuelle Arbeiten sind fehleranfällig, das Wissen unsere Kunden, und das wissen auch wir selbst. Unsere Projekte drehen sich daher hauptsächlich um Digitalisierung und Automatisierung. Sei es nun für unsere Kunden oder für unsere Kollegen oder uns selbst, überall finden wir Möglichkeiten wie wir Aufgaben, der Effizienz zu liebe, weg automatisieren können.
Leider gibt es unendlich viele mögliche Lösungen und die vermeintliche "Rettung" durch Automatisierung wird auch gerne mal zu einer Sackgasse oder einem ungeliebten Kind im Projekt. Im schlimmsten Fall bekommt man dann noch die "sehr positive" Rückmeldung: "wenn das die Lösung ist, will ich mein Problem zurück".
Im Vortrag werden mehrere Modelle zur Umsetzung von Automatisierungen vorgestellt und auf dabei auftretende Probleme eingegangen. Dabei liegt der Fokus bewusst nicht auf technischen Lösungen, sondern beim methodisches Vorgehen in der Umsetzung.
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"DevDay Dresden
Seit Prozessoren nicht mehr schneller sondern nur noch mehr werden, werden uns häufig Konzepte aus der Welt der funktionalen Programmierung als Lösung versprochen. Aber wer hat schon Lust, Quellcode zu schreiben, dessen zweite Hälfte aus schließenden Klammern besteht?
Funktional programmieren aber mit modernem Syntax und solidem Unterbau. Das verspricht die Programmiersprache Elixir.
Dieser Vortrag wird zum einen die Grundlagen der Sprache vorstellen und wo vorhanden Parallelen zum Java-Umfeld aufzeigen.
Zum anderen wird gezeigt, warum Anwendungen auf Basis von Elixir die Bezeichnungen „Serverless“ und „Microservices“ eher verdienen als andere.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
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?
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.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
20. Nach der agilen Revolution
29%
Neue Features
53%
Wartung,
Komplexität
18%
“Professionalisierung”
Fahd Al-Fatish: Software Engineering - the roots, Karlsruher Entwicklertage 2017
28. Alan Kay über OO
Though OOP came from many motivations, two were central.
[...] to find a more flexible version of assignment, and then to
try to eliminate it altogether.
Alan Kay, History of Smalltalk
Communications of the ACM, 1996
51. Q-Time-Zonen
type Route = [RouteElement]
data RouteElement where
RouteOp ::
Operation -> RouteElement
RouteQTZone ::
Duration -> [RouteElement] -> RouteElement
52. Q-Time-Zonen
type Route = [RouteElement]
data RouteElement where
RouteOp ::
Operation -> RouteElement
RouteQTZone ::
Duration -> Route -> RouteElement
53. Funktionen
routeHead :: Route -> Option Operation
routeHead [] = None
routeHead (el:rest) =
case routeElementHead el of
None -> routeHead rest
Some op -> Some op
routeElementHead :: RouteElement -> Option Operation
routeElementHead (RouteOp op) = Some op
routeElementHead (RouteQTZone _ rt) = routeHead rt
54. Fortschritt
routeAdvance ::
Route -> Option (Operation, Route)
routeAdvance [] = None
routeAdvance (el:rest) =
case el of
RouteOp op -> Some (op, rest)
RouteQTZone d rt -> ???
55. Q-Time-Zonen in Bearbeitung
type Route = [RouteElement]
data RouteElement where
RouteOp :: Operation -> RouteElement
RouteQTZone :: Duration -> Route -> RouteElement
RouteQTLimit :: Time -> Route -> RouteElement
56. Fortschritt
routeAdvance :: Route -> Time -> Option (Operation, Route)
routeAdvance [] t = None
routeAdvance (el:rest) t =
case el of
RouteOp op -> Some (op, rest)
RouteQTZone d rt ->
routeAdvance (RouteQTLimit (t + d) rt : rest) t
RouteQTLimit tl rt ->
case routeAdvance rt t of
None -> routeAdvance rest t
Some (op, rt') ->
Some (op, RouteQTLimit tl rt' : rest)
57. Q-Time-Zonen in Bearbeitung
type Route = [RouteElement]
data RouteElement where
RouteOp :: Operation -> RouteElement
RouteQTZone :: Duration -> Route -> RouteElement
RouteQTLimit :: Time -> Route -> RouteElement