The Curious Engineer

All blogs / Python

Peterbe.com

peterbe.com

Peterbe.com is the personal website and blog of Peter Bengtsson.

PythonJavaScript / TypeScriptWeb developmentDev tools / editors / IDEs

’10’15’20’25
Posts
1,445 from 17 Sep 2009 to 22 Oct 2026
Posting
weekly (35 in the last year)
Kind
personal blog
Feed
https://www.peterbe.com/rss.xml

2026 27

  1. describetime - A command line tool to say a date-time in different ways
  2. Google search with Gemini is amazing
  3. bun check vs. tsc
  4. Rocket launch morning show
  5. Level 600 on Magic Sort
  6. Licorice Pizza - highly recommended movie
  7. Our Mill year in review
  8. Beer koozie from exactly 15 years ago today
  9. Where Herman Melville used to sit when he went to Bethal in New Bedford
  10. Hippos in Boston
  11. Bun 1.4.0 made some binaries of gg2 smaller
  12. useSlowTruth - React hook to throttle booleans
  13. Claude Opus is 10x faster than OpenAI GPT 5 at non-streaming completions
  14. Best Django Redis configuration for speed and size
  15. How to use a list/tuple/array in Django with a raw SQL cursor
  16. Bun WebView is eating up my tmp storage
  17. html-getter - A powerfully simple HTML scraper in Bun
  18. Bestest security tip for updating packages with Bun
  19. pytest "import file mismatch"
  20. Copy the current line in VS Code
  21. logger.error or logger.exception in Python
  22. How to find which git SHA it was when you merged in the default branch
  23. gg2 branches got 50% faster by a Promise.all
  24. xbar-my-prs Info about your GitHub PRs in the macOS menu bar
  25. Optimizing Bun compiled binary for gg2
  26. gg2 has a web page now
  27. You don't need a context or state manager for TanStack Query in scattered React components

2025 38

  1. Autocomplete using PostgreSQL instead of Elasticsearch
  2. Comparison of speed between gpt-5, gpt-5-mini, and gpt-5-nano
  3. Benchmarking oxlint vs biome
  4. Elasticsearch memory usage
  5. gg2 is now installable with Homebrew
  6. Testing out vite 8 on SPA: Vite 8 is 5x faster
  7. Using AI to rewrite blog post comments
  8. Hosting your static web site with Firebase Hosting
  9. Bun vs. Go for a basic web server benchmark
  10. hylite as an executable
  11. In Python, you have to specify the type and not rely on inference
  12. Find the source of an alias in bash
  13. From @monaco-editor/react to prism-react-editor
  14. How I end-to-end test my Bun CLI app
  15. How to count the number of non-blank lines with Bash
  16. gg commit with suggested --no-verify
  17. Faster way to sum an integer series in Python
  18. Find GitHub Pull Request by commit SHA
  19. Always run biome migrate after upgrading biome
  20. gg shell completion
  21. Combining Django signals with in-memory LRU cache
  22. gg2 - a new CLI for helping me manage git branches
  23. Bot traffic hitting my blog
  24. Native connection pooling in Django 5 with PostgreSQL
  25. Video to Screenshots app
  26. A Python dict that can report which keys you did not use
  27. Set up iTerm to delete whole words on Option-Backspace
  28. How to SSG a Vite SPA
  29. Inspecting the index size in PostgreSQL
  30. Adding client-to-server sync to PissueTracker
  31. Useful GitHub.com trick I learned today: l
  32. Starting a side project: PissueTracker
  33. Announcing: Spot the Difference
  34. get in JavaScript is the same as property in Python
  35. Use 'key' in React components to reset them
  36. How to send custom headers in a loader in react-router v7
  37. TypeScript enums without enums
  38. How I run standalone Python in 2025

2024 37

  1. My 2024 golf goals
  2. How I built an index of my blog posts on my GitHub profile page
  3. Run TypeScript in Node without extensions
  4. An ideal pattern to combine React Router with TanStack Query
  5. brotli_static in Nginx
  6. Object.keys to return the known strings of an object in TypeScript
  7. How I make my Vite dev server experience faster
  8. How to extend a function in TypeScript without repeating the signature types
  9. Trying out the new Bun "Compile to bytecode"
  10. The performance benefits of code-split an SPA
  11. Rate my golf swing (October 2024)
  12. The 3 queries I use with pg_stat_statements to analyze slow PostgreSQL queries
  13. How to handle success and failure in @tanstack/react-query useQuery hook
  14. swr compared to @tanstack/react-query
  15. Add a lazy getter, that is a function call, on a object in JavaScript
  16. Wouter + Vite is the new create-react-app, and I love it
  17. Default environment variables in Bash
  18. Comparing Deno vs Node vs Bun
  19. Trying out (and liking!) MeetingBar for macOS
  20. Converting Celsius to Fahrenheit round-up
  21. Node watch mode and TypeScript
  22. Converting Celsius to Fahrenheit with Rust
  23. Converting Celsius to Fahrenheit with Crystal
  24. Converting Celsius to Fahrenheit with Ruby
  25. Converting Celsius to Fahrenheit with Go
  26. Converting Celsius to Fahrenheit with TypeScript
  27. Converting Celsius to Fahrenheit with Python
  28. In TypeScript, how to combine known and unknown keys to an object
  29. Rate my golf swing (June 2024)
  30. Simple object lookup in TypeScript
  31. Search GitHub issues by title, only
  32. How do you thousands-comma AND whitespace format a f-string in Python
  33. Leibniz formula for π in Python, JavaScript, and Ruby
  34. Notes on porting a Next.js v14 app from Pages to App Router
  35. How to avoid a count query in Django if you can
  36. How to restore all unstaged files in with git
  37. How slow is Node to Brotli decompress a file compared to not having to decompress?

2023 21

  1. Search hidden directories with ripgrep, by default
  2. fnm is much faster than nvm.
  3. Comparing different efforts with WebP in Sharp
  4. Zipping files is appending by default - Watch out!
  5. Introducing hylite - a Node code-syntax-to-HTML highlighter written in Bun
  6. Shallow clone vs. deep clone, in Node, with benchmark
  7. Pip-Outdated.py with interactive upgrade
  8. Parse a CSV file with Bun
  9. Hello-world server in Bun vs Fastify
  10. ts-node vs. esrun vs. esno vs. bun
  11. Switching from Next.js to Vite + wouter
  12. Benchmark comparison of Elasticsearch highlighters
  13. How I used Parcel to "manually" bundle CSS files in a Remix app
  14. Be careful with Date.toLocaleDateString() in JavaScript
  15. How to run a GitHub Action workflow step if a file exists
  16. Automatically 'npm install'
  17. Benchmarking npm install with or without audit
  18. How to intercept and react to non-zero exits in bash
  19. The technology behind You Should Watch
  20. Announcing: You Should Watch
  21. First impressions of Meilisearch and how it compares to Elasticsearch

2022 21

  1. Pip-Outdated.py - a script to compare requirements.in with the output of pip list --outdated
  2. How to change the current query string URL in NextJS v13 with next/navigation
  3. How much faster is Cheerio at parsing depending on xmlMode?
  4. Programmatically control the matrix in a GitHub Action workflow
  5. First impressions trying out Rome to format/lint my TypeScript and JavaScript
  6. How to count the most common lines in a file
  7. Find the largest node_modules directories with bash
  8. Spot the JavaScript bug with recursion and incrementing
  9. Create a large empty file for testing
  10. Programmatically render a NextJS page without a server in Node
  11. Join a list with a bitwise or operator in Python
  12. Comparing compression commands with hyperfine
  13. How to know if a PR has auto-merge enabled in a GitHub Action workflow
  14. Auto-merge GitHub pull requests based on "partial required checks"
  15. How to sort case insensitively with empty strings last in Django
  16. How to close a HTTP GET request in Python before the end
  17. Introducing docsQL
  18. Preemptive grocery shopping list item suggestions
  19. Tips and tricks to make you a GitHub Actions power-user
  20. Make your NextJS site 10-100x faster with Express caching
  21. Command-Enter to submit a form when focus is inside textarea with React (TypeScript)

2021 30

  1. My site's now NextJS - And I (almost) regret it already
  2. Sort a JavaScript array by some boolean operation
  3. Brotli compression quality comparison in the real world
  4. How to string pad a string in Python with a variable
  5. How to bulk-insert Firestore documents in a Firebase Cloud function
  6. I'm a GitHubber now
  7. TypeScript generic async function wrapper function
  8. From photo of ingredients, to your shopping list
  9. TypeScript function keyword arguments like Python
  10. How to use letsencrypt-acme-challenge.conf in Nginx
  11. How I upload Firebase images optimized
  12. 10 years a Mozillian, always a Mozillian
  13. How to fadeIn and fadeOut like jQuery but with Cash
  14. Shut the door! How to automate getting the kids to close the door
  15. How to submit a form with Playwright
  16. How to install Python Poetry in GitHub Actions in MUCH faster way
  17. An effective and immutable way to turn two Python lists into one
  18. How to get all of MDN Web Docs running locally
  19. The correct way to index data into Elasticsearch with (Python) elasticsearch-dsl
  20. What English stop words overlap with JavaScript reserved keywords?
  21. My contribution to 2021 Earth Day: optimizing some bad favicons on MDN Web Docs
  22. How to simulate slow lazy chunk-loading in React
  23. Umlauts (non-ascii characters) with git on macOS
  24. In JavaScript (Node) which is fastest, generator function or a big array function?
  25. How MDN's site-search works
  26. What's lighter than ExpressJS?
  27. The best and simplest way to parse an RSS feed in Node
  28. Sneaky block-scoping variables in JavaScript that eslint can't even detect
  29. useSearchParams as a React global state manager
  30. Fastest way to turn HTML into text in Python

2020 15

  1. Gcm - git checkout master or main
  2. sharp vs. jimp - Node libraries to make thumbnail images
  3. downloadAndResize - Firebase Cloud Function to serve thumbnails
  4. Default food shopping items isn't for everyone
  5. Popularity contest for your grocery list
  6. Generating random avatar images in Django/Python
  7. That's Groce!
  8. Progressive CSS rendering with or without data URLs
  9. Quick comparison between sass and node-sass
  10. Lazy-load Firebase Firestore and Firebase Authentication in Preact
  11. <datalist> looks great on mobile devices
  12. Test if two URLs are "equal" in JavaScript
  13. findMatchesInText - Find line and column of matches in a text, in JavaScript
  14. hashin 0.15.0 now copes nicely with under_scores
  15. ./bin/huey-isnt-running.sh - A bash script to prevent lurking ghosts

2009 1

  1. Oc Python

Undated 1255

  1. Check your email addresses in Python, as a whole
  2. Benchmark compare Highlight.js vs. Prism
  3. Throw JavaScript errors with extra information
  4. How to use minimalcss without a server
  5. How post JSON with curl to an Express app
  6. How I added brotli_static to nginx 1.17 in Ubuntu (Eoan Ermine) 19.10
  7. How to install Node 12 on Ubuntu (Eoan Ermine) 19.10
  8. Build pyenv Python versions on macOS Catalina 10.15
  9. redirect-chain - Getting a comfortable insight input URL redirects history
  10. How to resolve a git conflict in poetry.lock
  11. "ld: library not found for -lssl" trying to install mysqlclient in Python on macOS
  12. Performance of truth checking a JavaScript object
  13. How to pad/fill a string by a variable in Python using f-strings
  14. JavaScript destructuring like Python kwargs with defaults
  15. How depend on a local Node package without npmjs.com
  16. How to have default/initial values in a Django form that is bound and rendered
  17. How to split a block of HTML with Cheerio in NodeJS
  18. A Python and Preact app deployed on Heroku
  19. MDN Documents Size Tree Map
  20. Avoid async when all you have is (SSD) disk I/O in NodeJS
  21. Update to speed comparison for Redis vs PostgreSQL storing blobs of JSON
  22. How much faster is Redis at storing a blob of JSON compared to PostgreSQL?
  23. uwsgi weirdness with --http
  24. Fastest Python function to slugify a string
  25. NodeJS fs walk() or glob or fast-glob
  26. Train your own spell corrector with TextBlob
  27. function expandFiles(directoriesPatternsOrFiles)
  28. A React vs. Preact case study for a widget
  29. Find out all localStorage keys and their value sizes
  30. SongSearch autocomplete rate now 2+ per second
  31. From jQuery to Cash
  32. Build an XML sitemap of XML sitemaps
  33. Generate a random IP address in Python
  34. How I simulate a CDN with Nginx
  35. WebSockets vs. XHR 2019
  36. KeyCDN vs AWS CloudFront
  37. I think I might put my whole site behind a CDN
  38. Whatsdeployed rewritten in React
  39. KeyCDN vs. DigitalOcean Nginx
  40. Optimize inlined SVG on developer.mozilla.org
  41. Best way to count distinct indexed things in PostgreSQL
  42. Format numbers with numberWithCommas() or Number.toLocaleString()
  43. Django ORM optimization story on selecting the least possible
  44. Experimenting with Nginx worker_processes
  45. create-react-app, SCSS, and Bulmaswatch
  46. Optimize DOM selector lookups by pre-warming by selectors' parents
  47. Hooks tip! Avoid infinite recursion in React.useEffect()
  48. Displaying fetch() errors and unwanted responses in React
  49. Format thousands in Python
  50. hashin 0.14.5 and canonical pip hashes
  51. How to encrypt a file with Emacs on macOS (ccrypt)
  52. variable_cache_control - Django view decorator to set max_age in runtime
  53. An example of using Immer to handle nested objects in React state
  54. Use vars() to send an argparse Namespace into a function in Python
  55. Number.prototype.toString() is incredibly useful to display numbers
  56. Concurrent download with hashin without --update-all
  57. elapsed function in bash to print how long things take
  58. How I performance test PostgreSQL locally on macOS
  59. hashin 0.14.0 with --update-all and a bunch of other features
  60. How to JSON schema validate 10x (or 100x) faster in Python
  61. React.memo instead of React.PureComponent
  62. React 16.6 with Suspense and lazy loading components with react-router-dom
  63. How much HTML is too much for optimal web performance
  64. Switching from AWS S3 (boto3) to Google Cloud Storage (google-cloud-storage) in Python
  65. Fancy linkifying of text with Bleach and domain checks (with Python)
  66. The ideal number of workers in Jest
  67. Inline scripts in create-react-app 2.0 and CSP hashes
  68. An awesome snippet to web performance test a page programmatically
  69. Comparing KeyCDN and DigitalOcean's new Spaces CDN
  70. Merge two arrays without duplicates in JavaScript
  71. A darn good search filter function in JavaScript
  72. Replace an item in an array, by number, without mutation in JavaScript (ES6)
  73. django-pipeline and Zopfli
  74. Django lock decorator with django-redis
  75. django-html-validator now supports Django 2.x
  76. Quick dog-piling (aka stampeding herd) URL stresstest
  77. HTMLMinifier in use on this blog now
  78. To defer or to async JavaScript tags. That's the question.
  79. A good Django view function cache decorator for http.JsonResponse
  80. The best grep tool in the world; ripgrep
  81. How to unset aliases set by Oh My Zsh
  82. How to NOT start two servers on the same port
  83. GeneratorExit - How to clean up after the last yield in Python
  84. Writing a custom Datadog reporter using the Python API
  85. To CDN assets or just HTTP/2
  86. Rust > Go > Python ...to parse millions of dates in CSV files
  87. Webpack Bundle Analyzer for create-react-app
  88. Always return namespaces in Django REST Framework
  89. How I found out where a bash alias was set up
  90. Real minimal example of going from setState to MobX
  91. gtop is best
  92. Fastest Python datetime parser
  93. The impressive first-meaningful-paint improvement of using minimalcss
  94. Best EXPLAIN ANALYZE benchmark script
  95. Efficient many-to-many field lookup in Django REST Framework
  96. hashin 0.12.0 is much much faster
  97. Worlds simplest web scraper bot in Python
  98. filterToQueryString - JavaScript function to turn current filter into a query string
  99. Now using minimalcss
  100. Docker gotcha with building a Dockerfile in sub directory
  101. How to throttle AND debounce an autocomplete input in React
  102. csso and django-pipeline
  103. Items function in JavaScript for looping over dictionaries like Python
  104. Run something forever in bash until you want to stop it
  105. Be very careful with your add_header in Nginx! You might make your site insecure
  106. Show size of every PostgreSQL database you have
  107. Component, component function or plain function in React
  108. Convert web page to PDF, nicely
  109. Fastest way to unzip a zip file in Python
  110. Make .local domains NOT slow in macOS
  111. Even more aggressively trying to preload your next page load
  112. minimalcss 0.6.2 now strips all unused font faces
  113. Conditional aggregation in Django 2.0
  114. When Docker is too slow, use your host
  115. Understanding Redis hash-max-ziplist-entries
  116. Display current React version
  117. Whatsdeployed facelift
  118. How to rotate a video on OSX with ffmpeg
  119. Fastest way to uniquify a list in Python >=3.6
  120. CSS selector simplifier regular expression in JavaScript
  121. Msgpack vs JSON (with gzip)
  122. Another win for Tracking Protection in Firefox
  123. How's My WiFi?
  124. Really simple Django view function timer decorator
  125. Synonyms with elasticsearch-dsl
  126. Unzip benchmark on AWS EC2 c3.large vs c4.large
  127. How to create-react-app with Docker
  128. Yet another Docker 'A ha!' moment
  129. How to use django-cache-memoize
  130. To enable Tracking Protection for performance
  131. django-cache-memoize
  132. Concurrent Gzip in Python
  133. Simple or fancy UPSERT in PostgreSQL with Django
  134. "No space left on device" on OSX Docker
  135. cache_memoize - a pretty decent cache decorator for Django
  136. Mozilla Symbol Server (aka. Tecken) load testing
  137. A neat trick to zip a git repo with a version number
  138. Ultrafast loading of CSS
  139. Fastest way to match a filename's extension in Python
  140. React lifecycle hooks must-have
  141. Fastest *local* cache backend possible for Django
  142. Find static files defined in django-pipeline but not found
  143. Why I'm ditching AdBuff on Songsear.ch
  144. Best YouTube Chefs of 2017
  145. How to do performance micro benchmarks in Python
  146. Fastest way to find out if a file exists in S3 (with boto3)
  147. Why didn't I know about machma?!
  148. Experimenting with Guetzli
  149. Fastest Redis configuration for Django
  150. Web Console trick to get all URLs into your clipboard
  151. Best practice with retries with requests
  152. Public Class Fields saves sooo many keystrokes in React code
  153. A decent Elasticsearch search engine implementation
  154. Fastest cache backend possible for Django
  155. Fastest way to download a file from S3
  156. More CSS load performance experiments (of a React app)
  157. Web Performance Optimization of a Single-Page-App and web fonts
  158. Don't forget your sets in Python!
  159. crontabber now supports locking, both high- and low-level
  160. Podcasttime.io - How Much Time Do Your Podcasts Take To Listen To?
  161. Autocompeter is Dead. Long live Autocompeter!
  162. ElasticSearch 5 in Travis-CI
  163. 10 Reasons I Love create-react-app
  164. Using Fanout.io in Django
  165. Cope with JSONDecodeError in requests.get().json() in Python 2 and 3
  166. How to deploy a create-react-app
  167. Optimization of QuerySet.get() with or without select_related
  168. Django test optimization with no-op PIL engine
  169. hashin 0.7.0 and multiple packages
  170. django-html-validator - now locally, fast!
  171. How to identify/classify what language a piece of text is
  172. json-schema-reducer
  173. Premailer 3.0.0 - classes kept by default
  174. CSS Bloat Comparison
  175. hashin 0.5.0 bug fix
  176. Time to do concurrent CPU bound work
  177. Decorated Concurrency - Python multiprocessing made really really easy
  178. gg - A prototype to rule Git, GitHub and Bugzilla
  179. How to track Google Analytics pageviews on non-web requests (with Python)
  180. .git/info/exclude, .gitignore and ~/.gitignore_global
  181. Don't that this or bind
  182. 4 different kinds of React component styles
  183. Web performance optimization's dark side
  184. Ctags in Atom on OSX
  185. Whatsdeployed on only one site
  186. How to no-mincss links with django-pipeline
  187. Bestest and securest way to handle Python dependencies
  188. A quicksearch for Bugzilla using Autocompeter
  189. hashin - a replacement for peepin
  190. How I installed letsencrypt for Nginx
  191. Best Atom packages of 2015
  192. Advanced Closure Compiler vs UglifyJS2
  193. Select all relations in PostgreSQL
  194. Headsupper.io
  195. Django forms and making datetime inputs localized
  196. Screenshot-sharing performance comparison
  197. Whatsdeployed
  198. Chainable catches in a JavaScript promise
  199. Weight of your PostgreSQL tables "lumped together"
  200. How to "onchange" in ReactJS
  201. And bash basics
  202. mozjpeg installation and sample
  203. localStorage is not async, but it's FAST!
  204. django-pipeline + django-jinja
  205. Using Lovefield as an AJAX proxy maybe
  206. Panasonic Lumix from 2008 or a iPhone 5S from 2014
  207. ElasticSearch, snowball analyzer and stop words
  208. django-semanticui-form
  209. peepin - a great companion to peep
  210. Be careful with using dict() to create a copy
  211. Examples of mozjpeg savings
  212. Crash-stats just became a whole lot faster
  213. How to test if gzip is working on your site or app
  214. Introducing optisorl
  215. News sites suck in terms of performance
  216. Worst performing website of the year
  217. Some tips on learning React
  218. How to log ALL PostgreSQL SQL happening
  219. Visual speed comparison of AngularJS and ReactJS
  220. Premailer.io
  221. Find what indentation your files use
  222. How I git
  223. Python slow-down of exception handling or condition checking
  224. premailer 2.9.0 and new rules for `base_url`
  225. Use closure for your Django context processors
  226. Using lazy loading images on Air Mozilla
  227. AngularJS $q notify and resolve as a local GET proxy
  228. Benchmarking Autocompeter
  229. Match the whole word in auto complete maybe
  230. gulp-header is the best!
  231. Autocompeter 1.1.8 and smooth typing
  232. Autocompeter.com
  233. Bye bye httpretty. Welcome back good old mock!
  234. How to slice a rune in Go
  235. Air Mozilla on Roku
  236. Newsletters I enjoy for work
  237. Median size of Javascript libs on jsDelivr
  238. Best non-cryptographic hashing function in Python (size and speed)
  239. My favorite Go multiplexer
  240. Almost premature optimization
  241. AJAX or not
  242. Fastest way to take screencaps out of videos
  243. One-way data bindings in AngularJS 1.3
  244. vipsthumbnail
  245. To then() or to success() in AngularJS
  246. A "perma search" in AngularJS
  247. Why is it important to escape & in href attributes in tags?
  248. God, No! by Penn Jillette
  249. Bye bye AWS EC2, Hello Digital Ocean
  250. uwsgi and uid
  251. Shout-out to eventlog
  252. Go vs. Python
  253. localForage vs. XHR
  254. django-html-validator
  255. Premailer on Python 3
  256. Do you curl a lot to check headers?
  257. An AngularJS directive with itself as the attribute
  258. set -ex - The most useful bash trick of the year
  259. Highlighted code syntax in Keynote
  260. How I back up all my photos on S3 via Dropbox
  261. premailer now with 100% test coverage
  262. Aggressively prefetching everything you might click
  263. Gzip rules the world of optimization, often
  264. Common names amongst my Facebook friends
  265. Crontabber
  266. Optimizing MozTrap
  267. HTML Tree on Hacker News
  268. Migration of Postgres 9.2 to 9.3 with Homebrew and json_enhancements
  269. Do you like angular-classy?
  270. GitHub PR triage across multiple projects
  271. Wattvision - real-time energy monitoring
  272. Grymt - because I didn't invent Grunt here
  273. COPYFILE_DISABLE and python distutils in python 2.6
  274. Buggy - A sexy Bugzilla offline webapp
  275. My favorite YouTube channels
  276. Github Pull Request Triage tool
  277. Moby Dick (by Herman Melville)
  278. What's the average number of domains a website depends on?
  279. Advanced live-search with AngularJS
  280. Sorting mixed type lists in Python 3
  281. How I do deployments
  282. Wish List Granted on Hacker News report
  283. Welcome to the world, Wish List Granted
  284. Credit Card formatter in Javascript
  285. A Django base class for all your Forms
  286. From Postgres to JSON strings
  287. All my apps are now running on one EC2 server
  288. Lazy loading below the fold
  289. Fastest database for Tornado
  290. 10 years of blogging
  291. In Python you sort with a tuple
  292. premailer now excludes pseudo selectors by default
  293. What stumped me about AngularJS
  294. Registration and sign-in by email verification
  295. The Poincaré Conjecture
  296. Local jed settings
  297. Careful with your assertRaises() and inheritance of exceptions
  298. Recruiters: if you're going to lie, do it properly
  299. "Did you mean this domain?" Auto-correction for the browser's address bar
  300. Never put external Javascript in the <head>
  301. premailer now honours specificity
  302. HTML whitespace "compression" - don't bother!
  303. django-fancy-cache with or without stats
  304. This site is now 100% inline CSS and no bytes are wasted
  305. Welcome to the world django-fancy-cache!
  306. mincss version 0.8 is much much faster
  307. mincss now support PhantomJS
  308. mincss in action - sample report from the wild
  309. mincss "Clears the junk out of your CSS"
  310. Free business idea: An app for figuring out the best car for you
  311. All your images are belong to data uris
  312. Gamification for me as a software developer
  313. My new web marketing strategy: Begging
  314. Introducing: HUGEpic - a web app for showing massive pictures
  315. Fastest way to thousands-commafy large numbers in Python/PyPy
  316. hastebinit - quickly paste snippets into hastebin.com
  317. How I stopped worrying about IO blocking Tornado
  318. Introducing: League of Friends on Around The World
  319. Real-timify Django with SockJS
  320. django-mongokit now compatible with Django 1.4
  321. US License Plate Spotter (part 2)
  322. Beach volleyball bums
  323. Is Nginx obsolete now that we have Amazon CloudFront?
  324. How to use premailer as a command line script
  325. US License Plate Spotter (part 1)
  326. Newfound love of @staticmethod in Python
  327. Difference between $.data('foo') and $.attr('data-foo') in jQuery
  328. How I deal with deferred image loading in Javascript
  329. Postgres collation errors on CITEXT fields when upgrading to 9.1
  330. Secs sell! How I cache my entire pages (server-side)
  331. On the command line no one can hear you screen. Or can they?
  332. Are WebSockets faster than AJAX? ...with latency in mind?
  333. I'm running pgFouine right now on my server
  334. Secs sell! How frickin' fast this site is! (server side)
  335. Secs sell! How frickin' fast this site is! (client side)
  336. IssueTrackerProduct now officially abandoned
  337. How much faster is Nginx+gunicorn than Apache+mod_wsgi?
  338. String length truncation optimization difference in Python
  339. When to __deepcopy__ classes in Python
  340. Persistent caching with fire-and-forget updates
  341. Cryptic errors when using django-nose
  342. Python file with closing automatically
  343. Integrate BrowserID in a Tornado web app
  344. Trivial but powerful tips for nosetests
  345. Going real simple on HTML5 audio
  346. New feature on Too Cool For Me: Everyone I follow
  347. Cateechee golf pictures
  348. Too Cool For Me?
  349. Goodies from tornado-utils - part 3: send_mail
  350. Goodies from tornado-utils - part 2: tornado_static
  351. Goodies from tornado-utils - part 1: TestClient
  352. Reciprocal lesson about gender perspectives
  353. Title - a javascript snippet to control the document title
  354. EmailInput HTML5 friendly for Django
  355. A blog comment spam solution: Retalition!
  356. A taste of the Django on inside Mozilla, Sheriffs Duty
  357. Comparing Google Closure with UglifyJS
  358. Slides about Kwissle from yesterdays London Python Dojo
  359. Chinese tea sampler pack now on sale
  360. Optimization story involving something silly I call "dict+"
  361. Launching Kwissle.com
  362. Google teething problems still with duplicated content
  363. Test static resources in Django tests
  364. A script tag's type in HTML5
  365. maxlength_countdown() - a useful jQuery plugin for showing characters left
  366. Mocking DBRefs in Mongoose and nodeunit
  367. TornadoGists.org - launched and ready!
  368. Strange socket related error with supervisord
  369. Google's new Page Speed Online hard to beat
  370. Bash tip of the day: ff
  371. My AWS CloudFront bill
  372. MongoUK 2011 - London conference all about MongoDB
  373. QUnit testing my jQuery Mobile site in full swing
  374. More productive than Lisp? Really??!
  375. To all Zope developers: Does this sound familiar?
  376. I just ordered tea from the Min River Tea Farm
  377. Eloquent Javascript by Marijn Haverbeke
  378. Connecting with psycopg2 without a username and password
  379. Optimization of getting random rows out of a PostgreSQL in Django
  380. Nice testimonial about django-static
  381. How I profile my Nginx + proxy pass server
  382. DoneCal homepage now able to do 10,000 requests/second
  383. EditDistanceMatcher - NodeJS script for doing edit distance 1 matching
  384. DoneCal on MumbaiMirror
  385. DoneCal.com international visitors
  386. Fastest "boolean SQL queries" possible with Django
  387. django-static version 1.5 automatically taking care of imported CSS
  388. RequireJS versus HeadJS
  389. ToDo apps I gave up on in 2010
  390. ssl_session_cache in Nginx and the ab benchmark
  391. Speed of DoneCal API (over 1,400 request/sec) and HTTPS (less than 100 request/sec)
  392. To code or to pdb in Python
  393. Page here about DoneCal
  394. DoneCal gets a grade A (92)
  395. Gmail tip: Searching only for attachments
  396. Welcome to the world: DoneCal.com
  397. jsonpprint - a Python script to format JSON data nicely
  398. How to book a ticket on the Royal Academy of Music's website
  399. Worst Flash site of the year 2010
  400. Javascript tip: nifty use of the console.log function in Firebug
  401. In Django, how much faster is it to aggregate?
  402. How I made my MongoDB based web app 10 times faster
  403. Why I gave up on JQuery UI's autocomplete
  404. Nasty JavaScript wart (or rather, don't take shortcuts)
  405. My tricks for using AsyncHTTPClient in Tornado
  406. Local Django development with Nginx
  407. In jQuery, using the :visible selector can be dangerous
  408. wkhtmltopdf and font size shrinkage
  409. I just discovered wikiHow
  410. Local NodeJS development environment with Nginx
  411. Musings about django.contrib.auth.models.User
  412. Where I live
  413. Hosting Django static images with Amazon Cloudfront (CDN) using django-static
  414. People's reactions to Gates and Buffet's $600 billion challenge
  415. TfL Traffic cameras on a Google map
  416. Correction: running Django tests with MongoDB is NOT slow
  417. Muted conversations in Gmail
  418. "Using MongoDB in your Django app - implications and benefits"
  419. mongoengine vs. django-mongokit
  420. More on What is "pythonic"
  421. Review: Django 1.1 Testing and Debugging
  422. Making output stay on stdout
  423. Upgrading to Ubuntu Lucid Lynx and downgrading to Python2.4 and Python2.5
  424. Fish - most important Python package since distutils
  425. My site on the iPad
  426. GlobalExpense doesn't work in Firefox
  427. Spelling differences between British and American English
  428. OpenID, Attribute Exchange, SReg, python-openid and Google
  429. Word Whomp solvers love Crosstips
  430. UPPER vs. ILIKE
  431. Who was logged in during a Django exception
  432. fcgi vs. gunicorn vs. uWSGI
  433. Cycling across England on Orange Snapshot
  434. The awesomest way possible to serve your static stuff in Django with Nginx
  435. Beautiful photos from the Katrina hurricane
  436. Speed test between django_mongokit and postgresql_psycopg2
  437. How and why to use django-mongokit (aka. Django to MongoDB)
  438. Ubuntu Cola or Ubuntu Linux
  439. Importance of public URLs and how enterprisecarsales.com gets it wrong
  440. How girls/guys rate guys/girls
  441. Looking for icons?
  442. Last.fm Tube Tags
  443. Haiti Earthquake: Who's given what?
  444. Healing Food Reference
  445. Guake, not Yakuake or Yeahconsole
  446. oplop - How Oplop works, explained in plain English and in technical detail
  447. Tip: creating a Xapian database in Python
  448. Bookmarklet to replace the current domain with localhost:8000
  449. LastGraph - visualizing your Last.fm usage
  450. China wrecked the Copenhagen deal
  451. Migrating with South on a field that uses auto_now_add=True
  452. Homer Simpson playing Cry of the Black Birds by Amon Amarth
  453. Orphaned Land - Jewish Muslim Metal
  454. Comparing YUI Compressor and slimmer
  455. Those Crazy Chinese
  456. Mocking os.stat in Python
  457. "Frank Zappa: The Biography" by Barry Miles
  458. iPhone push notifications for Twitter with Prowl
  459. What makes my website slow? DNS
  460. What I hate about PIL and Image in Python
  461. Messed up columns in Django Admin
  462. Automatically strip whitespace in Django forms
  463. A user-friendly TinyMCE config
  464. Funnier than Fail Blog: Fail Dogs
  465. London Frock Exchange launched
  466. My first Twitter app - KungFuPeople.com
  467. Comparing jsmin and slimmer
  468. Python Code Dojo London - 17 Sep 2009
  469. "Hello John. It's Gordon Brown."
  470. 7 of the World's Most Irresponsible Companies
  471. Cgunit - Online Gallery
  472. To sub-select or not sub-select in PostgreSQL
  473. Custom CacheMiddleware that tells Javascript a page is cached in Django
  474. What a super user-friendly menu!
  475. Table Of Countries Showing Drive Direction
  476. The Secret to SEO Search Engine Optimization
  477. Calling all kung fu people - kungfupeople.com
  478. Google Reverse Geocoding vs. GeoNames
  479. gg - wrapping git-grep
  480. Public calendars on Google Calendar
  481. More optimization of Peterbe.com - CSS sprites
  482. The 4-hour Work Week by Timothy Ferris
  483. Battery life usage on an iPhone 3G(S)
  484. gorun.py - Using (py)inotify to run commands when files change
  485. Getting uploadify to work
  486. setuptools usability - not good, what can be done?
  487. premailer.py - Transform CSS into line style attributes with lxml.html
  488. My first iPhone web app - Crosstips iPhone interface
  489. My dislike for booleans and that impact on the Django Admin
  490. Introducing django-spellcorrector
  491. Crossing the world - new feature on Crosstips
  492. Sequences in PostgreSQL and rolling back transactions
  493. Most unusual letters in English language
  494. To JSON, Pickle or Marshal in Python
  495. Never seen before Google Server Error
  496. Lizard walk charity for the Claremont project
  497. Crosstips now has sparklines
  498. mailto: considered stupid, especially with ?subject
  499. Git + Twitter = Friedcode
  500. Lesson learned: Unicodifying request variables in Zope
  501. Fujitsu FLEPia
  502. TypeRacer Best online game in years
  503. Google Calendar, iCalendar Validator but not bloody Apple iCal
  504. Simple interface for Crosstips
  505. Shit trailer, awesome way to show it
  506. Head-to-head movie voting
  507. British or American English or just English
  508. Nginx vs. Squid
  509. Too much Python makes Peter a shit Javascript developer
  510. Sandisk SSD v/s HDD
  511. To $('#foo p') or to $('p', $('#foo'))
  512. Propeller Island City Lodge Orange Room
  513. Founder of Islamic TV station accused of beheading wife
  514. To assert or assertEqual in Python unit testing
  515. Female body builder picture galore
  516. Tough Guy Challenge 2009 - Boston.com
  517. The Albion, Shoreditch
  518. How I Made a 1,474-Megapixel Photo
  519. Acupuncture works for headaches
  520. Rock stars and their parents
  521. Nasty surprise of Django and gettext
  522. Formatting numeric amounts in Javascript
  523. Earth, observed - The Big Picture - Boston.com
  524. Hellsongs
  525. Does Semen Have Antidepressant Properties?
  526. Secrets of success from Google co-founder Larry Page
  527. The Big Storm Picture: November 2008
  528. The Jesus story - A serious case of plagiarism
  529. Ultimate Banksy Art & Graffiti Gallery | WebUrbanist
  530. "Confused and scared"
  531. Round trip with Endeavour - The Big Picture - Boston.com
  532. WUBeee!
  533. Obesity Not Just an American Problem Anymore | Newsweek Health | Newsweek.com
  534. YouTube - Nigella's XXXmas
  535. Towel dog
  536. My first YSlow Grade A (100)!
  537. All My Internet Friends
  538. Wing IDE versus Jed
  539. Nasty surprise of Django cache
  540. bool is instance of int in Python
  541. Finally got rid of the system beep
  542. domstripper - A lxml.html test project
  543. How to unit test the innards of a Django view function
  544. Why do you vote for the democrats?
  545. Comic-Con 2008 photos
  546. Django vs. Java
  547. Flash advert hell
  548. World Plone Day here in London, England
  549. ARTWORDSBOOKSHOPQRSTUVWXYZ
  550. Why bother with MySQL...
  551. When '_properties' gets stuck as a persistent attribute
  552. V8 < TraceMonkey < SquirrelFish
  553. The importance of env (and how it works with virtualenv)
  554. The stupidity of 'id' as a variable name (or stupidity of me)
  555. Why we like Obama, short answer: his speeches
  556. Accessible UK Train Timetable
  557. Kalle Kappner - Opeth and Pain of Salvation piano tribute
  558. Weird Asia News
  559. Anti-McCain propaganda videos
  560. That should last a couple of weeks
  561. Python new-style classes and the super() function
  562. Use Javascript to prevent spambots
  563. The importance of checking in Firefox
  564. A great thing about Squid: Calamaris
  565. Interview with Varg Vikernes
  566. WestIsEast.co.uk launched
  567. Another brownie point for Django
  568. Difference between Sweden and UK: renewable energy
  569. Damn lies and benchmark comparing Apache and Nginx
  570. zope-memory-readings - Tracking Zope2's memory usage by URL
  571. split_search() - A Python functional for advanced search applications
  572. The importance of the TITLE attribute
  573. What I like and dislike about Grok
  574. Mixing in new-style classes in Zope 2.7
  575. pwdf - a mix of ls and pwd
  576. Lesson learnt with creating DOM element with jQuery
  577. One thing I hate about Linux: cron
  578. How to uninstall nginx with apt
  579. Tip: Printer friendly pages with Page Templates in Zope
  580. apple.com/store doesn't work in Firefox (on Linux)
  581. Mocking a Python standard library
  582. See you at PyCon 2008
  583. File check before delete
  584. "Confessions of a College Callgirl" is the new "My Secret Life As A Prostitute"
  585. hostip.info - Look up the location from an IP
  586. CommandLineApp by Doug Hellmann
  587. If Americans knew - An interesting insight into the Israeli Palestine conflict
  588. Chinese New Year and the Persecution of Falun Gong in China
  589. logrotating all my Zope event logs
  590. Ocado gets customer service right
  591. Why Django and Grok matters
  592. The Official Dilbert Widget
  593. "lost my phone :("
  594. Ugliest e-commerce site of the month - Comfy-Feet
  595. input/textarea switcher with jQuery
  596. jQuery and Highslide JS
  597. The Love Mattress
  598. EditArea vs. CodePress
  599. String comparison function in Python (alpha)
  600. isArithmeticExpression() in Javascript
  601. Calculator in Python for dummies
  602. T-Mobile MMS collection
  603. WSSE Authentication and Apache
  604. geopy distance calculation pitfall
  605. Kill Ugly Radio - A Frank Zappa blog
  606. Photos from Fuzhou 2007
  607. Futurama is back!
  608. Note to self about Jeditable
  609. Back from Fuzhou, China
  610. Now I'm on Last.fm
  611. DateIndex in Zope doesn't have indexed attributes
  612. Piteå, as experienced by Sam Dunstan
  613. Islington Kungfu charity fund raiser 2007
  614. Bicycle racing in NYC
  615. Silk icons
  616. Future of Web Apps (quick summary and thoughts)
  617. Linux tip: du --max-depth=1
  618. Spellcorrector 0.2
  619. Ugliest site of the month - The Backyard Comedy Club
  620. Vertically expanding textarea input boxes
  621. Nasty human error in Zope ZEO setup
  622. Fun Python error message
  623. What art is ...according to Don Van Vliet
  624. Not just the bikini event
  625. Proud to be a Swedish atheist
  626. Printer usability problem
  627. rfc822() vs. rfc1123_date()
  628. html2plaintext Python script to convert HTML emails to plain text
  629. YSlow grade A (96) but not with doubts
  630. Interesting lesson learnt on shortcut taking in usability
  631. XML header and childNodes
  632. How did Google do that?
  633. Worst gigolo sales pitch ever
  634. I'm not a hacker
  635. Mac OS X's python binary icons
  636. iPhones review on WSJ
  637. Internet Radio - Day of Silence
  638. Optional input labels
  639. FacebookStatusUpdater
  640. <button> not supported on Pocket IE
  641. Playing with filestream_iterator
  642. American foreign policy
  643. Time in the Stone - Emily Young exhibition
  644. Cutest server error message ever
  645. No, I'm not going to freeze your account
  646. Miami Vice party photos
  647. What does $456 billion buy?
  648. I'm Prolog
  649. Guess my age with MOBi
  650. Spellcorrector
  651. Albert Einstein figurine head
  652. What's the fattest Subway sandwich?
  653. ZYB - crap name, brilliant app
  654. Is peanut butter the proof that evolution doesn't happen?
  655. Learning about ATFolder's security
  656. Associative arrays
  657. Zope Image to filesystem image
  658. Earl Grey or cheap tea, does it really matter?
  659. Kung fu in Twickenham
  660. Aussies in London - What are you doing here?
  661. JetBlue a good and bad website
  662. Sedo.com - any good?
  663. favicon2dots
  664. Vista voice recognition and Perl
  665. Comparing REAL values in PostgreSQL
  666. A Flash interface that doesn't suck
  667. Gzip and Slimmer optimization anecdote
  668. Canon and Sony Ericsson rule Flickr
  669. New Google Groups design
  670. Ugliest site of the month - CSDC
  671. RememberYourFriends.com running jQuery
  672. Best youtube.com clip of the year?
  673. Mesmerizing pencil art
  674. Flash 9 on Ubuntu Edgy Eft
  675. setAttribute('style', ...) workaround for IE
  676. Thuas Trägubbar
  677. Find largest directories with du -k
  678. Happy Birthday to me!
  679. ImageMagick conversion comparison
  680. CSS selector bug in IE?
  681. is is not the same as equal in Python
  682. Solar power in the north African desert
  683. MUnderscorePatch - tired of typing manage_main?
  684. Entering multilanguage data in Zope
  685. Bloggers not responsible for comment?
  686. Food File Online
  687. Crazy road in China
  688. Memory dump blog recovery
  689. Oxfordtube's website sucks
  690. Sending HTML emails in Zope
  691. Catching a carriage return in bash
  692. New domain name
  693. Ricardo Semler in London
  694. Lion + Tiger = Liger
  695. NES Quiz
  696. Zope 3 training blog
  697. Crazy Egg of IssueTrackerProduct.com
  698. Comparing Ruby and PHP
  699. I knew it! You don't have to drink that much water
  700. Bill O'Reilly nailed
  701. Why did RememberYourFriends fail?
  702. Google London Automation Test conference (part II)
  703. Google London Automation Test conference
  704. Steve Irwin (crocodile hunter) dead
  705. Redirect stderr into becoming dots in Bash
  706. Web 2.0 logo generator
  707. Madonna's birthday party at the Lounge Lover
  708. Fastest way to uniqify a list in Python
  709. Unicode strings to ASCII ...nicely
  710. More crappy album covers
  711. Sorting transform function in PostgreSQL
  712. Exploding Dell laptops
  713. slim in ruby
  714. slim, a new free web service for white space optimisation
  715. Spaceinvaders with real people
  716. Trout Mask Replica - Captain Beefheart
  717. Nice stats added to RememberYourFriends.com
  718. GMapEZ - Google Maps API too complicated for you?
  719. Oil, gas and stupidity
  720. Desired Firefox extension
  721. DifferenceFinder (aka. humanreadablediff.py)
  722. RememberYourFriends.com beta version
  723. Brick Lane market
  724. Tekken with Actual Humans
  725. Wanna be my flatmate?
  726. Pleonasm
  727. Animator vs. Animation
  728. TinyMCE + Zope = ZTinyMCE
  729. Weird spam? Or just a weird girl?
  730. Geeking with tags file for Jed
  731. isInt() JavaScript function
  732. SVN + ./todo + crontab
  733. Pixoh.com and Instant Domain Search
  734. Watford kung fu club
  735. Mobile-review.com
  736. Private functions in Javascript?
  737. type - Writing shell scripts
  738. Helpdeskshow - a quick review
  739. Interesting float/int casting in Python
  740. Best bicycle locks
  741. Date formatting in Python or in PostgreSQL (part II)
  742. Careful when dealing with options in IE
  743. Case insensitive list remove call (part II)
  744. Case insensitive list remove call
  745. Shark kayak
  746. Merrill Lynch's f**ked up website
  747. Teach me about OCR
  748. To br / or not to br/
  749. Annoying Safari just ate my blog
  750. Kung fu in East London with Shkar
  751. Carbon XEmacs installed
  752. Quick PostgreSQL optimization story
  753. Squeezebox + Pandora
  754. parentElementsByTagName(doc, tagname, classname)
  755. tightVNC and Chicken of the VNC
  756. Why Linux is better
  757. Martial Arts by Pen Rance
  758. Apple Store or Micro Anvika
  759. Dynamic image replacement technique
  760. Google and Python code
  761. CSSViewer - new promising Firefox Extension
  762. waiting for your guidance
  763. How to fold t-shirts, with a "machine"
  764. Jed Tags with ntags (for dummies)
  765. Geeking with Eterm and Tkinter
  766. tempfile in Python standard library
  767. Sexy furniture
  768. Size comparison of Zope3, Django and TurboGears
  769. Setting security declarations to Zope classes
  770. ReCSS a tool to reload the CSS without reloading the whole page
  771. Northern light photos
  772. Photos from FWC China 2005
  773. IssueTrackerProduct featured on Ajaxian.com
  774. Bad spelling a good thing?
  775. Are you a web developer? Then VisiBone is for you
  776. Who do you ping?
  777. Hasselblad's 39 megapixel digital camera
  778. Strange language bug in Windows XP
  779. An idea for a better timesheet tracker
  780. My new years resolution 2006
  781. Don't put title in a <link> tag
  782. Ask Yahoo "What state do the Simpsons live in?"
  783. Back from China
  784. Off to holiday in China
  785. Emacs on the Palm OS
  786. Geek entrepreneurs' reading list
  787. ALTER TABLE patch
  788. iWipe - toilet paper and a Mac
  789. have or has?
  790. DOM Scripting
  791. "Groups" search on Google
  792. CSS code of del.icio.us
  793. Yahoo! Inbound Links API
  794. The Search Engine Experiment
  795. Islington Knuckle Walk
  796. Mvbackupfiles - a script to "delete" back autosaved backup files
  797. createElement('a') with a javascript href
  798. Major performance fix on file searches
  799. Old School Kung Fu
  800. Filename splitter
  801. Pandora Update
  802. MyMcDiet.com Kevin O'Connor's fast food diet
  803. "Clever" date formatting accessibility
  804. Active Reactor watches
  805. Screencasting the unix way with Python
  806. Screencasting test
  807. Whitelist blacklist logic
  808. www aliases set up
  809. Using MD5 to check equality between files
  810. Shane's Bit Mountain
  811. Pandora (followup) Neat error messaging
  812. Pandora - a great Internet radio
  813. "Increment numbers in a string"
  814. Playing with Reverend Bayesian
  815. Furious and deprived by 'rm *'
  816. table-layout: fixed
  817. Dream: python bindings for squidclient
  818. Best Image Replacement Technique guide
  819. Gmail catching up with the IssueTrackerProduct
  820. Wanted: good Javascript for handling key events
  821. Toggle Zope's debug mode
  822. Jed looking like Emacs
  823. R.I.P Palm Treo
  824. Pimp my COREBlog
  825. Ruby and Python benchmarked
  826. Smurl from Python
  827. Python regular expression tester
  828. 'Cache-Control' or Expires
  829. Misstake or hidden Nazi message?
  830. firstChild.nodeValue vs. innerHTML
  831. Announcing Smurl - a free URL compressor
  832. Amazon bug in shopping basket
  833. Random ID generator for Zope
  834. British English for Americans
  835. More street 3D drawings
  836. Insect photography
  837. An ideal company blog tool
  838. Back from Djerba, Tunisia
  839. Ricardo Semler's Semco English website
  840. Dream Theater - Octavarium
  841. Button tag in bloody Internet Explorer
  842. Worst album covers (updated)
  843. Jealous of Google stemming
  844. AJAX seach on 404 error pages
  845. Just Oracle and IBM?
  846. Release package file size
  847. \B in Python regular expressions
  848. London bus 26 from Hackney
  849. Interesting NHS error message
  850. Kung Fu in Clapham with Richard
  851. SmartDict - a smart 'dict' wrapper
  852. Rent a chest
  853. Drop down selects that learn
  854. Unaffected by the London blasts
  855. Lisp compared to Python
  856. Falling mannequin animation
  857. Module dependencies of IssueTracker.py
  858. ztar - my wrapper on tar -z
  859. Zope in DevelopmentMode
  860. AJAX accelerated web widgets
  861. Zope compared to PHP
  862. Software Patents in the EU (Stallman's explaination)
  863. Authentic Locations
  864. Regular Expressions in Javascript cheat sheet
  865. Scandinavian Airlines phone booking
  866. \b in Python regular expressions
  867. My trade salary has gone down, apparently
  868. chmod files differently to directories
  869. Good design examples for a non-blog
  870. window.onload from before
  871. I'm back! Peterbe.com has been renewed
  872. Sound of different languages
  873. Kittenwar a clever way of voting
  874. Cheeky Explore (Dictionary of Everything)
  875. The Brick Testament
  876. MOBi phonebook into Excel
  877. Plone.org calls it Issue Tracker
  878. Susan Senator's book
  879. List of casts in PostgreSQL
  880. Kingdom of Crap
  881. London Review of Personals
  882. Jacobian highlighter
  883. Better select boxes for issue tracker
  884. The Geeks Revenge
  885. TAL here hack in Plone
  886. Gmail shortcuts
  887. Grep results expanded
  888. Serious flaw in Bose headphones
  889. pg_class to check if table exists
  890. Google blogs about their Maps
  891. "Can you help me about ZOPE?"
  892. Noise reduction headphones
  893. Interior Octopus
  894. Find print statements in Python code
  895. Your webpage in Lynx
  896. Control comment spam
  897. Python Cookbook arrived
  898. callable Python objects
  899. Ugly one-liner to debug an object in Zope
  900. Searching for the obvious
  901. More amazing sidewalk art
  902. Read in passwords with bash
  903. Add links to a text (take III)
  904. U.S. memory championship
  905. Fork Art, up yours Uri Geller
  906. Adminspotting t-shirts
  907. Best Hubbles Space Telescope Images
  908. Swedish holidays explained
  909. All the Seinfeld quotes you can eat
  910. Good usage of drop-downs
  911. Suspend and resume output in terminal
  912. Encrypted files in Emacs
  913. File attachment widget with Javascript
  914. BaconWhores ha!
  915. Audioscrobbler indexes your MP3 usage
  916. Debian popular in Sweden
  917. Optimize Plone.org with slimmer.py
  918. Python optimization anecdote
  919. Gmail account giveaway
  920. Combining MOBi and EconoAccount
  921. How to deal with tele-marketing calls
  922. Good posture website
  923. "Snowy Tribute to Calvin & Hobbes"
  924. Top movie deaths
  925. Google Video (beta)
  926. Google is blind
  927. niceboolean() - converts what you say to what you mean
  928. parametrize_url() adding parameters to URLs
  929. Gmail spam filter
  930. My favorite CSS Zen Garden design
  931. Running simple SQL commands on the command line
  932. Valuble site: Commonly Confused Characters
  933. Infinitely deep illustration
  934. Merry Christmas
  935. The problem with CSS
  936. __call__ folderish Zope objects
  937. Ugliest site of the month, plus44.com
  938. Python package path when executed elsewhere
  939. Happy Birthday to me!
  940. Do you know what safe txt is?
  941. Kung fu competition photos from Sutton
  942. Graduation photos
  943. CorpCalendar review on ZopeMag.com
  944. HTML entity fixer
  945. Hacking and martial arts
  946. Ugliest site of the month, hernia.org
  947. Make your settings in .Xdefaults come true
  948. Bad Santa
  949. Indent text like email clients do
  950. Add links to a text (take II)
  951. XHTML Transitional versus Strict
  952. Add links to a text with URLs
  953. Do you know about Firefox?
  954. City & Islington kung fu charity event
  955. Urwid - curses-based UI/widget library for Python
  956. Massrenaming with shell and python
  957. Bush country
  958. Reindexing AVI films with mplayer
  959. Time Machine Ballistics
  960. Disable Caps Lock in Linux
  961. I'm back and awake!
  962. Findory Blogory, like Google News Alerts but for blogs
  963. Tell me your birthday
  964. (Idea) A new anti-spam law
  965. Email-your-friends reminder web application
  966. Ugly footballers
  967. PixelField a game for pixel-lovers
  968. People who really can't think in numbers
  969. Changing the size of a textarea box
  970. Python inspect module
  971. Film Music by Alfred Schnittke
  972. Classic Movie Scripts
  973. Obsolete Computer Museum
  974. Psychiatric med student Michelle's story
  975. Pretty print SQL script
  976. Integer division in programming languages
  977. Overcomplicated password requirements on Oystercard.com
  978. Make your own 3-D pictures
  979. Most common English words
  980. Date plus years or months or weeks
  981. World Oil Depletion and the Inevitable Crisis
  982. WYSIWYG inline HTML editors
  983. Intel.com incompatible to Mozilla
  984. University results
  985. Date formatting in python or in PostgreSQL
  986. Honesty and advertising on Gizmodo
  987. Paper Wars
  988. On the amount of spam
  989. Göta Kanal 2004 holiday photos
  990. Company loyalty
  991. Life of Pi
  992. The World's Top 100 Wonders
  993. Now I have a Gmail account
  994. Evil HTML frames
  995. Holiday for a week
  996. TBODY tag in a XHTML table
  997. Dan's just been to Sweden
  998. Underwater MP3 player
  999. Afghan national sport photos
  1000. Ugliest site of the month, stradbally
  1001. Kung fu photos from Varberg, Sweden
  1002. Impressive baby photos website
  1003. SquareOneTV
  1004. Corp Calendar 0.0.5
  1005. Different phone, same number
  1006. Test your computer secretary skills
  1007. Accessible Pop-Up script
  1008. Washing sense of humour
  1009. Nicking images from our website
  1010. Lost my mobile phone
  1011. 10 reasons for web standards
  1012. "My Secret Life As A Prostitute"
  1013. Find song by lyrics
  1014. Experimenting with binoculars
  1015. Can you add them all up?
  1016. McDonalds Calories
  1017. "I Am American"
  1018. Jaguar cars website
  1019. No more university for me
  1020. PlogRank - my own PageRank application
  1021. Google PageRank matrix calculator (graphically)
  1022. Bush votes: inverse proportional to education and IQ
  1023. Why should I use XHTML?
  1024. Google hardware history
  1025. Two done three to go
  1026. Krispy Kreme doughnuts store opening
  1027. Zurich tram service problem
  1028. Distributed compiling with distcc
  1029. Heil Jed and Dave Kuhlman
  1030. Obfuscating C contest running now
  1031. Outbreak - fight the viruses
  1032. Molvania: A land untouched by modern dentistry
  1033. Windows Noise Becomes Music
  1034. Blogitem 040429 1
  1035. Don't bogart that camera my friend
  1036. A whole website about Shallots
  1037. Food from Sweden
  1038. Throw the penguin
  1039. Anna and Johan photo modelling
  1040. About Ricardo Semler and Semco
  1041. Proper wireless computing
  1042. Kill Bill flash game
  1043. Funny Plone quote
  1044. Emacs html-mode for .zpt and .dtml
  1045. The importance of being findable
  1046. LaTeX Word Counter
  1047. My dissertation report
  1048. The 5 most spectacular photos of 2003
  1049. How to fold clothes
  1050. XHTML, HTML and CSS compressor
  1051. PostgreSQL, MySQL or SQLite
  1052. Challenge Osama with scimitar or sword
  1053. Anti-email-harvesting with JavaScript
  1054. Metamorphosis, Franz Kafka
  1055. FWC November competition video
  1056. Pylets, more than just mod_python
  1057. EuroPython in Sweden, I should go
  1058. Google PageRank algorithm in Python
  1059. What's so bad about HTML guys?
  1060. He must really hate C
  1061. Virtual feminization
  1062. The Dead Zone
  1063. Finished the bulk of my dissertation
  1064. The meaning of "hacking"
  1065. To readline() or readlines()
  1066. Python UnZipped
  1067. Deep sea fish, lots of pictures
  1068. PSP - Python Server Pages
  1069. Funniest Volvo advert ever
  1070. How to uninstall LeakFinder in Zope
  1071. Apostrophes in predictive text
  1072. Moving Image Contest for Creative Commons
  1073. Optimized stylesheets
  1074. World Press Photo, the winners
  1075. the knife: Pass This On
  1076. Unusual job offer
  1077. CPU info
  1078. Lemon - Commodore 64 Heaven!
  1079. StreetArt in London on Ploggle
  1080. Lots of shit about shit
  1081. Share Your OPML
  1082. What will you not wear today?
  1083. Anti-spamming email harvesting
  1084. Bugknits
  1085. Practical CSS
  1086. Best water in the world
  1087. Neon-Brite, a 360 degree theatre play
  1088. Future plan for IssueTrackerProduct
  1089. Ploggle
  1090. WEBoggle mind bogglingly addictive
  1091. This site 7 months ago
  1092. Why Sun should Open up on Java
  1093. C++ templates or not
  1094. Ugliest site of the month, yoyoguy.com
  1095. MozillaZine Knowledge Base
  1096. Afghan expressionism in a modern era
  1097. RSS 1.0 feed now
  1098. Getting fired in 3 hours
  1099. Memory Test on BBC Science
  1100. Breaking usability principles for usability
  1101. DOCTYPE in PageTemplates with METAL
  1102. Dan Heller's Photos of Italy
  1103. Man mailed himself home
  1104. Do you know about Wikipedia?
  1105. Techie things I want to buy from ebuyer.com
  1106. Adding a year in PostgreSQL
  1107. PayPalSucks.com, can't be good for PayPal
  1108. Photo.net, Photograph of the Week Gallery
  1109. S21: The Khmer Rouge Killing Machine
  1110. Photofusion in London
  1111. The Chinese Martial Arts Film at BFI
  1112. I'm a computer nerd, but...
  1113. ClearWind.ca a good looking Plone site
  1114. Julien Donkey-Boy
  1115. 30 days solid McDonalds diet experiment
  1116. What Yin-Yang is
  1117. George W. Bush and the $85.2 million ad campaign
  1118. Grep in Jed
  1119. Keybinding ALT-F in Jed
  1120. Passed my grading!
  1121. Dabbrev in Jed
  1122. Labels in HTML forms
  1123. Robots.txt Validator
  1124. MathML and displaying Math on the web
  1125. Hit the penguin
  1126. SimCity 4 and SimCity Classic
  1127. Same but new keyboard, lovely change
  1128. Photojournalism on the former Soviet block
  1129. Effects of LSD on drawing
  1130. Quick URLs for some pages
  1131. Ugliest site of the month
  1132. China, being trained in prosecution by Sweden
  1133. Lost In Translation
  1134. Pholph's Scrabble Generator
  1135. So vivid dreams I couldn't get out!
  1136. Recon - Regular Expression Test Console
  1137. Printer friendly and PDF version of every page
  1138. Crontab wizard
  1139. About page finally written
  1140. "It's just a website" by Tom Smith
  1141. eBay and freedom to sell whatever you like
  1142. How old is Bettys dad?
  1143. PythonPoint
  1144. Creating a user for postgresql
  1145. Vivisimo - clustered searching
  1146. Photos from Mars
  1147. US Zip codes
  1148. Blogitem 20040106 1800
  1149. Back in town and not so ready for exams
  1150. Two exams on the same day
  1151. A jerk with a good website
  1152. Off to Sweden!
  1153. A nice and simple article about Zope
  1154. LOTR - Return of the King
  1155. Adaptation
  1156. ESI and Squid and Zope
  1157. International Snow Sculpture Championships
  1158. Happy Birthday to me!
  1159. "Historisk Guide till England"
  1160. Man arrested for spamming
  1161. Nintendo emulator online in Java
  1162. Back online
  1163. The Linux Cookbook
  1164. Amazon.co.uk Top Reviewers
  1165. Bad news for Stockholm
  1166. Mr. Picassohead
  1167. Case study where Python was the final choice
  1168. Moscow Metro
  1169. The Pentagon is big, very big
  1170. Blogitem 20031129 1500
  1171. More terrible album covers
  1172. London underground map in 3D
  1173. Back from the competition
  1174. Kung Fu competition
  1175. New phone, same number
  1176. 3D Sidewalk Paintings
  1177. Google search terms
  1178. Old motel postcards in the US
  1179. SpamBayes and SSL thanks to Stunnel
  1180. Happy Birthday Malin!
  1181. Matrix ASCII animated!
  1182. Zolera SOAP Infrastructure 1.4
  1183. Recipe of creating the best paper plane
  1184. The worst jobs in science
  1185. Amazon Marketplace - an odd update
  1186. Amazon Marketplace - great web app
  1187. Naughty but very happy
  1188. This Is Broken
  1189. Worst Album Covers Ever
  1190. Hubbell and Hubbell
  1191. The Matrix Revolutions, naive but spectacular
  1192. Python for .NET
  1193. Parrot; CLR for the poor man
  1194. The end of the world, a scenario
  1195. Ever wondered how much $87 Billion is?
  1196. CSS Zen Garden
  1197. Blogitem 20031031 1021
  1198. Kung Foo
  1199. Tangram
  1200. One hot ear
  1201. Sand java applet
  1202. Search Inside the Book
  1203. Programmers Block
  1204. Man jailed for smuggling eight snakes in trousers
  1205. Kill Bill vol. 1
  1206. Sony Ericsson P900
  1207. Systembolaget under pressure
  1208. Nice date input
  1209. My breakfast
  1210. New feature: RSS feed
  1211. Data Structures and Algorithms in Python
  1212. Who's who in the 'axis of evil'
  1213. Web design practices
  1214. Loadtesting this site and compare with static Apache
  1215. 2 Years later
  1216. Once upon a time in Mexico
  1217. Geography: The lost world
  1218. "Sweden and Denmark top in quality of life"
  1219. Trippy photo
  1220. Cartoons on Aljazeera.net
  1221. Why You Should Switch to the Mozilla Firebird browser
  1222. Really really shitty webdesign
  1223. First day back at university
  1224. Google News Alerts (BETA)
  1225. Crazy about Linux
  1226. Wow! Latest Plone sprint
  1227. MOHO at Restaurant show photo
  1228. Cheer for Swedish coders
  1229. Funny Dilbert for mathematicians
  1230. Best in Show, really funny
  1231. Good summary about Ricardo Semler
  1232. New search feature on this site
  1233. City of God
  1234. Perfect parking formula
  1235. Great article about writing games with Python
  1236. Google as calculator
  1237. Photos from Cornwall camp 2003
  1238. On training camp for a week
  1239. Some new Kung Fu photos
  1240. The Seven-day Weekend
  1241. Whale Rider
  1242. Terminator 3 Rise of the machines
  1243. How to not get any spam
  1244. Squid now working in front of my Zope
  1245. Back from my holidays
  1246. Fishing photos from last year
  1247. On holiday for a week
  1248. Some new Kung Fu photos
  1249. Last grading result
  1250. Ang Lee slow motion but not
  1251. Exam results arrived today
  1252. Lots of little Agent Smiths
  1253. The "omit-tag" tag
  1254. Fry-IT people picture
  1255. First news item of the new webpage