> It is worse than Appa’s belt because he’s dragging himself through a second shift just to wash dishes, or Amma’s broomstick because her பூனை needs go unmet because Appa licks the dishes just to afford a shitty Honda Civic, a two-bedroom suburban house, a 60-inch TV only to plug archaic RCA cables to decrypt pirated channels, and send their kids to a building that wears the logo of a branded university, all the while the Uncle engaging in டிக்கிலோனா, ஜலபுலஜின்ஸ் and சப்புளிங் with the young ones, oddly enough with a camcorder. -- [babuexportcompany.com](https://www.babuexportcompany.com/thanglish/)
My Dockerfile to build [bearblog](https://github.com/HermanMartinus/bearblog/).
```
FROM python:3.13-slim AS base
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
POETRY_VIRTUALENVS_CREATE=false \
PATH="/usr/local/bin:$PATH"
WORKDIR /app
# System deps for psycopg2, Pillow, etc.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
libjpeg62-turbo-dev \
zlib1g-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy dependency manifests if present; fallback to pip freeze later
COPY conf/settings.py conf/settings.py
COPY architecture.md architecture.md
# Install Python dependencies
# If a requirements.txt is present we'll use it; otherwise install most-likely deps
COPY requirements.txt requirements.txt
RUN --mount=type=cache,target=/root/.cache/pip \
if [ -f requirements.txt ]; then \
pip install -r requirements.txt; \
else \
pip install \
Django==5.2.* \
gunicorn \
dj-database-url \
python-dotenv \
whitenoise \
boto3 \
pillow \
requests \
django-allauth \
tldextract \
pygmentify \
sentry-sdk \
django-debug-toolbar \
geoip2 \
ipaddr \
psycopg2-binary \
; fi
# Copy project
COPY . .
# Create non-root user (optional)
RUN useradd -m appuser && chown -R appuser:appuser /app
USER appuser
ENV PORT=8000 \
DJANGO_SETTINGS_MODULE=conf.settings \
PYTHONPATH=/app
# Expose port
EXPOSE 8000
# Entrypoint handles migrations/collectstatic, then starts gunicorn
ENTRYPOINT ["/app/entrypoint.sh"]
```
testing [/tmp](https://tmp.mgx.me/) -- runs on an old laptop sitting right here in my space.
Apologies to anyone who was loading fonts from static.mgx.me and noticed they stopped rendering. I recently migrated everything from Vercel to my own server, and a missing CORS header during the move caused requests from other domains to fail. This has now been resolved.
oh lawd she comin
getting back into dubstep (ahem, brostep) after ages…and it feels so good.
~ wip
vp of snacks (and trash)
Loved the M1 Mac mini for personal stuff, but my work projects got too massive. Couldn't keep up, so I recently upgraded to M4.
kunming for the holidays - crowded but calm in its own way.