← Back to Show Notes

Transcript: Django for the Meat Industry - Bryton Wishart

Hi, welcome to another episode of Django chat podcast on the Django web framework. I'm Will

Vincent joined by Carlton Gibson. Hello, Carlton. Hello, Will. And we're very pleased to welcome

Brighton Wishart from cured compliance to the show. Welcome, Brighton. Yeah, thank you.

Thanks for coming on. So this is a fun one for us, because I feel like we can sometimes be a

little bit insular talking to people who are working directly on Django. But you live in

Australia, and you're building this real world solution with Django. So I'm excited to talk

about what that is and how you've done it. So maybe could you give the quick pitch on what is

cured compliance? Yeah, I definitely so cured compliance was a bit of a brainchild between

myself and my business partner who just happened to be a butcher. But what we've looked to do,

I guess, is digitize all the compliance and regulation.

That a retail butcher in Australia has to do. So, you know, people don't realize the amount

of I guess, regulation that goes into making meat safe and, you know, ensuring the meat that

a butcher is selling to us consumers is safe and, you know, fit. Well, not in the US, we just had a

we just had a big boar's head scandal where it sounds like they just did whatever they wanted

for a long time. Yeah, look, Australia originally actually had something very similar back in the

90s. And I think that's what we're talking about. And I think that's what we're talking about. And

I think that's what we're talking about. And I think that's what we're talking about. And I think

kicked off regulation um so it's yeah we seem to move very we seem to like regulation in australia

can i just butt in because like one of the supposed as a brit one of the supposed advantages

of brexit was that we'd be able to import us meat and then like but hang on us meat the standards

aren't quite what we were used to so there was a bit of like is that i don't know but anyway carry

on yeah well i don't know if it's the standards it's it's the you know at least in the united

states there's the fda federal drug food and drug administration and they noted that there were

problems but as often as the case they're severely underfunded yeah anyways we don't need to get into

that but yes it's it's good that especially food that we consume has regulation and so there's

quite a lot of it in australia yeah and we just happened i guess to come across a gap where

everything was paper-based so it was kind of this opportunity to really innovate the industry right

which was awesome give us a sense of the

timing because you you've been up for a while but when did you when did you first start trying to

you know attack this with a web solution yeah so as a business this is sort of our first

third year of operation um so we're still a fairly young startup but i maybe started this

six months before we incorporated um so it's sort of been about a three six month journey

and that's realistically where i sort of found django so that was kind of my first time i touched

it as a framework um was sort of that three years six months ago uh just kind of when we had this

idea so can i ask you were assessing two or three options out there what stuck out about django how

come you sort of you know because you've been taking a bit of a punt if you didn't know it

previously yeah i guess for me it was kind of i looked through a whole lot of things i sort of had

a fundamental knowledge of python uh from the early days um and this was back sort of when the

machine learning kicked off and i was like oh my god i'm not going to be able to do this

with the introduction of the cloud computing so i'd sort of done a bit of work with python there

and went that's kind of the language i know and trust um and then just went hunting for frameworks

and for me it was all about i didn't want to do the difficult things like manage authentication

manage all of those sort of things i guess that yeah we say is batches included um that some of

the other frameworks just didn't have because yeah you don't want to get authentication wrong

so but so that that batch is included thing that's a real big selling point right huge huge for me

so then maybe walk us through like where did where did you start what was the you know start project

and and then what yeah i i guess it was kind of a start project um and start just diving diving into

building or taking some of these paper forms and just digitizing them and that's that was kind of

the start um and originally when this started it wasn't so much we wanted to make a product to sell

this was

how do i solve a problem for my mate's business more or less right how do we perfect digitize this

and make it simple um and so there was kind of no plan to productize this or commercialize it in

any way shape or form it was purely let's build something nothing you know we did the first bit

of research was which was does something exist in the market that we could just buy and use and solve

the problem and there was kind of nothing designed for the meat industry everything was very much a

hey you're a cafe

there's a kind of your pre-start checklist and that's that's kind of it right so there's a bit

more involved especially when you're doing um like small goods production that sort of stuff in the

meat industry you've got to have that traceability layer and so there was sort of nothing out there

and we decided to do the uh idiotic thing and build it ourselves it was nothing like ignorance

right definitely definitely nothing like ignorance i was going to ask so did you go form first um so

you're going to start with the models and then they've got a view and then the form comes last

but you because you're starting from these paper forms is it almost the other way yeah it was kind

of start with the forms and then you know very quickly learnt about the rrm and how that operated

and what models were and that sort of part because you know previously my programming knowledge was

very much uh visual basics right back i want to say 15 years ago and you know you back then you'd

write you you'd write a secret a sql code to deploy to a database and that was it so this whole model

and rrm was a very foreign concept to me as a developer like it wasn't something i'd touched

before so yeah um very quickly learned that the rrm and models were my best friend and it meant

i didn't have to write sql which was amazing um and then it was kind of this build the form build

the model and start to really think about what what do models need to look like to digitize

because there was a bit of a learning curve going from here's what's going on here's what's going on

here's a paper form that sort of has here's all the information they want to capture but

how should this best be designed into a model that's going to allow that whole class-based

driven you know automatic form and all that sort of stuff and i'm assuming there's a little bit of

back and forth like a full start like oh you create a model and that's not structured right

and totally i um i got very very comfortable with working with migrations

and rolling migrations back and doing all that sort of stuff um

really quickly because yeah you do make mistakes in those models and you go that's just not going

to work especially if you start thinking about how does it scale right um so originally when

it was just sort of this one thing for one person i was like yeah whatever but then kind of as

another person went hey i'd like this too we went oh okay how do we how do we make this better i

guess from a design point of view i guess as well you probably didn't structure by you didn't filter

by user account first time out so like you know it's just for your mate you don't need to restrict

the query sets yep yeah yeah correct um and you know i think originally i was using just the

default um user profile and then i hit that part where we're kind of up and running with our first

first customer i went oh i'm really limited what i what i can do with this user profile from day.

and so i had to go and do the extended custom user model to add those additional attributes right

and then i went and restarted the entire project restarted the migrations um and lucky enough at

that point in time there wasn't really any data in the system and the other customer hadn't been

using it for that long that they were like yeah that's fine blow it away start again yeah um so

i sort of learned that the hard way which was fun but it's a good good thing to learn that

lesson at that point rather than sort of much later on when you yep definitely definitely

so what yeah i'm just curious what what came next right at what point so you have so the models alone

is a huge thing at what point were you working on the interface that the you know the butchers could

use like how long did that take yeah that's being kind of an evolution and i'm not a css guy um so

i'm lucky enough that i know someone who's very very good at that user experience and is really

good at css so i we ended up just contracting him in to do sort of one day of work a week on just

helping making the user experience i think that's a really good thing to do i think that's a really

good thing to do i think that's a really good thing to do that's a really good thing to do

we chose bootstrap as a simple framework to work with from that ui experience because

people are very used to that look and feel um

and then it was kind of how do we simulate the paper like how do we make the form the digital

form look like the paper form because butchers are kind of in that digital divide where because

of covert a lot of shop prices went up but before covert big supermarkets have sort of driven down the

prices so you sort of have this generational gap of butchers in australia um and so it was kind of

that how do we how do we make this digital experience as closest to the paper experience for

them so they weren't sitting there going what does this additional field mean how does it flow um and

then it's kind of that yeah we just started there and that was kind of the starting point and it's

it's sort of involved over time as we've optimized forms i guess where you're not double handling

information or you're not able to do a lot of work and you're not able to do a lot of work and you're

not able to do a lot of work and you're not able to do a lot of work and you're not able to do a lot

or we're passing data through between different forms etc okay and can i ask that for the layouts

because i guess if you want to match a paper layout did you use something like crispy forms

or yeah was using crispy forms um and then using the layout functions in the forms so i could just

define those all those python functions which are i guess dictionaries they are um to make it really

simple from that sort of ui because again i i don't want to bloat my html html up here it's like

like let let the framework do the heavy lifting to a degree right yeah yeah well as much as you can

yeah well it sounds like the butchers really hated the paperwork because getting people to switch

even if they have some annoyance is you know famously hard right it has to be

really overbearing to to have someone you know take time out of being busy to learn a new system

but i guess that sort of proves the efficacy of what you're trying to do if

at least one or two people were willing to go down that journey

yeah i think we also approached the regulators and went through their experience to make sure

it was going to suit their requirements as well right because you know i guess as an application

in a regulated industry your app is only is is only effective if the regulator actually supports

it yeah um so we built something the regulator went nah that's not right we'd be down the water

do you have to print things out for the regulator or how do you submit

um you know compliance to them right if they're used to accepting forms

paper forms yeah so they they actually have a physical audit so an auditor will come out on

site to the shop and that's kind of where they would view all those forms and tick that off

um so we've sort of done those training sessions with their auditors to go hey this is how you can

see this type of information um and they've actually really adopted i guess really loved

it because for them it's not looking through two or three binders of forms it's cool i just

want to look at this information quick and easy here's a filter bang done so

um so it's sort of streamlined some of their auditing processes which has helped a lot as well

i i can imagine as well that they might um sort of pre-do some of the paperwork

or the what was paperwork they can do it in the office before they go to the shop and then when

they get to the shop you know they can spend more time actually inspecting rather than looking at

the paperwork which is a possibly a win yeah definitely and one of the things we're sort of

looking to roll out with i guess regulators in the long term is that whole digital audit

experience so it can be hey i'm just going to rock up

and walk through your shop now to make sure it's clean but everything else is done okay sounds good

and then you have i mean there's there's so much in here you have some internet of things around

temperature and like walk us through like what are all the things and then how do you you know sync

up with with the dashboard yeah so um my business partner had this wonderful idea that he wanted to

monitor his fridges and freezers um which originally i was like yeah that sounds great

let me go and see if there's something we can buy off the off the shelf right um which you know

the great thing is there's a lot of sensors that do that job for us um but then i was kind of like

how do how do i actually plug this into into the django right how do i get the data there how do i

how do i store the data efficiently and how do i you know create the interfaces that you can view

and see the data because having the data is one thing but if you can't view it it's it's worthless

right um and so we sort of started with this we found a a vendor that sold these really really

just basic bluetooth gateways and we went down the road of bluetooth sensors using just uh bluetooth

low energy sensors the idea being they were cheap if a butcher

broke them it wasn't going to break the bank to replace them um because butcher's apprentices are

known to just wash everything with a hose and including electronics so having those sort of

cheap replaceable sensors was kind of a yeah the idea was hey if you break one it's not gonna be

it's not the end of the world you're not paying 500 it's a 30 sensor just buy another one um and

then we had these gateways and originally these gateways were just doing post requests to to an

endpoint that i wrote um which then sort of raised me as well how do i secure this endpoint right

um because these gateways don't do authentication um so i actually had to then write some middle

um middleware that worked more or less like a whitelist so it would look up the customer's

environment go does his mac address as a gateway be registered in their in their environment if so

that's an acceptable post request and accept it if not just drop it pretty much at the server level

so let me ask you so about your previous experience because to just think of and implement middleware

is a fairly advanced thing so had you done like how did you know about this concept of middleware

and to take that approach for this problem uh lots and lots of reading so i've i've got both

of your books will from memory and i'm one of those people once i read a well it's not in there

customizing middleware is not in there right but it's sort of it gave me enough to go there's got

to be something there i can do um and that's kind of where i just started digging deeper and reading

the docs to be honest as like hey how does middleware work um and then you just start doing

the old google search for tutorials on middleware um and that's that's kind of pretty pretty thin i

think though uh found it found enough to get something functional i want to ask about this

because hang on a sec you're now storing quite soon yeah quite soon off the bat you're now storing

time series data from

instruments which like that just must stack up really really really quickly

um it does and lucky enough i only take one measurement every five minutes okay so it's not

it's not every second um every second would be a different game um but you know postgres is very

very good at doing this type of stuff and it's kind of one of those things do i do i do you know

the old i guess development

problem is do you over optimize you start thinking about that or you go do we wait until we have a

problem and then go cool hopefully by then i've got a bit more money that i could throw at the

problem and get it resolved that way yeah if you've got traffic without any money that's kind

of where i'm at with the point yeah are you so are you reaching scaling limits now um yeah no

no any scaling limits yet um we are just slow and steady growing as a business which is wonderful

i'm sort of you know this is still

myself and my business partner and our one contractor um so we are still a very small

startup and there is a physical limit of how many customers you can onboard because of that

which is you know i think a blessing in disguise because it means i'm not dealing with hyperscale

and hyperscale is scary it gives you time to grow right and it gives you time to grow into

the bigger things and oh no we can do we can tweak the database we okay relax a bit tweak

tweak the server okay relax a bit i want i want to ask about that endpoint

just because that's something that yeah the three of us can just say oh just toss up an

endpoint but someone who's newer in their career like how exactly did you do that did you use

jenga rest framework did you use jango ninja like what you know yeah since you said that the rest of

the rest of the rest of the project is explicitly not really using apis you're using htmx so it's

server rendered yeah i actually think i just modified and i probably have a look at look at

the code because it's been a while since i've looked at it but i think it's a good idea to

i'm pretty sure that's good that means it's just working it is literally a function a function view

one of the few function views i have written um okay and it then just either returns the

http response 200 and grabs the uh the json data and loads that through so it's yeah not using rest

not using anything like that it's just a boring old function view i mean if it works it works yeah

interesting i mean you're making me think that maybe that's a interesting angle to you know teach

people about api stuff rather than just jumping right to rest framework or some of these things

be like we can do it a little more simply that's interesting anyways not to get off topic but

if i'm a if i'm a butcher and i'm and i've got data on my fridge because i need to show to the

inspectors that my fridge is a what happens if say the power goes out and you know can i get a

warning about that or yes

so that sort of became the next step is once we had this data the challenge was like well how do

we put a loading around it right so how do we how do you manage that how do we approach that and

that sort of brought in i guess if you consider sort of the lifespan of the app we we started

with a real basic web app that you know was designed for one person realistically and then

also another person i want that as well and went oh now we have multi-tenancy how do we approach

that how do we how do we go down that road um and so

you know the great thing is we have a really good rich environment i guess in django of all these

third-party add-ons that it's very easy to get this sort of functionality without

doing a lot of engineering um and then the alerting brought on that whole

well now i need some form of task processor um because you know you can't just do that i guess

off a i'm sure there's a way you could do it but it's probably not the efficient way or the right

way to do it right you probably need some sort of background

processor running to to do this alerting or alarming or have the hardware do it for you and

obviously the hardware could alert you but at that point we just didn't have the hardware that had

that functionality right okay it can all it can do is take a measurement and send it somewhere

yep um so we ended up looking at django q and that was kind of the one that i went that's

simple to deploy um it really just needed a redis service uh server to to act

as its queuing mechanism um and i spent a lot of time with salary but i just found its learning

curve yeah to be too great at that point in time right um django q sort of everything was built

into django admin so you could just log in and go let me create a scheduled task and off it went

yeah no i mean that's exactly it celery is super powerful but super hard to stand up even and

you know if you just want a queue it's not necessarily the first port of call

i think in our notes here you're using django tenants and then did you add django q functionality

there or can you talk us through that yeah so i found a really old there was a package for django

q tenants but it wasn't maintained um at all and so i ended up jumping in and i guess look having to

do some comparisons between what did what were they doing in this django q tenants multi-tenant

framework package

that django q was doing and so i ended up having to spend a lot of time there to rewrite that to

be supported um just in time for i think stan to release django q2 because django q as itself was

also i guess a stale package and wasn't getting any sort of lover updates um so i then had to

rewrite this i guess uh package to then support django q as well and sort of go through those

changes that stan made as well so this is

this is the great baptism of fire where you realize that your product your your business

is built upon a package which needs a maintainer and you therefore welcome to package maintainer

yep pretty much uh that old uh trying to think the comic where it's just here's this one package

that supports the entire web that's uh that's exactly what it felt like i was like yep okay

i've got to do something here to keep it functional and keep it up to date

so um multi-tenancy i wanted to ask just what caused you to think i need to adopt

django tenants because you could arguably maybe do it without that right you could just have

multiple users and they have access like how did you think about that process and decide to

you know add a little more complexity but clearly you felt it was worth it

yeah i sort of looked at i guess the three different ways you can do multi-tenancy right

and you know the first way is you just have some sort of flag in every single model that relates

that this this row belongs to this tenant um you could go down the road of having a database for

every single customer which you know is probably the most secure and secure way but probably the

least cost effective way um and ultimately it was the schema separation and just that inbuilt

in the django tenants that kind of went this is probably the easiest way for me to do it

without having to rebuild every single model uh with a with a tenant field more or less

yeah i i asked partly because i'm aware of multi-tenancy but i haven't

personally had the need to build out anything with django tenants and so in

but yet it's one of the questions i'm asked a lot by by readers is you know do you have support

for multi-tenancy and so trying to wrap my head around what are they what exactly are they asking

there are they just read about it or do they you know i thought you give a nice summation there of

it yeah and i think the other selling point for me was i wanted it to be a i guess domain separation

for customers so every customer has their own you know business name at q compliance.q compliance.com

so they it creates a bit of ownership opposed to maybe using something like a header approach

where they just log into a single website and it's um you know the header handles sort of the

tenancy aspect on the back end so i think that creates a bit of a customer ownership piece

but it also opens up the ability in the future to do their own sort of c name

branding as well right so if they have their own domain they could

create their own keyword.theirdomain.com type approach as well and we can support that from a

point of view and you said you know django's got this nice ecosystem of third-party packages it's

really easy to pick one up and but each one you pick up there's a learning curve to it right it's

it's like oh i've got to allocate this week to learn django tenants or this week to learn the

cues or this link to learn yeah so it's that probably comes just from my background of i

started life as a teacher so this whole motion of lifelong learning and i've come to be really

addicted to that horrible learning curve where

it's like hey i start to understand stuff and then you go oh actually no

start to start to build mastery after that right um so i tend to love that that drop where you

real that realization you go oh no i have no idea what i'm doing here but you start to you

start to build and develop those skills yeah you thought that was the deep bit no no no no that's

good just while we're on this last bit so are you now um helping to maintain django q2 are you

in the sort of around the ecosystem they're just keeping your eye on it uh look

definitely around helping where possible um i think stan's helped me out with a couple of

sort of things i've had wrong on my end when i did the switch um but i am sort of i guess

maintaining the Django Q2 tenants piece at the moment um I haven't packaged it up but there is

I think a link on Stan's github to it for anyone who does want to use it so you can just fork my

my version and be up and running more or less um so yeah I am a little bit involved there

one day I hope to be involved a lot more but I'm still still the learner in that sense

no no that's cool take it take it slowly because you can't ever offload these things once you take

them off right well I want to ask about um deploying because I know you're in the Windows

ecosystem but is there anything else around just the Django bit itself that you know we

you want to highlight or we should have asked you about um I think that's we can go and talk

about deployment and I'm sure we'll we'll come back at some point okay so you know why Microsoft

why uh Windows ecosystem right you were telling us a little bit about this offline but most of

the mindshare is probably around maybe not Windows for a startup situation yeah as a as an organization

we we applied for these uh Founders Hub from Microsoft and that sort of just gave us a whole

lot of Azure credits and having just I guess my technical background as an IT pro being really

deep in the Azure world and the Microsoft world um for me it was kind of the simplest learning

curve to go cool let's let's get deployment going um I think that's I think that's a really good

thing um you know I can I've I had done sort of previous work where I'd help customers deploy you

know Azure web apps with databases I'm in that sort of past environment world so for me it was

kind of you know that DevOps piece was actually the easiest part of the whole the whole process

um it was the the learning to be a developer was the hard part it's not the ops the dev

but use what you know right that's because people like what should I deploy and it's

like well do you know anything I know this we'll use that like absolutely every time yeah totally

and you know I think AWS and Azure you know they've done some really good stuff with like

startups where you can apply and you know you pretty much get a lot of value of money I think

my hosting's been covered for about four years or three years so far okay that's not bad it's huge

as a business it's a huge you know leg up right yeah free free development but all three you know

free that bit so I think you have some notes here about where you want to go right there's something

about micro python and ambient temperature like talk to us about what's on your wish list of

yeah where you want the product to go I guess once we transition to sort of version two of

hardware and version two was based on um an mqtt Gateway so we've still we've transitioned away

from that that post that post request type uh process I've still got a few customers on that

older hardware but we transitioned to I guess to a more robust messaging protocol and that was

some hardware that we could build up functionality and capability in the portal to actually program

the hardware so allows a customer to go into the portal go hey I want to you know change something

on this sensor and that's going to push down through the mqtt Gateway and program that sensor

to that point um now we've still kept that sort of Bluetooth approach in terms of sensor tech

but that mqtt sort of approach has just opened up a whole lot of functionality and that's

then started to get me thinking about well we have we've been trying to solve this one problem and

that is when a butcher does a cooking so let's say they're cooking ham or bacon at the moment

they use a data logger that data logger goes in the meat measures that that's normally a USB type

device they then have to plug that into a computer download the Excel spreadsheet and we wanted to

create I guess an experience where butcher could just put in our hardware go into the go into the

start recording button and straight away you have that that cooking log being put straight against

the actual log with you know pretty graphs showing cooking temperatures all that sort of stuff as you

know as it flows yeah anytime you've got rid of an Excel spreadsheet that's a win right totally

totally um and so that's sort of we tried to find I guess hardware that suited that requirement and

we couldn't find anything so I again did the old Google around hey what could I use

you know what what could I use in python to help me build sort of I guess that next layer down of

hardware and uh micro python was kind of this great package I guess framework again that has

quite a lot of functionality that I could actually start working with and I think I ordered in a

couple of esp32s and plugged them in and just started plugging away to sort of build build

this stuff um and you know I ordered in some decent thermometers that you know I RTD units

um that sort of had the requirements and you know again pulled out my old physics textbook on

electrical engineering and started going rereading you know things like ohm's law and growing that's

right you know all these sort of stuff um and you know just started sort of working on some

circuitry stuff and you know reading different parts and so we ended up to the point where we've

got a prototype um unit that works there but just the capital expense right now to take it to the

next level is sort of you know 15 20k yeah which has a again you know a small startup it's you've

got to look and go do I spend

um that sort of investment on such a single piece of hardware or is there money better spent on other

aspects right now to you know help growth and whatnot sure but that's pretty cool but I can

imagine it's also a bit of a rabbit hole that you can be like oh I could be fixing this UI bug that

every or I could be playing with my microcontrollers that's a bit of a risk though yeah totally and it's

that holes you know how how thin do you spread yourself across something right um and yeah

that's that's there's a reason it kind of got to a point it's like yep there's a prototype I could

just somebody else to manufacture and they could you know improve it yeah yeah I mean I guess you

contract that once you get to a certain point you can contract that out to companies in China right

who will put it together and all the rest yeah even even a local company just I guess finalized

design pieces and do the certification because again depending on what hardware you put on it

you've got to go through you know wireless certifications battery certifications um you

know once you've done all that then you go you know go to a manufacturer in China go I want a

hundred units of these and you know give me your best price pretty much but it's kind of that you've

got to do that certification step first right okay so it's not trivial patent it and then sell sell

to one of the larger chains that would have use of it and they could handle it oh look I could

patent it I don't think it's patentable to a degree because it is just a thermometer and the

purely the reason we're rebuilding it is we just weren't happy with the accuracy

from a compliance point of view um and that's because there's kind of a range we've got to

work which is negative 30 to about 120 degrees and we need to be within 0.5 degree accuracy in that

range um most otherwise won't be accepted by the regulator most thermometers that they're that

they're using at the moment actually don't meet those standards but we don't want to be that that

company building something that doesn't meet that standard especially when you know the strong point

of our company is we are backed by the

regulators to a degree where they've gone yep we're happy for this to be used and we trust them

to deliver XYZ for us yeah and that badge on the website that's got to mean everything right yeah

you have paying customers now right it's it's moved beyond your just your your business partner

yeah that's correct we've I think my last count was about 50 butchers across Australia

um paying a monthly subscription so yeah this is we sort of pick up two or three uh yeah about two

or three every fortnight so one a week wow on a growth

it's just that's a nice nice slow and consistent which is what I like so a couple questions around

that the first is so what are you using to for subscriptions how are you managing that yeah so

um stripe stripe is really really good at that stuff okay um and again you know there's a

wonderful package for stripe that makes it very very easy to pro you know manage the DJ DJ stripe

uh not DJ stripe I think it's just a straight python package just at the stripe package oh yes

their own their own python package yeah um so yeah just built out the subscription sort of service

to do that um and the one challenge we actually had there was the way the webhook works from stripe

um and the way I guess because every request we have comes from a customer's tenant that

comes from its own c-named URL um the stripe the stripe endpoint you know I'd have to have

a web hook for every single endpoint so I actually wrote a very tiny Azure function app

um in python that just sits there as a middleware more or less and collects their web endpoints and

then based upon the metadata in the endpoint then redirects it to the correct um tenant for ingestion

to update the subscription the middleware is for everything it's uh yeah again you just find ways

to solve problems right that's interesting I'm I'm working on a sort of e-commerce course and

subscriptions is a big thing that sort of can be simple to simple to do but I think it's it's it's it's

very simple to simple to do in prototype but then often has a little bit more complexity than people

think and also then you have to dive into user accounts and how do you you know manage it do you

have a flag do you how much are you tracking churn so it can quickly become a rabbit hole

in practice I am uh discovering but it sounds like it wasn't much of an issue for you you just

python package from stripe and yeah write a couple middleware and you're good yeah it got

to function all right and again it's I could definitely improve it but if it's working right

now and it's not a security risk I'm kind of looking at the technical debt going do I need

to pay it right now right so there's the question right you've got a business you're up and running

you're three years in okay so this is a good place to be because now you but now you've got

this sort of okay how do I spend my time am I building new features am I paying down some of

that technical debt cleaning up some of those gnarly bits that have been there since week two and

how do you how do you balance that that kind of consideration need I think the balance is you've

just got to be paying back technical debt on a weekly basis not much but if you pay back a little

bit every single week you never get into that really really bad situation where it's like oh

I can't upgrade because of something um and I guess I've been in I've been in a couple of

companies where they never paid technical debt and I've kind of seen that hell and it's like okay

you know it's only going to be a couple hours every week but

that's enough to sort of keep you there so you you know you can do those really simple upgrades

between a different version of Django package updates and not have everything fall over okay

yeah no I I agree with that I would try and put aside a Friday morning it's okay a couple of hours

on a Friday morning to just you know clean the floor I guess the fact that it's just you like

you are working on the new features and you're feeling the technical debt like from my experience

one of the problems with technical debt is the people deciding on what to do next are a layer

so they're not feeling that pain so to them it's an abstract thing but when you're on the ground

floor fighting with it uh it builds it builds up and takes an emotional and time toll on you yeah

it's it's definitely much easier I guess being on the tools to make those decisions than again

like I like I said in some other companies I've been in where yeah it is that layer removed

um unless you've got a really really good technical person putting together really good

documentation going this is why you know they're always going to go to what is the normally what

is the most cost optimized approach to something which isn't always the right decision or also

though it can often be that like the marketing side or the business side of sold something or

they're wanting to sell something and the push is to get that done it's like no no all this other

stuff you technical people are talking about doesn't matter get this done and it's like but

hang on you realize you're you're killing us slowly all right with this constant grind definitely deaf

by deaf by a thousand cuts so it's I mean it's it's amazing hearing all the things you've you've

built and honestly your attitude about all this of like oh just do this and that like it doesn't

it doesn't seem like you've hit major stumbling blocks with Django specifically um is that

fair to say so far i definitely it's it's been a wonderful framework to work with um you know

compared to some of the other people i've spoken to who i guess are using more of those java

or no type type frameworks um yeah it's nice that it works that's that's a really nice benefit right

it's nice that it works we should get some t-shirts for that yeah we're at that point of the show so

magic wand what you know what would you like django to add right because this is obviously

carlton i came from django con a couple weeks ago and this is always the discussion internally like

are there some things that are top of mind you know if if django only had it would make

things easier for you yeah i guess this maybe comes from my security more security background

but i think inbuilt multi-factor is kind of just a crucial thing that it needs to be in an app these

days like i can't

if you look at all the security frameworks you know that the default requirement now is that

any web internet facing application you're using has or supports multi-factor um and i think that's

something that probably needs to just be an inbuilt battery now opposed to potentially a

package and what are you using that now with your clients and if yes what are you using yeah i think

i'm using uh one that's maintained by jazz band and my mind's gone totally blank on its name yeah

um it's two-factor

auth is yeah two-factor auth yeah okay that's the one and are you using um django all auth at

all or just regular django with with this uh just regular django with this well i think you i think

you listen to this show like carlton i've been banging on about this and they're actually carlton

i need to separate from this talk about there's some work that's being done around authentication

both the documents and i think the code so maybe not as big as this like right now but um i think

most people would agree that it's not as big as this but i think it's not as big as this

like yeah we should we should have this or something like this in core yeah no two-factor

like one-time passwords at least like something that doesn't have to be you know every possible

option but you know and out the box look 2fa that would be lovely i guess with butchers you

don't have people saying they want single sign on to their you know to their global provider or

anything but they yeah how do you guys can i ask butchers that like traditionally not thought of as

like the most technically sort of connected people so how do you um educate them about

using two-factor auth and things like that do you point them towards a password manager or

um look i i think in the industry we've probably been really lucky and it's it's been led by banks

if you consider every bank this day forces two-factor on pretty much all their consumers

um most people get get two-factor these days um you know if you went back before

maybe a few more years then i definitely know my it pro days there was always a

massive change project to get multi-factor or something rolled out um but i think banks have

done an amazing job of just forcing it on everybody and everybody's kind of accepted

it as a security improvement so the discussion doesn't get too hard to have about about two-factor

for butchers because they're kind of used to that already from their banks okay okay that helps i

think that my australian may be a little bit ahead of other places in in that what's on your

mind then bryson what's what's what you know the next 12 months 18 months if you could knock off a

few you know headline features what would you what are you excited to build yeah there's there's one

feature that i've sort of been working on and that is we want to do some machine learning um

and this is not so much because the ai boom but more around there's just a really no noble problem

i want to solve and that is at a regulation level a butcher is meant to be monitoring the meat

um so that actually means the actual temperature of the meat not just the refrigeration ambient

temperature and so what i want to work on is can we have a probe unit sit in the meat for a day

have the ambient temperature and the probe temperature running side by side and then based

upon that develop an algorithm that's unique for that fridge going cool if your fridge is saying

this degrees then your meat temperature is going to be this degrees and depending on how long the

meat sits in that fridge for or display cabinet um it will slowly warm up over a period of time

so being able to then predict this is what the meat temperature should be to provide that i guess

that next level of assurance yeah okay and then you could probably measure actual measurements

periodically to check that that was a still within bounds of yeah correct yep and you know you look

from a pipeline as soon as you have that fridge go outside of its ambient temperature parameters

you could then invalidate that machine learning model and go because the fridge has changed this

this is no longer a valid thing so you need to re-measure yeah yeah and you're going to need to

and you've got to measure more frequently or you've got you know because yeah and all of that can be

ticked off by the regulator again and yeah okay that sounds really interesting yeah it's just a

really cool novel machine learning problem right it's not building some crypto or something it's

like here's a practical use of machine learning well it's regression right you're going to fit to

a cup of yeah good one thing i i haven't heard you mention which i only know of because my brother-in-law

worked at a startup that was doing um digitizing inventory for i think it was restaurant or

restaurants or food stores and they were doing a lot of digitizing inventory for food stores and

suppliers but their issue is they wanted to have a like an ipad app to replace you know paper but

people would go into the freezer and in the freezer they would lose cell phone or they'd

lose reception and they come back so they had to do all these technical things around offline

versus online it sounds like that's not an issue for you at all like people are just entering it

in on a computer so you don't have to deal with that situation yeah it's not an issue as of as of

but we are i guess a reactive web app so we do build down whether you're on a mobile phone

a tablet form factor or a pc um so for us a lot of these butchers it's more just getting

wi-fi signal in the shop and you know they might have their their little consumer router sitting

in the office that's in a different location but then all the work is happening quite a you know

quite a way around a way through multiple brick walls and cold room cold rooms are very very good

in signals um and so we've sort of had to help and that's kind of one of the things that gateways

also do is they act as an access point as well so i knew gateways not only do they do the mqtt but

they're also an access point that can then relay internet connections via either an ethernet or

via wi-fi right i was about to say are you running ethernet into the fridge it's like

that's a bit geeky but that's what you're doing right uh yeah so certain places we are yeah

running ethernet in and you plug into the gateway and off it goes

um if not you put the gateways next to each other close enough through the walls that they

can talk wirelessly and they just act as a wireless bridge and off they go

okay super i'm really excited your business sounds brilliant well i have to admit i'm i'm pretty

blown away just all that you've you know mainly you have done in this big big problem i guess

i can't help but think of the business case like how many like how big could this get right like

how many local butchers are there you know i don't know i don't know i don't know i don't know

what so that's the first part and the second part is at what point do you say i need help and what

does that help look like is it purely technical is it other areas right yeah so the market for

australia there's about 3 000 butchers retail butchers um then there's a whole lot of processes

and about 500 abattoirs as well uh from a small abattoir point of view so we've sort of looked

at going if we can own the butcher market um it

provides us a really nice stepping stone to start talking to processors and then you step again into

that small abattoir space and we've sort of got a lot of support from the industry to to do that

from a traction point of view which has been wonderful um you know i guess for us at some

point we are looking we are working with the industry body to actually see if they want to

fund from a fund this sort of development work um at which point you know it'll be nice to have

more technical people helping build this

be able to move a little bit faster um but it is you know as a bootstrapped business you can only

move i guess as fast as your your cash in the bank right the capital um and most of the time that is

how do we how do we count the cents and not spend the money where we don't need to spend it

yeah well as carlton said i think you know you sacrifice some growth but it gives you the time

to really work on what's important and then if the growth comes later you're all the more set up for

it anyways

yeah definitely i mean the alternative though is taking on you know a whole team and then you're

doing that with borrowed money or with you know investor money which then gives the time limit

which then gives pressure yeah you end up with um you know that whole really heavy pressure of

hey we want you to get this market valuation because that's how we get our money back and it's

we've really wanted to avoid that because as a business um we're more we really focus on we

want to be a purposeful business that actually helps the industry

and we think taking that investment money um just wouldn't allow us to be that to be that mission

based business because ultimately we're about how do we create safer food um you know fundamentally

and you know how do we help the industry and that's only going to work if we've got a business

that is there to actually help the industry not not about how do we pay back shareholders as quick

as possible yeah no it's been it's been great just chatting about it and i think it was a

a really fun exercise to actually sit there and start the dot out

all the all the things i've actually done because i think sometimes when you're in the business you

don't get time to reflect and go wow what have we we've actually done quite a lot of stuff

yeah well and when you um emailed us you know you shared you have this demo app which is a great way

to to actually play around with it and see it and i imagine you can share a version of that with

prospective customers too where they can see oh this is really what it might look like like that's

very powerful uh demo to have like a you know real life

demo version yeah look definitely in that demo experience because again we're taking a lot of you

know the industry is very paper-based so you know they want to touch and feel it before they commit

so that demo just lets them actually see oh it's not scary it is actually easy it's you know the

user interface isn't overwhelming me from a user point of view it is i think i can make this change

and then it's kind of that support piece to get them there and just again i guess then just one

question that comes to mind is about the simplicity aspect and just

like you're constantly focusing on that right keeping it yeah so again james who is my

contractor who works with me he is an amazing ui ux type person and that's kind of his passion so

i really trust him to look at you know what i build and go can we simplify this can we make

it a more cleaner experience um you know is a button three pixels too far to the left or

something ridiculous like that and he'll spot those type of things and be like yep let's adjust

it let's do all that um you know you can do that and then you can do that and then you can do that

even down to like icon icons consistency of icons and all that sort of stuff throughout the app so

you know when somebody looks at a button they go oh that icon means this um like i don't think about

that but that's kind of what he does and um yeah you sometimes you just need that person who's got

a different view on stuff to go hey i can build a lot of stuff but you know it's not going to be

pretty i need you to take it to that next level yeah and it's good to know your limits right it's

good to know what you're good at and what you're not this has been great i mean i really appreciate

you reaching out

we don't to be honest we don't usually say yes when people cold email us but we love when people

do and we can have these discussions about again real world projects being used with django and

i think it definitely informs my perspective and you know listeners who are involved with

django development to try to be aware of this and you know listen to what you're saying especially

around two-factor auth you know these these things that we can do to be a little less insular so i

really appreciate you taking the time to come on and share the story

yeah

thank you for having me it's been wonderful no thanks for coming it's been really interesting

to talk to you bro so we are at django chat.com and we'll see everyone next time bye bye bye