Blockchain Conference and some musings on Bitcoin use cases(4 min read)

So, I attended Agile Global/Knowledge Hut's Blockchain Conference in Brisbane today.

My highlight was Aleksander Svetski, both his scheduled talk on Money/Bitcoin and the fill in he did in the morning on Cryptoeconomics (one of the other speakers couldn't make it).

Some of the other talks I liked were Benjamin Hall's talk on payment modernisation, and Kristyn Hales' talk on regulation of capital raising via coins/tokens; Dr Adrian McCullagh's talk on smart contracts was also reasonably interesting.

But, it was Aleks' talk on the history of money and why money (aka Bitcoin) is blockchain's killer app, and projects to increase the network size/reach like Stashh that got me thinking 'but what are the use cases for Bitcoin right now?' -- should we start using it to buy our groceries, or is it only for criminals?

Some Bitcoin use cases

Scenario

Bitcoin?

Comments

Buying groceries from the local shop or your morning cup of coffee

Not really

Right now, Australia has both stable fiat currency and extensive electronic payment options.

Until we get to the point where we distrust the government, Bitcoin is not very useful for local shopping.

Everyday shopping on the Internet

Not really

We have plenty of reliable third party payment, such as PayPal, Mastercard, VISA, and others.

Maybe Bitcoin has enough advantage in lower transactions fees for larger purchases where customers are charged a transaction fee that it is worth it, but right now I don't think it is really needed by the majority of people.

Note also that you need to have even greater trust in the merchant if paying by Bitcoin, as third party payment mechanisms can be reversed if the merchant never delivers, whereas Bitcoin, like cash, can't.

Should merchants accept Bitcoin, even if there are few customers using it

Why not, if it doesn't cost anything

Online shops could probably benefit from being able to transparently accept payment via Bitcoin (especially if fees turn out lower), but there may be some fixed costs in supporting it as a payment alternative.

High transaction fees have seen it dropped by some providers, but initiatives like TravelByBit are a good step. If the cost of providing the additional payment mechanism is close enough to zero, then having as many merchants as possible accept bitcoin, even if it is rarely used, is a good way to increase the network.

Funding causes censored by the government, or purchase of illicit items

Yes, useful

This ranges from supporting causes like Wikileaks, where governments have put pressure on traditional transaction providers to deny them service, through to grey and black markets.

Full disclosure: the political party I support has a policy of decriminalisation and legalisation [https://www.ldp.org.au/drug_reform] of currently illicit drugs; under the current laws a lot of the harm caused by drugs is a direct result of prohibition, and in this respect the availability of Bitcoin and black/grey markets actually reduces the damage done.

The unbanked population

Yes

I agree with Aleks that this is potentially one of the biggest growth areas.

Many of the world's poor, despite impoverishment, have leapfrogged straight to mobile Internet; in the absence of an available banking sector, Bitcoin has an opportunity to be *the* banking solution for these people.

International travel

Sure

This is an interesting scenario -- rather than constant currency exchange (along with the inability to get rid of coins), Bitcoin at airports (such as TravelByBit) makes some sense -- although existing credit cards already work fine for that (even with high exchange costs).

Large purchases

Makes sense

It is probably a bit uncomfortable to walk around with $30,000 cash (a car), or even $3,000 cash (a purebred puppy), and even if you have a credit card with a high enough limit the fees may be too high (and ma

rgins too low) to be viable, especially if it is the sort of thing where you want to inspect and exchange on the spot (rather than do a bank transfer).

The usual solution for these sorts of things is a bank cheque, but Bitcoin could remove the hassle of having to visit a physical bank, if the fees are low enough.

Real time payment systems, such as PayID that just launched in Australia, may intrude in this space (depending on the fees).

Settlement layer

Yes

Sure, but not really relevant to the average user.

All up in the first world, there are some fairly narrow use cases where it makes sense, such as supporting censored causes or large purchases, unless you want to start risking illicit activity; the big case could be the unbanked.

For a list a bit more risque, see http://www.libertylifetrail.com/2016/04/04/the-top-use-cases-for-bitcoin/

Note that it explicitly excludes use cases that are clear violations of property rights or an initiation of violence; whilst Bitcoin, as a tool, could be used for such scenarios, they should not be considered valid.

Anyway, attending the conference has hopefully encouraged me to spend more time on doing learning and professional development in the Bitcoin/Blockchain space.

Structured logging with .NET Framework System.Diagnostics(6 min read)

Structured logging (also sometimes called semantic logging) is a useful addition to the software development toolkit.

The latest release (2.2.0, and some 2.1.728) of Essential.Diagnostics adds structured tracing capabilities to the .NET Framework System.Diagnostics. It integrates seamlessly with existing tracing, including from the .NET Framework, and includes both producer-side extensions (to include in your application) and trace listener changes (to integrate with structured tracing systems).

The key new and updated packages are:

While the packages can be used independently, using both a producer and consumer in combination multiplies the benefits.

Continue reading Structured logging with .NET Framework System.Diagnostics(6 min read)

Versioning .NET Core in Visual Studio Team Services(8 min read)

I have always found it useful for applications to display their build version, and for libraries to have the build version in their properties. Relying on properties like the date (or file size) is always a bit risky.

.NET Core has embraced Semantic Versioning and at first glance appears to have a new way to specify version numbers.

It doesn't quite work to my full satisfaction, but luckily the older methods still work, so a basic GitVersion task in your build pipeline is pretty much all you need to get things working.

Continue reading Versioning .NET Core in Visual Studio Team Services(8 min read)

Seq TraceListener for System.Diagnostics(1 min read)

Following hot on the heels of v2 of Essential.Diagnostics, work on the beta version of the Essential.Diagnostics.SeqTraceListener has been completed, and it has been published to NuGet.

PM> Install-Package Essential.Diagnostics.SeqTraceListener

This provides a trace listener implementation that forwards messages to a Seq logging server. For performance it forwards messages in batches (with the first message being sent immediately, so you know the system is up and running), with automatic back off and retry when there are interruptions to the network communication.

This component can be used with the new Microsoft.Extensions.Logging for .NET 4.5.1 and above, or with Sytem.Diagnostics.TraceSource for .NET 2.0 through 4.5.

Essential.Diagnostics v2(3 min read)

I have made significant changes in the organisation of the Essential.Diagnostics project; although none of the actual implementations have changed, the project has been split into separate packages for each trace listener, available via NuGet.

The packages are available on NuGet (Essential.Diagnostics), and the source code on CodePlex (Essential.Diagnostics).

The project also has a new logo:

essential-diagnostics-64

Continue reading Essential.Diagnostics v2(3 min read)

SharePoint Online continuous deployment with IonFar Migration(8 min read)

Install-Package IonFar.SharePoint.Migration

The common stack I am currently using to build SharePoint Online solutions generally consists of the following components:

This stack allows automated deployment of the project against a continuous integration (CI) environment. Simple migration scripts (written in PowerShell) are cumulatively run against the environment, and can be easily promoted to a UAT and then Production environment.

IonFar-Basic-Script
Example migration script

Continue reading SharePoint Online continuous deployment with IonFar Migration(8 min read)

SharePoint 2013 – Team Site Guide(11 min read)

A SharePoint deployment typically has different types of sites, with different levels of governance. The central published site usually has tight governance over structure and information, whereas group and team sites have less restrictions and more flexibility.

SPGovernanceLevels

This guidance is around team sites, where although the site collection must initially be set up by a SharePoint administrator, at least some team members have administration permissions to the site and can manage the site schema and structure. Continue reading SharePoint 2013 – Team Site Guide(11 min read)

Apps and other SharePoint client-side development(6 min read)

An expanded client-side development model, which includes Apps as well as techniques such as remote provisioning, was released with SharePoint 2013. SharePoint Online does not support server-side development, apart from limited sandbox solutions, so client-side development must be used, whereas for stand alone SharePoint both the new client-side model as well as the original server-side model are available.

I have used several of the different alternatives for client-side development, and thought I would provide my overview of when each is suitable and my current preferred approaches.
Continue reading Apps and other SharePoint client-side development(6 min read)

A sensible guide to branding SharePoint 2013(9 min read)

This post details my thoughts on where to start with branding for SharePoint 2013. In particular, I think Themes (.spcolor, .spfont) are now usable, and recommend to start there, linking to a couple of resources. But first, I talk about what not to do.

What not to do

It might seem like a good idea to get a graphic design company to develop a whiz-bang look for your intranet, then turn around and ask a web development company to turn it into a SharePoint branding. Often this starts out with an HTML reset or HTML boilerplate.

The core SharePoint stylesheets have over 10,000 lines of CSS -- unless you want to rewrite all of that, you do not want to be doing a CSS reset. You never know when BI dashboard widget XYZ is going to need to display a green/red traffic light based on some CSS buried deep within the core files.

Don't do it.

Continue reading A sensible guide to branding SharePoint 2013(9 min read)

Visual Studio Online – Component architecture(2 min read)

Following on from my colleague Mitch Denny's Federated Identity in Visual Studio Online, I have expanded his work on the directory architecture and partner integration for Visual Studio Online, and expanded to include the other architectural components of a VSO environment such as build servers, deployment targets, and cloud-based load testing.

Visual Studio Online - Component Architecture

Continue reading Visual Studio Online – Component architecture(2 min read)