Introduction

These pages describe my personal experience and guides for using the Apache Software Foundation application stack. I have been developing 33 years in 18 different programming languages, since I was 11 years old. It started out as a fun social activity with friends, now its work, work, work, so let’s try to get back to the fun part.

purpose-autonomy-mastery

This site is for my personal benefit to get back to the fun and creative development process and hopefully it’s also useful to other people. For me a development task is fun if it has: purpose, allows me to work autonomously and allows me or my team to master new knowledge.

I mostly develop on Windows, but have a background as UNIX administrator, therefore I will be using Docker for Windows in my development examples.

WHAT-HOW-WHEN

What architecture am I trying to create?


Lisberg.IO

How should my development processes be?

Because I need a lot of Linux servers in my architecture Docker for Windows is an obvious choice in my development process.

For source control I will use Git and BitBucket, that gives me a free private repository, that I can use until I am ready to share my code to public.

For Java backend development I will use NetBeans, because it does not impose structure on my project and Maven to make life easier.

For NodeJS frontend development, I simply use a modern text editor like Atom and the Chrome browsers debugging tools.

When should I implement what?

Most teams today use some kinds of tools that supports the SCRUM project model, like Jira for sprint planning or issue tracking. But often team members prefer more simple tools like mail, documents and spreadsheets, that are easy to use, but they don’t give you knowledge sharing, history tracking and progress overview.

Since I am only implementing an architecture for the fun of it and don’t need to please management, I will just use GoogleDocs for breaking down my project tasks in 2 week sprints and track my process in a simple spreadsheet.

The project break down will be something like:

  • Implement development processes
    • Install Docker for Windows
    • Install Git and TortoiseGit
    • Install Java, Maven and Netbeans
    • Install NodeJS, NPM and Atom text editor
    • Create GoogleDocs accountfor project management spreadsheet
  • Implement core backend services
    • Make Cassandra NoSQL Dockerfile
    • Make Solr search engine Dockerfile
    • Make ActiveMQ message queue Dockerfile
    • Make James SMTP/IMAP mail server relay Dockerfile
    • Make Mahout/Hadoop machine learning Dockerfile
    • Develop Cassandra custom index to Solr integration
  • Implement frontend and REST services
    • Use Open API’s like Swagger REST API to design REST services
      https://www.openapis.org
      https://github.com/swagger-api
    • React frontend tool
      https://github.com/react-toolbox/react-toolbox

LICENSE CONSIDERATIONS

All tools that I use or develop here should have some kind of open source license and a fair number of people actively contributing to the projects.

All packages produced by the Apache Software Foundation (ASF) are implicitly licensed under the Apache License, Version 2.0, unless otherwise explicitly stated. See https://www.apache.org/licenses/ and https://en.wikipedia.org/wiki/Apache_License#Version_2.0 for the advantage of this license.

https://swagger.io/license also uses the Apache 2 license.

https://github.com/react-toolbox/react-toolbox/blob/dev/LICENSE uses MIT license and the number of people contributing is high https://github.com/react-toolbox/react-toolbox.

Implement development processes

Install Docker for Windows

For a detailed guide on how to install Docker for Window please see How to install Docker for Windows.

 

LEARNING BY TEACHING

I have learned that in my experience teaching others is the best way to learn myself, because I need to be precise and to the point when teaching others. It doesn’t matter if it’s computer science, martial arts or any other skill, learning by copying others and later doing it yourself, is the best way to learn for me.

Therefore I normally think in the ICARE instructional model, when writing instructions for others.

ICARE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

logoLisberg.io is a project organisation under Olio ApS