<?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: Agustina Chaer</title>
    <description>The latest articles on DEV Community by Agustina Chaer (@agch-dev).</description>
    <link>https://dev.to/agch-dev</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F416756%2F0d2fca08-f933-4f2b-a652-6487c88d2356.jpeg</url>
      <title>DEV Community: Agustina Chaer</title>
      <link>https://dev.to/agch-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agch-dev"/>
    <language>en</language>
    <item>
      <title>Why Validating Segment Events Is So Frustrating (And How I Fixed It)</title>
      <dc:creator>Agustina Chaer</dc:creator>
      <pubDate>Thu, 09 Apr 2026 01:35:03 +0000</pubDate>
      <link>https://dev.to/agch-dev/why-validating-segment-events-is-so-frustrating-and-how-i-fixed-it-fda</link>
      <guid>https://dev.to/agch-dev/why-validating-segment-events-is-so-frustrating-and-how-i-fixed-it-fda</guid>
      <description>&lt;p&gt;Validating analytics events should be simple. It’s not.&lt;/p&gt;

&lt;p&gt;If you’ve ever had to check whether events are firing correctly, you probably know the drill: trigger an action, open your debugging tool, click into an event, expand a massive JSON payload, scroll… scroll more… and hope the one or two properties you care about are actually there.&lt;/p&gt;

&lt;p&gt;Then do it again. And again. And again.&lt;/p&gt;

&lt;p&gt;Most of the time, you’re not exploring the data. You’re just trying to answer very specific questions:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Does this event fire when it should?&lt;/strong&gt;&lt;br&gt;
• &lt;strong&gt;Does it include the right properties?&lt;/strong&gt;&lt;br&gt;
• &lt;strong&gt;Are those properties correct?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But the tools we rely on don’t optimize for that. They show the entire payload we send to segment and bid you good luck.&lt;/p&gt;

&lt;p&gt;That is where I found myself nearly a year ago, when after a round of  QA too many analytics tickets were filed. The system we had for checking events was just too error prone and bugs were getting past us.&lt;/p&gt;

&lt;p&gt;So I decided to do something about it...&lt;/p&gt;

&lt;p&gt;If you want the TL;DR here is the link to the Chrome Extension I built &lt;a href="https://chromewebstore.google.com/detail/analytics-x-ray/nabnhcbhcecfohhaodnpoipanaaapkpi" rel="noopener noreferrer"&gt;Analytics X-Ray&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  If it is broken, then fix it
&lt;/h2&gt;

&lt;p&gt;I first made a list of the things I would want.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make it easy to spot the attributes that actually matter to me.&lt;/li&gt;
&lt;li&gt;Filter out noisy events&lt;/li&gt;
&lt;li&gt;Better timeline visualization&lt;/li&gt;
&lt;li&gt;No weird UI issues&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then I got to building it, or to be honest, Cursor and I got to building. This started as an internal tool and was the perfect opportunity for me to get used to using AI for larger sets of work.&lt;/p&gt;

&lt;p&gt;And a few days later I had a good enough extension that made analytics debugging actually enjoyable. Well, at least for me cause I got to test out my new shiny tool.&lt;/p&gt;

&lt;p&gt;And I got exited! Ideas kept coming and what originally was a very small MVP was now a fully fledged analytics tool.&lt;/p&gt;

&lt;p&gt;Here are some of my favorites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Easier to read timeline&lt;/strong&gt; by:

&lt;ul&gt;
&lt;li&gt;Color coding events by keyword: Page, View, Click, etc.&lt;/li&gt;
&lt;li&gt;Dividers on page navigation and reload for clearer separation.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Simplified view of an event&lt;/strong&gt; by:

&lt;ul&gt;
&lt;li&gt;Presenting the payload in nicer collapsible sections&lt;/li&gt;
&lt;li&gt;With color coding attribute types&lt;/li&gt;
&lt;li&gt;And property pinning for surfacing what matters to you.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Filtering events&lt;/strong&gt; by:

&lt;ul&gt;
&lt;li&gt;search event name, property key and values&lt;/li&gt;
&lt;li&gt;Hiding noisy events all together.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh8ph7go9jzc1zn9ize.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh8ph7go9jzc1zn9ize.png" alt="Showcase of the event timeline in the chrome extension with clear event color coding and navigation separators" width="800" height="816"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0u3me0fsblqvieg27aki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0u3me0fsblqvieg27aki.png" alt="Showcase of the Simplified event view with pins as well as the filtering options" width="800" height="786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Standing the test of use
&lt;/h2&gt;

&lt;p&gt;What started as a tool for myself turned into an internal tool for my team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gained great internal adoption&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;over 70 weekly active users (almost all the Eng team)&lt;/li&gt;
&lt;li&gt;Used by Devs, QAs and Data.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;A lot of &lt;strong&gt;dormant analytics bugs&lt;/strong&gt; were &lt;strong&gt;discovered&lt;/strong&gt;.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Issues get caught earlier&lt;/strong&gt;.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;More features&lt;/strong&gt; were added.

&lt;ul&gt;
&lt;li&gt;Even branching out to other internal dev tool verticals&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;The &lt;strong&gt;user experience&lt;/strong&gt; got &lt;strong&gt;refined&lt;/strong&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I really recommend building internal tools, it has been a big improvement on our team's workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making it Open Source
&lt;/h2&gt;

&lt;p&gt;After all those months of tinkering with the internal tool I felt like I had created something that could actually be very useful to the tech community and decided it was worth sharing.&lt;/p&gt;

&lt;p&gt;The analytics portion of the internal tool in particular, what started it all, had potential to be generalized.&lt;/p&gt;

&lt;p&gt;So with the idea in my head and all the learnings along the way I rebuilt it but with open source in mind.&lt;/p&gt;

&lt;p&gt;And that is how &lt;strong&gt;Analytics X-Ray&lt;/strong&gt; came to be.&lt;/p&gt;

&lt;p&gt;If you use Segment on your day to day and any of what I said resonated with you. I invite you to check out the extension, here are the links:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/analytics-x-ray/nabnhcbhcecfohhaodnpoipanaaapkpi" rel="noopener noreferrer"&gt;Analytics X-Ray in the Chrome Web Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/agch-dev/analytics-x-ray" rel="noopener noreferrer"&gt;Analytics X-Ray Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contributions are more than welcomed! Let me know if you try it out!&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>segment</category>
      <category>devtool</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to Effectively Integrate a Typography System in React Native</title>
      <dc:creator>Agustina Chaer</dc:creator>
      <pubDate>Tue, 05 Jul 2022 15:17:34 +0000</pubDate>
      <link>https://dev.to/rootstrap/how-to-effectively-integrate-a-typography-system-in-react-native-20hd</link>
      <guid>https://dev.to/rootstrap/how-to-effectively-integrate-a-typography-system-in-react-native-20hd</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If there is one thing that most react native apps have in common, it is how they display text. Some simple apps show very little, but most apps display a lot. That is why it's vital to put the right system in place, to ensure adding and refactoring texts in your app is as simple as possible.&lt;/p&gt;

&lt;p&gt;Now, you might be thinking - why am I reading an article on how to manage such a simple component? It's just text, right? Yes, but more often than not, you need to apply styles and properties to said text to make it look the way you want. When you have to do it for all the texts in your app, it adds up. This, of course, begs the question - how can I reduce the amount of code repetition?&lt;/p&gt;

&lt;p&gt;Over the years, I have seen my fair share of attempts at solving this problem, and I can finally say that I have landed on one solution that left me quite pleased.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;The solution is quite simple, but it's based on following best UI practices. What do I mean? Having predefined styles for headings, paragraphs, and other texts that you might need. What is important is that all the texts of your app fall into one of those definitions and that the amount doesn't get out of hand. It's good to keep the number of definitions short, so it's easier to remember what to put when coding and that your app is consistent in its respective styling, which in turn, gives you usability and accessibility points.&lt;/p&gt;

&lt;p&gt;Without any further ado, here is the aforementioned code of the component and supplementary files:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Once you have all of that in place, you can simply import the component and use it as follows:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;It's as simple as that, and usually, you will only have to apply extra styles to a particular text component instance if you need to add spacing, color, or wrapping.&lt;/p&gt;

&lt;p&gt;Taking the naming convention and hierarchy of text components from the web makes it very easy to understand and remember. As you may have noticed, with the use of prop-types, it is very easy to notice if you misspelled a type when setting it on an instance of said component.&lt;/p&gt;

&lt;p&gt;Although adding custom fonts to your React Native project is out of scope for this article, you might find (link here) this article useful where we cover that subject (&lt;a href="https://www.rootstrap.com/blog/how-to-customize-fonts-in-react-native/" rel="noopener noreferrer"&gt;How to customize fonts in React Native&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As you can see, the solution is very clean and simple, but it fixes a problem in a component that is so basic that it is also often overlooked. Putting a bit of time and thought into these kinds of components that make up the core DNA of our apps can go a long way.&lt;/p&gt;

&lt;p&gt;I hope you find this article helpful and that you end up implementing this solution in your projects.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Digital Accessibility 101: The importance of Digital Accessibility</title>
      <dc:creator>Agustina Chaer</dc:creator>
      <pubDate>Tue, 05 Jul 2022 14:56:41 +0000</pubDate>
      <link>https://dev.to/rootstrap/digital-accessibility-101-the-importance-of-digital-accessibility-1eff</link>
      <guid>https://dev.to/rootstrap/digital-accessibility-101-the-importance-of-digital-accessibility-1eff</guid>
      <description>&lt;p&gt;This is the first installment of a series of articles where we are going to dive into digital accessibility. Some of the topics that are going to be covered are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why is this subject so important?&lt;/li&gt;
&lt;li&gt;Why should you make your sites/applications accessible?&lt;/li&gt;
&lt;li&gt;How can you make your site/app accessible?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, we are going to tackle the first two questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Digital Accessibility so Important?
&lt;/h2&gt;

&lt;p&gt;It is estimated that over 1.2 billion people live with some form of disability. This makes up approximately 15% of the population. As you can imagine, just as with the real world, people with disabilities encounter barriers to navigate the digital space on a daily basis.&lt;/p&gt;

&lt;p&gt;When done right, the digital medium can be a great tool for people with disabilities as it can enable them to do things that they couldn’t do before or make a task more effortless. Some examples of this are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A blind person reading the news with their computer using a screen reader whereas before there were only newspapers.&lt;/li&gt;
&lt;li&gt;A physically disabled person opting for online shopping vs going to the store in person.&lt;/li&gt;
&lt;li&gt;A hard-of-hearing person opting for the online version of a class they are attending at a university because it’s close-captioned.&lt;/li&gt;
&lt;li&gt;A speech-impaired person filling in a contact form or ordering food with an app because calling is not an option or they would have needed to ask someone else to do it for them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many more examples just like those. That being said, the one thing they all rely on to actually work is that they need to be accessible. We can easily transform the examples above so they are not useful anymore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The news site is not coded properly, it does not have the correct text hierarchy. Without going into too much detail, the site becomes just a big blob of text to the tools a blind person would use to navigate the site making it unusable. The blind person would need to find another place to get the news from.&lt;/li&gt;
&lt;li&gt;The e-commerce site is not keyboard accessible so many of the physically disabled people that don’t use a mouse to navigate the web wouldn’t be able to shop online in that store. They would need to find another site or go to the store in person.&lt;/li&gt;
&lt;li&gt;The university uploads the class but doesn’t add any closed captions or transcripts making it useless for the hard of hearing.&lt;/li&gt;
&lt;li&gt;The restaurant has a web page showcasing their menu but the only way to order is by calling the phone number on their site, speech impaired people would probably order someplace else that is accessible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the digital medium becoming more and more popular, the lack of digital accessibility can become even prohibitive and exclusionary. Think how many things you do on a normal day that involves interacting with a website or an app?&lt;/p&gt;

&lt;p&gt;How would you feel if those sites and apps weren’t built in a way that you could use them? You would feel left out and you would probably find it harder to get things done.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Curb Cut Effect
&lt;/h2&gt;

&lt;p&gt;The curb cut effect is the phenomenon that occurs when disability-friendly features end up benefiting a larger group of people than the people it was originally designed for.&lt;/p&gt;

&lt;p&gt;The name comes from the curb cut ramps installed for people in wheelchairs, those ended up being really useful to other people. For example, parents pushing strollers, workers pushing heavy carts, business travelers wheeling luggage, even runners and skateboarders.&lt;/p&gt;

&lt;p&gt;The same can be identified in many places in the digital space. One very clear example that probably most people have used is the addition of closed captions, now included in all streaming services and video platforms.&lt;/p&gt;

&lt;p&gt;Closed captions have allowed hard-of-hearing people to watch and understand content in a way they couldn’t before. They also allow everyone to watch content in a foreign language or watch a video without audio if needed too, especially in situations like being at a library without headphones.&lt;/p&gt;

&lt;h2&gt;
  
  
  We all suffer at some point some kind of disability, limitation or impairment
&lt;/h2&gt;

&lt;p&gt;To further solidify the concept of “Accessibility benefits us all” let’s talk broaden the scope and talk about disabilities, limitations and impairments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permanent: These are the ones we normally think about when we think of disabilities (Visual, Auditory, Cognitive, Physical, and Speech).&lt;/li&gt;
&lt;li&gt;Temporary: Ear infection that prevents you from hearing properly for a while or you broke your arm and now can’t use a mouse to use your computer for a couple of weeks.&lt;/li&gt;
&lt;li&gt;Situational: You are on a bus and want to watch a video but you forgot your headphones so you need close captions. Even something as simple as looking at your phone outside if it’s very bright, not enough contrast ratio on an app you might be using might make it unusable in that situation.&lt;/li&gt;
&lt;li&gt;Socioeconomic: Using a very old device with a poor internet connection in a site that has not been optimized for those conditions can result in a very poor experience for the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see the lack of accessibility affects us all to some degree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Should You Make Your Site/Application Accessible?
&lt;/h2&gt;

&lt;p&gt;The simplest answer to the question above is that “It’s the right thing to do”. That alone should be enough to convince you. It should be a no-brainer that making your products usable by anyone and not excluding more than a billion people is the way to go.&lt;/p&gt;

&lt;p&gt;What you might not know is that by doing the right thing, you will also be benefiting your company in a lot of ways. Some of them are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reach a wider audience, hence more customers and more revenue.&lt;/li&gt;
&lt;li&gt;Better SEO (Search Engine Optimization), which means that people will find you more easily when using search engines like Google.&lt;/li&gt;
&lt;li&gt;Better user experience for all users can help with user retention.&lt;/li&gt;
&lt;li&gt;Avoid potential discrimination lawsuits, if you want to know more here is a good &lt;a href="https://krisrivenburgh.medium.com/does-every-website-need-to-be-ada-compliant-accessible-3d4f176cf1e9" rel="noopener noreferrer"&gt;article about digital discrimination lawsuits in the US&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Comes Next?
&lt;/h2&gt;

&lt;p&gt;Now that we have talked about why accessibility is so important and why you should make your site/application accessible, it’s time to start the journey of making your site/application accessible.&lt;/p&gt;

&lt;p&gt;To help you in that journey, we’ll be posting more articles in the upcoming weeks that will touch on key things you need to do and take into consideration.&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>ada</category>
      <category>wcag</category>
    </item>
  </channel>
</rss>
