All the resources you ever need as a Java & Spring application developer

All the resources you ever need as a Java & Spring application developer

Nowadays software development is a challenging task as the number of programming languages, frameworks, libraries are increasing rapidly day by day. Luckily, the number of resources to learn on the internet for free also increased a lot. There are a ton of free resources to learn almost everything on the internet. There are lots of official documentation, blog posts, Udemy courses, YouTube videos etc. As a backend developer who primarily work on JVM based languages/frameworks like Java, Kotlin, SpringBoot etc, following are a collection of resources I usually follow to learn new things.

Continue reading »
GoLang from a Java developer perspective

GoLang from a Java developer perspective

Gone are the days we can call ourselves as Java developer, .NET developer, Python developer etc. Nowadays we might need to work with multiple languages to some extent such as Python for scripting, Go for CLI utilities etc. Out of personal interest I started learning Go Language 3 months ago and I am using Go for our current application. In this article I would like to share my first impression on Go language.

Continue reading »
Remote debugging SpringBoot application

Remote debugging SpringBoot application

We all know how to run SpringBoot application in debug mode from our favorite IDEs(Eclipse/IntellijIDEA etc) and debug the code. Recently I had to debug a SpringBoot application which is running on a remote server. There is already lot of information on the Internet on how to remote debug java applications, but some approaches didn’t work for me. So, here I would like to share my findings. If application is running on localhost Suppose you are running your application on localhost only and remote debug from your IDE.

Continue reading »
What I Learned in Week-14, 2020

What I Learned in Week-14, 2020

It’s been tough time for everyone due to the Corona virus situation. Staying at home for weeks and weeks is not easy, but it is very necessary thing to do so that we don’t spread the virus. However, if I look on the bright side I used to spend minimum 3 hours for office commute everyday. Now I am using that time for various other activities including learning some new things.

Continue reading »
Imposing Code Structure Guidelines using ArchUnit

Imposing Code Structure Guidelines using ArchUnit

While building the software, we all agree, as a team, to follow a set of guidelines which are typically considered as best practices. But during the development, developers might violate those guidelines unknowingly or ignorance. Typically, we rely upon code reviews or code quality checking tools like SonarQube, PMD, etc. to check for such violations. But some of the guidelines could be opinionated decisions which might not be able to automate using SonarQube, PMD etc.

Continue reading »
What I Learned in Week-11, 2020

What I Learned in Week-11, 2020

I come across many blog posts from various sources like Twitter, StackOverflow etc and some of them are very helpful. Also, in day to day work I learn few new things, explore some new tools. Usually I keep track of this information using Browser Bookmarks and Pocket. I thought may be this information could be useful for others too. So, I am going to share it weekly on my blog.

Continue reading »

Selecting The Technology Stack for JCart

Selecting the right technology stack is very crucial and plays an important role in project success. Many of the architects (unknowingly??!!) try to make complex designs by trying to use all kinds of latest and greatest stuff. On the other hand some architects try to be in their comfort zone by limiting their technology stack to the technologies with which they are comfortable. Both approaches are dangerous. One should understand the business needs and pick the technologies that are necessary for project.

Continue reading »

Developing a simple e-commerce application from scratch to production using SpringBoot

We can find plenty of information on any technical topic, be it Java, .NET, Python or any frameworks like Spring, Hibernate, CDI, JSF etc. You can find hundreds of well written blogs on many of these topics. For example, you can find lot of tutorials on how to use SpringBoot or how to use various mappings in JPA/Hibernate or how to do form validations in JSF etc. Also, there are plenty of books published by well established publishers on most of the technologies.

Continue reading »

Clean Code: Don’t mix different levels of abstractions

We spend more time on reading code than writing. So if the code is more readable then obviously it will increase the developer productivity. Many people associate readability of code with coding conventions like following standard naming conventions, closing file, DB resources etc etc. When it comes to code reviews most of the people focus on these trivial things only, like checking for naming convention violations, properly releasing resources in finally block or not.

Continue reading »

MyBatis Tutorial: Part1 – CRUD Operations

MyBatis is an SQL Mapper tool which greatly simplifies the database programing when compared to using JDBC directly. <strong>MyBatis Tutorial: Part1 – CRUD Operations</strong> <strong>MyBatis Tutorial: Part-2: CRUD operations Using Annotations</strong> <strong>MyBatis Tutorial: Part 3 – Mapping Relationships</strong> <strong>MyBatis Tutorial : Part4 – Spring Integration</strong> Step1: Create a Maven project and configure MyBatis dependencies. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sivalabs</groupId> <artifactId>mybatis-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mybatis-demo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.

Continue reading »