← Back to Show Notes

Transcript: Jazzband - Matthias Kestenholz

hi and welcome to another episode of django chat weekly podcast or fortnightly podcast on the django

web framework i'm carlton gibson joined as ever by will vincent hello there will hi carlton how

you doing you good i'm good yes i've got a new microphone so it'll eventually be better it might

be a little less audio quality than the past ones but we'll see okay you'll have to give us feedback

folks and today today we've got a special guest um matthias kessenholz with us uh hello matthias

how are you doing hi everyone i'm doing very well and i'm a little bit nervous but i'm looking

forward very much to this chat that's good thanks for coming on show you're nervous i'm a bit nervous

because you two are all wearing django t-shirts and django hoodies and i'm and i forgot to dress

for the show today so yes we'll have a link to the official django merchandise in the show notes

but you're wearing the the Django con Europe hoodie Matthias right yes yeah yeah so all the

virtual conferences I think all their stuff is on there now as well as the default Django so

check it out there you are a bit Django swag so Matthias tell us about yourself what's your

backstory how did how how how'd you come to be on the podcast so I have started working with Django

over 12 years ago now

I've worked with PHP previously

but I just enjoy working with Python and Django

so much more

and the community of Django was also important

just pull factor for me to decide

to start working with Django

it's just a framework I really like

and it's a community which taught me

things which i probably wouldn't have learned otherwise so that's great for me once once bit

and never never go back no yes well so then uh how did you get into php and just programming in

general before that so i i was always fascinated with handheld calculators and i sold all my stuff

as a kid when i was in seventh or sixth grade i think to buy myself a graphical calculator

an hp 80 48 and i learned all about it um back then the programming and the mathematics and

i just enjoyed it so much to tinker around with this stuff uh later i didn't want to stay in

programming too much because i wanted to become an environmental scientist and things got out of

hand a bit because i um got to know a few people and founded a political party with them and then

we also founded a company which i'm still working at now and i just thought it's it's more important

to go into marketing and work for the good people than just go into um and into climate science and

find out once again that we should really change something uh change how we how we live a bit maybe

and so so that the programming was just a thing which i always enjoyed but the mixture of

programming and working for a good cause is at the end what what brought me into web development

and i'm still here 15 years later tell us about the company and the causes and the kind of projects

you work on because that sounds really interesting the company is fine height and it is a company i

founded with five four or five friends um 14 years ago now and we did we did do work for for

different um companies not only but the the things which motivated me most back then was just to go

into campaigning and program campaigning pages we did some work for for the wwf and greenpeace

maybe for the greens and mainly for left-leaning political parties um or just for grassroots

movements ngos and so on we are also doing work for for other companies but we have so to say a

deny list of companies who we don't want to work for we don't only yes so that's that's quite

important and that stayed with us over the years while people changed and the things we do did

change changed that's really cool because you so you're kind of like the web agency for social

justice we try to do that yes well in torchbox also has a non-profit focus as well the to do

wagtail so well i think it i it doesn't surprise me too much because maybe django also as a

framework or as a community has a certain um pool for for people who want to do the right thing

because django was one of the early mover with the code of conduct django was an early mover with

Django girls with all these

initiatives to

improve diversity

and so on

I think that was

that's probably a thing

which possibly also

puts off the bad

guys maybe from working with Django

at least

one could think so

but it's certainly a thing which

keeps me here and doesn't

I'm not motivated

to find other technology or the new stuff i i'd rather stay with uh django which is really stable

and maybe a bit boring but for us that's that's a good thing yeah i'm gonna fight you when you

call it boring i'm gonna say it's super exciting because it's exactly because it's stable and we

can have the latest json fields and all the rest and we can update the first the day it's released

and no it's not going to break it and i think you know let's not fight over that let's rather

that's boring can be really exciting yeah no totally this before we move on there's two things

i want to say but one was exactly that that feeling about the django community i for years

i was using django i never really got involved i never went to django cons never went to conferences

and then i went to django con europe in florence and you know a the diversity mix i've been to

other tech events where it's like you know one female um and a django con isn't like that at all

and the the other was the the range of topics where they're talking about you know diversity

hiring and inclusion and you know by cognitive biases and all these topics which i can't hadn't

really even thought about it was like wow i've been missing this so much um so that's that was

the one thing the other was fine height in the notes here you've got organized using

a holacracy what's that i didn't oh that's the that's the zappos thing yes exactly so sorry to

to put an american spin on it no i mean the holacracy is an american thing um it was invented

i think by brian robertson with who is an american entrepreneur um holacracy is an organization so

an operating system for a company it specifies a set of rules how companies should should work

And one of the important things about it is there are or there should be no implicit expectation towards other employees.

You try to make everything explicit and you try to write all expectations down into in roles.

And then you can just energize these roles or you can just give them away freely.

So it is a way just it's not a completely flat structure, but it is in a way a flat structure where people have a little bit where power and responsibility is at the same level.

So if you want more power, you have to take more responsibility. And you can't have power without responsibility. And also you can't have responsibility without power, which are maybe the two things which are most problematic if you work in such an environment.

I don't know whether you have worked at such a place anytime I have.

And it's really annoying.

And holacracy sort of is one possible way of reinventing the organization structure.

And it works really well for us.

And I think people should have a close look at it.

There are other ways to structure companies, and Holacracy definitely isn't without fault, but for us it's working well.

Okay, interesting.

I think there's quite a bit of self-selection in Holacracy, or at least in my experience, even in startups in San Francisco.

One thing I was surprised about is that I was...

I'm, I'm a self starter, the founders of companies are self starters. But not everyone who's smart

and hardworking is a self starter or wants that responsibility. Like we had one very early

employee in particular, who the founder and I kept trying to give her trying to give her room

to take on responsibility and not be told what to do. And ultimately, she ended up going to Twitter,

she just wanted to be told, which was interesting, because I think before I'd assumed that

if you were hardworking and intelligent you would want more autonomy but her mind and i think quite

a few people's mind don't fit into that so that's sort of the culture of startups one thing i learned

after that is to really try to ask questions that get around are you the type of person that does

well in an unstructured environment which i think overlaps a little bit with holacracy where you

take the initiative but also you take the responsibility it's not it's not for everyone

I think just one important difference for me is I was very surprised that our first employee didn't want to join our ranks as well, so that he didn't want to buy shares. I couldn't believe it back then. These days, I understand it very well, especially when looking back to the type of company we were back then.

But holacracy still allows you to not have many responsibilities, but then you don't have much power either. And that may be fine for you. And also all these implicit expectations where other people, it's not implicit, it shouldn't be implicit.

It should be very explicit, because if your former boss comes to you and expects a thing of you, you can just say, well, I don't see this accountability anywhere in my roles.

And then you can go into a governance meeting, which has a quite rigid structure as well.

And then you can process this tension, how it's called in holacracy.

And there is just a way for everyone to, if you know for yourself what you need, then you can more or less get it, or at least that's the idea.

But of course, well, not everyone is the type who knows what they want, and that will be hard for them anyway.

And yes, so we have a few problems, but maybe that's tangential now.

I don't know.

I have to think about that, especially when speaking English, what I want to say.

I don't know.

No, but these sound like difficult problems in any organization, right?

So it sounds like it gives you a good framework or a framework for addressing the human interaction

and the role interaction problems that come up in any organization.

The switch to tech, I want to note, so your first contribution was 2008, I believe, you put in the docs, which is 12 years ago.

I was surprised myself.

Could you talk about just, I mean, I know it's 12 years ago, but what was that process of you were using Django, something came up, and you, because Carlton and I spent a lot of time trying to encourage people to contribute to Django and make it less intimidating.

But you just was it, I guess, was a work problem you had? Or what was the, if you recall, the specific issues you say in the notes, it was to do with your master's thesis?

Yeah, so I did a master's thesis on GIS based regionalization of lifecycle assessments. And we had, or I think we were using generic foreign keys quite a bit, or maybe it was standard foreign keys, I don't remember exactly.

And it was just, if you have had several foreign keys pointing to the same model, the query, the SQL query engine got confused and it was just an edge case I hit.

And I think I just contributed a more or less detailed report and the problem itself was fixed by someone else.

The first problem, I think, where I really tried contributing a fix

was a problem I encountered with the template language.

And since I had been working maybe as a programmer for several years

and maybe Django was a little bit younger or even pre 1.0,

maybe it was less intimidating back then.

and I just went into the ticket tracker and proposed a patch.

It wasn't the first open source contribution either,

because I already contributed a few patches maybe to Git and to other projects.

So it wasn't the first time I interacted with an open source project.

But later on, I got maybe confused a bit myself with the Django contributing process and just the standard for the stability, which is expected and which I also understand and like in the Django project sometimes did make it hard to get the change merged, especially before the Fellows project.

I mean, the Fellows project that helped very much.

A lot of what the fellows do is exactly this. Taking a patch, reviewing it, saying, hey, we need to change this. This will break backwards compatibility. We need test coverage here. But it is, it can be a long process. You know, it's like two or three reviews to, you know, dot every I and cross every T on your patch to get it merged, which I understand could be frustrating.

but i guess i always say to people well what's the other side is django good you know when you

download django and you use it do you trust that it's going to be of a high caliber so

yeah i think the the problem is is less that i mean of course there there is the issue of

code formatting or maybe a really minor so-called minor problems which are frustrating if there's

a back and forth of them but the problem a few years back was more one of you didn't even get

and review. And for example, Jacob, one of the original authors of Django,

I think they instituted this program where you could review five patches and then you had a

guaranteed review of your own patch. But that didn't work really well either for obvious

reasons but i mean it was just a good maybe a good try to to fix this problem of the patch queue

yeah no i mean it's still difficult like you know maris and i are working you know maris is full

time i'm part time and we've still all the time got 20 20 plus patches on the list plus you know

150 prs that are at some stage of ready not ready you know sometimes what is really helpful you know

people come along and they take five ten minutes out and they look at a PR and they say hang on

this is not too bad or this is okay or this needs that and it just bumps it forward and it enables

it to pop over the um out of the sea of pull requests and it enables Maris or I to grab hold

of it and say okay that one's that one we can move forward sometimes the the pull requests feel like

a bit like a denial of service attack I tried doing that a few weeks ago and then I noticed

again and again that there are just so many issues which which i don't see because i haven't

been working on this project as much as you have for example and that's just sometimes i'm not sure

but but there are times when i feel bad for accepting an issue or just um reviewing a pull

request and maybe leaving a positive message and then you have to come and fix everything

no no it's it's really well look from from my perspective i i think believe maris agrees he'll

you know text twitter in if we've spoken wrongly for him but it's really helpful to the fellows

for other contributors to do reviews or to triage a ticket it just helps you know and if there's

something that you know if you've got a pi and you think it's nearly ready and you mark it ready

for checking maris and i know that we can go and give it a review and if it's not we'll just bump

it back but if it really helps you know it really takes that because the difficulty is that there

are so many tickets so many pull requests is identifying the ones which you can make progress

on quickly so that does help two things i wanted to talk about the two things you're known for

right one is that you're part of jazz band and the other is fine cms which which do you want

to talk about first?

Maybe let's talk about FineCMS first,

because that was just chronologically,

it comes so much earlier than my contributions to jazz band.

OK.

So tell us, what is FineCMS?

What's the elevator pitch?

The FineCMS is a really small module on top of Django.

administration interface which allows you to mix and match different blocks

content blocks instead of having only the Django inline mechanism for example

you can if you want to have a page or an blog entry you can add a rich text

content block and then you can add an image block and then you can add a rich text block again and

so on and so on and these content blocks are reusable plugins um and i mean the the interesting

thing for me is just that there is uh that that all of this should be reusable not just for pages

but also for blog entries for for shop items and it is more of a content management framework maybe

than a content management system that's the important distinction what would you say

describe a content so content management system we kind of can use to make pages we could use to

make blog posts what's a content management framework what do you mean when you say that

if you work with wordpress for example you just have pages and blog posts and you have nothing

else and if you work with django you have this possibility of creating a model for for each

maybe a real world entity that you're working with you can create a model for a person you

can create a model just for a project and then you can create a model for for um just for some

painting they did and then you can create all these relations which connect these entities

with each other as it that that's what a really relational database is all about for me

and if you've got to know that the power that you get when you structure your content well

and all the automatizations you can make you don't want to go back to structure your page content in

the same in the old way again where you just have one big blob of of rich text content maybe but you

want to reuse this structured content and pull it into this CMS and many maybe also Django based

many CMS systems they just offer you this list of features and then when you want an additional

feature you're on your own and FindCMS offers you these tools and building blocks to build

a customized cms yourself for for every site which doesn't have all these fields and check boxes

which you don't need at all and one thing i like about it is it's very close to django if it always

feels like you know it it's just django yeah that that was that that was important for for for us

because uh at the beginning we just maintained this ourselves and we just wanted a really thin

layer which reused almost all of Django because we had so much so much success with the built-in or

the bundled administration interface we didn't need to educate people how to use it and we didn't

want to build our own just our own administration interface and then we because if we did that maybe

it would be better for a moment it probably wouldn't but maybe it would be and then we'd

have to maintain this down the road and we already did this a few years ago when when still working

with php we had our own framework we had our our own cms and it was just so much work all this

maintenance that we didn't have the time to to do customer uh projects and because of this you're so

busy maintaining the cms that you're not getting any actual work done yes exactly and i mean if

that's just a toy project then that works well but but once you once you start using it just on

dozens of sites you don't want to have all this maintenance burden okay um so what are the big

ideas with fine cms what's the how would you you know because you've got um the things that jump

out for me the content editor and the the you handle tree the tree structure of the site very

well it's one thing i wanted to talk to you about so let's take the tree structure tree queries and

sql databases don't tend to go too well together right yes they don't and um when when i when we

started find cms in 2009 or i think it was 2009 i started searching for for a management solution

And I found Django MPTT, the Modified Pre-Order Tree Traversal, or in the literature, I think it's also called Nested Set.

And it's just a way to add additional attributes to a model which should make querying a tree faster,

where you don't have to you have to you you have to root node and then you have to fetch all the

children and then you have to fetch all the children of all the children and that's really

inefficient or it was really inefficient back then and you don't want to do all this back and forth

from python to the database and then to python again so what's the what's the solution because

i've always tried to so i've got to the stage in my old age where i'll just save everything as a

flat um you know flat items without the tree structure and then i'll serialize the tree

structure separately and just you do an inquiry to fetch all the items and rearrange them because

i don't like going back to the database and fetching all the children of the children of

the children so what's what's how how should i be doing that efficiently you should these days if

if the tree isn't too big and if you don't know that you really need a different way to do it you

should just add one parent foreign key to each model and then you should use recursive

commentary expressions to fetch this data from the database. That's just a way to move the

recursion which you need to build a tree into the database and not do it in Python because the

database is these days it's it's fast enough and that was an idea i got actually from from one of

the um guys so i don't know his name but it's it was a it was a guy working on this cause because

they said this even at this cause we we are using commentary expressions to do this they are fast

enough and i thought if it's good for this cause then it will work for us too yeah interesting

because i mean i guess in principle a a nested thread or a site structure could be infinitely

deep but it never really is right it's it's only three four layers at most and yeah and even if it

is 10 layers deep the database will be fast enough if you're using postgres or mysql8 or

recent versions of maria db they all understand this um this sql construct and that works really

well okay and you have the tree editor in fine which sort of wraps all this up and gives us a

nice ui for editing yes exactly um one of the problems you don't get when you use this three

queries cte stuff which and which you were prone to get with mptt is that mptt has redundant values

in the database and they are corrupted from time to time and then you have to rebuild your tree

structure and that's really annoying and i'm saying this as a heavy user of mptt and also a

co-maintainer you can use it and i won't drop it but maybe if you don't need this performance then

maybe use something else which is normalized and where you do not have redundant values which are

prone to break from every now and then okay interesting so say i want to get going i've

listened to the podcast i want to get started what should i use because there's kind of two

versions of fine right there's the version one and then there's is the newer version is what

what's your take there uh you should look at the fine cms3 um suite of tools you should look at

And you should probably start with the FindCMS3 documentation, which has a link to an example project, which is really small.

And you should be able to get it up and running in just a few steps or manual steps.

And it's called FindCMS3 example.

And I think that's the best place to start.

One is just the old workhorse and we will maintain this for years to come, I hope, especially because we have many or a few big projects which are depending on it, but it has a bit too much magic.

in it and you really want to stay with fine cms3 it's it's simpler and has a better focus for what

it wants to do okay and you wrote a post recently which we'll link to in the um in the show notes on

how fine cms is still relevant now because there's wagtail there's django cms there's other

things out there but you were making the case for fine cms in that post oh i should maybe rework that

because in my mind it's just it's just fine cms as a family of software projects but

i should really talk about fine cms 3 then or maybe i misunderstood you no i'm just saying

there was a good i mean this is it came back to my mind because you put up that post saying it

was still relevant and you know the one that a lot of people are using now is wagtail and

one thing you brought out was the differences between wagtail's approach and the approach

at fintechs so i mean find cms just but in 10 years ago or maybe eight years ago when people

talked about django based cms's find cms was almost always part of the list that was selected

for for comparisons and these days it isn't because it's just it's it's niche and maybe it's

Or probably it's a bit unknown, which is probably also because I'm just not very good at marketing it.

But in a way, I mean, it's just fine if it works for us and it's small enough to not be a burden for us regarding maintenance.

But I would love if more people would just learn about these ideas.

Because, for example, Wagtail gained a stream field a few years ago.

And this stream field, as far as I understand it, does exactly the same thing the FindCMS content editor does.

And they started to use a similar model, too, but just several years later.

I mean, the Django CMS from DVO, which is Zurich-based company too,

by the way, I know the founders as well.

They had a few of the same ideas as well,

but they executed them differently, obviously.

Okay.

I mean, so one thing I'd say about it is that it's worth giving a go.

If you've already got a Django app

and you just you want to add on these content management or these content frameworks stuff

i find fine is good for that because it it kind of integrates with what you've already got it

rather than coming along and to replace and that's that's for me that's a nice selling feature

it's like you keep to keep doing django rather than replacing it with something else but you know

um anyway well let's move let's move on tell us about jazz band as well because jazz band

what is jazz band so what sort of projects are part of it because there's there's there's lots

of the classic third-party packages right yes many of these packages were just developed by

by by a few people for years and years and they wanted to find a place probably to to move

or when they wanted to um to leave the development to to someone else they had to find

new maintainers previously and jazz benches offers a place now to move these projects to

and there is a community of people who who are hopefully able to take up the bat and continue

maintaining this this project i think any any given project like doesn't necessarily take too

much but it's just that it's wearing because there's a constant stream of incoming tickets

and like then every new django version you need to bump all the dependencies and you're a new release

and you know these kind of jobs add up and if you if it's just you by yourself it can be like

yeah and all of these projects just they don't have this fellows um system yeah right which is

a pity but yes so the project yeah the jazz band projects where i'm doing um much work or the the

projects where the project where i do the work i do is mostly just django debug toolbar

which is amazing right yes it is and i see my job may i i looked at the commit statistics

a few days ago and i noticed that my contribution is mainly also in the place of i mostly doing

reviews and merges and releases i don't write much code myself but i got into maintaining this

project because i want i think i wanted to upgrade to django 1.10 where the middleware

setting changed and django debug toolbar didn't support it back then and jazz band just offered

me a way to jump in and just submit this feature or this fix myself and the previous maintainers

were maybe burned or bummed i don't know how to take responsibility around it and

i just thought well that that maybe django sometimes would be as i said before

my quality standards maybe aren't well enough for django but there certainly are are um

so i i know django debug toolbar quite well these days and i think i can judge the the

pull requests whether the quality is is correct or not and then i'll just throw out a new release and

it just feels really good just to be a part of something bigger and that's what chas band

offers too that's super i think it's a really good way to give a little bit back to the community i

always say i always describe my experience of getting into open source where it was like um

it was just like a hobby i do you know a little bit here and there just you know on stack overflow

or on the GitHub tracker on Django REST Framework.

And then, you know, the danger is get this burnout thing.

The danger is giving too much.

So like any hobby, you know, if you were going to Tai Chi classes,

you'd go on a Thursday night, you'd give it a couple of hours.

You wouldn't do it, you know, four hours every day

because that would be insane, right?

So if you are going to get into open source,

A, you know, bracket it.

Say, yeah, I'll give it a couple of hours a week.

That's fine.

And that's probably enough to contribute to a project.

And then Jazz Band is an awesome way

because there's Debug Toolbar, there's Django Configurations,

there's all sorts of awesome packages.

I can't remember them.

A community of people who are there to help you.

You know, you can do a bit, they can do a bit,

and it's not somebody on their own getting burnt out of the defense,

maintaining the project they sweated over.

So anyway, super. I'm all for that. Brilliant.

Matthijs, is there other stuff you want to talk about?

No, I really don't.

I just think, well, don't feel afraid to try to contribute.

And maybe it's enough to just jump into the ticket tracker

and submit an issue or just submit the pull request.

I think you'll like the experience.

We'd love to have you and welcoming of us we can be.

And I really hope the schools stay open, maybe.

that's that's probably oh who knows that's a really 2020 issue right we had what are they

open in switzerland sorry carlton to interrupt yes they are open right now but i mean it looks

really bad we have it's regarding the ratio i think we overtook the u.s a few days ago

just the infection ratio

and I don't know

how long this will go on

so

we were talking about wearing

masks yesterday evening

maybe in the office

but I'd rather stay at home

anyway because it's just

I can do so much

better work and concentrate

more as an introvert

I sort of

like this that now I can stay at home

so much and go for a run instead of just drinking more coffee so that's great for me

swing some roundabouts no and even with the kids they stay they they ask less questions

than people in the office but maybe you want to cut it out that's not

Okay, so right. Well, let's, let's call it a day there. That's super. Thank you so much

for coming on. And, and folks at home give FindCMS a good try. It's an interesting platform.