Design a site like this with WordPress.com
Get started

Fuchsia OS: Google’s Next Bet

Fuchsia is the name given to an operating system that is under development at Google. Little is officially known about this project so far. According to fuchsia.dev,

“Pink + Purple == Fuchsia
(a new Operating System)”

The aim behind developing this operating system is to build a system that works across all types of hardware devices (i.e. from phones to tablets to home automation systems).

History

Initial release of its codebase on GitHub was made on 15th August 2016. Google broke the silence about Fuchsia at Google I/O 2019 as an ongoing experiment. Its official website, https://fuchsia.dev was announced on July 01, 2019.

Core Development

Fuchsia is open-source and powered by a microkernel named Zircon. It has been developed to scale almost all sorts of applications from embedded to mobile to desktop apps. Its zyscalls are highly-efficient and non-blocking.

Features

  • Universal platform for all device types
  • Concurrent multi-tab view
  • Scaling power
  • High-performing support
  • Rich Graphics & UI
Fuchsia OS on Pixelbook (Credit: Ars Tecnica)

Technical Stack

As of now, these languages have been implemented to build Fuchsia:

  1. C
  2. C++
  3. Dart
  4. FIDL
  5. GO
  6. Rust

However, its official website states that it is open to aspiring contributors if they wish to bring other languages to add to this system.

Fuchsia OS on Windows 10 (Credit: SkinPack Pinterest)

Conclusion

Although Fuchsia is still at a development stage, it has attracted attention around the world. If this project becomes successful, it may showcase the potential to replace existing operating systems and thus, devices of all types will be run on a single operating system.

Advertisement

Search Engines

A search engine, also known as a web search engine, is a system software that discovers relevant contents on the internet based on given queries. It is one of the most widely used softwares all over the world.

History

WHOis was the first domain search engine with limited capabilities invented in 1982. Alan Emtage, together with Bill Heelan and Peter Deutsch developed a content search engine named Archie that could make a directory list of files on FTP sites and produced a searchable database. The first full-fledged web search engine was W3Catalog developed at the University of Geneva in 1993.

A search engine has three steps to implement to produce a result. These three steps are detailed below:

  1. Crawling: AKA spidering, is a process in which an automated script or computer program is used to crawl through the web for specific
    content. This helps in producing an index of relevant contents. A crawler is also sometimes called a Spiderbot. It can detect HTML errors and broken links.
    Robots.txt file contains data on how to crawl or if not to crawl the website.
  2. Indexing: After a web crawler crawls through the web, an index of related sites is produced and displayed in paging. Keywords and metadata
    are specifically searched to index webpages. Formats that are supported by search engines to index are:
    ASCII text file
    CAB
    HTML
    PDF
    MS Word, Excel & PowerPoint
    Lotus Notes
    RAR
    TAR
    XML
    ZIP etc.
  3. Ranking: Finally, relevant sitse are given ranks based on factors such as quality, uniqueness, mobile optimized , accessability, backlinks, loading speed etc. Google Search Console
    helps to find out if a particular website is properly accessible.
Search Engines (Tishan’s Wall)

Next, webpages are displayed as what is called SERP (Search Engine Result Pages). This is published in paging depending on the browser’s configuration.

Custom Search Engines

A custom search engine helps to view specific results as required by the users. Currently, these are the two popularly active custom search engines:

  1. Google Custom Search Engine: Developed at Google in 2006, it provides a beautiful way of customising searches, refine and view as expected by a user.
    Official Website: cse.google.com
  2. Bing Custom Search: Developed by Microsoft Corporation, it has a powerful API to refine search results and show the user. It is totally free to use at any scale with no ads.
    Official Website: http://www.customsearch.ai

Popular Search Engines

As of today, there are many vendors who provide search engine services. Google’s search engine has the largest market share worldwide on all the platforms. However, Yandex leads the market in Russia whereas Baidu tops in China.

Credit: Webfx (Feb, 2020)

Writing a Search Engine

Since a search engine is a multi-level complex software to make, its internals can be divided into three layers:

  1. Frontend: JavaScript
  2. Middle Layer: General-purpose languages (ex. Java, Python, PHP)
  3. Backend: C++, C, Rust, GO

Conclusion

Search engines are a crucial part of today’s technology. The more relevant and neutral contents users get, the more they benefit.

What is SCRUM


SCRUM is an agile framework to handle complex projects. It is lightweight in nature and is matured enough to work with large projects. Ken Schwaber, together with Jeff Southerndown developed the Scrum framework in early 1990s.

Although it is mostly implemented in software development, its popularity in other non-IT domains keeps surging.

Roles: There can be three different types of role in a Scrum project:

1. Product Owner: Works as the liaison between the stakeholders and the development teams. His/Her other duties may include:

  • Representing customers, users and stakeholders
  • Making user-stories
  • Describing a project’s goals
  • Keeping the stakeholders updated on the current status of product
  • Planning and announcing releases

2. Team Member: A team may consist of several members responsible to develop the product. Teams are expected to be self-organizing and cross-functional. Generally, a SCRUM team has 10 members.

3. Scrum Master: A Scrum master challenges the teams to improve, helps in removing obstacles and ensures good Scrum practices. A Scrum master is not a project manager as such teams are self-organized enough to avoid the need of a project manager.

Key Terms in SCRUM

Backlog: A backlog refers to the list of features to be added to a project or, to be developed in one sprint. After the Product Owner describes the user stories, these are shifted from Product Backlog to Sprint Backlog list.

Figure: Items shift from Product Backlog to Sprint Backlog

Planning Meeting: Meetings take place before the beginning of every sprint where the Product Owner selects and highlights the user-stories for the upcoming sprint.

Sprint: A sprint is a timeboxed incremental iteration to develop software pieces. Each sprint usually consists of 30 days of less – based on the teams’ performance and affecting factors.

For example, in the middle of a sprint, if new requirements add to the project, the sprint may take longer than expected to finish. It can also delay due to unexpected complexity in development. The result of each single sprint is a piece of working and tested software – also known as Potentially Shippable Increment (PSI).

Daily Scrum / Scrum Standup: A daily stand-up meeting of usually 15 minutes duration to focus on three key points:

  • Achievement since last the meeting
  • Obstacles
  • Next accomplishment

Burndown Chart: It is a chart that is used to measure progress during each iteration. If X-axis gets the sprints or time and Y-axis gets backlog or workload, then we get:

Figure: Burndown Chart (Backlog vs. Sprint)

Here, each sprint requires 10 tasks or logs to be completed. Note that the actual workflow may vary at times due to several factors, like change in requirements or sudden complexity. The black line refers to the ideal flow to finish the project in 2 sprints.

Velocity: Velocity refers to the total backlog items to be completed in one sprint. In case of the above-mentioned Burndown Chart, velocity of each sprint is 10.

Planning Poker: A game in which team member participate by using deck cards to give their estimation on how much time the next sprint may take to finish. As each member’s estimation is taken into consideration, it helps in fixing a standard time amount for the upcoming sprint. If one member indicates an amount that is far beyond the average amount given by other members, he or she is given a scope to express (AKA Soapbox) why it may take that much time to finish since he or she may know of shortcut ways or complexity that others have not thought of.

Best SCRUM Practices

  • Keeping each team of 10 members or less
  • Daily Scrum should take place at the same time on every working day
  • Allowing experienced remote members join the meetings if necessary
  • Announcing releases based on practical estimation (i.e. 20 week-hours instead of 17.5)
  • Potentially Shippable Increment (PSI) should be working enough to be deployed

AI in Web: Machine Learning in Browser

AI (Artificial Intelligence) has been the buzzword of this decade. It is the technology to give a machine or program the ability to copy human cognition or simply, to solve problems on its own. Programs that implement AI algorithms require high efficiency and optimiza

Machine Learning models are no more just desktop-based. With the advancement of the web, there are now several rich libraries that can be used to produce models, train those and visualize output in the browser. Both machine learning and deep learning models can be produced in JavaScript, PHP and Ruby.

These libraries have heavily contributed to bringing Machine Learning on the web:

1. TensorFlow.js: 

Managed by Google, it is a reputed JavaScript library to produce & train machine learning models in JavaScript and run in the browser. Models written in Python TensorFlow can be converted to JavaScript using TensorFlow.js . 

Official Website: https://TensorFlow.org/js

2. RubixML:

PHP has been present on the web since almost the beginning. RubixML is a high-level open-source library to produce machine learning models using PHP. It comes with support for more than 40 different machine learning and deep learning algorithms written in PHP. 

Official Website: https://Rubixml.com

3. Rumale: 

A Ruby library for machine learning, it is similar to Python Scikit-Learn in interface. It has support for a wide range of algorithms. 

Official Website: https://github.com/yoshoku/rumale

4. PHP-ML:

Another open-source library, machine learning models can be developed in PHP using PHP-ML. If you want to perform Data Mining and Data Analysis in PHP, PHP-ML is your choice. This library requires no additional dependencies. 

Official Website: https://php-ml.org

5. BrainJS:

It is a JavaScript library that uses GPU to compute fast and return output in plain JavaScript. This is more suitable to work with neural networks. 

Official Website: https://Brain.js.org

Any developer may contribute to improve these open-source libraries and keep AI ever-green on web.