41554 blogs · [ { "id": "01a08c57-0cbf-71b3-8c39-85b5b2a607bf", "title": "I scanned every package on PyPi and found 57 live AWS keys", "url": "https://tomforb.es/blog/aws-keys-on-pypi/", "published_at": "2023-01-06T18:31:57+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b2f8297a", "title": "AWS may have broken your Cloudfront API for nearly a month", "url": "https://tomforb.es/blog/aws-broke-your-api/", "published_at": "2022-11-20T21:42:54+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b2febc46", "title": "Infosys leaked FullAdminAccess AWS keys on PyPi for over a year", "url": "https://tomforb.es/blog/infosys-leak/", "published_at": "2022-11-15T23:00:00+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b375c082", "title": "Visualizing how S3 deletes 1 billion objects with Athena and Rust", "url": "https://tomforb.es/blog/visualizing-s3-deletions/", "published_at": "2022-09-14T23:00:00+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b3d1926d", "title": "CVE-2022-0329 and the problems with automated vulnerability management", "url": "https://tomforb.es/blog/cve-2022-0329-and-the-problems-with-automated-vulnerability-management/", "published_at": "2022-01-29T17:25:09+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b426bf63", "title": "Benchmarking Rustpython With Criterion", "url": "https://tomforb.es/blog/benchmarking-rustpython-with-criterion/", "published_at": "2020-12-14T13:27:30+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b5104482", "title": "Managing Rust bloat with Github Actions", "url": "https://tomforb.es/blog/cargo-bloat-action/", "published_at": "2020-04-23T21:42:54+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b5911d23", "title": "Distributing malware with Google images, service workers and vegan Twitter bots", "url": "https://tomforb.es/blog/google-image-malware/", "published_at": "2019-12-15T10:19:01+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b641ed75", "title": "Django Docker Box is now an official Django project!", "url": "https://tomforb.es/blog/django-docker-box/", "published_at": "2019-10-17T21:40:54+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b64534ff", "title": "Testing my dotfiles with Github actions", "url": "https://tomforb.es/blog/testing-my-dotfiles/", "published_at": "2019-10-12T18:01:55+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b690c61d", "title": "I hope I hate this code one day", "url": "https://tomforb.es/blog/i-hope-i-hate-this-code/", "published_at": "2019-09-28T15:25:53+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b6ca9165", "title": "Europython 2019 Talk - Rewriting the Django autoreloader", "url": "https://tomforb.es/blog/europython-2019-talk-writing-a-python-autoreloader/", "published_at": "2019-09-22T19:38:42+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b73ad3e8", "title": "Redesigning my blog", "url": "https://tomforb.es/blog/redesign/", "published_at": "2019-09-21T20:28:03+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b77547a5", "title": "Creating an index of Apple Watch/MacOS/iOS features per-country", "url": "https://tomforb.es/blog/apple-watch-features/", "published_at": "2019-06-04T20:52:41+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b818f055", "title": "XCat 1.0 released or: XPath injection issues are severely underrated", "url": "https://tomforb.es/blog/xcat-10/", "published_at": "2018-12-09T19:58:01+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b81a4fb7", "title": "Invited to join the Django software foundation", "url": "https://tomforb.es/blog/dsf-member/", "published_at": "2018-12-02T19:58:01+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b8563943", "title": "Using bulk update in Django 2.2", "url": "https://tomforb.es/blog/bulk-update-added-to-django/", "published_at": "2018-10-04T18:36:02+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b93c1d6c", "title": "Queryset.explain() released in Django 2.1", "url": "https://tomforb.es/blog/queryset-explain-released-in-django/", "published_at": "2018-08-01T19:29:29+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b9715f94", "title": "Filtered aggregates lands in Django 2.0!", "url": "https://tomforb.es/blog/filtered-aggregates-landed-in-django/", "published_at": "2018-05-12T14:00:39+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b9ac9f62", "title": "How not to make an april fools joke", "url": "https://tomforb.es/blog/how-not-to-make-an-april-fools-joke/", "published_at": "2018-04-08T00:00:00+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5b9d47c37", "title": "Suggestions added to Django manage.py", "url": "https://tomforb.es/blog/django-manage-suggestions/", "published_at": "2018-02-24T00:00:00+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5ba4bb881", "title": "Goodby Simple, hello Gatsby", "url": "https://tomforb.es/blog/goodby-simple-hello-gatsby/", "published_at": "2018-01-16T00:00:00+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5baf4a643", "title": "Counting Pizza with Python", "url": "https://tomforb.es/blog/counting-pizza-with-python/", "published_at": "2016-07-28T00:03:32+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bb012fc0", "title": "Syntax highlighting and CSS support added to wordinserter", "url": "https://tomforb.es/blog/syntax-highlighting-and-css-support-added-to-wordinserter/", "published_at": "2016-07-26T01:22:28+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bb4e6810", "title": "Segfaulting Python with afl-fuzz", "url": "https://tomforb.es/blog/segfaulting-python-with-afl-fuzz/", "published_at": "2016-03-06T22:31:37+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bb92b297", "title": "Scraping websites with Cyborg", "url": "https://tomforb.es/blog/scraping-websites-with-cyborg/", "published_at": "2016-01-04T00:13:02+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bc5e6d93", "title": "HtmlToWord is now WordInserter", "url": "https://tomforb.es/blog/htmltoword-is-now-wordinserter/", "published_at": "2015-05-24T20:57:06+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bc7b7ec5", "title": "HP Support Solutions Framework Security Issue", "url": "https://tomforb.es/blog/hp-support-solutions-framework-security-issue/", "published_at": "2015-04-11T23:50:23+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bcc6289e", "title": "Dell System Detect RCE vulnerability", "url": "https://tomforb.es/blog/dell-system-detect-rce-vulnerability/", "published_at": "2015-03-23T15:16:10+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bd47a084", "title": "Simple 2", "url": "https://tomforb.es/blog/simple-2/", "published_at": "2014-12-13T20:56:51+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bd79fcc5", "title": "Exploiting XPath injection vulnerabilities with XCat", "url": "https://tomforb.es/blog/exploiting-xpath-injection-vulnerabilities-with-xcat-1/", "published_at": "2014-07-25T17:19:03+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bdc1426d", "title": "A test RSS feed service", "url": "https://tomforb.es/blog/a-test-rss-feed-service/", "published_at": "2014-04-01T02:33:57+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5be9faf38", "title": "2 years of blogging", "url": "https://tomforb.es/blog/2-years-of-blogging/", "published_at": "2014-03-06T21:04:44+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bee18def", "title": "Opera is really nice", "url": "https://tomforb.es/blog/opera-is-really-nice/", "published_at": "2014-02-13T15:32:03+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5bfa9b5ac", "title": "Submitting a patch to Python’s lxml library", "url": "https://tomforb.es/blog/submitting-a-patch-to-pythons-lxml-library/", "published_at": "2014-01-09T07:30:15+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c059f87b", "title": "University Presentation", "url": "https://tomforb.es/blog/university-presentation/", "published_at": "2013-11-27T18:19:28+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c0d5e819", "title": "Hack things, acquire clothing.", "url": "https://tomforb.es/blog/hack-things-acquire-clothing/", "published_at": "2013-11-22T16:59:42+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c0db1841", "title": "Restricting Thrift clients to specific IP addresses with Twisted", "url": "https://tomforb.es/blog/restricting-thrift-clients-to-specific-ip-addresses-with-twisted/", "published_at": "2013-11-11T17:17:11+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c1831614", "title": "Adding tail-call optimization to Python", "url": "https://tomforb.es/blog/adding-tail-call-optimization-to-python/", "published_at": "2013-10-15T19:04:05+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c20a29b7", "title": "My Uni's timetable system sucks, so I built a better one.", "url": "https://tomforb.es/blog/my-uni-s-timetable-system-sucks-so-i-built-a-better-one-1/", "published_at": "2013-10-11T23:05:09+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c20c0dfc", "title": "Purchasing a £30,000 numberplate for the price of a bus ticket", "url": "https://tomforb.es/blog/purchasing-a-30000-numberplate-for-the-price-of-a-bus-ticket/", "published_at": "2013-10-07T01:40:33+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c22151e0", "title": "Breaking out of secured Python environments", "url": "https://tomforb.es/blog/breaking-out-of-secured-python-environments/", "published_at": "2013-09-25T20:02:33+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c25fb783", "title": "Inspecting .NET applications with ILSpy", "url": "https://tomforb.es/blog/inspecting-net-applications-with-ilspy/", "published_at": "2013-09-19T12:40:40+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c2620959", "title": "Automatically inline Python function calls", "url": "https://tomforb.es/blog/automatically-inline-python-function-calls/", "published_at": "2013-08-01T15:54:18+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c357ad6b", "title": "SSDs are awesome, buy one.", "url": "https://tomforb.es/blog/ssd-s-are-awesome/", "published_at": "2013-07-25T19:54:58+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c39ba0db", "title": "Displaying a processes output on a web page with Websockets and Python", "url": "https://tomforb.es/blog/displaying-a-processes-output-on-a-web-page-with-websockets-and-python/", "published_at": "2013-07-15T18:40:38+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c4631123", "title": "Profiling Django templates with Django-Debug-Toolbar", "url": "https://tomforb.es/blog/profiling-django-templates-with-django-debug-toolbar/", "published_at": "2013-04-18T20:46:58+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c54e78a6", "title": "More holes than swiss cheese", "url": "https://tomforb.es/blog/more-holes-than-swiss-cheese/", "published_at": "2013-04-11T20:24:30+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c553a023", "title": "Just how slow are Django templates?", "url": "https://tomforb.es/blog/just-how-slow-are-django-templates/", "published_at": "2013-03-13T18:17:38+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c57c0efe", "title": "Finding fried chicken with C-Sharp, Mono and ServiceStack", "url": "https://tomforb.es/blog/finding-fried-chicken-with-c-mono-and-servicestack/", "published_at": "2013-03-02T21:57:06+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c5f58932", "title": "HtmlToWord", "url": "https://tomforb.es/blog/htmltoword/", "published_at": "2013-02-18T05:38:08+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c6411aab", "title": "Adding mobile support to Simple", "url": "https://tomforb.es/blog/adding-mobile-support-to-simple/", "published_at": "2012-09-22T17:50:04+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c70636f9", "title": "Parsing Wikipedia database dumps with C-sharp and Postgres (6 degrees of Wikipedia)", "url": "https://tomforb.es/blog/parsing-wikipedia-database-dumps-with-c-and-postgres-6-degrees-of-wikipedia/", "published_at": "2012-09-12T00:46:42+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c790e341", "title": "Transplanting/Replacing Django child instances without deleting the parent", "url": "https://tomforb.es/blog/transplanting-replacing-django-child-instances-without-deleting-the-parent/", "published_at": "2012-08-31T17:19:20+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c8125a65", "title": "Using Python metaclasses to make awesome Django model field choices", "url": "https://tomforb.es/blog/using-python-metaclasses-to-make-awesome-django-model-field-choices/", "published_at": "2012-08-13T21:57:14+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c8711246", "title": "In favour of ORM's", "url": "https://tomforb.es/blog/in-favour-of-orm-s/", "published_at": "2012-05-14T19:01:27+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c8881772", "title": "Making a film recommendation site by cheating", "url": "https://tomforb.es/blog/making-a-film-recommendation-site-by-cheating/", "published_at": "2012-05-08T05:51:42+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c93d2615", "title": "Creating a URL shortening service with Django", "url": "https://tomforb.es/blog/creating-a-url-shortening-service-with-django/", "published_at": "2012-04-20T17:11:49+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c99ac8fe", "title": "Using a custom SQLAlchemy Users model with Django", "url": "https://tomforb.es/blog/using-a-custom-sqlalchemy-users-model-with-django/", "published_at": "2012-04-13T19:45:31+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5c9ba53cd", "title": "Draconian internet filters", "url": "https://tomforb.es/blog/draconian-internet-filters/", "published_at": "2012-04-12T00:36:44+00:00" }, { "id": "01a08c57-0cbf-71b3-8c39-85b5ca69d51a", "title": "Simple.", "url": "https://tomforb.es/blog/simple/", "published_at": "2012-03-29T04:07:15+00:00" } ] posts Claim your blog
Back to orf
Blog · corpus.blog/blogs/tomforb.es/posts

orf

tomforb.es

2023

2022

2020

2019

2018

2016

2015

2014

2013

2012