Image for post
Image for post
Photo by Pavel Herceg on Unsplash

What is Shallow Equality?

Shallow equality is verified by iterating on the keys of the objects being compared and returning true when the values of a key in each object are strictly equal for all the keys.

Why is Shallow Equality important?

React relies on shallow equality between current and next state/props to decide on whether to re-render or not. Shallow Compare is the negation of Shallow Equality. Render if shallowCompare returns true.

Code fragment from React legacy add-on

Shallow equality becomes dicey when the nestedness increases. I have created the mental model (cheat sheet) to remember the intricacies.


Image for post
Image for post
Photo by Ning Shi on Unsplash

A lot happens during JVM Garbage Collection. GC logs would be the closest one who would have witnessed 😄 and record the events as it happens. By looking at these logs we would be able to understand how well our application behaves for a given scenario, configuration, and/or load.

Typical questions that would get answered are

  • Are there too many full GCs?
  • Are there GCs with long pauses?
  • Are there GCs happening too frequently?

Let's Learn to Talk to GC Logs in Java 9 by Poonam Bajaj Parhar

We will explore the GC logs using a simple Java program that covers three different…


Application development lifecycle period got shrink to few weeks or couple of months. Visible outcomes are expected in every iterations.

For a simple CRUD based applications, low code or no code platforms seems to be attractive. I will provide the basics of Metadata-Driven Development, which could be a mid-path between hand-crafted “effective” web application development and low-code development.

Image for post
Image for post
Photo by Tina Witherspoon on Unsplash

Let’s say we need to create a basic form which allows a business user to capture daily exchange rates (CRUD form) to be utilized by their business process.


“Event sourcing refers to a collection of patterns based on the idea of persisting the full history of a domain as sequence of events rather than persisting just the current state” — by Udi Dahan

Image for post
Image for post
Photo by Dennis Anderson on Unsplash

Spoiler Alert:

Event sourcing may not see the light of day in regular Enterprise Application development. But they have their relevance in Source Code Control Systems (like Git, SVN), Database internals (like replications, backup and recovery) and in a small part of a complex Enterprise Application.

“Event sourcing is a good fit only if you are dealing with complicated and ever changing domain” — by Udi…


Image for post
Image for post
Photo by Patrick Lindenberg on Unsplash

Performing I/O usually takes orders of magnitude longer than performing in-memory processing tasks on the data. Many coders concentrate on what their objects are doing to the data and pay little attention to the environmental issues involved in acquiring and storing that data.

I/O is often the limiting factor in application performance, not processing speed
- By Ron Hitchens in book “Java NIO”

Java NIO (Non-blocking I/O) is a collection of APIs for scalable I/O. Key features includes

NIO Buffers is the basic building block for the overall implementation of the non-blocking I/O. In this blog, I will cover the behavior of Buffers. In subsequent blogs, I will cover how File and Network I/O are effectively handled. …


Image for post
Image for post
Photo by The Nigmatic on Unsplash

React published a tutorial which creates “Tic-Tac-Toe” game for the purpose of learning by doing. I liked the way Dan Abramov explained basics of JavaScript in “Just JavaScript” series and React in “Tic-Tac-Toe” tutorial.

I have created the exact same “Tic-Tac-Toe” using Vue 3. Vue 3 code looks straight-forward than React, but I will leave the judgement to the readers 😄

The final React project created by Dan Abramov is available here

The final Vue 3 project created by me is available here

💡Codepen has lot many restrictions. So both React and Vue 3 code shared has squeeze all the components into a single JS…


Image for post
Image for post
Photo by Arteum.ro on Unsplash

Learning about JVM Garbage Collection and the mechanics behind each of the Collector Algorithms is as important as learning Java language features. High-level details of the algorithms give a perspective about the lifecycle of objects, the probable failures (like an out-of-memory exception, memory leaks etc.,) and how the failures can be averted.

Garbage Collection

Garbage Collection (GC) is a form of automatic memory management. The basic operations of any Garbage Collector are

  • Object memory allocation
  • Find objects that are in use starting from GC roots — Mark
  • Free objects that are not in use — Sweep
  • Compact the memory to prevent memory fragmentation —…


Reactivity is a programming paradigm that allows us to adjust to changes in a declarative manner.

Image for post
Image for post
Photo by Kyle Hinkson on Unsplash

JavaScript variables are not reactive by default. JS Proxy provide the mechanism to achieve the reactiveness. Vue 3 adds the necessary abstraction on JS Proxy and makes it native and simple. Vue 3 Reactivity package is available as a standalone package.

reactive and ref converts the regular values to reactive variables.

computed and effect are high-order functions which are executed when the values in the reactive variables change.

  • ref — Takes an inner value and returns a reactive and mutable ref object. The ref object has a single property .value


Image for post
Image for post
Photo by Patrick Fore on Unsplash

Object-Oriented Design (OOD)

  • Every application is a collection of code; the code’s arrangement is the design. Design is thus an art, the art of arranging code
  • Object-oriented applications are made up of objects and the messages that pass between them
  • Class provides the blueprint for the construction of similar objects. A class defines methods (definitions of behavior) and attributes (definition of variables)

🙇 Practical Object-Oriented Design in Ruby by Sandi Metz

The purpose of the design is to allow you to design later and its primary goal is to reduce the cost of change

Practical design does not anticipate what will happen to your…


Image for post
Image for post
Photo by freestocks on Unsplash

Vue implements a content distribution API inspired by the Web Components spec draft, using the <slot> element to serve as distribution outlets for content.

Slots

  • Slot Content — Content written within parent template. This content will get rendered in the allotted placeholder of the child template
  • Compilation Scope — Everything in the parent template is compiled in parent scope; everything in the child template is compiled in the child scope.
  • Fallback Content — Content provided by the child template. If parent template does not provide explicit content, then whatever is written within child template will be rendered.
  • Named Slots — There could be multiple slots within client template. To uniquely identify them, we need to provide value to the name attribute. …

About

Prasad Jayakumar

Learner, Mentor, Developer and an Architect

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store