Last Call for Programmer Jobs


The landscape of software engineering is undergoing a seismic shift. Rapid advancements in artificial intelligence are signaling what I believe to be the last call for traditional programmer jobs. This is likely the last chance to secure a “traditional programming job” and if you identify solely as a “programmer,” now is the time to act decisively. It might be necessary to contemplate a strategic pivot in your career to stay relevant in an increasingly AI-driven industry.…
Read more ⟶

Django InterfaceError: Connection already closed


Background Stack: gunicorn + Django + pyscopg2 Error InterfaceError: Connection already closed started appearing after performing new deploys of the application. These errors would appear from multiple gunicorn workers at the same time some 60 seconds after the workers would initialize. Understanding the stacktrace The error indicates that when Django ORM attempted to perform an SQL query through an open Psycopg2 connection, the connection was already closed. Django tries to execute the query through the assumed open connection, but when it is closed, the error occurs.…
Read more ⟶

No-Build Django: Simplifying Web Development


In the ever-evolving landscape of web development, the concept of “no-build” has gained traction, challenging the complexity that has become commonplace in modern web frameworks. David Heinemeier Hansson (DHH) recently shared his thoughts on the benefits of a no-build approach in his article “You can’t get faster than no-build”. While his focus was primarily on Ruby on Rails, this philosophy has interesting implications for Django developers as well. The No-Build Philosophy The core idea behind no-build is simple: eliminate the need for complex build processes, asset pipelines, and transpilation steps.…
Read more ⟶

Tools I enjoy


Tools amplify your talent. The better your tools, and the better you know how to use them, the more productive you can be. From: The Pragmatic Programmer by Andy Hunt Many years of professional software engineering have led to my opinionated list of tools and their configurations that are a daily driver to get things done. My Toolset If I had to describe my toolset it would be: keyboard-oriented (see this blog for the why) Vim-centric (i.…
Read more ⟶

Global Interpreter Lock (GIL) in Python: Past, Present, and Future


Understanding the Global Interpreter Lock (GIL) in Python The Global Interpreter Lock, commonly known as GIL, has been a significant aspect of CPython (the reference implementation of Python) for decades. This post explores the GIL’s history, its current state, and the exciting future developments that could revolutionize Python’s concurrency model. What is the GIL? The GIL is a mutex (or a lock) that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once.…
Read more ⟶