All Articles (699)
Everything written by Daniel Roy Greenfeld for the past 19.59 years.
Using pyinstrument to profile FastHTML apps
Quick instructions for a drop-in FastHTML middleware for identifying performance bottlenecks in FastHTML apps
Pi Day
A really quick exploration of Pi in Python plus a call to action!
Places I have lived
In alphabetical order, a list of the cities in which I have dwelled in for over a month.
TIL: Undecorating a functools.wraps decorated function
Another reason to use functools.wraps!
Building a playing card deck
Today is Valentine's Day. That makes it the perfect day to write a blog post about showing how to not just build a deck of cards, but show off cards from the heart suite.
TIL: Typer commands defaulting to help
A more elegant way to display default help.
TIL: Every Jupyter notebook cell runs in an async loop
Obvious now that I think about it!
Installing LÖVE on Mac
How I install LÖVE, a 2d gamework written in C++ that uses Lua as its scripting language. Nothing against GODOT or Unity, but I want a tool where I don't need a specialized IDE to build games for my little girl.
Fastcore L
An exploration of Fastcore's enhanced list-like structure
TIL: Using inspect and timeit together
Two libraries in Python's standard library that are useful for keeping load testing code all in one module.
Exploring fastcore bunch classes
For the past six months or so I've been using fastcore. It provides two handy bunch-class style that I've leveraged into projects.
Recap of 2024 and Resolutions for 2025
Another year in orbit around a star.
TIL: yield from
A variant of the yield statement that can result in more concise code.
TIL: types.SimpleNamespace is a Bunch class
Did you know that Python's types library has a bunch class implementation? How did I not see this before?!
My 2024 Fitness Journey
Recovery from injury then moving upwards and onwards.
TIL: run vs source
Different ways to run bash commands that explains part of my frustration with bash over the years.
TIL: Using hx-swap-oob with FastHTML
How to have the injected content know where to go instead of assigning it from the form.
TIL: Arity
In logic, mathematics, and computer science, arity is the number of arguments or operands taken by a function, operation or relation.
Notes on takedowns
Tricks and tips for takedowns and defenses as provided by Mohammed Yusuf.
Top Terminal Tools
A few incredible tools for making the terminal more useful and fun.
TIL: How to reset Jupyter notebook passwords
For those times when you get locked out of a Jupyter notebook
GitHub Admonitions
How to elevate a message in GitHub markdown.
Starting Brazilian Jiu-Jitsu
A guide to getting started in Brazilian Jiu-Jitsu for ages 5 to 100.
TIL: Python's defaultdict takes a factory function
Create a dictionary-like object that takes a factory function so you have lots of control over what the default value can be.
TIL: Python Dictonary Merge Operator
Did you know there's a merge operator for Python dictionaries? I didn't until today!
TIL: Last Token in Shell
How to get the last element in a shell command. Guest starring Atuin!
TIL: Fractional Indexing
How to keep order of records without having to update all the records
TIL: LiteCLI, Improved SQLite CLI
LiteCLI is a command line interface for SQLite with auto-completion and syntax highlighting.
TIL: Making pytest use Ipython's PDB
Once I've isolated a test failure to a very small set of failures I use this instead of running pytest directly. What it does on exception is start the IPython pdb interface.
TIL: SequentialTaskSet for Locust
How to get Locust to not bash your server like a robot.
TIL: Autoreload for Jupyter notebooks
How to skip having to restart your notebook on code changes.
Using locust for load testing
Quickstart guide for doing web application load testing with the Python powered locust library.
TIL: Using Python to removing prefixes and suffixes
How did I miss these functions getting added to Python?
Using Mermaid JS in Jupyter notebook
Useful for adding Mermaid charts of various types to Jupyter notebooks.
File Location Fixup
Writing a Jupyter notebook to clean up my blog's article locations
FastHTML form error handling
A pattern I have been exploring for handling form errors in FastHTML.
Mermaid charts!
My site now has mermaid charts! Many thanks to Imtiaz Khan!
Python CSV Cheatsheet
Here's a quick reference guide for Python's csv module. I use it periodicially, but not enough that I memorize the API.
TIL: Using FastHTML in Jupyter notebooks plus websockets
A simple websockets example hosted in a Jupyter notebook!
Practical Deep Learning for Coders: Lesson 1
I'm going through the fast.ai course by Jeremy Howard. This is the course notes for lesson 1.
Practical Deep Learning for Coders: Lesson 0
I'm going through the fast.ai course by Jeremy Howard. This is the course notes for lesson 0.
tmux cheatsheet
My list of tmux commands with minimal flavor text.
TIL: Parsing messy datetimes strings
How to convert inconsistent datetime strings into datetime objects.
London Tech Zero Hackathon on July 1 and 2!
On the 1st and 2nd of July is the first-ever London Tech Zero Hackathon, supported by Kraken Tech.
TIL: Passing exceptions as arguments in Python
Mypy needs an extra identifier to not choke on an exception passed as an argument.
TIL: Renaming git branches
Sometimes branches evolve into things that don't match their names.
Rapidly creating smoke tests for Django views
A management command for quickly generating tests based off Django's URL routing mechanism.
TIL: Auto setup remote branch for git
For getting rid of the "fatal: The current branch new-awesome-feature has no upstream branch" error.
TIL: Switching to full screen mode in VSCode
For those times when you want to avoid using the mouse to improve your desktop layout.
TIL: Running UV outside a virtualenv
Breaking the rules to satisfy continuous integration.
Keynote at PyCon Lithuania 2024
My keynote and the first return to the homeland of Lithuania in over 100 years.
TIL: Writing decorators for classes
To my surprise writing decorators for classes is easier than for functions.
Recap of 2023 and Resolutions for 2024
Another year in orbit around a star.
TIL: Change older git commit
How to change an older git commit rather than the most recent one.
TIL: Forcing pip to use virtualenv
Necessary because installing things into your base python causes false positives, true negatives, and other head bangers.
Three Years at Kraken Tech
A summary of the past year as I finish my third year working for Kraken Tech, an Octopus Energy Group subsidiary.
Minimal CSS libraries
Minimal CSS frameworks do not use classes, rather modifying the look of HTML components. That means that any CSS classes added are easier to discover and read.
Splitting Git Commits
How to split a git commit into multiple commits.
TIL: Autoloading on Filechange using Watchdog
Using Watchdog to monitor changes to a directory so we can alter what we serve out as HTTP.
TIL: Fixing YAML
Here's how to prettify YAML across your projects.
TIL: Skipping git pre-commit
For saving WIP commits to a remote repo. You really don't want to know what I was doing before.
TIL: Capture stdout & stderr with pytest
How to capture printed text using pytest, something I wish I knew sooner.
We moved to London, UK!
We're going to be in London, UK for a while, here's some of the details.
TIL: Rich.console.status for slow processes
From the command-line a trick to inform users know the system hasn't died and they should wait until it is done.
TIL: Finding and ignoring files with Glob
How to find and ignore files and directories when using glob
TIL: Poetry PyPI Project URLS
Adding sidebar links to PyPI projects powered by Poetry
TIL: pytest with breakpoints
Injecting breakpoints into a failing pytest run
PyPI Project URLs Cheatsheet
The PyPI project URLs spec is defined only in code. Here's my cheatsheet explaining how to configure them. I'll update this as I learn more (suggestions welcome!). Examples in several formats.
Review of Paultons Park
A quick review of Paultons Park Amusement World near Southhamption from the vantage point of a parent of a four year old child.
BJJ Training Tips
I started Brazilian Jiu-Jitsu up again in early November 2022. Against most other white belts I usually can't be submitted and have landed a few submissions of my own. I'm not big or strong so I use these rules given by my coaches.
Converting from bleach to nh3
Bleach is deprecated, here's how to come close to replicating bleach.clean() with no arguments with nh3.
My 2023 Fitness Journey
At the start of the year I had started to get back into shape. This article documents what I'm doing and how well it has gone.
AWS Requests Auth
AWS signature version 4 signing process for the python requests module.
Cookiecutter Options Pattern
A technique I've used for years yet often forget. Placing it here for easy reference.
Programming languages I've learned
Starting as an adolescent I've been learning programming languages. Here's a list of the ones I've learned.
Converting Markdown Headers to Checklist
For those times when you write out a long markdown document that you want to convert to a checklist.
Configuring Sphinx Auto-Doc with projects having Django dependencies
How to make it so projects with Django as a dependency benefit from Sphinx's auto-documentation features.
Resolutions for 2023
My resolutions for 2023
Practice Python Web Projects
Python web projects taken from my personal history to practice on to improve your skills.
Two Years at Octopus Energy Group
Various thoughts about working for a for-profit business with a mission of saving the planet.
Getting s3 pre-signed URLS using the Node.js AWS SDK v3
An easy-to-find copy/pastable reference for creating pre-signed URLs for getting of files using the Node.js AWS SDK v3.
Farewell to Aaron & Company
Aaron & Company was a plumbing supplies firm started by my great-grandfather over 100 years ago and incorporated in 1932. And now it is being sold.
Live Discussion with Sebastián Ramírez (Tiangolo)
I have a friendly live discussion with Sebastián Ramírez, creator of FastAPI, Typer, SQL Model, and more.
Pip Installing Dependencies Into Conda Envs
People think Conda is challenging to use or doesn't work with pip, when in truth it is easy and just works everywhere.
Blogger to Markdown Script
Converting hundreds of posts from blogger to markdown
Sendowl Consolidation Script
Unifying our sendowl accounts into one
More Married
In honor of Valentine's Day, this script calculates how long you've been married (or other types of relationships) in relation to how long you've known each other
My Boss Took My Mouse Away
A useful lesson taught to me at the outset of my career in an unnecessarily abusive way
Speaking at Python Web Conf
My first public conference talk in three years
Autodocumenting Makefiles
Make Your Makefiles Make Your Day!
Exploring the Bunch Class
Bunch classes are very powerful, and with great power comes great responsibility
Blogging and Technical Writing
Answers to questions I was asked recently about technical blog writing.
The Thirty Minute Rule
What to do when you get stuck on a coding issue for more than 30 minutes.
Crusty European Bread
A recipe to make tasty bread with a crust.
JavaScript Loops Are Fun!
This tutorial is a cookbook of my favorite JavaScript looping techniques.
Growing Potatoes in Southern California
What I've learned about growing and eating potatoes in a hot climate.
What's the Ultimate Reason for Working at Octopus Energy?
Wherin I conclude my discussion about why I work at Octopus Energy.
What's the Best Thing about Working for Octopus Energy?
An in-depth discussion about my employment at Octopus Energy.
Blog Revamp 2021
Switching between VS Code terminals using hotkeys
By default VSCode doesn't include this keybinding. Here's how you add it.
Frontend Dev Resources
A list of useful references for leveling up frontend development skills.
Git Cheatsheet
My list of simple and complex git commands and operations.
Recap of 2020 and Resolutions for 2021
Improving Audio Recording with Streamlabs
The resources I used to dramatically improve my audio.
August 2020 Courses
All the live, online, interactive courses I'm teaching in the month of August 2020.
I'm Teaching A Live Online Django Crash Course
Django Slug + ID URL Design
How to combine slugs and IDs to make a a human readable unique URL design.
Eulogy for My Father: Ted Greenfeld
On June 11, 2019, my father, Theodore David Greenfeld, passed away at the age of 84. I spoke at his funeral three days later. It was some of the hardest words I've ever had to vocalize. I want to share what I said as well as some photos. Today would have been his 85th birthday.
Two Scoops of Django 3.x Released
The book about best practices for the Django Web Framework, Two Scoops of Django, has been revised, updated, and expanded for versions 3.0, 3.1, and 3.2.
Adding Metadata to PDFs
How to use Python to combine PDFs and then add metadata to them.
Our New Django Book Has Launched!
We wrote a beginner-friendly tutorial book for Django!
Feed Generator
Writing a Python script to generate my blog feed
Recap of 2019 and Resolutions for 2020
This is my recap of 2019, plus my resolutions for 2020.
Thoughts on Kotlin
My notes and impressions about this Android-friendly JVM language.
Meeting Python Devs in Cancun
Python programming builds bridges across the world!
My Markdown Code Snippet Tester
Ensuring that code in my articles actually works.
Moving to Vuepress
Why and how I'm moving my blog to vuepress.
Ten Years Ago Today
Musings ten years after I decided to take my life in a new direction.
Stop Using Executable Code Outside of Version Control
Fighting the local_settings.py antipattern
Authenticating via JWT using Django, Axios, and Vue
Getting DRF, JWT, Axios, and Vue to play nice
Writing A New Blog Engine
Where I describe why and how I wrote a new blog engine
Implemementing Manual Schema with Django REST Framework
Implementing a manual schema in Django REST Framework
When to Use MongoDB with Django
Short answer is you don't use MongoDB with Django. Read on for the specifics.
Hola, PyCon Colombia!
We're going to PyCon Colombia!
2018 New Years Resolutions
My New Year's resolutions for 2018.
Two Scoops of Django Birthday Giveaway
My 2017 birthday giveaway contest.
Two Scoops of Django 1.11 Is Printed!
Using Python and Google Docs to Build Books
Using Python to combine multiple Google docs into one cohesive whole that can be published as a book.
Python F-Strings Are Fun!
Two Scoops of Django 1.11 is Out!
The writing is finished on Siege I: The Reluctant Hero!
Siege: The First Chapter, Revised
8000 Words!
No Person Is an Island
Power went out, but the writing went on!
Midnight Posting on Wednesday Night
Siege has 8 chapters!
Siege has five chapters!
Siege: The First Chapter
Code, Code, Code
I'm often asked by new programmers how they can forge a path into using their skills professionally. Or how they can get better at writing software. In this article I share the secret master-level method to improvement.
Pretty Formatting JSON in the Django Admin
How To Create Installable, Reusable Django Packages
Intensive Django Training with the US Air Force
Titlecasing Markdown Headers with Python
My Birthday Gift to You
When I gave out my first fiction book for free.
Why Doesn't Python Have Switch/Case?
Django Girls Ensenada 2015
Markup Language Faceoff: Lists
Two Scoops of Django 1.8 is Out!
My Latest Non-Fiction Book is Out
How to Read Kindle Books Without a Kindle Device
The Day I Clicked the Button
Punchline
Into the Brambles is Published!
Wherin I discuss my first fiction book.
Phasing Out Django Packages APIv1 & APIv2
Setting up LaTeX on Mac OS X
Python Decorator Cheatsheet
I can never remember the syntax for writing decorators. I always have to look it up. Worse, I always have to remember where to look to find references. Hence the reason for this article. I'll never lose this reference: It's on my laptop and the internet.
Building Conda Packages for Multiple Operating Systems
Going off the grid
I did an Au Batido in 2014, now what?
setup.py tricks
Rainy Sunday in Buenos Aires
Homemade Pumpkin Puree
How I make the base for pies and other yummy concoctions.
Adding Django form instance attributes
Sometimes in the `clean()`, `clean_FOO` or `save()` methods of a Django form, you need to have additional form instance attributes available. A sample case for this is having `user_id` available. This is a simple example of how to do it in Class-Based Views.
Announcing BarCamp Django SF!
Hola, Argentina!
Want to work for Eventbrite?
Want to work for Eventbrite? (part 2)
Building, Maintaining and Scaling Projects
cached-property: Don't copy/paste code
Jinja2 Quick Load Function
Python Partials are Fun!
Beginner's Guide to PyCon 2015
Surgery in Two Days
First Post
Two Scoops of Goblins
Memories of Malcolm
Docstrings and Various Python Objects
Fiction vs Non-Fiction
Announcing Two Scoops of Django 1.6!
awesome-slugify: Human-readable URL slugs from any string (part 2)
awesome-slugify: Human-readable URL slugs from any string
pytest: no-boilerplate testing (part 3)
pytest: no-boilerplate testing (part 2)
pytest: no-boilerplate testing
I Married Audrey Roy
The story of one of the best days of my life.
New Year's Resolutions for 2014
Cookiecutter: Project Templates Made Easy
Cookiecutter makes creating and maintaining project templates easy and intuitive.
Made Up Statistics
Travel Tips for Geeks: Preventing Theft
My experiences with Django and Python 3
EuroPython Intro to Django Workshop
Core Concepts of Django ModelForms
The concepts behind Django's model forms can be boiled down to six items.
Tools we used to write Two Scoops of Django
Filepicker.io and South
Off to Europe!
Two Scoops of Django is in print!
Generating NCX files with Python
Annotated History of My Most Used Shell Commands
Fixing Python's String class
Core Concepts of Django Forms
The concepts behind Django's non-model forms can be listed in just three items.
Overloading Django Form Fields
How to overload Django form fields in an extensible way.
New Year's Meme 2013
Exceptions as Decorator Arguments
Python Indie Bundle Cyber Monday Sale
Python Yields are Fun!
Dynov 2013 Part I
Travel Tips for Geeks: Traveling Cheaply
The Easy Form Views Pattern Controversy
PyCon Tutorial: Wiring Up Django Packages
Beginner's Guide to PyCon 2013 Part III
We are not using PayPal
Two Scoops of Django 1.5 Beta Released
Beginner's Guide to PyCon 2013 Part II
Beginner's Guide to PyCon 2013 Part I
Two Scoops of Django FAQ
Our Django Book Has Launched
New Year's Resolutions for 2013
2012 resolution summary
New Year's Python Meme 2012
Result of our LA Migration Hackathon submission
Developer Time
Stay with the Django CBV defaults!
Thoughts on ranting
Case Study: URL Design for petcheatsheets.com
Django GetOrCreateView
Probably the first article outside the official docs on how to use the Django CBV form_valid method. Written in 2012 and still accurate in 2023!
Los Angeles Open Source Sprint on Nov 4th!
We need more PyCon US 2013 submissions!
Thoughts on my stack
Installing Pycairo on Mountain Lion
Python dictionary as a class
PyCon 2013 Talks/Tutorials I want to see
A Public Service Message to the Python Community
Python dictionary vs JavaScript object: Dynamic Keys
Django Requirements 2012-08-15
Curiosity has landed!
Attaching custom exceptions to functions and classes
Deadline for DjangoCon Financial Aid requests is tomorrow!
Django Update View Without Slug in the URL
July 15th, 2012 LA Open Source Recap
Simple HTTP Basic Auth Wall
PyCon Philippines 2012 Day 2
A wonderful end to a wonderful event.
PyCon Philippines 2012 Day 1
The first day of the first PyCon Philippines!
Announcing PyCon Philippines!
Django Class Based View: email form with CAPTCHA
Simple Django email form using CBV
May 12th, 2012 LA Open Source Recap
10 reasons to go to DjangoCon Europe
CSS Hacking to make my code samples legible
Choosing an API framework for Django
Django Requirements for a project
Los Angeles Open Source Sprint on May 12th!
Join us at DjangoCon Europe!
Choosing a new python based blog engine
Calendar About Nothing
Launching our API at PyCon 2012
The sorry state of Python OAuth providers
You should Heroku
I use this
PyCon Australia 2011 Review
My PyCon 2012 Schedule
Selected for PyCon StartUp Row
Parsing MongoDB URI
My blog is moved
django-uni-form end of life
Two years ago today
Two years ago today
Silicon Beach Hackercast
An attempt made long ago to create a podcast
Working on the Aú sem Mão
Capoeira at PyCon!
Looking to move off blogger again
Tried out Jekyll
Python Web Summit Questions needed!
Why I like Capoeira
How to justify attending PyCon sprints
Join the PyCon Early Birds program!
Tips for speaking
My SOPA boycott
Resolutions for 2012
2011 Resolution Summary
New Year’s Python Meme
Evaluating which package to use
Announcing Consumer Notebook!
My BaseModel
Made Up Statistics
The Story of Live-Noting
Redux: Python Things I Don't Like
Loving the bunch class
PyCodeConf 2011 Report
Conference Talks I want to see
Profiles: Breaking Normalization
How my Django profile models looked over 10 years ago.
History of my most used shell commands
Quick conferences report: Presentations
Responses to Github is my resume
Github is my resume
The Ultimate Django Tutorial Workshop
Amtrak Review
Python and Django class/hackathon!
Normalization noitazilamroN
I'm going to Pycon Australia!
Hollywood Hackathon Report
Do not upload dev releases at PyPI
Announcing django-uni-form 0.8.0 beta!
Hollywood Hackathon on June 18th!
Python HTTP Requests for Humans
I love this girl!
Announcing to the world my affection for the love of my life.
A couple great Pycon 2011 Talks
We won first place at Startup Camp LA!
I teach Python and Django
How NOT to interview Pythonistas
Are you looking for Python and Django Work?
Python Packages sprint on Sunday 4/10/2011
PyCon 2011 Sprint Report
Announcing Garbaginator!
PyCon 2011 Tutorial Report
I'll get you next time, Wesley Chun!
The Great PyCon Ribbon Game!
My tips for speaking
My Django tutorial at PyCon
My Pinax Solutions class at Pycon 2011
How to sell Python panel at Pycon
What I want for Django Facebook connect
Los Angeles Open Source Hackathon
Why you should go to Pycon
January Mongo LA conference
Pinax Tutorial at Pycon 2011
I don't work in a vacuum
Resolutions for 2011
Recap of 2010
2010 Resolution Summary
Reactions to "Stupid Template Languages"
Stupid Template Languages
Release classifiers in distutils/pypi
A request for new pypi classifiers
DjangoCon 2010 report I
New features for Django Packages
Django Dash Lessons Learned
Announcing Django Packages!
More reasons to go to DjangoCon!
Getting excited about DjangoCon US!
Rainbows on the prairie
Getting piston forms to play nicely with JSON
I want to talk to Jython and Iron Python developers
Apologies to the Python community
I hate Mac & Cheese
My little unit test trick
Using modernizr to help with canvas
Code highlighting on blogger
Steve Holden giving a talk on Python education
Moving away from DC
Leaving NASA
Pycon 2010 report III: Sprints
Conferences are a double edged sword
Apologies to Katie
Pycon 2010 report II
Pycon 2010 report I
I've got ribbons!
Eating my own Dog Food
How I write my presentations
What I don't like about Pycon
My pre-history with Plone
Learn something new every year
Reserve your low pycon price today!
Register for Pycon 2010 already!
DjangoCon 2009 videos are up!
Resolutions for 2010
There was a day...
New Year's Python meme
2009 resolution summary
Recap of 2009
Reconnecting
Picking a Django powered CMS
Python Wars
Code I'll reuse
What I love about Python
Eating your own dogfood
Foxpro
Crashing is fun
Pycon talks and tutorials
November Django Lunch Meetup was fun!
Posting every day this month
Sys Admins: What your Developers want you to know
Have you signed up for the Django Master Class?
Djangonaut Lunch in Crystal City
Something I learned at DjangoCon
Looking for work?
Pycon talk thoughts
Slides from DjangoCon 2009
Pycon talk proposal reminder
Show me your open source Django CMS
Best DjangoCon 2009 Day Ever!
See you at DjangoCon!
All set to go to Portland, Oregon!
I want to give a class or talk at Pycon 2010
NOVA-DUG August 19th summary
NOVA-DUG meeting notice for August 19th
NOVA-DUG scheduling
Clothing triage
Turning away from CAPTCHA
Report on the belt test
Taking the test tomorrow!
NOVA-DUG meeting notice for July 8th
Belt test update
Belt test this Friday!
Still sick
Quitting Caffeine Fail
Training Schedule
What happened to NOVA-DUG?
Thanks for San Francisco Link
Thanks for San Francisco!
What I managed to get done in San Francisco
My San Francisco Day Plans
I don't like Integrated Development Environments
ColdFusion and deprecated code
Eight things I don't like about python
Help me make a new Avatar!
Quitting Caffeine
DC Sprints location is changed!
DC sprints location is official!
NOVA-DUG April 29th summary
NOVA-DUG meetup for Wed, April 29th
Sweet spots of Plone
Finger method of judging graphic design
What I learned at Pycon 2009
NOVA-DUG April 15th summary
Show me your open source Django blog application
NOVA-DUG meeting on Wednesday, April 15th, at 7:30 pm
The end of my Feedfeeder story
What I would change in Plone: Generic Setup
Northern Virginia Django Users Group lives!
Django Dash worst concept contest
Jinja2 in zope
What I would change in Plone: Templates
Forming a Northern Virginia Django User Group
Changing over to .NET
Day 3 Pycon-09 talks I'm attending
Best Pycon 2009 Day Ever!
Day 2 Pycon-09 talks I'm attending
Day 1 Pycon-09 talks I'm attending
Pycon Tutorials attended by me
Heading off to Pycon 2009!
Looking for work?
Naming conventions thoughts for Pinax and Django
Spacebook ITCD demo a success!
Should django-uni-form handle boilerplate HTML?
Tell me your Plone blogging tool preferences
Strangeness on Planet Plone
Starting a new Plone project in February
US Pycon 2009 registration is open!
Awesome Mac command-line trick of the day
Second Annual President's Day Sprint
My current training schedule
How to do well at the job
Simplegraph Screen Capture
django-uni-form lives!
Python formatting test
Memories of New Year's by the decade
How to globally ignore .pyc files
Made leaving comments on this blog easier.
Useful python code for blogspot users like me
Resolutions for 2009
2008 Resolutions Summary
Recap of 2008
I wish we were having a holiday party at the gym
Looking under the hood of Pinax
2009 Saturday class schedule is formally confirmed!
Training notes
My saturday class plans for 2009
Deployment skills need work
Danny's recipe for pumpkin pie
Current plan for FeedFeeder v2
Second place in my second tournament
Steel jewelry is in!
Subscribers Zope 3 style
Why I'm not competing in sparring right now
Cat Vacuuming Society
What I want to see in the next four years
The first effort I made in a TKD competition
Weekend competition information for me
Training failures
Quick update
Morning brainstorm about FeedFeeder v2
The temptation is very strong...
FeedFeeder 2 plan
Normalization, Non-Normalization, Denormalization
Compiling Python on Mac OS X 10.5 can be a pain
End of the conference
Can't seem to use zope debug mode anymore.
Help me with zc.testbrowser
Day 2 of the 2008 Plone Conference
Day 1 of the 2008 Plone Conference
Start of the Conference
Plone Conference 2008 starts tomorrow!
362 days ago I was off to Italy
Why did we use Plone for nasascience.nasa.gov?
Our payment obligation?
Vacation this fall, winter, or spring? Or not...
Farewell to Michael Hammer
Antipatterns I see here and there
Plone OS projects take two: Radius package and FeedFeeder package
Best career technology choice I ever made besides learning python...
Some ideas for open source Plone Products
List of programming languages I know
Don't bet on closed source third party software!
I've not quite done LAMP, or have I?
Nixed Technorati link off this blog
Prayers to Jessica and family
Thoughts on Python interfaces
Moving major appliances
Fitness update
Pluggable Authentication System for Plone
Taught my son yesterday
NYC century bike ride
I missed a class taught by Lennert Regebro?
Trials and Tribulations of avoiding vi
Another reason to dislike P.F. Changs
Funkload to be revisited!
Barack Obama versus John McCain
Coming up on my week off!
wxPython is fun!
Ready for boot camp!
Working on the fatigue issue
Me Grok generate Add and Edit forms!
Exhausted for no reason
July should be fun
Me Grok Smash!
Beware Documentation By Topic
Quick Firefox 3 review
Ruby Security Problems
My students take the big test
Umlizer lives!
Should I write a book?
Cycling in this heat
New water heater
MVC public service videos
Condolences to the Hammers
Must use ubigraph
How not to build a view
Inheritence is fun!
Visit the Greater Lipsum Project at your own peril
Genius will be rewarded
Phoenix
Phoenix is down safely!
To Shell is to love Python
Italia and Escher
Apologies to Chris
I love graphing
Flooding sucks
NYC cycling ride part 1
The problem with comparing Pylons to Django
Best NYC trip ever!
I want to get busy!
More stupid stuff about my health
Feedparser does not work with Google App Engine
Day after the hospital
What I want in a feed aggregator
My trip to the hospital
Suggest to me a feed aggregator!
An Engineer's Guide to Cats
Pesach and tradition
Import Soul
Comments made easier!
Sick but Ubuntu
Status of NASA Science
Oops... forgot RSS feed
Zed Shaw, YAML, Python Community
Overview of NASA Science
So what did I do on the website?
History of my most used shell commands
321 LiftOff!!!
Our NASA Plone project launches
Next time I'll read the label
This looks interesting...
Issues with zope.formlib
I got a job at McDonalds!
Reality Graph
Ramping up the excercise
Need better charting for Python
meeting plone friends at pycon
10th Wedding Anniversary
Django at Pycon
Pycon Wrapup
First side consulting project hits the world!
I contribute to Python
A fanboy at Pycon 2008
Flickr woe
Finally, good food!
The food of Pycon 2008
Zed Shaw and me
First day of Pycon 2008 - The Tutorials!
Numpy Tutorial overview
My first day in Chicago
Another hour of waiting for my flight
On my way to Chicago and Pycon 2008!
2 days until Pycon and Chicago
Replacing a legacy CMS with Plone
Open source makes the world better
Pycon/Chicago ho!
Django fun
Gary Gygax passed away
Pycon
Pycon 2008 travel update
Working from Panera today
Mistakes not to make again
Pycon
Pycon 2008!
Working with ATTopics
Memorial Mass for my Uncle
Saying farewell to my father's brother
I want an Asus eee pc
Sprint!
Insomnia again
I grok viewlets in Plone 3
Work things
Zope 3 Third Edition is in my hand!
My Zope 3 book is almost here!
The weekend
Plone 3 drives me to drink!
Ditching Funkload
Me being snarky
There was a time when I was snobby about what I did, this post does not reflect my current attitude
Plone Confessional
Plone 3 fun
Funkload + Matplotlib = charts!
Funkload Charting woes
Sorting by dates in Plone tables
Supplementary views in Plone
Litigating reality
SVN Versionator is dead
Hrm...
Gym things
More on SVN Versionator
SVN versionator!
New Grok site!
Baby news
Reason #4293 why I'm happy to be out of ColdFusion
Python is the programming language of 2007!
The hard truth about Python
Playing with Trac, SVN, Apache, and LDAP
My human rights are violated!
import antigravity
Capturing shell output in Python
How fast can I convert a Zope 3 app to Grok?
In where I think about converting from one overcomplicated framework to an abstraction of the framework that was still too complicated for easy use.
Complexity added to Plone 3
Playing with Django
About the 3rd time I went through the Django tutorial, at the time I was so jealous of its simplicity compared to Zope.
Happy Thanksgiving!
Giving thanks on Thanksgiving 2007, what a riveting year.
RIA arguments
Need to get into the habit of using Python sets
Adding a new user at the root of Plone/Zope 2 programmatically
What do you do when zope.Public refuses to be Public?
How do I deploy development code with buildout?
Zope 3 Security
New blog format
Plone lets you import/export workflows!
Pylons vs Django
ZPUG-DC Report 2007/11/07
Head meets desk
I grok Zope 3!
More Italy pictures coming!
What is a real language?
Thoughts back in the day when
Danny the Tourist
Monday and Tuesday
My plan for tomorrow
Maybe my last post
Sunday Funday
Another lovely day in Italia! Well, it would have been lovely but the temperature was rather low.
Saturday Bleahs
Handy code snippet
Friday in Italia!
The morning after a friday...
Thursday in Italia
I'm so busy
KSS or Plone4Artists sprint choice
A note of thanks
Technorati Fun
Mercoledi dentra Italia
Top 5 Design Tips for Skinning Plone
Martedi dentro Italia
Required methods to make a class iterable
Second Day in Italy
Italia picture set
Italia!
I'm in England!
First minutes of the day
Case sensitive search in Zope 2.9.7
Interesting...
Can I be a bit snarky here?
Supersizing YouTube
Python Tips ahoy!
Lambdas no more
TurboGears merges with Pylons
Psuedo Code to Real Code
Playing with Catalog brains
A thought on methods in Plone
Plone Introspection
Image of the Day 'extension' of FeedFeeder experience
Interfaces in Zope 3 and Five
Beautiful Soup is Beautiful
The Dark Side begins its seduction...
JSON and Python
Goodbye Uncle Alex
The passing of my father's brother
Stories About Family
Writing down stories about my family