<?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: Ella (she/her/elle)</title>
    <description>The latest articles on DEV Community by Ella (she/her/elle) (@ellativity).</description>
    <link>https://dev.to/ellativity</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%2F550094%2Fce38162a-96ab-42cf-bd48-fa2b1d47dc5a.png</url>
      <title>DEV Community: Ella (she/her/elle)</title>
      <link>https://dev.to/ellativity</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ellativity"/>
    <language>en</language>
    <item>
      <title>How we moved Crawlee for Python out of Beta</title>
      <dc:creator>Ella (she/her/elle)</dc:creator>
      <pubDate>Tue, 30 Sep 2025 08:59:42 +0000</pubDate>
      <link>https://dev.to/crawlee/how-we-moved-crawlee-for-python-out-of-beta-33bi</link>
      <guid>https://dev.to/crawlee/how-we-moved-crawlee-for-python-out-of-beta-33bi</guid>
      <description>&lt;p&gt;Today is the day we move &lt;a href="https://github.com/apify/crawlee-python" rel="noopener noreferrer"&gt;Crawlee for Python&lt;/a&gt; out of beta 🥳 In this post I will summarize the decisions and development that went into this process. I hope it will inform — and even validate — your product decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Crawlee for Python?
&lt;/h2&gt;

&lt;p&gt;To begin with, a quick intro: &lt;a href="https://crawlee.dev/python" rel="noopener noreferrer"&gt;Crawlee for Python&lt;/a&gt; is an open-source web-scraping library that provides you with a full toolkit to build, run, and scale your own scrapers. You can deploy Crawlee for Python to extract financial data to identify cases of corporate wage theft, or to track major global polluters, or compare the prices of competing e-commerce retailers. The only real limit is your creativity. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why was it in beta?
&lt;/h2&gt;

&lt;p&gt;Crawlee for Python was released in beta &lt;a href="https://crawlee.dev/blog/launching-crawlee-python" rel="noopener noreferrer"&gt;in July 2024&lt;/a&gt;. A couple of years earlier, &lt;a href="https://blog.apify.com/announcing-crawlee-the-web-scraping-and-browser-automation-library/" rel="noopener noreferrer"&gt;we had released Crawlee for JS&lt;/a&gt;, which had better capabilities from the outset as a result of the tooling that was available for us to build with. &lt;/p&gt;

&lt;p&gt;We knew we ultimately wanted both versions of Crawlee to have equivalent capabilities, but the Python tooling available to us at the time was too young and untested in real scenarios. We believed we could reach the point where Crawlee for Python was equivalent to (or better than!) its JS counterpart but weren’t ready to include untested tooling in the build. After working hard to launch, we made the decision to release Crawlee for Python in beta.&lt;/p&gt;

&lt;p&gt;This decision gave us breathing room to collect real-world feedback to solve the issues related to any new code and gather community feedback. Getting the product out in beta allowed devs to engage with it, and gave us the chance to fix reported bugs, implement requested features, and improve some performance issues. This helped identify new issues with the library that we could incorporate into a more complete build&lt;/p&gt;

&lt;h2&gt;
  
  
  What did we do to prepare for v1?
&lt;/h2&gt;

&lt;p&gt;We used the time Crawlee for Python was in beta to improve more than just the library. We created several benchmarks to track the performance of a wide range of typical crawlers, allowing us to compare Crawlee for Python with other options available to developers, including Crawlee for JS. &lt;/p&gt;

&lt;p&gt;We re-implemented most of the capabilities of Crawlee for JS in our v1 of Crawlee for Python. Key features we added are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified storage client system&lt;/strong&gt;, resulting in less duplication, better extensibility, and a cleaner developer experience. It also opens the door for the community to build and share their own storage client implementations tailored to specific databases or cloud storage providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Playwright crawler&lt;/strong&gt;, which makes your crawls faster and cheaper, while still allowing you to reliably handle complex, dynamic websites. In practice, you get the best of both worlds: speed on simple pages and robustness on modern, JavaScript-heavy sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New default HTTP client&lt;/strong&gt; (&lt;a href="[https://crawlee.dev/python/api/c...](https://crawlee.dev/python/api/class/ImpitHttpClient)"&gt;&lt;code&gt;ImpitHttpClient&lt;/code&gt;&lt;/a&gt;, powered by the &lt;a href="https://github.com/apify/impit" rel="noopener noreferrer"&gt;Impit&lt;/a&gt; library). This delivers fewer false positives, more resilient crawls, and less need for complicated workarounds. Impit is also developed as an open-source project by Apify, so you can dive into the internals or contribute improvements yourself: you can also create your own instance, configure it to your needs (e.g. enable HTTP/3 or choose a specific browser profile), and pass it into your crawler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sitemap request loader&lt;/strong&gt;, making it easier to start large-scale crawls where sitemaps already provide full coverage of the site&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Robots exclusion standard&lt;/strong&gt; which not only helps you build ethical and responsible crawlers, but can also save time and bandwidth by skipping disallowed or irrelevant pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fingerprinting&lt;/strong&gt; so that each crawler run looks like a real browser on a real device, making it less likely that you’ll get blocked. Using fingerprinting in Crawlee is straightforward: create a fingerprint generator with your desired options and pass it to the crawler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open telemetry&lt;/strong&gt;, allowing you to monitor real-time dashboards or analyze traces to understand crawler performance. easier to integrate Crawlee into existing monitoring pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How did we know it was ready to move out of beta?
&lt;/h2&gt;

&lt;p&gt;Once we implemented the features above, and tested them for as many possible real-world cases we believed are possible, we eventually had a version of Crawlee for Python that lived up to our initial vision for it. We feel now is the time: Crawlee for Python is ready to sit alongside its JS counterpart as a full web-scraping and automation library.&lt;/p&gt;

&lt;p&gt;Are you ready to check it out? &lt;a href="https://github.com/apify/crawlee-python" rel="noopener noreferrer"&gt;Visit our repo and give us a star&lt;/a&gt; ⭐&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens next?
&lt;/h2&gt;

&lt;p&gt;We will continue to build upon Crawlee for Python v1 as &lt;a href="https://crawlee.dev/python/docs/changelog" rel="noopener noreferrer"&gt;a rolling release&lt;/a&gt;. Although we are happy to be launching the full version, we know we can make further improvements. This is where you come in! &lt;/p&gt;

&lt;p&gt;We’d love your feedback. Try it out, and don’t hesitate to &lt;a href="https://crawlee.dev/python/docs/quick-start" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Report any bugs or weird behaviour you encounter;&lt;/li&gt;
&lt;li&gt;Ask questions if something isn’t clear - so we can improve the docs;&lt;/li&gt;
&lt;li&gt;Or request new features you’d like to see&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;We hope this summary gave you some insights into the process and decisions that take place to move a product out of beta. We would love to hear from you if you have questions about Crawlee for Python (or JS!), the tooling we have implemented, or anything else we have discussed in this article. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlee.dev/python/docs/quick-start" rel="noopener noreferrer"&gt;Give it a run&lt;/a&gt; and share your issues with us so we can continue to refine this tool and adapt it to suit all your web-crawling and automation needs.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webscraping</category>
      <category>webcrawling</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to write a high quality post on DEV</title>
      <dc:creator>Ella (she/her/elle)</dc:creator>
      <pubDate>Fri, 20 Aug 2021 13:56:54 +0000</pubDate>
      <link>https://dev.to/devteam/how-to-write-a-high-quality-post-on-dev-3me0</link>
      <guid>https://dev.to/devteam/how-to-write-a-high-quality-post-on-dev-3me0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@dtbosse" rel="noopener noreferrer"&gt;Daniel Thomas&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://dev.to/chrisachard/how-to-write-your-first-post-on-dev-c3k"&gt;Writing your first post on DEV&lt;/a&gt; can be as unfussy as clicking on the &lt;strong&gt;Create Post&lt;/strong&gt; button at the top of the screen (which takes you to &lt;a href="https://dev.to/new"&gt;https://dev.to/new&lt;/a&gt;) and jotting down some thoughts before hitting the juicy &lt;strong&gt;Publish&lt;/strong&gt; button at the bottom of the screen.&lt;/p&gt;

&lt;p&gt;That will get you started and on your way to publishing regularly, which is the key to creating connections with readers who engage with your work.&lt;/p&gt;

&lt;p&gt;If you want to build your readership and engagement further, here are a few more tips and tricks to posting on DEV that you might want to know about:&lt;/p&gt;

&lt;h2&gt;
  
  
  How the editor works
&lt;/h2&gt;

&lt;p&gt;This heading is a little misleading, because there are 2 editors to choose from right now. They're both markdown-based, but look and function a little different from each other:&lt;/p&gt;

&lt;p&gt;There's &lt;strong&gt;Rich + Markdown&lt;/strong&gt;&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%2Fb2mmrzm96msx96fd64yx.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%2Fb2mmrzm96msx96fd64yx.png" alt="Rich plus Markdown editor" width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And &lt;strong&gt;Basic&lt;/strong&gt;&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%2F5irv2g3z1i3njh879lda.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%2F5irv2g3z1i3njh879lda.png" alt="Basic editor" width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can switch between these in your &lt;strong&gt;User Settings&lt;/strong&gt; under &lt;a href="https://dev.to/settings/customization"&gt;Customization&lt;/a&gt; (where you can also try out the different colour schemes featured in those screenshots - but I digress...), just bear in mind that posts previously published in one editor will continue to use that editor for any edits in the future. &lt;/p&gt;

&lt;p&gt;While the Basic editor carries the post's meta-data in its header, the Rich version tucks it in around the edges. So, if you want a cover image in the Basic editor, you'll have to link to it in the header. Similarly, if you want to create a series or link to a canonical URL you'll need to add those in yourself.&lt;/p&gt;

&lt;p&gt;We recommend reviewing &lt;a href="https://dev.to/ziizium"&gt;Habdul&lt;/a&gt;'s excellent, &lt;a href="https://dev.to/ziizium/a-beginners-guide-to-the-dev-editor-202p"&gt;comprehensive guide to posting on DEV&lt;/a&gt;. Habdul builds on the &lt;a href="https://dev.to/p/editor_guide"&gt;Editor Guide&lt;/a&gt; in enough detail that you'll be a competent markdown writer and editor by the end of the post.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to tag (and why you should)
&lt;/h2&gt;

&lt;p&gt;Did you know that top posts under certain tags are eligible for &lt;a href="https://dev.to/badges"&gt;badges&lt;/a&gt; each week? Additionally, having your post tagged correctly helps your audience find you, and avoids getting your post reported for suspicious behaviour. &lt;/p&gt;

&lt;p&gt;Be sure to check out the tag descriptions for any tags you're planning to use and be sure you're following any posting guidelines. See &lt;a href="https://dev.to/t/mentalhealth"&gt;#mentalhealth&lt;/a&gt; or &lt;a href="https://dev.to/t/opensource"&gt;#opensource&lt;/a&gt; for examples of tags that have descriptions and guidelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considering accessibility
&lt;/h2&gt;

&lt;p&gt;For clarity on what we mean when we talk about accessibility (or a11y for keyboard-short), &lt;a href="https://dev.to/eevajonnapanula"&gt;Eevis&lt;/a&gt;'s &lt;a href="https://dev.to/eevajonnapanula/let-s-talk-about-accessibility-c80"&gt;post on a11y is a good starting point for some general concepts&lt;/a&gt;, such as inclusive language. If you'd like to know a little more about why a11y is important, &lt;a href="https://www.upyoura11y.com/why-accessibility/" rel="noopener noreferrer"&gt;Up Your A11y has a great intro&lt;/a&gt; that we'd recommend you check out.&lt;/p&gt;

&lt;p&gt;For the endlessly-curious, &lt;a href="https://dev.to/moopet"&gt;Ben&lt;/a&gt; explains a bit more about &lt;a href="https://dev.to/moopet/embedding-code-in-posts-40i5"&gt;why some ways of sharing code in your post are more accessible than others&lt;/a&gt;, while &lt;a href="https://dev.to/alfiedarko"&gt;Alfie&lt;/a&gt; &lt;a href="https://dev.to/alfiedarko/frontendsessions-web-accessibility-4eed"&gt;shares some best practices that might help with writing more accessible posts&lt;/a&gt;, and &lt;a href="https://dev.to/finallynero"&gt;Nero&lt;/a&gt; starts an important conversation &lt;a href="https://dev.to/finallynero/accessible-emojis--1pjh"&gt;about how accessible emojis are&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's talk about images
&lt;/h2&gt;

&lt;p&gt;A picture speaks a thousand words, or something, right? Well, that depends on your alt text...&lt;/p&gt;

&lt;p&gt;Not only do pictures help break up the wall-of-text effect of an in-depth tutorial, but they can also help influence the energy of your post and impact on your audience. Just remember to include alt text, so that anyone unable to view the image still knows what it is. For example, the alt text for this image is &lt;code&gt;An audience in an atmospheric auditorium&lt;/code&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%2F9izxenjddgw55i0n1df7.jpg" 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%2F9izxenjddgw55i0n1df7.jpg" alt="An audience in an atmospheric auditorium" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a href="https://www.pexels.com/@jibarofoto" rel="noopener noreferrer"&gt;Luis Quintero&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While a fix is on the way, cover images currently don't have alt text, so while they're handy for positioning your post at or near the top of the feed, don't rely on the cover image itself to convey any information that's important to the message of your post. That means, even if you have a pretty graphic title for a cover image you still need to write that title out in full.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speaking of titles
&lt;/h2&gt;

&lt;p&gt;We at DEV always recommend taking some extra time to choose a title that sets your post apart from the rest. There are only so many "The best 10 JavaScript tools" posts any dev has time for, so what about "How this one JS tool changed my workflow and freed up time to grow a herb garden"? The key here is to actually deliver on your title, rather than use it as click-bait to draw in views. Photos of your herb garden (with appropriate alt text) help:&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%2Fwwzyk8jc71v52fiwdyw2.jpg" 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%2Fwwzyk8jc71v52fiwdyw2.jpg" alt="Not quite herbs but genuinely my garden" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  And finally
&lt;/h2&gt;

&lt;p&gt;We are here to learn from each other. If you have any other hints, tips, or best practices for post authors please feel free to share them below! We'd love to learn about the things you've discovered here on DEV and how you connect with your readers.&lt;/p&gt;

&lt;p&gt;Remember that all posts should abide by the &lt;a href="https://dev.to/terms"&gt;Terms of Use&lt;/a&gt; and &lt;a href="https://dev.to/code-of-conduct"&gt;Code of Conduct&lt;/a&gt;. This includes inclusive language, original work that you have the right to share (with credit to anyone else whose original work you're citing or referencing), and not posting for the purpose of producing backlinks or driving traffic to an external site. &lt;/p&gt;

</description>
      <category>writing</category>
      <category>howtodevto</category>
    </item>
    <item>
      <title>Hello DEV community! I just joined the Forem team</title>
      <dc:creator>Ella (she/her/elle)</dc:creator>
      <pubDate>Fri, 12 Feb 2021 17:24:22 +0000</pubDate>
      <link>https://dev.to/ellativity/hello-dev-community-i-just-joined-the-forem-team-147g</link>
      <guid>https://dev.to/ellativity/hello-dev-community-i-just-joined-the-forem-team-147g</guid>
      <description>&lt;p&gt;Hiya DEV peeps, I'm Ella and I'm a dev.to lurker. As a tech-positive non-developer, I've been enjoying the richness of this community and how supportive and collaborative y'all are. It's such a rush to write my first post here, announcing that I've joined the fantastic team behind DEV and Forem as a Community Associate. &lt;/p&gt;

&lt;h1&gt;
  
  
  What does this mean?
&lt;/h1&gt;

&lt;p&gt;I am beyond excited to be joining &lt;a class="mentioned-user" href="https://dev.to/michaeltharrington"&gt;@michaeltharrington&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/itscasey"&gt;@itscasey&lt;/a&gt; to support everyone on &lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt;, &lt;a href="https://community.codenewbie.org/" rel="noopener noreferrer"&gt;community.codenewbie.org&lt;/a&gt;, and the Forem ecosystem. We're here to help, so don't hesitate to reach out to us at &lt;a href="mailto:yo@dev.to"&gt;yo@dev.to&lt;/a&gt; any time!&lt;/p&gt;

&lt;p&gt;Despite my first forays into coding 20+ years ago, curiosity took me down a different path so my career background is in face-to-face communities, wellness, and the ubiquitous service industry. My goal is to bring empathy and compassion from these fields into my role here, and serve this community and all the Forems with heart, soul, and a healthy dose of humility.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Forem?
&lt;/h1&gt;

&lt;p&gt;As a former youth worker and community educator, I have a deep stake in a healthier internet. DEV is a model for inclusive online communities that encourage and build people up, share knowledge and insights that narrow the education gap, and elevate everyone's access to learning and growth opportunities. It's incredible that the wider world now gets a chance to build online spaces in its image. &lt;/p&gt;

&lt;p&gt;I gotta hand it to you all, because the community here is what makes all of this possible. &lt;strong&gt;Thank you, DEV members, for contributing to making this place great!&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  By the by
&lt;/h1&gt;

&lt;p&gt;I'm into dancing, callisthenics, growing plants (indoors and outdoors), knitting, and playing too much League of Legends. If any of this resonates, feel free to connect!&lt;/p&gt;

</description>
      <category>forem</category>
      <category>career</category>
      <category>meta</category>
    </item>
  </channel>
</rss>
