tag:blogger.com,1999:blog-41171254169473588262024-03-05T08:12:31.905-08:00RJV 's BlogRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.comBlogger194125tag:blogger.com,1999:blog-4117125416947358826.post-34247321125315600702020-03-13T17:05:00.001-07:002020-03-13T17:06:46.131-07:00Scrum togetherRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-29838834790641703172019-10-24T08:01:00.000-07:002019-10-24T08:04:54.965-07:00Automating BDD - CI/CD, BizDevOps
Simplifying the complexity in the two very important workings of any software development venture is the goal of DevOps. Demystifying the anomalies between this complexity and the business is the need for BizDevOps.
I had tried implementing something similar in a complex environment, when the transformation of the organization was underway and I was leading the implementation of the changes, RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-35022347924721126532019-05-18T18:10:00.003-07:002019-05-18T20:05:48.401-07:00Automating BDD ...
...with Jenkins, typescript, jest, Jest-Cucumber on node.js
Assumption: Jenkins and NodeJs installed in your local machine.
Continuing with a previous post on BDD, this post is on using your GitHub repository as the SCM provider for Jenkins to build the scenario tests written using the Gherkin syntax of given, when, then and executing the tests, written in Typescript, using jest-cucumber on RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-67682768886208208752019-05-15T18:56:00.001-07:002019-05-18T11:29:04.615-07:00CI/CD - Travis, Jenkins, GitHub, Cloud, DevOps
DevOps is the latest sensation happening in the software development realm not just because of the fascinating array of tools that need to be used to implement a SCM strategy but in the immense challenge that it presents to teams that are on the Agile way of software development.
In frameworks like SAFe, that has a systems view, the importance of DevOps is immense especially when SAFe could RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-30578323292438485812019-05-03T02:44:00.003-07:002019-05-03T03:02:29.877-07:00The Chess Tournament Standings table - jest-cucumber, react
A Chess tournament standings table is a good case study to implement a simple react component that stores data as part of each cell so that
as and when the players move up or down the table, as per their match position, the individual game score against individual players is maintained in each cell.
This means that each cell stores data as
cellData={gameResultRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-61373567383305656782019-04-04T08:59:00.000-07:002019-04-04T12:20:27.477-07:00BDD with Jest + Cucumber & Typescript
Continuing on the previous post on the Tesla Auto Pilot crash mode malfunction, here is a working code example of the feature.
The advantage of BDD is that you can not only keep the business engaged in the development process but also ensure that there are no disputes nor any cost of change as every business requirement gets neatly described as features from which all the possible scenarios RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-87940417774596811212019-03-24T23:32:00.000-07:002019-03-24T23:56:02.108-07:00BDD + UADD (also known as ATDD)
It was a long time ago that I introduced UADD to an Agile audience in a Delhi NCR Agile conference (Here is the link to the presentation) but I still remember a few reactions like, "What is UADD? We have never heard of it". It told me a few facts of the world; technology, techniques and tools are not adopted as per requirement or need but on the basis of terminology that is popular, at least in RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-73086217577620778752018-06-18T20:28:00.000-07:002018-07-16T13:39:10.795-07:00Single page web app to single file web app
If the concept of a single page website was a novelty, then the single file web app is a wonder.
Without using the commonly used terms for describing the single file web app, let me describe what the file does -
1. it listens to a request using the HTTP or the https protocol and can respond with JSON. Is it a REST API?
2. it can contain multiple route handlers for a web request. A web RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-18361567018888156112018-05-03T05:50:00.001-07:002018-05-04T23:44:19.425-07:00A binary converter in typescript and a reference to blockchain
While writing a binary to a decimal converter in Typescript, I came across the idea of using the example of a class of students in which every student is given a binary value and asked to convert it to a decimal value.
Add a little imagination to the idea and you can come up with an interesting parallel of how a BlockChain node functions - imagine a guy not sure if the steps that he has used toRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-15031144166898732292018-04-30T02:35:00.000-07:002018-05-03T02:00:08.183-07:00Some Truffle tips and Blockchain blocks
Platform: node.js/Windows
Technology: BlockChain
Smart Contracts, Smart Money and Smart Wallets - be your own bank!
The BlockChain is now a famous Go-To-Technology that has innumerable possibilities for peer-to-peer interactions for exchanges of various kind like a currency, a representation of an asset, a virtual share, a proof of work, ownership etc.
The path to adopting RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-84124357787860692112018-04-23T15:14:00.000-07:002019-03-10T21:09:30.803-07:00A fake - Why faking a Person is a 'fake test'
Just happened to hit on the right word to express it!
While testing with TypeMock, I came across an interesting scenario where a class is declared within a controller that set off this simple post on why a fake is created and what purpose does it solve.
Let me elaborate using this example I found on the web. A controller with a class called Person inside it.
When writing a test for the RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-18831684913821917832018-04-09T12:04:00.000-07:002018-04-09T13:38:24.802-07:00Explicit interface method - C#
Note: Putting the angular brackets < and > in a blogger post is more difficult than generics !
Continuing with generics, one of my favorite language features, but this time in C#, the more dynamic of generic implementation in all programming languages, the premise, again from an example from Stackoverflow, is that there are two interfaces, IEquipment and
RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-65132540359872354352018-04-05T23:58:00.001-07:002018-04-11T04:43:38.106-07:00Generic type constraints in Typescript
Platform: nodejs
npm install typescript, ts-node, mocha, babel
Generics from the C# days of 2005 onwards is a much-underused technique to implement type safety and security.
Here is a look at the fascinating feature using a mocha test and a couple of es6 classes and interface. Needless to say, this post, too, is inspired by a question from SO.
First, the premise.
An interface -&RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-46185234980241749652018-03-30T16:49:00.003-07:002018-03-30T16:50:58.869-07:00Testing a typescript class with mocha
Platform: nodejs
Install typescript, mocha for nodejs and the associated typings for mocha.
The story starts with coming across some mocha problem caused by the usage of the implements keyword in Typescript in one of the forums for techies.
As ever, I picked it up and decided to write a mocha test to see what was the problem.
The test result revelations were as interesting as the RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-3202109893648795662018-03-26T14:35:00.001-07:002018-03-28T08:23:56.114-07:00The unhandled Promise rejection state and the others
Promises can be pleasant as well as vexing. In Javascript/node.js context, that is.
A promise can have three states: pending, fulfilled (resolved) or rejected.
Using a ES6 class, I managed to simplify the test that would demonstrate the three states and an additional, 'falsey' state!
First, the falsey state, as it can be confusing as an error message.
This message is caused when a PromiseRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-6557790753049797892018-03-19T15:26:00.000-07:002018-03-26T14:37:45.037-07:00Of a mocha test of a ES6 Fibonacci tree, the modulo operator, use case for getters and setters and undefined value of 0
ES6 has introduced some nice OO-like feel to javascript.
I, however, find it difficult to grasp the OO part of it in a language which says "Just use === when you wish to check and compare for both value and type"!
But with the ES6 specifications, the 'class' keyword and property getters and setters, javascript is looking to become more readable, intelligible and maintainable!
So, when I RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-55162805274113763222017-10-27T09:28:00.000-07:002017-11-21T17:21:48.260-08:00Sugar on Pi - headless Raspberry Pi 3 B
SoaS or Sugar on a Stick was a popular interface to boot a Windows or any non-XO machine into the Sugar GUI.
With Raspbian (Stretch), there are different variants that range from Pidora to Fedora but this approach using a Sugar based Linux image created by Sugar labs, thankfully worked although with a few glitches when working with the Journal. Not sure if it is less memory or connecting RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-561260902217464102017-10-13T20:09:00.001-07:002017-10-17T22:16:08.082-07:00Headless boot of RasPi 3 B
First things first, the micro sd card can be removed/inserted without having to disassemble the Raspberry Pi official enclosure box unlike what is maintained in many online posts!
It is so important that I thought it best to mention it ahead of any technical steps because so winding are the many forum documentation on how to start up your Raspberry Pi, without a monitor/screen/RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-73057014216606402382017-06-19T21:43:00.000-07:002017-10-03T13:58:52.765-07:00Docker EE for AWS
Somehow, I struggled through Docker. I will outline my steps so that you don't have to follow the tedious path.
First I tried to install Docker on Windows.
Pitfalls: OS version. If you don't have the Windows 10 Pro edition, you can use the Docker toolbox only.
So, okay. Download the Docker toolbox.
And I checked the VirtualBox option for good measure and it did stand me in good stead RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-14145469663294077202017-06-16T11:48:00.002-07:002018-02-09T09:29:33.480-08:00Bitnami, WordPress and the AWS - a good rack
I just had to blog this - it is about my new blog on WordPress.
I had moved to Azure from AWS in 2013-14 not because I had anything against AWS or for Azure but simply because clients who wanted to use Microsoft ASP.Net and SQL Server made Azure the natural choice.
But it seems that the instances of Windows Server on AWS are more than that in Azure. The AWS has expanded like the RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-88369278816246732072017-05-18T18:31:00.002-07:002017-06-15T15:08:12.982-07:00There is something about Scrum - 3
...that makes me often think if there is no way that you can avoid corruption in the professional world because so bound is everything together that the more you try to resolve dependencies, the more they crop up in another form, in another aspect or place.
Productivity
Velocity, that you often hear trumpeted in Scrum, can be quite misleading.
Velocity, in common terms, means distance RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-46395793367753723802017-05-16T23:43:00.000-07:002017-05-17T00:10:03.163-07:00There is something about Scrum - 2
...that makes me often think if there is no way that you can avoid corruption in the professional world because so bound is everything together that the more you try to resolve dependencies, the more they crop up in another form, in another aspect or place.
But there is a way to ensure that you do not allow for crafty resource developers or managers or any smart alec from messing with your RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-70591341245324657982017-05-15T23:01:00.001-07:002017-05-15T23:04:30.559-07:00There is something about Scrum...
...that makes me often think if there is no way that you can avoid corruption in the professional world because so bound is everything together that the more you try to resolve dependencies, the more they crop up in another form, in another aspect or place.
Ignoring Mr. Lingo-Nathan (a hideous rule-obsessed maniac), if a resource goes absent on the first day of a Sprint to the 7th day after RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-75501727716753084292017-04-27T14:15:00.000-07:002017-04-28T12:33:18.242-07:00BDD + TDD +UADD - Part I
It is rare that different frameworks can be wired together without facing some glitch in the implementation path. Sometimes, the technologies pose problems, some other times, the tools are not available.
For instance, on a previous occasion, I tried the three with the combination of Slim, C#, NUnit and it developed hiccups because, being a web application, the Javascript/jQuery code could not RJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0tag:blogger.com,1999:blog-4117125416947358826.post-28381396400030076142017-04-17T04:04:00.002-07:002017-04-17T04:04:47.975-07:00SinonJS - the spy
The example is more of a revealer to an error that can be quite vexing in sinon, node js parlance.It is called "attempted to wrap undefined property as function" as if it were an attempt to murder.The case in question is that of a call made to sinon's spy method
var theSpy = sinon.spy('get');
If used as such, this line will throw the error. The trick is to use the container that contains theRJVhttp://www.blogger.com/profile/15113775333759626102noreply@blogger.com0