Bitcoin, Millibitcoin, Microbitcoin and Satoshis

With the current value of 1 BTC exceeding 1000 USD the “Satoshi” as a unit has become more important to deal with. Here is the definition:

A Satoshi is the smallest fraction of a Bitcoin that can currently be sent: 0.00000001 BTC. A Satoshi is a one hundred millionth of a Bitcion. In the future, however, the protocol may be updated to allow further subdivisions should they be needed.

Further examples of units

1 BTC = 1000 mBTC (Millibitcoin)
1 BTC = 100,000 µBTC (Microbitcoin)
1 BTC = 100,000,000 Satoshis

1 mBTC = 100,000 Satoshis
1 µBTC = 100 Satoshis

In my opinion the current raise of the BTC value indicates that it’s impractical to use BTC as a currency. When you accept BTC you have do deal with the high volatile character of it’s value. Of course as a merchant you can adjust the BTC price tags based on your local currency (i.e. USD or EURO). But this doesn’t help much when you have them in the wallet: There is the risk of losing value – or the need to exchange them fast. So it may be a problem for merchants to accept BTC with it’s highly volatile character. Especially if you don’t sell digital goods but real world products. Yes, there are solutions out there to overcome these problems – but it makes look BTC a bit clumsy as a daily use currency.

Deploying a Yeoman/Angular app to Heroku

I’ve created a small AngularJS app with Yeoman and want to deploy it to heroku. To server the static files of the Angular app I need a server to serve up the pages.

I’m going to use Node to serve up the static site, so I install the necessary dependencies:

npm install gzippo express --save

Gzippo serves gzipped assets and Express is a simple application framework for Node which makes serving the site quite simple.

Server File

The server file: web.js goes into the root directory:

/web.js


var gzippo = require('gzippo');
var express = require('express');
var app = express();

app.use(express.logger('dev'));
app.use(gzippo.staticGzip("" + __dirname + "/dist"));
app.listen(process.env.PORT || 5000);

Notice that the /dist directory will be served. To update the /dist folder the app need to be build with

grunt build

/dist

The /dist directory is ignored by git by default because you normally only want the development project and not the compiled app in the to repository. Since Heroku uses git to deploy, /dist needs to be part of the repository for heroku. To include /dist into the repository simply remove it’s entry from .gitignore to make sure it gets committed.
I recommend to create a branch for that – i.e. “dist” (or heroku). This way you can have your master branch without the compiled app to push it to github.

Heroku

Heroku needs a /Procfile in the root to start the app by using NodeJS to run the web.js server file.

web: node web.js

That’s it. With your heroku app created and deployed it’ll server the static angularJS app.

It’s about Developer Agility & Productivity

Coming from the traditional root-server world and using EC2 since 2007 basically as a virtual replacement of root boxes, I always wanted to go one step further to get rid of all that unproductive admin stuff (sorry admins, but I’m a developer by heart) and for easy scaling. With a PaaS provider like Heroku, (Engine Yard) or AppFog focussing on developer needs, I feel I found a good new playground.