Iommi – your first pick for a Django power chord

(iommi.rocks)

54 points | by boxed 5 days ago

6 comments

  • Loeffelmann 9 hours ago
    this looks like one of those things where it completely breaks apart if you want to do anything custom or out of line to what is intended by the framework. Causing way more headaches down the line then if you just did it yourself from the start.
    • j_lubcke 8 hours ago
      Actually, how it behaves with special cases was one of the initial requirements when it was built. A design goal has always been that there should be escape hatches. For example almost all settings can be a call-back if the value is not known up front.
    • pantulis 8 hours ago
      From my experience with similar things built around Rails (ActiveAdmin and others) being based in a dynamic language helps and allows to accomodate a lot of customizations.
      • boxed 7 hours ago
        It can. But it doesn't necessarily mean that. Or maybe it means you CAN work around it, but it's cumbersome/bad to do so. Imo the Django Admin is like that: lots of ad-hoc and random customization options and lots of missing options, and it's a pain to override etc.
    • boxed 8 hours ago
      I understand that gut feeling. I've worked with many such systems. iommi is not like that though, because we HATE systems that have a nice two line demo but then immediately falls apart.

      We consider any failure to scale up customization a high priority bug.

      How do we handle this in practice? Nice defaults, easy to do deep customization with zero boilerplate, AND escape hatches of various forms. So if you need to just render your own template for an entire table row of form input field or whatever, you can do that. Always.

  • dotandgtfo 6 hours ago
    Please add more examples or a demo page or something. The gif and picture in the github repo is the single most descriptive part of your documentation, but a gif is terrible UX and a picture doesn't show off interactivity. This should be front and center on your landing page.

    This may be useful for me, but I'm not going to bother setting up a test Django environment to test this just to find out that it isn't what I expected.

    • boxed 6 hours ago
      The docs has a lot of examples, especially the cookbook. For example: https://docs.iommi.rocks/cookbook_tables.html

      In the docs, if you click on the links "forms" or "tables", that will lead to the docs for those parts with a few example, and that in turn links to the cookbooks.

      There's also my talk from Django Days: https://www.youtube.com/watch?v=ydRdbA_tXdw&pp=ygUXYW5kZXJzI...

      • dotandgtfo 4 hours ago
        Thanks, looks interesting. I may play around with it.

        I think what happened was that I landed on your page. Read the landing page, which only contained code. Scrolled to the top and clicked "install in minutes" and was unexpectedly redirected down the page. Then I clicked into github and didn't click on the forms/tables hyperlinks there.

        I think what I'm saying is primarily that I'm lazy.

        Secondly, your landing page is too code oriented and does not show off any UI and your anchor link (which typically links into documentation) short-circuited my search for a docs page.

        I think you would have gotten considerably more upvotes on this post if you show the product off more on the landing page. Despite the obvious lack of effort I put into learning your product, most people who clicked on this link today did even less.

        No shade or anything. Again, the product looks nice now that I've seen it in the docs.

        • boxed 3 hours ago
          All good feedback. Thanks.
    • BiteCode_dev 5 hours ago
      Same. But I have now a new secret weapon, this claude code prompt:

      Read the doc of https://iommi.rocks/, make a demo project showing of the capability of this tool.

      (I have a claude.md with more info, but that's the prompt)

      Came back with a fully functional demo with everything installed and working. runserver, and a glance at the code, and I get it.

      TL;DR: it's like the django admin, except you can use it in any endpoint in your side. Pretty nice.

      • boxed 5 hours ago
        There's an example app too: https://github.com/iommirocks/iommi/tree/master/examples

        I've had mixed success with Claude. It keeps adding too much display_names to everything for example which is annoying.

        In theory we could put that up, but I don't particularly want to maintain such a live example app and pay for hosting and all that, only to have it instantly crash under the load of HN :P

        • BiteCode_dev 5 hours ago
          BTW, your "https://kodare.net/2025/08/08/documentation-that-is-never-wr..." is fantastic, I always liked the idea of docstest, only the implementation sucked.

          But this is much better. Any plan on open sourcing this infra for sphinx or mkdocs?

          • boxed 5 hours ago
            Thanks.

            I've thought about extracting it, but I think it's a lot of work unless you want to support only Django and rST which is what we're using. At least the iframe part is very specific to the web framework.

  • boxed 9 hours ago
    More information and back story can be found on my blog: https://kodare.net/tags.html#iommi

    We've worked on this since 2014.

    • graemep 8 hours ago
      That is impressive. It feels like an entire framework with a lot more functionality and has a lot of things I have been wishomg Django had.

      Very few dependencies outside testing. I like that. I was surprised flask is one though.

      I am thinking about using it for some sections (a management/dashboard bit, and probably the admin) of a site, the rest of which is plain Django. Are there likely to be any problems doing that?

      • chrisweekly 5 hours ago
        tangent: "wishomg" typo for "wishing" is kind of poetic
      • boxed 7 hours ago
        Hmm.. flask shouldn't be a dependency. I tried to get iommi to work on flask/sqlalchemy many years ago, but that's somewhat abondoned...

        > I am thinking about using it for some sections (a management/dashboard bit, and probably the admin) of a site, the rest of which is plain Django. Are there likely to be any problems doing that?

        Incremental adoption and mix-and-match is also a fundamental design goal so that should work fine.

        • graemep 7 hours ago
          > Incremental adoption and mix-and-match is also a fundamental design goal so that should work fine.

          Thanks, going to try it out on my project then, probably today.

          > flask shouldn't be a dependency.

          Its in the rest requirements: https://github.com/iommirocks/iommi/blob/master/test_require...

          > I tried to get iommi to work on flask/sqlalchemy many years ago, but that's somewhat abondoned

          I was wondering whether something like that was possible.

          • boxed 7 hours ago
            > [flask] in the test requirements

            Good point. I've removed it. Thanks.

            > [iommi for flask possible]

            The HTTP parts are super easy, it's the ORM mapping support that is the big issue. When I made an attempt first time SQLAlchemy was in the middle of a huge API change too, which meant the docs were rather bad and incomplete. Maybe it's better now.

            Supporting both Django Templates and Jinja2 is a bit annoying too, but doable.

            • graemep 6 hours ago
              Thanks, that was quick!

              I noticed you are the developer of one of the other dependencies, django-fastdev which fixes a lot of Django annoyances itself. Very nice.

              TBH I would probably use iommi with Django even if you supported Flask or similar because the Django ecosystem is huge and I am familiar with it.

              • boxed 6 hours ago
                The idea would be to support both transparently.
  • est 11 hours ago
    what's the techstack for Iommi? Bootstrap with XHR?
    • boxed 10 hours ago
      Django backend. By default bootstrap as CSS framework but we ship with finished implementations for many more.

      Dynamic behavior is mostly limited to pagination and filtering on tables, which is just some plain JS with fetch().

      Oh, and foreign key/m2m backed fields in forms/filtering is backed by select2 in ajax mode.

  • ubermonkey 5 hours ago
    I don't know what this is but I am 100% here for the name.
  • ranger_danger 11 hours ago
    guitar pick, (Tony) Iommi... I get it.
    • runep 10 hours ago
      Tony Iommi almost quit playing when he lost two of his fingertips in a workplace accident, but was convinced that he could learn to play with the remaining stumps after listening to Django Reinhardt who also lost the use of two of his fingers, but adapted his playing style.
      • boxed 10 hours ago
        Plus most of iommi is written while listening to Heaven & Hell and Mob Rules on repeat :P
        • lapcat 7 hours ago
          It seems of questionable legality to blatantly use his name for your product.
          • cluckindan 7 hours ago
            Trademarks only apply within an industry.
            • lapcat 7 hours ago
              I didn't say it's trademark violation. A person's name is not a trademark. It's about using someone's name to promote a product that the person is not associated with in any way.

              Iommi is not the name of a band. The band's name is Black Sabbath. Tony Iommi is the name of a person, the guitar player of Black Sabbath.

          • boxed 7 hours ago
            I mean.. there are a lot of people with that name, and it's an homage.
            • lapcat 7 hours ago
              > I mean.. there are a lot of people with that name

              What are you saying here? You already admitted publicy that it was about Tony Iommi the guitarist of Black Sabbath and not anyone else with the name.

              > it's an homage

              Which of course directly contradicts the first clause of your sentence.

              • pessimizer 6 hours ago
                > You already admitted publicy that it was about Tony Iommi the guitarist of Black Sabbath and not anyone else with the name.

                So that means that the only way that you can absolutely associate the project with Tony Iommi is the post in which the author says that it has nothing to do with Tony Iommi other than he's a guitarist like Django Reinhardt? Seems like the opposite of a slam dunk.

                It's also 1) a very obvious and cute joke for people who are familiar with both guitarists, and 2) you don't own your last name - although if you put "Iommi" on a guitar (or a studded leather jacket), you're going to have a problem. But if you call your casserole recipe Iommi's Casserole, only a moron in a hurry is going to be confused.

                https://en.wikipedia.org/wiki/A_moron_in_a_hurry

                • lapcat 5 hours ago
                  > So that means that the only way that you can absolutely associate the project with Tony Iommi is the post in which the author says that it has nothing to do with Tony Iommi other than he's a guitarist like Django Reinhardt?

                  No, everything on https://iommi.rocks screams Tony Iommi, who was himself famously inspired by Django Reinhardt, because they both suffered severe finger injuries.

                  "Your first pick"... guitar pick.

                  "for a Django power chord"... Tony Iommi was famous for using power chords (in part due to his loss of fingers).

                  The sample code uses "Album" and "Artist".

                  Even the "rocks" in the domain name is suggestive.

                  > Seems like the opposite of a slam dunk.

                  > It's also 1) a very obvious and cute joke for people who are familiar with both guitarists

                  These consecutive sentences are strangely contradictory. Not a slam dunk, yet very obvious?

                  > you don't own your last name - although if you put "Iommi" on a guitar (or a studded leather jacket), you're going to have a problem.

                  As I said in another comment, this is not a trademark issue. It's good that you admit, though, that there are limits to using a person's name on a product. https://news.ycombinator.com/item?id=45758717

                  > But if you call your casserole recipe Iommi's Casserole, only a moron in a hurry is going to be confused. https://en.wikipedia.org/wiki/A_moron_in_a_hurry

                  Of course nobody is going to confuse a casserole or a Python package with a guitarist. But that's not the issue. Again, Tony Iommi is a person and not a product. If you market your casserole by giving the impression that Tony Iommi may have invented the recipe for the casserole, or at least knows of and endorses the casserole, that would be problematic.

                  • boxed 5 hours ago
                    > "for a Django power chord"

                    That's also a pun on "batteries included". We don't have batteries included: we supply a power cord.

                    I never got around to implementing my idea of randomizing "chord"/"cord" on each page load though :P

              • boxed 6 hours ago
                Maybe I'm confused. Which law would you presume was violated? Did Django violate the same law when it was named Django? Did Python violate that same law?
                • Triphibian 4 hours ago
                  The ultimate test of this would be to name the next thing Kardashian.
                • lapcat 6 hours ago
                  The issue is that Tony Iommi is a live person, so using his name can give the impression that he endorses or is in some way associated with the product. Django Reinhardt died in 1953 and thus cannot endorse a product 50 years later. Monty Python is not a person.
                  • ofrzeta 5 hours ago
                    I don't think anyone is under the impression that Tony Iommi is promoting a web framework.
                  • boxed 6 hours ago
                    Monty Python was at the time a group of people (seems worse than a single person), and afaik also a trademark (also seems worse).

                    But yea, maybe Python made a legal gamble that just happened to work out. I am not a lawyer :shrug:

    • glouwbug 1 hour ago
      Django also missed a couple fingers ;)