Wildfly server provisioning elastic search integration

I'm interested and would like to evaluate the integration of Elasticsearch to hibernate-search. I'm using the Wildfly container, however, Wildfly's hibernate-search library is a bit outdated: 5.5.8. so I need to find a way to outdate the jars and that's what led me to WF's server-provisioning using feature pack which is well explained here https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#updating-wildfly-hibernatesearch-versions

As stated you need to add the lines below to your persistence.xml
<property name="jboss.as.jpa.providerModule" value="org.hibernate:5.3" />
<property name="wildfly.jpa.hibernate.search.module" value="org.hibernate.search.orm:5.10.3.Final" />

Then you need to create a file named server-provisioning.xml in your project's root folder:

<server-provisioning xmlns="urn:wildfly:server-provisioning:1.1" copy-module-artifacts="true">
<feature-packs>

<feature-pack
groupId="org.hibernate"
artifactId="hibernate-search-jbossmodules-orm"
version="5.10.3.Final"/>

<feature-pack groupId="org.hibernate"
artifactId="hibernate-search-jbossmodules-elasticsearch" version="5.10.3.Final" />

<feature-pack
groupId="org.wildfly"
artifactId="wildfly-feature-pack"
version="13.0.0.Final" />

</feature-packs>
</server-provisioning>
And finally in your pom.xml file add the plugin below:
<plugin>
<groupId>org.wildfly.build</groupId>
<artifactId>wildfly-server-provisioning-maven-plugin</artifactId>
<version>1.2.6.Final</version>
<executions>
<execution>
<id>server-provisioning</id>
<goals>
<goal>build</goal>
</goals>
<phase>compile</phase>
<configuration>
<config-file>server-provisioning.xml</config-file>
<server-name>wildfly-with-updated-hibernate-search</server-name>
</configuration>
</execution>
</executions>
</plugin>
It should create a new folder in your target's directory named wildfly-with-updated-hibernate-search. And you should re-configure this server for your needs: datasource, mail, cache, etc. Make sure that it contains the jar files inside modules folder. The setting above copy-module-artifacts="true" should do it, notice that in the hibernate-search documentation, this property is not initialized. Thus, I spent some hours how to obtain the jars (I even downloaded some :-)).
It works for a basic requirement, but I still found some errors though like:
Caused by: java.lang.NoClassDefFoundError: javax/persistence/TableGenerators
Which should be solved by adding:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>

But that does not solve the issue so I added the -Dee8.preview.mode=true parameter and that did the trick.

Well, you may just want to wait for the release of Wildfly14.

Changes for Elasticsearch

In your project dependency add:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-elasticsearch</artifactId>
<version>5.10.3.Final</version>
</dependency>

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.3</version>
</dependency>

Make some minor tweaks to persistence.xml
<property name="hibernate.search.default.indexmanager" value="elasticsearch" />
<property name="hibernate.search.default.elasticsearch.host" value="http://127.0.0.1:9200" />
<property name="hibernate.search.default.elasticsearch.index_schema_management_strategy" value="CREATE" />

Run elasticsearch in docker https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html. Make sure that the status of your elasticsearch server is green. See docker-compose.yml in the project mentioned below.

Run your application. You should be able to see logs in elasticsearch that verifieds the data posted.

You may want to check the complete code accessible at https://github.com/czetsuya/hibernate-search-demo. Switch to latest-hibernate-search branch.

Note:

  • There are 3 errors with the elasticsearch integration related to JSON.
  • If you want to try lucene, just modify the configuration in test-persistence.xml.


You may also want to check:

Run Wildfly and Postgresql in Docker

Docker is a great tool to simulate a development environment. Not only that but it also makes that environment portable by having a docker/docker-compose configuration file. And that is what this blog is all about.

We will launch a pre-configured docker environment. This environment is your typical web-app with database access. In addition to that, we will also include an image for logging, database, and keycloak in case we need an authentication server.

Let's go through the configuration files and start from the main docker compose config. This configuration is responsible for building and starting all our images in the correct order.

version: '3'
services:
postgres:
image: postgres:10
container_name: postgres
ports:
- "5432:5432"
environment:
- LC_ALL=C.UTF-8
- POSTGRES_DB=terawhars
- POSTGRES_USER=terawhars
- POSTGRES_PASSWORD=terawhars
- POSTGRES_PORT=5432
volumes:
- $PWD/input_files/import-postgres.sql:/docker-entrypoint-initdb.d/import-postgres.sql
- $PWD/output_files/postgres_data:/var/lib/postgresql/data
adminer:
image: adminer
container_name: adminer
depends_on:
- postgres
ports:
- 8081:8080
wildfly:
image: terawhars
container_name: wildfly
build: .
ports:
- "8080:8080"
- "9990:9990"
environment:
- DB_HOST=postgres
- DB_PORT=5432
- DB_NAME=terawhars
- DB_USER=terawhars
- DB_PASS=terawhars
- DS_NAME=TeraWHARSDS
- JNDI_NAME=java:jboss/datasources/TeraWHARSDS
depends_on:
- postgres
volumes:
- $PWD/output_files/logs:/opt/jboss/wildfly/standalone/log
- $PWD/output_files/terawharsdata:/opt/jboss/wildfly/terawharsdata
- jboss-conf:/opt/jboss/wildfly/standalone/configuration
keycloak:
image: jboss/keycloak:4.0.0.Final
container_name: keycloak
ports:
- "8083:8080"
environment:
- DB_VENDOR=POSTGRES
- DB_ADDR=postgres
- DB_DATABASE=terawhars
- DB_USER=terawhars
- DB_PASSWORD=terawhars
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
depends_on:
- postgres
weblogs:
image: opencell/alpine-tailon
container_name: tailon
depends_on:
- wildfly
ports:
- 8082:8080
volumes:
- $PWD/output_files/logs:/logs/
volumes:
jboss-conf: {}
This configuration installs Postgresql, Adminer, Tailon, Wildfly, Keycloak. For a more detailed instruction on what each field means, please consult the Docker documentation, we're not here to teach that.

Things to take note of:

  • You need to create the folder specified in the volumes. It will copy the files from docker container to your local machine. For docker to do that, you need to share your drive (Windows).
  • Don't use the same local port for different images.
  • Notice that we use a single database for Keycloak and the Web app/Wildfly, while we can use another image that allows multiple databases, it's easier this way. The downside is all the tables will be created on a single database for both Keycloak and our Web app.
Most of the image we use only requires minimal configuration like in Postgres, we only need to define the database configuration. It could become more complicated if we need to do replication, etc. But I think our example is enough for this tutorial. Now the image that requires some more fiddling is our web app since we need to configure the data source and download the war file.
FROM jboss/wildfly:13.0.0.Final

LABEL com.terawhars.version="0.0.1-snapshot"
LABEL author="Edward P. Legaspi"
LABEL email="czetsuya@gmail.com"
LABEL vendor1="TeraWHARS"
LABEL com.terawhars.release-date="2018-07-24"

# Set Postgresql env variables
ENV DB_HOST postgres
ENV DB_PORT 5432
ENV DB_NAME terawhars
ENV DB_USER terawhars
ENV DB_PASS terawhars

ENV DS_NAME TeraWHARSDS
ENV JNDI_NAME java:jboss/datasources/TeraWHARSDS

USER root

ADD https://jdbc.postgresql.org/download/postgresql-42.2.4.jar /tmp/postgresql-42.2.4.jar

WORKDIR /tmp
COPY input_files/wildfly-command.sh ./
COPY input_files/module-install.cli ./
RUN sed -i -e 's/\r$//' ./wildfly-command.sh
RUN chmod +x ./wildfly-command.sh
RUN ./wildfly-command.sh \
&& rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/

# Download and deploy the war file
ADD https://github.com/czetsuya/javaee6-docker-web/releases/download/1.0.0/javaee6-webapp.war $JBOSS_HOME/standalone/deployments

# Create Wildfly admin user
RUN $JBOSS_HOME/bin/add-user.sh admin admin --silent

# Set the default command to run on boot
# This will boot WildFly in the standalone mode and bind to all interface
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]

What it does:

  • Download PostgreSQL driver
  • Setup data source
  • Download the war file in Wildfly's deployment directory
  • Create a default admin user
  • Note that for this particular example, we are using the standalone.xml WF configuration
Some other things to take note:
  • For PostgreSQL, the image we specified an SQL file that will be imported on startup. This will initialize our database.
  • We use a .env file to define the PWD variable that is not present in Windows.
To see how it works check out the complete code from https://github.com/czetsuya/Docker-Demo and then run:
>docker-compose up --build

It will take some time during the first run as it will download all the images locally first.

References:
I accept customization job for a minimum fee of $50, so don't hesitate to contact me when your lazy to try something :-)

Technical Co-Founder in the Philippines

Hi.

I'm Edward. I'm currently working as an Independent IT Consultant / Java Solutions Architect / Entrepreneur who has experience in several domains like billing, e-commerce, big data analytics, sales, recruiting, marketing, etc.

I have enough experience to boot-up a project from scratch using the JavaEE stack, Angular and Amazon Services. My experience covers the complete software development lifecycle from conception, design, development, testing, deployment, testing, maintenance and marketing.

Needless to say, this post means that I'm open to becoming your co-founder, investing sweat-equity for a certain amount of share in your company/startup.

I also have some ideas and startup on my own and I'm looking for people with skills in marketing, and writing.

PS: Feel free to contact me for technical advice, I'll be glad to help. Just don't expect an instant answer as we are all busy :-)

--

* Loves working with open source technologies
* Java Architect who currently specialized in Billing Domain
* Software Architect who can develop a system from scratch and knows all the steps in software development life cycle
* 10+ years experience in engineering and development working primarily on Cloud and Mobile Systems
* Experienced Team / Tech Lead with the ability to lead and motivate teammates
* With strong analytical and problem-solving skills using Object Oriented Programming
* Able to work effectively in a remote and cross-cultural environment individually and within a team

Skills:
Software / Database Architecture and Development, Scrum master, Project management, Business development

Techs:
Microservices (Spring Cloud), JPA / Hibernate, JSF / REST / SOAP API, Maven, GIT, Liquibase, Jenkins, Docker

Programming Languages:
Java(JavaEE, Spring), ASP.NET(C#)

Databases:
Postgresql, MSSqlServer, MySQL, Oracle

Frontend Frameworks:
Primefaces, Angular5~, ReactJS

Platforms:
JBOSS / Wildfly, JavaEE, Amazon Services

Operating Systems:
Windows, Ubuntu, Red Hat, OS X
Familiar with development in Ubuntu and experience in Linux/Ubuntu cloud deployment

You may also check my LinkedIn profile at https://www.linkedin.com/in/czetsuya.

Don't hesitate to contact me if you're looking for a co-founder or a technical consultant. Email: czetsuya@gmail.com.

Enable HTTPS on Wordpress in Amazon

This tutorial will help us install Wordpress on Amazon using a Wordpress image provided by Bitnami. We will also enable HTTPS by using an Amazon's elastic load balancer and a WordPress plugin.

Steps

  1. Create an EC2 instance and install this Wordpress image from Bitnami: https://aws.amazon.com/marketplace/pp/B00NN8Y43U.
  2. Install Easy Https Redirection plugin on Wordpress - https://wordpress.org/plugins/https-redirection/
  3. Configure Elastic Load Balancing With SSL And AWS Certificate Manager For Bitnami Applications On AWS - https://docs.bitnami.com/aws/how-to/configure-elb-ssl-aws/
    These lines should be added before WP_HOME and WP_SITEURL:
    if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
    $_SERVER['HTTPS']='on';
  4. At this stage, your URL should both be accessible via HTTP and HTTPS, but we want to force a redirect to HTTPS so we need to do this final step.
    1. Reopen ~/apps/wordpress/conf/httpd-prefix.conf and add the following lines:
      RewriteCond %{HTTPS} !=on
      RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
      RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  5. And finally, don't forget to restart the apache server: /opt/bitnami/ctlscript.sh restart apache

The final version of the file should look like below. Take note of the commented lines, those are the originals.
SetEnvIf x-forwarded-proto https HTTPS=on

# App url moved to root
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
#Alias /wordpress/ "/opt/bitnami/apps/wordpress/htdocs/"
#Alias /wordpress "/opt/bitnami/apps/wordpress/htdocs"

RewriteEngine On
#RewriteCond "%{HTTP_HOST}" ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
#RewriteRule "^/?(.*)" "%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1" [L,R=302,NE]

#RewriteCond %{HTTPS} !=on
#RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"

Video Tutorial: https://www.youtube.com/watch?v=WQwvwiPZlZE

What Is EOS?

Just another crypto coin, Right?
This was what I thought when I first learned about EOS in January of this year. Now that the EOS mainchain is launched and I have been able to play around with the EOS ecosystem, what I discovered is totally mind blowing.

What is an EOS account?

When you open up your EOS wallet and look at your account, this is what you see.


The components in your account are CPU, Network and Ram! This is a computer!! Your account is describing the power and resources your computer has. The amount of CPU ( EOS staked), the amount of bandwidth or network (EOS staked) and amount of RAM available. The smallest "account computer" possible is 0.1 EOS of CPU, 0.1 EOS of Bandwidth and about 4 Kb of Ram. This represent the minimum share in the power of the main "EOS computer" run by the Block Producers. Like a computer the RAM is where all the critical data for instant access by the "EOS computer" is stored.

Think of the "EOS computer" as a computer in the cloud and all EOS accounts are just different size computers that can use the resources of this "computer in the cloud" depending on the amount of EOS staked. Sending tokens, broadcasting, buying ram, running Dapps, voting and much more.

This is very different from what we have been used to thus far. With Bitcoin when we send a transaction say sending 0.01 BTC to another account we pay a fee of hopefully 0.0001 BTC which goes to the miner and the recipient gets 0.0099 BTC. ( Ethereum works in much the same way.) In EOS if we send 0.1 EOS the recipient receives the full amount of 0.1 EOS. The transaction fee is paid by the network. For the user this is a "free" transaction. What stops the network from being spammed is that the amount of resources your " account computer" has only allows you to make a finite number of transactions within a 24 hour period after which the capacity of the "account computer" is depleted and will have to be "recharged", before it can be used again. This is an ingenious solution!

It cost a minimum of 0.2 EOS to open an account. We can see that if 1 EOS is worth say $1000 one day, it would cost $200 to open up an account! This will severely affect the number of users right? Wrong! You only need an EOS account if you want to use the EOS blockchain, hodling, holding voting and moving EOS tokens, running your Dapps. 

Remember that EOS is a computer, and as a developer of a Dapp (ono) you will need to stake a certain amount of EOS to have access to CPU, Bandwidth and Ram on the EOS computer for your users to make transactions. The more popular and successful your Dapp the more resources you will need. Your users will sign up to your Dapp and they will use the services you offer without the need to own any EOS tokens or open up an EOS account. You can even reward your users with your own native tokens (ONO). This runs separate from the EOS blockchain. If the project fails you simply sells your EOS back into the market! This is like putting up capital to start a business and if the business fails you simply resell the assets to recoup your capital. Now, this is a model for mass adoption!

Expect to see a hosts of Dapps similar to Facebook, Twitter, Telegram all running on the EOS platform. Their users can singup to use these applications and they do not need to hold any EOS tokens or have an EOS account.

To drive the point home. Remember the game of space invaders? 


You can run this program on your little Z80, Atari, Commodore or Apple computer. It uses the CPU, bandwidth and Ram resources on your little computer. Well you can run this program on your little "Eos Account" computer. All the moves will actually be recorded on the EOS blockchain in real time.

Unlike Bitcoin, transactions (moves) on the EOS blockchain are extremely fast. Send a token and by the time you refresh your page the transaction have already confirmed on the blockchain. This is so incredible that you can run Virtual Reality applications on the EOS blockchain. The mind really boggles on what this EOS computer is really capable of. Think decentralised stock exchanges, micro transactions and instant payment systems.

So what is EOS and where is EOS headed?
The inventor of EOS is Dan Larimer. Prior to EOS he has already cut his teeth on Bitshares ( a decentralised exchange ) and Steemit ( a decentralised social media platform). Steemit and Bitshares currently occupy the top two spots in number of transactions processed as tracked on Blocktivity. These two projects are running on their own blockchains. Since then, Dan Larimer has announced that he will soon release Steemit 2.0 and Bitshares 2.0 on the EOS blockchain! and on top of this he will also introduce a stable coin.

We don't know what Steemit 2.0 and Bitshares 2.0 will be like but we can be very sure that they will be huge improvements over their previous incarnations having learned from the experience. A stable coin too! like Tether? The basis of a stable coin is the asset backing ratio. Tether boast a 1:1 ratio with USD but they have difficulty proving this. BitUSD on Bitshares is said to have a 3:1 asset backing. How will this new stable coin be received?

This is what is so incredible about EOS. Everything is different and new, and yet, so far, it all works!  Even before any Dapp is launched on the platform there is already a marketplace for Ram and soon Account Names too. Only stands to reason that a market for renting EOS tokens will develop in the near future. My conclusion is that the EOS as a platform will dominate the crypto space, and EOS as a token will be worth very much more than it is now.

                                _____________________________________________

Proxy account for block producer voting - investingwad

EOS is a blockchain, a community and a society all in one. A society is only as good as the people who run the system and in EOS these are the block producers.

It is so refreshing to see that in EOS, the people we elect to rule over us actually have to be nice to us. We elect our block producers with our votes Daily. It is crucial that we counter the influence of whales who may be block producers themselves and who will vote in their own interest. 

We need to expressly know the objectives, motives and actions of these block producers.
Most users will not have the time or expertise to question, query and research these block producers and hold their feet to the fire, so to speak. They can however delegate their vote to proxies who share the same interest as them, to vote on their behalf.

I think that investingwad will vote with our interest at heart.

You can set your proxy with the Greymass wallet. Or from their Github account.

                                 _____________________________________________


A point to note.
The downside is that if EOS are lost, the resources they represents are also lost to the network and cannot be used by anybody else. In Bitcoin, when coins are lost, they have no effect on the performance of the platform. This is why EOS has a policy or proposal to "recover lost resources" after 3 years of inactivity. This is like saying that every EOS account has a temporary 3 year lease on the resources it controls and if they are never used then these resources can be reclaimed by the community. Contentious, but we can agree that these resources are precious and should not be lost to the community. There may be amendments to this policy as everything in EOS can be changed, if the community agrees by way of referendum.




The Trust Machine: The Story of Bitcoin

I came across a Bitcoin explainer the other day called The Trust Machine: The Story of Bitcoin.  I thought it was very thoughtful presentation and I encourage anyone who's interested in Bitcoin to view it (less than 25 minutes). What I offer below are questions and comments that came to my mind as I listened to the narrative. I'd recommend listening to the entire presentation first and then reading my comments below. The bold numbers represent the corresponding time in the video to which the remark pertains.
1:04 Before Bitcoin, the only way to make electronic payments over the Internet was via your bank. However, over 2 billion people in the world do not have access to a bank account.  
Sure, but why is Bitcoin the best solution for this problem? Nobody was connected to their bank accounts electronically prior to the Internet. The solution was to get people connected. Most people are now connected. Why is the solution not to remove the barriers that prevent the rest from getting connected?
1:35 And even those who do have a bank account aren't exactly free to send money to anyone anywhere online (Fidel Castro graphic). If two governments don't get along, money simply doesn't flow across their borders. Digital cash would connect people economically in a way never before possible.
First, just to be clear, electronic money does not "flow" across borders. Electronic money lives in a ledger. The question is who gets to use the ledger. Not being able to "send money" from the U.S. to Cuba means that Cubans (living in Cuba) are not permitted access to the ledgers created by U.S. banks and Americans are not permitted access to the ledgers created by Cuban banks. There is a communication barrier.

Second, given such a communication barrier, it's hard to see how digital cash would help connect people economically--by which I mean that if money is "flowing" in one direction, goods are flowing in the other. How does digital money help lift a trade embargo? It does not. Digital money could be used, however, to facilitate international remittances.
1.59 Antonopolous remarks that Bitcoin can do for banking and finance what cellphone technology did for communications and empower billions of people around the world. Brito remarks that Bitcoin for the first time makes possible P2P transactions without the aid of intermediary.
I have a lot of respect for both these guys. But I'm still not sure how Bitcoin (or blockchain technology more generally) is supposed to facilitate banking and finance (I elaborate here). As for the contention that Bitcoin does not need a third party to clear transactions, this is, strictly speaking, not true. The third party in Bitcoin consists of the miners--no P2P transaction can be cleared without their help. So, no, Bitcoin is not "just like cash" (which truly does not depend on any 3rd party).
5.16 Within a small trusted group like a family, you really don't need money. Money actually starts as a shared memory.
I'm really happy to see this key insight--known to anthropologists and economists for a long time--is starting to catch on. See: Why the blockchain should be familiar to you.
5.40 But this kind of written money works only if we trust the people we are making promises with. 
Well, this is not exactly correct. In fact, memory (e.g., credit histories) are a part of the solution to the lack of trust problem. Reputations rely on memory. And we expect cooperative play from noncooperative agents concerned about protecting their reputations. The need for conventional money arises because memory (the shared communal ledger) does not scale given the limitations of a network of human brains communicating verbally. Money permits anonymous agents to transact and can therefore scale beyond local confines.  An anonymous person is someone for which we have no personal history. But we're still willing to grant them a favor if they show us the money. Money is a substitute for the missing record-keeping technology. (For more detailed and technical explanation, see here.)
11.50 This leads us back to the problem we face online. The Internet connects people globally, yet people are largely restricted to using local currencies. Who is going to make the digital "tickets" for the Internet? And who will we trust to be in charge of them? 
This is clearly leading up to the suggestion that Bitcoin is a natural global currency. The idea of a single global currency has a lot of appeal. The closest thing to this we have today is the U.S. dollar. But because not everyone has USD accounts, there are the usual inconveniences and inefficiencies associated with uncertain nominal exchange rates. How big of a deal is this? I do not know, but I suspect that among all the factors that contribute to the advancement of material living standards, having a common currency is not at the top of the list. We might get some handle on this issue by asking how much better off are the people of the EMU since the adoption of the Euro? (See: How Much Does the EMU Benefit Trade?)
12.22 The key to Bitcoin is the way Satoshi flips the traditional model of trust on its head. Instead of letting a bank control the ledger, you share it with everyone. 
This is subtly (and importantly) misleading. Control of a ledger does not map simply into whether it is shared or not. For any ledger, read and write privileges need to be separately specified. It is true that in today's banking system, banks possess both read and write privileges and that they limit the read privilege severely (you can only look at the account balances in your account and no one else's). Note that there is no technological reason for why conventional bank ledgers cannot be made open for public viewing. Doing so would effectively make the ledger "shared" and "distributed" (if it could be freely copied). That this does not happen reflects the preferences of bank customers. We don't want the world having full viewing privileges over our personal bank accounts. But there is nothing right now with current technology that prevents people from publishing their diary online (rendering is shared and distributed).
12.45 This shared file model is more secure than any bank ledger could ever hope to be.
If every student in a classroom can see what the school teacher scribbles on the blackboard, then it'll be very hard for the teacher to later claim she did not write it. Say something stupid in public and you'll never erase the public record. This is the power of a shared ledger. But banks already have the power to share their ledgers. Their bank customers do not want them to. Perhaps bank customers wouldn't mind so much if their accounts were anonymous (like the old Swiss bank accounts). I'm sure that Paypal would love to offer Swiss-style bank accounts. If it was legal. Which it is not. But if this is what people truly want, then why not have them lobby their respective governments to reinstate the anonymous bank account? Bitcoin is a "solution" in this regard only insofar it circumvents the law (which it's very good at doing, since it's a decentralized autonomous organization).
12.50 Bitcoin is a piece of shared software that everyone runs together instead of having one trusted computer do it (Graphic shows bank with one copy of ledger and Bitcoin with multiple copies). 
First, there is nothing that prevents a bank from keeping multiple backup copies of its ledger (Fedwire has multiple back up computers, for example).  Second, I'm not sure what it means for "everyone to run a shared software together." I presume it means that the agents or agencies that have volunteered to operate as miners collectively agree to follow the protocols laid out in a particular version of the software. Sure, and banks within the banking system collectively agree to abide by banking regulations. The software evolves over time in accordance with the wishes of the broader community--miners can "vote" on which version of the software to use--code patches that benefit the community are adopted. Banking regulations also evolve over time in accordance with the wishes of the broader community via choices made by elected representatives.
13.57 There is no center to the network, no central authority, no concentration of power. It's exactly how ant and bee colonies function.
To say that there's absolutely no concentration of power is overstating things. The core developers likely have more say than others. Those agencies that have invested heavily in mining equipment have more say than others. Concentration of mining power is a concern. (Miners themselves have avoided overly concentrating power for fear of destroying the franchise value. This is, ironically, the same force we expect to discipline conventional banks.) And as for ant and bee colonies, they have hierarchical structures, including a queen. From outer space, humanity looks like an ant colony. So yes, Bitcoin functions just like an ant colony--governed by protocols--as does everything else.
14.44 Description of blockchain. 
This is done very nicely. There is something beautiful about the blockchain, to be sure. And while I have some quibbles with what is said in this section, let me step back and comment on the broader picture.

The key innovation of blockchain is in terms of how the write privilege is governed (in particular, the read privilege is not the innovative part; see my discussion above). The conventional solution to the scaling problem is to delegate the write privilege to a reputable agency (which itself is governed by the laws of society). Judging by the way world commerce has expanded over the centuries, the conventional model has been a huge success.

Of course, the conventional model is not perfect. It has been and continues to be a work in progress. Why not concentrate our efforts on continuing to improve this conventional and successful model? As far as I can tell, this is what corporate "blockchain" solutions are offering (as part of the broader effort to improve information management systems more generally). They are not offering (again, as far as I can tell) bona fide "blockchain" solutions--they are offering "blockchain inspired" innovations in data management (for example, increased transparency and more extensive sharing of the ledger).

The spirit of Bitcoin is based on the more ancient model of collective recording-keeping via a communal consensus protocol. That this is now possible on a global scale is the work of genius (much the same way double-entry book-keeping was a stroke of genius).

But extending the write privilege communally comes at a cost. This is because individuals will always find it in their interest to rewrite history in a manner that benefits themselves at the expense of the broader community. How to guard against this? People somehow have to earn the right to write history, so to speak. The Bitcoin consensus protocol uses a Sybil control mechanism called Proof-of-Work (PoW) that dictates who earns the right to "vote" (i.e., who gets to add a given paragraph of script to an ever-growing novel).

Essentially, the write-privilege in consensus protocols have to be gamed. The question is whether the game in question generates good outcomes (where "good" is to be judged by network members). Bitcoin has shown us that consensus-based record-keeping on a large scale is feasible. But it is also terribly inefficient along many dimensions (note: I say this as a matter of fact, not as a matter of passing judgment since conventional banking systems are also terribly inefficient along many dimensions). There is the hope, however, that advances in the design of consensus algorithms will render consensus-based record-keeping more efficient. But the same hope exists for database management systems more generally.

And so, in true Darwinian fashion, we are witnessing a struggle between competing species. Will there be a clear winner in the end? Or, as is more likely in my view, will there be a peaceful (but still competitive and ever-evolving) coexistence?

Related Reading: Blockchain: What it is, What it does, and Why you probably don't need one.
My other musings on the subject available here in case you're interested.