Java, Spring Boot, AWS, and how they fit.

I'm Abdelbaki, a software engineer. These are my notes on the language, the framework, the cloud services and the architecture decisions around them.

Making 'Nothing Leaves Your Browser' a Promise the Browser Enforces

How I used a Content Security Policy, a service worker exception and a test suite to turn a privacy claim on a client-side developer-tools site into something enforced and checkable.

  1. Custom Bean Instantiation Using @ConditionalOnProperty Annotation in Spring Boot

    Spring boot is a widely used framework to bootstrap standalone web applications. Its flexibility and capabilities in beans management make the life of...

  2. Optimizing Java Application Performance with Asynchronous Logging in Logback

    Logging is an essential component of successful debugging, accurate monitoring, and comprehensive auditing in the evolving world of Java application...

  3. A Closer Look at Annotations in Java

    Annotations are a form of meta-data that provides additional information about code elements, such as classes, methods, fields, and more. They were...

  4. Presigned URLs in AWS S3: Secure File Upload and Download

    Amazon Simple Storage Service (S3) is an object storage service offered by Amazon Web Services (AWS). It allows users to store and retrieve data from...

  5. Switch Statement in Java: From Basic to Pattern Matching

    The switch statement is a fundamental control structure in Java, allowing developers to execute different code blocks based on the value of an...

  6. The Most Used Stream Operations in Java With Examples

    Stream operations were introduced in Java 8 and they allow you to manipulate collections of data in a concise and functional way. A stream can be seen...

  7. A Deep Dive into the flatMap Operation of the Stream API in Java with Examples

    The flatMap operation is an intermediate operation provided by the Stream API, which allows you to transform each element of a stream into zero or more...

  8. Sealed Classes in Java

    Sealed classes, a new addition to the Java programming language starting from Java 15, provide developers with a powerful tool for defining restricted...

  9. Spring Boot Profiles Best Practices

    Spring Boot profiles provide a powerful way to manage application configurations for different environments or scenarios. By using profiles, developers...

  10. How to Send SMS messages using AWS SNS and Java: A Step-by-Step Guide

    When it comes to mobile applications, SMS messaging is still one of the most reliable and widely used communication channels. Amazon Web Services (AWS)...

  11. A Comprehensive Comparison of AWS S3 Storage Classes

    AWS S3 storage has been one of the most popular and widely used cloud storage services in recent years. With its flexibility, scalability, and...

  12. Object Versioning in S3

    Object versioning is a powerful feature that allows you to store multiple versions of an object within a bucket. By default, versioning is disabled on...

  13. Buckets and Objects in S3

    S3 is a global storage platform that is accessible from anywhere with an Internet connection. It is a public service that runs from all AWS regions,...

  14. High availability VS Fault Tolerance VS Disaster Recovery

    High availability, Fault Tolerance and Disaster Recovery are three concepts to understand for every Solution Architect. These concepts are sometimes...

  15. Records in Java

    After being a preview feature in Java 14 and Java 15, Java records are now part of the Java language starting from Java 16.

  16. Forward Proxy vs Reverse Proxy

    A proxy is a device that traffic gets routed through it: it is an intermediate between a client and a web server.

  17. Comparison between the different ways of dependency injection in Spring

    Dependency injection is a core feature of the Spring framework. It is used by Spring to set the bean’s dependencies while initializing the application...

  18. Difference between Map and FlatMap in Java

    The Stream API of Java 8 provides two intermediate stream operations used to perform actions on stream elements and return a stream as an output: map...