Running Tests and Building React applications with Gradle Build Tool

In this short post, I will show you how you can integrate React applications created using create-react-app with Gradle build tool. We will cover how to build and run the tests as part of the Gradle build.

Continue reading “Running Tests and Building React applications with Gradle Build Tool”

Issue #6: 10 Reads, A Handcrafted Weekly Newsletter for Humans

Hey y’all,
Here are 10 reads I thought were worth sharing this week. The total time to read this newsletter is 130 minutes.
Half of everything you hear in a classroom is crap. Education is figuring out which half is which. — Larrabee’s Law
  1. The 5 Lies We Love to Tell : 10 mins read. The author makes the point that we all lie to ourselves. We should stop fooling ourselves that we don’t lie. The biggest problem with lies is that they consume a lot of your mental power in the background. You have to expend your mental energy to keep reminding yourself what lie you made to your inner self so that you don’t deviate from it.
  2. Please Stop Using Adblock (But Not Why You Think) : 10 mins read.  The key point in this post is that Adblock is making a lot of money by making advertisers like Google to whitelist their ads. I was shocked to read the dark side of AdBlock. The author recommends that people use free and open source uBlock Origin.
  3. Tech’s Two Philosophies : 15 mins read. The author makes the point that there are two main philosophies in the tech industry. The first philosophy shared by Google and Facebook is that computers should do work for humans. The second philosophy shared by Microsoft and Apple is that computers empower humans and help them do their work efficiently.
  4. It’s about time to design in the real world. Introducing Hadron! : 10 mins read. Hadron is a tool aimed to make designing through code visual, fast and easy by embracing the web platform. Even though you will use code, the great thing is that not only very little writing is needed to get started, but also your designs can be progressively enhanced. Meaning that you can start designing with only simple HTML and CSS, and later make your design do more by adding behaviour through other Web Components or even writing JS yourself.
  5. The Economics of Writing a Technical Book: 15 mins read. This is a good post that will help you understand economics of writing a technical book. In my opinion, author made good money from writing his first book. Part of it has to do with the fact that he wrote for O’Reilly Media. Writing a book is tiring and cumbersome so kudos to the author on publishing his first book.
  6. Three-day no-meeting schedule for engineers: 5 mins read. It is great to see organisations understanding the need for focussed time. I strongly believe what Paul Graham wrote in his essay on Manager vs Maker schedule. Software development is a creative endeavour that requires an undistracted, peaceful environment for good work. I hope my organization also does the same one day.
  7. High availability and scalable reads in PostgreSQL : 20 mins read. A detailed primer on streaming replication, complete with performance measurements.
  8. How Postgresql analysis helped to gain 290 times performance boost for a particular request : 10 mins read. This is an interesting read as the guy tried many difficult solutions before figuring out a simple change to improve performance of his query by 290 times. Simple solutions are difficult to find. This post shows  how query and data model design minor mistakes can lead to performance bottlenecks and how extremely useful explain analyze command can be.
  9. Experiences with running PostgreSQL on Kubernetes : 20 mins read. Kubernetes is not aware of the deployment details of Postgres. A naive deployment could lead to complete data loss. Here’s a typical scenario when that happens. You set up streaming replication and let’s say the first master is up. All the writes go there and they asynchronously replicate to the standby. Then suddenly the current master goes down but the asynchronous replication has a huge lag caused by something like a network partition. If the naive failover leader election algorithm kicks in or the administrator who doesn’t know the state manually triggers failover, the secondary becomes the master. That becomes the source of truth. All of the data during that period is lost because all of the writes that were not replicated disappear. Whenever the admin recovers the first master it’s no longer the master any more and it has to completely sync the state from the second node which is now the master.

React License

Yesterday, I wrote a private note on my organization Slack channel educating people on React license. We use React in few of our projects.

Everyone please read this as it is important to understand what you get into when you decide to use React or any of the Facebook’s open source project. All open source projects uses some form of license like Apache, MIT, BSD, etc.

Facebook uses BSD license along with the patent clause. BSD license is a very open license, that allow you to do anything with React. The culprit here is patent clause. The use of patent clause means following:

If you file a patent claim against Facebook or React, then your React patent clause will be revoked automatically. Facebook will in return counter claim that you violated Facebook’s patent clause so you are doomed now.

On the surface this doesn’t mean much to us as most of us are not in the capacity to sue Facebook.

But devil is in the details, Patent clause give Facebook the power to held any organization hostage that uses Facebook open source projects. To get the point through. Let’s take an hypothetical example that Facebook decided to offer a tool that infringes your company’s IP. Facebook can force your company to allow them to use your patent for free. Otherwise, your license will be revoked and you might have to rewrite the application as it uses React. As we all know rewrites are very costly so an organization might be forced to accept Facebook request.

Apache foundation and WordPress has decided not to use React in future. They are planning to move to some other open source project.

Couple of hours later, Facebook made a press release stating Facebook has decided to relicense React and few other projects. This is great news for the community but this will be applicable from React version 16. React 16 is rewrite of React from scratch. Also, majority of other Facebook open source project have the patent clause. It would be interesting to see if Facebook relicense other projects as well or not.

The decision to relicense React came after backlash from the community. I think the biggest influencer in this decision is WordPress deciding not to use React in their project.

Matt Mullenweg from WordPress wrote in his blog,

the Gutenberg team is going to take a step back and rewrite Gutenberg using a different library. It will likely delay Gutenberg at least a few weeks, and may push the release into next year.

Thank you WordPress. You forced Facebook to make this change.