"If you can't explain it simply, you don't understand it well enough." (Albert Einstein)
To be able to let a Robot build a website successfully, we need to simply provide the understanding required to deliver the optimal result.
To be able to follow this concept, we need to think from the Top Down. It's not as complicated as it seems because everything can be thought of as an item or object. Any item or object can always be conceptualised, designed, built and managed by it own unique set of properties and methods.
As a continuation of the previous blog "AI Website Builder", I write this blog to explain the general approach which I used to build the AI Engine in sibu.ai, to automatically build a website using a simple and insightful approach.
Before going into detail about the mechanism for creating the AI component for this platform, we need to clarify 2 key objects in this solution architecture which I have seperated into the AI (Subject) component and Website (Object) component.
What exactly is AI? A broad definition can be expressed as “the theory and development of computer systems able to perform tasks that normally require human intelligence, such as visual perception, speech recognition, decision-making, and translation between languages” according to Google. To understand this in simple terms, AI is a series of computer programs that can do a list of defined tasks that a normal human normally can, but in a much faster way.
This blog post won't go in too much discussion around what is the best way to implement AI. We only need to understand what AI is and that it will continually evolve as the solution is adopted.
In its infancy, AI provided the ability to automate simple tasks and functions. As AI has developed it has broadened its scope and ability to learn from its use and adoption. While AI is still not self-aware it can be developed in a way to continually learn and adopt as it is used within a solution. I only want to quickly discuss 2 familiar types of AI: ANI and AGI. Artificial narrow intelligence or narrow AI is an earlier generation of AI. Today, ANI is used in several applications related to Computer Vision, Speech Recognition, and Natural Language Processing(NLP). ANI is the way we let the Computer do something with a predefined method. Artificial General Intelligence is the next generation of AI that the Computer can learn and adapt the method to continually improve the quality of the result. AGI or General AI is the intelligence of a machine that could successfully perform any intellectual task that a human being can.
To use AI, we need to define the ability of the computer program at the current time, and understand how it can evolve to improve the system processes and functions. In any history of software development, low expectations never provide a catalyst for change, but trying to overachieve similarly rarely leads to a better solution.
In website development, the last two decades of history has proven the same principle. Many tasks can be automated by computer algorithms, but not all. Building an AI solution for website development is somewhat easier than developing one to build a car, like the Tesla Model 3. To build 10, 000 cars per month, Elon Musk needs thousands of automated robotic units working at a defined optimal speed. If he wants to increase the output to 100,000 per month, he has to increase the number of robotic units or the speed and efficiency of each unit. Both of these factors are the limited, and economies of scale generally will determine a reduction in efficiency as output increases. At a certain point in this process, production will no longer be cost effective.
The principle of equivalence for software and hardware states that for every solution solved by hardware, software and also be used but is generally slower. This applies even more so when comparing the production of cars against the production of websites. Using software solely to produce new websites, has many advantages over the production of physical consumer products. We only need to create one platform to produce, in theory, unlimited websites without the restrictions economies of scale will impose. The AI component has a defined problem domain and can improve in function with relative ease.
However, the most difficult problem the AI component will need to solve when building a website is how well it understands the list of tasks required. It is impossible to expect AI to do everything like a human developer can do immediately. The AI solution will need to evolve and continue to evolve more rapidly leading to a faster and more intuitive solution over time. But every great journey begins with a single step.
To illustrate what I aim to achieve with this new platform I can use some common examples of physical consumer product production;
- Each robotic unit can help to build a car, because the car is a set of combined well-defined items, and those items will be linked together with the standard of connectors.
- Each robotic unit can help to build a laptop, because the laptop is combined of a list of well-defined items, and those items will be linked together with the standard of connectors.
- Each robotic unit can help to build a smartphone, because it is combined of a list of well-defined items, and those items will be linked together with the standard of connectors.
AI in these examples is used to help produce a generic, well known product. Other than the introduction of new models for the consumer goods, the AI solutions do not evolve.
If we want to build websites by AI, we must initially follow a similar approach;
- Define the list of unique items which can be combined to create a complete website, no more, no less.
- Define the standard of connectors between those items to generally, consistently connect theme together between all items and all levels.
The key difference though is to develop the AI component within our new solution to evolve. We are not developing generic cookie cutter websites, we want the AI to allow end users to express themselves and enable them to build their own unique web experience.
There are many frameworks, CMS, base themes, tools to build websites, but in reality there is no single definition for the concept of consistently well defined items and connectors in web development.
Let’s think about the laptop. It needs several parts to function: the border, the main board, the CPU, the graphics card, the touchpad, the camera, wifi, bluetooth, the keyboard, the battery, ..., and the connectors like: sata, sata II, usb, usb type c, cdma, the rack for cpu, the rack for ram, ... each item plays a different role to form a complete body, linked by the connectors. To produce a laptop, the robot now only has to assemble these parts together. It is important that we do not dwell into how each component is built because this is the job of a supplier. All manufacturers need to know is that each part is produced by using a specific technology.
Luckily, thene came the advent of Drupal 8. This is very wonderful platform and Drupal took a lot of time to announce its release version. Drupal 8 has all items that I need to build this Soft Robot. Which Drupal 7, Wordpress, Joomla have no; Symfony, Laravel are just the functions lib,... In my 13 years of career, I have tried many platforms such as Zend Framework, Code Ignitor, Yii, Cake PHP, Social Engine, VBulletin, Joomla, Wordpress, Magento, Laravel, Symfony, and Drupal 6, Drupal 7, Drupal 8. Among these platforms, Drupal 8 is the only one that can help me to build my product fully.
In general, a website is combined of three parts: content, structure, and styling:
- Content is the list of data for the website, such as texts, images, links, videos, ... can be organized to many types like articles, blog, services, showcase, product, order, user info, category,.... These can be displayed in the website
- Structure is the list of items for the website, such as pages, sections, regions, blocks, contents, fields, listings, menus,... these can be shown as the html structure
- Styling is the css, cascading style sheet, We use css to ensure any parts of the website can be displayed beautifully and exactly what the website owner wants.
Let’s think about how a developer builds a website step by step by using a CMS, for example Drupal 8:
- He receives requirements from users
- He analyzes to understand the users’ requirements and stars executing the tasks
- He installs a server/host with a web server and database
- He creates a folder to download the cms code base
- He creates a database for this website
- He installs the CMS
- He downloads the list of required third-party modules/libraries/themes
- He installs the required third-party modules/libraries/themes
- He creates a new theme for this project
- He changes the theme to have the structure which the website needs
- He creates the required content types with the essential fields
- He creates some contents for all content types
- He creates some menus which the website needs
- He creates the pages and put the link to the menu
- He puts the menu to an area in theme
- He creates a slideshow and put it to an area in theme
- He creates some other blocks and put to the areas in the theme
- He creates some listings to display the list of content: blogs, news, products, ....
- Page by page
- Area by area
- Block by block
- Content type by content type
- Listing by listing
- Menu by menu
- Content by content
- He adds the classes to each item, each part, each page, each type, each listing, ... and the front-end developer will write css to give them a beautiful presentation.
- He updates content to the website
- Then, we basically have a website.
And this is what SIBU do to have a website with our Soft Robot (AI Engine):
- Sibu allows user input some section about what he wants to have a website
- The AI Engine (Soft Robot, ANI) will base on the defined method and the input, step by step build the website exactly like a normal developer does.
- Users will be redirected to the finished website to do any customization that they want.
- Based on the selection inputs, and users’ customization, the AI Engine will learn and gradually adapt the method to build the website better by the time (AI Engine improvement stage).
Why I use Drupal 8 instead of coding from pure language? I don’t want to let any one learn a new architecture, and I myself almost can’t do anything better than the current platforms. I only try to do my best on the best platform to support as many users and developers as possible so they can build their websites cheaper and faster.