• Social Networking Patterns - A Book about
  • Repetitive Structures in Social Networks

Social Networking Patterns

Introduction for the book Social Networking Patterns

Social Networking Patterns Introduction 

Welcome to the future. This book has formed through innovation processing and creative ideas, structures and building up new innovative services. 

Each chapter in this book has it's own source code that you can download, run and use for your own innovation processing and programming. The architecture in the source code is defined by the new set of ideas formed from the Microservice and component model way of working as a programmer. So we plan to go beyond Microservices and create a new platform architecture in the end. My history goes with 30 years of working and playing with computer programming languages. The first ones with BASIC GOTO sentences, Visual Basic, C64, Turbo Pascal, running an PcBoard BBS, Javascript in all it's obscure forms, Java etc. I vaguely remember of programming a Game of Life replica when I was around 10 years old with Turbo Pascal. New ideas are the key to this book... and so we continue.

 Patterns in Nature

It all begins with an interesting question: What are patterns? The explanation and exploration has continued for ages of civilizations. Different patterns can be found in nature, paintings, music, buildings, structures, space... the list goes on and on. In this book we are looking for patterns used in technology and more specifically in Social Networks. These patterns are the best practices used in different services and are widely used among these beautiful services. 

Let's get familiar with different kind of patterns found in nature. One of the most interesting patterns is described in the Stephen Wolfram's book A New Kind of Science. Stephen describes cellular automata rules as patterns that are found and based in nature. As you can see in the following illustration. 

Wolfram Alpha's Cellular Automata Rule 362

What do these patterns then mean? What is the ultimate question that these patterns could eventually answer? As we can see the simple rule can produce complex results. This same principle is applied to the John Conway's Game of Life rules. In the Game of Life the simple rules create complex environments. Stephen Hawking has also explained the foundations of life to be applied in a similar manner. With a simple set of rules that interact with it's environment. In nature where are all of these rules hidden? In a similar way we can look for patterns in nature by looking at ourselves, humans. The brain's neurons interact in a similar way as described before. They have a set of rules stored and they interact with the environment. Each neuron is connected to other neurons and holds a set of rules. This application is multidimensional as the cellular automata is two dimensional.

Read full chapter

Content marking pattern summary

  • Talk about Coding

How to build and run a backend API service and connect a mobile client to it

Content marking pattern chapter summary

How to build, run and connect to a hashtag messaging API

In this chapter we described a social networking pattern called content marking pattern and implemented an API and client for it. We will show you in more details later on how to use the API service and how to extend it.

Hashtag messaging server backend API tutorial with Spring Boot + JPA + H2

  • Download Source code for the application and run as Spring Boot application

Hashtag messaging DevOps Docker tutorial running the backend with Docker container

  • Launch the API inside a Docker container

Hashtag messaging mobile application tutorial with JQuery mobile 

  • Create a mobile application client that connects to the API, requests for messages, parses hashtags and adds a new message

Emoji messaging mobile application tutorial with Angular and Ionic

  • Create a mobile application client that uses API to convert words to emojis with Angular and Ionic

API endpoint actions and a beta test endpoint API

Application interface API can be found at http://api.weall.com/v0.1/messages

Get Fresh messages API

HTTP GET /v0.1/messages

Read full chapter

Content Marking Pattern

  • Talk about Coding

How Hashtags work - Hashtags as Content Marking Pattern

Content Marking Pattern

The first one of our Social Networking Patterns includes a pattern to give the text content more depth. It's like highlighting the most important words in a complex content. Your eyes will fix on the words in a glimpse and your brain will understand the meaning faster. 

The Content Marking has become popular through the use of hash tags. The hashtag symbol in front of a word # is used to simply mark the word for indexed content. This marking is called meta tags. Meta tags were widely used in webpage header tags to give search engines a faster glimpse for the keyword in the text content, but when the search engines have developed so have the webpage meta keyword tags been missing. 

So why are hash tags so popular? One reason is that the content is more searchable through hashtags.

This chapter presents a new pattern that's widely used in social networks for browsing, following and searching content. The pattern Content Marking Pattern consists of the following components:


Image of Message and Hashtag many to many relation.

The Content Marking Pattern describes the relationship between a message and its corresponding hash tag. One message can have multiple hashtags and one hashtag can be included in multiple messages. 

This relation gives us two lists: a list of Messages with hashtags and a list of hashtags. 

Read full chapter

How to program Hashtags

  • Talk about Coding

Read and understand how to program Hashtags - Hashtags explained

weAll.com Blog - Popular services explained. The first blog entry 3rd January 2016

The use of Hashtags explained


The first episode of Popular services explained will today reveal Hashtag's core functionalities and you have a possibility to find out about the functionalities in depth on code level yourself. This blog is created for developers and those who are learning development and wish to know more. 


For example many social application's core functionalities are based on the usage of # hashtags. Users can input hashtags inside 140 character messages and those hashtags are used to group and sort messages, search messages and to categorize these messages. Applications also use hashtags in their content organization and searches. By concept Hashtags are database indexed words that are attached to a message. 


How hashtags are then built?


As a coding example we have the code written in Java. And you can familiarize yourself with the coding examples. 

Read full chapter

How to validate and escape API messages with twitter text and custom validator

  • Talk about Coding

How to validate API messages with a either a twitter-text Open Source validator, spring-data or a custom validator.

By going on a path of microservice architecture we have more options to choose how we build and bind services together. The initial proposition for this book was to build services as separate microservices that would be bound together by a proxy layer. The proxy layer would be before calling the service layer and it would handle the security, validation and escaping of the characters before calling the services. 

In the current service configuration it is better to have the validation in each of the service components. Here we present how to validate the messaging API messages with

  • twitter-text component that is released as Open Source under Apache 2 License for Java here Twitter-text
  • Spring validation using Java validators for example the @Size validator in the API controller class
  • Custom validation for the Control character validation in the message
  • Spring HtmlUtils to escape the HTML characters before passing the message forward to the hashtag handler
  • The HashtagParserUtil utility class is designed to remove special characters from the hashtag words so that hashtag #f-ree will become #free and #free is used to index the hashtag. Also the escaped strings are removed eg. > < strings

How to validate text message with twitter-text validation

Let's start with the twitter-text validation, it has validation for 140 characters and also data validation. The validation JAR dependency can be added by adding the following configuration to the POM.xml file. You can choose the version accordingly from twitter-text Gitbub tags


After that you can add the call for the message validation for example

Validator messageTextValidator = new Validator();

if (!messageTextValidator.isValidTweet(message)) {

throw new InputValidationException("Message is not valid");


How to validate REST API Reqeuest parameters in Spring Boot with Java Size validator

Read full chapter

Download Messaging application using Hashstag Component Tutorial

  • Talk about Coding

Understand and learn how Messaging using hashtags works as a backend application, download and run the application for your own Social Networking innovation

How to program a Messaging application using Hashtag component working as a Microservice. Download the code for free, run it and learn by doing.

Now that you have a good understanding in how the hashtag component functions we can continue to look it's structure in the coding level. In this chapter you can find a complete downloadable Messaging application that you can use as a component for your own personal learning purposes. The Messaging application works also as a base for any message delivery component. By putting it simply it parses the message, extracts the hashtags and stores both. It also opens up an API to find messages with certain hashtags.


The messaging application component is intended to be run inside a secured host machine. The data validation and application security are done before calling the Messaging application interface. So in this application we handle only verified requests. If you need to restrict access and validate the input messages more, do it before calling this internal messaging application API.


Learn Java, Spring Framework, Spring Boot, Databases, JSON REST API development

The downloadable project is created with Spring Framework Spring Boot technology and the hashtag component structure is created using Java with Hibernate language (JPA Java Persistent API) and Java Persistence Query Language (JPQL). The Spring Boot application runs Tomcat Servlet container web server with Default settings. And the data is stored in memory inside a H2 Database Engine. When the messaging component application starts it creates a new database in memory. When the service is shut down the data in memory is lost. The persistent database storage instructions will be offered to you in the following chapters.


Learn Docker containers and how to build an architecture using microservices


In the following chapter we will also introduce Docker container that you can easily use to start a new virtual host server running the messaging application using hashtags. This is the future architecture of Social Networking and in the following chapters we will introduce this new architecture in more depth.


How to start programming with Java, what will you need

Read full chapter

Running Hashtag Messaging application inside a Docker container

  • Talk about Coding

Learn how to use a Docker container with downloadable tutorial Hashtag Messaging container application

How Docker works with Spring Boot?

In this chapter we introduce a new way of running the Java Spring Boot microservice: Inside a Docker container. You will get to download the source code, compile the service and launch it inside an own virtualized server that runs inside your host machine. Docker is currently our choise of technology for launching the service. Docker is an architecture that can be utilized for running a new virtualized computer instances. This means that it has it's own memory and disk where the service will be installed in. 

Requirements for running an application inside a Docker container

These instructions are tested only on a Windows host machine, they may apply also to Mac and Unix based systems. The commands running the container should apply to all environments.

You have to have the following setup installed on your host machine. 


Oralce VirtualBox On Window machines. This is required to start a virtual machine.


You will also need the source code project from the end of the article to compile, run and install as a microservice inside the container.

Hashtag Messaging application setup for Docker

Code Build and Run a new Microservice Spring boot application

Read full chapter

How to build a Hashtag Messaging mobile and web application

  • Talk about Coding

Learn how to build a web and mobile Android and iOS hybrid application that uses the Hashtag Messaging API

Download the mobile client application hashtag messaging project and try it yourself

weAll Chat v1.0 using Appery API Express

Test live Hashtag messaging application weAll Chat with web or mobile browser here http://client.weall.com/weAllChat

Mobile application development technology choices 

Good that you made it through the previous chapters. Now it's time to focus on mobile application development and how to leverage the API that was created in the previous chapters. So how are we going to continue with the client development? The mobile application development has multiple variations and choices that need to be made. The thing that matters the most is always the choice between technologies, in this case hybrid application or native application.

To choose a hybrid or native mobile application to develop

The hybrid application is run inside the mobile phone browser with JavaScript. By choosing this way you are able to build an application that runs with a platform that can run JavaScript. The JavaScript makes call through Cordova libraries to the native device libraries, usually either Andoid or iOS. By choosing this way there is more limited way of what you can do with your application. The limitation comes from the browser and what interfaces does the Cordova version offer. And it also affects on the speed of the application, a hybrid application is slower than the native application because the calls are made through JavaScript to the native libraries of the mobile phone.

The native application is run inside the device platform usually on Android or iOS and it connects to the device through it's own native device libraries. This has much more freedom and speeds up the application.

There is a benefit for the hybrid application development and that is the code amount needed to build an application. In this chapter we are going to show you, how to build a hybrid mobile application for Android, iOS and other platforms.

Technology choices to help building applications faster

Ah.. the flaming battlefield of coders: What technology to choose for your application. And of course if you choose a technology that will not last then you are in trouble. So how to minimize the development effort on this? You can choose between various platforms that help in building an application. There are quite many choices that are listed for example here:


Appery.io application development platform

Read full chapter

How to build Emoji Chat application using AngularJS and Ionic

  • Talk about Coding

AngularJS is widely popular framework for building next generation applications. Let's dive deeper into the world of AngularJS.

Now it's time to look into the popular AngularJS framework (AngularJS version 1.4.3) and how it binds together with Ionic framework (Ionic version 1.2.4). This chapter shows how to leverege the Angular features easily using Appery.io service. You can import the service with the Appery.io trial mode for free.

In the previous chapter we used JQuery to print the UI elements and hashtag messages on the screen, now we use Angular directives to create components on the screen. AngularJS binds also the UI components to the scope model.

This fun little chat application demonstrates also how to use emojis as hashtags. Hope you have a good time in trying out the application.

Create new Angular and Ionic application 

In Appery.io you can create a fresh new application or create an application from a backup that is included in the end of this chapter. The following will show you how to create a new application.  

Image in Appery IDE, Create a new Ionic application using Angular.

Then go to the Appery API Express and create the hashtag messaging API services. You can either import the services or create new services as described in the previous chapter. Note that you have to add limit, offset and convertEmojis URL parameters to the services getFreshMessages and getMessagesByHashtag. These parameters are already added in the API backup file in the end of this chapter.

When you have the API Express services created you can import the api.weall.com services in Appery IDE with Create new / API Express Service. Select all API services.  

Read full chapter

Connecting Pattern

  • Talk about Coding

What are verified connections and how to build and manage them.

Our world is built with connections and they are everywhere. Our economy, ecosystem, values and standards use connections to structure the world around us, you are a result of your connections. In real world you can look at your phone and you will find connections, you can look for connections in friend's list, email box and social applications. You can also look at your education, workplace and social circles to find connections. These connections bring value to the table, you can reach them and ask them questions or state your opinions. This is a social network that is built around your connections. You also have other different kind of connections, to the things that you own, subjects that you are interested in and know about.

This network is information that represents your personal connections. These connections come to life only when you act with the actual person or object through this information.

Networking has different structures for connection building. Two of the mostly used ways to build new connections are verified connections and connections to follow.

As we see in many today's services in 2017 the verified connections means that the connection is built only when the both connection parties have confirmed the connection.

The connections to follow means that the connection endpoint allows other parties to follow his/hers/it's actions. This means that connections you follow are not same as your verified connections.

In a computer network the verified connection also means a connection that has gone through a handshake so that the client and the host have both verified the connection as established. In networking this requires that the communication protocol is identified and accepted in both ways. The verification itself does not guarantee that the both parties can rely on the information that flows between them. It verifies that the parties have accepted the connection and have a relation between each other.

Now we get to an interesting point in the book. We examine connections and how to build and manage them. Connections are relations between entities that enable communication or state changes between two or more entities.

As we discussed earlier in the introduction there are input connections and output connections for a single entity and these are the base for the connecting pattern. We focus in the structure of a single connection entity. With the entity word we mean any programmable object that has an unique identifiable key. The entity is used in many contexts, we have taken it from the Hibernate database terminology.

Read full chapter

How to program verified connections

  • Talk about Coding

We look at how to code verified connections that can be used in friend lists, phonebook or match list

We will show you in detail how to program a connecting backend API that can be used to build verified connections between connectables meaning objects that are able to connect using their identification names.

Modelling Connecting pattern to a datamodel

The application is modelled around a connection that works in two directions, the initial connection from the owner to the endpoint and as reversed connection from the endpoint to the owner. Both of these connections have a state and an object type for each endpoint.

This chapter uses initial connection term for the connection from the owner to the endpoint. And reversed connection term for the connection from the endpoint to the connection owner. The initiator of the initial connection is the owner who makes the connection request to either accept or decline the connection. The initiator in the reversed connection is the connection endpoint.

Modeling the relation between connectable and connection

Here's an actual example about the terms and how the database tables will look.



Image of the connectable relation to the connection as relational UML model.

Read full chapter

Download Connecting API

  • Talk about Coding

Download Connecting application microservice component and run it as Docker container with MySQL database

In the end of this chapter you can download the Connecting API Java source code, connect it to MySQL database, build and run it as Docker container.

The Connecting API microservice is intended to work as a Beta Test version as a backend service. You can call the Connecting API inside a secured application server where your application calls the REST service.

The Connecting API works similarly as the Messaging API except that the database client has been changed to use MySQL or MariaDB database server to create the database tables. This means that there is a persistent database where the data is written to the filesystem, opposed to the H2 database that is stored only in memory.

So to run the Connecting API you need the following

  • Install MySQL or MariaDB database

  • Create new database for your application and create application user inside the database

  • Update the Connecting API application.yml properties file with your database application user

Install MySQL or MariaDB database

When you are doing local development one of the best ways is to install a new database with Docker. You can follow these instructions from the official MariaDB site

Read full chapter

Create a contact list application to manage your friends devices or matches

  • Talk about Coding

Create a mobile or web Angular and Ionic app for managing contacts, friends or matches

In this chapter we are focused on connections, especially this connecting pattern is highly popular in many social networking applications and can be used in all kinds of applications and use cases.

Below is the view to the mobile application that you will be creating. To test the application write your name in the first field using @ prefix, like @jack. Write the name you want to connect to to the second input box. Then click on the Right arrow in between the boxes to send a new friend request and create a new connection. Below in the lists click on the name buttons to switch the user's view. This represents that you login as a different test user. Click on the Accept or Decline button or the Trashcan to see what happens.

This application works as an example mobile application to show the features of the Connecting API. The application interface is anonymous, open and unsecured. It is meant to be that way in the beta version 0.1.

Try below by replacing @mary with a username in the @user format and click on the Connect arrow. 

Connect API mobile and web Html5 hybrid client application running with Angular.

This version is a Beta Test version and by logging in and aquiring share points you get to read this whole article on how to create this client application.

The client component has the following lists that are fetched from the Connecting API service endpoints.

How to build a list of accepted connections

Read full chapter

Content Rating Pattern

  • Talk about Coding

How to create a Content rating algorithm

How content rating algorithm works - How to code likes, votes, hot topics and ratings

Wherever there is content of some sort in text, sound, voice, thoughts, images, perceptions there will also be opinions about the content. People are opinionated based on their backgound, their history in learning and what is the community around them teaching them. Opinions differ in different cultures and regions. In social services the content is rated with these opinions and in basic situations the rating is positive and negative. To wether the content is liked or disliked. 

Hot Topics in feed sorting

This results to the situation when the positively liked content can be shown more often than neutral or negatively rated content by algorithmically sorting the content feed. Basically the same content when released in different context can produce different results in rating. In social networks the context that you choose for your content is relevant. This applies also for in marketing in social networks. 

Rating with Likes

Likes, Up & Down, Loves, Pinning

Social and other services and networks use different names for the same subject of how to rate the content. These names can be likes, upvotes & downvotes, loves, pinning. These methods give the user one point rating to give to the content. The content's total rating is then calculated based on the total points of these ratings.

Voting, Stars, Diamonds

Another system to use in rating is to vote for the content. In this system the user gives content a rating for example in between 1 – 5. This is represented usually in stars in the content rating that is calculated from the average of the total ratings. 

And also one significant point is that the user can give only one rating to each content. This instantly requires multiple features. The user has to be authorized and there has to be a list of the content that the user rates. This list has to be well performing in computing performance. 

In the next chapter we will look in more detail the content rating implementation and how to maintain a list of rated content.

Read full chapter

How to model rating likes and votes used in content feeds

  • Talk about Coding

Learn how to model rating calculation for users


How to model a Content Rating Algorithm

In this chapter we will look more into how to build a content rating implementation and how to program a simple content rating algorithm that can be easily extended. 

How to store and calculate content's ratings based on the user's likes, votes, +1, hearts or ratings

First of all we implement how to store the user's ratings. We have a simple Content class that has a message attribute that represents a String content, a microblog text message for example. 

How to calculate total rating points

We have a few different ways to model the content rating, one is to add the rating straight to the Content class and calculate the total points there. The other one is to crete a new Rating class and keep the separated user ratings there. For performance it is better to implement these both. Rating points are added to the total sum and Rating is stored to remember which user has rated which content. This prevents the user to rate the content multiple times. And to note that this has to be done inside a database transaction.

The total points are calculated straight as an integer inside the Content class. And the user's ratings are kept separated in a different class called Rating.

Content Rating algorithm modeling

Image of Content and Rating relation.

Next we have an Java Spring boot implementation of a rating algorith as a microservice.

Read full chapter

Download Rating API and add likes to users content for hot topics and feeds

  • Talk about Coding

Download Content rating backend application interface and learn how to use it for your own innovative applications. Learn also how to secure an endpoint using Spring Security's basic authentication.


Great, now you have read the previous chapters you understand how rating systems work. So let's get straight forward and implement our own. The implementation uses same techniques as the previous chapters but for this application we add a basic security case with application users, roles and a default login page. Sounds complicated, well it is and it is not when you learn it. 

Programming likes

The main points in this chapter are:

  • How to implement user's content rating algorithm with different configurations that are used to configure ratings for users likes or votes.

  • Spring Security Basic Authentication with default users. This includes securing a Spring boot application with multiple predefined users but does not include user registration. Multiple users and registration will be described simply in the upcoming chapters.
These upcoming chapters are related to this chapter as well:
  • How to integrate a web application into Spring Boot application.
  • How to run the Spring Boot application inside a Raspberry PI as a distributed application. This will be described more in the upcoming chapters.
  • How to integrate a 3d world into a Spring Boot application This is a more interesting additional feature that will be described in the upcoming chapters.

Store users's likes and votes in a database

Let's look at how the Rating API is constructed. The approach we use in describing is to start from the point where the data is stored and handled, the database and the model for the data, then go up to the data access layer and after that to the service layer and finally to the REST application interface (API) layer.

Rating user's content in a feed

So how the user's ratings are modeled? First of all we need the information on the user that has rated the content. This is used to know what content the user already has rated and to prevent multiple ratings. The user can give only one rating to each content. One content can have multiple ratings from many users. And the total ratings points are calculated in a bufffered Integer in the content object.
The user is referenced with an user identification field in the Content class. In this microservice application we don't yet have created the actual User class to reference to so we store the user identification number. This could be lateron changed to OneToOne association in Hibernate.

public class Content extends BaseEntityAbstract {


private String ownerId;

The total points are calculated in the following attribute totalPoints.

Read full chapter