For those of you who have stumbled upon this partially completed website, as you can see, there’s not much useful information here. I’m attempting to build this site while covering fundamental concepts and tools used to build “Information Systems”. Obviously, if you’re familiar with the subject, it’s a huge undertaking, and there’s no right way to approach it and there are many technologies to choose from.

Within this site, I attempt to utilize open source technologies and free services so anyone, and everyone, can learn. Not only will you learn how these technologies work that make up the “Internet”, but you might find some of these tools/techniques useful in your everyday life, such as journalizing your day, or capturing recipes for later use. This site should be understood by anyone who wants to embark on this journey to learn “IT”, and will hopefully give you everything you need to become a full stack developers, if you so choose to.

I chose the domain https://www.it-journey.dev because I hope this site will provide a lifelong learning experience for anyone who wants to learn how to code and build information systems that help them with everyday life.

Life Hack Wiki

## Quick Facts

This world was created by Amr Abdel-Motaleb and maintained by:

Name Profile
Amr /github.com/bamr87
Vacant /github.com

Ruby https://www.ruby-lang.org/
Jekyll https://jekyllrb.com/
Bootstrap https://getbootstrap.com/
Algolia https://algolia.com/
JQuery https://jquery.com/
MathJax https://www.mathjax.org/
GitHub Pages https://pages.github.com/

## Principles

To help guide you through this journey, I have described some principles that I believe will help you learn how to code and build information systems. I believe that everyone should approach programming/IT/development/design using a set of principles that to ensure coherence and consistency across the stack. There are many ways to skin a cat, but I try to abide by the common few listed below. These are merely guidelines to strive for, but you can ignore them completely if you dare to. It might make it more difficult following this guide in the future.

Programming principles Wiki

### Design for failure - DFF

This concept assumes that systems fail regularly, and a system design should account for this. There are many reasons why a system can fail, many of which are out of our control, such as malicious hackers launching a DoS attack on a web server, or a simple hardware malfunction. The growing complexity of our systems increase the number of ways failures can occur. For the veteran IT geeks out there, you might be well aware of the blue screen of doom during the early days computing, and we should always live with this concept that the blue screen is right around the corner. In order eliminate this concern, the overall design and deployment should always account for this possibility.

Designing for failure can be accomplished at a number of levels:

• system
• component
• interface
• user interface