• Home
  • About Us
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms & Conditions
HOT
Buzzy Flow
No Result
View All Result
  • Home
  • Animals
    Video: Jim Irsay on Life With His Dog, His ‘Blue Vegan’ Leather-Free Jet, and More

    Video: Jim Irsay on Life With His Dog, His ‘Blue Vegan’ Leather-Free Jet, and More

    Commonly asked questions about RVT’s

    Commonly asked questions about RVT’s

    Hold Onto Your Stripes!!!

    Endangered Fish Population Declines as 760k Gal Fire Retardant for Wildfires Dropped on California Waterways

    Endangered Fish Population Declines as 760k Gal Fire Retardant for Wildfires Dropped on California Waterways

    Whole Foods’ Ties to Monkey Labor to Have PETA Dumping Coconuts at Store

    Whole Foods’ Ties to Monkey Labor to Have PETA Dumping Coconuts at Store

    Working together to bring pet loss support to grieving families

    Working together to bring pet loss support to grieving families

    Spiky Bundle of Joy 

    Viruses From Poop Of Giraffes, Lemurs Can Be Used To Kill Drug-Resistant Bacteria, Study Says

    Viruses From Poop Of Giraffes, Lemurs Can Be Used To Kill Drug-Resistant Bacteria, Study Says

    ‘Don’t Leave Them,’ Says Danai Gurira: Hot Cars Are Fatal for Dogs

    ‘Don’t Leave Them,’ Says Danai Gurira: Hot Cars Are Fatal for Dogs

  • Buzz
    David & Victoria Beckham Talk Affair Allegations On Netflix

    David & Victoria Beckham Talk Affair Allegations On Netflix

    Great British Bake Off Premiere Animal Cakes Side-By-Sides

    Great British Bake Off Premiere Animal Cakes Side-By-Sides

    Anya Taylor-Joy Marries Malcolm McRae In Beige Wedding Dress

    Anya Taylor-Joy Marries Malcolm McRae In Beige Wedding Dress

    Easy To Make TikTok Sorbet That’s Only 2 Ingredients

    Easy To Make TikTok Sorbet That’s Only 2 Ingredients

    Actors Who Gained And Lost Weight For Roles

    Actors Who Gained And Lost Weight For Roles

    19 Poor Souls Who Just Had A Week That Was Way, Way, Way, Way, Way, Way, Way, Way, Way, Way, Way, Way Worse Than Yours

    19 Poor Souls Who Just Had A Week That Was Way, Way, Way, Way, Way, Way, Way, Way, Way, Way, Way, Way Worse Than Yours

    Sia Shows Off Facelift

    Sia Shows Off Facelift

    I Reviewed New 2023 Trader Joe’s Pumpkin Products

    I Reviewed New 2023 Trader Joe’s Pumpkin Products

    17 Actors Who Tried To Get Their Costars Fired

    17 Actors Who Tried To Get Their Costars Fired

  • Celebs
    The Blind Side Author Gets SAVAGE Attacking Michael Oher Over Lawsuit!

    The Blind Side Author Gets SAVAGE Attacking Michael Oher Over Lawsuit!

    The House Speaker Might Change—But GOP Dysfunction Will Stay the Same

    The House Speaker Might Change—But GOP Dysfunction Will Stay the Same

    Celebrity couples who have been together for a long time including Tom Hanks and Rita Wilson, Keith Urban and Nicole Kidman and more

    Grimes sues Elon Musk, claims he won’t let her ‘see my son’ – National

    Grimes sues Elon Musk, claims he won’t let her ‘see my son’ – National

    Ke Huy and Echo Quan Relationship Timeline

    Ke Huy and Echo Quan Relationship Timeline

    Amplify Pictures Joins Broadway ‘Gutenberg!’ Musical As Co-Producer – Deadline

    Amplify Pictures Joins Broadway ‘Gutenberg!’ Musical As Co-Producer – Deadline

    11 Best Perfumes for Men in the World

    11 Best Perfumes for Men in the World

    Jamie Lee Curtis Praised the Star – StyleCaster

    Jamie Lee Curtis Praised the Star – StyleCaster

    The Voice’s Gwen Stefani’s teenage son asks for support as he follows in famous parents footsteps

    The Voice’s Gwen Stefani’s teenage son asks for support as he follows in famous parents footsteps

  • Life
    The Blind Side Author Gets SAVAGE Attacking Michael Oher Over Lawsuit!

    The Blind Side Author Gets SAVAGE Attacking Michael Oher Over Lawsuit!

    The House Speaker Might Change—But GOP Dysfunction Will Stay the Same

    The House Speaker Might Change—But GOP Dysfunction Will Stay the Same

    Celebrity couples who have been together for a long time including Tom Hanks and Rita Wilson, Keith Urban and Nicole Kidman and more

    Grimes sues Elon Musk, claims he won’t let her ‘see my son’ – National

    Grimes sues Elon Musk, claims he won’t let her ‘see my son’ – National

    Ke Huy and Echo Quan Relationship Timeline

    Ke Huy and Echo Quan Relationship Timeline

    Amplify Pictures Joins Broadway ‘Gutenberg!’ Musical As Co-Producer – Deadline

    Amplify Pictures Joins Broadway ‘Gutenberg!’ Musical As Co-Producer – Deadline

    11 Best Perfumes for Men in the World

    11 Best Perfumes for Men in the World

    Jamie Lee Curtis Praised the Star – StyleCaster

    Jamie Lee Curtis Praised the Star – StyleCaster

    The Voice’s Gwen Stefani’s teenage son asks for support as he follows in famous parents footsteps

    The Voice’s Gwen Stefani’s teenage son asks for support as he follows in famous parents footsteps

  • Tech
    Canva’s New AI Design Tools Aim to Help You Create and Edit Like a Pro

    Canva’s New AI Design Tools Aim to Help You Create and Edit Like a Pro

    Generative AI Is the Newest Tool in the Dictator’s Handbook

    Generative AI Is the Newest Tool in the Dictator’s Handbook

    Samsung Galaxy S23 FE, Tab S9 FE, Buds FE (2023): Features, Specs, Price

    Samsung Galaxy S23 FE, Tab S9 FE, Buds FE (2023): Features, Specs, Price

    ChatGPT Vision lets you submit images in your prompts: 7 wild ways people are using it

    ChatGPT Vision lets you submit images in your prompts: 7 wild ways people are using it

    OnePlus Open: all the news and rumors about the company’s first foldable

    OnePlus Open: all the news and rumors about the company’s first foldable

    Tom Hanks warns of AI-generated ad using his likeness

    Tom Hanks warns of AI-generated ad using his likeness

    The Inner Beauty of Basic Electronics

    Creating Domestic Robots That Really Help

    A New Satellite Outshines Some of the Brightest Stars in the Sky

    A New Satellite Outshines Some of the Brightest Stars in the Sky

    AI assistants boost productivity but paradoxically risk human deskilling

    AI assistants boost productivity but paradoxically risk human deskilling

  • Video
    • All
    • Cooking
    • Fitness
    • Gaming
    • Lifestyle
    • Music
    • Podcasts
    • Travel
    • Vlogs
    BiggBossBuzzz – Watch Geetu's Exclusive Interviews on Recent Bigg Boss Evictions | Daily 10AM & 6 PM

    BiggBossBuzzz – Watch Geetu's Exclusive Interviews on Recent Bigg Boss Evictions | Daily 10AM & 6 PM

    100 Rupees Useful Gadgets #shorts #gadgets

    100 Rupees Useful Gadgets #shorts #gadgets

    Guli Happy lifedan Samarqandcha mehmondorchilik🍲🧡🫶🏻

    Guli Happy lifedan Samarqandcha mehmondorchilik🍲🧡🫶🏻

    Cute little cat 😺 animals 2022 video catvideos

    Cute little cat 😺 animals 2022 video catvideos

    Zoo – Happy Animals – level 1, 2

    Zoo – Happy Animals – level 1, 2

    DRX BuZz insane 1v3 clutch vs ASE | VCT Masters Tokyo

    DRX BuZz insane 1v3 clutch vs ASE | VCT Masters Tokyo

    6 vivo Tech Will Blow Your Mind #vivoTechDay #shorts

    6 vivo Tech Will Blow Your Mind #vivoTechDay #shorts

    happy life status | happy quotes | #viral #shorts #youtube

    happy life status | happy quotes | #viral #shorts #youtube

    Buzz Designed The New Space Ranger Suits!

    Buzz Designed The New Space Ranger Suits!

Buzzy Flow
No Result
View All Result
Advertisement Banner
Home Tech

Top500: Frontier Still #1; Where’s China?

buzzyflow by buzzyflow
November 16, 2022
in Tech
0 0
0
Top500: Frontier Still #1; Where’s China?
0
SHARES
0
VIEWS
Share on FacebookShare on Twitter


The struggle that most companies have maintaining code causes a second problem: fragility. Every new feature that gets added to the code increases its complexity, which then increases the chance that something will break. It’s common for software to grow so complex that the developers avoid changing it more than is absolutely necessary for fear of breaking something. In many companies, whole teams of developers are employed not to develop anything new but just to keep existing systems going. You might say that they run a software version of the
Red Queen’s race, running as fast as they can just to stay in the same place.

It’s a sorry situation. Yet the current trajectory of the software industry is toward increasing complexity, longer product-development times, and greater fragility of production systems. To address such issues, companies usually just throw more people at the problem: more developers, more testers, and more technicians who intervene when systems fail.

Surely there must be a better way. I’m part of a growing group of developers who think the answer could be functional programming. Here I describe what functional programming is, why using it helps, and why I’m so enthusiastic about it.

With functional programming, less is more

A good way to understand
the rationale for functional programming is by considering something that happened more than a half century ago. In the late 1960s, a programming paradigm emerged that aimed to improve the quality of code while reducing the development time needed. It was called structured programming.

Various languages emerged to foster structured programming, and some existing languages were modified to better support it. One of the most notable features of these structured-programming languages was not a feature at all: It was the absence of something that had been around a long time—
the GOTO statement.

The GOTO statement is used to redirect program execution. Instead of carrying out the next statement in sequence, the flow of the program is redirected to some other statement, the one specified in the GOTO line, typically when some condition is met.

The elimination of the GOTO was based on what programmers had learned from using it—that it made the program very hard to understand. Programs with GOTOs were often referred to as spaghetti code because the sequence of instructions that got executed could be as hard to follow as a single strand in a bowl of spaghetti.

A plate of spaghetti made from code with a single strand of "spaghetti code" being pulled from the top of the frame in a neverending loop on a blue gradient background.Shira Inbar

The inability of these developers to understand how their code worked, or why it sometimes didn’t work, was a complexity problem. Software experts of that era believed that those GOTO statements
were creating unnecessary complexity and that the GOTO had to, well, go.

Back then, this was a radical idea, and many programmers resisted the loss of a statement that they had grown to rely on. The debate went on for more than a decade, but in the end, the GOTO went extinct, and no one today would argue for its return. That’s because its elimination from higher-level programming languages greatly reduced complexity and boosted the reliability of the software being produced. It did this by limiting what programmers could do, which ended up making it easier for them to reason about the code they were writing.

Although the software industry has eliminated GOTO from modern higher-level languages, software nevertheless continues to grow in complexity and fragility. Looking for how else such programming languages could be modified to avoid some common pitfalls, software designers can find inspiration, curiously enough, from their counterparts on the hardware side.

Nullifying problems with null references

In designing hardware
for a computer, you can’t have a resistor shared by, say, both the keyboard and the monitor’s circuitry. But programmers do this kind of sharing all the time in their software. It’s called shared global state: Variables are owned by no one process but can be changed by any number of processes, even simultaneously.

Now, imagine that every time you ran your microwave, your dishwasher’s settings changed from Normal Cycle to Pots and Pans. That, of course, doesn’t happen in the real world, but in software, this kind of thing goes on all the time. Programmers write code that calls a function, expecting it to perform a single task. But many functions have side effects that change the shared global state,
giving rise to unexpected consequences.

In hardware, that doesn’t happen because the laws of physics curtail what’s possible. Of course, hardware engineers can mess up, but not like you can with software, where just too many things are possible, for better or worse.

Another complexity monster lurking in the software quagmire is called a
null reference, meaning that a reference to a place in memory points to nothing at all. If you try to use this reference, an error ensues. So programmers have to remember to check whether something is null before trying to read or change what it references.

Nearly every popular language today has this flaw. The pioneering computer scientist
Tony Hoare introduced null references in the ALGOL language back in 1965, and it was later incorporated into numerous other languages. Hoare explained that he did this “simply because it was so easy to implement,” but today he considers it to be a “billion-dollar mistake.” That’s because it has caused countless bugs when a reference that the programmer expects to be valid is really a null reference.

Software developers need to be extremely disciplined to avoid such pitfalls, and sometimes they don’t take adequate precautions. The architects of structured programming knew this to be true for GOTO statements and left developers no escape hatch. To guarantee the improvements in clarity that GOTO-free code promised, they knew that they’d have to eliminate it entirely from their structured-programming languages.

History is proof that removing a dangerous feature can greatly improve the quality of code. Today, we have a slew of dangerous practices that compromise the robustness and maintainability of software. Nearly all modern programming languages have some form of null references, shared global state, and functions with side effects—things that are far worse than the GOTO ever was.

How can those flaws be eliminated? It turns out that the answer
has been around for decades: purely functional programming languages.

Of the top dozen functional-programming languages, Haskell is by far the most popular, judging by the number of GitHub repositories that use these languages.

The first purely functional language to become popular, called
Haskell, was created in 1990. So by the mid-1990s, the world of software development really had the solution to the vexing problems it still faces. Sadly, the hardware of the time often wasn’t powerful enough to make use of the solution. But today’s processors can easily manage the demands of Haskell and other purely functional languages.

Indeed, software based on pure functions is particularly well suited to modern
multicore CPUs. That’s because pure functions operate only on their input parameters, making it impossible to have any interactions between different functions. This allows the compiler to be optimized to produce code that runs on multiple cores efficiently and easily.

As the name suggests, with purely functional programming, the developer can write only pure functions, which, by definition, cannot have side effects. With this one restriction, you increase stability, open the door to compiler optimizations, and end up with code that’s far easier to reason about.

But what if a function needs to know or needs to manipulate the state of the system? In that case, the state is passed through a long chain of what are called composed functions—functions that pass their outputs to the inputs of the next function in the chain. By passing the state from function to function, each function has access to it and there’s no chance of another concurrent programming thread modifying that state—another common and costly fragility found in far too many programs.

Functional programming also has a solution to Hoare’s “billion-dollar mistake,” null references. It addresses that problem by disallowing nulls. Instead, there is a construct usually called
Maybe (or Option in some languages). A Maybe can be Nothing or Just some value. Working with Maybes forces developers to always consider both cases. They have no choice in the matter. They must handle the Nothing case every single time they encounter a Maybe. Doing so eliminates the many bugs that null references can spawn.

Functional programming also requires that data be immutable, meaning that once you set a variable to some value, it is forever that value. Variables are more like variables in math. For example, to compute a formula,
y = x2 + 2x – 11, you pick a value for x and at no time during the computation of y does x take on a different value. So, the same value for x is used when computing x2 as is used when computing 2x. In most programming languages, there is no such restriction. You can compute x2 with one value, then change the value of x before computing 2x. By disallowing developers from changing (mutating) values, they can use the same reasoning they did in middle-school algebra class.

Unlike most languages, functional programming languages are deeply rooted in mathematics. It’s this lineage in the highly disciplined field of mathematics that gives functional languages their biggest advantages.

Why is that? It’s because people have been working on mathematics for thousands of years. It’s pretty solid. Most programming paradigms, such as object-oriented programming, have at most half a dozen decades of work behind them. They are crude and immature by comparison.

Imagine if every time you ran your microwave, your dishwasher’s settings changed from Normal Cycle to Pots and Pans. In software, this kind of thing goes on all the time.

Let me share an example of how programming is sloppy compared with mathematics. We typically teach new programmers to forget what they learned in math class when they first encounter the statement
x = x + 1. In math, this equation has zero solutions. But in most of today’s programming languages, x = x + 1 is not an equation. It is a statement that commands the computer to take the value of x, add one to it, and put it back into a variable called x.

In functional programming, there are no statements, only
expressions. Mathematical thinking that we learned in middle school can now be employed when writing code in a functional language.

Thanks to functional purity, you can reason about code using algebraic substitution to help reduce code complexity in the same way you reduced the complexity of equations back in algebra class. In non-functional languages (imperative languages), there is no equivalent mechanism for reasoning about how the code works.

Functional programming has a steep learning curve

Pure functional programming solves many of our industry’s biggest problems by removing dangerous features from the language, making it harder for developers to shoot themselves in the foot. At first, these limitations may seem drastic, as I’m sure the 1960s developers felt regarding the removal of GOTO. But the fact of the matter is that it’s both liberating and empowering to work in these languages—so much so that nearly all of today’s most popular languages have incorporated functional features, although they remain fundamentally imperative languages.

The biggest problem with this hybrid approach is that it still allows developers to ignore the functional aspects of the language. Had we left GOTO as an option 50 years ago, we might still be struggling with spaghetti code today.

To reap the full benefits of pure functional programming languages, you can’t compromise. You need to use languages that were designed with these principles from the start. Only by adopting them will you get the many benefits that I’ve outlined here.

But functional programming isn’t a bed of roses. It comes at a cost. Learning to program according to this functional paradigm is almost like learning to program again from the beginning. In many cases, developers must familiarize themselves with math that they didn’t learn in school. The required math isn’t difficult—it’s just new and, to the math phobic, scary.

More important, developers need to learn a new way of thinking. At first this will be a burden, because they are not used to it. But with time, this new way of thinking becomes second nature and ends up reducing cognitive overhead compared with the old ways of thinking. The result is a massive gain in efficiency.

But making the transition to functional programming can be difficult. My own journey doing so a few years back is illustrative.

I decided to learn Haskell—and needed to do that on a business timeline. This was the most difficult learning experience of my 40-year career, in large part because there was no definitive source for helping developers make the transition to functional programming. Indeed, no one had written anything very comprehensive about functional programming in the prior three decades.

To reap the full benefits of pure functional programming languages, you can’t compromise. You need to use languages that were designed with these principles from the start.

I was left to pick up bits and pieces from here, there, and everywhere. And I can attest to the gross inefficiencies of that process. It took me three months of days, nights, and weekends living and breathing Haskell. But finally, I got to the point that I could write better code with it than with anything else.

When I decided that our company should switch to using functional languages, I didn’t want to put my developers through the same nightmare. So, I started building a curriculum for them to use, which became the basis for a book intended to help developers transition into functional programmers. In
my book, I provide guidance for obtaining proficiency in a functional language called PureScript, which stole all the great aspects of Haskell and improved on many of its shortcomings. In addition, it’s able to operate in both the browser and in a back-end server, making it a great solution for many of today’s software demands.

While such learning resources can only help, for this transition to take place broadly, software-based businesses must invest more in their biggest asset: their developers. At my company,
Panoramic Software, where I’m the chief technical officer, we’ve made this investment, and all new work is being done in either PureScript or Haskell.

We started down the road of adopting functional languages three years ago, beginning with another pure functional language called
Elm because it is a simpler language. (Little did we know we would eventually outgrow it.) It took us about a year to start reaping the benefits. But since we got over the hump, it’s been wonderful. We have had no production runtime bugs, which were so common in what we were formerly using, JavaScript on the front end and Java on the back. This improvement allowed the team to spend far more time adding new features to the system. Now, we spend almost no time debugging production issues.

But there are still challenges when working with a language that relatively few others use—in particular, the lack of online help, documentation, and example code. And it’s hard to hire developers with experience in these languages. Because of that, my company uses recruiters who specialize in finding functional programmers. And when we hire someone with no background in functional programming, we put them through a training process for the first few months to bring them up to speed.

Functional programming’s future

My company is small. It delivers software to governmental agencies to enable them to help veterans receive benefits from the
U.S. Department of Veteran’s Affairs. It’s extremely rewarding work, but it’s not a lucrative field. With razor-slim margins, we must use every tool available to us to do more with fewer developers. And for that, functional programming is just the ticket.

It’s very common for unglamorous businesses like ours to have difficulty attracting developers. But we are now able to hire top-tier people because they want to work on a functional codebase. Being ahead of the curve on this trend, we can get talent that most companies our size could only dream of.

I anticipate that the adoption of pure functional languages will improve the quality and robustness of the whole software industry while greatly reducing time wasted on bugs that are simply impossible to generate with functional programming. It’s not magic, but sometimes it feels like that, and I’m reminded of how good I have it every time I’m forced to work with a non-functional codebase.

One sign that the software industry is preparing for a paradigm shift is that functional features are showing up in more and more mainstream languages. It will take much more work for the industry to make the transition fully, but the benefits of doing so are clear, and that is no doubt where things are headed.

From Your Site Articles

Related Articles Around the Web



Source_link

Advertisement Banner
buzzyflow

buzzyflow

Trending Posts

‘Crying Elephants’ to Crash Shriners Imperial Session Over Circus Cruelty
Animals

EXCLUSIVE VIDEO: Second Horse Dead This Weekend at Saratoga; PETA Statement

by buzzyflow
August 28, 2023
0

For Immediate Release:August 27, 2023 Contact:David Perle 202-483-7382 Saratoga Springs, N.Y. – Please see the following statement from PETA Senior...

Read more
iPhone 11 Back Glass Replacement #shorts #tech #oddlysatisfying #iphonerepair

iPhone 11 Back Glass Replacement #shorts #tech #oddlysatisfying #iphonerepair

July 16, 2023
See All the 2023 Critics’ Choice Awards Red Carpet Fashion Looks

See All the 2023 Critics’ Choice Awards Red Carpet Fashion Looks

January 15, 2023
Greg Casar’s Thirst Strike Got Biden’s Attention. Will It Bring About a Climate Emergency?

Greg Casar’s Thirst Strike Got Biden’s Attention. Will It Bring About a Climate Emergency?

August 4, 2023
5 fall pet hazards you wouldn’t expect

5 fall pet hazards you wouldn’t expect

September 29, 2022
&TEAM – ‘BUZZ LOVE’ (バズ恋) Lyrics [Color Coded_Kan_Rom_Eng]

&TEAM – ‘BUZZ LOVE’ (バズ恋) Lyrics [Color Coded_Kan_Rom_Eng]

January 7, 2023

Buzzy Flow

Welcome to Buzzy Flow The goal of Buzzy Flow is to give you the absolute best news sources for any topic! Our topics are carefully curated and constantly updated as we know the web moves fast so we try to as well.

Follow Us

Categories

  • Animals
  • Buzz
  • Celebs
  • Cooking
  • Fitness
  • Gaming
  • Life
  • Lifestyle
  • Music
  • Podcasts
  • Tech
  • Travel
  • Video
  • Vlogs

Recent Post

  • The Blind Side Author Gets SAVAGE Attacking Michael Oher Over Lawsuit!
  • BiggBossBuzzz – Watch Geetu's Exclusive Interviews on Recent Bigg Boss Evictions | Daily 10AM & 6 PM
  • Video: Jim Irsay on Life With His Dog, His ‘Blue Vegan’ Leather-Free Jet, and More
  • David & Victoria Beckham Talk Affair Allegations On Netflix
  • Home
  • About Us
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms & Conditions

Copyright © 2022 Buzzyflow.com | All Rights Reserved.

No Result
View All Result
  • Home
  • Animals
  • Buzz
  • Celebs
  • Life
  • Tech
  • Video

Copyright © 2022 Buzzyflow.com | All Rights Reserved.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
What Are Cookies
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT