2017

We are on the edge of the future – seeing the emergence of technology that we dreamed of years ago; AI powered bots, Holographic GUIs, autonomous vehicles, decentralized application networks. It’s happening fast. There is new form of distributed world consciousness of truth in the internet, it enables people to come to distributed consensus about certain things. Sometimes it is tough to tell which are certain, cryptographic proof of providence of content will become a standard. Ratings and reputation currency creating the convergence of identity. Proliferation of meta-physics in numbers. More ICOs, tokenized application networks, appcoin protocols, zero-proof currency spinoffs, enterprise crypto consortium, and crypto hedge-funds.

This past year I learned:

This is going into the 5th year I have written on my blog. I am at just over 45,000 views all time.

screenshot-2017-01-01-08-51-20

Hit 11,424 this year in total views; not bad, though a slight decrease from 2015.

2016-12-01 16_17_47-Stats ‹ domsteil — WordPress.com.png

2013: A Year in Review

2014

2015

2016:

 

These were some my goals from 2016:

  • Learn AngularJS and ReactJS
  • Learn Microsoft CRM Programming C# .NET
  • Earn Blockchain Technology Patent for Smart Contract Management
  • Build the Dreamforce Story and Demos – (Alphabet type HUGE Conglemerate)
  • Build Salesforce Lightning Components for the Relaunch
  • Learn how to push GIT, anywhere in the world to anyone in the world
  • Build 21.co applications to earn Bitcoin
  • Learn Chinese and Portuguese
  • Build a program with the Tessel.io
  • Start MicroSaas with the BizSpark program at Microsoft
  • Trade Cryptocurrency daily, more ICOs,
  • Finish the Art of War
  • Write a blog post on the state of cryptocurrency
  • More water every day
  • Eat Healthy: Chicken, Vegetables, Almonds, Salmon, Brown Rice, Eggs, Protein Powder, Oatmeal
  • Run and Lift at 6AM at Koret out by 6:45 to get to work by 8

Some of the highlights from 2016:

  • Traveled to London for work and visited Spain (Madrid, Barcelona, and Ibiza) with my Dad for his 60th.
  • Flew to New York for the second time for the Consensus 2016 Hackathon and won the prize for best App on Azure by Microsoft. MicroSaas – Enterprise Smart Contract Platform and Exchange (BizSpark grant).
  • Made it into an article in TechCrunch for Bots and VR at Apttus
  • Started investing in ICOs

Focus in 2017

  • Build Dapps
  • Build with Babel, ReactJS, Redux, GraphQL, and Node
  • Keep building Bots and a VR/AR interface library in Unity
  • Learn about Containers, Docker, Kubernetes
  • Learn how to write python scripts with Tensorflow, Theano and Keras libraries
  • Write 21.co computer python scripts
  • Write 1000 Ethereum Smart Contract Clauses
  • Read Applied Cryptography cover to cover with annotations
  • Keep a written Daily Journal and Physical Calendar
  • Say my autosuggestion every morning
  • Drink more water, run, and read everyday (52 books, 365 miles)
  • Get 100K views on the site

Crypto –

Cryptocurrencies, cryptographic application networks, applied cryptography protocols, application coins, decentralized application networks. Dapps.

Bitcoin is first and last OR Bitcoin is first of many. The price of bitcoin is next to $1000 and the overall market capitalization has hit an all time high:

screenshot-2017-01-01-09-05-35

 

Do we only need one cryptographic state machine for the world similar to one internet to the world? Does segwit, payment channels, teechans and the like round out the Bitcoin network or do Turing complete scripting decentralized state networks aka Ethereum bring us into the next generation of decentralized applications. There is room for both, and the price of both tokens Year over Year seems to think so as well. Despite the Dao hack dropping the price from a high of 19$, down to around $7.50 now, Ethereum is moving fast.

Companies such as Truffle are making Smart Contract development for the Ethereum network much easier. Zeppelin is creating a library for secure and effetive smart contracts, BlockApps is creating the bridge for Enterprise Blockchain deployments and apps, and MetaMask is making your browser Ethereum network compatible via the web3 api.

ZCash – zkSnarks – Zero Knowledge Proofs has a ton of upside; 21 million notes that come with an encrypted memo field, a key that enabled selective disclosure, and ofcourse the blockchain immutable, petrified effect.

Brave and Blockstack are reimagining the internet browser experience.

The finserv platforms players have launched  R3 Corda and also Chain has launched its platform and smart contract language Ivy.

Enterprise is off the races with Microsoft leading the pack; and IBM not far behind banking on hyperledger on blue mix, and AWS with Monax.

consulting firms are just starting on POCs such as Delotties Rubik;

I think this is a fundamental shift in the enterprise back office from on-premise, to cloud, to dapps.

Dapps for the enterprise; or a new UI over decentralized application networks like bitcoin or ethereum.

That is next.

One last thing on ICOs and blockchain tokens; a paper was released on the difference between securities and blockchain tokens which I found interesting. Ideally if doing an ICO or any cryptocurrency the following is something to keep in mind:

  • the token is sold once there is an operational network using the token, or immediately before the token goes live, it its more likely to be purchased with the intention of use rather than profit
  • It is built with all of the technical permissions necessary to actions the networks functions; it is for use and able to be used by an individual buying the token
  • A token which has a specific function that is only available to token holders is more likely to be purchased in order to access that function and less likely to be purchased with an expectation of profit.

The buy in is based on the premise of the usefulness of the underlying function that the token enables on the decentralized network. The value of the token is based on the supply and demand of the underlying function.

AR –

Built AR Hololens CPQ Applications

Jet and Bike configuration inside of Hololens –

Learned how to create a Holo-App

Learned C# classes and  Visual Studio

Learned Unity how to build GameObjects, import GameObjects from Blender. Applying scripts to different game objects and manager objects. How to call methods that looked into the children of certain gameobjects and in doing so was able to create animations and implement visual rendering based on user interaction via voice and gesture taps.

Unity is a very powerful platform to learn, it is very remarkable to essentially anchor an image from a computer into a digital layer in the space around you.

I think Unity and the platform is amazing. You are able to download a 3D model import it into a scene, apply a script, and deploy it the 3D world to interact with.

This learning curve to accomplish this is not too bad. You can start designing and deploying 3D models in a holographic interface. The other cool thing is that they stayed anchored; in that when i put a hologram in my living room, and come back two weeks later my hologram is still there.

It’s thethered to the real world in space; theres context to what you build.

I enjoy working on VR.

I think that setting up the VR and learning how to deploy holograms was one of the hardest but coolest projects I have ever worked on.

Bots –

Build Bots using Howdy.Ai for Slack, wrote the OAuth 2 script

Built bots using Microsoft Botbuilder and attended BotDay

Built out Max… bots on Azure

Integrated LUIS NLP model into the Bot code hosted on bitbucket continuous deployment to Azure web app.

Conversationalist are no doubt a new way to interact with applications, but they also inherently change the way we build software.

Bots are never really a finished piece, there is always something to optimize, tweak, add in; to make the bot more human like to create a better experience for the user.

There is so much friction that is removed in conversational interfaces. The advancements with lingustics and computers is astonishing. I remember creating my first SVG trees using prolog to parse english and japanese sentences. I didn’t realize it then but ultimately that recursive programming was an excellent base line for my understanding of how to create bots that leverage NLP.

The other important thing about getting a bot up and running is that is is being hosted, you have the app id, secret, you have continuous deployment from a bitbucket repo, you have the right size application node, your webservice are leverage keys that do not expire causing latency issues, you are testing locally with an emualtor before pushing changes to the live bot, that you are taking into a fact security, querying the data intelligently, that the bot sounds conversational and you have removed console log statements from the dialect, that you are able to talk to the bot randomly and achieve some outcome, that the bot is available in multiple channels and dynamically can alter the response based on the context, that the bot learns, and you learn, what it is that can make it more efficient, effective, and execute what it is it is being told to do.

Also,

that you have a pricing model for the bot, and you know exactly how much this bot is going to cost you and earn your platform provider in the form of consumption, that it is ultimately going to have to be managed through a lifecycle of improvements, and that during these lifecycles people who need to access the bot are going to come and go and you will need a way to manage what users have access, in addition to if you want to update at a certain time for certain users, how that can be accomplished, and ultimately if you can run some different advanced algothritms through all of the data you are collecting because you are essentially creating a platform, in essence you will need a way to bake in some form of deep nueral net; my guess would be to stay ahead of the market.

 

I am truly excited to begin the next step in my career. I’ll be working on the technology that is fundamentally going to change the way that enterprise companies around the world do business. There is the combination of having a decentralized blockchain network facilitate certain business functions between trustless parties. The decentralized trustless yet collaborative industry. Decentralized Applications that enable certain functions and state on a world computer, a distributed consensus protocol, from an internet browser. There is the concept of having an intelligent agent calling and deploying to these decentralized networks…

 

Happy New Year,

Live the dream.

-Dom

 

 

 

 

How to Build HoloApps

The Microsoft Hololens enables an entirely new immersive experience with computing. There is yet another digital layer that we have the ability to tap into and build upon. It is profound when you deploy a holographic model from your 2D computer to the 3D world.

What makes the hololens different from other types of computing platforms? What if holographic images became ubiquitous? Are holograms anchored to points in the world the future of distributed computing. What about holographic bitcoin nodes? (Maybe a stretch).

Disclaimer: Prior to the last month, (late July/ early August) I had never programmed in C# or with the Unity platform. I could have used Javascript but everything I read said that specifically for this type of development it is best to used C#. Compiled, more powerful etc.

I wrote this article on my phone as I built out the project.

From the start I did not want to think about the end result of seeing something floating in front of me and being able to interact with it in 3D space. Let alone voice activation built on NLP that could connect the Hololens to the REST APIs of my Bot.

Still I was able to get a digital object in front of me. The first being a cube, then a plane, then planes, then a bike, then bikes.

I prefer to think in the different components the HoloApp needs to accomplish the goal of ar cpq (Augmented Reality Configure-Price-Quote).

I know the NLP has to be trained to match the right utterance. I know that Bot has to gather the right parameters to be serialized in a JSON object. I know the scripts that allow me to interact with the Holograms have for the most part already been built. I know that the 3D models from TurboSquid cost money and it will be tough to build a compelling demo with the free ones. I know that the GUIs will need to look great but also be easy to interact with for someone who has never used a Hololens. That the story of configuring a product in the Hololens has to make sense.

The things I dont know about; how to consume our APIs directly, yet, or how to use spacial audio and spacial mapping and incorporate it into the demo.

The Hololens is amazingly beyond what your base ideas of holographic technology is. In a sense any prior exposure to what you would think as the ultinate vr future is limiting. With this in mind, it is important to understand that tapping into this digital layer requires you to think about the expirience differently.

One of the GUIs was all I had to figure out to realize that this new form of computing was the early stages of tech. It is early. Very.

Ironically, it put into perspective that yes we are living in a time of incredible technological advancement, but still, it is very early. The GUIs are surfacing the state of underlying data sources. This could be a record in Salesforce, data from an entity in Dynamics, data from a Smart Contract on the blockchain. The GUI in VR World needs to be diegetic. The cards need to be interactible, by gaze, gesture, speech; they not only look cool but are there to augment the expirience of the user.

It is not easy to type in VR.

This is another reason why bots and VR are a catalyst for each other in that the NLP used in bots will be used in VR experiences.

The other interesting concept in VR is scale. An object’s scale and distance from the main camera makes all the difference. Being able to grasp what distance and scale any object is will make developing for the Hololens much easier.

Another component of this world which I am just getting into is Raycasting. Being able to cast a ray from the main cameras eye to an object should affect the objects state, look, feel in VR. By having the light hit a gameobject witg another certain material applied is what makes the experience unbelievably realistic.

The mesh filter creates a skin or surface and Mesh renderer determines shape color and texture.
Renderers bring the MeshFilter, the Materials and lightning together to show the GameObject on screen.

Animation is next. I need to be able to have voice activated animation drive the configuration of the product.

One of the reasons being that the airtap motion is very confusing at first for users. The best experience would be having an object expand into its components for configuration, having the user select different options, and then validating the configuration bringing the model back together.

The way to achieve this would be to have the game recognize keywords or intents via LUIS, and then have various scripts applied to the game object that make it interactible.

A manager game object.

Animations can be achieved with scripts or with the animator in Unity. I tried understanding the keyframes and curves but still have not figure it out yet.

I need animation to show when a user either hovers over or air taps a selection for it to change the corresponding object in the configuration.

I achieved this using renderer.enabled onGazeEnter. I then moved the 3D box collider corresponding to the different objects out to where the tile was.

I have the select options down, either by voice, air tap or clicker.

I also added in Billboarding to the quote headers so it always faces you as you are configuring the product. I added in sound so the user knows when they make a selection and lastly I am working on getting the 2D images of the options into the tiles in addition to making the tile green upon selection.

Actually pretty tricky, but ill figure it out.

When calling the NLP from within the hololens via direct line REST API, there needs to be an avatar the user can speak to.

This concept of having the audio come from an actual thing gives it a persona. The next couple steps of the demo are creating the cards for every object which will be rendered based on the voice commands given to the avatar. Once this is complete I will need to work on the plane scene. Lastly, next week I will begin on adding our CPQ APIs to the existing bike demo.

32 Days until Dreamforce
After a couple hours I figured out turning the tiles green and replacing original blue tiles on selection by using getComponentInChildren and rendering enabled true or false on airtap.

About 3 weeks left til Dreamforce.

I just started on the configuring the inside of a plane demo. Again, getting the objects to the right scale and the right distance from the camera is key. We now have a CPQ webservice hosted on Azure which we are calling using a Unity WebRequest.

The next I have to do is work on rendering different textures of a GameObject on hover.

Also, do I call the webservice directly with a Unity Web Request or do I hit the Bots API which then calls the WebService using the Unity WebRequest. Probably the latter.

Other than that, its now a matter of just dialing everything in; I have the right assets, digital and physical, the scripts are there, its time to put everything together.

Ok, so actually it was the first Option. I called the CPQ Webservice using a UnityWebRequest and a Coroutine OnStart to Create a QuoteId and CartId and retrieve the options for the bike bundle.

I put this C# script on the Manager object. The other WebServices such as add option, remove option will probably remain on the gesture handler script. Sinilarly a CoRoutine is called OnAirTapped.

Tomorrow I have to work on parsing the JSON response from the web service and bind the option Ids to the gameobjects in Unity.

Once this is done then I will create the action to call the  finalize web service. After that, well, thats when we start to get into it. Makin it POP. Then ofcourse running into problems x,y, and z but ultimately heading in the right direction.

I ran into a few serialization errors, to say the least. After hours of testing different scenes, debugging, I have a stable project back.

The next part I have to develop is the game loop and surfacing the data in the GUI. The game loop takes an index of scenes compiled and directs between them. Advancing levels in a game, same concept. The 0 level I need to finish is a switch case where if bike A is selected go to scene A, if bike B, scene B, C, scene C.

The three bikes will be rotating and upon selection it will LoadApplication (scene#).

The other game loop will be to Finalize the configuration. Upon the user saying “Finalize”, the KeywordManager will set the Finalize gameobject to active. I have an if statement in the gameObject that is this.SetActive (true) then StartCoroutine Finalize and LoadApplication (0).

Possibly some other cool stuff such a sounds and showing the quote etc. before going back to the selection scene.

The Plane is still a work in progress. It is a different experience because of the small field of vision of the Hololens. It is still very cool but I am working on a solution to make it more of an AR expirience vs VR. Overall, both projects have come a long way. Leveraging the Holotoolkit, exporting Unity Packages, googling and reading books on C# and Unity all have had huge impact.

There is about 10 days until dreamforce and the last 10% of any project like this is the toughest.

It should come down to the wire, it always does.

Last night I might have figured out a powerful and reusable way to build Augmented Reality components. The Get Renderer.enable can be applied for any sort of dynamic action. Here are my notes:

var x = GetComponentInChildren <Renderer> {}

x.gameobject.renderer.enabled = true

x.gameobject.renderer.enabled = false

everything is a game object.

overlay the options for the bike selections and on selection render.enable = true for the corresponding text.

Essentially by having the different object within a parent rendered based on conditions being true or false in the parent can tie together the children components i.e a change of color and text showing up.

I still have some testing to do but I think this may enable a lot.

I have roughly a week to dial everything in. The plane will be today. Working on rendering different textures. Other than that it is moving the colliders for the other bikes and creating a bike select script.

I have about 3 days left and the last week has been a gamechanger. With some help(would not have been possible without them), I was able to build and deploy the last parts of the project.

Item 1) Serilaization With Newtonsoft on UWP takes a little toying with. Download the package and a portable path and download a seperate dll I will attach here.

Net: major part of the project.

Binding data to the GUI dynamically. By getting the GameObject and setting the material.

This was also huge and done with code below:

The Biggest thing just figured out and this was for the plane originally but applies for the bike was being able to for each mesh in parent render.

Today I built the plane scene, added keywords so the options can be said.

Still have to bind the quote number and updated price.

I worked two months day and night to be able to deliver tomorrow.

There is no doubt in my mind this was one of the biggest challenges I have ever had. From learning Unity, learning C#, learning how to Call Apttus APIs, importing 3D models and scaling and texturing them, solutioning the build, designing the GUIs, making it voice activated; overall yes, it was very difficult.

There were two things I will need to figure out with the build. How to render different materials of a GameObject On Tap… but I have… just thinking on it still.

And how to deselect an option in a group before selecting another.

Other than that, yeah, two three months of work. Never thought I’d work on that.

Enterprise Augmented Reality, Apollo.

Top Tips:

  • Deploy your apps to the Hololens using the USB cord. I was using WiFi for the two months of development and on the last day realized deployment took 30 seconds with a USB. (Depending on the size of the app, it could take 15 -20 minutes over WiFi).
  • TurboSquid –> Blender –> Unity
  • Leverage the Unity Asset Store
  • Export your Asset and project Settings / Create External Packages
  • Final 10% is the toughest

Learn:

  • Shaders
  • Storyboard it out
  • Create Prefabs
  • Export Unity
  • Additive vs Subtractive Color
  • Vector3
  • Quaternion
  • Mathf
  • Everything is a GameObject
  • Declaration before Definition

 

Sources:

Microsoft HoloAcademy

Unity Docs

Intro to Game Design, Prototyping, and Development  

 

 

on ipfs:

https://gateway.ipfs.io/ipfs/QmbPk95nDCk4MBoidQHxs2zuZ44TemH7YjA4E3nCBZBeoK

Chatbots

CryptoSlackBot: n. A bot that executes buy and sell orders on cryptocurrency exchanges.

Aptbot: n. A bot that executes Quote-to-Cash functions from within messaging platforms.

Do you want to build your own slack bot, universal bot, facebook messenger bot? Eventually list it as an App and publish the bot to a directory?

Over the past 5 months I have developed bots for: Slack, Skype, and mobile web.

There is a common pattern when building these bots: dialog triggers, parameter gathering, message brokering, and response formatting. In this article I will explain:

  1. How to Build a Bot
  2. How to connect the Bot with any REST API
  3. How to host and deploy the Bot
  4. How to create a Bot API

How to Build a Bot

These are the tools and languages you are going to use to build the bot:

When building a bot it is important to understand that you are abstracting away the UI with intelligent cognitive services. There is an abundance of web based services and applications that are locked into their own interfaces. We have arrived at a time where often we interact with apps without a UI. Why do I need a phone to call an Uber, can’t I just tell the uber bot in a Slack channel to pick me up from work and drop me off at the train. The bot needs two parameters: from and to.

This new paradigm of having intelligent assistants is deemed conversation-as-a-service.

The front-end is the conversations that you will have with the Bot to gather the paramaters that are passed to your server in the form of a serialized JSON object. The server deserializes it, and responds back to your bot with its own serialized JSON object.

The user interacts with the bot –> formats the request with the parameters –> the API retrieves the call data –> responds with error/data –> formats the response to the user.

When gathering the parameters with a bot you need to initiate the conversation or dialog. To start a conversation or dialog you include an array of words associated with a particular conversation. When the bot hear to execute a program, this is exactly triggers the specific dialogue, and ultimately what drives the JSON request to the API service.

You can also combine Natural Language Processing with your bot to make it more intelligent using a service like LUIS AI. Take an utterance and match it to a particular intent which is tied to a set of questions (the dialog).

Once this is achieved, the bot will store and pass this as a request in a serialized JSON object, the server deserializes it and responds back with callback data.

Everything in Javascript is an object.

Everything, in Javascript, is an object.

URL Hacking | Passing of Parameters

Once you pass the various parameters needed to the API, it responds back to your Bot at which point you can drive another action.

Essentially you are pulling in the functionality of any web service into a command line where you have interactive programs branching and executing various functions.

Let’s Start Building

There are a number of company’s that enable you to build a bot:

  • Howdy.Ai’s Botkit
  • Microsoft Universal Botbuilder
  • API.AI

In order to get one of these up an running you are going to need to execute the following code.

Botkit for a Slack Bot

In this turorial I am using Botkit.

cd c:
mkdir newbot
cd newbot

npm install botkit
npm install superagent
npm install body-parser
npm install express

npm init

git init
git commit "first commit"
git push -u origin master

git add .
git heroku:set -a <appname>
git push heroku master

Let’s break it down:

The first thing we are going to do is create a new folder for the bot application:

cd c: 
mkdir newbot
cd newbot

Once you have your new folder you are going to create an app on Heroku.

Then you need to install the various NPM packages that you need to get the bot up and running.

Howdy.ai’s Botkit is a great way to customize and get a bot up and running for a variety of different messenger platforms.

npm install botkit
npm install body-parser
npm install express
npm install superagent

Express will be used for the server and body-parser will be used to format the hypercards in the platform channels.

npm init will create your app’s JSON package.

npm init

Once you have your application setup the next step is to deploy it to Heroku.

Make sure you setup a Procfile so that your bot can “live” on the server.

Create a Procfile in the directory with the text worker: node server.js

Now that you have the base bot app setup you can begin deploying the code to Github.

Create the repo on Github and then set the remote in your directory.

git init
git commit "first commit"
git push -u origin master

 

Connecting Bots to a REST API

Download the npm module of whatever rest api or wrapper you want to bot to connect with. Check out my github page to see examples.

Deploying to Heroku

It is important to configure the vars in your Heroku Application so that they are not explicitly declared in your code.

The variables needed are your Slack Apps Client ID and Client Secret.

git add .
git heroku:set -a <appname>
git push heroku master

Deploying to Azure

It is important to configure the vars in your Azure Application so that they are not explicitly declared in your code. You also want to register your app on the bot framework you can connect to various platforms/services.

The variables needed are your Microsoft App ID and Microsoft Password.

Create an Azure account and create a new Web App. On the Bot Framework portal, set your website and app id/password.

If your web app is up and running and your bot is deployed you ahould be able to interact with it on your site.

OAUTH2 and Slack

Instead of just having a custom integration bot, what about creating an actual Slack app?

This is arguably the trickiest part of getting your app up and running.

You want to enable other Slack teams to use your bot in a secure way.

Slack Authenticate’s users by exchanging an authentication token for a bot token.

In doing so it gives your app access to the org with the different access scope.

This can be for bots, /commands, and webhooks user access.

The key is creating the 1) response http request 2) then having the response 3) redirect to the /x http request 4) which contains the oAuth 5) and grant’s access.

One way to test is using ngrok and pointing the request URL to your local server which has the public reachable IP through grok.

Enter the Grok ID on your App ID in Slack, in the interactive buttons, and the URLs.

start up ngrok

ngrok http 8080

then start up your app locally

node server.js

then inspect the ngrok requests

ngrok http 4040

lastly, go to localserver in the browser.

In Conclusion

The bot logic can be used across multiple platforms in that there can be multiple inputs from any messenging platform/sensors/Holograms; the bot is the broker of these inputs to other platforms. When building keep this in mind. The bot is and will continue to be a catalyst for web services to be brought into single platforms. The new OS is immersive in that we have untapped, disconnected mediums that can now leverage the same bot logic and state.

Next part will be on how to create your Bot’s own API.

CryptoTrends

This article is about what hasn’t been in the headlines in the crypto space.

By crypto space I mean: cryptographic currencies, decentralized ledgers, distributed consensus protocols and thee / a blockchain protocol.

It is fast pace, riveting, real-time, global; it never sleeps.

From the highly anticipated Halvening, to the Rise of Ethereum and the Fall of the DAO, to the next big anticipated ICO; this year has arguably been the most exciting for this global phenomenon.

I haven’t posted in awhile, it still feels like the wild west times of cryptographic state transition machines. Lots has changed but governments still do not know how to classify it, exchanges have trouble securing it, people still can’t get enough of it; a true computational advancement growing before our eyes into a new global digital layer.

You have computing nodes around the world opting in to share the concurrent state of ownership of digital entities coupled with an arms race of specialized chips consuming immense amounts of energy incentivizing the search for a mathematical proof that secures and enables a robust cryptographic monetary system.

A truly born global and open enabler of immediate value transfer.

Clearing and settlement that relies purely on the underlying cryptographic stacking of blocks full, and I mean completely full, of digital cryptographic signatures.

On the Surface

Someone can securely hold digital entities of value, they can be exchanged and used anywhere in the world, there is no one that tells them how much they can send or spend; the rules are written in computer code.

One can engage in instant digital arbitrage and use a physical proxy for food at a restaurant or a means of transportation. This is the current reality we live in, or in other words:

There is a digital layer that not everyone in the world knows about. This layer is operated in p2p cryptography. It has already arrived, but is not evenly distributed yet.

One could leverage this layer in reality if they know the way to access it:

One way is to use Shapeshift to exchange one alt for another, set the withdraw address to a web wallet, send the alt from a web wallet a global digital exchange, sell for Bitcoin, withdraw to a wallet associated to a Bitcoin debit card then go to the nearest ATM for cash effectivo.

This could take maybe 15-20 minutes.

In real time using a variety of mediums, pure decentralized digital arbitrage. A seamless flow of taking a non-tangible digital unspent transaction output and turning it into cash.

At any point, regardless of location in the entire world, you can buy, sell, short, swap, any digital entity of any magnitude via a computer in your pocket and then go and use it IRL.

It’s unfathomable.

What other asset class can you trade digitally and globally at any time then immediately exchange for cash? That has this type of volitility?

Now if buying dinner or booking a flight is the first step, this is only going to become more and more prevalent as more asset classes are put on the blockchain. If I can spend coins on the blockchain, why can’t I earn coins on the blockchain?

On the Machine Layer

Machines do not need a UI in order to interact with the blockchain.

You don’t have to be there for a machine to interact with your endpoint.

If right now I can do all of the above, trade, sell, spend, crypto, pull out money, then I should have just an easy a time earning the above via some digital mechanism.

This is what the 21 computer enables – one’s machines to earn bitcoin per http request.

This still really doesn’t encompass the profound implications of being able to directly interface with a global value transfer network at the command line or by writing a consumable API. Tapping into the network should be easy, creating a closed loop once in should be even easier.

Something I thought is fitting is it comes down to input vs output. The analogy is equivalent to one Elon Musk mentionend recently in that as humans our input sensors are incredible, however the output is very inefficicent ( I have been typing on the train as fast as I can for the last half hour and I am barely at 800 words). It’s even worse when we are on a phone. We have two thumbs. Two measly thumbs to try and explain. Nueral lace is a way’s out but I think being able to incentivise machines for output is a step in a indirect but somehow related path.

I need to make it more of a habit to code in Python on my 21.co computer.

__init__ method   | Flask 

Bots

I haven’t been writing as much because I have been building bots. I have been using Howdy.ai’s BotKit to create a number of Slack bots.

Following tutorials online and eventually creating the conversations handlers, and connecting them to various APIs using a combination of npm packages, node.js, and heroku.

The platforms that are driving the new shifters Slack, Facebook Messenger, Microsoft. The big differentiator is that Slack was made enterprise team first. They have the most momentum and a great indicator of this is their growing appexchange.

As an operating system for teams of any size, there is a huge upside to bringing in the various tools one would use on a daily basis into one place.

Being able to leverage /commands, Webhooks, and bots will enable new levels of productivity and ultimately drive business outcomes.

I will have a post soon on how to build these integrations to Slack.

The next bots I make will be with Microsoft botbuilder and Azure.

OAuth

serialize JSON, deserialize.

Callbacks

ICO’S and CryptoArbitrage

There has been a recent increase in the number of Initial Coin Offerings.

Lisk was a solid one. Despite the DDOS on the web wallet at launch, overall the coin has given strong returns, has gotten some great backing, and a has accumulated a relatively high market capitalization.

There have been a few other ones ICOs recently that I have not participated in. The big thing here is your looking at the the tech, the team, are devs going to build on the platform, what is the main differentiator, what exchanges are going to list it and last but definitely not least; follow the whales and traders on Twitter.

There is no question whether or not you can profit off Alts, you’re hedging a quick come up versus a platform and community that contributes to growth and continued innovation.

Don’t Just Hold

From an immediate coin flipping for profit point of view I would make sure that you have a few different mediums you could use to exchange the altcoin into BTC in a relatively fast way, within at least an hour. Confirmation times and amounts do vary by exchange and by the level of identity verification you have on the exchange but ultimately you want to make sure that if you are going to be investing in an alt that you know that it can be converted back into Bitcoin with out jumping through too many hoops.

When making an exchange in the crypto world it comes down to liquidity and security. If you want to you can completely trade via your phone, log into your various wallets via web browsers, and refresh and count blocks until your money has moved. Not really recommended for various security reasons but it does work.On the flip side you can get a device for an offline wallet or create, print, and send a multisig paperwallet.

Just a side note I would make sure when trading that you send a little bit first to an address verify it got there and then send the rest, just good practice. On the flip side if you are cashing out from bitcoin to a bank account make sure that the card / account your are withdrawing the money to is not closed or inactive.

Definitely keep an eye on:

coinmarketcap.com

WhaleClub, twitter feeds

check what time it is in China, NY, and SF.

On the Protocol

I often forget that the code that operates all of this can be directly interfaced with. Actually sending the raw transaction data.

Actually piecing together EVM assembly.

Review the code of the protocol. In a sense if you find a bug the bounty could be millions.

On Nodes

The number of nodes that keep a copy of the blockchain needs to be increased. This also means that the number of nodes running the same version of a protocol needs to be increased as well. A network of Raspberry Pis can create a interactable global digital layer if you know how to directly interface with the Bitcoin Protocol or a high level level language that does so.

I don’t think that Ethereum should soft fork or hard fork, disclaimer: did not throw DAOn.

Conclusion

Overall I think that there is a bigger trend in play that is the same way that everyone learned typing, cryptography will be the same way. Everyone will be learning / using cryptography.

Think about that you have this entirely new layer that not that much has been built on yet.
Look around, nothing really is running on the blockchain yet.
Think about what the Internet as a communication layer between people looked like.
What if cars ran on a P2P blockchain mesh network. Each stored a copy of the blockchain.
Would it make sense for cars to be connected via a blockchain layer vs an Internet layer?
Or better yet is a easier for to achieve the outcome by calling directly it from a blockchain?

 

More Research on:

Seg Witness

OP Return

Recursive Bots and NLP

Questions:

A big question was whether or not Bitcoin was going to be the first or the last cryptocurrency. It’s definitely not the last, but will the alts stick?

Which of the big 5 tech companies will make the first major Bitcoin acquisition?

 

MicroSaas

This post is from my time at the Consensus 2016 Hackathon a few months ago.

The consensus from the 2016 Hackathon was that smart contracts and decentralized applications will drive blockchain innovation and businesses into the future.

This year’s hackathon was held in the heart of Times Square at Microsoft’s Technology Center. I would say the event had about 4x as many devs compared to the hackathon last September. Out of the 25 different teams that presented on Sunday, about 15-20 were built on Ethereum; a huge increase from the 3 of 15 teams at last year’s hackathon. A few of the applications including the winning one, Decentralized Energy Utility, were built using Hyperledger on IBM’s Cloud and Tierion was used by several teams as well to embed data at scale into the blockchain.

Though the majority of the focus from a development standpoint was not focused on the Bitcoin blockchain, there were exciting  announcements by 21 around the Machine-Payable web and Bitcoin as the 3rd layer to the Internet. They have now open sourced the 21 libraries which effectively could make any computer a Bitcoin computer. This could spur a whole new set of financial innovation webs with different P2P escrow and lending models, micropayments and connected blockchain technology stacks.

Another huge launch was the Bitcoin Market Open Bazaar. This is a next generation open market built on Bitcoin. This is the first of many of these types of markets and platforms or even business models that will be completely recreated using blockchain technology. In order to support these types of new business there needs to be a scalable backend .

One of the biggest takeaways from the hackathon was that Cloud platforms such as Microsoft Azure, IBM Cloud and AWS are partnering with various Smart Contract and blockchain companies to build consortiums and spark blockchain innovation. This could be by listing the app on the platform, running POCs or sponsoring / hosting hackathons.

These huge cloud companies have started a chains race to attract the best developers and the newest most innovation companies in an effort to “make blockchain real”. By leveraging the cloud infrastructure of these different platforms, blockchain applications can be rapidly deployed and scale. With this notion in mind, I knew going into the Hackathon the I wanted to build using the Azure platform.

We built MicroSaas using Blockapps, the best-in-class blockchain application platform that enables developers to quickly build and scale applications on Microsoft Azure.

So what is MicroSaas?

MicroSaas is a enterprise software platform and marketplace to aggregate micro-consumable APIs across multiple cloud software vendors and service providers. Through Ethereum Smart Contracts, we enable vendors to be paid on a per transaction basis in real time as API calls are made by users. As the calls are made by the user, ether is deducted from the smart contract and paid to the vendor. If the user wants to switch vendors or do some other business function, they can buy a different contract from the market.

This new model frees users from the Per-User-Per-Month SaaS model, provides a verifiable proof of vendor service level, and it enables early stage startups in developing markets to access these critical SaaS functions. The platform also allows users to switch vendors on the fly depending on the use case, performance demands, or cost.

MicroSaaS is the name of new age of enterprise computing; it enables Business-to-Business micropayments on a global decentralized network facilitating value transfer and state transition for SMBs. Businesses around the globe will grow on the MicroSaaS platform. The traditional model for enterprise SaaS software will continue to thrive at the commercial and enterprise level but MicroSaas enables new markets and businesses where a per user per month model is not feasible to grow the business.

Instead these businesses will use micropayments to make API calls embedded within JavaScript components running the commands that drive business growth; creating a contact in a database, sending an eSignature, appending a general ledger.

MicroSaas was the winner of the Microsoft’s hackathon award; 3 years of full access to software, services, support and $750 a month of credits to build on the Azure platform via the Micosoft Bizspark program.

This is the beginning of entire new business platform built on the world’s first decentralized virtual machine. We use Smart Contracts in Solidity to store the variable state and functions of traditional objects or entities in cloud business platforms such as Account’s, Opportunities, etc.  This completely new transaction and payment model also enables other software vendors to build their businesses with Ethereum smart contracts creating an entirely new range of decentralized software applications.

It enables new forms of data verification and automation using cryptographic hash functions at each stage of the revenue driving business process.

Companies can now operate under the assumption that both parties have cryptographic representation of every deterministic property of a process. The price of the API, the outcomes of the transaction, are completely based on met or unmet inputs that are cryptographically locked into smart contracts and active on the Ethereum blockchain. The amount of ether it is going to cost to deploy the contract plus the charge for using the SaaS application can be set in the properties and shared as fact in the state of the abstract virtual computer.

This is a revolutionary concept. Shared state, distributed consensus, validity; all properties derived from Bitcoin now applied to the enterprise software world.

Individual software vendors, system integrators, and partners will leverage this technology with their customers creating an immutable history of every transaction made between the service providers.

Check out MicroSaas on Devpost.

 

Solidity and the Ethereum Virtual Machine

Welcome to the first decentralized global computational machine.

Over the past couple weeks I have been reading the Homestead release notes, the Solidity Documentation, watching youtube videos about Ethereum; really just an all out effort on trying to understand what this protocol is and why it is a technological successor to Bitcoin. In trying to explain it to others(or even write about it on here) I come to the notion that it is:

A global cryptographic, decentralized, immutable, permissionless world computer.

And in relation to the protocols of that which it is built on.

Internet = Communications

Bitcoin = Money

Ethereum = Computation

Without the Internet Bitcoin could have never existed and without Bitcoin, Ethereum could have never existed.

Now that’s a bold claim but I’m willing to make in that I truly believe that the predecessor technology has enabled this new paradigm in decentralized computing.

Bitcoin has and will continue to enable an unimaginable number of new and disruptive applications which will impact a number of verticals. I use my Shift card every day, wake up and check the price with an eye half open, and I anticipate my full attention will be back as we approach The Halvening. But right now, I want to learn how to write Smart Contracts in the Solidity programming language. I want to know how these contracts are compiled onto the Ethereum Virtual Machine (EVM). And how this is powering the next generation of peer-to-peer technology.

Installation and Setup

Download the latest Ethereum Wallet

Install Mix IDE, the IDE for authoring Smart Contracts using the High Level Language Solidity.

Program Solidity contracts on Visual Studio

You can also use the Online Compiler

The Ethereum Computer

The EVM is stack-based execution environment that uses Smart Contracts (similar to object-oriented classes) and HTML, CSS, and JavaScript to create dApps. When you are running a decentralized application (dApp), every instruction is executed on every node of the network. This means the operands for the instructions are taken from the stack, and it is also where the results are added. This is the low level assembly code of the EVM and the resulting flow-control functions that can be found in the Ethereum Yellow Paper. Items are pushed to the Stack and can be manipulated using POP (remove top item from the stack), SWAP (Swap item order on the stack / Limit of 16 elements), and DUP (copy and order new item on top of the stack).

Memory and Calldata

The stack also extends Memory and Calldata to be used in during program execution. Memory is an expandable byte-array used to store data during program execution. It can be accessed using the MSTORE and MLOAD instructions. Calldata is a byte-array, just like memory, but it is read-only. It contains the data from the transaction that triggered the code execution in the Contract.

Storage

Storage is a map used for fields in contracts. A contract can neither write nor read any storage other that its own. Essentially it is permanently storing the state variables within the contract.

Elements of the Ethereum Smart Contract

Contracts in Solidity are similar to classes in object-oriented languages. Each contract can contain declarations of:

  • State Variables
  • Functions
  • Function Modifiers
  • Events
  • Structs Types
  • Enum Types

with Parameters of:

  • The gas-price I want to pay (gasPrice).
  • The maximum amount of gas that may be spent (gas).
  • The amount of ether I want to transfer (value).
  • My account address (from).
  • The target account address (to).
  • The nonce (nonce).
  • The transaction data (data).

A smart contract’s code resides in a Contract Account. It is unalterable once deployed.

Accounts in Ethereum

There are two kinds of accounts on the Ethereum network: Externally Owned Accounts (Public-Private Key) and Contract Accounts.

Externally Owned Account (EOAs): an account controlled by a private key, and if you own the private key associated with the EOA you have the ability to send ether and messages from it.

  • Can have an Ether balance.
  • Can send transactions.
  • Are controlled by private keys.
  • Has no code.

Contract Accounts (CA): an account that has its own code, and is controlled by code.

  • Can have an Ether balance.
  • Can send transactions.
  • Can send messages.
  • Contracts are controlled by their contract code.
  • Only send transactions in response to other transactions that they have received. Therefore, all action on the Ethereum blockchain is set in motion by transactions fired from Externally Owned Accounts.
  • Every time a contract account receives a transaction its code activates, allowing it to read and write to internal storage and send other transactions/messages or create contracts.

EOA0 —-Transaction–> CA1 = Activate Code in CA1

CA1 —– Messages —> CA2, CA3, CA4= Perform functions in CA2, CA3, CA4

EOA1 —– Transaction —-> EOA2 = Send Ether EOA2

Ether

Ether, the currency used in Ethereum, is exchanged for computation on the platform. Gas is the name for the execution fee for every operation made on an Ethereum blockchain. Its price is expressed in ether and it’s decided by the miners, which can refuse to process transaction with less than a certain gas price. To get gas you simply need to add ether to your account. The Ethereum client automatically converts Ether to gas and gas to Ether when transactions are processed.

solid

When a transaction is sent from an EOA to a CA, it is sent with input code and Ether. The input code and ether is then processed by the Contract Account, thereby activating itself and thus executes its code. A CA can then send a message out to other (CA) contracts.The contracts are essentially talking and passing messages between themselves, in this way, sending a message is exactly like calling a function. This could produce another smart contract, send Ether to another address, register a vote of confidence, open a door to a house; virtually any sort of call to or update to the state of the decentralized network.

The total cost of a transaction is based on 2 factors:

  • gasUsed is the total gas that is consumed by the transaction
  • gasPrice price (in ether) of one unit of gas specified in the transaction

Total cost = gasUsed * gasPrice

An EOA can also send a transaction to another EOA and nothing happens accept transfer some Ether (P2P payment or ether).

Solidity

Visit the Solidity website to see example Smart Contracts and write and edit them within your wallet. You will be able to use Electron by Shapeshift to deposit bitcoin in exchange for Ether so you pay the mining fee and begin deploying your first smart contracts.

Start with the following three example smart contracts.

Create a cryptocurrency

Crowdfund your idea

Create a DAO

A new block is created every 15 seconds in Ethereum. Essentially you are sending binary data to invoke state transition rules through EVM bytecode at the assembly level thus updating the distributed state of the blockchain; AKA deploying your Smart Contract.

Mining Ether = Securing the Network = Verifying Computation on the Global Computer

Next: 3 RaspPi3’s, 32GB SD cards each a running the Ethereum computer (Web3.0, next-generation peer-to-peer technology platform) running on each…

Final Thoughts

Watch Ethereum for Dummies – Dr. Gavin Wood

A global cryptographic, decentralized, immutable, permissionless world computer.

Internet = Communications

Bitcoin = Finance

Etheruem = Computation

https://gateway.ipfs.io/ipfs/QmSbS6tk4GG4k2yEPWaYXBZquUxV1uxjmMsQyZTbM5Duyk

UPDATE:

This thing is AWESOME! I have been deploying contracts, sending transactions, and it’s all (near) real time. I can create a couple wallets and a couple cryptocurrencies and exchange them back and forth all confirming within 12 confirmations < a minute or 2. It’s pretty wild to keep the network stats up on on one screen the Wallet on the other and see them contracts confirm. Working on the front end now, possibly Salesforce integration + React.

Sources:

Ethereum White Paper

Ethereum Yellow Paper

Ethereum.Org

https://media.readthedocs.org/pdf/ethereum-homestead/latest/ethereum-homestead.pdf                 

https://media.readthedocs.org/pdf/solidity/latest/solidity.pdf

https://www.ethereum.org/assets

https://github.com/androlo/solidity-workshop

https://ethstats.net/

The Rise of Ethereum

The decentralized nature of cryptocurrencies are their biggest strength and their biggest weakness.

Often this is the case with something that completely disrupts the status-quo. The fact that decentralized currencies are open source also creates a unique situation where that which is the best given path or fork in the long run must be agreed upon and adopted by all (or a majority of miners in this case). However, when the consensus is not achieved at the level of those who truly are driving the development, alternatives rise. This is the case with the current rise of the Ethereum platform and the current value of Ether. In terms of the number of Dapps emerging, the amount of R&D investment at the enterprise level (IBM, Azure), and of course the current rise in Coin value; Ethereum is quickly becoming the more robust, more promising, and ultimately the more intriguing blockchain for developers, investors, traders, and anyone who has seen the evolution of blockchain technology and cryptocurrencies.

Does this mean that Bitcoin is done? Absolutely not. Bitcoin is still in it’s infancy and leads the pack in mining power, market cap, investment, startups, and overall global interest. The scalability issue is one which overall means that the network is working, in an unprecedented way it is really the first instance of a decentralized global consensus protocol. The question is not how do we mitigate risk with as some will say changing the path of a couple billion dollar plane inflight, but instead, how do we make Bitcoin, the global decentralized currency of the world, work. How do we enable people to build on the platform, host a node that’s relaying transactions and strengthening the network, run a miner that’s off the energy grid.

This could mean as some have proposed increase a block size from 1MB to 2MB to address an immediate issue. Or increase the blocksize in tiers over time so that the network scales. But I think the block size debate is missing the point. We need to think more in terms of off chain solutions.Examples such as, Tierion, embedding the Merkle Root of data into the blockchain, or Payment Channels and the Lightning Network facilitating offchain transactions between two parties with only an open and close broadcasted to the network, 21 building the ubiquitous machine payment layer and true micropayments ecosystem; these are types of companies and solutions that I believe will make Bitcoin the cryptocurrency of the world, work and serve as self-evident.

Again, that does not mean that other blockchains and more platforms like Ethereum will not emerge (Lisk). It is now very evident that private blockchains, within institutions will definitely serve a place in the years to come. In addition to this, sidechains will also serve to make the entire cryptocurrency ecosystem more robust. I truly believe in the statement that Intranet (oracle installation) vs Internet is an anology for blockchains(R3) vs The Blockchain. When you have an open protocol that is globally accessible, there is an unlimited and unimaginable number of potential future applications that will arise. This does not mean that internal blockchains developed by the existing financial ecosystem will not create new innovative processes and solve enterprise problems. But, the intrinsic value in having an open protocol for the world to build on especially when it comes to fintech and the tipping point we are at with the developing world onboarding into the digital age, I believe The Blockchain truly is more promising. I still am betting long on Bitcoin and I do hope that some sort of consensus is achieved amongst the core developers in order to enable people around the world to embrace this technology. Until that happens, I am buying more Ether.

Check out the new Ethereum Homestead Release

https://www.ethereum.org/token

https://www.ethereum.org/crowdsale

https://www.ethereum.org/dao