<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Seequ</title>
    <link rel="self" type="application/atom+xml" href="https://seequ.dev/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://seequ.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-11-02T00:00:00+00:00</updated>
    <id>https://seequ.dev/atom.xml</id>
    <entry xml:lang="en">
        <title>EXPLAIN asynchronous SQLAlchemy queries</title>
        <published>2025-11-02T00:00:00+00:00</published>
        <updated>2025-11-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/009-sqlalchemy-explain/"/>
        <id>https://seequ.dev/posts/009-sqlalchemy-explain/</id>
        
        <summary type="html">&lt;p&gt;The easiest way to understand the performance characteristics of database
operations is to run &lt;code&gt;EXPLAIN&lt;&#x2F;code&gt; on them and read their query execution plan.
SQLAlchemy provides s way to log out the SQL statements it runs, but those
only tell so much. Let&#x27;s find a way to automatically print out the execution
plan too.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Asynchronous logging in Python &#x2F; FastAPI</title>
        <published>2025-10-22T00:00:00+00:00</published>
        <updated>2025-10-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/008-async-logging/"/>
        <id>https://seequ.dev/posts/008-async-logging/</id>
        
        <summary type="html">&lt;p&gt;Have you ever been in a situation where your server receives multiple requests
at once and the log is all messed up? I have.&lt;&#x2F;p&gt;
&lt;p&gt;(lazy post, just want to get the idea out there)&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Ensuring you check for auth</title>
        <published>2025-08-15T00:00:00+00:00</published>
        <updated>2025-08-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/007-ensure-auth/"/>
        <id>https://seequ.dev/posts/007-ensure-auth/</id>
        
        <summary type="html">&lt;p&gt;I have seen plenty of code where auth checks just weren&#x27;t done.
I assume this usually happens when refactoring code, the developer just forgets
to put the checks back and code review fails. We can&#x27;t prevent mistakes, so
here&#x27;s a simple idea for ensuring this does not lead to a catastrophe.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Running FastAPI alongside Django</title>
        <published>2025-03-05T00:00:00+00:00</published>
        <updated>2025-03-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/006-fastapi-django/"/>
        <id>https://seequ.dev/posts/006-fastapi-django/</id>
        
        <summary type="html">&lt;p&gt;Migrating from Django to FastAPI has been quite a trip.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Approximating random events with binomial distributions</title>
        <published>2025-01-13T00:00:00+00:00</published>
        <updated>2025-01-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/005-binomial-distribution/"/>
        <id>https://seequ.dev/posts/005-binomial-distribution/</id>
        
        <summary type="html">&lt;p&gt;I&#x27;m making a game that has to simulate a lot of random events, but we only care
about the sum total effect of those events. Calculating each event separately
is costly. We can do better.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Snoozing messages outside office hours in Fastmail</title>
        <published>2024-11-23T00:00:00+00:00</published>
        <updated>2024-11-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/004-office-hour-emails/"/>
        <id>https://seequ.dev/posts/004-office-hour-emails/</id>
        
        <summary type="html">&lt;p&gt;I spent an entire(ish) day learning to use a single sieve command. Hopefully
this writeup eases your pain if you are on the same path.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>I hate Single Page Applications</title>
        <published>2024-11-17T00:00:00+00:00</published>
        <updated>2024-11-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/003-spa/"/>
        <id>https://seequ.dev/posts/003-spa/</id>
        
        <summary type="html">&lt;p&gt;Single Page Applications or &lt;em&gt;SPAs&lt;&#x2F;em&gt; have become the norm for web development. And
that drives me insane.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Hunt for the 0ms load time</title>
        <published>2024-11-14T00:00:00+00:00</published>
        <updated>2024-11-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/002-0ms-load/"/>
        <id>https://seequ.dev/posts/002-0ms-load/</id>
        
        <summary type="html">&lt;p&gt;Static sites are fast by default. It&#x27;s kind of difficult to make things slow
when the server only serves files and the client doesn&#x27;t need to wait for
another round of queries after loading the content. But how fast can we go?&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello World, I guess</title>
        <published>2024-11-12T00:00:00+00:00</published>
        <updated>2024-01-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              seequ
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://seequ.dev/posts/001-first/"/>
        <id>https://seequ.dev/posts/001-first/</id>
        
        <summary type="html">&lt;p&gt;I&#x27;ve been wanting to create a blog. I suppose it&#x27;s time.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s a funny thing. I&#x27;ve always felt like I have nothing to write about, yet
every once in a while I run to something so ridiculous that I have to rant about
it. These rants, so far, have ended up mostly in Discord (hi RPLCS). It&#x27;s a
shame, there&#x27;s a lot of really fun stuff in there and I&#x27;m not skilled enough to
dig them up.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
</feed>
