End to End DevOps with ASP.Net Core 2.1 Preview’s React Template and Azure

This is my summary of the steps I took while experimenting with ASP.Net Core 2.1 Preview’s new React template to get a DevOps environment up and running for a new project.

To summarize the stack being used is as follows:

Why so bleeding edge?

Simply, the new React template included in .NET Core 2.1 Preview is a much cleaner implementation than what was available in .Net Core 2.0 in my opinion, as where the previous version had the usual Microsoft pattern of ‘customize at will’, the new template seems to keep the spirit of the React community in how it goes about deploying React as a front end project. This new ASP.Net Core React template utilizes an ASP.Net Core Web API project meant to be used for back-end heavy lifting (e.g. authentication, database etc) and keeps a true create-react-app generated application for the front-end project. I also chose to Visual Studio Team Services instead of my usual preference for Github as it provided a quick way to get both a Git repository up and running and its Build and Release features work nicely with hosting on Microsoft Azure.


Continue reading “End to End DevOps with ASP.Net Core 2.1 Preview’s React Template and Azure”

Getting RegEx once and for all

I finally got fed up of not quite getting Regular Expressions, even though I learnt just enough to use them in past projects. So I started looking for a tutorial that would fit well with my style of learning, and this tutorial by RegExOne worked excellently for me in getting RegEx basics finally memorized.

To the authors of this course:

Thank you so much for making clear what I struggled to get for years! The small, bite sized lessons made it easy enough for me to step away and still come back to restarting without getting lost when I only had a few minutes to spare daily for this learning task.

Hopefully others who find this tutorial through here will think similarly, and donate the meagre $4US donation asked for by its creators in return for the work put in to making this tutorial.

A Spike To Learn Blockchain App programming

The goal

Spend 3 hours working thru any free resources I find online to get my feet wet with zero preparation in programming a blockchain app

Guidance chosen

An article on Building a Blockchain DApp using truffle, React, Next.js and MobX that two minutes of Google led me to and that looked promising to leverage my learnings thru recent paid work in React and Mobx-State-Tree because it mentioned React and Mobx in the title (see Retro for how much of a good guess this was).

Errata and my notes on the article

Think of this like Snape’s notes on the Advanced Potions book, except I don’t think I’m a Half-Blood Prince, just someone who used the article as guidance prior to you who’s reading it and worked thru the kinks and gotchas.

First I used my Macbook to do this, so with Homebrew and NVM i ensure I was on the latest version of node and using the 7.10.0 of npm

brew install nvm

nvm use 7.10.0

npm i -g yarn

Notes on the guide:

  1. The URL. Change the line

    git clone git@github.com:liors/tvdapp.git


    git clone https://github.com/liors/tvdapp.git

    since either there was an error in the command or the Wifi network I was on was blocking ssh connections.

  2. Run

    yarn install

    If it kicks an error like it did for me that

    The engine “node” is incompatible with this module.  

    Expected version “7.10.0”.

    error Found incompatible module

    Then go back to the terminal console and run

    node -v

    and if it isn’t listing 7.10.0 follow again the step above to use nvm to install and use that version as the compilation is still using the newer node version so is creating this error.

  3. Opening the folder in Visual Studio Code and opening “Bookmark.sol” file in VSCode, it offered a few recommendations for a code/syntax highlighter for solidity, the contract-oriented programming language used here, so I went with the most downloaded one.
  4. At this point I took the recommendation of the article here of reading the docs with regards to solidarity to get a better grasp of what’s happening here. I’d backup this recommendation to future readers as well.
  5. The article then goes into running the tests, a requirement of which is having “a local instance of testrpc” but it falls short of saying how to go about doing this which also led to me first having to follow these steps to install go-ethereum for a Mac. Fun times.
  6. In the steps for setting up a local instance of testrpc that I referenced, the command to execute

    geth –datadir=”/tmp/eth/60/01″ -verbosity 6 –ipcdisable –port 30301 –rpcport 8101 console 2>> /tmp/eth/60/01.lo

    required that i first create execute

    mkdir /tmp/eth

    mkdir /tmp/eth/60

    to create the /tmp/eth/ and /tmp/eth/60 folders before it would successfully execute.

  7. Run


    to get the Ethereum TestRPC client up and running and then as per the article execute

    yarn test

    and all tests should now successfully pass.


So that was quite a bit for just part 1 of the article. Haven’t even gotten to the stuff I wanted to leverage my knowledge of (React, Mobx etc). But still if there’s one takeaway it’s that I now have a hotlist of things I need to read more about now to get deeper into Blockchain application programming, specifically:

  1. Solidity – and especially mulling over the Solidity by Example sample to grok this better
  2. Geth – not just setting it up, but understanding how Ethereum nodes operate and peer with each other
  3. Probably also stepping back to try something simpler first, like building the Greeter app from Ethereum.org before going further including configuring my browser to run DApps with MetaMask chrome extensions

Quick SharePoint Tip

The shorthand method to execute

Add-PSSnapIn Microsoft.SharePoint.PowerShell

is to instead use

asnp *share*

This is useful if you’re in a Powershell terminal and want to start using SharePoint Powershell commands, you first need to add the SharePoint Powershell snap-in module to get access to those commands.