Learn what forward and backward chaining are, how and when to implement them, as well as the key differences between them.
Also find me here:
Baeldung Editor
Michal Aibin
Michal Aibin is a Faculty at British Columbia Institute of Technology and Visiting Associate Professor at Northeastern University with over 10 years experience in software development industry. He received his doctorate degree in Informatics in 2017 and since then published more than 50 research papers. His main research interests are optimization and modeling of computer networks, and adaptive algorithms and machine learning for geospatial analysis/remote sensing. Personally, he enjoys horseback riding and playing music.
Here's what I've reviewed (so far):
Baeldung on Java
- All
- Java (89)
- Core Java (74)
- Testing (70)
- Spring Boot (65)
- Java String (54)
- Spring (52)
- Persistence (39)
- Algorithms (34)
- Java Numbers (32)
- Java IO (30)
- Spring Security (29)
- NoSQL (27)
- Java Collections (27)
- Spring Data (26)
- DevOps (26)
- REST (25)
- JVM (24)
- Data (24)
- Java Dates (23)
- Spring MVC (22)
- Java List (21)
- Java Map (20)
- Security (19)
- Jakarta EE (19)
- Jackson (19)
- JPA (19)
- Maven (18)
- Java Array (17)
- JSON (17)
- Java Concurrency (16)
- HTTP Client-Side (15)
- Spring Cloud (13)
- Java Streams (13)
- Reactive (12)
- Architecture (12)
- Cloud (11)
- Spring Web (10)
- Groovy (10)
- Spring Persistence (9)
- Networking (9)
- Logging (9)
- IDE (8)
- Gradle (7)
- XML (6)
- Web Services (6)
- Artificial Intelligence (5)
- Spring WebFlux (4)
- Java Web (3)
- Docker (2)
Multiple Databases With Flyway in Spring Boot
Filed under Spring Boot
Learn how to configure Spring Boot with two databases, manage Flyway migrations independently for each, and validate the setup using unit tests.
Web Crawler Using WebMagic
Filed under Java Web
Explore WebMagic, its architecture, and setup details.
A Practical Guide to Null-Safety in Java With JSpecify
Filed under Java
Explore the JSpecify tool that helps developers get rid of null-related errors to a great degree.
Should Jackson’s ObjectMapper be Declared as a Static Field?
Filed under Jackson
Explore the trade‑offs and Jackson’s real thread‑safety guarantees.
Introduction to Jimmer ORM
Filed under Persistence
Get started with the Jimmer ORM framework.
Convert JSON Object to JSON Array in Java
Filed under Java Array, JSON
Explore ways to transform a JSON object to a JSON array using the most popular Java JSON libraries.
How to Implement a Thread-Safe Singleton in Java?
Filed under Java Concurrency
Explore various approaches to implement thread-safe Singleton patterns in Java, examining their trade-offs and best practices.
Using Groq Chat with Spring AI
Filed under Artificial Intelligence, Spring
Explore the integration of the Groq inference engine with Spring AI’s OpenAI library.
Baeldung on Linux
- All
- Administration (117)
- Processes (70)
- Scripting (69)
- Security (38)
- Filesystems (38)
- Files (31)
- Networking (28)
- File Editing (27)
- User Administration (23)
- Installation (22)
- Network Configuration (19)
- Web (18)
- File Viewing (17)
- File Searching (12)
- Package Management (10)
- File Permissions (10)
- Boot Process (10)
- File Compression (9)
- Text Processing (8)
- Network Monitoring (8)
- File Conversion (7)
- File Transfer (6)
- Building (3)
- Service Management (2)
- Search (2)
- Docker (1)
Resolving the Reverse Tunnel Remote port forwarding failed for listen port SSH Error
Filed under Network Configuration, Network Monitoring, Security
Learn about reverse SSH tunnels, i.e., SSH port forwarding, and issues that you might encounter when trying to use them.
Add Newline at the End of curl Response Body
Filed under File Transfer, Web
Explore practical ways to automatically append a newline to curl responses, ensuring consistent shell behavior.
How to Pipe Data to cURL POST Requests
Filed under Web
Learn how to pipe data to cURL POST requests.
Intel and AMD Microcode and Properly Updating Microcode in Linux
Filed under Installation, Processes
Learn about processor microcode and see how to check and update it in Linux for two major processor manufacturers.
How to Disable Fast (Quick) Boot When BIOS and UEFI Are Inaccessible
Filed under Boot Process
Learn about a firmware option that enables faster booting for some operating systems but might prevent us from getting into the BIOS or UEFI setup.
How To Automatically Connect to a VPN in Linux
Filed under Network Configuration
Explore two ways to connect to a virtual private network in Linux automatically.
SMB mount Security Modes and Fixing mount error(13): Permission denied in Linux
Filed under Filesystems
Explore the mount command, its security modes related to the SMB protocol, an unexpected error that mismatches can produce, and the implications of different settings.
What Are the rcuos or rcuob Processes Seen in the Output of top?
Filed under Administration, Processes
Learn about the kernel read-copy-update (RCU) mechanism, its historical implementation, and current guiding principles.
How to Determine if a Specific Module Is Loaded in the Linux Kernel
Filed under Boot Process, Installation
Learn to check whether the kernel has loaded a given module or not.
Baeldung on Scala
- All
- Scala Collections (4)
- Testing (2)
- Scala Strings (2)
- Scala Syntax (1)
- Scala Numbers (1)
- Scala Concurrency (1)
- Scala Basics (1)
- Libraries (1)
- Akka (1)
CSV Files in Scala
Filed under Libraries, Scala Numbers, Scala Strings
Learn how to read and write CSV files with Scala.
Different Ways To Iterate Over Collections in Scala
Filed under Scala Collections
Explore how to iterate over collections in Scala using foreach and for comprehension.
How to Check If Code Compiles in ScalaTest
Filed under Testing
Learn how to test whether a Scala snippet compiles using Matchers or Assertions.
Understanding the Differences: reduceLeft, reduceRight, foldLeft, foldRight, scanLeft, and scanRight in Scala
Filed under Scala Collections
Learn about six powerful functions of Scala language for aggregating the elements of a collection.
Get a Subarray in Scala
Filed under Scala Collections
Learn how to obtain subarrays in Scala, exploring two primary methods: the slice() function and the combination of drop() and take().
Introduction to Parallelism and Parallel Collections
Filed under Scala Concurrency
Explore some theoretical concepts of parallel computing applied with Scala.
Testing Akka Actors
Filed under Akka
Explore how we can test Actors to ensure that they behave as expected.
Usages of Underscore (_) in Scala
Filed under Scala Syntax
Explore different ways to use the Scala underscore.
String Interpolation in Scala
Filed under Scala Strings
Explore different ways of using string interpolation in Scala.
Baeldung on Computer Science
- All
- Networking (143)
- Machine Learning (122)
- Security (87)
- Algorithms (87)
- Programming (84)
- Math and Logic (78)
- OS (67)
- Deep Learning (61)
- Software Architecture (37)
- Data Structures (36)
- Artificial Intelligence (36)
- Trees (35)
- Computer Vision (35)
- Sorting (26)
- Graphs (22)
- Latex (18)
- Core Concepts (15)
- Graph Traversal (14)
- Data Science (14)
- Searching (13)
- Path Finding (11)
- Concurrency (7)
- Research (6)
- Web (5)
- Graph Theory (3)
- Methodology (1)
How to Generate New Art From Existing Images Using Deep Learning?
Filed under Computer Vision
A walkthrough of building an art style transfer program using deep learning techniques and tools like TensorFlow and the VGG16 model.
How to Find the Maximum Value in Relational Algebra
Filed under Math and Logic
Learn how to find the maximum in relational algebra.
Raft Consensus Algorithm
Filed under Algorithms
Explore the Raft consensus algorithm, a distributed consensus protocol designed to be both understandable and practical for real-world systems.
Introduction to Agentic AI
Filed under Artificial Intelligence
Learn about Agentic AI, a type of artificial intelligence that can operate autonomously.
What Is a Monad?
Filed under Programming
Learn what a monad is and what it means to write code using it.
What Is a Monotonic Stack?
Filed under Data Structures
Learn to use a monotonic stack and implement it effectively, significantly enhancing your ability to solve complex problems efficiently.
What Is Duck Typing?
Filed under Programming
Explore the programming concept of duck typing, defining it from different standpoints.
Different Text Summarization Techniques Using Langchain
Filed under Deep Learning
Explore LangChain’s stuffing, map-reducing, refining, and custom techniques, which all depend on the user’s specific requirements, document features, and overall performance expectations.
Select Rows in Pandas Dataframes Based on a Column
Filed under Data Science
Learn how to filter a Pandas dataframe based on a single column.
Baeldung on Kotlin
- All
- Kotlin Collections (7)
- Kotlin Basics (6)
- Testing (3)
- Spring (3)
- Libraries (3)
- Kotlin-Java Interop (3)
- Kotlin Server-Side (3)
- Kotlin (3)
- Kotlin Classes and Objects (2)
- Kotlin Arrays (2)
- HTTP Client-Side (2)
- Algorithms (2)
- Persistence (1)
- Kotlin Web (1)
- Kotlin Strings (1)
- Kotlin IO (1)
- Kotlin Functions (1)
- Functional Programming (1)
Download PDF Files with Retrofit and Coroutines
Filed under Kotlin
Explore an efficient approach to downloading PDF files using Retrofit and the support of Kotlin Coroutines.
Functional HTTP Endpoints with Spring MVC/WebFlux and Kotlin
Filed under Functional Programming, HTTP Client-Side, Spring
Explore the functional API for Spring WebFlux and Spring WebMVC in Kotlin.
A Look at the Ktor Client
Filed under HTTP Client-Side, Kotlin Web
Explore various solutions offered by the Ktor Client.
A Guide to RSocket with Kotlin
Filed under Kotlin Server-Side, Libraries
Learn how to use RSocket with Kotlin.
Remove Elements From a List While Iterating in Kotlin
Filed under Kotlin Basics
Learn how to remove elements from a list when iterating over it.
Print Lists Content Separated by Comma
Filed under Kotlin Collections
Explore different techniques to print a List’s elements separated by a comma in Kotlin.
Kotlin actual Keyword
Filed under Kotlin-Java Interop
Explore two Kotlin keywords: expect and actual.
Using Java Reflection with Kotlin Companion Objects
Filed under Kotlin-Java Interop
Learn how to access Kotlin companion objects via Java Reflection API.
The Difference Between Int and Integer in Kotlin
Filed under Kotlin Basics
Explore the differences between Int and Integer in Kotlin.
Baeldung on Ops
- All
- Docker (54)
- Git (32)
- Kubernetes (26)
- Jenkins (14)
- DevOps (6)
- Cloud (4)
- Logging (3)
- Deployment Tools (3)
- DevOps Concepts (1)
How to Get the Title of Pull Request in GitHub Actions?
Filed under Git
Learn multiple ways of getting the title of a pull request.
Dockerfile Mounts and Fixing Error Unknown Flag: ‘mount’
Filed under Docker
Learn what a Dockerfile is, how it evolved, and ways to use special mount types.
The Difference Between tags and tags_all Fields in Terraform
Filed under Cloud, Deployment Tools
Learn how Terraform handles tagging through the tags and tags_all attributes.
Create Pull Request With GitHub Actions
Filed under Git
Explore different ways to create a pull request using GitHub Actions, including the GitHub CLI, the REST API, and the peter-evans/create-pull-request action.
Auto-Remove Container Using docker-compose.yml
Filed under Docker
Explore the topic of auto-removing containers using docker-compose.yml.
How to Change the Network of a Running Docker Container?
Filed under Docker
Explore a common Docker networking issue we may encounter when containers are running.
Guide to Getting the Commit Message in GitHub Actions
Learn how to get the commit message in GitHub actions.
Guide to Getting Commit SHA in GitHub Actions
Learn how to get the commit SHA in GitHub actions.
Run Gunicorn Server in Docker
Filed under Docker
Learn how to run a Gunicorn server in Docker.
Baeldung on SQL
- All
- SQL Queries (13)
- SQL Joins (7)
- Database Concepts (7)
- SQL Tables (4)
- Database Access (3)
- SQL Operators (2)
- SQL Functions (2)
- SQL Basics (2)
- Databases (2)
- DDL (1)
What Is Sargability in SQL?
Filed under SQL Queries
Learn what sargability is and why it matters.
How to Return a Pivot Table Output in SQL?
Filed under SQL Queries
Explore the difficulties associated with pivoting data in SQL compared to spreadsheets.
How to Configure Time Zone Settings in MySQL?
Filed under Databases
Learn how MySQL handles time zones.
Change a PostgreSQL User Password
Filed under Database Access
Learn different ways to update the PostgreSQL user password.
Deleting One of Two Identical Rows in SQL
Filed under Database Concepts
Learn different approaches to deleting duplicate rows in SQL.
How to Get OID of PostgreSQL Table
Filed under SQL Tables
Explore several methods for retrieving the OID of a table in PostgreSQL.
Convert Month Number to Month Name Function in SQL
Filed under SQL Functions
Explore different approaches to get the month names using numbers in SQL.
Lateral Join vs. Subquery: What’s the Difference
Filed under SQL Joins, SQL Queries
Explore the differences between lateral joins and subqueries.
Differences Between JSON and JSONB Data Types in PostgreSQL
Filed under SQL Basics
Explore the differences between JSON and JSONB in PostgreSQL, especially with respect to their storage mechanisms and performance characteristics.