Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    C

    Chris McDonough

    plope.com · Personal blog · on HN since 2007

    Chris McDonough, a Python developer and Pyramid web framework author, writes about framework design, debugging, open source maintenance, and software culture.

    Visit blogHN submissions
    Web DevelopmentProgrammingOpen Source & Linux
    What HN says

    HN commenters link it for Pyramid's auth API postmortem and optimization profiling, and for his essay on what counts as Pythonic.

    Stats for nerds
    23HN people shared it
    20linked in comments
    360story points
    Apr 2014last shared
    2011people per year2014

    Top posts on HN

    1. 1
      You're the Smartest Guy In The Room ... but please, try to restrain yourself.
      1 person · 137 points · first shared 2009 · 139 comments on HN
    2. 2
      Lifestyle, Inc. (2004)
      2 people · 51 points · first shared 2014 · 4 comments on HN
    3. 3
      On Using Debuggers
      1 person · 51 points · first shared 2011 · 61 comments on HN
    4. 4
      Why I Like ZODB
      3 people · 50 points · first shared 2012 · 19 comments on HN
    5. 5
      Pyramid's Optimizations - why it executes less code to do more work
      1 person · 15 points · first shared 2011 · 5 comments on HN
    6. 6
      Open Source Project Maintainer Sarcastic Response Cheat Sheet
      1 person · 15 points · first shared 2011 · Discussion on HN
    7. 7
      25 Years of the Model M
      1 person · 14 points · first shared 2010 · 5 comments on HN
    8. 8
      Pyramid "Auth" API Design Postmortem
      3 people · 6 points · first shared 2011 · Discussion on HN
    9. 9
      Political Loyalties in Web Frameworks
      1 person · 6 points · first shared 2008 · 1 comments on HN
    10. 10
      In Defense of Zope Libraries
      1 person · 3 points · first shared 2011 · Discussion on HN

    What HN people wrote when they linked it

    • yeukhonApr 2014

      What you say is not always true either.

      I do Python mostly. Django? Fine. It has an excellent auth system out of the box. But that kind of auth system isn't very flexible either. Now I barely do Django development today so please excuse me behind any insane changes.

      Flask and Pyramid world? Custom auth to me. They both have community modules for auth stuff, but do I really like them? I am not the kind of guy just pip install random "useful" package these days. Let's give another example. A year or two ago I tried to do social auth in some of my django and flask apps. Maybe I was dumb but using that social-auth library took me a while to get some of login working. Plus, the code was messy and buggy. In the end, I said screw that and implemented all of the custom login myself, just reading the official doc from twitter and facebook. That also took me a while but I knew the whole implementation inside-out. If I don't trust my own implement because it is insecure, then I must spend the same amount of time inspecting other people's custom modules.

      The truth is, generic auth system is hard and is not flexible. In fact, too flexible can be a bad thing: http://plope.com/pyramid_auth_design_api_postmortem

      I like customized auth system based on the api provided by the framework - that' what makes Pyramid powerful to me. Sometimes your community auth module can have limitation that you probably have to hack around.

    • chrismJan 2011

      Since you believe this using C to reduce function call overhead is cheating, here's Pyramid 1.0a9 profiling output with the "zope.interface" C optimizations disabled (same methodology and code used to test the C-optimized variant):

      http://plope.com/static/noncoptimized.txt

      That's 27 lines of profiler output, which, if you're keeping score, is still fewer lines than any other framework tested. We're not really hiding anything here.

      The comparisons to other frameworks are largely a gimmick to drive traffic and comments, granted. In the real world, these numbers shouldn't make the difference about whether you choose one framework or another.

      However, there are actual speedups to be had by other Python web frameworks if they'd consider using some of the techniques outlined in the blog post. In the real world, actual benchmarks seem to have Pyramid bottlenecked by the WSGI server (see for example http://blog.curiasolutions.com/2010/11/the-great-web-technology-shootout-%E2%80%93-round-4-pyramid-vs-django-vs-tg-vs-rails-2-3/), so the optimizations we're doing are working, AFAICT.

    • huxleyAug 2012

      There are lots of people that agree with you: http://www.plope.com/Members/chrism/pythonic

      I preferred what Ian Bicking wrote in response: http://blog.ianbicking.org/unzen-of-unpython.html

      One thing I like about the Django community is that part of Djangocon specifically features critics who are invited to criticize Django or some aspect of it, for example:

      "Why Django Sucks and how we can fix it"
      http://blip.tv/djangocon/why-django-sucks-and-how-we-can-fix-it-4131303

      Flasky Goodness (or Why Django Sucks?)
      http://reinout.vanrees.org/weblog/2012/06/06/flask-django-sucks.html

      That's much better and productive than circling the wagons and letting personal insults fly.

    • hysanJun 2012

      Well that's cause the Pyramid Auth API is admitted by the authors to be overly complex. They did a post mortem here and you can read about some of the mistakes they made when designing the API: http://plope.com/pyramid_auth_design_api_postmortem

      The most relevant line to take away from their post mortem is this: "Unfortunately, when designing a framework, you get exactly one shot at creating "the right" API. In this case, we didn't."

      So even with a decoupled API, if the design doesn't fit your needs or is too cumbersome to use, you will still need to find a third party solution or hack the core code. Both of which, as mentioned by others, are possible in Django.

    Related

    Jesse Nollerjessenoller.com50 people

    A lot happens

    Jesse Noller
    Personal · last shared 2020
    Nick Coghlancuriousefficiency.org28 people

    Languages to improve your Python

    Nick Coghlan
    Personal · last shared 2024
    Ian Bickingblog.ianbicking.org107 people

    Firefox Was Always Enough

    Ian Bicking
    Personal · last shared 2026
    Cal Patersoncalpaterson.com102 people

    Firefox usage is down despite Mozilla's top exec pay going up

    Cal Paterson
    Personal · last shared 2026
    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026
    Zed Shawzedshaw.com280 people

    Dear Paul

    Zed Shaw
    Personal · last shared 2026
    Chris Wellonsnullprogram.com295 people

    Why Aren't There C Conferences?

    Chris Wellons
    Personal · last shared 2026
    Bluish Coderbluishcoder.co.nz77 people

    Using Freenet

    Bluish Coder
    Personal · last shared 2025