Skip to main content

Posts

How and why I designed a meeting (iCalendar) library

Greetings! Have you ever thought about how to send a meeting event programmatically? In one of the projects I worked on, there was a requirement to send the appointment information to the user (in addition to visualizing it in our UIs). This is when I thought to do this as a meeting request. How can we do that? We learned that these calendar applications follow a standard format, that is "icalendar". Now my job is to create these .ics files. We investigated a few existing libraries as well but I was not happy with them as I wanted to send it as a meeting request but it did not work with existing libraries. At the same time, we have a lengthy process when introducing new libraries. Hence, why don't I build my own library 😉? What is iCalendar? The iCalendar is the standard specification for calendaring and scheduling events. It allows users to store and exchange calendaring and scheduling information such as events, to-dos, etc. According to the specification u...

How and why I designed an email library

 Greetings! How do you send emails using Java? You would probably use a free library/framework like Spring or anything available. Or, you might write a simple email-sending class. However, when I needed an emailing functionality for one of the requirements, I decided to do more. Why? In larger projects, we always should think about the bigger picture. Adding a new library should be done with a lot of investigation Module-only features have no value for the product That is why I thought to give this an extra effort and designed an internal email library. General idea This is simple. Any team should be able to use this library without depending on any other external libraries. Also, the email API can have any implementation without impacting consumer modules. Existing libraries Initially, I thought to use Spring email but Spring core doesn't come with it. It looks like Spring should have separate jars for this. But anyway this will not help me now. There are other email libraries but...

Let's solve (N+1) problem in GraphQL

Greetings! This is the fourth article of the GraphQL series and the second part of the Query where I am going to solve (N+1) problem in GraphQL. However, I will add complete codes as well to make it usable on its own. The complete code can be found here . Code with (N+1) problem unresolved is here . (N+1) in brief When we fetch relationships like we did in our movie server where we queried movies, there will be extra N queries to fetch the relationship (director). With the first query to find movies, there are (N+1) queries altogether. Had you run our example by adding a console.log you can see the problem clearly. export function findDirector(id) { console.log(`find director for {id}`); return directors.find(director => director.id === id); } This problem does not depend on the database we used. Whether it is a fake store like we use, MySql, or MongoDB, the problem is the same. Solving N+1 Facebook provides a solution for this using the library data-loa...

Let's build a GraphQL server with Node.js and Express (2)

Greetings! In this third article of the GraphQL series, I would like to discuss the steps needed to create a GraphQL server using Node.js with a somewhat more advanced query than the previous one. The complete code can be found here . What do we build? Movie API where we can query movies and directors' information. Initializing the project npm init -y npm install express graphql express-graphql --save npm install @babel/core @babel/node @babel/preset-env --save-dev npm install nodemon --save-dev Enable ES6 modules in package.json and add a start command for nodemon. { "name": "nodejs-graphql-query", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "start": "nodemon --exec babel-node src/index", "test": "echo \"Error: no test specified\" && exit 1...

Let's build a GraphQL starter server with Node.js and Express

Greetings! This is the second article of the GraphQL series, I would like to discuss the steps needed to create a GraphQL server using Node.js. Have a look at the first article if haven't read it yet. The complete code can be found here .  What we build As the idea is to create a basic GraphQL server, we will expose the "Hello World" query. Initializing the project npm init -y npm install express graphql express-graphql --save npm install @babel/core @babel/node @babel/preset-env --save-dev npm install nodemon --save-dev Enable ES6 modules in package.json and add a start command for nodemon. { "name": "nodejs-graphql-starter", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "start": "nodemon --exec babel-node index", "test": "echo \"Error: no...