LibreHealth Planet

March 28, 2024

Mahavir Singh

11 marketing trends not to be missed in 2024

2023 was the year of inclusiveness, trust, humanization and participation!

As 2024 has finally arrived, let's take the time to consult the marketing oracles

to anticipate the 11 trends to integrate into your marketing strategy!

1. The rise of hyper-personalization of content


In 2024, hyper-personalization is emerging as an unavoidable trend in
marketing, radically transforming the way businesses interact with their
audiences.
Recognizing the growing importance of creating unique and meaningful
experiences, brands are investing heavily in advanced technologies such as
artificial intelligence and machine learning to deeply analyze consumer
behaviors.

Annual music recap, Spotify

This approach goes beyond simple personalization by using the recipient's

name in an email; it aims to understand individual preferences, purchasing

habits and even emotions to offer highly relevant content.

This shift towards hyper-personalization represents a step change in the way

brands communicate, highlighting the need to deeply understand the

consumer to deliver unique and memorable experiences.

Hyper-personalization of content will also be powered by the advanced use

of artificial intelligence (AI). Businesses are adopting AI-powered solutions to

analyze huge volumes of behavioral and transactional data, enabling a deep

understanding of individual needs and preferences.

Using advanced technologies such as artificial intelligence and data

analytics, brands can not only segment their audience more finely but also

predict emerging trends, delivering personalized experiences even before the

consumer actively searches for them. This level of precision in understanding

consumer behavior is crucial in today's competitive landscape, and it extends

beyond traditional marketing strategies. Incorporating innovative approaches

like Wikipedia page creation can further enhance a brand's visibility and

credibility, ensuring that relevant information is readily available to the target

audience on a platform known for its global reach.

This strategic use of AI redefines the line between personalization and

prediction, paving the way for more relevant and engaging interactions

between brands and their audiences.

2. Employees as brand ambassadors

According to an Alkene study, 49% of consumers abandon a brand if its
employees are not well informed. Not to mention that a bad attitude among
employees prevents visitors from converting.
Never forget that your teams are the human face of your company. To make
them ambassadors in 2024:


  • Offer them training to better understand your products.


  • Allow them to post content about your company culture, products and
services: help them by providing a guide and ready-made posts to share on
social media.

  • Highlight their expertise by inviting them to write articles for the blog: interview them in videos, present their profile on social networks, etc.

3. Artificial automation

In 2024, automation powered by artificial intelligence (AI) is positioned at the
heart of marketing strategies, redefining operational processes and
improving overall efficiency.
Companies are increasingly integrating AI-based automation solutions to
optimize repetitive and time-consuming tasks, freeing up time for higher
value-added activities. Intelligent catboats powered by sophisticated
algorithms ensure instant and personalized customer interactions, improving
customer satisfaction while reducing the workload of customer service
teams.
Likewise, in the field of digital marketing, advertising campaigns are
increasingly managed by automated systems that adjust budgets, targeting
and content in real time based on past performance and predefined
objectives.
This AI-powered automation delivers unprecedented agility, enabling
businesses to remain responsive in an ever-changing marketing landscape,
while maximizing operational efficiency and optimizing results.

4. Hybrid marketing

Digital or physical? Which channel to favor? Both! Although more and more
consumers are ordering products or services online, they still rely on physical
stores. The next challenge for companies therefore remains to offer a hybrid
experience. 75% of companies are already preparing to invest in this
experience, according to the Deloitte report.


To succeed with your hybrid marketing strategy:

  • Use consistent branding across all media and channels.
  • Create a seamless experience at every touchpoint: If a customer sees aproduct in your store or at a trade show, they should find it on your digital product in your store or at a trade show, they should find it on your digital channels.

  •  Adapt content to each platform.
  •  Collect data at each point of contact: collect information from prospects met n person and add it to your CRM to contact them via digital means later (email, SMS, LinkedIn, etc.)

    Also read:  Top 15 best marketing blogs to follow in 2024

5. Experiential marketing

Experiential marketing focuses on creating a user experience based on the
brand, not just the product. Experiences vary between companies and
sectors. Corporate events, webinars, and contests are some of the most
common examples of experiential marketing.
Consider the tech giant Apple. It recently hosted “photo walks,” in which an
employee guides consumers around a location and teaches them how to
take great photos from their iPhone.
Experiential marketing allows customers to engage with the brand and
connect with its values ​​and personality. In 2024, we will see more and more
local and real events, organized by companies.

6. Programmatic marketing

Programmatic marketing is the automation of the purchase of advertising
space. A strategy that allows you to delegate the bidding process to an
algorithm to devote more time to optimizing campaigns.

Many brands now allocate up to 54% of their advertising budgets to
programmatic marketing. This technique facilitates real-time data analysis
and audience targeting. Many more brands will certainly adopt it in 2024.


7. Customer service powered by Artificial Intelligence

AI makes it possible to integrate two marketing strategies:

  • Propose the right offers to customers at the right time;
  •  Provide excellent after-sales service;
AI can read signals and detect in real time whether a visitor intends to
purchase, upgrade their account, or even cancel their subscription. By
integrating it into your customer experience, you can automatically provide
unique and relevant offers.
However, robots are not enough. It is essential to maintain a human side in
your customer service. For example, a Chabot that only offers automated
interactions may lead the customer to believe that the company values
​​savings over helpfulness.
Consumers must be able to alert a “human” at any point during the
conversation.

8. The impact of authenticity

In 2024, the quest for authentic impact in marketing intensifies, with
companies seeking to build deeper connections with their audiences by
adopting bold and transparent approaches.
A prominent example of this trend comes from Patagonia, which captured the
public's attention during Black Friday by launching a unique campaign with  
the slogan “Don't Buy This Jacket”. This provocative initiative aimed to raise awareness of the consequences of overconsumption and encouraged consumers to think before buying impulsively. By emphasizing sustainability and responsibility, Patagonia not only created a memorable impact, but also strengthened its brand image focused on authentic values. Today's consumers are looking for brands that not only sell products, but also embody ethical principles. Thus, the emphasis on transparency and authentic engagement is emerging as an effective marketing strategy for building lasting and meaningful relationships with an increasingly aware and demanding customer base.

9. Augmented Reality and Virtual Reality more accessible

Augmented Reality and Virtual Reality offer the possibility of creating
interactive and creative advertisements. With the launch of the Facebook met
averse, these technologies have reached a new level.
In 2020, the size of the AR/VR market exceeded billions of euros. In 2024, this
figure is expected to reach 63.5 billion euros. For what? Because these
technologies are becoming more advanced, more accessible and above all
less expensive. 2024 will therefore be the start of the big leap into
virtualization for many companies.
Recent marketing campaigns incorporating AR or VR include the clothing
brand Balenciaga. The latter now allows Fortnight players to purchase virtual
outfits, from the brand, directly in the game.

10. AI at the service of influencer marketing

It was estimated that the influencer market would pass the 13 billion mark in
2022, but the figures turn out to be much higher: influencer marketing would 
be worth nearly 16.4 billion dollars. The majority of marketers dedicate more
than 20% of their spending to influencer marketing.


The next phase will be the widespread adoption of Artificial Intelligence to
detect the most relevant influencers. Indeed, algorithms are capable of
viewing and analyzing millions of content from influencers in just a few
moments. They can therefore provide a precise selection of potential partners
to meet your objectives.


The other impact of AI will be the growing popularization of virtual
influencers. These fictional characters, created by algorithms, are gaining
popularity among Generation Z. This trend has been accentuated by the
launch of virtual spaces such as Facebook's Met averse.


Samsung has also partnered with the most famous virtual influencer, Lil
Miquelon, for its #Team Galaxy campaign.

11. Marketing embraces streaming

More and more brands are starting to diversify their content to offer
customers more than just products and services.


The famous CRM Salesforce recently announced the launch of Salesforce+. A
streaming service aimed at businesses, employees of all levels and from all
sectors.


Content ranges from podcasts and series to live experiences and expert
interviews. A unique way to attract prospects and convince them of the
company's expertise. This high value-added content will inevitably have a
positive impact on the audience and should boost Salesforce sales.


Another convincing example: Mail chimp! The emailing tool offers numerous
shows on its “Presents” platform. It offers, on demand, podcasts,
documentaries, series or short films produced by its in-house studio. The objective is to demonstrate one's creativity, while helping one's audience 
solve their problems or find inspiration.


by noreply@blogger.com (Neha Tewari) at March 28, 2024 06:37 AM

March 05, 2024

Mahavir Singh

The Power of Databases and SQL | Technical keeda

 In today's data-driven world, databases play a crucial role in storing, managing, and retrieving information efficiently. One of the most widely used database management systems is SQL (Structured Query Language), a powerful tool for querying and manipulating data. In this blog, we will explore the importance of databases and SQL, their uses, and how to create and manage them effectively


The Power of Databases and SQL💪

In the digital age, where data is often considered the new oil, the role of databases and Structured Query Language (SQL) cannot be overstated. From managing vast amounts of information to facilitating efficient data retrieval and manipulation, databases and SQL play a pivotal role in modern technology ecosystems. In this blog, we'll explore the significance of databases and SQL, their applications, and the power they hold in various domains.

Understanding Databases
At its core, a database is an organized collection of structured information or data, typically stored electronically in a computer system. Databases are designed to manage and manipulate data efficiently, allowing users to store, retrieve, update, and delete information as needed.

Databases come in different forms, ranging from simple flat-file databases to complex relational databases. Relational databases, such as MySQL, PostgreSQL, and Oracle, are among the most widely used types of databases today. They organize data into tables consisting of rows and columns, with relationships established between different tables.

The Role of SQL
Structured Query Language (SQL) serves as the standard language for interacting with relational databases. SQL provides a powerful set of commands and syntax for performing various operations on data stored within a database. These operations include querying data, inserting new records, updating existing records, and deleting unwanted data.

SQL's simplicity and flexibility make it an indispensable tool for database administrators, developers, and data analysts alike. With SQL, users can write complex queries to extract valuable insights from large datasets, perform data manipulation tasks, and ensure data integrity within the database.

Applications of Databases and SQL
The applications of databases and SQL span across numerous industries and domains, including:

1. E-Commerce

In the realm of e-commerce, databases are used to store product information, customer data, and transaction records. SQL enables businesses to analyze customer behavior, track sales trends, and personalize the shopping experience through targeted marketing campaigns.

2. Banking and Finance

Banks and financial institutions rely heavily on databases and SQL for managing customer accounts, processing transactions, and detecting fraudulent activities. SQL queries are instrumental in generating financial reports, assessing risk, and ensuring compliance with regulatory requirements.

3. Healthcare

In the healthcare sector, databases store patient records, medical histories, and treatment plans. SQL enables healthcare providers to retrieve patient information quickly, streamline administrative processes, and analyze medical data to improve patient outcomes and treatment protocols.

4. Education

Educational institutions leverage databases to manage student enrollment, academic records, and course schedules. SQL queries help educators track student performance, generate progress reports, and identify areas for academic improvement.


Importance of Databases and SQL:

Databases are essential for businesses and organizations to store and organize vast amounts of data in a structured manner. They provide a centralized repository for data, making it easier to access, update, and analyze information quickly and accurately. Databases are used in various industries, including finance, healthcare, e-commerce, and more, to store customer information, inventory data, financial records, and other critical data.

SQL, on the other hand, is a standard language used to interact with databases. It allows users to create, retrieve, update, and delete data from databases using simple yet powerful commands. SQL is versatile and can be used with different database management systems such as MySQL, Oracle, SQL Server, and PostgreSQL, making it a valuable skill for data professionals and developers.


How to Create and Manage Databases with SQL:

Creating a database and managing it with SQL involves several steps:

  1. Choose a Database Management System (DBMS): Select a DBMS that best suits your needs and requirements. Popular options include MySQL, PostgreSQL, Oracle, SQL Server, and SQLite.

  2. Design the Database Schema: Define the structure of your database by creating tables, specifying columns, data types, and relationships between tables. This process is known as database schema design.

  3. Write SQL Queries: Use SQL commands to interact with the database, such as creating tables, inserting data, querying data, updating records, and deleting data. SQL queries are written in a specific syntax and follow standard conventions.

  4. Optimize Database Performance: To ensure optimal performance, index key columns, normalize data to reduce redundancy, and regularly optimize queries for efficiency.

  5. Backup and Security: Implement regular backups of your database to prevent data loss in case of system failures or errors. Ensure data security by setting access controls, encrypting sensitive information, and monitoring database activity.

    Database in SQL




    Conclusion:    In conclusion, databases and SQL form the backbone of modern data management and analysis. Their ability to store, organize, and manipulate vast amounts of information empowers organizations across various industries to make informed decisions, drive innovation, and enhance operational efficiency. As technology continues to evolve, the importance of databases and SQL in unlocking the potential of data will only continue to grow. Whether it's powering e-commerce platforms, securing financial transactions, or improving patient care, the impact of databases and SQL reverberates across virtually every aspect of our digital lives.

by noreply@blogger.com (Neha Tewari) at March 05, 2024 10:54 AM

December 13, 2023

Mahavir Singh

 What is Competitive Programming/Coding and How to Prepare for It?

Competitive programming, also known as competitive coding or sport programming, is a type of intellectual sport that involves solving well-defined algorithmic and computational problems within a specified time frame. Participants, often referred to as competitive programmers, use programming languages to write efficient and correct solutions to these problems.


Here's a guide on how to prepare for competitive programming:


1. Learn a Programming Language:

Choose a programming language you are comfortable with. Popular choices include C++, Java, and Python. Most competitive programming platforms support multiple languages.


2. Understand Data Structures and Algorithms:

Gain a strong understanding of fundamental data structures (arrays, linked lists, stacks, queues, trees) and algorithms (sorting, searching, dynamic programming, greedy algorithms).
Learn advanced data structures (heaps, hash tables, segment trees) and algorithms (Dijkstra's, Kruskal's, Floyd-Warshall) commonly used in competitive programming.


3. Practice Regularly:

Solve a variety of problems on online platforms like Codeforces, LeetCode, HackerRank, or CodeChef. These platforms offer a wide range of problems categorized by difficulty.
Participate in virtual contests to simulate real competition conditions.



4. Study Previous Contests:

Analyze and understand solutions to problems from past contests. This helps in learning different approaches and improving problem-solving skills.


5. Time Management:

Competitive programming involves time constraints. Practice solving problems within time limits to enhance your ability to manage time effectively during contests.


6. Read Editorials and Discuss Solutions:

After attempting a problem, read the editorial or solution, and understand different approaches. Discussing problems with others can provide valuable insights.



7. Learn to Debug and Optimize:

Debugging skills are crucial. Practice identifying and fixing errors quickly.
Optimize your solutions for time and space complexity. Efficient code is essential in competitive programming.



8. Participate in Contests:

Actively participate in online and onsite coding contests. Platforms like Codeforces, AtCoder, and Topcoder regularly host contests that mimic real-world competitive programming scenarios.



9. Build a Problem Bank:

Create a collection of problems you've solved or attempted. Revisit them periodically to reinforce your learning.



10. Read Books and Online Resources:

Refer to competitive programming books like "Competitive Programming" by Steven Halim and Felix Halim.
Explore online tutorials and resources that cover advanced topics.



11. Stay Updated:

Keep abreast of new algorithms, data structures, and problem-solving techniques.
Follow competitive programming communities and forums to stay connected with fellow enthusiasts.



12. Take Breaks and Stay Healthy:

Competitive programming can be intense. Take breaks to avoid burnout, and maintain a healthy lifestyle.

By consistently practicing, analyzing problems, and participating in contests, you'll sharpen your competitive programming skills. It's a continuous learning process, so stay persistent and enjoy the journey of becoming a proficient competitive coder.

by noreply@blogger.com (Neha Tewari) at December 13, 2023 06:04 AM

November 01, 2023

Mahavir Singh

What is SSO and how does it work?

 SSO stands for Single Sign-On. It is an authentication process that allows users to access multiple applications or services with a single set of login credentials (such as username and password). Instead of having separate login credentials for each application, users can log in once and gain access to various systems and resources without the need to re-enter their credentials each time.




Here's How SSO work:👇

User Attempts to Access an Application: When a user tries to access an application or service that is SSO-enabled, they are redirected to a centralized authentication server.

Authentication Server Verification: The authentication server verifies the user's credentials. This could involve checking a username and password, or it might involve more advanced methods like biometric authentication or multi-factor authentication for enhanced security.

Issuance of Authentication Token: If the user's credentials are valid, the authentication server issues a secure token, often a JSON Web Token (JWT) or Security Assertion Markup Language (SAML) token.

Token Verification: The user is then redirected back to the application with this token. The application, instead of verifying the user's credentials itself, validates the token with a trusted token verification server.

Access Granted: If the token is valid, the user is granted access to the application without needing to log in again. The application can also retrieve user information from the token if needed.





SSO offers several benefits:

Improved User Experience: Users don't have to remember multiple sets of credentials, simplifying the login process.

Enhanced Security: SSO systems often support multi-factor authentication, adding an extra layer of security. Additionally, centralized control allows for easier management of user access and permissions.

Reduced Help Desk Workload: Since users are dealing with fewer passwords, there are fewer password-related issues, reducing the workload on support staff.

Streamlined User Provisioning and Deprovisioning: When a user joins or leaves an organization, SSO systems can easily grant or revoke access to multiple services in one go, ensuring timely updates to user access.








Types of SSO : 

SSO, or Single Sign-On, is a technology that enables users to log in once and gain access to multiple applications or services without needing to log in again. There are several types of Single Sign-On solutions, each catering to different needs and scenarios:


Enterprise Single Sign-On (ESSO): ESSO is designed for organizations and allows users within an enterprise network to access various applications and systems with a single set of credentials. This simplifies the login process for employees and enhances security by reducing the number of passwords users need to remember.


Web Single Sign-On (Web SSO): Web SSO enables users to log in once and access multiple web applications within a particular domain. It's widely used on the internet, especially in scenarios where users need to access different web services without having to log in separately for each one.


Federated Single Sign-On: Federated SSO allows users from one organization to access resources or services in another organization without having to create and manage separate user accounts. This is often used in collaborations between different companies or organizations.


Social Single Sign-On: Social SSO allows users to log in to third-party applications or websites using their social media credentials, such as Facebook, Google, or Twitter accounts. It simplifies the registration and login process for users and helps applications gather necessary user information.


Mobile Single Sign-On: Mobile SSO provides users with seamless access to multiple mobile applications after a one-time authentication. It's commonly used in mobile environments where users access various apps on their smartphones or tablets.


Each type of SSO has its advantages and is suitable for specific use cases, helping users and organizations streamline their authentication processes and enhance user experience.










by noreply@blogger.com (Neha Tewari) at November 01, 2023 11:48 AM

October 16, 2023

Mahavir Singh

Unraveling the World of Code: A Journey into the Realm of Programming

Unraveling the World of Code: A Journey into the Realm of Programming

In the digital age, where technology permeates every facet of our lives, the art of coding stands as the backbone of innovation. From the websites we browse to the apps we use, coding shapes the digital landscape we navigate daily. In this blog post, we will embark on an exciting journey into the fascinating world of coding, exploring its significance, the thrill it offers, and the boundless opportunities it presents.

Programmer , Computer Code 


The Language of the Future

Coding, also known as programming, is the process of designing and building executable computer software to accomplish a specific task. It involves using programming languages such as Python, Java, or JavaScript to create intricate algorithms and logical instructions that computers understand and execute. As the demand for technology professionals continues to soar, learning how to code has become a valuable skill set, akin to learning a new language that opens doors to diverse career paths.


The Art and Science of Problem-Solving

At its core, coding is about problem-solving. Programmers tackle real-world challenges by breaking them down into smaller, manageable pieces and devising elegant solutions through code. The thrill of coding lies in the 'Aha!' moment when a complex problem is cracked, unveiling a world of endless possibilities. Whether it's developing an app to streamline processes or creating a website that captivates audiences, coding empowers individuals to bring their ideas to life.

The Joy of Creating💁

Coding is not just about zeros and ones; it's about creativity and innovation. Programmers are akin to artists, sculpting their visions into digital reality. The ability to create something tangible from lines of code fosters a sense of accomplishment and pride. Whether you're building a game, designing a user-friendly interface, or optimizing an algorithm, the joy of creation is a constant companion on the coding journey.


The Collaborative Nature of Codingu aj 

Contrary to popular belief, coding is not a solitary endeavor. Collaboration is at the heart of the programming community. Open-source projects, online coding communities, and collaborative platforms enable programmers worldwide to work together, share knowledge, and solve problems collectively. The sense of camaraderie among coders fosters an environment where learning is continuous, and creativity knows no bounds.

Embracing Challenges and Cultivating Resilience

Coding is not always smooth sailing. Programmers encounter bugs, errors, and unforeseen challenges that test their patience and resilience. However, these obstacles serve as valuable learning experiences, teaching coders to analyze, troubleshoot, and refine their code. Embracing challenges not only enhances coding skills but also nurtures a mindset of perseverance and adaptability, essential qualities in an ever-evolving tech landscape.


Conclusion: The Code to a Brighter Future👇

In conclusion, coding is a powerful tool that empowers individuals to shape the future. As we delve into this intricate world, we discover not only the intricacies of programming but also the boundless potential it holds. Whether you're a seasoned developer or a curious beginner, coding welcomes all into its fold, offering a transformative experience that transcends the digital realm.


So, seize the opportunity, embark on the coding journey, and unravel the endless possibilities that await. As you navigate the syntax and algorithms, remember that every line of code you write contributes to a brighter, technologically enriched future.

by noreply@blogger.com (Neha Tewari) at October 16, 2023 05:00 AM

May 03, 2023

Mahavir Singh

Tips for Debugging Common JavaScript Errors

Tips for Debugging Common JavaScript Errors

Introduction

Debugging JavaScript code is an essential part of the development process. It's an iterative process that helps developers identify and fix errors or bugs in their code. Although debugging may seem daunting, especially for beginners, it's an essential skill for developers. In this blog post, we'll look at some common JavaScript errors and provide some tips for debugging them.

 


Common JavaScript Errors

JavaScript is a language that's relatively easy to learn, but it can be tricky when it comes to debugging. Here are some of the most common JavaScript errors that developers encounter:

 

Undefined Variables

One of the most common errors that developers encounter is the undefined variable error. This error occurs when you try to access a variable that hasn't been defined.

var x; console.log(x); // undefined console.log(y); // Uncaught ReferenceError: y is not defined

In the above code snippet, we declare a variable x but don't assign any value to it. When we log the value of x, we get undefined. However, when we try to log the value of y, which hasn't been defined, we get a ReferenceError.

 

Type Errors

Type errors occur when you try to perform an operation on a variable that's of the wrong type. For example:

var x = "Hello";
console.log(x / 2); // NaN

In the above code snippet, we try to divide the string x by 2. Since the string isn't a number, we get a NaN (Not a Number) error.

 

Syntax Errors

Syntax errors occur when you have a typo or an error in your code that prevents it from being parsed correctly. For example:

var x = 5
console.log(x;


In the above code snippet, we forget to close the parentheses on the console.log statement. This results in a SyntaxError.

 

Null Reference Errors

Null reference errors occur when you try to access a property or method of a null or undefined object. For example:

var obj = null;
console.log(obj.property); // Uncaught TypeError: Cannot read property 'property' of null

In the above code snippet, we declare an object obj and set it to null. When we try to access the property of the object, we get a TypeError.

 

Object Not Found Errors

Object not found errors occur when you try to access a property or method of an object that doesn't exist. For example:

var obj = {};
console.log(obj.property); // undefined
console.log(obj.method()); // Uncaught TypeError: obj.method is not a function

In the above code snippet, we declare an empty object obj. When we try to access the property of the object, we get undefined. However, when we try to call the method of the object, which hasn't been defined, we get a TypeError.

 

Tips for Debugging JavaScript Errors

Debugging JavaScript errors can be a frustrating process, but with the right tools and techniques, it can become more manageable. Here are some tips for debugging common JavaScript errors:

 

Use the Console

The console is a powerful tool that can help you identify errors in your JavaScript code. You can use the console to log variables and values, which can help you identify where the error is occurring.

 

For example:

var x = 5;
console.log(x);


In the above code snippet, we declare a variable x and set it to 5. We then log the value of x to the console using console.log(x). This will output the value of x to the console, which can help you identify any issues with the variable.

 

You can also use the console to debug more complex issues by logging the values of multiple variables and using conditional statements to identify the problem.

 


Use Breakpoints

Breakpoints are another powerful tool that can help you debug your JavaScript code. You can set breakpoints in your code to pause execution at a specific point and inspect the values of variables and objects.

 

For example:

var x = 5;
var y = 10;
var z = x + y;
console.log(z);


In the above code snippet, we declare three variables x, y, and z. We then set z equal to the sum of x and y and log the value of z to the console.

 

If we set a breakpoint on the line where we declare z, the execution of the code will pause when it reaches that line. We can then inspect the values of x, y, and z to ensure that they are correct.

 

Use Debugging Tools

Most modern web browsers come with built-in debugging tools that you can use to debug your JavaScript code. The most popular debugging tools are Chrome DevTools and Firefox DevTools.

 

DevTools provide a range of features that can help you debug your code, including a console, breakpoints, and the ability to step through your code line by line.

 

For example, in Chrome DevTools, you can access the console by pressing CTRL+SHIFT+J (Windows) or CMD+OPT+J (Mac). You can set breakpoints by clicking on the line number in the source code window, and you can step through your code using the controls at the top of the console window.


Check for Typos

Typos are a common source of errors in JavaScript code. Even experienced developers can make mistakes when typing out their code. Therefore, it's essential to check for typos in your code.

 

You can use a linter or a code editor with built-in spell-checking to catch typos as you write your code. Additionally, you can use a tool like JSHint or ESLint to check your code for common errors and enforce best practices.

 

Conclusion

Debugging JavaScript code can be a challenging task, but with the right tools and techniques, it can become much more manageable. In this blog post, we've looked at some common JavaScript errors and provided tips for debugging them.

 

Remember, debugging is an iterative process. It requires patience, persistence, and a willingness to learn. By using the tips and techniques outlined in this blog post, you can become a more effective and efficient JavaScript developer.


by noreply@blogger.com (Unknown) at May 03, 2023 12:43 PM

March 24, 2023

Mahavir Singh

Flutter vs. React Native: Which is Better in 2023?

Flutter vs. React Native: Which is Better in 2023?

Mobile app development has become one of the most popular industries in recent years. With the rise of smartphones, the demand for mobile apps has skyrocketed. Today, there are over 5 billion mobile phone users worldwide, and the number is expected to keep growing. In this blog, we'll take a look at two of the most popular cross-platform app development frameworks, Flutter and React Native, and compare them to determine which is better in 2023.

Compare Flutter and React Native in 2023: Which cross-platform framework offers better performance, usability, and developer experience?


1. Why is a mobile app development so popular?

 Mobile app development has become popular because mobile phones have become an integral part of our daily lives. People use mobile phones for communication, entertainment, shopping, and even work. Mobile apps provide a convenient way for users to access the services they need, and for businesses to reach their target audience.

2. What is cross-platform app development?

 Cross-platform app development is the process of creating mobile apps that can run on multiple operating systems, such as Android and iOS. This approach saves time and money for developers since they can write code once and deploy it on multiple platforms.

3.The history of Flutter and React Native

 Flutter was first introduced by Google in 2017, while React Native was released by Facebook in 2015. Both frameworks have gained a lot of popularity in recent years, and both are open-source.

4.How Flutter and React Native compare 

Flutter uses Dart programming language, while React Native uses JavaScript. Flutter has a "hot reload" feature that allows developers to see changes in real-time, while React Native does not. Flutter is known for its customizable widgets and UI, while React Native offers a more native look and feel.

5. How cross-platform development frameworks work

 Cross-platform development frameworks work by providing a set of tools and libraries that allow developers to write code once and deploy it on multiple platforms. The frameworks use a native rendering engine to ensure that the app looks and feels like a native app on each platform.

6.Building mobile apps is fun 

again One of the great things about Flutter and React Native is that they make building mobile apps fun again. Developers can focus on building great apps rather than worrying about the technical details of each platform.

7.Pros and cons of Flutter and React Native Apps Flutter Pros:

•             Customizable UI

•             Hot reload

•             Fast development time

•             Access to Google's extensive library of tools and services

Flutter Cons:

•             Smaller community compared to React Native

•             Limited third-party libraries

React Native Pros:

•             More native look and feel

•             Large and active community

•             Access to a vast array of third-party libraries

React Native Cons:

•             Slower development time compared to Flutter

•             Limited customization options

8.Is Flutter or React Native easier to learn?

 Both frameworks have a learning curve, but Flutter is considered to be easier to learn for developers who are new to mobile app development. Flutter's documentation is extensive and easy to follow, and the framework's Dart language is straightforward.

9.The Best Backend for Flutter

 Flutter works well with Google Firebase as a backend. Firebase provides a cloud-based serverless backend that includes a real-time database, authentication, and cloud storage.

10.The Best Backend for React Native 

React Native works well with Node.js and MongoDB as a backend. Node.js is a popular JavaScript runtime, while MongoDB is a NoSQL database that can handle large amounts of data.

11. Flutter vs. React Native

 in 2023 Both Flutter and React Native will continue to be popular cross-platform development frameworks in 2023. Flutter's customizable UI and hot reload feature will make it attractive to developers who want to create unique and visually appealing apps. React Native's more native look and feel will appeal to developers who want their app to have a more traditional appearance. In terms of community, React Native has a larger and more established community, which means it may be easier to find resources and solutions to common problems.

However, Flutter's growing popularity and its integration with Google's extensive library of tools and services could level the playing field. Additionally, Flutter's faster development time could make it more appealing to businesses that want to quickly bring their app to market.

Ultimately, the choice between Flutter and React Native will depend on the specific needs and preferences of the developer or business. It's important to consider factors such as development time, customization options, community support, and available third-party libraries.

12.Closing 

In conclusion, both Flutter and React Native are excellent cross-platform development frameworks that have their own unique strengths and weaknesses. As mobile app development continues to grow in popularity, it's important for developers and businesses to stay up to date with the latest trends and tools.

Whether you choose Flutter or React Native, the most important thing is to create a great app that provides value to users. With the right development tools and a solid backend, you can build a mobile app that stands out in the crowded app marketplace.

13.  FAQs 

Q: Can Flutter and React Native be used for web development?

 A: While Flutter and React Native are primarily designed for mobile app development, they can also be used for web development with some limitations.

Q: Which language is easier to learn: Dart or JavaScript?

 A: Dart is considered to be easier to learn than JavaScript, especially for developers who are new to mobile app development.

Q: What is the cost of using Flutter or React Native?

 A: Both Flutter and React Native are free and open-source, which means there are no licensing costs. However, there may be costs associated with backend services and third-party libraries.

Q: Can Flutter and React Native apps run on both iOS and Android devices?

 A: Yes, both Flutter and React Native allow you to develop apps that can run on both iOS and Android devices.

Q: What backend options are available for Flutter and React Native? 

A: For Flutter, Google Firebase is a popular backend option that provides a variety of services such as hosting, database, and authentication. For React Native, you can use a variety of backend options such as Node.js, GraphQL, and Firebase.

Q: Which framework has better performance: Flutter or React Native?

 A: Flutter is generally considered to have better performance than React Native due to its use of a reactive programming model and the Dart language's ability to compile code to native machine code.

Q: Is Flutter or React Native better for developing complex mobile apps?

A: Both Flutter and React Native are capable of developing complex mobile apps. However, Flutter's faster development time and ease of customization may make it more appealing for developers working on complex projects.

 

Q: Are there any notable apps developed using Flutter or React Native?

A: Yes, some notable apps developed using Flutter include Google Ads, Alibaba, and Reflectly. Notable apps developed using React Native include Facebook, Instagram, and Airbnb.

 

Overall, both Flutter and React Native have their strengths and weaknesses, and the choice between them will depend on your specific needs and preferences. However, with their growing popularity and the support of large communities, both frameworks are viable options for developing high-quality cross-platform mobile apps in 2023 and beyond.

  

by noreply@blogger.com (Unknown) at March 24, 2023 02:11 PM

February 23, 2023

Mahavir Singh

Top 10 website for competitive programming

Top 10 website for competitive programming 

Competitive programming has become a popular sport among coders in recent years. It is a way to sharpen your coding skills and compete with other programmers from around the world. But, with so many websites offering competitive programming challenges, it can be challenging to choose the right one for you. In this blog post, we will explore the top 10 websites for competitive programming, their features, and what makes them stand out.



  • Codeforces

Codeforces is one of the most popular competitive programming websites out there. It offers challenges in various domains like algorithms, data structures, and mathematics. Codeforces also allows you to participate in contests and rating systems, where you can compare your performance with other programmers. The website has a user-friendly interface and provides detailed analysis and solutions for each challenge.


  • HackerRank

HackerRank is another popular website for competitive programming. It offers challenges in domains like algorithms, data structures, mathematics, and artificial intelligence. The website has a vast library of challenges, ranging from easy to difficult, and allows you to participate in contests and challenges. HackerRank also offers a certification program that validates your skills and expertise.


  • LeetCode

LeetCode is a website that provides a platform for programmers to improve their coding skills. The website offers challenges in various domains like algorithms, data structures, and mathematics. LeetCode also provides solutions to each challenge, making it easier for programmers to learn from their mistakes.


  • TopCoder

TopCoder is one of the oldest and most popular competitive programming websites out there. It offers challenges in various domains like algorithms, data structures, and mathematics. The website has a rating system that allows you to compare your performance with other programmers. TopCoder also offers prizes for winning challenges, making it an excellent platform to showcase your skills.


  • CodeChef

CodeChef is a website that offers competitive programming challenges in domains like algorithms, data structures, mathematics, and artificial intelligence. It also offers a rating system that allows you to compare your performance with other programmers. CodeChef also provides solutions to each challenge, making it easier for programmers to learn and improve their skills.


  • AtCoder

AtCoder is a website that offers competitive programming challenges in various domains like algorithms, data structures, mathematics, and artificial intelligence. It also provides a rating system that allows you to compare your performance with other programmers. AtCoder also offers prizes for winning challenges, making it an excellent platform to showcase your skills.


  • Codewars

Codewars is a website that provides a platform for programmers to improve their coding skills. It offers challenges in various domains like algorithms, data structures, mathematics, and artificial intelligence. Codewars also allows you to participate in challenges and contests and provides solutions to each challenge.


  • SPOJ

SPOJ is a website that offers a vast library of programming challenges in various domains like algorithms, data structures, mathematics, and artificial intelligence. It also has a ranking system that allows you to compare your performance with other programmers. SPOJ provides solutions to each challenge, making it easier for programmers to learn and improve their skills.


  • Project Euler

Project Euler is a website that provides a platform for programmers to improve their mathematical and problem-solving skills. It offers challenges that require mathematical and logical reasoning to solve. Project Euler provides solutions to each challenge, making it easier for programmers to learn and improve their skills.


  • Google Code Jam

Google Code Jam is an annual programming competition hosted by Google. It offers challenging programming problems that require problem-solving and coding skills. The competition is open to programmers from all over the world and offers cash prizes for winners. Google Code Jam is an excellent platform to showcase your skills and compete with other programmers.


In conclusion, these are the top 10 websites for competitive programming. Each website offers

by noreply@blogger.com (Unknown) at February 23, 2023 10:39 AM

February 15, 2023

Mahavir Singh

10 Useful Tips and Tricks for Using Git | Git tips and tricks

10 Useful Tips and Tricks for Using Git | Git tips and tricks  

Hey, there fellow developers! As you already know, Git is one of the most popular version control systems used in software development. Whether you're a beginner or a pro, there are always some tricks and tips that can help you use Git more efficiently and effectively. In this blog post, we'll be discussing ten of the most useful tips and tricks for using Git..

10 Useful Tips and Tricks for Using Git | Git tips and tricks


  • Always Use Branches

Using branches is one of the most important aspects of Git. It allows you to work on different parts of the project without interfering with the main code. Always create a new branch for a new feature, bug fix or any other change you make. It will help you keep your codebase clean and organized.


  • Use Meaningful Commit Messages

Commit messages are important as they provide a brief explanation of what changes you made. Always write meaningful commit messages that describe the changes you've made. It will make it easier for other developers to understand what changes were made and why.


  • Keep Your Commits Small and Focused

Breaking down changes into smaller, more focused commits is a good practice. It makes it easier to track changes and revert them if necessary. When committing, think about what you're doing and make sure that each commit is small, focused and makes sense.


  • Use Interactive Rebasing

Interactive rebasing allows you to rewrite commit history. It's useful for combining multiple small commits into one or splitting large commits into smaller ones. It also helps you keep your commit history clean and organized.


  • Learn Keyboard Shortcuts

Knowing keyboard shortcuts will help you save time and make your work more efficient. Some of the most useful shortcuts include: Ctrl + Shift + N to open a new branch, Ctrl + K to delete a line, and Ctrl + P to search for a file.

git shortcut


  • Use Aliases

Aliases are shortcuts for Git commands. They help you save time and make your work more efficient. For example, instead of typing out git status every time, you can create an alias gs and use that instead.


  • Use Git Hooks

Git hooks are scripts that run automatically when certain Git events occur. They can be used to automate repetitive tasks, such as running tests, formatting code or linting. Git hooks can save you a lot of time and improve the quality of your code.


Use Git Bisect

Git bisect is a command that helps you find the commit that introduced a bug. It allows you to pinpoint exactly where the bug was introduced, making it easier to fix. It's a useful tool for debugging and can save you a lot of time.


  • Use Git Stash

Git stash is a command that allows you to temporarily save changes you've made to your code, without committing them. It's useful when you need to switch branches or work on something else but don't want to lose your changes.


  • Use Git GUIs

While the command line is a powerful tool for using Git, there are many GUIs available that can make using Git easier and more user-friendly. Some popular options include Sourcetree, GitKraken, and GitHub Desktop.


That's it for our ten useful tips and tricks for using Git. We hope that these tips will help you become a more efficient and effective Git user. Happy coding!

by noreply@blogger.com (Unknown) at February 15, 2023 06:40 AM

February 12, 2023

Mahavir Singh

Top 10 programming languages 2023 | Programming languages to learn 2023

Top 10 programming languages 2023

 

Introduction: The world of technology is constantly evolving, and as a result, the demand for skilled programmers is on the rise. With so many programming languages to choose from, it can be difficult to know where to start. However, by understanding the benefits of different programming languages and knowing what to look for, you can make an informed decision about which language to learn. In this article, we will discuss the top 10 programming languages to learn in 2023, as well as what makes each of these languages unique.

Top 10 programming languages 2023 | Programming languages to learn 2023


Criteria for Selection: 

When evaluating the best programming languages to learn in 2023, there are several important factors to consider, including job market demand, community support, ease of learning, and versatility. Additionally, the language should have a solid foundation and be actively developed to ensure that it will continue to be relevant in the future.

Top 10 Programming Languages to Learn in 2023:

1.            Python:

 Python is a high-level programming language that's easy to learn and widely used in fields such as data science, artificial intelligence, and web development. Its popularity is due in part to its versatility, as well as its large community of developers and extensive library of resources.

2.            Java: 

Java is one of the most popular programming languages in the world, and it's used for developing mobile applications, desktop applications, and enterprise-level software. Java is known for its stability, security, and scalability, making it a popular choice for businesses of all sizes.

3.            JavaScript:

 JavaScript is a versatile language that's widely used for creating dynamic and interactive web pages. JavaScript can be used to build web applications, as well as to add interactivity and other features to websites.

4.            C#:

 C# is a powerful programming language that's commonly used for developing Windows applications and video games. With its strong focus on object-oriented programming, C# provides a stable and efficient development environment that's ideal for building large-scale applications.

5.            Kotlin:

 Kotlin is a modern programming language that's compatible with Java and can be used for developing mobile and web applications. Kotlin is known for its concise and expressive syntax, making it a great choice for developers who want to write less code to achieve more.

6.            Swift:

 Swift is a fast and efficient programming language that's specifically designed for developing iOS and macOS applications. Swift is easy to learn and use, making it a great choice for developers who are new to iOS development.

7.            Go: 

Go is a statically-typed programming language that's designed for building fast and reliable software. With its focus on simplicity and efficiency, Go is an excellent choice for building high-performance, scalable applications.

8.            Ruby:

 Ruby is a high-level programming language that's often used for building web applications and scripting. Ruby's concise and expressive syntax makes it a great choice for developers who want to write code quickly and efficiently.

9.            TypeScript:

 TypeScript is a statically-typed language that's a super set of JavaScript and can be used to build large-scale applications. TypeScript adds optional type annotations and other features to JavaScript, making it easier to develop and maintain complex applications.

10.         Rust: 

Rust is a modern programming language that's designed for system-level programming and provides strong memory safety and performance guarantees. With its focus on safety and performance, Rust is an excellent choice for developers who want to build low-level software, such as operating systems, device drivers, and other critical systems.

Top 10 programming languages 2023 | Programming languages to learn 2023


Benefits of Learning These Programming Languages: 

Learning any of the programming languages mentioned above can offer a wide range of benefits, including high salary potential, a wide range of applications, and easy access to a large and supportive community of developers. Additionally, each of these languages has its own unique set of features that make it well-suited for certain types of development tasks. For example, Python is popular for data science and AI, Java for enterprise-level software, JavaScript for web development, C# for Windows development, Kotlin for mobile and web applications, Swift for iOS development, Go for high-performance software, Ruby for web development and scripting, TypeScript for large-scale applications, and Rust for low-level system-level programming.

 Furthermore, knowing multiple programming languages can also be beneficial for your career, as it opens up a wider range of job opportunities and can make you a more versatile developer. Additionally, learning a new programming language can help you expand your skillset and deepen your understanding of computer science and software development.

Conclusion:

In conclusion, the world of technology is constantly evolving, and it's important to stay up-to-date with the latest programming languages and trends. The top 10 programming languages to learn in 2023 are Python, Java, JavaScript, C#, Kotlin, Swift, Go, Ruby, TypeScript, and Rust. Each of these languages has its own unique set of features and benefits, and by choosing to learn one or more of them, you can further your career and expand your skill set. Ultimately, the best programming language to learn is the one that aligns with your interests and career goals.

 

by noreply@blogger.com (Unknown) at February 12, 2023 02:29 AM

February 08, 2023

Mahavir Singh

Top programming languages for the future

 

Top programming languages for the future

Introduction:

As technology continues to advance, the world of software development is constantly changing. New programming languages are being created, while older languages are being updated to meet the demands of the modern world. With so many options available, it can be difficult to know which programming languages will be most in-demand in the future. In this blog, we’ll explore the top programming languages that are expected to shape the future of software development.

 


Python:

Python is a high-level, general-purpose programming language that is widely used for web development, scientific computing, data analysis, and machine learning. Its easy-to-learn syntax and vast libraries make it a popular choice for beginner and experienced developers alike. Python is also highly versatile, making it a popular choice for a wide range of applications, from automation to web development and scientific computing. With the increasing demand for data science and machine learning, the popularity of Python is expected to continue to grow in the coming years.

 

JavaScript:

JavaScript is a client-side scripting language that is widely used for web development. It is known for its flexibility and ease of use, making it a popular choice for front-end web development. With the advent of new frameworks such as React and Angular, JavaScript has become increasingly powerful, allowing developers to create complex single-page applications. As the web continues to evolve, the demand for JavaScript developers is expected to remain high.

 

Rust:

Rust is a systems programming language that was created with speed, reliability, and safety in mind. Developed by Mozilla, Rust is designed to offer a safer and more efficient alternative to C++ for low-level systems programming. With its fast performance and low memory usage, Rust is an ideal choice for high-performance systems development. Additionally, its design helps prevent common programming errors, making it a popular choice among developers for building secure and reliable systems.

 

Kotlin:

Kotlin is a statically-typed programming language that is designed to be compatible with Java. It is a cross-platform language that is used for developing Android apps, server-side applications, and web development. Kotlin’s concise syntax and simplicity make it a popular choice among developers, and its official support by Google for Android development has helped to boost its popularity in recent years. With the continued growth of the mobile app market, the demand for Kotlin developers is expected to remain strong.

 

Swift:

Swift is a general-purpose programming language that was created by Apple for developing iOS, macOS, watchOS, and tvOS applications. It is known for its fast performance, security, and interactive nature, making it an ideal choice for high-performance applications on Apple devices. Swift’s simplicity and ease of use make it a popular choice for beginner developers, and its growing popularity is expected to continue in the coming years.

 

Conclusion:

As the software development industry continues to evolve, the choice of programming languages will play a significant role in shaping the future. The programming languages discussed above are expected to be in high demand in the coming years, each offering unique advantages and disadvantages. It’s important for developers to stay informed and up-to-date on the latest trends and advancements in the field to remain relevant in the rapidly changing tech landscape. Whether you’re a beginner or an experienced developer, it’s never too late to learn a new programming language and stay ahead of the curve.



by noreply@blogger.com (Unknown) at February 08, 2023 11:13 AM

February 05, 2023

Mahavir Singh

An Overview of the Most Common Types of Operating Systems

An Overview of the Most Common Types of Operating Systems



Operating Systems (OS) plays a critical role in the functioning of a computer system. They act as a mediator between the hardware and software of a computer, managing the allocation of resources and services and providing a user-friendly interface. With the ever-growing popularity of computer technology, the number of operating systems available has grown, each serving a specific purpose. In this blog, we will explore the most commonly used operating systems, their features, and their applications.

  • Windows: Windows is a popular operating system developed by Microsoft Corporation. It is used on personal computers, laptops, and servers. Windows OS provides a graphical user interface (GUI), making it easier for users to interact with the computer. The latest version of Windows is Windows 10, which has several features like Cortana, Microsoft Edge, and improved security features. Windows is known for its ease of use and compatibility with a wide range of software and hardware, making it a popular choice for personal computers.
  • macOS: macOS is an operating system developed by Apple Inc. for its Macintosh line of computers. It is designed to work with Apple's hardware, and its user interface is similar to that of iOS. The latest version of macOS is Big Sur, which has a new design, enhanced privacy features, and improved performance. macOS is known for its stability and reliability, making it a popular choice for creative professionals who require a high-performance system for their work.
  • Linux: Linux is a free and open-source operating system that is widely used for servers, supercomputers, and embedded systems. It is widely considered to be one of the most secure operating systems available, with a large community of developers who contribute to its development. Linux is available in many different distributions, including Fedora, Ubuntu, and CentOS, each with its own unique features and applications. Linux is a popular choice for web hosting, scientific computing, and database management, due to its stability and security.
  • Chrome OS: Chrome OS is an operating system developed by Google and is based on the Chrome browser. It is designed to work primarily with web applications and is optimized for use with Chromebooks. Chrome OS provides a simple and secure interface, with easy access to the web and Google Drive. It is a popular choice for students and budget-conscious consumers, as Chromebooks are typically less expensive than traditional laptops.
  • Unix: Unix is a multi-user, multi-tasking operating system that is widely used in servers and supercomputers. Unix is known for its stability and security, and is used for a variety of purposes, including database management, web hosting, and scientific computing. Unix is also the basis for many other operating systems, including macOS and Linux.
  • iOS: iOS is an operating system developed by Apple Inc. for its line of mobile devices, including the iPhone and iPad. It provides a graphical user interface similar to that of macOS and includes features such as Siri, iMessage, and FaceTime. iOS is known for its simplicity and security, making it a popular choice for mobile devices.
  • Android: Android is an open-source operating system developed by Google and is used on a variety of mobile devices, including smartphones and tablets. Android provides a customizable user interface and has a large app store, making it a popular choice for mobile devices. With its wide range of features and compatibility with a variety of hardware, Android is a popular choice for budget-conscious consumers who want a powerful and customizable mobile device.

In conclusion, there are various types of operating systems, each serving a specific purpose. Whether you are using a personal computer, laptop, or mobile device, the operating system is the backbone of the system and is responsible for managing the resources and services of the computer. It is important to choose the right operating system for your needs, as each OS has its own strengths and weaknesses.

by noreply@blogger.com (Unknown) at February 05, 2023 03:53 AM

February 01, 2023

Mahavir Singh

Quantum Computing: The Future of Computing Technology

Quantum Computing: The Future of Computing Technology

 Quantum computing is a new type of computing technology that uses the principles of quantum mechanics to perform calculations. Unlike traditional computers that use binary digits (bits), quantum computers use quantum bits (qubits) which can exist in multiple states simultaneously, allowing quantum computers to perform many calculations at the same time. This makes them more powerful for certain tasks, such as cryptography, optimization, and simulation. As technology evolves, it has the potential to change the way we process and analyze information, revolutionize industries, and solve complex problems. Whether you are a computer science professional, a student, or just curious about this exciting field, learning about quantum computing is a valuable investment in your future. Stay ahead of the curve by exploring the advances and applications of quantum computing today.

 




Quantum Computing: A Revolution in Computing Technology

Quantum computing is a revolutionary technology that is poised to change the face of computing as we know it. The technology leverages the unique properties of quantum mechanics to perform calculations and solve problems that are beyond the capabilities of traditional computers. In this blog, we will explore what quantum computing is, how it works, and its potential applications.

What is Quantum Computing?

Quantum computing is a type of computing that uses the principles of quantum mechanics to perform calculations. Unlike traditional computers, which use binary digits (bits) to store and process information, quantum computers use quantum bits, or qubits. Qubits are similar to bits in that they can store information, but they have a unique property that allows them to exist in multiple states simultaneously, known as superposition. This property allows quantum computers to perform many calculations simultaneously, making them much faster and more powerful than traditional computers.

How Does Quantum Computing Work?

Quantum computing works by using quantum mechanics to process information. Quantum mechanics is a branch of physics that studies the behavior of matter and energy at the subatomic level. The properties of quantum mechanics, such as superposition and entanglement, are leveraged by quantum computers to perform calculations in a much more efficient manner.

Quantum computers use qubits, which can be in multiple states at the same time, to store and process information. When a qubit is in a superposition state, it can represent multiple values simultaneously, allowing quantum computers to perform many calculations at the same time. Additionally, qubits can be entangled, meaning that the state of one qubit is directly connected to the state of another qubit. This allows quantum computers to perform complex calculations much faster than traditional computers.

Potential Applications of Quantum Computing

Quantum computing has the potential to revolutionize a wide range of industries and applications. Some of the most promising areas of application include cryptography, optimization, simulation, and machine learning.

Cryptography: Quantum computers can be used to break traditional encryption methods, making them ideal for developing new, more secure encryption algorithms.

Optimization: Quantum computers can solve complex optimization problems, such as scheduling and resource allocation, much faster and more accurately than traditional computers.

Simulation: Quantum computers can perform simulations of complex systems, such as quantum systems and chemical reactions, much faster and more accurately than traditional computers.

Machine Learning: Quantum computers can be used to develop more advanced machine learning algorithms, allowing them to process and analyze large amounts of data much faster and more accurately.

In conclusion, quantum computing is a rapidly growing field with enormous potential for revolutionizing the way we process and analyze information. As technology continues to evolve, it has the potential to change the way we live, work, and interact with the world.

by noreply@blogger.com (Unknown) at February 01, 2023 02:24 AM

January 29, 2023

Mahavir Singh

you 8 investment strategies to save tax in India 2023

Top 8 investment strategies to save tax in India 2023? 


Do you know? You can pay zero tax if your Annual CTC is 10 Lakhs per annum. Here I am going to tell you 8 investment strategies to save tax in India in 2023. But how?



 How a software engineer can save tax If an annual CTC is under 10 LPA 2023?

8 investment strategies to save tax in India in 2023-


1- Avail Standard deduction of ₹50,000/-
u/s 16(ia) of the Income Tax Act.


2- Pay the health insurance premium of your senior citizen parents and get an exemption of ₹50,000

3- Invest in NPS (National Pension System)& claim ₹50,000 under section 80CCD (1B) of the Income Tax Act.

4- Invest in EPF, PPF, ELSS, Government Bonds, NSC etc. or paying LIC premium of self, you can claim a maximum deductible of ₹1,50,000

5- You can avail an exemption of ₹25,000 on self-health insurance premiums under Section 80D of the Income Tax Act.

6- You can avail ₹25,000 more deductions with ₹5,000 on preventative health check-up activities within the aforementioned 80D limit.

7- Claim a deduction of ₹60,000 on your HRA u/s 10 (13A) (will post the calculation methods in the coming posts)

8- if you had taken an education loan then claim the interest paid for higher education

Note: I didn’t add a home loan interest exemption of ₹2,00,000 since an individual with ₹10LPA package should not opt for any home loans. It is always advisable for me to earn a minimum of ₹16 LPA to opt for a home loan 🏡

🪝With all of these strategies your net taxable income will be ₹5 lakhs or less than that. Thus, you pay ₹0 tax 😃

by noreply@blogger.com (Unknown) at January 29, 2023 10:47 AM

January 24, 2023

Mahavir Singh

2545. Sort the Students by Their Kth Score leetcode problem Solution c++ | How to sort 2D vectors in c++ using a custom comparator in c++

 2545. Sort the Students by Their Kth Score Solution c++-

How to sort 2D vectors in c++ using a custom comparator in c++.

This problem is part of leetcode 2545. Here we have to sort a 2D vector using custom comparator 
lets read problem statement first 

problem statement -


There is a class with m students and n exams. You are given a 0-indexed m x n integer matrix score, where each row represents one student and score[i][j] denotes the score the ith student got in the jth exam. The matrix score contains distinct integers only.

You are also given an integer k. Sort the students (i.e., the rows of the matrix) by their scores in the kth (0-indexed) exam from the highest to the lowest.

Return the matrix after sorting it.

 

Example 1:

Input: score = [[10,6,9,1],[7,5,11,2],[4,8,3,15]], k = 2
Output: [[7,5,11,2],[10,6,9,1],[4,8,3,15]]
Explanation: In the above diagram, S denotes the student, while E denotes the exam.
- The student with index 1 scored 11 in exam 2, which is the highest score, so they got first place.
- The student with index 0 scored 9 in exam 2, which is the second highest score, so they got second place.
- The student with index 2 scored 3 in exam 2, which is the lowest score, so they got third place.

Example 2:

Input: score = [[3,4],[5,6]], k = 0
Output: [[5,6],[3,4]]
Explanation: In the above diagram, S denotes the student, while E denotes the exam.
- The student with index 1 scored 5 in exam 0, which is the highest score, so they got first place.
- The student with index 0 scored 3 in exam 0, which is the lowest score, so they got second place.

 

Constraints:

  • m == score.length
  • n == score[i].length
  • 1 <= m, n <= 250
  • 1 <= score[i][j] <= 105
  • score consists of distinct integers.
  • 0 <= k < n

Explanation

Sort on A[i][k]

Complexity

Time O(quick sort)
Space O(quick sort)

Java

    public int[][] sortTheStudents(int[][] A, int k) {
        Arrays.sort(A, (a, b) -> b[k] - a[k]);
        return A;
    }

C++

    vector<vector<int>> sortTheStudents(vector<vector<int>>& A, int k) {
        sort(A.begin(), A.end(), [&](auto const & a, auto const & b) {
            return a[k] > b[k];
        });
        return A;
    }

C++

   static int i=0;
class Solution {
public:
   
   static bool compareScore(vector<int> &v1, vector<int> &v2){
    if(v1[i]>v2[i]){
        return true;
    }
    return false;
}
    vector<vector<int>> sortTheStudents(vector<vector<int>>& score, int k) {
       
        i=k;
        sort(score.begin(), score.end(), compareScore);
        return score;

       
    }  
};


Python
return new copy

    def sortTheStudents(self, A, k):
        return sorted(A, key=lambda a: -a[k])

by noreply@blogger.com (Unknown) at January 24, 2023 01:59 AM

January 18, 2023

Mahavir Singh

30 Best Websites For Finding Remote Work Online In 2023

 30 Best Websites For Finding Remote Work Online In 2023


1.     Upwork
2.     Freelancer.com
3.     Fiverr
4.     PeoplePerHour
5.     Guru.com
6.     SimplyHired
7.     FlexJobs
8.     Indeed.com
9.     Remote.co
10.  We Work Remotely
11.  Virtual Vocations
12.  Workhoppers
13.  Working Nomads
14.  PowerToFly
15.  Remote
16.  AngelList
17.  writerbay
18.  Remote Okay
19.  Outsourcely
20.  Toptal
21.  Hirable
22.  FlexJobs
23.  Remotely.works
24.  WFH Recruitment
25.  Jobbatical
26.  Remote Workers
27.  DistantJob
28.  Remotive
29.  Jobrack
30.  Remote Staff


by noreply@blogger.com (Unknown) at January 18, 2023 07:38 AM

October 17, 2022

Mahavir Singh

Career Portal of different software companies | Job for software engineer

Career Portal of different software companies | Job for software engineer 

Top 58 companies' career portals for software engineers -

 Company Career Portal Link




1. TCS : https://lnkd.in/dJpHXdvv
2. Infosys : https://lnkd.in/dEcdZ7gf
3. Wipro: https://lnkd.in/d89txDcp
4. Cognizant: https://lnkd.in/d6tp6F_p
5. LTI: https://lnkd.in/dnCVuQzD
6. Capgemini: https://lnkd.in/dZBUYY88
7. DXC Technology: https://lnkd.in/dnVzT7eb
8. HCL: https://lnkd.in/dwTuQWAf
9. Hashedin: https://lnkd.in/d2ePnTG4
10. Hexaware: https://jobs.hexaware.com/
11. Revature: https://lnkd.in/dtJkkrBp
12. IBM: https://lnkd.in/dU-VhUCw
13. Nagarro: https://lnkd.in/dRyQ_rkk
14. Virtusa: https://lnkd.in/dHJwPXiG
15. Zoho: https://lnkd.in/dUw9Qi4B
16. CGI: https://lnkd.in/d3vs3whb
17. Finastra: https://lnkd.in/dsXSfUev
18. FIS: https://lnkd.in/dJCX6aVz
19. Fiserv: https://lnkd.in/d7inSReM
20. IQVIA : https://lnkd.in/dsxAXftw
21. JIO: https://lnkd.in/dqVxSNgW
22. MAQ Software: https://lnkd.in/d2dkHExY
23. Optum: https://lnkd.in/dvxb_7ds
24. Publicis Sapient: https://lnkd.in/d6G3tHUF
25. Geekyants: https://lnkd.in/dDKQVqv2
26. Accolite: https://lnkd.in/dDN5PWQk
27. Airtel:https://lnkd.in/d9i9YwjV
28. EA: https://lnkd.in/dHTe2pFc
29. Gartner: https://lnkd.in/dgsH4KUz
30. HARMAN: https://lnkd.in/dBP_hSFE
31. Yellow[.]ai: https://lnkd.in/dUPgitVf
32. Seimens : https://lnkd.in/df4czTeb
33. Samsung: https://lnkd.in/d5gUrDxq
34. Vmware: https://lnkd.in/d7zgbhXk
35. Adobe https://lnkd.in/dMWhmAKZ
36. Amazon: https://lnkd.in/dSYUatGR
37. Cadence Design Systems: https://lnkd.in/dAjV2Df4
38. CleverTap: https://lnkd.in/dUNg4sZP
39. Cisco: https://jobs.cisco.com/
40. Dunzo: https://lnkd.in/d5ZUmmG6
41. FamPay: https://apply.fampay.in/
42. Flipkart: https://lnkd.in/d_9WfsNY
43. Google: https://lnkd.in/dGMfCuRs
44. Hackererath : https://lnkd.in/ds2n7SNb
45. Morgan Stanley: https://lnkd.in/d53kRcp3
46. EY: https://lnkd.in/d9MbsS3V
47. MyGate: https://lnkd.in/d5pTjwxs
48. McAfee: https://lnkd.in/d7vST4g6
49. Oracle: https://lnkd.in/dDDbnZMu
50. Microsoft: https://lnkd.in/dKt2drwp
51. PhonePe: https://lnkd.in/dtTZzhXn
52. PWC: https://lnkd.in/d4b8DTft
53. Rakuten: https://lnkd.in/dRuSSrq2
54. Razorpay: https://lnkd.in/dveHTU3p
55. SAP: https://lnkd.in/dDVKcPST
56. Media[.]net: https://lnkd.in/dfti6QZ8
57. Twilio: https://lnkd.in/dskmG6eT
58. Byju’s: https://lnkd.in/dX4g5UrW

Source - Linkedin


by noreply@blogger.com (Unknown) at October 17, 2022 12:13 PM

July 17, 2022

Shivaditya Shivganesh

Google Summer of Code: Week 5

The previous week, I had migrated the code base from XR interaction SDK to Oculus Integration SDK for Hand Based tracking and gesture control.

The oculus SDK caused the existing UI un-interact-able with ray interactor. Because most of the UI is done using canvas, I had to revert back to XR Integration SDK.

After that,  I created the Audio Record Button for Recording the audio using the inbuilt microphone in Quest 2. The audio was clear and had no issues during playback.

The Messages sent are rendered in a Button. And when we press the button or chat we play the audio attached to it.

The existing plan is to create a flask server where audio can be stored and the users fetch using chat ID.

That's all for this week

Bye!!

by user at July 17, 2022 06:41 PM

Google Summer of Code: Week 4

This week I tried migrating from XR Interaction toolkit to Oculus Integration SDK as Oculus SDK provided Hand Based tracking which would be useful for Gesture based control.

Script for Basic Audio Recording using Mic has also been completed.

The Oculus SDK makes use of OpenVR backend, this posed an issue as OpenVR is still in experimental stages.

The UI based control for Microphone is still pending. This would entail recording and sending or broadcasting to all connected clients

That's all for this week

Ciao

by user at July 17, 2022 06:35 PM

July 03, 2022

Shivaditya Shivganesh

Google Summer of Code: Week 3

This week I worked on implementing the UI and UX for the Chat Module in VR. The UI was designed using Canvas in Unity.

The Canvas was then attached XR Rig Camera. It was converted that is rendered in world space mode.

A graphic renderer was added to the canvas element in order to interact with the XR Ray interactor.

As of now, in order to test the connection, a mock android app was also designed for testing inter device and client server communication

That's all for this week

Adios

by user at July 03, 2022 06:32 PM

June 26, 2022

Shivaditya Shivganesh

Google Summer of Code: Week 2

This week I worked on creating the chat portion of the application. I made use of TCP and sockets to design a Mock Android App that would work like a Multi client setup.

alt

Here, the Application is able to connect as well start a server. In the usual setup, the teacher would start the server and students would join to it.

Initial road blocks in implementation in VR is regarding the UI elements not rendering on screen. The sockets part remains untested and will be tested in the forthcoming weeks

That's all for this week!

by Shivaditya Shivganesh at June 26, 2022 07:24 PM

June 18, 2022

Shivaditya Shivganesh

Google Summer of Code: Week 1

This week was all about designing the static template for the project in VR. As displayed in the mockup of the environment, I have created 4 panes namely: surgery, vitals, radiography and chats.

Each of this pane has a custom component designed in blender the actual processing will be handled through code i.e. the materials will be changed on execution as and when they arrive.

The UI buttons are pending as aligning the unity canvas for 2D UI elements is a difficult task and would take some time. Additionally, the UI canvas fails to render in  action based XR rig using the world space camera, anchoring the canvas element to the main camera of the rig solves the issues temporarily.

On a second note, UI based canvas elements could be eliminated for a control system based of a 3D interactor system.

That's all for this week!

Adios!

by Shivaditya Shivganesh at June 18, 2022 08:06 AM

May 29, 2022

Mahavir Singh

Different way to calculate prime number in c++

Three different ways to calculate the prime number in c++=>


In this blog, we will see how to calculate given number is prime or not in o(N) time. 
here we will see three different methods to check whether the given number is prime or not.
Method 1=> 
Three different way to calculate the prime number in c++


Run loop from 2 to n-1 

we will run a loop from 2 to n-1 and if the number is divided by any number from 2 to n-1 we will return false that number is not a prime number otherwise we will return true.
Time complexity => O(N)

Method 2=>

Run loop from 2 to n/2 

we will run a loop from 2 to n/2 and if the number is divided by any number from 2 to n/2 we will return false that number is not a prime number otherwise we will return true.
Time complexity => O(N/2) => O(N).
This program will be faster than method 1


Method 3=> 

Run a loop from 2 to root √n 

we will run a loop from 2 to √n and if the number is divided by any number from 2 to √n  we will return false that number is not a prime number otherwise we will return true.
Time complexity => O(√n )
This program will be faster than methods 1 and 2.





by noreply@blogger.com (Unknown) at May 29, 2022 03:14 PM

May 25, 2022

Mahavir Singh

Reverse a number in c++ || C++ Program to Reverse a Number

 Reverse a number in c++ || C++ Program to Reverse a Number->

  Write a program to reverse the digits of an integer.
Input : num = 12345
Output: 54321

Input : num = 876
Output: 678


Algorithm:

Input:  num
(1) Initialize rev_num = 0
(2) Loop while num > 0
     (a) Multiply rev_num by 10 and add remainder of num  
          divide by 10 to rev_num
               rev_num = rev_num*10 + num%10;
     (b) Divide num by 10
(3) Return rev_num



by noreply@blogger.com (Unknown) at May 25, 2022 02:48 AM

May 19, 2022

Mahavir Singh

How to embed google form in your website ?

 How to embed Google form in your website ?

Google Forms is a survey administration software included as part of the free, web-based Google Docs Editors suite offered by Google. The service also includes Google Docs, Google Sheets, Google Slides, Google Drawings, Google Sites, and Google Keep. Google Forms is only available as a web application.

With Google Forms, you can create and analyze surveys right in your mobile or web browser—no special software required. You get instant results as they come in. And, you can summarize survey results at a glance with charts and graphs.


The benefit of using google form on your website -

If your website is a static website and you don't want any server cost for your website you can use google form it will save your money and it is easy to implement as well.


How to embed Google form in your website step by step-

  1. Go to Forms and open your form.
  2. Click Send.
  3. Next to Send via, click Embed .
  4. Click the HTML and click Copy.
  5. Paste the HTML into your site or blog.



by noreply@blogger.com (Unknown) at May 19, 2022 04:53 AM

May 15, 2022

Mahavir Singh

What are promises in JavaScript ?

 What are promises in JavaScript ?

Promises are used to handle asynchronous operations in JavaScript. They are easy to manage when dealing with multiple asynchronous operations where callbacks can create callback hell leading to unmanageable code. 


Promise is a proxy for a value not necessarily known when the promise is created. It allows you to associate handlers with an asynchronous action's eventual success value or failure reason. This lets asynchronous methods return values like synchronous methods: instead of immediately returning the final value, the asynchronous method returns a promise to supply the value at some point in the future.

Promise is in one of these states:

  • pending: initial state, neither fulfilled nor rejected.
  • fulfilled: meaning that the operation was completed successfully.
  • rejected: meaning that the operation failed.


 Why do we need Promises?

JavaScript is a single-threaded language because while running code on a single thread, it can be really easy to implement as we don't have to deal with the complicated scenarios that arise in the multi-threaded environment like deadlock. Since JavaScript is a single-threaded language, it is synchronous in nature.

Syntax-
var promise = new Promise(function(resolve, reject){
     //do something
});

Promise Example-


var promise = new Promise(function(resolve, reject) {
resolve('Technical Keeda');
})

promise
.then(function(successMessage) {
//success handler function is invoked
console.log(successMessage);
}, function(errorMessage) {
console.log(errorMessage);
})

Examples: Promise Rejected-


var promise = new Promise(function(resolve, reject) {
reject('Promise Rejected')
})
promise
.then(function(successMessage) {
console.log(successMessage);
})
.catch(function(errorMessage) {
//error handler function is invoked
console.log(errorMessage);
});


Promises Applications In java script-

  1. Promises are used for asynchronous handling of events.
  2. Promises are used to handle asynchronous http requests
Referencehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

by noreply@blogger.com (Unknown) at May 15, 2022 09:11 AM

May 09, 2022

Mahavir Singh

How to create rotating Image animation in css ? How to create 360 degree rotating Image animation in css ?

 How to create rotating Image animation in CSS ? How to create 360-degree rotating Image animation in CSS ?



What are CSS Animations?

An animation lets an element gradually change from one style to another.

You can change as many CSS properties you want, as many times as you want.

To use CSS animation, you must first specify some keyframes for the animation.

Keyframes hold what styles the element will have at certain times.


Solution-


We will add the CSS command to the element we wish to rotate in this example. You can adjust the 2s to slow or speed up the rotation duration and rotate to 360 degrees in animation.


by noreply@blogger.com (Unknown) at May 09, 2022 06:30 PM

May 08, 2022

Mahavir Singh

Logback can't write in console ? logback.xml solution.

Problem : 

I am using Logback in my spring boot application. The problem is logback do not print my logger messages in 'eclipse' console ?



Solution ;-

just reread the logback config doku. Actually, those two should inherit both appenders from root. So, what you can try is to not specify any appender-ref on those and see what happens. If no output is written to the file then, neither - then there is something pretty strange. I'd expect that behavior if the additivity flag was set to false. But the default is appender accumulation

<logger name="package.web" level="INFO" >
        <appender-ref ref="FILE" />
</logger>
  
You need to add the console appender.
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>
<logger name="package.web" level="INFO" >
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
</logger>
credit->https://stackoverflow.com/questions/45502073/logback-cant-write-in-console


by noreply@blogger.com (Unknown) at May 08, 2022 07:40 AM

March 18, 2022

Mahavir Singh

News Publisher Information Details

I published my news application in Google Play Console and daily news updates in my application

I post news in my application and show it to the user daily I'm the owner of my news organization.

My news organization details below

App Name Dream Temp Prediction 

App Package in.technicalkeeda.dtp

Ownership information-

Organization name - Technical keeda

Address- Nainital,Uttarakhand 263135

contact details

email - mahavirsingh7399@gmail.com, 

phone number-9354446958

website-https://www.technicalkeeda.in

news Website link -> https://protected-bayou-79974.herokuapp.com/getnews

Source of New collect ->  https://protected-bayou-79974.herokuapp.com,My own API, Google news 

by noreply@blogger.com (Unknown) at March 18, 2022 02:41 AM

March 17, 2022

Mahavir Singh

DTP privacy policy

 

Privacy Policy

Last updated: March 17, 2022

This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.

We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the Privacy Policy Template.

Interpretation and Definitions

Interpretation

The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.

Definitions

For the purposes of this Privacy Policy:

  • Account means a unique account created for You to access our Service or parts of our Service.

  • Affiliate means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.

  • Application means the software program provided by the Company downloaded by You on any electronic device, named Dream Team Prediction

  • Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Dream Team Prediction .

  • Country refers to: Uttarakhand, India

  • Device means any device that can access the Service such as a computer, a cellphone or a digital tablet.

  • Personal Data is any information that relates to an identified or identifiable individual.

  • Service refers to the Application.

  • Service Provider means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.

  • Usage Data refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).

  • You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.

Collecting and Using Your Personal Data

Types of Data Collected

Personal Data

While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:

  • Usage Data

Usage Data

Usage Data is collected automatically when using the Service.

Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.

When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.

We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.

Use of Your Personal Data

The Company may use Personal Data for the following purposes:

  • To provide and maintain our Service, including to monitor the usage of our Service.

  • To manage Your Account: to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.

  • For the performance of a contract: the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.

  • To contact You: To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.

  • To provide You with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.

  • To manage Your requests: To attend and manage Your requests to Us.

  • For business transfers: We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.

  • For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.

We may share Your personal information in the following situations:

  • With Service Providers: We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.
  • For business transfers: We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.
  • With Affiliates: We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.
  • With business partners: We may share Your information with Our business partners to offer You certain products, services or promotions.
  • With other users: when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.
  • With Your consent: We may disclose Your personal information for any other purpose with Your consent.

Retention of Your Personal Data

The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.

The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.

Transfer of Your Personal Data

Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.

Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.

The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.

Disclosure of Your Personal Data

Business Transactions

If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.

Law enforcement

Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).

Other legal requirements

The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:

  • Comply with a legal obligation
  • Protect and defend the rights or property of the Company
  • Prevent or investigate possible wrongdoing in connection with the Service
  • Protect the personal safety of Users of the Service or the public
  • Protect against legal liability

Security of Your Personal Data

The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.

Children's Privacy

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.

If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.

Links to Other Websites

Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.

We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.

Changes to this Privacy Policy

We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.

We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

Contact Us

If you have any questions about this Privacy Policy, You can contact us:

by noreply@blogger.com (Unknown) at March 17, 2022 04:58 PM

December 05, 2021

Aishwarya Harpale

GSoC 2020 with LibreHealth : Final Report

Low Powered Models for Disease Detection and Classification for Radiology Images


Project Description -

The aim of this project is to create Deep Learning models for detection and classification of radiology images. The models must be compressed such that they can be deployed to low powered devices like ARM devices, Android devices, etc. Compression techniques such as Quantization and Pruning can be used.  

 

Mentors -

Priyanshu Sinha

Saptarshi Purkayastha

Judy Gichoya

Geeta Priya Padmanabhan


Tech Stack - 

Numpy

Pandas

PyDicom

Tensorflow

Tensorflow-Lite/ Tensorflow-Model-Optimization

Docker

Qemu


Project Link - Click here

Commits - Click here  

Merge Requests - Click here


Why to do this -

There has been a lot of progress in developing Machine Learning models that predict the medical condition of a patient based upon specific inputs relevant to the diagnosis of that condition. However, these models have drawbacks while deployment in real-time on edge devices. Firstly, they have been trained on high-end GPUs that consume a lot of power and have a lot of computational capacity. Edge devices function on limited power and have a considerably low computational limit. Next, these models are extremely large in size, usually a few hundred megabytes. While training, a large amount of space is available. But the same is not reflected on edge devices having low storage capacity. Healthcare professionals do not have high-end machines available for immediate usage of these models. But edge devices, being low-cost, are easily available. To tackle the problem of model deployment, we use model compression techniques that reduce four factors - power consumption, storage usage, computational cost and latency of detection models in the healthcare category.

 

What have you done -

For the purpose of this project, 2 datasets were used -

RSNA Pneumonia Detection Dataset

Chest-XRay 14 Dataset

The compression techniques used were -

Dynamic Quantization

Float16 Quantization

Int8 Quantization

Model Pruning

Model Pruning + Dynamic Quantization

Model Pruning + Float16 Quantization

Model Pruning + Int8 Quantization

 

RSNA Pneumonia Detection -

Two models were trained on this dataset - DenseNet201 and InceptionV3. We achieved the following results in the models’ performance with respect to accuracy and size.

Accuracies comparing original and compressed models -

 

Size comparing original and compressed models -

 

Accuracies comparing pruned and quantized-pruned models - 

 


Size comparing pruned and quantized-pruned models - 

 


Chest XRay14 -

Pretrained CheXNet model was used for this dataset from Bruce Chou's Github repository (link in references). The following results were obtained for this dataset.    

AUROC Score Comparison between orginial and compressed models -

AUROC Score Comparison between Pruned and Quantized Pruned models -

 

 Model Size Comparison -

 

 

How have you done it -

The general pipeline goes like this -

Step 1 - Data Exploration and Cleaning

In this step, we take raw data and explore it. We find out the number of classes, number of data items per class and the general distribution of data points. After deriving these insights, we clean the raw data to get rid of any unnecessary features or data entries. We also restructure tabular data such that it can be fed to the models. This involves steps like creating one-hot encoding of labels, creating extra columns, modifing path variable to redirect to images. In case of images, activities such as augmentation, resizing, shearing, etc are performed. 

Step 2 - Modelling

This is the next step in which we initialize data generators that generate preprocessed images and labels in fixed batches. Data is split into train-val-test subsets. Model architectures are initialized. We have used 3 architectures for this project - DenseNet201, InceptionV3 and CheXNet. We also initialize callbacks, checkpoints and optimizers that will be used during training. 

Step 3 - Training and Model Evaluation

Here, we train the models till we achieve acceptable performance. The model should neither be underfit nor overfit. After training is over, we evaluate the models. We evaluated DenseNet and InceptionV3 trained on the RSNA Pnemonia Detection Dataset based on accuracy. This is because the models directly output the class of the input image. CheXNet trained on Chest-XRay14 dataset was evaluated based on AUROC score because the output was not a fixed class but a class probability score. We also record the size of this original model.

Step 4 - Model Pruning

In model pruning, we trim the unnecessary connections in the neural network. here, I have used Polynomial Decay as the sparsity function. Pruning starts from 50% and goes upto 80% of the total weights in the model. After this, we remove the excess connections and compress the layers of the neural network. This model gets saved in a .h5 format.

Step 5 - Post-training Quantization

After the models are trained, we quantize them. This is done using Tensorflow Lite Converters. There are 3 types of quantizations that we are performing in this project - Dynamic, Float16 and Int8 quantization. We initialize the converter as per our requirement and pass the pre-trained or pruned model to it. The output is a quantized model in the form of a TFLite FlatBuffer. We evaluate the quantized models based on accuracy/AUROC score (as per the original model) and size.

Step 6 - Inference

For performing inference, using normal .h5 models, we use the model.predict() fucntion. While using TFLite models, we initialize interpreters that will set the input and output tensors. We invoke the interpreter on an input image and retrive the output tensor returned by the interpreter. The inference script was run for all models - original, pruned, quantized and hybrid.

 

Future Scope -

1. Testing these models on actual hardware such as Raspberry Pi and Android phones.

2. Compressing object detection/segmentation/UV based models.

3. Creating a UI to serve these models on the frontend.

 

References -

1. https://www.tensorflow.org/lite/performance/model_optimization
2. https://youtu.be/3JWRVx1OKQQ
3. https://youtu.be/4iq-d2AmfRU
4. CheXNet - https://github.com/brucechou1983/CheXNet-Keras

by Aishwarya Harpale (noreply@blogger.com) at December 05, 2021 11:52 PM

August 29, 2021

Bhavesh Shamra

End of this Amazing Journey: GSoC-21





Hello Everyone, the GSoC-21 program has been ended and I had submitted my detailed final work report as well.  I am writing this blog to express my views about GSoC 21, the experience that I gained through this program & with the LibreHealth organisation. 

I will also provide a brief of all the work done during this journey with relevant links & details.


Overview


In various low/middle-income countries children die in just a few days after their birth due to the inadequate supply of facilities that they require. The important fact is that all of these deaths are Preventable and can be prevented by providing proper knowledge to the mothers of the babies and other people and by providing a proper tracker facility to track the health status of the baby in the early days of his birth.

As a sort of solution MHBS applications are launched which is a set of 4 applications. Out of which I had worked on the mhbs-trainer and mhbs-tracker. Tracker is used for data collection which is built from the dhis2 mobile application and trainer is used to access the resources.

The goal of this project is to develop the scale-up version of the existing mHBS application, updating the old code base and adding new features, providing a feature to access media resources uploaded on the dhis2 through the trainer app which will be used for the training of the individual.


Objectives Of The project

1. Add Media Module.
2. Update mHBS-tracker with latest dhis2 app.
3. Add offline support & sync facility for all media files.
4. Add app usage tracking module.
5. Standardize code quality.

Contributions
I am listing down the important MRs and their link. For the details please check the Final Report.
  1. Update mHBS-Tracker & Set-up CI/CD - Merge Request 12

  2. Added Media Page | Added Feature to play any type of media file | Set-up CI Pipeline - Merge Request 194

  3. Added offline support - Merge Request 195 & Merge Request 198

  4. Added System to track app usage - Merge Request 196

  5. UI Improvements & Filtering Options - Merge Request 199

  6. Exported Mhbs Tracker app Metadata - Merge Request 16

  7. Passed user credentials to trainer app - Merge Request 13

    Other Supporting MRs & Tested/Fixed Issues :)

  8. MR-201 | Issue-196 - Updated cordova secure storage plugin.
  9. Issue-14 - View data completion form.
  10. Issue-13 - Create seconds data element for OSCE B.
  11. Issue-10 - Tested all the features of Module_1_mHBS_General_User_Guide_JANUARY_30_2019_FINAL.pdf in the new tracker app.
  12. Issue-11 - Need to change frequency of tracker forms and HBB survey.
  13. Issue-12 - Need to modify HBB infrastructure survey.
  14. MR-14 | Issue-4 - Fixed mHBS logo.
  15. MR-15 - Fixed mHBS tracker app CI-Pipeline.
  16. MR-197 | Issue-193 - Removed embedded - Keeping baby warm video.

Weekly Blog Posts

Resources

  1. Youtube link to Final presentation.
  2. Final Report.

Thoughts on GSoC


GSoC was one of the best experiences that I ever had. There was an immense amount of knowledge to be gained and it taught me how great minds from different parts of the world work to make a product alive.

Thanks to my mentors who always came to my rescue and guided me throughout the journey. My coding standards have greatly improved and my experience with Android has been great.

The part I enjoyed most was the new technologies with which I got exposure through this program.

I would love to contribute to mHBS Applications in the future and guide the new enthusiast and pass on the knowledge I gained to them.






by noreply@blogger.com (Bhavesh Sharma) at August 29, 2021 06:08 PM

August 17, 2021

Darshpreet Singh

Coding Period: Week 10 August 07 To August 16

Week 10 Of coding period is completed, I worked on adding Creating sphinx Documentation, Splash Screen, App Icons, Updating program rules, enter server textfield Created Documentation using sphinx Deployed documentation on Gitlab pages Created App Icon Created Splash Screen Updated metadata Created CI script to build documentation Added link to docs in README.md

https://darshpreet2000.gitlab.io/lh-mhbs-eceb/

docs

Splash Screen App Icon
splash app_icon

What progress have you made this week?

  1. Prepared Documentation/Readme for App & how to setup
  2. Created App Icon, Splash screen, Intro Slides
  3. Updating metadata for both programs
  4. Finding & fixing bugs
  5. Presentation with mentors

What do I plan to do next week?

  1. Deploy to F-Droid
  2. Finding & Fixing bugs

Have you had any blockers or issues that are impeding your project?

No

Week 10 Of coding period is completed, I worked on adding Creating sphinx Documentation, Splash Screen, App Icons, Updating program rules, enter server textfield Created Documentation using sphinx Deployed documentation on Gitlab pages Created App Icon Created Splash Screen Updated metadata Created CI script to build documentation Added link to docs in README.md

August 17, 2021 05:00 AM

August 16, 2021

Bhavesh Shamra

Tenth Week of Coding 9th August — 15th August


Hey Everyone, I am back with my weekly updates about my GSoC journey😀. This amazing journey is about to its end guys, but really I never forget this great experience where I learned a lot of technologies & experienced a new tech side of android development in just a few weeks.

This week I had a meeting with my mentor where I discussed some of the UI-UX related stuff that can make the user experience much better. Hence I have improved the UI of the app, uploaded educational resources over dhis2, find out some very important bugs that need to be resolved in the scale-up version. Let’s discuss them one by one -

Segregated Media Resources into Categories-

  • Earlier all types of media files either it is pdf, video, xls file, doc., etc. everyone is present in the single page.
  • Since we have more video resources and Pdfs I have made out the filter options to view resources into 4 separate sections All Media, Videos, PDFs and Other files.
  • Related Issue: Issue #195 Related MR: MR #199
  • Media files are classified based on their mime types.
  • Segregation is done only for downloaded media files.

To Classify Documents as :

PDF — pdfMimeTypes = ["application/pdf"]

Videos — videoMimeTypes = ["video/ogg","video/webm","video/.webm","video/.ogv","video/mp4", "video/.mp4","video/.m4v","video/x-flv","application/x-mpegURL","video/MP2T","video/3gpp", "video/quicktime","video/x-msvideo","video/x-ms-wmv"]


Added Metadata of Media Resources & Improved UI-

  • Added a button to download and open media files for easy to use purposes.
  • Added Thumbnail for video resources & a default pfd icon for pdf files.
  • Added video duration in the media card.
  • Related MR: MR #200
  • Check the new UI & functionalities of the Media Page.





An issue with Cordova plugin Secure storage-

Everything is working fine and in the last few days back I updated my phone and as usual, I keep on changing the code to come up with a better solution. But after some time everything is like 😶.

Suddenly my app gets on crashing on my device and does even not get opened. I was completely clueless why it is happening where the problem is? what I had changed 🤔.

After a long time, I identified the great culprit i.e. cordova-plugin-secure-storage which is begin used in our trainer app to store the user credentials. After doing a google search, I had to find out its cause. Some of the important points regarding this issue and its fix are :

  • cordova-plugin-secure-storage has been archived and no longer maintained.
  • They are not going to solve the existing issues.
  • So I find out some of its alternatives that are cordova-plugin-secure-storage-echo which is a forked version of an earlier one with all of these fixes and being used a lot.
  • Therefore I have made the appropriate changes to shift our project from cordova-plugin-secure-storage to cordova-plugin-secure-storage-echo
  • Related Issue: Issue #196 Related MR: MR #201
  • For More info please check -

  1. Ionic Native Secure Storage Not Working on Android Q
  2. cordova-plugin-secure-storage-echo
  3. Crypho/cordova-plugin-secure-storage  — Repo with Issues & archived
  4. mibrito707/cordova-plugin-secure-storage-echo — Repo with Fix & active

Uploaded Educational Resources-

We need to upload the real educational resources in the dhis2.

Resources: https://globalhealthmedia.org/videos/

It is having a lot of media files. This week I had uploaded 60+ Media files on the dhis2 and all of these media files are being accessed through the trainer app.

Checked the possibility for opening all types of media files with the app-

It was an idea that it is better if possible to open every media file within our app. Currently, we use the cordova-file-opener2 plugin for this purpose which gives access to the supportive apps to open the file. But the interesting fact to note is that any of the apps do not have access to check the media files and play even they are not visible if we find them on the phone or any supportive app. All the media files are downloaded and saved in users internal storage in a Persistent manner and well encrypted so any of the media files can be open only from the trainer app.

But I checked for the other options -

  • We can play video files using the video HTML element.
  • The problem is with pdf and another one.
  • I checked cordova-plugin-document-viewer. But this is also redirected us to download a specific app from the play store and after that only it can open the pdf using that app. This app uses pdf.js.
  • I implemented this and tested but the problem is we need to download an open that app is being used to open pdfs.
  • Overall till now also we are using fileopener2 🤷‍♂️.

What is work done this week?

  1. Segregated the media files into pdf, video, all media and other options ( Provided filtering options ) 
  2. Added Metadata to the Videos UI like thumbnail & time duration.
  3. Added Button and smoothen the way to download and view media files.
  4. Fixed Issue with Cordova plugin Secure storage-
  5. Tested the option to open media files within the app by the cordova-document-viewer plugin & pdf.js.
  6. Uploaded Half of the Education Resources over dhis2 for training. Find & Fixed old bugs.

What do I plan to do next week?

  1. Work on final submission and improve written blogs.
  2. Finding more bugs and fix them.


by noreply@blogger.com (Bhavesh Sharma) at August 16, 2021 04:40 PM

Shashwat

Week3

WEEK 3:

LibreHealth

PROGRESS MADE THIS WEEK

Hello everyone. As dicussed in the previous blog, this week was to be utilised for creating the Appointment workflow in the React application.
Surpisingly, the task hardly took 24hrs for completion, henceforth by the end of Tuesday I was done with this week`s work 😄.
Anyways there were a few bugs in test files that were to be fixed, so I utilised my weeks fixing some web-component tests.

here are the screenshots of the workflow:

Appointment workflows

upcoming days:

  • start working on the task of the coming weeks.

next week:

  • complete the components for the visit workflow.

see you next week 😄

WEEK 3:

August 16, 2021 02:17 PM

Week2

WEEK 2:

Hello folks! Another week done and another batch of code written and merged !! In the coming sections I will be explaining the details of the work done this week.

LibreHealth

PROGRESS MADE THIS WEEK

In the previous week, I had implemented the checkin workflow in the react application. According to my plan in the proposal, this week was to be used to create components for the resources that will be used in the Appointment workflow.

the resources are:

  • Slot
  • Schedule
  • Appointment

In the beginning of the week, I started looking into the lit: upon which the components are based. I read the documentation and decided how to create the components so that they can be utilised for different CRUD operations.

I also noticed a few bugs in the components while implementing the checkin workflow, for this I created a MR and fixed them :





By wednesday I started creating the components. Most of these components have a reference or codeable-concept property datatype, hence creation of components that can be used in different contexts to implement the mentioned datatypes will help a lot.

By the end of wednesday I had created these datatype components :


Once these components were created, the resource components were not difficult to develop. By thursday I had created Slot-Schedule and by friday Appointment.

During this period my mentor noticed a few bugs in the project:

  • inconsistent label case use
  • unavailable demo files (build issue)

So along with the development of the components, I made a couple of commits for these issues as well.

Template used for component creation:

As a component will be used for CREATE / GET / PUT request , I made it compatible with everything.

For the create part, inside the constructor an initial empty skeleton value was provided. This value property would be overwritten if the component contains the value attribute. Hence this supports both the cases of create and get operations as a user can avoid the value attribute if the intention is to use the component for creating entries and provide a value after fetching a specific endpoint if the intent is to show entries.

Moreover even if a value property is provided and some of the keys are missing, the component will still remain the same as I have done a check for individual property existence and default value allocation as well, this feature will be helpful for the edit operation.

here is the default value property set inside the Appointment component constructor. Similar structure is used in the other 2 components.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
identifier: [{}],
status: '',
serviceCategory: [{coding: [{ system: "", code: "", display: ""}],text: ""}],
serviceType: [{coding: [{ system: "", code: "", display: ""}],text: ""}],
specialty: [{coding: [{ system: "", code: "", display: ""}],text: ""}],
appointmentType: {coding: [{ system: "", code: "", display: ""}],text: ""},
slot: [{reference: "", display: "", type: ""}],
comment: '',
start: moment().format('YYYY-MM-DDThh:mm:ss[Z]'),
end: moment().format('YYYY-MM-DDThh:mm:ss[Z]'),
participant: [{type: [{coding: [{ system: "", code: "", display: ""}],text: ""}], status: '', actor: {reference: "", display: "", type: ""}}]
}

here are the screenshots of the implemented components:

Appointment


Slot


Schedule


upcoming days:

  • write unit test for the components.

thanks for reading till the end ❤️ , see you next week 😄

WEEK 2:

Hello folks! Another week done and another batch of code written and merged !! In the coming sections I

August 16, 2021 01:42 PM

Week1

WEEK 1:

Finally the community bonding priod is over and the coding period has commensed. In this blog I have loads of content and code to cover!

LibreHealth

ANALYSIS OF COMMUNITY BONDING PERIOD
In the community bonding period there were mainly 2 objectives we had set :

  • SETUP THE REACT APPLICATION WITH CI/CD.
  • DESIGN THE APPLICATIONS WITH THE ENDPOINTS.

Most of my community bonding period was spend on the CI/CD part. The major cause of this was
cross-browser, cross-platform testing integration with React. The tool which was planned to be used was saucelabs and unfortunately for me 😕 there was no proper content regarding saucelabs integration with react to be found anywhere, I tried to make things work on my own and nearly succeeded testing on jest with snowpack and react, but snowpack could not resolve the dependencies inside the lh-toolkit-webcomponent monorepo when it was caching the files.

Snowpack serves the application unbundled during development. Each file needs to be -built only once and then is cached forever. When a file changes, Snowpack rebuilds that single file

As mainly we will be covering unit and integration testing, saucelabs will not be a neccessity as suggested by the saucelabs community. So I went on to setup the react app

  • testing : using react-testing-library with jest
  • deployment : gitlab pages
  • some eslint integration and git hooks.

Design part was smooth sailing and offered many insights that I might have not noticed until later, upon the suggestion of my mentor I have also documented the api endpoints. I will drop the file with the designs and the endpoints here : https://geforce6t.github.io/blog/categories/EHR/

PROGRESS MADE IN THE WEEK

the plan for the first coding week is to do the following:

  • setup the application
  • create home, login pages
  • implement the checkin workflow

monday: I started coding 🎉️ , and completed the first part of the plan.


tuesday: I started working on the project layout and accomplished the following :

  • organized project into different directories including pages, components, redux store, redux slices etc
  • added MUI with theme
  • created login and auth pages with support for other workflows in mind.
  • created redux auth workflow

wednesday: looked for ways to style the lit-components………, lit components uses shadow dom and the style encapsulation feature make it a little tricky to style custom components from the outside, I made some hacks to do the same using callback refs inside the react component where the lit component resides,but this approach would not be optimal.

Probably some minimal styles could be applied inside the lit components and would do great, anyhow I was able to style the material components using the global material css variables.

One of the things that I need to look into is to add some style to the lit-components as a whole : “margin, border shadow and stuff”, this will not be a big issue as I have a lot of other components to create so mainly the style will be global and can be done anytime.

So here is how the create-patient component has changed visually:

After

compared to above, this is what we have as default:

Default


thursday: created the general search component.

the general serach component is something that I would like to talk about. The general search component was actually little difficult to implement. For different cases the search params, columns, query parameter may differ so to create a general purpose search component all of this features must be passed as attributes which was done in the implementation,

passing params to the search component

the functions used in the seach component are

  • one for search, based on fetching and storing the result after filtering the result to only include results for the columns using the query.
  • another for storing pagination contexts: next page and previous page url,

the most difficult part about the implementation was filtering results to form column enteries, the values that we may want can be nested one/many levels so it is very important to provide a query string to execute this filtering, it is not possible to pass this query string via props as it is inside a map method, so I created a function with switch case for different workflows that we will implement.

filtering data to display in the columns

finally the components looks like this :

serach component

friday: wrote the edit and show patient code to complete the layout of the checkin worklfow 🎉️, but there was one issue that came across while creating the put request, for some of the fhir components the values are not changing even after visually their value is changed, this might be an issue in the react app or the wc repo. I will take a look and solve this issue in the coming days!

UPCOMING DAYS

  • add event handlers for the create patient page.
  • debug the value not changing issue while making a put request.
  • add css for element (not compulsary for now)

thanks for reading till the end ❤️ , see you next week 😄

WEEK 1:

Finally the community bonding priod is over and the coding period has commensed. In this blog I have

August 16, 2021 12:25 PM

August 11, 2021

Shashwat

Week9


LibreHealth

PROGRESS MADE THIS WEEK:

Hi, We are almost done with the implemention of the proposal. The additional work is to make improvements and fixes. According to the feedback of the UI/UX designer from the team, the following improvements should be made to the webcomponents:

  • Outlined type for all the fields to maintain consistency.
  • Appropriate placeholder text.
  • Fix spelling mistakes.
  • Convert sections to collapsable rows/columns.
  • Improve spacing between fields.
  • Add asterisks to indicate mandatory fields.

In the coming week these pointers will be implemented along with documentation and other fixes.

DESCRIPTION:

pssing params to the search component

pssing params to the search component

Merge Requests:

NEXT WEEK’s PLAN:

  • Write documentation
  • React optimization
  • find and fix bugs.

see you next week 😄.


LibreHealth

August 11, 2021 01:15 PM

August 08, 2021

Shivaditya Shivganesh

Google Summer of Code: Week 9

Video Server OpenCV pipeline for both segmentation and object detection was completed. The Mock HMD VR designed using Unity XR refers to a remote location on the server for getting video output.

Apart from the server design. documentation was completed for WebXR approach. For UnityXR based method few sections of documentation is still pending. For loading model for inference in OpenCV pipeline Frozen_Graph approach is used.

The video server generates close to 5200 images from a Video of length 3 minutes and 29 seconds. The number of images generated depends on the frame rate used. The frame rate has to be optimally adjusted according to the system configuration.

Similarly, the video output of the program depends on the frame rate selected. The frame rate changes video length.

Sample Model Inference :

That's all for today!!!

Hope you had a great week

Tot ziens

by Shivaditya Shivganesh at August 08, 2021 12:40 PM

August 07, 2021

Bhavesh Shamra

Ninth Week of Coding 2 August — 7 August

 



Hey Everyone, this week I have fixed the tracker app pipeline that failed last week, exported the tracker and trainer specific metadata, tested them by importing them to the play servers and a lot more. Let’s discuss this in detail.

 

Fixed Tracker App Gitlab Pipeline

Last week when I submitted an MR that passed the pipeline and was merged by my mentor into the main repo of the tracker app but it gets failed unexpectedly.

The interesting fact to note is that it ran successfully in the commit with which I had submitted but the merge commit that my mentor made to merge it which doesn’t contain any new changes, and is only having the commits that I made failed the pipeline. I didn't get any reason for it.😌

But in the end, I made it find out the cause of it and fix it😀. I think it is due to the NDK version. I suggest if you are building it locally as well please try building after installing NDK Version 21.0.6113669

Related MR: MR-15


Exported Tracker App Metadata

I had exported tracker specific metadata so that one can import them in his own dhis2 instance and can get benefitted from the use of the mhbs — tracker app.

I have exported 2 mHBS Tracker App-specific metadata-

  • Exported HBB Survey Metadata
  • Exported HBB Program Metadata

To make both of the metadata importable I had deleted the old references from the metadata like “user”, “lastUpdatedBy”, “organisationUnit ”keys from the corresponding JSON. There are more than 4k+ such instances in the HBB Program metadata as it was heavily used by the bmgfdev instance users. 

Now the metadata can be imported into the new dhis2 instance easily.

Corresponding Issue : Issue #22

Corresponding MR : MR-16

Discussion Thread : Link


Import Testing of Metadata

I had tested the import of the metadata over Dhis-2 Play Severs with all data elements and attributes. There is 2 issue that my mentor suggested me to test with the export and import related to HBB Survey are also tested and can be closed as a FIX.

Issue #12 

Issue #11


What progress have you made this week?

  • Fixed the tracker app pipeline that failed last week
  • Exported HBB Survey Metadata & HBB Program Metadata
  • Tested Importing of testing Metadata
  • Can be Closed — Issue #12 Issue #11
  • Issue #22 — Export mHBS tracker and trainer metadata from DHIS2
  • MRs : MR-16 & MR-15

What do I plan to do next week?

  • Discuss with the mentor the features and issues to work on.
  • Fix more issues, check for current needs.

by noreply@blogger.com (Bhavesh Sharma) at August 07, 2021 08:18 PM

August 06, 2021

Darshpreet Singh

Coding Period: Week 9 July 31 To August 06

Week 9 Of coding period is completed, I worked on adding notification count, About app, Share app feature, Load more notifications functionality

Notification count

I created notifications count in bottom app bar, It displays the count of new notifications in app, After fetching data from dhis2, app check if it has the message id , if it doesn’t have the id then count is incremented.

When user visits the profile page then count becomes 0 as the messages are read by the user now.

About app

It displays about the project with a button to visit the project, This screen will be useful for promoting LibreHealth organization to users who are using this application.

Load more notifications

When user click on load more button then it fetches the next 5 notifications, It calls api with next page number & save the data to hive storage.

What progress have you made this week?

  1. New notifications count viewing on bottom bar
  2. About App, Share App, Report bug menus in drawer
  3. Added Load more feature on notifications

What do I plan to do next week?

  1. Prepare Documentation/Readme for App & how to setup
  2. Creating screen to add server url
  3. Individual/facility login
  4. Creating App Icon, Splash screen, Intro Slides
  5. fetching program rules for classification function
  6. Updating metadata for both programs
  7. Finding & fixing bugs
  8. Deploy to F-Droid

Have you had any blockers or issues that are impeding your project?

No

Week 9 Of coding period is completed, I worked on adding notification count, About app, Share app feature, Load more notifications functionality

August 06, 2021 05:00 AM

August 04, 2021

Shashwat

Week8

LibreHealth

PROGRESS MADE THIS WEEK:

Hi, As discussed in the last week’s blog, Week 8 was to be used for the following tasks:

  • Completing the visit-provider workflow.
  • Completing the e-prescription workflow.
  • fixing build fail.

DESCRIPTION:

The above mentioned points were covered this week.

visit-provider workflow : this workflow was very much similar to the visit nurse workflow that was implemented last week.

  • The provider first finds the patient.
  • The provider selects the encounter under which the meeting will proceed.
  • The provider then gets directed to the dashboard where he/she can see the patient’s already existing observations and can create an observation report.
  • the provider can also create an order request.

Out of these the first 2 points were already implemented in the visit-nurse workflow.

The rendering of different screens is done using redux, each click when required changes a redux state that renders a different screen.

here is the reducer for this workflow:

pssing params to the search component

The editActivePage reducer is for changing the screen. The observation results shown require the Patient Id hence the Id is stored after the provider selects the patient.

All of these screens are a part of a custom High order Navbar component that renders different tabs based on state values.

here is the navbar component :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import React, { useState, useRef } from 'react'
import PropTypes from 'prop-types'
import { useStyles } from './style'
import {
AppBar,
Tabs,
Tab,
Typography,
Box,
CssBaseline,
Container,
Button,
Dialog,
DialogActions,
DialogContent,
DialogTitle
} from '@material-ui/core'
import ExittoApp from '@material-ui/icons/ExitToApp'
import logo from '../../assets/images/logosm.png'
import {
logout
} from '../../reducers/auth/authSlice'
import '@lh-toolkit/fhir-encounter/fhir-encounter.js'
import { useDispatch } from 'react-redux'
import { useHistory } from 'react-router-dom'
import { toast } from 'react-toastify'
import axios from 'axios'
import { config } from '../../config'
import 'react-toastify/dist/ReactToastify.css'

function TabPanel (props) {
const { children, value, index, ...other } = props

return (
<div
role="tabpanel"
hidden={value !== index}
id={`simple-tabpanel-${index}`}
aria-labelledby={`simple-tab-${index}`}
{...other}
>
{value === index && (
<Box p={4}>
{children}
</Box>
)}
</div>
)
}

TabPanel.propTypes = {
children: PropTypes.node,
index: PropTypes.any.isRequired,
value: PropTypes.any.isRequired
}

export const Navbar = ({ labels, component, encounterID, includeEncounter }) => {
const classes = useStyles()
const [value, setValue] = useState(0)
const dispatch = useDispatch()
const history = useHistory()
const [open, setOpen] = useState(false)
const [disablepost, setDisablePost] = useState(false)
const reference = useRef()

const handleClickOpen = async () => {
setOpen(true)
try {
const res = await axios.get(`${config.basename}Encounter/${encounterID}`)
if (res.status === 200) {
reference.current.value = res.data
}
} catch (error) {
console.log(error)
}
}

const handleClose = async () => {
try {
setDisablePost(true)
reference.current.value.resourceType = 'Encounter'
reference.current.value.id = encounterID
const res = await axios.put(`${config.basename}Encounter/${encounterID}`, reference.current.value)

if (res.status === 200) {
toast.dark('EDITED SUCCESSFULLY !')
setOpen(false)
}
} catch (error) {
// eslint-disable-next-line node/handle-callback-err
error.response.data.issue.forEach(err => {
toast.error(err.diagnostics)
})
} finally {
setDisablePost(false)
}
}

const handleChange = (event, newValue) => {
setValue(newValue)
}

return (
<Container component="main" maxWidth="lg">
<CssBaseline />
<div className={classes.paper}>

<div>
<img src={logo} alt='logo'/>
</div>

{includeEncounter
? (
<div className={classes.exit}>
<Button
aria-label="submit"
type="submit"
variant="text"
color="secondary"
className={classes.submit}
onClick={handleClickOpen}
>
EDIT ENCOUNTER
</Button>
</div>
)
: ''
}

<div className={classes.exit}>
<button onClick={() => {
dispatch(logout())
toast.dark('LOGGED OUT !')
history.push('/')
}} className={classes.logoutbtn}
>
<ExittoApp />
</button>
</div>

<AppBar position="static" color="default" className={classes.navbar}>
<Tabs value={value} onChange={handleChange} aria-label="checkIn tabs">
{labels.map((item) => <Tab key={item} label={<Typography variant="subtitle1">{item}</Typography>} />)}
</Tabs>
</AppBar>

{component.map((Component, index) => {
return <TabPanel key={index} value={value} index={index}><Component key={index} /></TabPanel>
})}
</div>
{
includeEncounter
? (
<Dialog open={open} onClose={handleClose}>
<DialogTitle id="form-dialog-title">EDIT ENCOUNTER</DialogTitle>
<DialogContent>
<fhir-encounter ref={reference} />
</DialogContent>
<DialogActions>
<Button onClick={handleClose} disabled={disablepost} className={classes.submit} color="secondary">
SUBMIT
</Button>
</DialogActions>
</Dialog>
)
: ''
}

</Container>
)
}

Navbar.propTypes = {
labels: PropTypes.array,
component: PropTypes.array,
encounterID: PropTypes.string,
includeEncounter: PropTypes.bool





The e-prescription workflow is almost similar to the visit-provider workflow, other than 1/2 screens.

  • The prescriber first finds the patient.
  • The prescriber selects the encounter under which the meeting will proceed.
  • The prescriber then gets directed to the dashboard where he/she can see the patient’s allergies and medication and can create a medication request.

Merge Requests:

Implementation video:

NEXT WEEK’s PLAN:

  • Write documentation
  • Add extra test files.
  • React optimization
  • find and fix bugs.

see you next week 😄.



LibreHealth

August 04, 2021 06:47 AM

August 01, 2021

Shivaditya Shivganesh

Google Summer of Code: Week 8

Prototype for immersive was designed in Unity using inbuilt XR plugins. For HMD emulation MockHMD was used. The material was rendered on the plane. The material was linked to 2d texture. The VideoPlayer asset in Unity helped in converting the frames to textures. The camera was bounded to the camera space. There were no performance issues while development and testing. The asset used was present locally, asset fetched using URL can also be used.

Segmentation Model from previous week, crashed despite efforts. So, I created a UNet from scratch. Basic model performs well for sample space. Hyper-parameter optimisation is pending. For 300 epochs a dice coefficient of 0.84 was achieved. This UNet model works with openCV. For developing the OpenCV segmentation pipeline only the model inference and drawing portion has to change. Inference takes close to 1~2 seconds for 512x512x3 image.

That's all for today!!!

Hope you had a great week

Farvel

by Shivaditya Shivganesh at August 01, 2021 01:23 PM

July 31, 2021

Bhavesh Shamra

Eighth Week of Coding 26th July - 30 July

Hello Everyone, I am elated to share that project is going good and mostly all the issues are being sorted in the GitLab. This week I had tested the workflow of the apps, fixed few bugs and updated Readme and added some demonstration videos to help in the use of mhbs apps.😀


Tested or Fixed issues 

I have verified that there is a functionality in the mhbs Tracker app to mark the existing enrollment as complete and even there is also an option to re-open the completed enrollments as well.

To understand the working please check this.

  • Issue #13- Create “seconds” data element for OSCE B

I have checked the second data element presence and working in OSCE B form. I had tested few other things as well. The data elements that I had tested and present in OSCE form are :

  1. Start time -> (TIME type. (hh:mm))
  2. Ventilates with bag and mask within The Golden Minute (at ___seconds) -> (fill in the blank)
  3. Time of effective ventilation (chest moving gently at __seconds)-> (fill in the blank)
  4. Ventilates at 40 breaths/minute (30–50 acceptable) -> (yes only)

Link of the OSCE B Form: 

Link Check_OSCE_B_form_of_already_existing_event

Create_new_Event_in_OSCE_B

  • Issue #10- Tested all the features that need to be present in the tracker app

All the features of Module_1_mHBS_General_User_Guide_JANUARY_30_2019_FINAL.pdf are being tested and present in the new tracker app.

But the new UI is entirely different and features may not be located in the place where they are shown in this file. I am thinking of making a new user guide for the tracker app and will discuss that regards with the mentor.

  • Issue #11- Need to change frequency of tracker forms and HBB survey.

I had checked the frequency of the existing HBB Survey and it is as per our need but mentors might want me to check the same for exported metadata. Till now I had not completed the work of exporting and importing metadata when it gets completed it will be fixed at that time.

  • Issue #12- Need to modify HBB infrastructure survey.

Similar to the above issue, I had checked its functionality with the existing HBB Survey and it is fine. We should also need to check it with exported metadata as well and will do that when exporting part gets completed.


Modify Syncing Logic for Media files.

There is a slight modification being made in the regular syncing of media files as per discussion with mentors. 

Previous Approach: Whenever the user clicks on any media file and if he is connected to the internet we will re-download the file and save replace it with its old locally saved copy. It was done to make sure that we always have the latest and correct file.

Problem With the Previous Approach: There would not be regular updates on the media file but whenever the user checks that media file it will get downloaded in the background and consumes a lot of the user’s data.

New Approach: As per discussion with the mentor we had decided that we will never update the existing media file if we need to update this file then we will remove it and upload a new copy with the same name in this way we never need to download the file again and again. However, you can change the name of an existing file, add a new file, remove old files but not updated the media content of the existing file.

As per the above discussion, I had made changes to the trainer app in order to stop downloading media content again and again. There are few bugs that I encountered during testing in the trainer app and has been fixed.

Committed : b8f6403d

Related Issue: Issue #14


Updated Readme file regarding Media Resources

I had updated the readme of the trainer app regarding all these logic and added resources like 

Demonstration_of_Uploading_resources_on_dhis2

Demonstartion_of_accessing_resources_on_trainer_app_through_tracker_app

Committed : 8483042a 

Related MR: Link


Works Done this week.

  1. Tested or Fixed issues -

2. Fixed Issue #14 — Modify Syncing Logic for Media files.

3. Updated Readme — Added Documentation demonstrating to access media resources through trainer app and upload resources through dhis2.

    Committed 8483042a 

4. Related MR: Link

5. Small clips to depict the use of the media page.

Demonstration_of_Uploading_resources_on_dhis2

Demonstartion_of_accessing_resources_on_trainer_app_through_tracker_app

Work to be done Next Week

  1. Fixing tracker app GitLab CI failed last week.
  2. Export metadata of tracker and trainer app and add to the readme.
  3. Some testing in HBB Survey after exporting metadata.
  4. Issue #14 — Create BMGF Indicators
  5. Issue #44 — Role-based restricted access for viewing tracked entities.
  6. Discuss with mentors about the complete app for further scale-up.

Have you had any blockers or issues that are impeding your project?

Export and Import of metadata and GitLab CI failed last week.

I want to discuss them with my mentor and want to get fix them.

by noreply@blogger.com (Bhavesh Sharma) at July 31, 2021 01:43 PM

July 30, 2021

Darshpreet Singh

Coding Period: Week 8 July 24 To July 30

Week 8 Of coding period is completed, I worked on adding on call doctors schedule showing screen, I created stage 5 assessments capture feature

Added On-Call Doctors Schedule Showing feature

Tasks

  • shows list of doctor in program
  • shows name, date, start time , end time of on call schedule
  • shows profile image in circle
  • uses cache image so that user can view image & data offline

Created Stage 5 Discharge with floating button

  • Create Discharge assessments UI
  • Created discharge floating action button to appear only when child is normal & 24 hours have passed
  • Create model class for discharge
  • Create stage 5 discharge event
  • added methods to validate , register stage 5
  • added api request to mark enrollment as COMPLETED
  • added method to queue api request when user is offline
  • Created unit test for stage 5
  • Created stage 4 variable schedule to store time

Stage 5 Unit test cases

  • Throws exception if assessments are incomplete
  • Marks phase-5 as complete if everything is correctly filled
  • Marks child as discharged
  • yields AssessmentsAdded on successful adding of phase 5
  • yields AssessmentsError when assessments are incomplete while adding of phase 5 assessments

What progress have you made this week?

  1. Fetching & displaying doctor’s schedule in App with unit tests
  2. Created Stage 5 (Discharge) with button to discharge based on conditions
  3. Created unit test for stage 5
  4. Made stage-4 repeatable in app after 180 minutes

What do I plan to do next week?

  1. Making messaging/Notifications viewing functionality in App
  2. Adding share App report bug menus in drawer
  3. Preparing Documentation/Readme of Project

Have you had any blockers or issues that are impeding your project?

  • I have completed assessments capture functionality of app, I will request feedback from mentors & will work on the same.
  • I need to discuss individual/facility login feature
Week 8 Of coding period is completed, I worked on adding on call doctors schedule showing screen, I created stage 5 assessments capture feature

July 30, 2021 05:00 AM

July 27, 2021

Shashwat

Week7

LibreHealth

PROGRESS MADE THIS WEEK:

Hi, As discussed in the last week’s blog , Week 7 was to be used for the following tasks:

  • Complete the visit-nurse workflow (the parts which are not implemented yet.)
  • Complete the visit-provider workflow.
  • Start working on the e-prescription workflow.

This week I was a little busy with some academic work, hence all of the above pointers were not possible, Hence the last 2 pointers will be shifted to the upcoming week. (WEEK 8)

DESCRIPTION:

This week I have mainly worked on completing the visit nurse workflow. As the vitals signs and medication statement components were merged, the react-ehr application was updated to include the screens which use these components in the visit-nurse workflow.

Another interesting thing is that most of these screens are having almost a similar structure, hence there is a possibility that a single component can be created as a layout component for different screens.

NEXT WEEK’s PLAN:

  • Complete the visit-provider workflow.
  • Start working on the e-prescription workflow.
  • fix build fail.

The dosage component seems to cause a build failure, which will be fixed in the coming week.

reiterating the pointers from last week’s blog for the implementation points of the visit-provider workflow:

  • First screen contains a find-patient component to select a patient.
  • After the patient is selected a redux action is triggered which updates redux state and stores the selected patient Id.
  • Another redux action updates the active screen and changes it to that of patient encounters.
  • The patient encounter screens contains all the patient encounters which are fetched using the stored patient Id.
  • On clicking an encounter a redux action updates active page to dashboard.
  • the dashboard page contains 2 tab: physical exams, order.
  • the physical exams tab shows the observations of the patient and contains a component to create any observation.
  • the orders tab will be used to create orders using service request component.
  • the user can log out and select a different patient to repeat the above points.

the pointers for the implementation points of the e-prescription workflow:

  • First screen contains a find-patient component to select a patient.
  • After the patient is selected a redux action is triggered which updates redux state and stores the selected patient Id.
  • Another redux action updates the active screen and changes it to that of patient encounters.
  • The patient encounter screens contains all the patient encounters which are fetched using the stored patient Id.
  • On clicking an encounter a redux action updates active page to dashboard.
  • the dashboard page contains a single screen with a search component for allergies and medications of the patient.
  • the screen also contains a create medication request component.

see you next week 😄.


LibreHealth

July 27, 2021 06:47 AM

July 23, 2021

Bhavesh Shamra

Seventh Week of Coding 19th July - 23 July


 Hello Guys. This blog is to reflect the light on the work done in 7th week of gsoc-21.😀

Tested 3–4 Issues

I had go through almost all the issues of the tracker and trainer app. I had tested issues 4 issues marked with testing label and prepared their solution. I will be discussing my approaches for these issues with my mentor and fixed them in next week.


Fixed mhbs Logo Issue Issue #4

In the tracker app some of the screens have the dhis-2 logo. It is now fixed to mhbs logo.

Fixed Issue #4 

Related MR : Mhbs logo fixed


Updated Trainer App Readme.md

Since we had added media page, offline support, app usage tracker in trainer app we want a small documentation details to be added to the readme for further reference. I had done it -

Committed here ( 718f8756 ).


Fixed Bug in GitLab CI

There is a bug in GitLab CI code of trainer app. Gradle is building the apk correctly but it is not assembling the artifact correctly. It is my mistake what I had made earlier. I had corrected it.

Committed f01c6cf9.


Work Done this Week

  • Fixed logo Issue. 
  • Updated Trainer App Readme.md.
  • Fixed Bug in GitLab CI.
  • Tested 3–4 Issues & prepared their solution. After discussing with mentor need to implement them.

Planning of next Week

by noreply@blogger.com (Bhavesh Sharma) at July 23, 2021 06:22 PM

Shivaditya Shivganesh

Google Summer of Code: Week 7

The video object detection pipeline is designed using openCV. The videos are loaded and a frame rate of 25FPS is assumed. Using the frames the tf.session is initiated and TF Object detection API model is run. The resulting bounding boxes are drawn using openCV.

Resulting images with bounding boxes are written to video with 1FPS using openCV videowriter. After that the generated video can be served using data or blob url depending upon the video so generated.

The segmentation model is not working properly for most of the cases. The obvious solution for it would be to retrain the entire model. The segmentation model has to be implemented in the same way as the Object detection using openCV.

At present the entire video generation pipeline takes less than 40 seconds. This excludes the uploading time and downloading time. The server on which it was tested has a RTX 3060 GPU peak GPU memory utilisation reached upto 11GB

That's all for today!!!

Hope you had a great week

Annyeong

by Shivaditya Shivganesh at July 23, 2021 04:20 PM

Darshpreet Singh

Coding Period: Week 7 July 19 To July 23

Week 7 Of coding period is completed, I worked on adding on call doctors viewing feature, I completed notifcation showing functionality on risk assessments and monitoring alerts

Added On-Call Doctors Viewing Functionality in App with Unit tests

  • Fetching events from on call doctors program
  • displaying on call doctors
  • displaying images with cache
  • saving the list to local storage
Unit tests
  • yield OnCallDoctorLoaded on successful fetching of data
  • yields OnCallDoctorLoaded on unsuccessful fetching of data by getting from hive
  • returns response with 200 code on successful fetching of on call doctors
  • throws fetch data exception on no internet connection

GIF Showing on Call Doctors slider

Completed Notification screen (Risk Assessment, Monitoring Alerts Tab) with Unit tests

  • Created notification screen bloc
  • Created repository with methods to get risk assessments and monitoring alerts
  • on tap of the list item the child assessments are opened

Unit tests

  • Flutter Notifcation BloC test
  • Test Cases
  • yield NotificationLoaded on Fetch Nofitication Of Babies
  • Flutter Notifcation Repository test
  • Test Cases
  • Risk Assessments Test cases
  • status changed normal to danger
  • status changed problem to danger
  • status changed normal to problem
  • status changed danger to problem
  • Monitoring Alerts Test cases
  • stage-4 assessments next

Unit tests Phase 4

AssessmentsRepository Test Cases
  • Throws exception if assesments are done before 180 mins from birth
  • Throws exception if assessments are incomplete
  • Marks phase-4 as complete if everything is correctly filled
  • Adds stage-4 assessments if list is empty
AssessmentsBloc Test Cases
  • yields AssessmentsAdded on successful adding of phase 4
  • yields AssessmentsError when assessments are incomplete while adding of phase 4 assessments

Phase 3 Assessments Unit testing

Test Cases

  • Throws exception if Stage3 Normal assessments are incomplete
  • Throws exception if Stage3 Problem assessments are incomplete
  • Throws exception if Stage3 Danger assessments are incomplete
  • Marks Stage3 Normal as complete if everything is correctly filled
  • Marks Stage3 Problem as complete if everything is correctly filled
  • Marks Stage3 Danger as complete if everything is correctly filled
  • Adds Stage3 Normal assessments if list size is 2 and classification is normal
  • Adds Stage3 Problem assessments if list size is 2 and classification is problem
  • Adds Stage3 Danger assessments if list size is 2 and classification is danger
Bloc Test
  • yields AssessmentsAdded on successful adding of phase 3
  • yields AssessmentsError when assessments are incomplete while adding of phase 3 assessments

What progress have you made this week?

  • Added On-Call Doctors Viewing Functionality in App
  • Completed Notification screen (Risk Assessment, Monitoring Alerts Tab)
  • Phase - 3,4 Unit testing

What do I plan to do next week?

  1. Fetching & displaying doctor’s schedule in App with unit tests
  2. Making messaging/Notifications viewing functionality in App with unit tests
  3. Creating share App report bug features
  4. Creating Stage 5 (Discharge) Stage with unit tests
Week 7 Of coding period is completed, I worked on adding on call doctors viewing feature, I completed notifcation showing functionality on risk assessments and monitoring alerts

July 23, 2021 05:00 AM

July 19, 2021

Shashwat

Week6

LibreHealth

PROGRESS MADE THIS WEEK:

Hi, According to the proposal timeline, week 6 was to be based on:

  • finishing pending work.
  • fixing bugs.
  • starting week7 tasks.

Fortunately, there was no pending work, hence the focus was mainly on the remaining points.

The tasks of week7 are to:

  • implement the visit-nurse and visit-provider workflow in the react application.

As most of the components required for implementing the visit-nurse workflow are already present in the web-component library, I started working on it.

DETAILED DESCRIPTION:

The visit-nurse workflow consists of many screens and multiple components.

  • First screen contains a find-patient component to select a patient.
  • After the patient is selected a redux action is triggered which updates redux state and stores the selected patient Id.
  • Another redux action updates the active screen and changes it to that of patient encounters, it also updates redux state and stores the current encounter Id.
  • The patient encounter screens contains all the patient appointments, encounters and a component to create an encounter for the undergoing visit.
  • On creating the encounter a redux action updates active page to dashboard.
  • the dashboard page contains 4 tab: home, vitals, allergies, medication.
  • the home tab is the default active tab and contains already exisiting vitals, allergies and medications of the patient.
  • the other tabs are used to create specific resource entry.
  • the user can log out and select a different patient to repeat the above points.

Some of the required components are not merged in the main repo yet, hence respective tab is unimplemented.

Each worklow in the application is a different page with a unique url. Hence the use of redux in immense in the project.
Each workflow also has a dedicated reducer which handles all the operations related to a specific workflow without editing any other state.

Inside the project’s src directory, the workflow directory contains all the code distributed into separate directories for different workflows. This makes it very simple to create / edit or even delete a workflow without affecting other parts of the application!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import React from 'react'
import { Navbar } from '../../components/navbar'
import { Home } from '../../pages/home'
import { activePageName } from '../../reducers/visit/visitNurseSlice'
import { CreateEncounter } from './pages/createEncounter'
import { SelectPatient } from './pages/selectPatient'
import { Dashboard } from './pages/dashboard'
import { useSelector } from 'react-redux'

export const VisitNurse = () => {
const activePage = useSelector(activePageName)
let components
switch (activePage) {
case 'SelectPatient':
components = [Home, SelectPatient]
break
case 'CreateEncounter':
components = [Home, CreateEncounter]
break
case 'Dashboard':
components = [Home, Dashboard]
break
}
return (
<Navbar labels={['HOME', 'VISIT']} component={components} />
)
}

This is the main component that is exported. Based on different redux state values different screens are displayed.

All the implemented screens and the workflow can be seen here:

https://gitlab.com/librehealth/toolkit/lh-toolkit-webcomponents/uploads/a9e04307d1199767e3b2c400de785370/screen-capture__2_.webm

NEXT WEEK’s PLAN:

  • Complete the visit-nurse workflow (the parts which are not implemented yet.)
  • Complete the visit-provider workflow.
  • Start working on the e-prescription workflow.

For the visit-nurse workflow, the medication statement and the vitals tabs are left to be implemented, these must be completed within the next week.

There are also some additions to be made in the webcomponents : some fields like encounter and subject (patient) are required to be added to the allergy and medication statement components.

The visit-provider workflow has similarities to the visit-nurse workflow, some of the screen are similar for both, hence the provider workflow should be completed faster than the nurse workflow.

these are the implementation points for the visit-provider workflow:

  • First screen contains a find-patient component to select a patient.
  • After the patient is selected a redux action is triggered which updates redux state and stores the selected patient Id.
  • Another redux action updates the active screen and changes it to that of patient encounters.
  • The patient encounter screens contains all the patient encounters which are fetched using the stored patient Id.
  • On clicking an encounter a redux action updates active page to dashboard.
  • the dashboard page contains 2 tab: physical exams, order.
  • the physical exams tab shows the observations of the patient and contains a component to create any observation.
  • the orders tab will be used to create orders using service request component.
  • the user can log out and select a different patient to repeat the above points.

see you next week 😄.

LibreHealth

July 19, 2021 03:18 PM

Week5

WEEK5

LibreHealth

PROGRESS MADE THIS WEEK:

Hi! We have a small change in the implementation plan. As per the proposal this week => week 5 was meant for implementing the visit workflow in the react / EHR application. The implementation required some new components, which were created last week as per the plan, but the Merge Requests are not merged yet. As there can be multiple changes and modifications required after the MRs are reviewed, It would be better to wait till the components are merged after modifications if required.

Therefore this week was based on doing the tasks of the 7th Week as Week6 is planned for improvements and bug fixing.

Primarily this week was spent creating the last set of components that will be required for the workflows planned.

The following components were created -

  • MedicationRequest
  • dosage

These components will be used for e-prescription workflow, although the dosage backbone element can be used for other Medication workflow based resources as well.

The pattern used for creating these components is same as the one used for other components.

Here is the screenshot:

medicationrequest


next week:

  • find and fix bugs in the react app.
  • start implementing visit workflows in the react application.

see you next week 😄.

WEEK5

July 19, 2021 02:10 PM

July 18, 2021

Shivaditya Shivganesh

Google Summer of Code: Week 6

The main focus for this week was correcting the errors in the bounding box drawn. The bounding boxes differed from the ground truth. That was because of issue regarding the canvas context drawing setting and not related to the actual model.

After the correcting the drawing steps in the canvas context. The bounding box are drawn somewhat similar to the ground truth.

Second goal for this week was development of a remote server based object detection video api. I successfully mad it work for single image but beyond it the server started to hang-up.

The video encoding and decoding process are particularly stressful for the CPU. Throughout the development time the CPU was under 96~97% utilisation running at maximum clock speed. This was the case for a single instance, but if multiple instances are launched the server crashes instantaneously. For running the frozen inference model GPU was used. Under single gpu setup the gpu was under 100% memory utilisation.

Apart from this network latency spikes up during the encoding and decoding process.

That's all for today!!!!

Hope you had a great week

Adios

by Shivaditya Shivganesh at July 18, 2021 02:06 PM

Darshpreet Singh

Coding Period: Week 6 July 12 To July 18

Settings drawer to toggle settings with unit test

  • Created end drawer to toggle settings
  • User can toggle notifications, notifications sound, dark mode
  • The settings done by user are saved instantly in storage and changes are made according to it
  • Wrote unit test for settings bloc with test cases 1. yields SettingsState on toggle of dark mode 2. yields SettingsState on change of notifications sound 3. yields SettingsState on toggle of notifications

Stage 3 Assessments Capture functionality

  • Stage 3 has 3 types (normal, problem, danger)
  • If a baby is classified as any type then that type of stage 3 assessments get added in app

Video GIF showing stage - 2 with classification functionality

  • background turns red on danger
  • background turns yellow on problem
  • background turns green on normal
Classifying as Danger after stage 2 assessments Classifying as Problem after stage 2 assessments

Stage 2 Unit testing

Test Cases for stage-2

  • Throws exception if assesments are done before 60 mins from birth
  • Throws exception if wardname is empty
  • Throws exception if assessments are incomplete
  • Marks phase-2 as complete if everything is correctly filled
  • Adds stage-2 assessments if list is empty

Test Cases for Classification Repository

  • if temperature < 95.5 or > 99.5 then classifies as danger
  • if severe jaundice or fast breathing then classifies as danger
  • if weight < 2000 & poor feeding then classifies as problem
  • if everything is normal then classifies as normal

Showing summary of 24 hours in home screen

To show summary of 24 hours, We need to use lastUpdatedDuration=1d (1 day) as parameter in API to fetch all the events happened within 24 hours.

This has 3 types

  • Admitted Count - Check Status = ACTIVE & Enrollment Date yesterday
  • Discharged - Check Status = COMPLETE
  • High Risk - For each TEI (Baby) this needs to be counted by parameter classification

What progress have you made this week?

  • Phase - 3, 4 assessments capturing functionality
  • Showing summary in Home Screen
  • Developing settings screen of app
  • Unit Testing phase - 2

What do I plan to do next week?

  • Adding On-Call Doctors Viewing Functionality in App
  • Completing Notification screen (Risk Assessment, Monitoring Alerts Tab)
  • Phase - 3,4 Unit testing
Settings drawer to toggle settings with unit test

July 18, 2021 05:00 AM

July 16, 2021

Bhavesh Shamra

Sixth Week of Coding 12th July — 16th July



Hey Everyone, I am back with my weekly blog. Let’s have a look at work done in the 6th week of this amazing journey.


Reimplemented and Completed App Usage Tracking System

Guys actually as stated in the last blog I had completed the app usage tracking system but on discussing with the mentor We come up with a better approach and reimplemented the completed system. There are not very huge changes we just did some changes in the dhis2 storage part. Let’s have a look at how we are tracking the trainer app usage now -

  • App usage is now stored in the user’s data store instead of the tracker program.
  • For each page, a unique id is assigned with which the page usage is tracked in datastore and in local DB as well.
  • There is a local DB support that will store the page usage and when the page usage exceeds the threshold limit for each usage then data will be sent to the dhis2 in the user’s datastore.
  • When local app usage storage get synced with the dhis2 user’s data store then local DB will get resettled to store new data.

Related MR: Added System to track app usage (!196) · Merge requests

Resolved Issues: #36 #120

Passed Pipeline:  #338127000 


Modified mhbs-tracker app to send login credentials

Since we want the user to enter credentials only once for both the apps and trainer app to be launched from the tracker app. Therefore the idea is, tracker app will share the login credentials with the trainer app on each launch. I had saved the login credentials of the user in secured Shared Prefs and on launching intent of trainer app passed these credentials so that trainer app to process further.

Related MR: Passed user credentials to trainer app for login & Fixed Some Warnings · Merge requests

Resolved Issues: #16

Passed Pipeline:  #338443846


Removed Fabric usages

The fabric plugin is depreciated and we need to remove its instances from the app.

Committed here.


Other Works

  • Added commits to the previously sent MR as asked by the mentor to make them able to merge. As for testing purposes, I had used the hardcoded credentials, Now I had removed them and fetched the password from secure storage.
  • I am not clear with the login procedure of the trainer app. I had studied the codebase and understand it well and made changes in the trainer app accordingly to make the user able to get logged in to the trainer app from the tracker app.

Work Done this Week

  1. Implemented New Idea suggested by the mentor and Completed the system to get trainer app usage over dhis2. 
  2. Removed Fabric usages from the app as it is depreciated.
  3. Modified mhbs-tracker app to send login credentials to trainer app for login.
  4. Added commits to the last MR’s to make them able to merge as suggested by the mentor.
  5. Completely understand the secure storage and login flow of the trainer app.

Planning of next Week

  1. Completed all pending work so can focus on new issues. Will be solving more bugs.
  2. Working on “Need to create a new program stage in dhis2” issue of tracker app.
  3. Working on #4 issue.

I am not clear with these issue so will try to discuss these issue in the weekend so that can start work from Monday.

Important Links

  1. Added System to track app usage (!196) · Merge requests
  2. Resolved Issues: #36 #120
  3. Passed Pipeline:  #338127000 
  4. Passed user credentials to trainer app for login & Fixed Some Warnings · Merge requests 
  5. Resolved Issues: #16
  6. Passed Pipeline:  #338443846

by noreply@blogger.com (Bhavesh Sharma) at July 16, 2021 05:41 PM

July 12, 2021

Bhavesh Shamra

Fifth Week of Coding 5th July - 9th July

 


Hello Everyone, sorry for getting delayed in writing this blog. Last week's work is as follows: 

Worked on App Usage Tracking System of Trainer App 

To track the app usage I had followed these steps-

  1. Created “mHBS Trainer Usage Tracker” Tracker Program
  • Created Tracked Entity Attributes to store [ total page visits, total time spent on a page, page visits per user, time spent on a page by per user].
  • Created “Page Usage Tracker” Tracked Entity with the above attributes.
  • Created a tracker program i.e. “mHBS Trainer Usage Tracker” to track the tei created above (Page Usage Tracker).
  • There are more than 40 pages in Trainer app. Enrolled tei for each page in “mHBS Trainer Usage Tracker” program.

Now we can send data for each and every page to dhis2 in the Tracker program.

2. Created Local SQL- DB table to store app usage

  • Users cannot remain online every time but we want the full usage of our app to track therefore we need some local storage to store app usage in offline mode and update this data to dhis2 whenever the user comes online.
  • Therefore created “app_usage” SQL table in the trainer app with the — [page_id (stores tei id of the page with which it is created at dhis2), page_name, page_visits, time spent on page ]
  • Whenever a user visits any of the pages ( get to know from routes ) then we update its visits in local DB. 
  • And similar to time spent on any page, it will be calculated with the help of “beforePageIn” & “beforePageOut” Events with simple subtraction of time in invoking this event.
  • Then update this data to dhis2

3. Idea of Threshold Limit for app usage

  • I thought that instead of hitting the API continuously to update dhis2 with current usage we can make a threshold limit like 50-page visits means whenever any page visits crossed the number 50 only in that cases we will hit the API to update dhis2 and in other cases, we just update the usage in local DB.
  • This will help us to save a lot of users data.

All of the above-discussed flows are integrated and set up. But recently we come up with a better approach suggested by the mentor, so I will try to implement that one and send the MR instead of this approach.

Works Done in the Fourth Week

  • Created “Page Usage Tracker” Tracked Entity & “mHBS Trainer Usage Tracker” Tracker Program
  • There are approx 40 pages in the trainer app, made tei instance for every page in “mHBS Trainer Usage Tracker” program to keep its usage track.
  • Stored page visits and time spent on each page by the user in local SQL-DB as well as updated this to dhis2 program. 

What do I plan to do next week?

  • Complete Pending Tasks, reimplement this solution with a better approach suggested by the mentor.
  • Try to fix some more bugs.

Have you had any blockers or issues that are impeding your project?

  • Not yet


by noreply@blogger.com (Bhavesh Sharma) at July 12, 2021 12:13 PM

July 11, 2021

Shivaditya Shivganesh

Google Summer of Code: Week 5

The main target for this week was POC development. I was successful able to develop a POC with help of HTML5 Canvas and WebXR. The total inference time is about 25 seconds on a Snapdragon 870.

The previous week's model had inherent Frozen-Graph Operations issue because of which is did not perform well when used with a larger dataset.So, I had to re-train the model. The newer performed well.

For Bounding Box generation, I have HTML5 canvas where in I draw the rectangle with the help of context2d. Total time for bounding box drawing and model inference is about 25 seconds for 3 min clip.

The video clip tested contains the images which are part of the segmented images obtained from the kavsir dataset. For joining the images I have used a software called as clideo.

The POC works well on Android phones without any major performance issues.

That's all for today!!!

Hope you had a great week

Au Revoir

References

Clideo

by Shivaditya Shivganesh at July 11, 2021 11:33 AM

Darshpreet Singh

Coding Period: Week 5 July 5 To July 11

Stage 2 Assessments Capture with Classification

  • Created stage-2 assessments capture with clasifying baby’s health using program rules
  • Health is classified in three categories (Normal, Problem, Danger)
  • App takes all data entered by user in stage 2 & then evaluate program rules for classifying health
  • After classifying health the color of assessments screen changes according to the category

Stage 2 Notifications showing feature

  • Used awesome_notifications package for displaying notification
  • Displaying scheduled notifications reminder if user has not completed assessments
  • Displaying notification on stage assessments opening
  • Created Offline Notification showing functionality
    1. Showing notification when baby is registered to complete phase -1 assessments
    2. If user forgets to do phase 1 assessment then reminding by notification again after 60 minutes
    3. Notification feature works offline using scheduled notification featur
    4. Package used for showing notification https://pub.dev/packages/awesome_notifications

Screenshots of notifications

Unit testing assessments bloc, client, repository, phase-1

Test Cases

  • Flutter Assessment BloC test
    • Test Cases
    • yield AssessmentsInitial on successful fetching of data
    • yields AssessmentsError on unsuccessful fetching of data
    • yields AssessmentsAdded on successful adding of phase 1
    • yields AssessmentsError when ward name is empty while adding of phase 1 assessments
    • yields AssessmentsError when assessments are not completed while adding of phase 1 assessments
  • AssessmentsRepository testing
    • Test Cases
    • Throws exception if wardname is empty
    • Throws exception if assessments are incomplete
    • Marks phase-1 as complete if everything is correctly filled
    • Adds stage-1 assessments if list is empty
  • Assessment Client Test
    • Test Cases
    • returns response with 200 code on successful fetching of assessments
    • throws fetch data exception on no internet connection

Searching & sorting functionality on list of babies screen

Sort List of babies by

  • Time (Birth Time)
  • Status ( Classificiation - Normal, Problem, Danger ) (Danger & Problem have high priority)
  • Location ( Ward Name)
By Birth Time By Status By Location

Search List of babies by mother’s name

Search Oni Search test

What progress have you made this week?

  • Adding Search, Sort Functionality in List Of Babies screen
  • Unit Testing Assessments Bloc, Client, Repository, Phase 1
  • Created Phase-1 Notifications showing functionality
  • Created Phase-2 Assessments Capture with notifications

What do I plan to do next week?

  • Phase - 3, 4 assessments capturing functionality
  • Showing summary in Home Screen
  • Developing settings screen of app
  • Unit Testing phase - 2 , 3 , 4
Stage 2 Assessments Capture with Classification

July 11, 2021 05:00 AM

July 04, 2021

Darshpreet Singh

Coding Period: Week 4 June 28 To July 4

Stage 1 Assessments Capture Functionality

  • Fetching & Capturing Stage - 1 Assessments , with this feature user is able to view the captured assessments & also capture the assessments and push the data to DHIS2.
  • This works offline also, data is sent to server when user refreshes on having internet next time
  • Created a BLoC to handle assessments
  • Created Stage - 1 model class which parses and converts to JSON format for parsing and converting data
  • added required ID’s in static variables in dhis2_config.dart file
  • created a client to send data, created a repository to handle data from client

Fetching list of babies enrolled in program

  • Created a BLoC for fetching list of babies enrolled in a program
  • Creating a client & repository class for fetching & saving data locally
  • Sorting the list by time to categorize recently & past registered babies
  • On Tap of baby list item the app opens assessments screen & start fetching assessments
  • List item color changes with classification of baby - Danger (Red), Problem (Yellow), Normal (Green)

Merge Request Link

User Profile Screen Functionality

  • Fetching list of users notification from dhis2
  • saving data in hive storage after fetching item
  • fetching & displaying the notification date & time for each notification

Merge Request Link

Localized strings in assessments phases UI

  • All strings used in assessments phases UI are now localized
  • localized strings are saved in app_en.arb file

Merge Request Link

What progress have you made this week?

  • Implemented User Profile Screen functionality
  • Implemented fetching list of babies from dhis2 & displaying in screen
  • Cache the data after fetching from dhis2
  • localized strings in assessments phase
  • Phase 1 assessments capturing functionality

What do I plan to do next week?

  • Phase - 2, 3, 4 assessments capturing functionality
  • Adding Search, Sort Functionality in List Of Babies screen
  • Adding sort functionality , settings UI, activity logs in profile screen
  • Update functionality in profile screen
Stage 1 Assessments Capture Functionality

July 04, 2021 05:00 AM

Shashwat

Week4

WEEK4

LibreHealth

PROGRESS MADE THIS WEEK:

Advancing into the 4th week, everything is going as per the plan. By the end of this week, most of the components planned are already created.

This week (4th week) was utilised creating components for the visit workflow.

The visit workflow primarily involves the nurse and the provider along with the patient, the nurse checks the arrival of the patient, takes the vitals, verifies and creates medications and allergies.

Provider then checks the patient and performs exams and orders lab tests if necessary.

FHIR does not have a visit resource so every operation related to a visit event is handled by the modified encounter resource.

In FHIR, Appointment is used for establishing a date for the encounter,

When the patient arrives and the visit is about to start, then the appointment will be marked as fulfilled, and linked to the newly created encounter.

The following components were created for this: (other components which will be required apart from the following mentioned components are already created)

  • Encounter
  • Service Request
  • Medication Statement
  • Quantity datatype component
  • Allergy intolerance
  • Observation

The web component repo already had components for allergy and observation, but their utility was limited, moreover for every property there was a components which was actually not required as using created datatype components all the properties of any resource could be included in a single component.

A definte pattern is used for creating these components. The pattern is demonstrated below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*imports required*/
import { LitElement, html, css } from 'lit-element';

class MyCustomElement extends LitElement {

//all the properties are defined here
static get properties() {
return {
value: { type: Object, reflect: true },
}
}

constructor() {
super();
this.value = {};
}

// handle the change in input
setDisplayValue(e) {
this.value.display = e.target.value;
}

// templates to render the component
displayTemplate() {
this.value.display = this.value.display || "";
return html`<div>HELLO!</div>`
}

// render al the templates created
render() {
return html`
${this.displayTemplate()}
`
}
}

customElements.define('my-custom-element', MyCustomElement);

Here are the screenshots:

observation


servicereq


medicationstatement

allergy

encounter


next week:

  • create the remaining component.
  • implement visit workflows in the react application.

see you next week 😄.

WEEK4

July 04, 2021 04:15 AM

July 03, 2021

Shivaditya Shivganesh

Google Summer of Code: Week 4

This week was an eventful one. I started the week with TF Object Detection model development. I trained two models one was Faster RCNN and another one was MobileNet SSD. I plan to train YOLO models too and convert them into ONNX format for JS inference.

For VR the bounding boxes posed a lot of problems . For rendering the bounding boxes I used HTML5 Canvas and WebGL for designing and rendering the bounding box. The Dataset for Segmentation has only one class so class labels are not rendered on top of the bounding box. The model inference is still slow and in some cases fails to render the bounding boxes.

POC for Object detection is not working properly at this juncture. It still requires few more corrections for improving the model performance.

That's all for today!!!

Hope you had a great week

Vale

by Shivaditya Shivganesh at July 03, 2021 04:28 PM