All blogs / Software / engineering practice
Stavros' Stuff
Latest posts on Stavros' Stuff.
- Posts
- 212 from 22 Sep 2009 to 4 May 2026
- Posting
- now and then (5 in the last year)
- Kind
- personal blog
- Feed
- https://www.stavros.io/feed/short/
2026 3
2025 6
- I made another little bedside clock
- I converted a rotary phone into a meeting handset
- Switch to Jujutsu already: a tutorial - Stavros' Stuff
- I made a really small LED panel - Stavros' Stuff
- I couldn't wait for a TRMNL device, so I made my own - Stavros' Stuff
- Why is everything so scalable? - Stavros' Stuff
2024 2
2023 8
- The UX people - Stavros' Stuff
- Spam spammers back - Stavros' Stuff
- Use your Wii Balance Board as a scale (again) - Stavros' Stuff
- Clearing up some misconceptions about passkeys - Stavros' Stuff
- I made an e-ink display that shows my calendar - Stavros' Stuff
- Hacking my appetite - Stavros' Stuff
- Making a security key for the Framework laptop - Stavros' Stuff
- Block non-Cloudflare IPs with ufw - Stavros' Stuff
2022 3
2021 5
2020 3
2019 3
2018 7
- Towards a more collaborative OSS model - Stavros' Stuff
- Securing your users' authentication - Stavros' Stuff
- A simple guide to PID control - Stavros' Stuff
- How to easily configure WireGuard - Stavros' Stuff
- Kubernetes 101 - Stavros' Stuff
- A short 3D printer primer - Stavros' Stuff
- On increasing productivity - Stavros' Stuff
2017 7
- Startup Mistakes: Choice of Datastore - Stavros' Stuff
- How to deploy Django on Dokku - Stavros' Stuff
- The scourge of web analytics - Stavros' Stuff
- Making a garage remote motorcycle mount - Stavros' Stuff
- Perfectly secure Bitcoin wallet generation - Stavros' Stuff
- 3D-printed breakthrough gives blind cat eyes - Stavros' Stuff
- The Bus Stop Bus - Stavros' Stuff
2016 6
- Spamnesty: Waste spammers' time - Stavros' Stuff
- How to deploy Django with Docker - Stavros' Stuff
- Turning everything into a mobile phone: Redemption - Stavros' Stuff
- A WiFi-enabled RGB LED strip controller - Stavros' Stuff
- Provisioning your computer with one command: awesome - Stavros' Stuff
- Building a cheap home sensor/controller - Stavros' Stuff
2015 12
- Open letter to Mozilla: Bring back Persona - Stavros' Stuff
- Hungry? There's a button for that! - Stavros' Stuff
- Private contact and calendar sync on Android - Stavros' Stuff
- Introducing: String Phone - Stavros' Stuff
- Review: CodeBug - Stavros' Stuff
- Shufflecast - Your own TV station - Stavros' Stuff
- Open source password management - Stavros' Stuff
- The microservices cargo cult - Stavros' Stuff
- Show page generation time in Django - Stavros' Stuff
- The iRotary Saga - Stavros' Stuff
- On API authentication - Stavros' Stuff
- Standalone Django scripts: The definitive guide - Stavros' Stuff
2014 15
- I took a picture: Hope - Stavros' Stuff
- Gweet: Messaging for your things - Stavros' Stuff
- I took a picture: Lethe & Seals - Stavros' Stuff
- iRotary - Part Three - Stavros' Stuff
- iRotary - Part Two - Stavros' Stuff
- iRotary - Part One - Stavros' Stuff
- Netflix for the rest of us - Stavros' Stuff
- Calling single-argument methods in Django templates - Stavros' Stuff
- Get a text when there's motion in your house - Stavros' Stuff
- How to safely store your bitcoins - Stavros' Stuff
- I found the Holy Grail of backups - Stavros' Stuff
- Arduino-powered irrigation system - Stavros' Stuff
- Mozilla Persona accounts with disposable email addresses - Stavros' Stuff
- Remotely controlling IR/RF devices with an Arduino - Stavros' Stuff
- Developing with pull requests - Stavros' Stuff
2013 32
- Automatically check your Python code for errors before committing - Stavros' Stuff
- Writing a full-text search engine using Bloom filters - Stavros' Stuff
- Reject unPEP8 pushes with git hooks - Stavros' Stuff
- No-hassle emails from your home server - Stavros' Stuff
- Winning at Candy Crush - Stavros' Stuff
- Writing a FUSE filesystem in Python - Stavros' Stuff
- Encrypted, deduplicated remote backups - Stavros' Stuff
- How to pronounce "gyros" (the greek food) - Stavros' Stuff
- DIY internet-enabled bathroom scale - Stavros' Stuff
- New tutorial: How to keep yourself secure online. - Stavros' Stuff
- Authentication and rate limiting - Stavros' Stuff
- Pacific Rim - Stavros' Stuff
- Writing an nginx authentication module in Lua - Stavros' Stuff
- Django's per-site caching doesn't work - Stavros' Stuff
- Brilliant or insane code? - Stavros' Stuff
- Faster installs with pip - Stavros' Stuff
- Blogging from the filesystem - Stavros' Stuff
- Use two-factor authentication for Mozilla Persona on your own domain - Stavros' Stuff
- Expandable code blocks in simple CSS3 - Stavros' Stuff
- How to properly configure Google Apps email - Stavros' Stuff
- On the pitfalls of A/B testing - Stavros' Stuff
- New theme! - Stavros' Stuff
- Automated, large-scale deployments with Ansible's pull-mode - Stavros' Stuff
- Django template projects - Stavros' Stuff
- Writing my first Android app: Control your Raspberry Pi from your phone - Stavros' Stuff
- New domain name! - Stavros' Stuff
- How to remotely control RF devices with the Raspberry Pi - Stavros' Stuff
- How to turn your Raspberry Pi into an infrared remote control - Stavros' Stuff
- An example of provisioning and deployment with Ansible - Stavros' Stuff
- A comment on the causes of burnout - Stavros' Stuff
- Better password reset procedures - Stavros' Stuff
- Monitoring your system's temperatures with Python - Stavros' Stuff
2012 12
- How to replace a Django model field with a property - Stavros' Stuff
- Proxying two connections in Go - Stavros' Stuff
- Adding a "login as user" button to the Django admin interface - Stavros' Stuff
- Developing an IRC frontend in Go - Stavros' Stuff
- A bug of life and death - Stavros' Stuff
- Developing a back-scratching robot - Stavros' Stuff
- How to highlight code in Python - Stavros' Stuff
- The curious case of the range() function - Stavros' Stuff
- Developing and deploying Python apps using pip and virtualenv - Stavros' Stuff
- A schemaless layer over SQLite - Stavros' Stuff
- Winning at Puzzle Adventures - Stavros' Stuff
- How to handle Python package installation on GAE - Stavros' Stuff
2011 8
- On authentication usability - Stavros' Stuff
- A short update - Stavros' Stuff
- How PostgreSQL's SR (Streaming Replication) works - Stavros' Stuff
- App Engine pricing changes revisited - Stavros' Stuff
- Secrets of Power Negotiating - Stavros' Stuff
- Book clouds - Stavros' Stuff
- Blog migration - Stavros' Stuff
- Πρόγραμμα καταχώρησης αποδείξεων - Stavros' Stuff
2010 20
- Delicious alternatives - Stavros' Stuff
- My Y Combinator interview. - Stavros' Stuff
- How to finally understand how to use Unicode. - Stavros' Stuff
- How to extend the Django admin site with custom views - Stavros' Stuff
- The mother of all URL validators. - Stavros' Stuff
- Using SQLite for great science, part 1 (or 3, I guess). - Stavros' Stuff
- New, ultra-secret project - Stavros' Stuff
- Using MongoDB for great science, part 2. - Stavros' Stuff
- Running Windows 7 in a VM. - Stavros' Stuff
- Speeding up Python code with ShedSkin - Stavros' Stuff
- My experience with using MongoDB for great science. - Stavros' Stuff
- SSL and security on the web. - Stavros' Stuff
- On mate selection - Stavros' Stuff
- How to synchronise folders between iPhones or iPods (or any two SSH hosts). - Stavros' Stuff
- SSH key creation howto. - Stavros' Stuff
- How easyjet screws you over. - Stavros' Stuff
- Forwarding ports on Linux. - Stavros' Stuff
- Optimizing python with Cython - Stavros' Stuff
- My experience with BuySellAds.com - Stavros' Stuff
- Thomson/SpeedTouch routers and WPA keys - Stavros' Stuff
2009 3
Undated 57
- Weekend project imdb api
- New website launched
- How to safely run programs under windows
- Web designsoftware development
- Contenttypes and unit testing problems in django
- Supported by ninjas
- Pycuda and windows
- King for a day
- Mounting ddrescue images under windows
- Spammers
- Dead mans switch
- File synchronisation
- Properly name tv episode files
- Printing hello world using curve fitting
- Apple woes
- Finding the levenshtein distance in python
- Mac second impression
- Google apps mail marked as spam by gmail
- Mounting samba shares with greek filenames in linux
- What is openid
- Moneygement
- Raid 0 vs 10k rpm
- The horrors of dining in london
- Flash charts
- Mobile phones and sip
- Switching to vi an odyssey
- Apache problems
- Nonzero drupal theme
- Wireless problems
- One reason to have sex
- On graceful degradation
- The sims
- Image manipulation with python et al
- Gmail checker part ii
- https://www.stavros.io/posts/pi/
- Gmail checker released
- Boa constructor
- Fallacies
- How to resolve hostnames in linux
- Muddrop
- New tutorial
- Digg vs slashdot no
- What is pypy
- The gallery
- Hamachi
- Trashing linux
- Webhost change
- Firefly
- Allofmp3com
- An important day
- Petals around the rose
- Authentication
- Hard disk crash
- Sortsize
- Moviepig
- Done
- First post