<?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: Coco Poley</title>
    <description>The latest articles on DEV Community by Coco Poley (@itscocopo).</description>
    <link>https://dev.to/itscocopo</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%2F411808%2F5ac34734-bb78-4617-9c51-d2c3f85e39fc.webp</url>
      <title>DEV Community: Coco Poley</title>
      <link>https://dev.to/itscocopo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itscocopo"/>
    <language>en</language>
    <item>
      <title>Thank you so much to the DEV team for creating these great challenges! Excited to see what 2025 will bring! 🙏🥰⭐️</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Thu, 13 Feb 2025 17:09:13 +0000</pubDate>
      <link>https://dev.to/itscocopo/thank-you-so-much-to-the-dev-team-for-creating-these-great-challenges-excited-to-see-what-2025-2ikb</link>
      <guid>https://dev.to/itscocopo/thank-you-so-much-to-the-dev-team-for-creating-these-great-challenges-excited-to-see-what-2025-2ikb</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/devteam" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F1%2Fd908a186-5651-4a5a-9f76-15200bc6801f.jpg" alt="The DEV Team" width="800" height="800"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F3%2F13d3b32a-d381-4549-b95e-ec665768ce8f.png" alt="" width="500" height="500"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/devteam/congrats-to-the-new-year-writing-challenge-winners-2o35" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Congrats to the New Year Writing challenge Winners!&lt;/h2&gt;
      &lt;h3&gt;dev.to staff for The DEV Team ・ Feb 13&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#frontendchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#future&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>career</category>
      <category>future</category>
    </item>
    <item>
      <title>Humanity is What Makes AI Powerful: Predicting 2025</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Wed, 29 Jan 2025 13:38:13 +0000</pubDate>
      <link>https://dev.to/tinymce/humanity-is-what-makes-ai-powerful-predicting-2025-2kge</link>
      <guid>https://dev.to/tinymce/humanity-is-what-makes-ai-powerful-predicting-2025-2kge</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/newyear"&gt;2025 New Year Writing challenge&lt;/a&gt;: Predicting 2025.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The world's best creators and engineers have always needed editors and collaborators. From Da Vinci to J.R.R. Tolkien to Steve Jobs and beyond, every historic creative mind has needed help. An assistant, if you will. My prediction for tech in 2025 is that humanity is going to be more important than ever with the rise of Artificial Intelligence (AI). Why? There's a few reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI thrives on human guidance
&lt;/h2&gt;

&lt;p&gt;AI systems are brilliant at executing specific tasks and can operate autonomously, while human input improves their effectiveness and application. Large Language Models like ChatGPT, or code-focused platforms like Cursor can maintain context across conversations while being driven from clear user direction and prompts. AI is only as powerful as the clarity of its instructions and the depth of its data sources. &lt;/p&gt;

&lt;p&gt;In 2025, the relationship between humans and AI will deepen as we design custom integrations into specific technical processes, automate project management, and predict bugs before they happen. We will teach machines to augment our strengths while compensating for our weaknesses.&lt;/p&gt;

&lt;p&gt;This collaboration aligns with a broader truth: writing by hand, for instance, enhances memory retention because it engages the mind and body in ways typing doesn’t​. Similarly, interacting with AI stimulates strategic thinking, task prioritization, and decision-making—skills that are uniquely human.&lt;/p&gt;

&lt;h3&gt;
  
  
  With great power comes great responsibility
&lt;/h3&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%2F3tmnghyd50svnmfky4kc.gif" 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%2F3tmnghyd50svnmfky4kc.gif" alt="Uncle Ben says " width="498" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To leverage the great power of AI, it will be crucial for new processes to be guided by expert technical knowledge, and anchored in ethical oversight. Well-engineered AI tools excel at specific, focused tasks, from summarizing dense texts to debugging complex code. However, achieving these outcomes requires humans to provide context-rich prompts and strategic oversight. &lt;/p&gt;

&lt;p&gt;But &lt;a href="https://www.forbes.com/sites/johnkoetsier/2025/01/06/openai-ceo-sam-altman-we-know-how-to-build-agi/" rel="noopener noreferrer"&gt;Artificial General Intelligence (AGI) is still years away&lt;/a&gt;​. In the meantime, humanity’s ability to operate and innovate with AI will create a new wave of expertise: people fluent in "speaking AI."&lt;/p&gt;

&lt;h3&gt;
  
  
  More professionals will be fluent in AI in 2025
&lt;/h3&gt;

&lt;p&gt;This year, we’ll see more resumes with machine learning expertise, cognitive computing development, and algorithmic programming on them. Detailed discussion and sharing how we use AI on a regular basis will replace the question, “What do you think of AI?” In the last few years, these technologies have seen an uptick in popularity. I predict that this year they will become the norm.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI cannot replace true creativity
&lt;/h2&gt;

&lt;p&gt;AI lacks the spark of imagination that defines human creativity. It can remix existing ideas, but it cannot dream in the way a person might while brainstorming solutions or crafting a story. Humans can draw inspiration from personal history, cultural context, and abstract thought. Machine intelligence, for all its efficiency, does not carry these lived experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Major investments in custom AI in 2025
&lt;/h3&gt;

&lt;p&gt;We have already seen some major investments in out-of-the-box AI tools in 2024. Generative AI usage jumped from 53% in 2023 to 75% in 2024 according to &lt;a href="https://blogs.microsoft.com/blog/2024/11/12/idcs-2024-ai-opportunity-study-top-five-ai-trends-to-watch/" rel="noopener noreferrer"&gt;Microsoft’s IDC study&lt;/a&gt;, and that is just the beginning. The study also reported that within 24 months, businesses already using machine intelligence to drive their productivity will expand to create their own solutions. It’s not just about a free, quick AI tool anymore. &lt;/p&gt;

&lt;p&gt;I predict that in 2025 we will see major financial, media, and retail organizations launch innovative, custom, interactive technologies to the public that are based on artificial intelligence. &lt;/p&gt;

&lt;h2&gt;
  
  
  The potential for AI in 2025 is limitless
&lt;/h2&gt;

&lt;p&gt;AI has already transformed how we work. 2025 is the year we learn how to use these tools more effectively. Picture an intelligent system integrated into your workplace, spotting errors in data or automatically debugging broken code on a pull request. These advancements aren’t distant dreams. They’re the reality we’re shaping for 2025. &lt;/p&gt;

&lt;h3&gt;
  
  
  An explosion of AI related jobs in 2025
&lt;/h3&gt;

&lt;p&gt;It’s easy to deduce that if there will be more organizations building custom AI solutions, and if there are more experts in the workforce, there will be an explosion of related jobs. From creators comfortable with AI generated content, to programmers writing neural networks, the spectrum of AI-related jobs will expand and grow rapidly this year. &lt;/p&gt;

&lt;p&gt;Many jobs will become augmented and we’ll be working with these new tools. Mundane tasks will be taken over by custom automations and helpful agentic workflows. I predict that there will be a huge opportunity in the market for experts who are needed to work with AI tools as well as develop, and maintain these custom technologies we’ll see arrive in 2025. &lt;/p&gt;

&lt;p&gt;AI's potential lies not in replacing human efforts but in amplifying them. By combining the precision of machines with the intuition of humans, we can address challenges more efficiently and creatively than ever before.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap up: AI will achieve greatness with our help
&lt;/h2&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%2Fxt2yo67z97qfds3w6jb3.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%2Fxt2yo67z97qfds3w6jb3.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In 2025, success in technology will depend not on AI alone but on the people who guide and refine it. The fast-fail methodology will thrive as teams experiment with new workflows, learning what works and iterating quickly. Those who embrace this partnership of balancing the creative and the computational will drive the next wave of innovation.&lt;/p&gt;

&lt;p&gt;Ultimately, AI will not achieve greatness unless we do. By leaning into our strengths as people, embracing collaboration, and continuing to try new tools, we can stay in tune as the symbiosis of human intelligence and artificial capabilities defines the future of technology.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>future</category>
      <category>ai</category>
    </item>
    <item>
      <title>Image Optimizer has edits web app users need for quick image edits, and no code necessary for image responsiveness. I remember the days of creating over hundreds of CSS classes to accommodate every browser and device. This makes everything SO much easier!</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Thu, 23 Jan 2025 19:44:34 +0000</pubDate>
      <link>https://dev.to/itscocopo/image-optimizer-has-edits-web-app-users-need-for-quick-image-edits-and-no-code-necessary-for-image-43nn</link>
      <guid>https://dev.to/itscocopo/image-optimizer-has-edits-web-app-users-need-for-quick-image-edits-and-no-code-necessary-for-image-43nn</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/tinymce" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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%2Forganization%2Fprofile_image%2F7097%2Ff7168876-89f8-4a98-b9f5-0d9644d4125e.png" alt="TinyMCE" width="658" height="133"&gt;
      &lt;div class="ltag__link__user__pic"&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%2Fuser%2Fprofile_image%2F667206%2F17d4bc83-41b1-4a4f-a6f4-22f59aa694e9.jpeg" alt="" width="800" height="802"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/tinymce/tinymce-76-release-notes-introducing-image-optimizer-powered-by-uploadcare-1cf5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;TinyMCE 7.6 Release Notes - Introducing Image Optimizer powered by Uploadcare&lt;/h2&gt;
      &lt;h3&gt;Mrinalini Sugosh (Mrina) for TinyMCE ・ Jan 23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#richtexteditor&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#release&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>css</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Level Up Your dbt Schema Tests in 4 Easy Steps</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Fri, 11 Jun 2021 11:37:20 +0000</pubDate>
      <link>https://dev.to/itscocopo/level-up-your-dbt-schema-tests-in-4-easy-steps-6k8</link>
      <guid>https://dev.to/itscocopo/level-up-your-dbt-schema-tests-in-4-easy-steps-6k8</guid>
      <description>&lt;p&gt;You may be a data engineer or data quality engineer who uses the dynamic ETL tool &lt;a href="https://docs.getdbt.com/docs/introduction" rel="noopener noreferrer"&gt;dbt from Fishtown Analytics&lt;/a&gt;. If so, it's possible that you've incorporated a few automated schema tests into your dbt project. dbt's &lt;a href="https://dev.to/corissa/4-quick-facts-about-dbt-testing-299o"&gt;built-in testing framework&lt;/a&gt; is a powerful yet light way to validate data transformations, sources, and the data itself. &lt;/p&gt;

&lt;p&gt;As you likely know, you can do even more with dbt and its related tools. &lt;a href="https://docs.getdbt.com/docs/building-a-dbt-project/package-management" rel="noopener noreferrer"&gt;Packages in dbt&lt;/a&gt; are a nice way to add useful and more complex functionality to your data transformation project with what are essentially dependencies. &lt;/p&gt;

&lt;h2&gt;
  
  
  dbt_utils
&lt;/h2&gt;

&lt;p&gt;In this case, we'll focus on &lt;a href="https://github.com/fishtown-analytics/dbt-utils" rel="noopener noreferrer"&gt;the dbt_utils package&lt;/a&gt;, which is an aptly named utilities package officially made and maintained by the same folks who develop dbt. I'll show you how to add the package if you don't already know how, and then share some examples of dbt_utils automated schema tests I find useful.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; One great advantage of dbt_utils schema tests is that they can test at the model &lt;strong&gt;or&lt;/strong&gt; column level.&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%2Fwxx7wxvsacp1ydy5c1g1.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%2Fwxx7wxvsacp1ydy5c1g1.png" alt="dbt_utils" width="654" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Easy Steps to Install
&lt;/h2&gt;

&lt;p&gt;Let's do this!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Add Packages.yml to your root dbt folder
&lt;/h3&gt;

&lt;p&gt;Create a new file at the root level in your dbt project, and name it &lt;em&gt;packages.yml&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Add dbt_utils to the packages
&lt;/h3&gt;

&lt;p&gt;Get the latest package code from &lt;a href="https://hub.getdbt.com/fishtown-analytics/dbt_utils/latest/" rel="noopener noreferrer"&gt;this official page&lt;/a&gt;, then copy and paste it into your packages.yml file. &lt;/p&gt;

&lt;p&gt;Today the code is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;packages:
  - package: fishtown-analytics/dbt_utils
    version: 0.7.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save your packages.yml file. It should look something like this: &lt;br&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%2Fk50vdsx80xqqprfqhghp.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%2Fk50vdsx80xqqprfqhghp.png" alt="dbt_utils in packages.yml" width="729" height="585"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Run dbt deps locally
&lt;/h3&gt;

&lt;p&gt;Open your Command Line or Terminal wherever you control your dbt project and send commands. Run the following command to install the dbt_utils package on your machine so you can use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dbt deps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see something like this: &lt;br&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%2Fg0ucqih50gnsnz8vw8ax.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%2Fg0ucqih50gnsnz8vw8ax.png" alt="dbt deps being installed on a PC" width="450" height="91"&gt;&lt;/a&gt;&lt;br&gt;
If so, success! The package is installed and you can go about using your new tests.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Use Your New Tests
&lt;/h3&gt;

&lt;p&gt;Much like &lt;a href="https://docs.getdbt.com/docs/building-a-dbt-project/tests" rel="noopener noreferrer"&gt;dbt's built-in testing&lt;/a&gt;, dbt_utils automated schema tests should be placed under a column or model being tested under the "tests" configuration. That's essentially how they are integrated!&lt;/p&gt;
&lt;h2&gt;
  
  
  dbt_utils Schema Tests
&lt;/h2&gt;

&lt;p&gt;Now you can use a whole host of new dbt automated schema tests and even more in the dbt_utils package. For now I'll show you a couple of my favorite dbt_utils schema tests. &lt;/p&gt;
&lt;h4&gt;
  
  
  Recency - Model Level Test
&lt;/h4&gt;

&lt;p&gt;Recency is a configurable schema test that checks to see if the timestamp column referenced was changed within the timeframe. I.E. you can see if the model loads every day, hour, week, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;models:
  - name: model_name
    tests:
      - dbt_utils.recency:
          datepart: day
          field: created_at
          interval: 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Equal_Rowcount - Model Level Test
&lt;/h4&gt;

&lt;p&gt;I find equal_rowcount to be a fantastic test for checking to make sure nothing changed in my sources during ingest or transformation. If I expect two models to contain the same number of rows, it's an easy reference to both from the target model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;models:
  - name: model_name
    tests:
      - dbt_utils.equal_rowcount:
          compare_model: ref('other_table_name')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://hub.getdbt.com/fishtown-analytics/dbt_utils/latest/" rel="noopener noreferrer"&gt;dbt_utils&lt;/a&gt; is a truly powerful package that can add a lot of functionality to your project, and it costs nothing to install. Other schema tests include validation for cardinality, unique with SQL conditions, values not accepted, row equality, row count, and even more. &lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks for Reading!
&lt;/h2&gt;

&lt;p&gt;I hope this was useful for you, and that you are excited by the prospect of adding more cool functions to your dbt project like I am! If you'd like to share more of your experience with dbt or data engineering, please feel free to comment or get in touch with me at any time. I have a &lt;a href="https://github.com/corissawex/dbtTestExamples" rel="noopener noreferrer"&gt;dbtTestExamples repository on GitHub&lt;/a&gt; that is open for anyone to try their hand at dbt tests using Google BigQuery.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>database</category>
      <category>dbt</category>
      <category>sql</category>
    </item>
    <item>
      <title>2 Critical Fixes For Installing dbt 0.19.0</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Wed, 24 Mar 2021 23:34:09 +0000</pubDate>
      <link>https://dev.to/itscocopo/2-critical-things-about-dbt-0-19-0-installation-20j</link>
      <guid>https://dev.to/itscocopo/2-critical-things-about-dbt-0-19-0-installation-20j</guid>
      <description>&lt;p&gt;If you're a data engineer or data scientist, you might be using or learning to use &lt;a href="https://docs.getdbt.com/" rel="noopener noreferrer"&gt;dbt (data build tool)&lt;/a&gt;, the powerful data modeling and transformation tool from Fishtown Analytics. I've helped colleagues understand and install dbt a number of times, and I know there are a few things that data engineers can get hung up on during installation. &lt;/p&gt;

&lt;p&gt;Let's take a peek at two big ones so you can avoid getting tripped up by the same errors. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Python 3.9 is Not Compatible with dbt 0.19.0
&lt;/h3&gt;

&lt;p&gt;If you didn't already have Python installed in your working environment, you've probably been told to install it. So you did! And likely you installed the latest version as anyone would do, which is &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python 3.9&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But&lt;/strong&gt; currently when you run &lt;em&gt;pip install dbt&lt;/em&gt; in your working environment in the hopes that you can install dbt, &lt;a href="https://github.com/fishtown-analytics/dbt/blob/develop/setup.py" rel="noopener noreferrer"&gt;the tool's setup.py installs dbt 0.19.0&lt;/a&gt;, which is not ideal. Why? Because this latest version of dbt is incompatible with Python 3.9 as of &lt;a href="https://discourse.getdbt.com/t/help-i-cant-install-dbt-nov-dec-2020/1847" rel="noopener noreferrer"&gt;this post on the official dbt community from November 2020&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fix It
&lt;/h4&gt;

&lt;p&gt;Have no fear, all you need to do to &lt;strong&gt;fix this is to install &lt;a href="https://www.python.org/downloads/release/python-386/" rel="noopener noreferrer"&gt;Python 3.8.6&lt;/a&gt; instead&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. dbt 0.19.0 Breaks On PyICU Dependency Install
&lt;/h3&gt;

&lt;p&gt;OK, you installed the right version of Python and you ran the install command again. Now you're stuck here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Collecting PyICU&amp;gt;=2.4.2
  Downloading PyICU-2.6.tar.gz (233 kB)
     |████████████████████████████████| 233 kB 2.2 MB/s
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\pc\appdata\local\programs\python\python38\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\pc\\AppData\\Local\\Temp\\pip-install-m92rew9z\\pyicu\\setup.py'"'"'; __file__='"'"'C:\\Users\\pc\\AppData\\Local\\Temp\\pip-install-m92rew9z\\pyicu\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\pc\AppData\Local\Temp\pip-pip-egg-info-uns2aquj'
         cwd: C:\Users\pc\AppData\Local\Temp\pip-install-m92rew9z\pyicu\
    Complete output (53 lines):
    Traceback (most recent call last):
      File "C:\Users\pc\AppData\Local\Temp\pip-install-m92rew9z\pyicu\setup.py", line 63, in &amp;lt;module&amp;gt;
        ICU_VERSION = os.environ['ICU_VERSION']
      File "c:\users\pc\appdata\local\programs\python\python38\lib\os.py", line 675, in __getitem__
        raise KeyError(key) from None
    KeyError: 'ICU_VERSION'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If this looks familiar to you, don't panic. It's another quick fix. dbt 0.19.0 is incompatible with a dependency that's inside PyICU, called &lt;a href="https://pypi.org/project/agate/1.6.1/" rel="noopener noreferrer"&gt;agate&lt;/a&gt;. Fishtown Analytics seems to be &lt;a href="https://github.com/fishtown-analytics/dbt/releases/tag/v0.18.2" rel="noopener noreferrer"&gt;on the way to solving this&lt;/a&gt;, but who knows when it will be in the pip package. For now, try this. &lt;/p&gt;

&lt;h4&gt;
  
  
  Fix it
&lt;/h4&gt;

&lt;p&gt;Basically you just need to install agate 1.6.1 because 1.6.2 is incompatible and will cause the PyICU library to fail during dbt install. Run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install agate==1.6.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should succeed. When it does, run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install dbt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should install properly. You have dbt ready to rock!&lt;/p&gt;

&lt;h4&gt;
  
  
  Happy Programming!
&lt;/h4&gt;

&lt;p&gt;Did this post solve your problem? If not, leave a comment and I'll see if I can help!&lt;/p&gt;

&lt;p&gt;I hope these quick facts about dbt installation are helpful for you. If you'd like to see a dbt project in action, please feel free to clone my &lt;a href="https://github.com/corissawex/dbtTestExamples" rel="noopener noreferrer"&gt;dbtTestExamples repository on Github&lt;/a&gt; and learn how to connect a dbt model and tests to a Google Big Query instance.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>database</category>
      <category>dbttesting</category>
      <category>dbt</category>
    </item>
    <item>
      <title>Fix Your dbt Concurrent Transaction Database Error</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Fri, 26 Feb 2021 20:17:03 +0000</pubDate>
      <link>https://dev.to/itscocopo/fix-your-dbt-concurrent-transaction-database-error-43de</link>
      <guid>https://dev.to/itscocopo/fix-your-dbt-concurrent-transaction-database-error-43de</guid>
      <description>&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%2Ftt53povfvubzm6s32blw.jpeg" 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%2Ftt53povfvubzm6s32blw.jpeg" alt="found on Unsplash" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you use Fishtown Analytics' &lt;a href="https://www.getdbt.com/" rel="noopener noreferrer"&gt;data build tool (dbt)&lt;/a&gt; for data engineering and development, you may have increased your project's thread count. This is easily done in the Profiles.yml file under your &lt;strong&gt;.dbt/&lt;/strong&gt; folder for various reasons, from &lt;a href="https://dev.to/corissa/4-quick-facts-about-dbt-testing-299o"&gt;running &lt;code&gt;dbt test&lt;/code&gt; faster&lt;/a&gt; to &lt;a href="https://blog.getdbt.com/how-we-made-dbt-runs-30--faster/" rel="noopener noreferrer"&gt;configuring dbt projects for multithreading&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Concurrent Transaction Error
&lt;/h3&gt;

&lt;p&gt;But sometimes, increasing your thread count can lead to errors like this common database error showing a concurrent transaction conflict.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Completed with 1 error and 0 warnings:

Database Error in model test_model (models/stg/test_model.sql)
  could not complete because of conflict with concurrent transaction
  compiled SQL at target/compiled/of_models/stg/test_model_column_name.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  A Potential Quick Fix
&lt;/h3&gt;

&lt;p&gt;This fix doesn't work for every case, but if&lt;br&gt;
a) you're not trying to multithread and&lt;br&gt;
b) if you're getting this error and can't even run your models, it's a quick fix. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try returning to a single thread for &lt;code&gt;dbt run&lt;/code&gt;. Then you can increase your thread count when you're ready later.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's your quick fix for the dbt database error for running concurrent transactions. Happy programming!&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>datascience</category>
      <category>testing</category>
    </item>
    <item>
      <title>Attending Coalesce 2020</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Thu, 10 Dec 2020 16:44:41 +0000</pubDate>
      <link>https://dev.to/itscocopo/attending-coalesce-2020-2c41</link>
      <guid>https://dev.to/itscocopo/attending-coalesce-2020-2c41</guid>
      <description>&lt;p&gt;It's the third day of &lt;a href="https://www.getdbt.com/coalesce" rel="noopener noreferrer"&gt;Coalesce 2020&lt;/a&gt; sessions I've been in, and I am so fired up about data testing and what we can do better in my current data team. What's Coalesce 2020? It's a week long conference put on by &lt;a href="https://www.fishtownanalytics.com/" rel="noopener noreferrer"&gt;Fishtown Analytics&lt;/a&gt;, the fantastic team behind the data architecture and modeling tool, &lt;a href="https://www.getdbt.com/" rel="noopener noreferrer"&gt;dbt&lt;/a&gt;. So far it's been an immersive and interactive experience using Slack to participate in the data community and in depth discussions on what it means to be part of creating the best data architecture you can create.&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%2Fi%2Fobgxmizpha6dpspbkqu9.jpeg" 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%2Fi%2Fobgxmizpha6dpspbkqu9.jpeg" alt="Data chart in black and white from Unsplash" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So far my favorite sessions have been:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/getting-started-with-technical-blogging" rel="noopener noreferrer"&gt;Getting started with technical blogging&lt;/a&gt; - A session full of the basics with some really handy statistics and tips. A motivating session that drove me to write... Well, this! &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/organizational-epistemology.-or-how-do-we-know-stuff" rel="noopener noreferrer"&gt;Organizational epistemology. Or: How do we know stuff?&lt;/a&gt; - A really cool look at how we know what we know... What is a semantic definition on a data set, anyways? What does a day mean when you have multiple time zones where transactions are happening? &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/the-future-of-the-data-warehouse" rel="noopener noreferrer"&gt;The future of the data warehouse&lt;/a&gt; - The uses and misuses of data warehouses, and how and when they are really effective tools in the data pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/building-a-robust-data-pipeline-with-dbt-airflow-and-great-expectations" rel="noopener noreferrer"&gt;Building a robust data pipeline with dbt, Airflow, and Great Expectations&lt;/a&gt; - This was seriously an incredible look at how the Great Expectations testing framework can add some serious power to your data model testing. I need to go play with Great Expectations now... &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/empowering-your-data-team-through-testing" rel="noopener noreferrer"&gt;Empowering your data team through testing&lt;/a&gt; - Really just a session on how important different types of data testing are. Great to see how much the data community values high quality testing!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.getdbt.com/coalesce/agenda/evaluating-an-offer-in-the-data-space" rel="noopener noreferrer"&gt;Evaluating an offer in the data space&lt;/a&gt; - This session was a wonderful look at how to evaluate a company culture while you're interviewing, ask for the right pay, or find out the truth about what it's like to work for a company in the data sphere. I walked away with tools and more confidence to ask for what I know I need from a great data job.&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%2Fi%2Fef1whojfoywn7cceq9tv.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%2Fi%2Fef1whojfoywn7cceq9tv.png" alt="One of my questions during the Great Expectations session was featured in the daily Coalesce 2020 recap" width="626" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have a few more Coalesce sessions that I'm going to attend, but this was the bulk of my interest this week. The speakers that Fishtown Analytics chose, the stories that were told about data modeling in real life, and the testing philosophies and data methodologies I learned have left me really excited to build even more tests and better data models in my job. It's been a great opportunity during a tough year to learn so much more about how to be a better data QA engineer. &lt;/p&gt;

&lt;p&gt;I'll share more soon about what it's like to work in the data sphere as a quality assurance professional. For now, happy Thursday!&lt;/p&gt;

</description>
      <category>dbt</category>
      <category>testing</category>
      <category>database</category>
      <category>datascience</category>
    </item>
    <item>
      <title>4 Quick Facts About dbt Testing</title>
      <dc:creator>Coco Poley</dc:creator>
      <pubDate>Wed, 18 Nov 2020 11:59:53 +0000</pubDate>
      <link>https://dev.to/itscocopo/4-quick-facts-about-dbt-testing-299o</link>
      <guid>https://dev.to/itscocopo/4-quick-facts-about-dbt-testing-299o</guid>
      <description>&lt;p&gt;You may be using dbt CLI or dbt Cloud for your data pipeline work to Extract, Transform, and Load data into a warehouse by creating dynamically architected databases on a scheduled basis. As a fledgling data testing engineer, I learned a few critical things about using &lt;a href="https://docs.getdbt.com/docs/building-a-dbt-project/tests/" rel="noopener noreferrer"&gt;dbt native tests&lt;/a&gt; to validate dynamically created schemas, sources, and models within the &lt;a href="https://docs.getdbt.com/" rel="noopener noreferrer"&gt;dbt data architecture framework&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's take a look at four big facts I wish I knew when I got started with dbt testing. We're only covering the basics of testing a model and its sources using dbt's data and schema testing. In the future we'll look at testing other parts of the dbt architecture. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Schema.yml File Can Only Be Present in dbt's Models Folder&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you start with a &lt;a href="https://docs.getdbt.com/docs/building-a-dbt-project/tests/#schema-tests" rel="noopener noreferrer"&gt;basic schema test&lt;/a&gt; in dbt it's good to know &lt;strong&gt;you can't move the schema.yml file&lt;/strong&gt; to the Tests folder. I was curious if this worked, but it does not. Schema tests are great because you can create something like a not_null or unique test that checks one of your columns for null values in a matter of seconds. It's easy to write this kind of unit test just to check columns inside your models. &lt;/p&gt;

&lt;p&gt;Check out this example of some model schema tests: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FfXt7cpP%2FModel-Schema-Tests.png%2520%3D100x" 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%2Fi.ibb.co%2FfXt7cpP%2FModel-Schema-Tests.png%2520%3D100x" alt="an example of a model schema test" width="1354" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this is a look into source schema tests:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FJqBKY7j%2FSource-Schema-Tests.png%2520%3D100x" 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%2Fi.ibb.co%2FJqBKY7j%2FSource-Schema-Tests.png%2520%3D100x" alt="an example of a source schema test" width="1102" height="1152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. You Have to Think "Backwards" for dbt Data Tests&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is one that really got me at first. There is a strict rule in dbt data tests that says they &lt;em&gt;must&lt;/em&gt; return zero rows in order to pass. Instead of searching for a value such as the sum of a specific set of rows, the data test must be written in such a way that &lt;strong&gt;it expects to find zero rows if the results are &lt;em&gt;not equal&lt;/em&gt; to the correct sum value.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Think "backwards" when you're writing a data test: how can I return 0 rows in this case, yet still check the number I need to validate? Generally you'll find that != or &amp;lt;= work in most data test cases. I've included an example here to show a data test that makes sure there is a row count in an example Users table created by a dbt model.&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%2Fi.ibb.co%2FsgC7Tkb%2FDataTest.png%2520%3D100x" 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%2Fi.ibb.co%2FsgC7Tkb%2FDataTest.png%2520%3D100x" alt="an example of a data test" width="1026" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Increase Your Thread Count for Maximum Test Speed&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Time matters in automated testing, and the goal of writing dbt schema and data tests is to be an integrated part of the data architecture. This way every time the developers run their models, the tests are ready to go and provide checkpoints during development. That's why timing is so critical. If a dbt model takes an hour to compile, you do not want to add 30 minutes of testing to the run. &lt;/p&gt;

&lt;p&gt;Increasing the thread count value in the profile your project is using, within the profiles.yml file, can help immensely. Minutes become seconds, and seconds become half-seconds, the more threads you can add. For example, if I have 30 tests, I may want 40 threads defined in my profiles.yml file. This helps run 30 data and schema tests in 4 seconds, as a quick example in my experience. So, &lt;strong&gt;increase that thread count&lt;/strong&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Give Your Tests Meaningful Names&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is important because it will be hard to distinguish which test passed or failed while the tests are being executed if your data test names are unclear. When you run 'dbt test' all your schema and data tests will run together. You cannot simply run one directory within the data tests folder, you may either use 'dbt test --schema' or 'dbt test --data' and that is really the only way to differentiate which tests you'd like to run. &lt;/p&gt;

&lt;p&gt;Point being, because dbt doesn't give us much control over running smaller test sets, we need to be able to see all the different names of the tests that are running. As you can see in this picture of some dbt tests running, dbt will automatically name the schema tests, but you can &lt;strong&gt;label your data tests with useful, consistent names&lt;/strong&gt; such as "tablePresent".&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%2Fi%2F9o40p4oqzajgxem4utlk.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%2Fi%2F9o40p4oqzajgxem4utlk.png" alt="an example of some dbt test names running in the console" width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Outro
&lt;/h4&gt;

&lt;p&gt;Nice job, we made it to the end! I hope these quick facts about dbt testing are helpful for you. If you'd like to see the code in action, please feel free to clone my &lt;a href="https://github.com/corissawex/dbtTestExamples" rel="noopener noreferrer"&gt;dbtTestExamples repository on Github&lt;/a&gt; and learn how to connect a dbt model and tests to a &lt;a href="https://cloud.google.com/bigquery" rel="noopener noreferrer"&gt;Google Big Query&lt;/a&gt; instance. &lt;/p&gt;

&lt;p&gt;Happy Testing!&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>database</category>
      <category>testing</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
