Introduction to PlantUML: Unleashing the Power of Visual Representation as a Code in Software Development

Introduction

In the fast-paced world of software development, effective communication and clear documentation are paramount. This is where the power of visual representation comes into play, and one tool that has significantly simplified this process is PlantUML. This open-source project has revolutionized the way developers, project managers, and analysts create and share diagrams. It’s not just a tool; it’s a visual language that transforms the way we think about and document software architecture, processes, and workflows. Continue reading “Introduction to PlantUML: Unleashing the Power of Visual Representation as a Code in Software Development”

Preventing Security Vulnerabilities in a Web Application – Alexius Diakogiannis – Devoxx Morocco 2023

This a speech I gave during Devoxx Morocco 2023

In today’s digital age, web applications are a crucial part of our lives. However, with great power comes great responsibility. Companies are constantly under threat from malicious users and hackers, which is why it’s essential to safeguard your web applications.

Topics Covered:

  1. Software Development Life Cycle (SDLC) – The Shield of Defense
    • Discover the importance of implementing a robust SDLC to fortify your web application against security vulnerabilities.
  2. Secure Code Writing – The Foundation of Web Application Security
    • Understand the significance of secure coding practices and how they form the bedrock of web application security.
  3. DAST, SCA and SAST tools 
    • Usage and comparison
  4. AI in Development – A Futuristic Approach
    • Explore how artificial intelligence can be harnessed to enhance web application development security.
  5. Code Monitoring in Production – Staying Vigilant
    • Learn the strategies and tools for monitoring your code in a production environment to promptly detect and mitigate vulnerabilities.

📽️ Watch the Video

📄 Find the Presentation Slides

Explore the presentation slides to get an in-depth look at the concepts discussed during the session: Speaker Deck

 

Are Java Application Servers Dead?

In the past, application servers were essential for running Java applications. They provided a number of features that were necessary for complex applications, such as:

  • Dependency management
  • Transaction management
  • Security
  • Caching
  • Messaging

However, with the rise of microservices, many developers are moving away from application servers.

As a result, many developers believe that application servers are no longer necessary for microservices. However, there are still a number of reasons why application servers can be beneficial for Java applications, even in a microservices architecture. Continue reading “Are Java Application Servers Dead?”

JCrete Unconference: A Convergence of Minds Shaping Java and Beyond

The JCrete 2023 Unconference stands as a premier annual event, taking place in Kolymvari (Chania, Crete) each July since 2010. Renowned for its exclusivity, this invitation-only Unconference brings together influential minds from the computing industry who have significantly impacted the field. The core theme revolves around Java and related subjects, fostering an environment where participants engage in informal discussions to share experiences and collectively learn from one another. Continue reading “JCrete Unconference: A Convergence of Minds Shaping Java and Beyond”

Introduction to Java Modules: A Comprehensive Tutorial

A picture showing a scren with java source code

Java 9 introduces a new feature called Java Modules, which is part of the Java Platform Module System (JPMS). The Java Platform Module System, also known as Project Jigsaw, brings several benefits to Java developers, including smaller application distributables, encapsulation of internal packages, and startup detection of missing modules. In this tutorial, we will explore the basics of Java modules, their structure, and how to use them effectively. Continue reading “Introduction to Java Modules: A Comprehensive Tutorial”

Java 8 to Java 17: New Features and Hassle-Free Migration

Java 8 to Java 17

Java, the widely-used programming language, as it continues to evolve with each new release I still see companies and projects hesitating to transition from Java 8 to Java 17, the latest long-term support (LTS) release. This leads them into either using unsupported Java 8 versions or paying a heavy fee for support or for the usage of an alternative VM like Azul. The transition from Java 8 to Java 17 has brought about numerous enhancements and features that developers can leverage to create more efficient and robust applications. In this article, we will delve into the new features introduced in Java 17, compare them with Java 8, and provide best practices for migrating from Java 8 to Java 17. Continue reading “Java 8 to Java 17: New Features and Hassle-Free Migration”

Why Governments Need To Favor Open Source Software for Enhanced Security and Transparency

illustration of a cogweel with a lock

As governments around the world grapple with the increasing reliance on technology for delivering citizen services and ensuring national security, the debate over adopting open source software has never been more critical. With recent instances of cyberattacks and surveillance, the need for transparent and secure government software is paramount. This article explores the importance of transitioning government software to open source and highlights key concerns, challenges, and benefits associated with this shift. By examining real-world examples, we aim to emphasize the significance of open source software in improving security, transparency, and trust in public institutions. Continue reading “Why Governments Need To Favor Open Source Software for Enhanced Security and Transparency”

What are we going to do with this big heap of menhirs? The Importance of Evaluating Architecture Trends Within the Context of Your Business

picture showing a roman village in Asterix with two romans discussing about what are we going to do with these menhirs

The story: Caesar has sent his top economist to Asterix’s village with a plan to get the Gauls to fight each other instead of the Romans. The economist starts buying menhirs from Obelix. Obelix becomes snooty, money-driven, and unpopular. But now the Romans have a different problem and the question arises:

What are we going to do with this big heap of menhirs?

In today’s fast-paced digital world, architecture trends can be tempting. However, following them dogmatically can be detrimental to your business in the long run. Instead, it’s crucial to evaluate architecture trends within the context of your unique needs and digital transformation goals.

A recent example of this is Amazon Prime Video’s live stream monitoring service. The team originally used a distributed microservices architecture, which caused overhead and was costly. Instead of sticking to their original approach, they made the bold decision to combine their microservices into a monolith and scale it. The result was a 90% reduction in architecture costs.
Continue reading “What are we going to do with this big heap of menhirs? The Importance of Evaluating Architecture Trends Within the Context of Your Business”

How to install SonarQube locally or in production to check your code for vulnerabilities, performance and maintainability

A picture with a teenager starring. the caption sais looking at your code after one year. Did I wrote that?

Introduction

From Wikipedia: SonarQube (formerly Sonar) is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs and code smells on 29 programming languages. SonarQube offers reports on duplicated code, coding standards, unit tests, code coverage, code complexity, comments, bugs, and security recommendations. SonarQube can record metrics history, evolution graphs and provides fully automated analysis and integration with Maven, Ant, Gradle, MSBuild and continuous integration tools (Atlassian Bamboo, Jenkins, Hudson, etc.). In other words it checks if what your team has written is secure, performs well, it is tested and easy to maintain.

Continue reading “How to install SonarQube locally or in production to check your code for vulnerabilities, performance and maintainability”

What is a watering hole attack and how can I defend myself?

If you have any hunting experience or have been in a beer talk with hunting stories  you probably have came across the term “Watering Hole Attack“. In this attack the hunter is covered near an area with a water hole where animals go in order to drink water, feel safe and usually have their guards down and their instincts more relaxed. So they don’t have to track the prey and attack on the go but wait until it comes to it’s fate on it’s own. Very similar to this approach a hacker targets specific end users by infecting frequently visited websites with malware that spreads to the user’s device.

Continue reading “What is a watering hole attack and how can I defend myself?”