<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Olajumoke Ipoola</title>
    <description>The latest articles on DEV Community by Olajumoke Ipoola (@jummie).</description>
    <link>https://dev.to/jummie</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818556%2F4623a150-26b4-47a5-b3f0-8cf42215fa24.jpg</url>
      <title>DEV Community: Olajumoke Ipoola</title>
      <link>https://dev.to/jummie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jummie"/>
    <language>en</language>
    <item>
      <title>Are cookies bad? Here is what you should know.</title>
      <dc:creator>Olajumoke Ipoola</dc:creator>
      <pubDate>Mon, 06 Jul 2026 10:58:35 +0000</pubDate>
      <link>https://dev.to/jummie/are-cookies-bad-here-is-what-you-should-know-26ok</link>
      <guid>https://dev.to/jummie/are-cookies-bad-here-is-what-you-should-know-26ok</guid>
      <description>&lt;p&gt;If you've ever visited a website, you've probably seen a popup asking you to "Accept" or "Reject" cookies.&lt;/p&gt;

&lt;p&gt;Have you ever wondered why cookies appear on your screen? What exactly are they, and are they bad? Let&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are cookies?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cookies are tiny bits of information that websites store in your browser. Picture them as little notes that a website leaves behind so that it can recall details about you when you return.&lt;/p&gt;

&lt;p&gt;For example, cookies can remember.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;That you're logged in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The items in your shopping cart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your language preference.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your theme (light or dark mode).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without cookies, many websites would feel like they have amnesia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of cookies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Essential Cookies: These are necessary for a website to function correctly. They assist with things like shopping carts, security, and login. preserving the session. Certain websites simply may not function well without them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functional Cookies: These keep track of your choices, language, Region, Dark mode, Font size, etc. They enhance the personalization of webpages but are not strictly necessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Analytics Cookies: These help website owners understand how people use their site. For example: The pages that users visit, how long they visited, and what buttons do they press? Usually, the aim is to make the website better. Accept the site if you are comfortable. If not, you can reject it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advertising (Marketing) Cookies: Your interests are profiled using this type of cookie. They are able to track you on several websites, display customized advertisements, and analyze the effectiveness of advertising. This is the type that has the biggest privacy issues. If you don't want customized advertisements, you might want to decline these.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Should You Accept or Reject Cookies?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It depends on the type of cookies and what's more important to you: &lt;strong&gt;convenience&lt;/strong&gt; or &lt;strong&gt;privacy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Accept functional, necessary, and first-party cookies. They keep you logged in, store the products in your shopping cart, or remember your preferences; these help websites function properly.&lt;/p&gt;

&lt;p&gt;If possible, reject monitoring or advertising cookies from third parties. These are used to create a profile for targeted advertisements and monitor your behavior on other websites. &lt;/p&gt;

&lt;p&gt;It's generally a good idea to accept only the necessary cookies and reject the optional tracking cookies if a website offers the option.&lt;/p&gt;

&lt;p&gt;All cookies are not harmful. Cookies themselves are just data. The reason behind their use is what counts. Certain cookies enhance your experience. Others monitor your online activities for analytics and advertising purposes. The issue isn't the cookie itself, but rather how it's used.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>cookies</category>
      <category>webdev</category>
      <category>cookie</category>
    </item>
    <item>
      <title># Angular Signals Explained Like You're Building Your First App</title>
      <dc:creator>Olajumoke Ipoola</dc:creator>
      <pubDate>Mon, 29 Jun 2026 14:51:40 +0000</pubDate>
      <link>https://dev.to/jummie/-angular-signals-explained-like-youre-building-your-first-app-4bd4</link>
      <guid>https://dev.to/jummie/-angular-signals-explained-like-youre-building-your-first-app-4bd4</guid>
      <description>&lt;p&gt;You've probably heard about &lt;strong&gt;Signals&lt;/strong&gt; if you're learning angular. At first, they can seem like just another state management feature, but they're actually one of the best additions to Angular.&lt;/p&gt;

&lt;p&gt;In this article, we'll build a simple counter app to learn four core Signal APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;signal()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;computed()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;effect()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is a Signal?
&lt;/h2&gt;

&lt;p&gt;Think of a Signal as a reactive variable that Angular keeps an eye on.&lt;/p&gt;

&lt;p&gt;With a normal variable, changing its value doesn't automatically tell Angular that something has changed.&lt;/p&gt;

&lt;p&gt;A Signal is different. Angular knows exactly what has to be updated on the screen if its value changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Your First Signal
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;signal&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unlike a normal variable, you read a Signal by calling it like a function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;{{ count() }}&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;()&lt;/code&gt; at the end, that's how you access its current value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating a Signal
&lt;/h2&gt;

&lt;p&gt;There are two common ways to update a Signal.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;set()&lt;/code&gt; when you want to replace the value completely.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;update()&lt;/code&gt; when the new value depends on the current one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's add increment and decrement buttons.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;decrement&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;(click)=&lt;/span&gt;&lt;span class="s"&gt;"decrement()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;-&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;{{ count() }}&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;(click)=&lt;/span&gt;&lt;span class="s"&gt;"increment()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;+&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every click updates the Signal, and Angular refreshes the UI automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deriving Values with &lt;code&gt;computed()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine you want to display whether the counter is even or odd.&lt;/p&gt;

&lt;p&gt;Instead of calculating it every time, use &lt;code&gt;computed()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;computed&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;isEven&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then display it in the template.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;{{ isEven() ? 'Even' : 'Odd' }}&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever &lt;code&gt;count&lt;/code&gt; changes, &lt;code&gt;isEven&lt;/code&gt; updates automatically.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;computed()&lt;/code&gt; whenever one value depends on another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reacting to Changes with &lt;code&gt;effect()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Sometimes you don't want to calculate a value—you want to perform an action whenever a Signal changes.&lt;/p&gt;

&lt;p&gt;That's what &lt;code&gt;effect()&lt;/code&gt; is for.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;effect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;effect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Count is&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every time the counter changes, Angular runs the effect again.&lt;br&gt;
Avoid using &lt;code&gt;effect()&lt;/code&gt; to calculate values. That's what &lt;code&gt;computed()&lt;/code&gt; is designed for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Putting It All Together
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;effect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-counter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./counter.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CounterComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nx"&gt;isEven&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;effect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Count changed:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;decrement&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Signals make Angular state management much easier to understand. If you're just getting started, remember this simple rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Store state&lt;/strong&gt; with &lt;code&gt;signal()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change state&lt;/strong&gt; with &lt;code&gt;set()&lt;/code&gt; or &lt;code&gt;update()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Derive state&lt;/strong&gt; with &lt;code&gt;computed()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React to changes&lt;/strong&gt; with &lt;code&gt;effect()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this helps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>angular</category>
      <category>signals</category>
      <category>frontend</category>
      <category>angularsignals</category>
    </item>
  </channel>
</rss>
