Emily Brady, Author at ProdSens.live https://prodsens.live/author/emily-brady/ News for Project Managers - PMI Tue, 28 May 2024 19:21:26 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.5 https://prodsens.live/wp-content/uploads/2022/09/prod.png Emily Brady, Author at ProdSens.live https://prodsens.live/author/emily-brady/ 32 32 Deploying llama.cpp on AWS (with Troubleshooting) https://prodsens.live/2024/05/28/deploying-llama-cpp-on-aws-with-troubleshooting/?utm_source=rss&utm_medium=rss&utm_campaign=deploying-llama-cpp-on-aws-with-troubleshooting https://prodsens.live/2024/05/28/deploying-llama-cpp-on-aws-with-troubleshooting/#respond Tue, 28 May 2024 19:21:26 +0000 https://prodsens.live/2024/05/28/deploying-llama-cpp-on-aws-with-troubleshooting/ deploying-llama.cpp-on-aws-(with-troubleshooting)

This tutorial was tested on g4dn.xlarge instance with Ubuntu 22.04 operating system. This tutorial was written explicitly to…

The post Deploying llama.cpp on AWS (with Troubleshooting) appeared first on ProdSens.live.

]]>
deploying-llama.cpp-on-aws-(with-troubleshooting)

This tutorial was tested on g4dn.xlarge instance with Ubuntu 22.04 operating
system. This tutorial was written explicitly to perform the installation on a Ubuntu 22.04 machine.

Installation Steps

  1. Start an EC2 instance of any class with a GPU with CUDA support.

    If you want to compile llama.cpp on this instance, you will need at least 4GB for CUDA drivers and enough space for your LLM of choice. I recommend at least 30GB. Perform the following steps of this tutorial on the instance you started.

  2. Install build dependencies:

    sudo apt update
    sudo apt install build-essential ccache
    
  3. Install CUDA Toolkit (only the Base Installer). Download it and follow instructions from
    https://developer.nvidia.com/cuda-downloads

    At the time of writing this tutorial, the highest available supported version of the Ubuntu version was 22.04. But do not fear! 🙂 We’ll get it to work with some minor workarounds (see the Potential Errors section)

  4. Install NVIDIA Drivers:

    sudo apt install nvidia-driver-555
    
  5. Compile llama.cpp:

    git clone https://github.com/ggerganov/llama.cpp.git
    cd llama.cpp
    LLAMA_CUDA=1 make -j
    
  6. Benchmark llama.cpp (optional):

    Follow the official tutorial if you intend to run the benchmark. However, keep using LLAMA_CUDA=1 make to compile the llama.cpp (do not use LLAMA_CUBLAS=1):
    https://github.com/ggerganov/llama.cpp/discussions/4225

    Instead of performing a model quantization yourself, you can download quantized models from Hugging Face. For example, Mistral Instruct you can download from https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/tree/main

Potential Errors

CUDA Architecture Must Be Explicitly Provided

ERROR: For CUDA versions < 11.7 a target CUDA architecture must be explicitly 
provided via environment variable CUDA_DOCKER_ARCH, e.g. by running 
"export CUDA_DOCKER_ARCH=compute_XX" on Unix-like systems, where XX is the 
minimum compute capability that the code needs to run on. A list with compute 
capabilities can be found here: https://developer.nvidia.com/cuda-gpus

You need to check the mentioned page (https://developer.nvidia.com/cuda-gpus)
and pick the appropriate version for your instance's GPU. g4dn instances
use T4 GPU, which would be compute_75.

For example:

CUDA_DOCKER_ARCH=compute_75 LLAMA_CUDA=1 make -j

NVCC not found

/bin/sh: 1: nvcc: not found

You need to add CUDA path to your shell environmental variables.

For example, with Bash and CUDA 12:

export PATH="https://dev.to/usr/local/cuda-12/bin:$PATH"
export LD_LIBRARY_PATH="https://dev.to/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH"

cannot find -lcuda

/usr/bin/ld: cannot find -lcuda: No such file or directory

That means your Nvidia drivers are not installed. Install NVIDIA Drivers first.

Cannot communicate with NVIDIA driver

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

If you installed the drivers, reboot the instance.

Failed to decode the batch

failed to decode the batch, n_batch = 0, ret = -1
main: llama_decode() failed

There are two potential causes of this issue.

Option 1: Install NVIDIA drivers

Make sure you have installed the CUDA Toolkit and NVIDIA drivers. If you do, restart your server and try again. Most likely, NVIDIA kernel modules are not loaded.

sudo reboot

Option 2: Use different benchmarking parameters

For example, with Mistral Instruct 7B what worked for me is:

./batched-bench ../mistral-7b-instruct-v0.2.Q4_K_M.gguf 2048 2048 512 0 999 128,256,512 128,256 1,2,4,8,16,32

The post Deploying llama.cpp on AWS (with Troubleshooting) appeared first on ProdSens.live.

]]>
https://prodsens.live/2024/05/28/deploying-llama-cpp-on-aws-with-troubleshooting/feed/ 0
Choosing Between a Streaming Database and a Stream Processing Framework in Python https://prodsens.live/2024/02/10/choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python/?utm_source=rss&utm_medium=rss&utm_campaign=choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python https://prodsens.live/2024/02/10/choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python/#respond Sat, 10 Feb 2024 17:21:23 +0000 https://prodsens.live/2024/02/10/choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python/ choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python

Streaming databases vs streaming processing framework in Python, which one fits your need? To fully leverage the data…

The post Choosing Between a Streaming Database and a Stream Processing Framework in Python appeared first on ProdSens.live.

]]>
choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python

Streaming databases vs streaming processing framework in Python, which one fits your need?

To fully leverage the data is the new oil concept, companies require a special database designed to manage vast amounts of data instantly. This need has led to different database forms, including NoSQL databases, vector databases, time-series databases, graph databases, in-memory databases, and in-memory data grids. Recent years have seen the rise of cloud-based streaming databases such as RisingWave, Materialize, DeltaStream, and TimePlus. While they each have distinct commercial and technical approaches, their overarching goal remains consistent: to offer users cloud-based streaming database services.

However, a streaming database is an independent system that is completely decoupled from other data storage such as general-purpose databases and data lakes. As a result, data must be synchronized, streamed, and handled across various systems. In this article, we’ll examine the differences between streaming databases and other stream-processing options. We’ll also explore the reasons behind the existence of Python libraries for stream processing. Ultimately, this article aims to guide you as a developer, data engineer, or data scientist in your research when it comes to making the right choice.

How are streaming databases different?

Different from traditional databases

Streaming databases are also the extension of traditional SQL databases such as PostgreSQL or MySQL. Like a traditional SQL database, the streaming database encompasses SQL syntax, a parser, and an execution mechanism. Querying and manipulating data can be achieved through SQL declarative language which gives developers or data engineers the flexibility to query stream data easily with typical SQL statements such as SELECT, FROM, WHERE, or JOIN. However, streaming databases differ from traditional databases and there are notable distinctions between in-memory continuous queries in stream processing and traditional database queries. Streaming databases consume streaming data from one or more data sources, allow querying of this data, perform incremental computations when new data comes in, and update results dynamically.

Streaming databases handle continuous queries on endless data flows.

Different from conventional analytic database

They differ from conventional analytic databases like Snowflake, Redshift, BigQuery, and Oracle in several ways. Conventional databases are batch-oriented, loading data in defined windows like hourly, daily, weekly, and so on. While loading data, conventional databases lock the tables, making the newly loaded data unavailable until the batch load is fully completed. Streaming databases continuously receive new data and you can see data updated instantly. Materialized views are one of the foundational concepts in streaming databases that represent the result of continuous queries that are updated incrementally as the input data arrives. These materialized views are then available to query through SQL.

Streaming database’s role in data processing pipeline

Different from OLAP databases

Online analytical processing (OLAP) databases like Apache Druid, Apache Pinot, and ClickHouse shine in addressing user-initiated analytical queries. You might write a query to analyze historical data to find the most-clicked products over the past month efficiently using OLAP databases. When contrasting with streaming databases, they may not be optimized for incremental computation, leading to challenges in maintaining the freshness of results. The query in the streaming database focuses on recent data, making it suitable for continuous monitoring. Using streaming databases, you can run queries like finding the top 10 sold products where the “top 10 product list” might change in real-time.

Different from stream processing engines

Other stream processing engines (such as Flink and Spark Streaming) provide SQL interfaces too, but the key difference is a streaming database has its storage. Stream processing engines require a dedicated database to store input and output data. On the other hand, streaming databases utilize cloud-native storage to maintain materialized views and states, allowing data replication and independent storage scaling.

Different from stream-processing platforms

Stream-processing platforms such as Apache Kafka, Apache Pulsar, or Redpanda are specifically engineered to foster event-driven communication in a distributed system and they can be a great choice for developing loosely coupled applications. Stream processing platforms analyze data in motion, offering near-zero latency advantages. For example, consider an alert system for monitoring factory equipment. If a machine’s temperature exceeds a certain threshold, a streaming platform can instantly trigger an alert and engineers do timely maintenance.

Now imagine predicting when machinery is likely to fail and then alerting. Such predictions may require historical data on equipment performance, which must be stored for analysis. However, as queries become more complex, involving historical context, it often necessitates data persistence. In this case, a Streaming database can be used to make real-time decisions within context, such as predicting machine failures.

When to use a streaming database?

  1. If you centralize real-time data storage, making it easier to access and analyze data across multiple projects.
  2. If you develop materialized views that are incrementally updated and directly serve them to user-facing dashboards and applications for real-time analytics purposes.
  3. If you are developing event-driven applications where you utilize two distinct data stores: one as the primary data source and the other for streaming data.

Do we really need a specialized streaming database?

Streaming databases are great for serving incrementally updated materialized views directly to end user-facing dashboards and applications. Streaming databases may not be the right tool for building real-time streaming pipelines where the output of one stage in the pipeline is input to another or there are complex event processing rules in the pipeline where you need to implement complex business logic. For example, there might be a complex event processing scenario even in a typical inventory management. When inventory levels for a high-demand product drop below a certain threshold, the system should trigger an automatic reorder by requesting external APIs. Additionally, if multiple items are frequently purchased together, the system needs to identify these patterns, allowing for strategic product placement in the store. As you can not write every single logic using SQL, you need to implement event processing functionality in the application code.

Streaming database data sync with a primary database

Using a separate streaming database tends to introduce recurring challenges we frequently encounter and address when working with distributed systems. The challenges include redundant data, excessive data movement, issues with data synchronization, handling large volumes of data requires robust infrastructure, extra labor expense for specialized skills, extra licensing costs, limited query language power, programmability, and extensibility, limited tool integration, and poor data integrity and availability compared with general-purpose databases.

Stream processing frameworks in Python

We understood how streaming databases differ from traditional databases, stream processing engines, conventional analytics databases, or OLAP databases. Now let’s focus on when and why we can use stream data processing frameworks for Python as an alternative to streaming databases. Python is the go-to language for data science and machine learning. There are some stream-processing libraries and frameworks in Python such as Bytewax, Quix, GlassFlow, Pathway. They have been developed to cope with the challenges Python Engineers face with Apache Kafka or Flink since they do not natively support Python.

Data streaming pipeline using Python

Why use Python for data streaming?

  1. First of all, Python frameworks can be used out-of-the-box with any existing Python library (like Pandas, NumPy, Scikit Learn, Flask, TensorFlow, etc.) to connect to hundreds of data sources and use the entire ecosystem of data processing libraries. They allow Python developers and data engineers to build new data pipelines or modernize existing ones without overwriting the code for batch and stream processing workflow.
  2. Much easier to get started, because you need to install a Python library without a complex initial setup like creating computing clusters or running JVM in a Kafka case.
  3. They manage data in the application layer and your original data stays where it is. This way data consistency is no longer an issue as it was with streaming databases. You can use Change Data Capture (CDC) services like Debezium by directly connecting to your primary database, doing computational work, and saving the result back or sending real-time data to output streams.
  4. They do real-time incremental in-memory transformation of complex event streams including stateful operations like joins, transformation, windowing, and aggregations.
  5. They make it easy to launch multiple case-by-case data science projects and run your local code right from Jupyter Notebook.
  6. Some offer fully managed service with zero provisioning, setup, or maintenance in your environment or any public cloud like AWS, Azure, or Google.

When to use Python frameworks?

Python frameworks can be effectively utilized for building real-time data processing pipelines in various scenarios:

  1. If you have existing/planning to use Python programming language as a main stack for development, data engineering, and machine learning work.
  2. If you want to perform low-latency serverless data streaming with Python.
  3. If you are facing performance issues with an Apache Kafka/Flink/Spark streaming system.
  4. If you have issues with data synchronization in a distributed system like microservices.
  5. If you want to use the same data pipeline for batch and stream processing.

Real-time data transformation pipeline

  1. If you need to efficiently do stateful operations such as joins, transformation, windowing, and aggregations.
  2. If you need to create custom data processing pipelines, where you run custom functions to fetch, transform, and call other real-time services.

Conclusion

We went through key considerations for choosing a streaming database or Python-based stream processing framework. Streaming databases are the go-to choice when centralizing real-time data storage. They excel in scenarios where materialized views are incrementally updated and directly served to user-facing dashboards and applications for real-time analytics. On the other hand, Python frameworks are suitable for various scenarios, including Python-centric data streaming pipeline development within the application layer, real-time incremental in-memory transformations, enabling batch and stream processing with the same pipeline, performing stateful operations efficiently, and customizing data processing pipelines.

Microservices Data Synchronization Using PostgreSQL, Debezium, and NATS
Training Fraud Detection ML Models with Real-time Data Streams

About the author

Visit my blog: www.iambobur.com

The post Choosing Between a Streaming Database and a Stream Processing Framework in Python appeared first on ProdSens.live.

]]>
https://prodsens.live/2024/02/10/choosing-between-a-streaming-database-and-a-stream-processing-framework-in-python/feed/ 0
Human and AiConfig – Life is all about Composition https://prodsens.live/2023/12/10/human-and-aiconfig-life-is-all-about-composition/?utm_source=rss&utm_medium=rss&utm_campaign=human-and-aiconfig-life-is-all-about-composition https://prodsens.live/2023/12/10/human-and-aiconfig-life-is-all-about-composition/#respond Sun, 10 Dec 2023 06:25:47 +0000 https://prodsens.live/2023/12/10/human-and-aiconfig-life-is-all-about-composition/ human-and-aiconfig-–-life-is-all-about-composition

Introduction In this blog post, I will be discussing the topic of life is all about composition. You…

The post Human and AiConfig – Life is all about Composition appeared first on ProdSens.live.

]]>
human-and-aiconfig-–-life-is-all-about-composition

Introduction

In this blog post, I will be discussing the topic of life is all about composition. You will be guided and taken into the world of AI based approach for your own understanding. We’ll be making use of the AiConfig for this purpose. More details will be discussed shortly.

Understanding of “Composition” is really crucial in life. I cannot stress out on the significance of it in our life. Be it an artwork, programming or a construction or architectural work etc. everything that you see and work with involves the composition at the highest level. Let me walk you through with a real good example with a mixture of artificial intelligence (AI) generated composite artwork via DALL-E.

Practicals

Let us get into the real-world problem to understand the compositions and the usage of the same with a realistic example. Here I am considering the DALL-E 3 Model for generating the water colored artwork.

LittleGirlWithTheHorse

LittleGirlWithTheHorse1

LittleGirlWithTheHorse2

LittleGirlWithTheHorse3

LittleGirlWithTheHorse4

LittleGirlWithTheHorseAndCat

Below are the features extracted from the DALL-3 prompt. Notice carefully each of the feature to understand the depth of the compositions. The more carefully you observe the artwork, the more compositions you see. You may call it as attributes/features or compositions, they all mean the same.

 "Features": [
            {
                "Feature": "Watercolor painting",
                "Description": "The artwork is created using watercolor painting technique, which involves using water-soluble pigments to create a translucent effect."
            },
            {
                "Feature": "Teenage girl",
                "Description": "The painting depicts a teenage girl, representing youth and energy. She is the central character in the artwork."
            },
            {
                "Feature": "Playful interaction",
                "Description": "The teenage girl is shown engaging in a playful interaction with the horse and the cat, indicating a joyful and lively atmosphere."
            },
            {
                "Feature": "Horse",
                "Description": "The horse is one of the animals in the painting. It should reflect affection and trust towards the girl, symbolizing a strong bond between them."
            },
            {
                "Feature": "Cat",
                "Description": "The cat is another animal in the painting. It should also reflect affection and trust towards the girl, emphasizing her love for animals."
            },
            {
                "Feature": "Lush outdoor setting",
                "Description": "The painting is set in a lush, outdoor environment, characterized by abundant vegetation and natural beauty."
            },
            {
                "Feature": "Enthusiasm and love for animals",
                "Description": "The teenage girl should be characterized by her enthusiasm and love for animals, which is evident in her interaction with the horse and the cat."
            },
            {
                "Feature": "Detailed artwork",
                "Description": "The artwork should exhibit a high level of detail, showcasing the artist's attention to intricacies and precision."
            },
            {
                "Feature": "Professional, artistically refined style",
                "Description": "The artwork should demonstrate a professional and refined style, indicating the artist's expertise and mastery of the watercolor technique."
            }
        ]

Hands On

Now that you have understood the meaning and importance of “Composition”, you will be guided with the mechanism to have a hands-on experience. For this purpose, we’ll be making use of AiConig driven approach of LastMileAI. If you are new to the LastMileAI or AiConfig, I request you to please read the following blogs

Building with generative AI
Prompt Chaining

Here’s the AiConfig, copy and save it on your local.

{
  "name": "Text to Image",
  "schema_version": "latest",
  "metadata": {
    "models": {
      "gpt-4": {
        "model": "gpt-4",
        "top_p": 1,
        "temperature": 1,
        "system_prompt": "You are an expert DaLL-E prompt generator",
        "presence_penalty": 0,
        "frequency_penalty": 0
      }
    },
    "parameters": {}
  },
  "prompts": [
    {
      "name": "cell_1",
      "input": "Please provide a single Dall-E prompt template for generating the image. Make sure to include all the required attributes to make it more professional like an artist. Make sure to generate with the water colored painting.nnHere's the themenn{{content}}",
      "metadata": {
        "model": {
          "name": "gpt-4",
          "settings": {}
        },
        "parameters": {
          "content": "A teen girl playing with the horse and a cat"
        },
        "remember_chat_context": true
      }
    }
  ]
}
  1. Login to LastMileAI
  2. Navigate to the Workbooks and then do the following to upload the aiconfig file.
  3. Once the AiConfig is loaded, you can execute the cells and learn how to integrate with the AI models for generating the creative artwork, for example.

AiConfigCreate

Conclusion

We have learned the art and beauty of “Composition” and how to make use of it in our day-to-day tasks. The one who understands and drives with the composition will be a true winner. Either you use AiConfig or which ever approach you prefer, in the end the concept of composition remains the same.

Here’s the most fascinating thing 🙂

  • This entire blog post was created with the composition mechanism.
  • The AiConfig, if you closely deep dive into the cells, you will realize the composition

The post Human and AiConfig – Life is all about Composition appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/12/10/human-and-aiconfig-life-is-all-about-composition/feed/ 0
Outsourcing cons and pros https://prodsens.live/2023/11/07/outsourcing-cons-and-pros/?utm_source=rss&utm_medium=rss&utm_campaign=outsourcing-cons-and-pros https://prodsens.live/2023/11/07/outsourcing-cons-and-pros/#respond Tue, 07 Nov 2023 10:24:54 +0000 https://prodsens.live/2023/11/07/outsourcing-cons-and-pros/ outsourcing-cons-and-pros

as working in it field you may hear about outsourcing as it became quit spreading nowadays, so what…

The post Outsourcing cons and pros appeared first on ProdSens.live.

]]>
outsourcing-cons-and-pros

as working in it field you may hear about outsourcing as it became quit spreading nowadays, so what is it?
outsourcing is the practice of contracting specific business functions or processes to external service providers
as everything it has both advantages and disadvantages
and its suitabilty depends on various factors, including the nature of the business, the specific tasks being outsourced and the goals of the organization.

Advantages of Outsourcing:

-Cost saving
Outsourcing can reduce labor and operational costs when tasks are outsourced to countries with lower labor costs.

-Focus on Core Activities:

Outsourcing non-core functions allows a company to focus on its core competencies and strategic activities.

  • Access to Global Talent
    outsourcing provides access to a global talent pool allowing organizations to find specialized skills and expertise they may not have in-house.

  • Scalability
    outsourcing can be scaled up or down as needed making it flexible for businesses with fluctuating workloads.

  • Increased Efficiency
    specialized service providers can often perform tasks more efficiently and with higher quality due to their expertise.

  • Time saving
    outsourcing can save time and effort spent on non-core tasks allowing management to concentrate on strategic planning.

  • Risk sharing
    service providers often assume certain risks, such as project delays or cost overruns, which can mitigate some of the client’s risks.

  • Access to Technology
    outsourcing providers may have the latest technology and tools, enabling clients to benefit from these resources.

Economies of Scale: Outsourcing firms can achieve economies of scale, spreading costs across multiple clients and providing cost advantages.

Cons of Outsourcing:

  • Loss of Control
    outsourcing means giving up control over certain business functions, which can be a disadvantage if the provider doesn’t meet expectations.

  • Quality Concerns
    quality issues can arise when outsourced tasks do not meet the desired standards, especially if communication is poor.

  • Security Risks
    sharing sensitive data with external parties can pose security and confidentiality risks if not properly managed.

  • Cultural and Language Barriers
    differences in culture, language, and time zones can lead to communication challenges and misunderstandings.

  • Dependency on Providers
    overreliance on outsourcing providers can leave a company vulnerable if the provider experiences issues or goes out of business.

  • Hidden Costs
    initial cost savings may be eroded by hidden fees, renegotiations, or the need for additional oversight.

  • Lack of Alignment
    the outsourced provider’s goals and priorities may not always align with the client’s strategic objectives as the focus sometimes on the targets

  • Transition Challenges
    the process of transitioning tasks to an outsourcing partner can be complex, time-consuming, and disruptive.

  • Negative Impact on Employees
    employees may feel demotivated or worried about job security when functions are outsourced.

  • Legal and Regulatory Compliance
    outsourcing may lead to legal and compliance issues related to data protection, labor laws, and contracts.

It’s essential for organizations to weigh the pros and cons of outsourcing carefully and consider their unique circumstances before decidng to outsource.
a well-planned outsourcing stratgy can yield substantial benefits, but it should be executed with a clear understanding of the potential challenges and risks.

The post Outsourcing cons and pros appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/11/07/outsourcing-cons-and-pros/feed/ 0
Building a frontend auth in WordPress https://prodsens.live/2023/08/01/building-a-frontend-auth-in-wordpress/?utm_source=rss&utm_medium=rss&utm_campaign=building-a-frontend-auth-in-wordpress https://prodsens.live/2023/08/01/building-a-frontend-auth-in-wordpress/#respond Tue, 01 Aug 2023 10:24:52 +0000 https://prodsens.live/2023/08/01/building-a-frontend-auth-in-wordpress/ building-a-frontend-auth-in-wordpress

WordPress, love it or hate it, is here to stay. It powers ~65% of the Internet, and is…

The post Building a frontend auth in WordPress appeared first on ProdSens.live.

]]>
building-a-frontend-auth-in-wordpress

WordPress, love it or hate it, is here to stay. It powers ~65% of the Internet, and is used by corporations large and small, bloggers, agencies and everything in between.

As WordPress website’s grow in functionality it often becomes necessary for users to log into the site. One example of this may be when you offer (pay)walled content, whereby a user must be logged in to read it.

There are plugins that can do this, but that’s a heavy dependency on a third-party that can introduce security risks, not to mention a risk of them disappearing (this happens more often than you may think, even for popular plugins).

So, roll your own.

We’ve created a series of tutorials on how to build your own frontend auth experience in WordPress.

This series of articles takes you through the following:

  1. Building a frontend registration form in WordPress
  2. Building a frontend login form in WordPress
  3. Building a frontend forgotten password form in WordPress

Check it out, and if you have any questions let us know in the comments.

The post Building a frontend auth in WordPress appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/08/01/building-a-frontend-auth-in-wordpress/feed/ 0
How To Stay Calm Under Pressure at Work (According to Professionals) https://prodsens.live/2023/04/25/how-to-stay-calm-under-pressure-at-work-according-to-professionals/?utm_source=rss&utm_medium=rss&utm_campaign=how-to-stay-calm-under-pressure-at-work-according-to-professionals https://prodsens.live/2023/04/25/how-to-stay-calm-under-pressure-at-work-according-to-professionals/#respond Tue, 25 Apr 2023 12:01:39 +0000 https://prodsens.live/2023/04/25/how-to-stay-calm-under-pressure-at-work-according-to-professionals/ how-to-stay-calm-under-pressure-at-work-(according-to-professionals)

The business world can feel like a place of constant pressure and complexity. We hate stress a lot…

The post How To Stay Calm Under Pressure at Work (According to Professionals) appeared first on ProdSens.live.

]]>
how-to-stay-calm-under-pressure-at-work-(according-to-professionals)

The business world can feel like a place of constant pressure and complexity. We hate stress a lot (because it sucks) but, at work, it can sometimes feel like addressing and dealing with stress can get in the way of meeting deadlines and producing results.

Stress should always be addressed, though, because not dealing with it can lead to burnout — a legitimate health condition.

In this post, learn why remaining calm under pressure at work is important and strategies to stay level-headed.

Download Now: 5 Free Skill Development Templates

Why is it important to stay calm under pressure at work?

Justin Menkes, the author of Better Under Pressure, says that pressure itself isn’t bad, but pressure that becomes panic is. “There’s a lot of research that shows that a moderate amount of pressure is critical for human satisfaction and gratification, otherwise we get very restless. We like challenge; we have to have challenge. It’s just that, if you overload and flood us, panic is what many people are talking about when they say ‘unhealthy pressure.’”

The key is handling pressure without panic, and here are tips and expert advice for doing so.

How to Stay Calm Under Pressure At Work

1. Organize your priorities.

Staying organized at work is a great way to stay calm under pressure. Creating to-do lists to uncover the most pressing tasks and devising an organized way to tackle your responsibilities so you don’t get overwhelmed.

For example, in the face of an upcoming deadline, you can list tasks and their dependencies, organize them by importance, and create a structure to follow to help you meet your deadline.

Alison Elworthy, EVP of Revenue Operations at HubSpot, says, “For me, it’s all about staying organized and being methodical to get through stressful situations. I approach it like any other large project I might be tackling at work and will even create a project plan to get through it, as nerdy as that sounds.”

2. Think about the satisfaction of future results.

Thinking about the benefits of the future can help you build a more positive attitude about your now if you remember that good things are to come.

For example, maybe you’re racing to finalize a marketing campaign for a new product, but you’re caught up in your remaining tasks. Launching the campaign and seeing ROI can be incredibly satisfying and a valuable motivator, so taking time to think about the outcome of your tasks can be helpful.

3. Break down larger tasks.

Dharmesh Shah, HubSpot Founder and CTO, says, “Usually, I feel the most pressure when there is a seemingly overwhelming large problem at hand. My tactic to deal with this is to ‘deconstruct’ the large problem at hand into smaller, bite-sized chunks. Each of the individual, smaller things seem surmountable on their own, and it calms me to know that if I conquered all of those small things, I’ve essentially conquered the big thing.”

Breaking down large tasks might help you realize that your responsibilities are entirely manageable and that you have what you need to get them done.

4. Reach out to people on your team.

Your coworkers and managers are there to support and help you at work. They can offer fresh perspectives, act as a sounding board for your thoughts, and offer advice about your processes.

Therefore, reaching out to people on your team can be a grounding and helpful strategy if you’re experiencing a bit of stress on-the-job.

5. Take breaks.

Taking breaks can remove you from the stress that’s impacting your work, and taking a step away to focus on something else and letting your thoughts wander can help you clear your head.

Everyone decompresses in different ways, but some kinds of breaks to consider are:

  • Walking around the office or stepping outside to get a change of scenery.
  • Socializing and catching up with coworkers.
  • Having a snack.
  • Picking up another task or starting a new one.

6. Focus on the now.

Ruminating on the future is easy to do when you feel stressed, whether you’re worried about an upcoming presentation or meeting a deadline. This thinking can take up a lot of time and can actually make you more stressed.

While easier said than done, focusing on your present day can be grounding because the job currently in front of you has to get done, and, in some cases, getting it done now can make you better prepared for what’s to come.

Mike Volpe, former CMO of HubSpot, says “You almost need to have tunnel vision in order to ignore all the outside noise that is creating the stressful situation.” Focusing on the things you need to get done today can distract you from your overall stressors.

7. Build your ideal work environment.

Having a work environment that you’re comfortable in and is conducive to your productivity can help you combat stress and pressure at work. Being around things that you enjoy can be grounding, and a space you’re excited about can make you excited about work.

Maybe having plans and greenery at your desk makes you feel motivated and uplifted, or maybe it’s more personalized touches like pictures of loved ones. Whatever you include in your space, it should help you feel comfortable.

8. Prioritize a work-life balance.

A work-life balance is important to many working professionals, as it ensures stressors of work are checked at the door and are replaced with personal hobbies and activities that bring joy uninterrupted by the demands of a job.

When it comes to staying calm under pressure, stepping away and enjoying things outside of work can help you feel relaxed and level-headed, and keeps stress from creeping into all aspects of your life.

Mark Roberge, former CRO at HubSpot, says “”My key to staying calm in high-pressure roles is disciplined prioritization and maintaining a balance across my personal and professional lives
I always prioritize activities that keep my stress in check.”

Roberge says he runs, meditates, plays guitar, and avoids weekend work to not compromise time with his family. “Squeezing in one more meeting or one more email at the expense of these balancing activities quickly leads to burn out,” and burnout is never worth it.

New Call-to-action

The post How To Stay Calm Under Pressure at Work (According to Professionals) appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/04/25/how-to-stay-calm-under-pressure-at-work-according-to-professionals/feed/ 0
How to Write an Action Plan (Example Included) https://prodsens.live/2023/04/21/how-to-write-an-action-plan-example-included/?utm_source=rss&utm_medium=rss&utm_campaign=how-to-write-an-action-plan-example-included https://prodsens.live/2023/04/21/how-to-write-an-action-plan-example-included/#respond Fri, 21 Apr 2023 16:04:13 +0000 https://prodsens.live/2023/04/21/how-to-write-an-action-plan-example-included/ how-to-write-an-action-plan-(example-included)

What Is an Action Plan? In project management, an action plan is a document that lists the action…

The post How to Write an Action Plan (Example Included) appeared first on ProdSens.live.

]]>
how-to-write-an-action-plan-(example-included)

What Is an Action Plan?

In project management, an action plan is a document that lists the action steps needed to achieve project goals and objectives. Therefore, an action plan clarifies what resources you’ll need to reach those goals, makes a timeline for the tasks or action items and determines what team members you’ll need to do it all. We’ll define what project goals, project objectives, action items and action steps are later on in this guide.

An action plan documents the execution of the project plan. That is, it’s a detailed list of the work that must be done to complete the project goals, including the action steps that are involved in getting from the start of the project to the finish. An action plan is similar to a project implementation plan and it’s very helpful during the project planning and project execution phases.

Not only are you figuring out the action steps and timeline, but you’ll also determine who you’ll assemble for your project team to work on those tasks.

Get your free

Action Plan Template

Use this free Action Plan Template for Excel to manage your projects better.

 

Action Plan Components

An action plan will answer the who, what and when of what you’re proposing. Those questions are answered by the various components that make up an action plan. The following are the basic building blocks of a successful action plan.

  • Action Plan Steps: The action plan steps are the answer to the question of what. They are the activities that will lead to achieving whatever your goal is. Action plan steps detail what will happen. The more detail, the better.
  • Action Items: The action items are the specific, small tasks that make up the action plan steps. These are the tasks that when executed complete the step and lead to the next action plan step.
  • Action Plan Timeline: An action plan timeline is the whole action plan laid out from start to finish. It shows the full duration of the action plan and every step and task is also plotted on this timeline, including their start and end dates.
  • Action Plan Resources: Resources are anything needed to execute the action plan. That includes labor, materials, equipment, etc. You’ll want to identify the resources you’ll need for the action plan and attach them to the tasks they will be applied to.
  • Action Plan Matrix: A matrix is just a tool to help you determine which tasks you need to complete and in what order. Use our free action plan template to outline the steps, items, timeline and resources you’ll need to get the plan done right.
  • Action Plan Report: Once you start to execute the action plan you’ll need to make sure your actual progress is matched to your planned progress. In order to track progress you’ll want to use an action plan report, which is a snapshot of your time, costs and more over a specific period of time.

Types of Action Plans

There are many different types of action plans that are used on various kinds of strategic initiatives. Each is similar in makeup but differs in their goals. Here are a few of the variety of action plans.

Business Action Plan

A business action plan is used to set goals and tasks when you want to start a business or grow an existing business. It outlines the vision for the business and the actions you’ll take to achieve that vision.

Project Action Plan

An action plan for a project is really no different from a general action plan. The only difference is that it’s about producing a deliverable at the end of the plan, whether that be a product or service.

Personal Action Plan

Again, a personal action plan differs little from any other action plan save it its goal. For example, a personal action plan might be for an individual to exercise more. Therefore, the goal might be to walk for a half-hour a day, say, during lunchtime.

How to Write an Action Plan for Project Management in 10 Steps

The benefits of an action plan are simple: you have now outlined what action steps and what resources are needed to reach your stated project goals. By having this all collected in a single project management document, you can more successfully plan out how to execute your project plan.

People get overwhelmed by project management jargon when having to plan out a project, but the word action everyone can understand. The fundamentals to getting an action plan together for any project follow these four project planning basic steps:

1. Define your Project Goals

There’s a difference between project goals and project objectives. Project goals refer to the high-level goals that the project will achieve. Those generally align with the strategic planning and business objectives of organizations.

2. Define your Project Objectives

The project objectives are much more specific than the project goals. Project objectives refer to the deliverables and milestones that need to be completed to achieve your project goals.

3. Define Action Steps

The action steps are a group of related tasks or action items that must be executed to produce project deliverables.

4. Identify and Prioritize Action Items

Action items are small, individual tasks that make up the action steps that are outlined in your action plan. First, you need to identify task dependencies among them, and then assign those action items a priority level so that they’re executed sequentially.

5. Define Roles & Responsibilities

Now that you’ve divided the work required to accomplish your action plan, you’ll need to assign action items to your project team members and define their roles and responsibilities.

6. Allocate Resources

As with your project plan, your action plan has resource requirements. Having identified your action steps and action items will help you understand what resources are needed for each task and allocate them accordingly.

7. Set SMART Goals

Your action plan needs to be monitored and controlled to measure its performance. That’s why it’s important that you set SMART goals for your action items, action steps and your project objectives. SMART goals stand for specific, measurable, attainable, relevant and timely.

8. Set a Timeline for your Action Plan

As a project manager you’ll need to do your best to estimate how long it’ll take to complete your action items and action steps. Once you do so, you’ll have a timeline. You can use project management techniques like PERT charts or the critical path method to better estimate the duration of your project action plan.

9. Write an Action Plan Template

Create or use a simple action plan template to collect tasks, deadlines and assignments. This is the place where everything task-related goes in your project action plan, so you have a place for all this crucial information.

Writing an action plan template it’s a great idea because you’ll need to use that format throughout the project. That’s why we’ve created a free action plan template that you can download.

10. Use a Project Management Tool

Use a project management tool to keep you on task. ProjectManager has project planning features that help you monitor and report on project progress and performance. Get a high-level view of the action plan with our live dashboards. Unlike other tools, we don’t make you set up the dashboard.

It’s ready for use the moment you open our project planning tools. More than that, we calculate the various metrics, such as project variance, workload and more. They’re displayed in easy-to-read charts and graphs. Share them with stakeholders to give them updates on action steps whenever they want. Sounds good? Try our tool for free by taking this 30-day trial.

ProjectManager's dashboard
ProjectManager has a real-time dashboard that acts as an instant status report. Learn More!

Tips to Write an Action Plan

Once you have an action plan, how do you work with it to run a successful project? Here are some tips to help with implementing your action plan:

  • Focus on priorities and what is due now when identifying action steps and setting your action plan timeline
  • Mark completed the action steps complete
  • Have your team members work on one project management platform
  • Set Up Alerts
  • Discuss pending or last tasks

Action Plan Example

We’ve been talking a lot about an action plan, but let’s take a look at one. Below, you’ll see our free action plan template. It’s set up for the development of a website.

It’s broken down into phases, the first being the project planning phase, which includes the action steps, market research and the design of the site. You’ll see that tasks are outlined for each action step, including a description of that task, who is assigned to execute it, the priority and even the status of its completion.

This is followed by the third action step, which is the launch of the site. This is the execution phase of the action plan, but it follows the same format, such as noting the priority, who’s responsible for the work, what that work is and its status.

action plan steps and action items

There’s also a timeline to define the start dates of each of the tasks in the action steps, including the planned hours. This allows you to determine the length of each task and the duration of the entire action plan, from start to finish.

action plan timeline

Finally, there’s a place to add your resources. They are broken down into departments, for example, marketing, web development, etc. Then the materials that are required for each task are listed, including their costs. This will allow you to estimate the cost of the plan.

action plan resource

Action Plan Sample

For our action plan example and action plan sample we used our free action plan template for Excel. Download this action plan sample for free from our site. There are also dozens of other free project management templates for Excel and Word that you can get for free to help you with every phase of your project.

action plan sample

How to Make An Action Plan with ProjectManager

Follow along with this example to see how action plans are typically laid out using project planning software.

Map Action Plan Steps Using Multiple Project Views

ProjectManager can help you build your action plan and then execute it. Collect all your action steps tasks on our list view, which does more than light-weight to-do list apps. Unlike them, we can prioritize action items, customize tags and show the percentage complete for each task. Our cloud-based project management software gives you real-time data to help you create an action plan and stick to it.

ProjectManager's list view
Use the list view from ProjectManager to organize your action plan steps. Get Started for Free!

Note Phases and Assignments

It’s important to note all the phases of the project timeline to know what action steps and tasks will take place, and when. You’ll also want to set roles and responsibilities to ensure the work is carried out properly.

Track Progress

Once you start the project, you’ll need to chart the progress of the work being done. This leads us to the timeline, where you’ll have a start and due date for each of your tasks, as well as how long you plan for it to take, so you can use this as a baseline and make sure you’re staying on target. You can make your project timeline on a Gantt chart.

Keep Track of Resources

Finally, your action plan will list resources. Who is responsible for which task, and what materials are involved? What are those costs? You also should have a section in the action plan for notes that don’t fall into any of the other categories. ProjectManager has resource management features that allow you to allocate resources for each action step and task of your action plan.

Manage Your Project with an Action Plan

Getting a plan together is only the first part of managing a project. Remember, it’s not something to write and put away, but a living document that should follow you throughout the project life cycle. Jennifer Bridges, PMP, offers more tips on how to write an action plan in the video below.

Here’s a screenshot for your reference:

project planning fundamentals

ProjectManager’s Action Planning Tools are Ideal for Managing Action Plans

If you’re looking to make an action plan and then take action on it by executing, monitoring and reporting on a project, then you’ll want ProjectManager. Our cloud-based project management software can import your action plan into an online Gantt chart. Now you can organize your tasks, link dependencies and set milestones. More than that you can filter for the critical path. When you’re done scheduling, set the baseline. This allows you to always see the planned versus actual progress of your project to help you stay on track. Try our tool for free today.

ProjectManager's Gantt chart

From there you can assign tasks and give teams a collaborative platform to comment and share relevant documents. Dependent tasks can be linked to avoiding bottlenecks, and when things change, the schedule can be easily edited by simply dragging and dropping start and end dates.

The post How to Write an Action Plan (Example Included) appeared first on ProjectManager.

The post How to Write an Action Plan (Example Included) appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/04/21/how-to-write-an-action-plan-example-included/feed/ 0
10 Best React Libraries for Building User Interfaces https://prodsens.live/2023/03/08/10-best-react-libraries-for-building-user-interfaces/?utm_source=rss&utm_medium=rss&utm_campaign=10-best-react-libraries-for-building-user-interfaces https://prodsens.live/2023/03/08/10-best-react-libraries-for-building-user-interfaces/#respond Wed, 08 Mar 2023 21:03:45 +0000 https://prodsens.live/2023/03/08/10-best-react-libraries-for-building-user-interfaces/ 10-best-react-libraries-for-building-user-interfaces

React is a popular JavaScript library for building user interfaces. It provides developers with a simple and efficient…

The post 10 Best React Libraries for Building User Interfaces appeared first on ProdSens.live.

]]>
10-best-react-libraries-for-building-user-interfaces

React is a popular JavaScript library for building user interfaces. It provides developers with a simple and efficient way to create complex UIs with reusable components. However, using third-party libraries can further enhance the functionality and capabilities of your React application. In this blog post, we’ll explore 10 of the best React libraries for building user interfaces.

1. React Router

React Router is a popular library that allows you to handle routing in your React application. It provides declarative routing and navigation for your application and allows you to define routes using simple JSX components. With React Router, you can create dynamic and flexible navigation for your application.

2. Material UI

Material UI is a popular library that provides a set of reusable components based on Google’s Material Design system. With Material UI, you can quickly create beautiful and responsive user interfaces for your React application. It includes a wide range of components, such as buttons, forms, and navigation elements.

3. Redux

Redux is a predictable state container for JavaScript apps. It provides a central store that holds the state of your application and allows you to manage it using actions and reducers. Redux can help you manage complex state in your application and improve its performance.

4. React Bootstrap

React Bootstrap is a library that provides a set of Bootstrap components built with React. With React Bootstrap, you can easily create responsive and mobile-friendly user interfaces for your React application. It includes a range of components, such as alerts, buttons, and modals.

5. React Table

React Table is a library that provides a powerful and flexible way to display data in a table format. With React Table, you can easily create sortable, filterable, and paginated tables for your application. It includes a range of features, such as virtualization, server-side rendering, and accessibility.

6. React Select

React Select is a library that provides a flexible and customizable select component for your application. With React Select, you can easily create dropdown menus with search capabilities, multi-select options, and custom rendering. It also supports keyboard navigation and accessibility.

7. React Spring

React Spring is a library that provides a simple and efficient way to create animations in your React application. It includes a range of animation presets and supports physics-based animations, such as springs and bounces. With React Spring, you can create smooth and engaging animations for your user interfaces.

8. React Query

React Query is a library that provides a powerful and flexible way to manage data fetching and caching in your React application. It includes features such as caching, polling, and pagination, and can help you optimize your application’s performance by reducing unnecessary requests.

9. Formik

Formik is a library that provides a simple and efficient way to manage forms in your React application. With Formik, you can easily handle form validation, submission, and error handling. It also includes features such as support for complex nested forms and integration with popular form libraries such as Yup.

10. React Icons

React Icons is a library that provides a set of popular icons as React components. With React Icons, you can easily add icons to your user interfaces without the need for custom CSS or image assets. It includes a wide range of icons, such as FontAwesome, Material Icons, and Feather Icons.

In conclusion, using third-party React libraries can significantly enhance the functionality and capabilities of your application. Whether you’re looking to handle routing, create beautiful user interfaces, manage state, or create animations, there’s a library out there that can help you achieve your goals. We hope this list of the 10 best React libraries for building user interfaces.

Thank you,
J-Sandaruwan.

The post 10 Best React Libraries for Building User Interfaces appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/03/08/10-best-react-libraries-for-building-user-interfaces/feed/ 0
What is Spotlight on Snapchat? Discover Everything You Need to Know https://prodsens.live/2023/02/02/what-is-spotlight-on-snapchat-discover-everything-you-need-to-know/?utm_source=rss&utm_medium=rss&utm_campaign=what-is-spotlight-on-snapchat-discover-everything-you-need-to-know https://prodsens.live/2023/02/02/what-is-spotlight-on-snapchat-discover-everything-you-need-to-know/#respond Thu, 02 Feb 2023 05:04:54 +0000 https://prodsens.live/2023/02/02/what-is-spotlight-on-snapchat-discover-everything-you-need-to-know/ what-is-spotlight-on-snapchat?-discover-everything-you-need-to-know

TikTok’s got the “For You” tab, Instagram has the “Explore” tab, and YouTube has Shorts. Now, Snapchat has…

The post What is Spotlight on Snapchat? Discover Everything You Need to Know appeared first on ProdSens.live.

]]>
what-is-spotlight-on-snapchat?-discover-everything-you-need-to-know

TikTok’s got the “For You” tab, Instagram has the “Explore” tab, and YouTube has Shorts. Now, Snapchat has the “Spotlight” tab.

Download our free Snapchat guide to learn how to use it for your business. 

Discover what Snapchat’s latest Spotlight tab is, how the algorithm works, and how it can help brands double their reach.

snap spotlight

Image Source

Where it differs from other social platforms is that it doesn’t give users free rein to post comments on the videos shared on Spotlight. When first introduced in November 2020, users could only like and share.

Then, Snapchat introduced Spotlight Replies, which allows businesses and creators to only display comments of their choosing from a pre-filtered pool.

In addition, display names only appear for public users who are 18 years of age or older but private users can also share select videos to Spotlight.

To encourage adoption, Snapchat created the Spotlight reward fund to pay its top creators – though, according to a recent Techcrunch report, that fund has gone down considerably in the last two years.

Spotlight Snapchat Features

snap spotlight

Video Source

  • In-app music library – You must use your video’s original sound or use a sound from Snapchat’s internal library.
  • Topic setting – When sharing your video to Spotlight, you have the option to add a topic in the form of a hashtag, which can help you reach your desired audience.
  • Replies – Businesses and creators can filter through comments left on their Spotlight videos and choose the ones they want to display.
  • Trending – When on the Spotlight tab, you can view videos under trending topics (hashtags), Lenses (i.e. filters), and sounds.
  • Challenges – Snapchat users have the chance to win prizes when they submit Spotlight videos that meet certain criteria, like a trending Lense, sound, or location.

How to Use Snapchat Spotlight

Businesses, creators and everyday users can use Spotlight to reach new audiences and boost their engagement.

There are two ways to post on Spotlight: on your mobile device and on your desktop.

Before you can send off your video, you’ll have to meet Snapchat’s guidelines. Your video must:

  • Be between five and 60 seconds.
  • Be vertical, aspect ratio of at least 3:4.
  • Have clear sound and video.
  • Only feature original content and music from the licensed library.
  • Not feature sponsored products or services, including links and attachments.
  • Feature content appropriate for a 13+ audience.
  • Be free of watermarks from other social platforms.

How Snapchat Decides Which Content to Feature on Spotlight

You know how Snapchat Spotlight works but the question is, how do you get featured on it?

Well, Snapchat said they created Spotlight to reward creativity, regardless of follower count and profile access. This is why any user can create content for the Spotlight and follower count is not considered as a ranking factor.

What is considered is the following:

  • Watch Time
  • Likes
  • Shares
  • Skips
  • User interests

If you’re already leveraging Snapchat, this new feature opens up another avenue for you to meet your marketing goals.

The post What is Spotlight on Snapchat? Discover Everything You Need to Know appeared first on ProdSens.live.

]]>
https://prodsens.live/2023/02/02/what-is-spotlight-on-snapchat-discover-everything-you-need-to-know/feed/ 0
Taiga UI: Year of the Tiger https://prodsens.live/2022/12/22/taiga-ui-year-of-the-tiger/?utm_source=rss&utm_medium=rss&utm_campaign=taiga-ui-year-of-the-tiger https://prodsens.live/2022/12/22/taiga-ui-year-of-the-tiger/#comments Thu, 22 Dec 2022 11:03:18 +0000 https://prodsens.live/2022/12/22/taiga-ui-year-of-the-tiger/ taiga-ui:-year-of-the-tiger

The year 2022 was extremely fruitful for our Taiga UI team and, what is more important, we picked…

The post Taiga UI: Year of the Tiger appeared first on ProdSens.live.

]]>
taiga-ui:-year-of-the-tiger

The year 2022 was extremely fruitful for our Taiga UI team and, what is more important, we picked up tiger speed in terms of updates and improvements of the library. Within this article, I would like to develop a habit of annual reports about the progress, which might be handy for us to recollect all achievements and failures in order to adjust our strategy for the upcoming years.

If you aren’t acquainted with Taiga and randomly stumbled upon this text, let me introduce Taiga UI — a powerful set of components for Angular, which is used in dozens of Tinkoff’s products and projects! In the following sections I will briefly unpack the overall achievements related to this multifaceted library.

One more year in Open Source

The development of the library has been going on for several years, two of which are in Open Source. We are happy to share our product with the community, and the source code is publically available. Despite the naming, we do not want to be the only people in our forest, hence we eagerly invite everyone else to join the development of the UI Kit!

Alex Inkin has already summed up the project’s results for the first year in Open Source. He described how we organized all processes so that the community could easily contribute to our project. Read more details about our last year’s achievements in the article:

The Taiga UI library has a core team that hones and polishes the project’s codebase. However, an impressive amount of the improvements come from external contributors. By the end of 2022, their number exceeded a hundred people! Our library is used by a variety of companies from various countries: most oftenly documentation is accessed from Russia, Vietnam, Belarus, USA, India and France. The geography of our users is pretty impressive!

In 2022, external contributors opened over two hundred Pull Requests, which is ~ 15% of all opened PRs for the entire year. Thank you very much to all our contributors for such an active participation in the project!

In October, it was a time for an international online festival devoted to Open Source — Hacktoberfest. Obviously, to stay in the loop and showcase our offspring, the team prepared Taiga UI for participation in this event.

One more major release

In the last days of summer, we introduced the third major release of the library.

We tried to postpone the introduction of breaking changes to our components as much as possible in order to cause little hassle to Taiga UI users. When there was a need to refactor the code and somehow change the public API of the components, we always keeped backward compatibility with the old interfaces.

Long-term efforts to maintain backward compatibility of the product have their costs — there is more and more legacy code, which increases the bundle of product applications. Another reason why breaking changes cannot be avoided is that it is getting harder to maintain the code with every new day. Sooner or later the moment of great changes comes.

More than a year and a half has passed since the last major release 2.0, and we decided that the moment had come. We were preparing the new release for the whole summer. The list of changes within the new version is enormous, and not to kill the vibe of the article, I will highlight the most curious ones:

Angular update. The Angular framework has a rule: if a library is published under any of the older versions of Angular, then it can be used in applications with more modern versions of the framework without problems. But not vice versa! If the library was published under a modern version of Angular (for example, 14.x.x), then it will no longer be possible to use it in applications with an older version of the framework (in our example, this is 13.x.x and less).

In Tinkoff, a plethora of projects use Taiga UI. Some of them use only the most modern versions of all technologies. However, there are some projects with a lower priority which can’t be updated so frequently and don’t use the most up-to-date versions of Angular.

Therefore, we were postponing the increasing the threshold of the minimum supported version of Angular and all this time Taiga UI used the 9th-version and published with the ViewEngine legacy engine. But in 3.0, we bumped Angular to the 12th version and also began publishing using the modern Ivy engine! Now users of our library can finally experience all the benefits of a modern engine.

Dropped support for ancient browsers. Every front-end developer knows what a great feeling that is! We already weren’t supporting Internet Explorer for a long time, but now it’s time for those versions of Edge that are based on the ancient EdgeHTML engine. Maintenance for these browsers was extremely cumbersome, so it was more efficient to cut them off, than to keep them alive, and moreover, the demand for these browsers wasn’t there — the number of users is measured in tenths of a percent.

In addition, we bumped the minimum threshold for support for the problematic Safari browser — now it’s 12.1+. If the benefit of these solutions is obvious to Taiga UI developers, is it good for our library users?

Definitely yes. Now during development we can use modern browser capabilities, introduce less extra code as polyfills, and drop many different workarounds from the code that existed only for outdated browsers. Our code occupies less storage and is much more stable!

Global styles have become optional. In the third version of Taiga UI, all global styles were moved into a separate package and became optional in usage. Taiga UI has become even more flexible!

Huge component refactoring. The new major release provides us with an opportunity to discard a large number of legacy components’ API and introduce a new one.

In 3.0, many old components got a fresh appearance — after refactoring they became more convenient to use and easier to maintain. The most remarkable examples are the Editor, InputFiles, all components with dropdowns and hints, and all components with sliders. You can read more about the latter in the article:

Migration schematics. The process of updating major versions of any dependencies is always a big headache for product teams. Firstly, developers need to figure out what needs to be changed in the code. Moreover, such updates require a complete regression of applications.

We desire that all teams migrate to up-to-date versions as soon as possible, so we paid great attention to the migration schematics to eliminate at least some of their concerns. Developer who has the second version of Taiga UI in their application just need to write ng update @taiga-ui/cdk in the console to update all Taiga UI packages to the third version. It will solve most of the breaking changes. Such schematic scripts automatically go through all HTML, TypeScript and style project files, find outdated API in it and replace it with a new alternative.

If you want to know more details about this major release, visit the page with its Changelog.

More outstanding features

Beside the new major release, our Taiga UI has been permanently improving. During the whole year, more than 500 issues and more than 1500 Pull Requests have been closed. The tasks were rather all over the place, I will tell you about the main directions.

Localization. Internationalization and localization of our libraries are very important to us. From the very get-go, Taiga UI has supported several languages, and thanks to the active help of the community, support has expanded to 13 languages by the end of 2022. For the convenience of their dynamic switching at runtime, we have added some utilities. Nevertheless, translation only is not enough, countries have much more distinctive features.

At the end of 2021, we set goals to expand the i18n of the product and added support for rtl‑languages for most inputs. Hands down, it wasn’t enough for us, so we continued to expand our localization capabilities in 2022. Now users of our library can set the desired date format, the first day of week (Sunday, Monday, or another day), which days in the calendar should be marked as holidays/weekends, the format for displaying numbers, and other important little things – the devil is in the details, and Taiga UI is all about nuances and tiny aspects!

More component customization. Many people love Angular for its flexible and convenient implementation of the Dependency Injection pattern. We try to use all power of DI in Taiga UI. We use Injection Tokens to customize the default behavior for the majority of our components. Such tokens have a naming consisting of the name of the component + the OPTIONS postfix (for example, TUI_EDITOR_OPTIONS). In 2022, the list of such available tokens has expanded significantly.

Projecting native outputs inside components. In early 2022, we added the ability to project native inputs via inside Taiga UI input components. The concept is described in more detail in the “Best practices” section of the official Angular documentation.

Let’s see an example. Previously, to create an Input with a placeholder and a specific type, you had to use this code:


    formControlName="email"
    tuiTextfieldType="email"
    tuiTextfieldExampleText="mail@mail.ru"
>
    Type an email

And now you can do it like this:

 formControlName="email">
    Type an email
    
        tuiTextfield
        placeholder="mail@mail.ru"
        type="email"
    />

Now users can set any available attribute on input and listen to any native event! For the user of our library, everything has become even more transparent. No more need to remember the names of our custom directives and find out which native attributes they map to. All this allowed us to drop a lot of unnecessary code from the TextfieldController.

Custom notifications. We have significantly refactored services for displaying notifications. Now the created abstractions make it easy to create custom notifications and use several types of notifications in the same project. The new Push component is a good demonstration of this new feature.

Improvements for Editor. All year we have been improving our new WYSIWYG, which is based on Tiptap’s Open Source solution. Here is a full list of new useful extensions:

Component Harnesses. With the help of the community, we began to actively develop a package for testing components with Harness. The first release of this package happened at the end of December.

Improving processes and DX. In addition to permanently improving the codebase, we are also trying to improve the process of its development. It is important for us that all members of the core team and all external contributors have a high level of Developer Experience. After all, the more comfortable the conditions for the developer, the faster the delivery of new features. In 2022, we achieved new successes in this direction:

  • We changed the test framework for unit testing: from Jasmine + Karma to Jest. Now it takes only a few seconds to prepare the test environment before running tests. Moreover, the failed tests generate more comprehensive reports. For integration and screenshot testing, we use the 11th version of Cypress, which allows us to test our components using the real DOM.
  • We solved the problem of long execution of tests. We have splitted all tests into many separate parallel Github-jobs: now, when opening a PR, 14 jobs with Cypress tests and 12 jobs with unit tests are launched.
  • We use the npm 8 features and workspaces.
  • We began to actively use Github Projects for planning and tracking tasks.
  • We added BundleMon and Codecov bots that allow you to control changes of the packages’ bundle-size and the code coverage by tests.

Stackblitz workflow. At the end of the year, we added the integration of our repository with a new feature from the StackBlitz team – Codeflow. Now our external contributors do not need to have a powerful computer with a pre-installed IDE. Now the developer can just click on the button from our root README:

Taiga UI's root README

And inside the browser an online IDE will be opened where you can serve demo application and open new PR. Now it becomes easier to contribute to Taiga UI!

Wrapping up

The year was rather challenging, but the Taiga UI team continues to develop the product. For the last several years we have achieved significant results, and much more is to come! It should be noted that the success of the library is partly attributed to the community, so, once again, thanks a lot for joining us in this adventure across the dense forest of Taiga!

If you still did not get aboard, we can ensure you that by choosing our library for your projects, you will get a convenient and modern UI Kit with the confidence that support and development will not suddenly stop, not only because Taiga UI is actively used in hundreds of products of our company, but also because we do care about the faith of project and its community.

Do you want to try it? Just write in console and enter the Taiga UI:

ng add taiga-ui

See you there!

The post Taiga UI: Year of the Tiger appeared first on ProdSens.live.

]]>
https://prodsens.live/2022/12/22/taiga-ui-year-of-the-tiger/feed/ 2