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