<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AnvilEight Blog</title>
    <link>https://anvileight.com/blog/</link>
    <description>Recent content on AnvilEight Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 01 Jul 2026 12:00:00 +0200</lastBuildDate>
    <atom:link href="https://anvileight.com/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How We Scaled an Estate Agency Lead Platform to 10,000&#43; Leads a Month on Django</title>
      <link>https://anvileight.com/blog/posts/scaling-estate-agency-lead-platform-django/</link>
      <pubDate>Wed, 01 Jul 2026 12:00:00 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/scaling-estate-agency-lead-platform-django/</guid>
      <description>&lt;p&gt;In 2014 we started a 6-month MVP for a UK startup that wanted its own lead-generation platform instead of renting someone else&amp;rsquo;s. Eleven years later, that platform routes &lt;strong&gt;10,000+ leads a month across 1,000+ estate agencies and 600+ agents&lt;/strong&gt;, at 99% uptime — and we still run it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jest vs Mocha: A Comparison of JS Testing Frameworks</title>
      <link>https://anvileight.com/blog/posts/jest-vs-mocha/</link>
      <pubDate>Sun, 28 May 2023 11:44:08 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/jest-vs-mocha/</guid>
      <description>&lt;p&gt;Looking to choose between Jest and Mocha for your JavaScript testing needs? Dive into this detailed comparison of the&#xA;two popular testing frameworks. Discover their similarities, differences, strengths, and weaknesses to make an informed&#xA;decision.&lt;/p&gt;&#xA;&lt;p&gt;Read on to find out which framework suits your testing requirements best.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 Tips For Hosting Effective Meetings</title>
      <link>https://anvileight.com/blog/posts/5-tips-for-hosting-effective-meetings/</link>
      <pubDate>Tue, 23 May 2023 17:51:13 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/5-tips-for-hosting-effective-meetings/</guid>
      <description>&lt;p&gt;Meetings play a crucial role in organizations, bringing teams together to discuss ideas, make decisions, and drive&#xA;projects forward. However, poorly organized meetings can be unproductive and waste valuable time. Hosting&#xA;meetings effectively requires careful planning, engagement, and facilitation. In this article, we present five&#xA;essential tips to help you host meetings that are productive, engaging, and result-oriented.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Top 7 Django Website Examples (2026): Big Sites Built with Django</title>
      <link>https://anvileight.com/blog/posts/top-7-django-website-examples/</link>
      <pubDate>Sun, 21 May 2023 18:46:27 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/top-7-django-website-examples/</guid>
      <description>&lt;p&gt;Django, a high-level web framework written in Python, has gained immense popularity among developers for its efficiency,&#xA;flexibility, and scalability.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to flatten a list of lists in Python?</title>
      <link>https://anvileight.com/blog/posts/how-to-flatten-a-list-of-lists-in-python/</link>
      <pubDate>Wed, 13 Apr 2022 10:29:14 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/how-to-flatten-a-list-of-lists-in-python/</guid>
      <description>&lt;p&gt;There is an obvious solution to the problem of flatten the nested lists, which is&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;new_list = [item for sublist in t for item in sublist]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;However, there are other more effective solutions out there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Check Whether a File Exists In Python</title>
      <link>https://anvileight.com/blog/posts/how-to-check-whether-a-file-exists-in-python/</link>
      <pubDate>Fri, 13 Sep 2019 13:10:54 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/how-to-check-whether-a-file-exists-in-python/</guid>
      <description>&lt;p&gt;Suppose, you want to check if a &lt;strong&gt;file exists&lt;/strong&gt; on a filesystem. Typically, you can do the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; os&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Is it a file?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;path&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isfile(filename) &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;For &lt;strong&gt;any valid paths&lt;/strong&gt; on the FS, you can do&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; os&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Does it exist?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;path&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;exists(path) &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;In this case, directories, files, symlinks and any other valid existing path return True.&lt;/p&gt;&#xA;&lt;p&gt;Object oriented way to do the same&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pathlib&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# For Python 2.7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# import pathlib2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a_path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; my_file &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Path(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/path/to/something&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a_path&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;is_file() &lt;span style=&#34;color:#75715e&#34;&gt;# returns True if the path is a file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a_path&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;is_dir() &lt;span style=&#34;color:#75715e&#34;&gt;# returns True if the path is a directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a_path&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;exists() &lt;span style=&#34;color:#75715e&#34;&gt;# returns True if the path actually exists&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;Note, if you plan to &lt;code&gt;if a_path.exists():&lt;/code&gt; and then &lt;code&gt;open(&#39;path/to/file&#39;)&lt;/code&gt;, consider to use &lt;code&gt;try&lt;/code&gt; &lt;code&gt;except&lt;/code&gt;&#xA;approach. The reason is that file might be deleted between the calls.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The UX in Marketing</title>
      <link>https://anvileight.com/blog/posts/the-ux-in-marketing/</link>
      <pubDate>Fri, 21 Sep 2018 10:51:13 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/the-ux-in-marketing/</guid>
      <description>&lt;p&gt;Can we say that marketing and user experience design are two sides of the same coin?&lt;/p&gt;&#xA;&lt;p&gt;I asked myself this very question until I started learning about UX and using it in practice.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://anvileight.com/blog/images/the-ux-in-marketing/marketing-and-ux.png&#34; alt=&#34;Marketing and UX&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;My name is Kate Golovatyuk. I’m a marketing manager, and my aim is to learn everything that can potentially help me promote my company in the best possible way and define areas of improvement to satisfy our clients and become as attractive as possible to our future clients.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Review of &#34;Succeeding With  Agile&#34; by Mike Cohn</title>
      <link>https://anvileight.com/blog/posts/review-of-succeeding-with-agile-mike-cohn/</link>
      <pubDate>Sat, 03 Mar 2018 10:46:27 +0000</pubDate>
      <guid>https://anvileight.com/blog/posts/review-of-succeeding-with-agile-mike-cohn/</guid>
      <description>&lt;p&gt;It all sounded nice and rosy to begin with, but, reality keeps smashing you in the face. With scrum, things never go as smoothly as in the books.&#xA;Sounds familiar?&lt;/p&gt;</description>
    </item>
    <item>
      <title>There Is Nothing Wrong With &#34;As a user&#34; Approach</title>
      <link>https://anvileight.com/blog/posts/as-a-user-needs-continue/</link>
      <pubDate>Mon, 26 Feb 2018 21:59:14 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/as-a-user-needs-continue/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;As a customer, I want to access the application to make an order.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;How does that sound? Is it too dry? Do you need to know more about the person trying to make an order? Is it fun enough to get cracking at the code?&lt;/p&gt;&#xA;&lt;!-- more --&gt;  &#xA;&lt;p&gt;Recently, I came across a great &lt;a href=&#34;https://blog.prototypr.io/stop-it-with-as-a-user-5feb9b38d920&#34;&gt;article&lt;/a&gt;that says that the “as a user approach” is not the best way to go about stories and instead, recommends a more empathetic approach. The author argues that we’ve become detached from the real people who will be using the product or software.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Top Tips For Project Management - Checklist &#43; PDF</title>
      <link>https://anvileight.com/blog/posts/new-development-project-checklist/</link>
      <pubDate>Mon, 26 Feb 2018 15:27:39 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/new-development-project-checklist/</guid>
      <description>&lt;p&gt;Alright, so you are starting a new web, mobile or other software project. Now, make sure that everything is ready for&#xA;the  development activities. Check, if you are up to a good start by using this checklist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to write a good User Story?</title>
      <link>https://anvileight.com/blog/posts/how-to-create-a-perfect-user-story-step-by-step-guide/</link>
      <pubDate>Sun, 18 Feb 2018 10:51:13 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/how-to-create-a-perfect-user-story-step-by-step-guide/</guid>
      <description>Writing good user stories is vital to any scrum project. Here is a simple approach to creating a backlog items for those who have little experience with that.</description>
    </item>
    <item>
      <title>Scrum Product Owner — Checklist</title>
      <link>https://anvileight.com/blog/posts/scrum-product-owners-checklist/</link>
      <pubDate>Sat, 17 Feb 2018 18:44:08 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/scrum-product-owners-checklist/</guid>
      <description>&lt;p&gt;Assess and improve your product owner&amp;rsquo;s skills. This checklist contains key points that you need as a product owner&#xA;to maximize the effectiveness of your scrum team. Consider this list as a reminder of the best practices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django Templates Stored in a Database</title>
      <link>https://anvileight.com/blog/posts/django-email-templates-with-context-stored-in-database/</link>
      <pubDate>Sat, 17 Feb 2018 11:59:14 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/django-email-templates-with-context-stored-in-database/</guid>
      <description>&lt;p&gt;I want to have an email templates stored in my Django database so that admins can manage them without me changing the&#xA;code. The requirement is to have HTML-emails support as well as an ability to send files attached. Neither standard&#xA;Django &lt;code&gt;send_mail&lt;/code&gt; nor other builtin features don&amp;rsquo;t support that feature so below you can find my solution to that&#xA;problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 Things You Need To Consider To Ensure A Successful App Launch</title>
      <link>https://anvileight.com/blog/posts/10-things-you-need-to-consider-to-ensure-a-successful-app-launch/</link>
      <pubDate>Wed, 14 Feb 2018 14:05:02 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/10-things-you-need-to-consider-to-ensure-a-successful-app-launch/</guid>
      <description>Launching a new app is not just a matter of uploading your creation to the app store, crossing your fingers and hoping for the best. Even if you think your app is the next big thing and about to change the world, if nobody has heard of it then you aren’t going to get too many downloads. Successfully launching an app takes a lot of ground work, and not just the day before launch. I’m talking about from the very first moment the app idea was thought off.</description>
    </item>
    <item>
      <title>Business Requirements Examples for Software</title>
      <link>https://anvileight.com/blog/posts/software-requirements-specifications-good-and-bad-examples/</link>
      <pubDate>Thu, 22 Jun 2017 17:51:13 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/software-requirements-specifications-good-and-bad-examples/</guid>
      <description>&lt;p&gt;In the world of business, success hinges on understanding and meeting the needs of customers, stakeholders, and&#xA;employees. One crucial aspect of achieving this is through well-defined business requirements. Business requirements are&#xA;a set of documented needs, expectations, and constraints that guide the development and implementation of projects,&#xA;processes, or products. In this article, we will explore various business requirements examples to shed light on their&#xA;importance and provide inspiration for effective planning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GraphQL with Python and Django - Advanced</title>
      <link>https://anvileight.com/blog/posts/graphql-with-python-django-advanced/</link>
      <pubDate>Sun, 11 Jun 2017 14:50:58 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/graphql-with-python-django-advanced/</guid>
      <description>&lt;p&gt;Ok, so you tapped into GraphQL?&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;ve done some basic queries, made few mutations and things are looking good so far.&lt;/p&gt;&#xA;&lt;p&gt;Or are they?&lt;/p&gt;</description>
    </item>
    <item>
      <title>MacOS X: ValueError: unknown locale: UTF-8 (Fixed)</title>
      <link>https://anvileight.com/blog/posts/valueerror-unknown-locale-utf-8-fixed/</link>
      <pubDate>Wed, 07 Dec 2016 15:16:19 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/valueerror-unknown-locale-utf-8-fixed/</guid>
      <description>export LC_ALL=en_US.UTF-8 &amp;amp;&amp;amp; export LANG=en_US.UTF-8</description>
    </item>
    <item>
      <title>Behavior Driven Development Pycharm Python Django</title>
      <link>https://anvileight.com/blog/posts/behavior-driven-development-pycharm-python-django/</link>
      <pubDate>Tue, 12 Apr 2016 15:59:14 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/behavior-driven-development-pycharm-python-django/</guid>
      <description>&lt;p&gt;This article is a continuation of my first post about TDD in PyCharm with Python and Django. Here I will outline how behaviour driven development in PyCharm can be used in a scrum environment. However, scrum itself is another topic, but I will use these processes as a canvas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test Driven Development With Python &amp; Django using PyCharm</title>
      <link>https://anvileight.com/blog/posts/test-driven-development-with-python-bdd/</link>
      <pubDate>Tue, 22 Mar 2016 11:44:08 +0100</pubDate>
      <guid>https://anvileight.com/blog/posts/test-driven-development-with-python-bdd/</guid>
      <description>&lt;p&gt;The purpose of this quick guide is to show how simple is it to start doing test driven development with Python and Django&#xA;using PyCharm. Even advanced programmers often scare to do TDD because they simple don&amp;rsquo;t know where to start.&#xA;In fact, it is extremely simple and natural way of development. Source code of this example is available on the git&#xA;repository.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python HTTP Server Example — Simple HTTP &amp; HTTPS Servers (Updated 2026)</title>
      <link>https://anvileight.com/blog/posts/simple-python-http-server/</link>
      <pubDate>Sun, 20 Mar 2016 13:17:54 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/simple-python-http-server/</guid>
      <description>&lt;p&gt;Python has built-in modules for creating HTTP servers, making it easy for developers to create web servers, serve static files, handle requests, and more.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Fix Bad Request (400) in Django — ALLOWED_HOSTS and Beyond</title>
      <link>https://anvileight.com/blog/posts/how-to-fix-bad-request-400-in-django/</link>
      <pubDate>Mon, 07 Mar 2016 17:27:39 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/how-to-fix-bad-request-400-in-django/</guid>
      <description>&lt;h2 id=&#34;missing-allowed_hosts&#34;&gt;Missing ALLOWED_HOSTS&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;code&gt;settings.py&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ALLOWED_HOSTS &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;example.com&amp;#34;&lt;/span&gt;,)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Restful Json Api for Mobile With Python and Django Using Behave</title>
      <link>https://anvileight.com/blog/posts/restful-json-api-for-mobile-with-python-and-django/</link>
      <pubDate>Thu, 03 Mar 2016 19:09:49 +0200</pubDate>
      <guid>https://anvileight.com/blog/posts/restful-json-api-for-mobile-with-python-and-django/</guid>
      <description>&lt;p&gt;Mobile applications that can survive without a reliable back-end that stores and processes dates, are rare. Nowadays, mobile applications are complex enough to require a solid back-end framework. This particular topic is about how to build reliable RESTful json API with Python and Django, why it is so efficient and straightforward. This article talks about the following aspects of json API development.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-makes-api-good&#34;&gt;What Makes API Good?&lt;/h2&gt;&#xA;&lt;h3 id=&#34;reliable&#34;&gt;Reliable&lt;/h3&gt;&#xA;&lt;p&gt;Good API means that it is reliable. The API should work no matter what. Whatever the application queries are , the API has to gracefully respond with either an error message or actual data. It should always follow the protocol and there can be excuses made for unexpected behaviour. This is especially important for developers who work on the integration. Clear, straightforward and expectable output enables quick integration.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
