Should we Replace unary calls with a bi-directional stream to improve performance?

This is a hot debate that came up during one of our architectural discussions recently.

Google’s gRPC team advises against it, but nevertheless, few can argue that theoretically, streams should have lower overhead. But that does not seem to be true.

Streams ensure that messages are delivered in the order that they were sent, this would mean that if there are concurrent messages, there will be some kind of bottleneck.

The gRPC does some smart network optimizations under the hood though. …

A quick 8 steps for JS developer to get familiar with Powershell scripting syntax.

  • Open Source
  • MacOS, Linux and Windows automation
  • Object-oriented
  • Rich Dotnet core APIs
  • As easy as JavaSript
  • Create a file hello-world.ps1
  • We learnt: comments, string, console output and running a file.

Save following as hello.ps1

Now run this as

Thinks of these as predefined function (though they are not). There are numerous such commandments, let look at some that show us processes running in the system. …

Find example of using ScatterJS with React/Redux and Redux-Saga here:

To make a transaction on a blockchain, we need to have the user’s private key to sign the transaction with. One of the downsides of web being so open is that we can’t trust a third party with such a sensitive piece of information. But then how do we authorize apps to transact on our behalf without compromising our private keys.

This where Scatter comes into the picture. User’s define there private, public key and their personal information like first name, last name, address in Scatter app running locally…

Design the missing link of Product Development

I often compare Manufacturing industry with Software to explain ideas like testing strategy, Devops and CI/CD. And I feel there is one important concept that the wider software industry is yet to learn from Manufacturing. And it is that of Designing and prototyping.

A manufacturing startup would have not doubt about why it needs to create a prototype for its product that will be mass produced.

On the other hand, how many product startups actually realize why they need to prototype their idea to know what they are going to end up with.

Why manufacturing industry prototypes and does that…

Desktop apps are always fun to build and use. They are the most powerful way of communicating with computers. This post will give you a basic understanding of using Electron for creating cross platform desktop apps.

In the old days, I used Netbeans to quickly create desktop apps with Swing. The jar file could run on Windows, Mac or Linux as long as they had a JVM installed. There were apps that could export these jar files into a Mac app or window installer. You wish you never had to read or write that Java Swing code.

Now, my goto…

This post is about using pug templates for writing presentational components with ReactJS .

ReactJS and Redux are really easy to learn. Though learning how to write some components and share state is pretty straightforward, how to organize codebase and responsibility is something that takes time to understand.

I find my codebase with React+Redux was much more harder to read, more verbose, lacking clear separation of concerns.

With angular(1.x) I could achieve lean, neat, minimal components using factories (to decorate scopes), pug (templates), lightweight controllers (that simply binds services and models to scope) and directives (only when DOM elements need…

When I first began learning about Redux, I instantaneously felt in love with it. I could define my front-end state mutation as pure functions that sounds great.

As I began working on a real world React/Redux app with 5 other developers, I found the complexity of code to be becoming kind of intimidating.

The only way to understand a functionality was to follow the actions using redux dev debugger and scan for handlers of the actions in codebase till you figured out how it all works together.

One of the reason was the way we were using redux-thunk. Lots of…

Well recently working with Zinc, I had the task to make the rails pages load with angular without reloading pages.

This blog is about helping others who might come across the same problem — migrating Rails app to frontend frameworks.

There are two important aspects that helped me come up with a solution

  • application.html.erb of angular was acting as a kind of facade for all other user facing pages in app
  • ui.router allows retrieving pages from server, which can be rendered by Rails as well.

The approach to making it a pure single page app was :

  • all URLS should…

This is the fifth chapter in the 7 part series : Practical Guide to Test Automation.

I am personally against the approach of creating test data using custom API’s or factories like factory girls, makeiteasy etc.

Because these are end to end tests, so they must be completely ignorant about the models being used by the system.

For this reason I recommend that the best way to create test data is through UI.

For the rails app at Zinc, I created rake tasks that can take the dump of data from database and restore it as required

The workflow for…

This is the seventh chapter in the 7 part series : Practical Guide to Test Automation.

Watir supports all the leading browsers. The project is configured to allow selecting browser from command line (once driver for browser is added). Also the project supports running chrome in emulator mode to test app on mobile, tablet browser screens.

The app also allows implementing the pages separately for mobile, desktop and tablets. Read runtime commands for more details.

Runtime Options

rake [env=<env-name> | tags=<@tag1,@tag2> | device=<device-name> | pages=<path/to/pages> | data_suite=<name> | url=<url> | report_file=<path> | client=<device&browser> | users=<profiles-name>]


Nishant Singh

Designer | Craftsman | Consultant

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