Skip to main content


Showing posts from August, 2020

Deals You Can't Miss

1 Year Subscription

Multi-tenant Architectures

  Multi-tenancy Application Deployment Architecture could be modeled in 4 broad ways: Separate Apps & Separate Databases Shared Apps & Shared Databases Separate Apps & Shared Databases Shared Apps & Separate Databases There is no right or wrong here. It's about choice and consequence that you should consider taking into your business context and constraints. In this post I intend to jot down a some key points to keep in mind for each of these multi-tenant architecture. These are more of quick notes for my quick reference, a cheat-sheet of sorts when I have to make choices. And I guess this can come handy to you too in your wise decision making. Separate Apps & Separate Databases Easiest to implement from development and deployment stand-point. Just automate the deployment infrastructure for every tenant for quick set-up. Most expensive of all the models from infrastructure cost stand-point. Relatively longer deployment t

Norton isn't what it claims to be -- an Anti-virus

I recently purchased an Acer Predator series laptop that came bundled with Norton anti-virus trial pack for Windows 10. I got this laptop for my development work and so I'm a little too crazy about engineering discipline. What does that mean? The first thing that I did was make a recovery drive from that fresh image of the laptop. This came to my rescue later as you'd find through further in this post. So after a month of trial period of Norton, I wanted to uninstall it and install my choice of anti-virus (that is K7 anti-virus , for the curious). When I uninstalled Norton, it went thought without an error. But when I tried to install K7 anti-virus, it complained that Norton Security Ultra is installed in the system and that it needs to be removed before installing K7. But Norton is nowhere to be seen in my system's Control Panel > add/remove programs . As the world would have it, this seem to be some defacto unethical practice in play embraced by greedy anti-virus comp

Connect to MongoDB on Windows host from WSL2

 It took me a day to lose my hopes on this issue to come to a conclusion that this is not possible. But then, wanted to give that last few tries, again... And lo behold, it worked! So what should you be doing to get this working on your windows-wsl2 environment? This is what I did as workable set-up: Uninstalled MongoDB, one that was installed by windows installer. This one has its own quirks and issues with permission, leading to unexpected error of it being unable to find data directory. In my case, for some reason the installed version didn't honor the config file and was throwing up all of a sudden. Downloaded a zipped version and unzipped to to my target directory in windows. This one wouldn't come with a mongod.cnf file. So make sure, you create the default config file mongod.cnf , alongside mongod.exe  and let its contents look like the one below (where you replace storage.dbPath and systemLog.path property values): ---- Get your host wi

GraphQL FAQs

Is GraphQL a DB? No! For graphDB checkout options like ArangoDB , OrientDB , Neoj , DGraph etc. Is GraphQL an interface to Graph DB? No! Think of it as a parallel to REST or SOAP way of exposing your APIs. Is GraphQL a replacement for REST? It may or may not depending on your business context. Can GraphQL co-exist with REST? Yes!, it sure can. Does GraphQL have good tooling support? There is good tooling support to get you onboarded and get going. There needs to be more though, say for example, support in defining your GraphQL schema. Has GraphQL got supported libraries in my language platform? Checkout for list of libraries by language, for client-side support and server-side runtime support. And there are also much more goodies in there to explore and experiment with. Is there a big picture view of GraphQL landscape that I can see? Do checkout . Is GraphQL better than REST? That depends on the metrics you are

Is your Java app, container ready?

 If you miss this, you will end up in exclaiming, "But it works in my machine!!..", when your app crashes in production environment that is containerized. This is one of those situations, that remind us that tech is hard and demands preparation. Containers are for modern apps that run on modern platform. If you are having apps that are dependent on JRE prior to version 8.x, you are dealing with legacy apps that aren't container ready.   Simplistically speaking (which is enough for this context), a container is in reality a single process which provides isolation by leverage cgroups and namespaces of Linux operating systems. Unfortunately though, these doesn't isolate CPU and Memory of the host. If configured for a container, the container-orchestrator (say, Docker Swarm) keeps a tab at the usage in real-time against this configuration and when a container constantly breaches the configured threshold, it marks the container as unhealthy and kills the process it consi

Book Review -- 7 Databases in 7 Weeks

  You won't make a whirlwind tour. You won't be lost in the jungle of details either. With this book as a medium, you fly in the jungle of databases, getting a good taste of the landscape, to help you have good appreciation of which one is good for what purpose. I felt productive travelling with the author and believe you too would feel so. Go make your journey with the author -- reading the book! You can follow me on GoodReads for reviews and recommendations on others books that I have read.

Versioning Approaches for RESTful APIs

When you develop your application for consumption by other applications, you do so by exposing your application's endpoints. This endpoint could emit XML or JSON data depending on whether SOAP or REST protocol is supported. As reality would have it, the domain keeps evolving keeping up with the demands of the consumer applications and the challenge is not all consumer applications want the same kind/structure of data or that they aren't keeping up with the pace of your evolution. So that brings the need for versioning your API endpoints, to meet the backward compatibility of at least some of your consumer applications. This leaves us with the question, as to how do we do versioning of our endpoints? And this post is about versioning the REST endpoints.  There are 4 below ways in which you can version your REST APIs: Option 1: URI Versioning{api_version}/myresource

Unable to checkout Git repo on Windows?

This post is about looking into the order in which you debug the reason for your inability to checkout Git repo on Windows operating system. It could be because of the following reasons and you should debug in that order: Existence and validity of your SSH Keys Presence of files in your git repository whose names are reserved words in Windows OS The next section of the post delves into these two pointers in detail. Existence and validity of your SSH Keys You should have SSH keys (typically id_rsa and ) in your operating system path $HOME/.ssh/ . If not generate it with ssh-keygen. You should have the contents of the public key ( added to your list of SSH Keys in your Git remote repository. In the case of Github, it will be in your personal settings page .  Windows OS incompatible file names in your git repository This is a little crazy Windows OS weirdo. After making sure that I indeed have the SSH Keys setup right both in my local windows-os and in the remote Gi

Know Your Windows 10

I was looking into all these details to decide on my options in purchasing the kind of laptop that I want. I ended up purchasing a customized Lenovo laptop, only for it to be cancelled from their end after 6-7 weeks failing their promised delivery in 4 weeks time. Lenovo laptop delivery timelines seem to historically bad and their support is just terrible. I suffered great loss because of their slack. Subsequently, I grew really impatient and wanted to get one ASAP with Windows 10 Pro operating system pre-installed. This narrowed my choice to very few models that didn't impress me much for their hardware specs and price. I opted to prioritize on hardware specs and experiment on the software side of things. And that helped. For the curious I got myself an Acer Predator Triton 300 laptop and have post my experience with it thus far in another post. This blog post has those little things I wish I knew about Windows 10, when it was most important for me but discovered/learned later. I

My Reviews Of Acer Predator Triton 300 Laptop

My Context I am no gamer. I got this for my personal projects using Kubernates (requiring better CPU) and resume my journey of learning Deep Learning (requiring better GPU). Note : Your mileage may vary depending on your context. Pros Better looks with minimalist design that you can take it to office/school without it distracting others during your work. Better pricing than its competitors for its specs. It's closest competitor IMHO would be Dell G-series laptop. Build quality is sturdy with metal body. The keys on the keyboard are top-notch in that I like the touch-and-feel. The touch-pad is too good that you would start to hate other laptops for this purpose.  This is a gaming laptop with brilliant honeycomb venting for quicker heat dissipation. And it works!  Acer's Aeroblade technology promises better heat dissipation and so far it has been cool enough.  It supports Dual SSD plus One HDD. I have my Windows OS in SSD and data on HDD. My OS loads in about 5 seconds today with