Analysing my progress and profitability in cryptocurrency mining

TL;DR I purchased some cryptocurrency mining power in the cloud. I found that SHA256 mining is not that great, but Ethereum mining is more profitable. I plan on investing in more mining power.
If you want to jump in right now here are my affiliate links:  Affiliate code for discount ODVnHM


Outsourcing Cryptocurrency mining

Previously I blogged how to mine Bitcoin on Azure (and why it is a terrible idea). In it I concluded that CPU mining is terrible with the advent of cheap USB ASIC miners and that you are better off purchasing one of them rather than wasting cloud computing credits.

I did more research and discovered rather than purchasing hardware, and running them myself and paying for electricity, maintenance, etc. I could just purchase raw mining power in a specialised mining datacentre.

Where did I purchase from

I eventually decided to go with
I liked that sign up was simple, that you could allocate your mining power/payouts (see below) and most importantly that it had Ethereum miners (look out for future posts on Ethereum!).

What did I purchase

I decided up front to invest a bit over $100 in SHA256 & Ethereum mining and roughly distribute it between the 2:

SHA256       USD $70.81        0.15 TH/s        $0.45 per GH/s      Lifetime contract
Ethereum     USD $57.62        3 MH/s            $17.99 per MH/s    1 year contract

Distributing the mining power

The reason I liked Genesis Mining was how you could allocate your mining and payouts across the many altcoins. Below I’ve included screenshots of the payout screens and my configuration.

The original Bitcoin hashing algorithm. Mining power is being added to this at a crazy rapid pace with ASIC manufacturers trying to cash in and mine as many Bitcoin as they can. Profitability of mining this will drop rapidly.
Here I allocated my payouts as 90% Bitcoin (as that was the point of the exercise) but then 10% into Dogecoin. Dogecoin was created as a “fun” cryptocurrency and the development community has fun with using it as tips throughout Reddit. I wanted a small trickle of this so that I could tip people.


Built to be more ASIC resistant by incorporating 11 different hashing algorithms.
I haven’t purchased any mining power in this mining algorithm yet, but I plan to in the future.


Not much in the way of options, as it has been designed to be a unique ASIC resistant algorithm. This is just for Ethereum mining.



Analysising the data

I’ve been mining for 9 days now and thought it would be a good time to analyse how my mining has been going.

Payouts occur at the same time every day, meaning my 1st day only saw a partial payout on the day I signed up. I have removed the datapoint to make the graphs clearer.
Exchange values used are from

The amount I’m mining each day has been trending very slightly downwards but is more or less stable.
Profitability/day: $2.77 / 9 days = $0.30/day


SHA256 Bitcoin
Fairly stable mining, but it is trending down sharper than Ethereum. This is most likely due to the rapid pace that additional mining capacity is brought on globally from all the ASIC miners
Profitability/day: $1.04 / 9 days = $0.11/day


SHA256 Dogecoin
A very sudden drop in Doge earned per day. This can be explained by looking at the exchange (see graphs below).
Dogecoin isn’t mined directly by Genesis mining, but instead Bitcoin is mined and then converted into Dogecoin. Over the last 3 days the price of BTC has gone down while DOGE has gone up, meaning during the daily conversion of earned BTC to DOGE the exchange rate is lower.
Profitability/day: $0.20 / 9 days = $0.02/day


Exchange rates for last 30 days


Profitability breakdown

Ethereum mining
1 year contact: $57.62
Daily profit: $0.30
Daily ROI: 0.30/57.62 =  0.0052
Yearly profit at current values^: $0.30 * 365 = $109.5

SHA256 mining
Lifetime contract: $70.81
Daily profit: $0.13 ($0.11 + $0.02)
Daily ROI: 70.81/0.13 =  0.0018
Yearly profit at current values^: $0.13 * 365 = $47.45

^I do not believe that this will be the true yearly values. Exchange rates will fluctuate and amount mined per day will go down.

I was interested in the SHA256 miners because of the lifetime contract that will always be mining until it is no longer profitable. However I am wary of the long term profitability of it. The chart below from shows the crazy rate that ASIC miners are are bringing on more hashing power. This will rapidly diminish the amount of BTC I mine per day. I do not plan to invest more in Bitcoin mining as I don’t think it will economical to compete.



I am very happy with the progress of my Ethereum miners. Ethereum is more resistant to ASIC miners and therefore the amount of global mining power brought should not reduce my profitability as much as quickly as it is with SHA256.
Ethereum mining is also almost 3x as profitable per $ as SHA256 mining (0.0052 vs 0.0018).

Because of this I plan on purchasing more Ethereum mining power as well as some X11 mining power. But I will not be investing any further in SHA256 mining.
I’d like to get some data points from the X11 miner to share next time.


Remember if you want to signup for your own, here are my affiliate links to get a discount  ODVnHM

Mining bitcoin with Azure (and why it is a terrible idea)

Note: This is extrememly inefficient and will not earn any bitcoin. You will just burn through Azure credits. Purchasing a $30 USB device is ~100000x faster.

TL;DR The commands to create a machine in Azure to CPU mine are at the bottom. But don’t bother.

I have been playing with the blockchain lately, most notably the programmable blockchain Ethereum. I was interested in seeing how difficult it was to set up a machine to mine Bitcoin. What I discovered through my research was that it is possible, but pointless to do CPU mining in the cloud.

Why is mining on Azure bad?

While it is easy to set it up, CPU mining is extremely inefficient. Mining on CPUs was depreceated a long time ago when it was discovered that it was faster to do on GPUs. But now even GPUs have been deprecated in favor of power efficient ASIC machines

Here are some hardware comparisions of ASIC devices from


There are even cheap USB devices that you can plug in that give you GIGAhashes/second

How did my Azure miner go?

My 2 core Azure machine costs $85/month, and doing CPU only getting me 4.24+4.25= 8.5 kilohash/second (0.0000085 GH/s), compare that to the 3.6 GH/s that an ASIC $30 USB device provides.


And after 2 days of mining I didn’t even get a single hash even accepted by the mining pool, effictivelly making my mining worth 0%.


Could this be faster?

On Azure, renting servers with a faster CPU (D & G-Series) would net negligble increases due to CPU mining.

The upcoming N-Series of VMs will have dedicated GPUs attached that you can offload work to. This would be an order of magnitude faster in mining.

The price per hour of a N-Series VM would be so high that you would be better off just paying to rent dedicated ASIC bitcoin mining rigs e.g. there is a list at the bottom of this blog post

Instructions for creating on Azure (if you really want to try it)

  1. Sign up for a mining pool e.g. (to give you a higher chance of getting a trickle)
  2. login to
  3. create a new Ubuntu virtual machine from the marketplace.
    I recommend Ubuntu on a basic size VM as we won’t be using the features of standard
  4. use Putty to remotely connect to your VM
  5. Install bitcoind (bitcoin daemon)
    sudo add-apt-repository ppa:bitcoin/bitcoin
    sudo apt-get update
    sudo apt-get install bitcoin-qt
  6. Configure bitcoind
    Run bitcoind to see instructions on what should be in the bitcoin.conf
    Create a bitcoin.conf file under ~/.bitcoin
    sudo nano ~/.bitcoin/bitcoin.conf
  7. Install a miner (cpuminer). Instructions from
    sudo apt-get install build-essential libcurl4-openssl-dev
    tar xzf pooler-cpuminer-*.tar.gz
    cd cpuminer-*
    ./configure CFLAGS="-O3"
  8. start the miner to test it all works
    ./minerd -o stratum+tcp:// –u <username_workernumber> -p X
  9. add the miner to startup. Edit /etc/rc.local to add it
    sudo nano /etc/rc.local
    Then on a line before exit 0, add the full path of your startup command with & at the end of the line
    e.g. /home/youruser/cpuminerXYZ/minerd -o stratum+tcp:// –u <username_workernumber> -p X &

Adding Application Insights to SharePoint

app insights sharepoint

TL;DR I helped write an SSW rule on setting up Application Insights in SharePoint.

I’ve been adding Application Insights to a number of SSW websites (such as and Since being added, App Insights has been helping us to keep on top of our application metrics and unhandled exceptions.

We wanted to add Application Insights to SharePoint, but we couldn’t find any useful documentation online. I started some investigations into how I could do this manually myself. As SharePoint is an ASP.NET application, I started teased apart how Visual Studio adds hooks into projects. I created an empty git repository, created a website, checked it in, used Visual Studio to add App Insights, checked in, then diffed all the changes.

After investigating, we discovered that it was easier than I thought. You can track the browser metrics by simply adding the App Insights JavaScript to the SharePoint master page.

For the server side metrics, as it is an ASP.NET website, you can update the web.config file on the server to start tracking those metrics, we found that the Application Insights Status Monitor configuration tool was the easiest way to get this done.

A full write up of the SSW rule on setting up Application Insights in SharePoint is available for you to follow.
I have also helped write a series of SSW Rules to better Application Insights that can help you get the most out of it.

Improving your website with Application Insights

Application Insights Logo

TL;DR I helped write a series of SSW rules on setting up Application Insights that you can follow to improve the monitoring of your website.

One of my favourite Azure offerings is Application Insights. I think it is an extremely simple thing that should be added to every website you manage. It is free for basic usage and only takes a couple of minutes to set up.

I’ve been adding App Insights to a number of SSW websites (such as and Since being added, App Insights has been helping us to keep on top of our application metrics and unhandled exceptions.

Because I think App Insights is a great product and want more people to get usage out of it, I helped write a series of series of rules detailing the hows and whys of Application Insights. My favourites are:

There are many more listed up there but those are just my getting started favourites. Check the rules out and start improving the monitoring of your application’s health.

Easily install Jekyll on Windows with 2 command prompt entries and Chocolatey

UPDATE 2015/12/05: From Jekyll 3.0 you do not need to install NodeJS. This brings it down to just 2 command prompt entries to install Jekyll

I’ve been using Jekyll to create static websites on GitHub Pages, but I was unsure how to install it with dependencies I wasn’t used to (NodeJS & Ruby). Here is the easiest way to get Jekyll set up on your machine in just a couple of minutes.

TL;DR if you have Chocolatey installed the 3 2 commands are:

  1. choco install nodejs -y
  2. choco install ruby -y
  3. gem install jekyll


Prerequisite: You need to have Chocolatey installed on your machine. Chocolatey is the BEST way to install and keep applications updated on windows.

  1. Open a command prompt with Administrator access
  2. Install Chocolatey
    @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString(''))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
  3. Close the command prompt as Chocolatey will not be available until you close and reopen.


Install dependencies & Jekyll

  1. Open a command prompt with Administrator access
  2. Install NodeJS
    choco install nodejs -y
  3. Install Ruby
    choco install ruby -y
  4. Close and open a new command prompt with Administrator access
  5. Install Jekyll
    gem install jekyll

Now you can use standard Jekyll commands to create a new site and serve it e.g.
jekyll new myblog
cd myblog
jekyll serve

Dev Tip: Customising Visual Studio to use a different merge tool

One tip I picked up after many years of using Visual Studio and TFS is that the default diffing tool in Visual Studio is… lacking. But the great thing is that you can customise Visual Studio to use a different diff and merge tool.
My tool of choice is KDiff 3 (Package also available on as it is free and open source. Meaning I am able to just install it via Chocolatey on all my machines without a second thought.

Here is a great example of why you may want to change your default diff tool. Below is a web.config file that was reformatted by a tool and simply put an additional space before the closing tag. Visual Studio flags every single line as having changed, but I can’t find the actual lines that were changed by me.

However in KDiff3 I can toggle to show whitespace changes, allowing me to focus just on the actual code that changed

Whitespace on

Whitespace off


Step 1: Install your diff tool of choice

Below are some I have previously used


Step 2: Open the Visual Studio Options

From Visual Studio select Tools –> Options. Then navigate to Source Control –> Visual Studio Team Foundation.
Then click Configure User Tools.

Step 3: Enter the command line parameters

In the configure use tools screen. Click Add.

  • For the extension enter .*
  • Command select the diff tool .exe
  • Enter the arguments from the table below based on if you are defining the compare or merge


The table below is duplicated from a 2006 blog post. I’d hate for the content to ever disappear off the web. All credits go to the James Manning’s original post.

Compare arguments

Product Command Arguments
TFS default diffmerge.exe %1 %2 %6 %7 %5 /ignorespace
WinDiff windiff.exe

%1 %2

DiffDoc (for Word files)

DiffDoc.exe /M%1 /S%2
WinMerge winmerge.exe /ub /dl %6 /dr %7 %1 %2
Beyond Compare bc2.exe %1 %2 /title1=%6 /title2=%7
KDiff3 kdiff3.exe %1 –fname %6 %2 –fname %7
Araxis compare.exe /wait /2 /title1:%6 /title2:%7 %1 %2
Compare It! Wincmp3.exe %1 /=%6 %2 /=%7
SourceGear DiffMerge DiffMerge.exe /title1=%6 /title2=%7 %1 %2
Beyond Compare 3 BComp.exe %1 %2 /title1=%6 /title2=%7
TortoiseMerge TortoiseMerge.exe /base:%1 /mine:%2 /basename:%6 /minename:%7
Visual SlickEdit win\vsdiff.exe %1 %2


Merge arguments

Product Command Arguments
TFS default diffmerge.exe /merge %1 %2 %3 %4 %6 %7
KDiff3 kdiff3.exe %3 –fname %8 %2 –fname %7 %1 –fname %6 -o %4
Visual SourceSafe ssexp.exe /merge %1 %2 %3 %4 %6 %7
Araxis compare.exe /wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4
Beyond Compare (2-way merge) bc2.exe %1 %2 /savetarget=%4 /title1=%6 /title2=%7
WinMerge (2-way merge) winmerge.exe /ub /dl %6 /dr %7 %1 %2 %4
Guiffy guiffy.exe -s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4
Ellie Computing guimerge.exe –mode=merge3 %3 %1 %2 –to=%4 –title0=%8 –title1=%6 –title2=%7 –to-title=%9
SourceGear DiffMerge DiffMerge.exe /title1=%6 /title2=%8 /title3=%7 /result=%4 %1 %3 %2
Beyond Compare 3 BComp.exe %1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9
TortoiseMerge TortoiseMerge.exe /base:%3 /mine:%2 /theirs:%1 /basename:%8 /minename:%7 /theirsname:%6 /merged:%4 /mergedname:%9
Visual SlickEdit win\vsmerge.exe %3 %1 %2 %4

Translating emails easily in Outlook

I have been working with SSW’s Beijing office for over 12 months now. One common occurrence is that I am CC’d on emails to our Chinese customers, but unfortunately I can’t read Chinese. It is very useful for me to quickly read these emails so I have an idea of what correspondence is going on.

The easiest way I have found to keep myself in the loop and check in on threads periodically is by adding a button to the Outlook ribbon bar to quickly translate the current document for me. Here is an example of how to set it up and translate an email.

Step 1: Customise the ribbon

Step 2: Select the Home tab and create a new group. Call it Translation, then add “Translate Document”. Press OK to save it

Step 3: You will now see the translate button in the ribbon, press it to set up what language it should translate from and to.

It will then warn you that your email will be sent over the internet to the translation service


That is it. Now in your ribbon bar you will see your button ready to use.

Clicking it will open up a browser with your document translated


Get every new post delivered to your Inbox.