Building your first BlockChain

As a software engineer, I’m fascinated with blockchain since early 2010 with Bitcoin technology.

Just with the technology not the money around it.

I’m not a big fan of gambling, and this article isn’t about making money with blockchain its about building your own blockchain technology.

If you are someone who likes coding in JavaScript, and would like to play around code to understand in general how to build a BlockChain… This tutorial for you.

First of all, it would be awesome to follow Savjee tutorials on how to build a tiny Javascript blockchain (Don’t worry, if you’re not a Javascript developer you can learn it quiet fast!)

Part 1: Creating a blockchain

Implementing a basic blockchain

Simple, but you will understand the basics! 
– Building a Block
– Building the chain
– Using the BlockChain
– Trying to manipulate it

Part 2: Implementing proof-of-work

Hardening the BlockChain 

Proof of work for hardening the security on the BlockChain

Part 3: Transactions-and-mining-reward

Adaptation and adding Mining rewards

– Adapting our Blockchain
– Mining blocks
– Balance of an address

After following the 3 tutorials you will be able to understand how to build a small blockchain.  It’s important to note, blockchain relies on peer-to-peer connections as BlockChain is a peer-to-peer system. This is not covered in this tutorial. However it is in the in dept specialisations you can get from Coursera or Udemy course.

Building Blockchain languages

Personally, I believe any general purpose programming language would allow you to build a blockchain, most importantly it all depending on the needs of your application.

For example: 

  • Javascript
  • Solidity
  • GoLang
  • Python
  • Kotlin/Java/Scala (JVM Languages)
  • C/C++
  • Simplicity

If it’s a fun project pick what you like, If you’re building an enterprise application than you would need to think of what type of Engineers your company has and pick the right fit for you. 

BlockChain use-cases?

Their are many compelling use cases for blockchain technology, personally i would love to see the Loyalty points on BlockChain!

My personal top blockchain use cases would be:
– Loyalty Programmes
– Healthcare
– Digital Identity
– Food chain
– Electoral systems

Learning further

Blockchain Specialisation
Blockchain Specialisation
Build a Blockchain in JavaScript

References
– https://www.savjee.be/2017/07/Writing-tiny-blockchain-in-JavaScript/

Scala is both object-oriented and functional (Took me a while to understand it)

Personally, I started programming in Scala in 2015… I did the Scala training on Coursera.

Guess what? at First I did not like Scala! I could not understand why I would want to implement all these complexity when I can use Java and Spring to solve all the problems… It turned out i was wrong.

To write functional Scala, you need to think functionally…  rather than thinking in Object Oriented Manner & translating those thoughts into Functional Paradigm.

My real Scala interest started not with Web Api’s, it started when i laid an interest on Spark. I wanted to build a clean, abstracted approach to Big Data & implement it with the best functional language! that’s when I started loving Scala.

Immutable Data easily leads to pure function and easily distributable code.

I came to the conclusion, when i want to write something in Scala… to do it with Pure Functions if i choose to use the functional paradigm. This allowed me to do some of the following:

  1. Pure functions have no side-effects
  2. Pure function calls to immutable data are often easy to reorder
  3. Pure function calls to immutable collections are often easy to parallelise

Use Expressions instead of statements.. Expressions Can be passed into a function. As expressions can be chained together in Scala.

Don’t Mix Java Statements with Scala expressions.

Unlike statements, expressions can be used to be specify arguments to a function. As Functions, a subtle point – Scala allows expressions to be used in place of functions.

It took me some time to get used to the idea.

Xamarin becomes the native cross-platform solution for C# and Java developers

Xamarin has announced its acquisition of RoboVM, a momentous step for both companies which means C# and Java developers need only look to a single development solution for native deployment across each of the major platforms.

The software has been a beloved tool for C# developers for some time as the only solution which enables native iOS and Android development. RoboVM offered the same ability to deploy Android and iOS applications natively, but for Java developers. Bringing the C# and Java languages together – the most used languages in enterprise development – provides a path to mobile for most developers.

Read more

Building flexible and high performance software with CQRS and Axon Framework

Many applications are built with the same architectural style: a layered architecture with (more often than not) an anaemic domain model. While easy to set up, this architectural style doesn’t help us deal with growing complexity or heavy non-functional requirements.

In this presentation, Allard will introduce CQRS (Command-Query Responsibility Segregation) and Axon Framework. CQRS is an architectural pattern that helps build scalable and maintainable software, by applying a few very simple, yet powerful, principles. Axon is a framework that simplifies the implementation of CQRS based architectures on the JVM.

Building flexible and high performance software with CQRS and Axon Framework – Allard Buijze from JavaZone on Vimeo.