Creating dotnet solution, project and test project with cli

This is a good source. https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest 

mkidr MyConsoleProjectWithUnitTest
cd MyConsoleProjectWithUnitTest/
dotnet new sln
mkdir HelloWorldConsole
cd HelloWorldConsole/
dotnet new console 
(or dotnet new classlib for creating Library instead of console project)
dotnet run
cd ..
mkdir HelloWorldConsole.Tests
cd HelloWorldConsole.Tests/
dotnet new mstest 
dotnet add reference ../HelloWorldConsole/HelloWorldConsole.csproj 
cd ..
dotnet sln add HelloWorldConsole/HelloWorldConsole.csproj 
dotnet sln add HelloWorldConsole.Tests/HelloWorldConsole.Tests.csproj
code . 
# Make modifications to your tests, program. 
Cd HelloWorldConsole.Tests
dotnet test 

Monster in forest (Recursion)

Long long ago there was a thick forest,

In that forest several animals are living in balance. There are rabbits, tigers, lions, elephants, owls, eagles, snakes, foxes and what not.

One day from a far away village a cow walked into forest. The cow is grazing green pastures and didn’t realize its surroundings until it is already too late.

A red fox saw the cow entering into forest, it never saw a cow in its life. It doesn’t know what kind of animal it is. Naturally unknown things frighten foxes and this fox is much more frightened. It started running without looking back.

All of a sudden, it bumped into a tiger on the way! Tiger got annoyed – it just now finished its meal and going home.

Fox expressed its deepest regrets and also informed him of a strange monster newly entering the forest.

Tiger got worried, it met its friend lion and discussed the same. Which was overheard by a owl sitting nearby. Owl discussed about this big scary monster of gigantic size with glowing eyes, mouth as big as a mountain – who can gulp even elephants in one gobble.

Eagle dutifully informed about this elephant eating monster newly entering into forest and asked elephants to be on watch.

Elephants talked about it in detail and cancelled their lake visit for that day. This was heard by rabbit, who was simply minding his own business and hiding away from those big elephant legs.

The cow entered into a bushy area and greeted by rabbit. Rabbit stared into cows eyes, cow stared into rabbits eyes and smiled. In a hushy voice rabbit told cow about big gigantic eye glowing mountain size mouthed elephant eating monster. Asked cow to be very careful.

Cow now literally scared, already forest is new to it – without looking back ran back to village.

Back in the village cow told everybody about its small adventure and how it escaped the big scary eye glowing gigantic mountain size mouthed elephant eating monster.

Even today the people in the village were scared to enter into forest, they know there is a monster waiting for them in forest.

Even today the folks in forest doesn’t walk alone, they walk in groups. They know a monster is in forest.

c# using custom attributes to validate prerequisites for methods, controller APIs

If you have bunch of prerequisites to be validated for more than one method, we could make code more cute by using an attribute.

For normal methods, this new custom attribute’s constructor could throw exception in case of failure.

But throwing exception in Controller API is bad idea. We want to return more gracefully.

Instead of extending Attribute, extend AuthorizeAttribute and override IsAuthorized() [ or AuthorizeCore() ] method to return true or false. This is more graceful way of doing prerequisite check.

I know this AuthroizeAttribute is to check authorization, but we could mis-use it to validate any prerequisites until a better way is available.

/*****************************************************************************************/

using System;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
internal class MustBeAuthorizedAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{

if (preRequsitesFail)

{
return false;

}

return true;
}
}
}

/*****************************************************************************************/

[MustBeAuthorized]
public ActionResult Index()
{
return View();
}

/*****************************************************************************************/

Thanks to @philip instead of AuthroizeAttribute  ActionFilterAttribute is better. We could return any return value (e.g.. MethodNotAllowed, InternalServerError); see https://stackoverflow.com/questions/16822365/web-api-how-to-stop-the-web-pipeline-directly-from-an-onactionexecuting-filter 

notes, unit testing c# mock, stub, shim!

What to unit test?

Some times it feels why the heck are we adding this unit test? Some times did we really added at least minimum required unit tests or not?

I spent good amount of time researching this topic.

My thumb rule is :

Assume you are adding a document with samples directly taken from Unit tests (except Mocking part though) ; We want our Unit tests to test what customer typically do.

Unit Test is a shield:

Unit test works like a shield. It protects from the minute it is born. This unit test shield will protect the code from your future self. This unit test shield will also protect from others working on this piece of code. Mistakes which will break some existing user can be avoided with this unit testing strategy.

Mock Vs Fake(Stub/Shim)

Use whatever works! External DLLs are better faked. But there are some beasts which will have give tough fight to be faked. In that case do not directly call this external DLL, rather call via a thin layer, a layer with zero business logic but with an interface+class design. Then mock this layer instead of trying to fake your external DLL. Unit tests are saved!

Idea : Rating Display Card for retail shelves

One big difference between online Vs offline retail shopping experience is its rating experience.

Why not retail shelves include a rating card for for all its items on shelf? Customers can view current rating and enter their rating.

It is challenging, but not impossible.

Some of the challenges

1. How to avoid duplicate rating ?

2. How to authenticate users?

(Adding Finger print based rating will solve both above problems. Again which finger? How sensitive is this finger print data? What are security/privacy implications? How to provide accessibility? )

But all these are solvable and fun to work on.

arate

——

Background : I purchased a scrub in QFC (supposed to be better than the one we buy in costco), it cleans OK like in between steel scrub vs sponge scrub but thats where the goodness stops, it spoils everything it touches! For some reason it puts dirty marks on the sink and floor. If the same item is purchased in any online store, I might have read reviews/ratings and may not have purchased the same.

Idea : Health Insurance for 65+

Apparently one of the biggest concern for retiring is rising health costs.

What if there is a company which collects nominal insurance premium for < 40 years people until they become 60 and starts giving health insurance with zero premium from 65+ ?

Company had more than 25 years to make enough profits on the pre collected premiums.

Company can put restriction of maximum cap on insurance amount per year (Like they do in India) That way it can minimize risk and calculate its costs with confidence.

USPS use of technology is crazy! (on a good side)

USPS – now you can simply check incoming mails including the photo of the letter from your computer or mobile! Cool. You can visit your mail box only if the letter is important. Easy to ignore those spam covers Smile 

I am pretty sure, all this is automated!

Imagine millions (Billions?) of letters scanned, address is (OCR) recognized, categorized and visible to owner.

Whoever first got this idea Kudos!

This is now completely different

This is now completely different,

a magical transformation.

An urban setting into rural-

A rural setting into urban.

Like black into white,

like white into black.

Shredding all gray on the way,

This is magical transformation.

Readying journey onto distant worlds,

igniting boosters with pure will power,

taking whole families along with it,

including their hopes and passions.

This is just begging of

exciting journey towards more magic.

Make no mistake,

this is not what you know,

this is nobody named yet,

only those part of it,

can experience this wonder

until ballads are sung,

until books are written,

until case studies are made

nobody knows the magic.