Tom's corner of the internet
Django
Experiments
Projects
Rust
Security
Tom Forbes
Python developer living and working in London
I scanned every package on PyPi and found 57 live AWS keys
January 06, 2023
AWS may have broken your Cloudfront API for nearly a month
November 20, 2022
Infosys leaked FullAdminAccess AWS keys on PyPi for over a year
November 16, 2022
Visualizing how S3 deletes 1 billion objects with Athena and Rust
September 15, 2022
CVE-2022-0329 and the problems with automated vulnerability management
January 29, 2022
Benchmarking Rustpython With Criterion
December 14, 2020
Managing Rust bloat with Github Actions
April 23, 2020
Distributing malware with Google images, service workers and vegan Twitter bots
December 15, 2019
Django Docker Box is now an official Django project!
October 17, 2019
Testing my dotfiles with Github actions
October 12, 2019
I hope I hate this code one day
September 28, 2019
Europython 2019 Talk - Rewriting the Django autoreloader
September 22, 2019
Redesigning my blog
September 21, 2019
Creating an index of Apple Watch/MacOS/iOS features per-country
June 04, 2019
XCat 1.0 released or: XPath injection issues are severely underrated
December 09, 2018
Invited to join the Django software foundation
December 02, 2018
Using bulk update in Django 2.2
October 04, 2018
Queryset.explain() released in Django 2.1
August 01, 2018
Filtered aggregates lands in Django 2.0!
May 12, 2018
How not to make an april fools joke
April 08, 2018
Suggestions added to Django manage.py
February 24, 2018
Goodby Simple, hello Gatsby
January 16, 2018
Counting Pizza with Python
July 28, 2016
Syntax highlighting and CSS support added to wordinserter
July 26, 2016
Segfaulting Python with afl-fuzz
March 06, 2016
Scraping websites with Cyborg
January 04, 2016
HtmlToWord is now WordInserter
May 24, 2015
HP Support Solutions Framework Security Issue
April 11, 2015
Dell System Detect RCE vulnerability
March 23, 2015
Simple 2
December 13, 2014
Exploiting XPath injection vulnerabilities with XCat
July 25, 2014
A test RSS feed service
April 01, 2014
2 years of blogging
March 06, 2014
Opera is really nice
February 13, 2014
Submitting a patch to Python’s lxml library
January 09, 2014
University Presentation
November 27, 2013
Hack things, acquire clothing.
November 22, 2013
Restricting Thrift clients to specific IP addresses with Twisted
November 11, 2013
Adding tail-call optimization to Python
October 15, 2013
My Uni's timetable system sucks, so I built a better one.
October 11, 2013
Purchasing a £30,000 numberplate for the price of a bus ticket
October 07, 2013
Breaking out of secured Python environments
September 25, 2013
Inspecting .NET applications with ILSpy
September 19, 2013
Automatically inline Python function calls
August 01, 2013
SSDs are awesome, buy one.
July 25, 2013
Displaying a processes output on a web page with Websockets and Python
July 15, 2013
Profiling Django templates with Django-Debug-Toolbar
April 18, 2013
More holes than swiss cheese
April 11, 2013
Just how slow are Django templates?
March 13, 2013
Finding fried chicken with C-Sharp, Mono and ServiceStack
March 02, 2013
HtmlToWord
February 18, 2013
Adding mobile support to Simple
September 22, 2012
Parsing Wikipedia database dumps with C-sharp and Postgres (6 degrees of Wikipedia)
September 12, 2012
Transplanting/Replacing Django child instances without deleting the parent
August 31, 2012
Using Python metaclasses to make awesome Django model field choices
August 13, 2012
In favour of ORM's
May 14, 2012
Making a film recommendation site by cheating
May 08, 2012
Creating a URL shortening service with Django
April 20, 2012
Using a custom SQLAlchemy Users model with Django
April 13, 2012
Draconian internet filters
April 12, 2012
Simple.
March 29, 2012