Build 2016 Keynote day 1

Highlights

Day 1 (today) will be about Win 10 and devices, like HoloLens, Xbox, and ‘conversations as a platform’ (NUI) and AI/bots
Day 2 will be about Azure, IoT, data platform with @scottgu. And Qi Lu will talk about O365 as a platform, Office/MS Graph

More below.

Continue reading

Microsoft “Project Natick” puts datacentres under the ocean

I came across an interesting Microsoft research project, where they looked at what it took to manufacture and operate an underwater datacenter http://natick.research.microsoft.com/

According to the team, the idea behind these underwater datacentres is because 50% of the population lives near costal areas. Deploying servers along the coasts can help bring computing power closer to where the people are, reducing latency. Being submerged in water can also help with the heat exchange.

It is an interesting concept and there is more information in the short 2 minute video below.

deployment

 

 

SQL Server on Linux means you’ll be able to run a full .Net application in Linux Docker containers in Azure, developed on a Mac

SQL Loves Linux_2_Twitter (002)

There was some interesting news on the web today, Scott Guthrie announced that “private preview of SQL Server on Linux is available starting today” and that they are “targeting availability in mid-2017”.
When combined with some other recent announcements, in my head I can see it unlocking some unique scenarios which were never possible before in the Microsoft ecosystem:

In the very near future a developer will be able to create a new website with Visual Studio Code on a Macbook, using .NET core + ASP.NET core + Entity Framework core for a full stack application, which is held in a Linux Docker container, hosted on top of a Windows Server 2016 core VM inside of the container system, with the data being retrieved from a SQL Server instance hosted on a Red Hat Linux VM.

While this may be a contrived scenario for the sake of it, it does highlight what is possible with the new tools and frameworks being released by Microsoft. It is refreshing to see Microsoft embrace developers and operations teams that are working on non-Microsoft platforms. My favourite quote I heard from the team, is that they want to have the tools work on every platform equally well, and let the best platform host win. We have also seen the ASP.NET team working hard at making sure that the new ASP.NET core framework is optimised to work much faster than previous releases and recently achieved a 2300% increase in request throughput over ASP.NET 4.6 http://www.ageofascent.com/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/

Microsoft today also announced that it is joining the Eclipse foundation. In the past they had already procided Eclipse plugins for Azure Toolkit for Eclipse & Team Explorer Everywhere as well as the Java SDK for Azure enables Eclipse users to build cloud applications.

Here are a whole heap of links to help you research this new paradigm:

 

If you are an ASP.NET developer and want to learn what is new about ASP.Net core, then there is a great usergroup talk by @AdamStephensen where he dives into what he wished he had known when getting started with it.

And to continue your education on new website development, this Dev Super Powers video by @DuncanHunter will show you how to get started with Angular 2 with Visual Studio Code.

How to mine Ethereum with Azure on Ubuntu

Note: CPU mining is extrememly inefficient I was mining an an 8 core machine for 3 days and didn’t mine a block, but it is chance based so your results may vary. Either get a machine with a GPU, or think about purchasing mining power from a provider.
See my previous blog post about how I purchased mining contracts from a dedicated provider.

 

If you have an Azure account and want to experiment with spinning up a VM to do some CPU mining, here are the instructions to go through. It is made complicated due to the Ubuntu VM images only creating disks of 30GB which isn’t large enough to hold the Ethereum blockchain.
There are 4 major steps:

  • Prestep – Prepare a wallet to mine into.
  • Create a new Ubuntu VM on Azure.
  • Configure a 2nd hard drive.
    Move /home to the new hard drive.
  • Install and run geth.

 

Prestep – Prepare a wallet to mine into

It is more convenient to have your miner send any mined Eth to a central wallet that you control. The easiest way is to use the desktop Mist wallet

  • Download Mist https://github.com/ethereum/mist/releases
  • Run it, let it sync to the network (may take a few hours). You can let it sync while you set up your Linux VM
  • After it has finally synced, create a new account. Note the unique code for later. We will tell our miner to put all mined ether into that wallet.
    mist UI
    mist wallet

 

Create a Linux VM in Azure

  • Create a new Ubuntu linux VM. You will want to pick a VM size with at least at least 2 cores (otherwise all your time will be spent importing blocks instead of mining).
    azure new ubuntu
  • To make it easy to connect via SSH later, give your VM a friendly hostname
    azure hostname

 

Connect / Install helpful tools (optional)

  • If you don’t have a SSH client, download and install Putty http://www.putty.org/
  • Open putty and connect
    putty
    putty connected
  • Open a 2nd instance of Putty so you can monitor CPU while working
  • install htop
    sudo apt-get install htop
  • Run htop
    htop

    htop

 

Configure a 2nd hard drive

The Ubuntu image creates a VM with a 30GB hard disk. The issue with this, is that the Ethereum blockchain itself is over 30GB and so the disk will run out of space before you sync. You need to attach a 2nd hard drive, configure the system to move /home to the 2nd disk.
Simplified from https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-how-to-attach-disk/

  • In the portal attach a new disk. The name is unimportant. Make it at least 200GB. You will only be charged blob storage for the space you fill up.
    azure new disk
  • You can list your drives. You will see /dev/sdc as not having valid partitions (as we haven't set them up yet)
    sudo fdisk -l
  • run fdisk on sdc. You can just accept the defaults by pressing Enter
    sudo fdisk /dev/sdc
     n (new)
     Primary (Accept Defaults)
     1 (Accept Defaults)
     First Sector (Accept Defaults)
     Last Sector (Accept Defaults)
     w (to close and apply)
  • Format the new partition
    sudo mkfs -t ext4 /dev/sdc1
  •  this will now show our new drive is partitioned and ready to use!
    sudo fdisk -l
  • Temporarily mount it to /datadrive
    sudo mkdir /datadrive
    sudo mount /dev/sdc1 /datadrive
  • Get the UUID (can copy in putty simply by selecting text with mouse. Auto copies to clipboard)
    sudo -i blkid

    ubuntu uuid

  • Add it to the filesystem so that it is always mounted at startup
    sudo nano /etc/fstab

    add in your disk in the below format
    UUID=???????? /datadrive ext4 defaults 0 2
    e.g. UUID=385ae56e-cc0d-4d6a-9130-70458e7c57b7 /datadrive ext4 defaults 0 2
    Ctrl+x to quit. Y to save
    ubuntu fstab

  • Try unmounting and remounting to confirm it is all okay
    sudo umount /datadrive
     sudo mount /datadrive
  • Make the drive writeable
    sudo chmod go+w /datadrive
  • Can confirm that your /datadrive is as large as you made it earlier. Should be /datadrive
    sudo df -H

    ubuntu disk sizes

  • I would reboot now to make sure the system comes back up and you haven’t broken anything. Better to do now with a fresh machine than later
    sudo reboot

 

Move /home to 2nd drive

Simplified from https://help.ubuntu.com/community/Partitioning/Home/Moving

  • duplicate files from /home to /datadrive
    sudo rsync -aXS --exclude='/*/.gvfs' /home/. /datadrive/.
  • change /datadrive to /home
    sudo nano /etc/fstab
  • Rename the old /home, and prepare an empty directory ready for fstab to mount to
    cd / && sudo mv /home /old_home && sudo mkdir /home
  • Make sure it all works by rebooting
    sudo reboot

 

Install and run Geth!!

Finally the reason we are here. You can easily install by adding in the repository into apt-get and installing from there
Simplified from https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

  • Install geth
    sudo apt-get install software-properties-common
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo add-apt-repository -y ppa:ethereum/ethereum-dev
    sudo apt-get update
    sudo apt-get install ethereum
  • Run geth. Replace the ether address with your wallet
    I prefer to run geth via screen. That way if putty disconnects it will still continue to run on the server.

    screen -S gethminer geth --etherbase '0x461da8f20aa94fac22d7b134afac5481315d7dae' --mine 2>> geth.log
  • Tip: If putty disconnects, you can reconnect by using
    screen -r -S gethminer

Here is a screenshot of me running 2 instances of Putty. One with htop showing the 8 core machine at 100% utilisation, and a 2nd instance showing geth processing blocks.
ubuntu 8 core mining

Using Windows 10 iOS bridge to convert Canabalt to Windows 10 in under 5 minutes

I have been playing around with the Windows 10 bridges that allow you to port applications from other platforms (iOS, WP Silverlight, Hosted web apps, etc) to the Windows 10 UWP platform.

Today I wanted to show you how easy it is to take an iOS game and port it straight to a Windows 10 UWP application.
I’m porting the classic game Canabalt which was originally an online flash game, which they then ported to an iPhone game.

The author of Canabalt released the source code on Github for others to play around with https://github.com/ericjohnson/canabalt-ios
The iOS bridge for Windows 10 is availabe from the website https://dev.windows.com/en-us/bridges/ios

Now sit back and watch how quickly you can port using the tools.

https://www.youtube.com/watch?v=L7Y6YlWuHQ8

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: https://www.genesis-mining.com/  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 https://www.genesis-mining.com
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.

SHA256
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.

image

X11
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.

SNAGHTML354ee67

Ethereum
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.

SNAGHTML33b8d45

 

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 https://www.coingecko.com

Ethereum
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

image

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

image

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

image

Exchange rates for last 30 days

image

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 blockchain.info 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.
image

 

Conclusion

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
https://www.genesis-mining.com/  ODVnHM