> 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.
getting back into dubstep (ahem, brostep) after ages…and it feels so good.

~ wip

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.