What A Lot Of Things

Hold onto your keyboards, folks! In this episode of What A Lot Of Things, Ian and Ash embark on a wild ride through the treacherous waters of R&D tax credits and the murky depths of technical debt.

Watch as Ash dons his cape and mask as the Testing Avenger, attempting to save Ian's poor, test-less Ilkley Live website from certain doom. Marvel at Ian's creative excuses for avoiding automated tests, and cheer as he finally succumbs to the relentless pressure of good practices in context.

Along the way, our intrepid hosts navigate the choppy seas of database migrations, wrestle with the kraken of personal project maintenance, and attempt to decipher the ancient runes of government innovation incentives.

It's a rollicking adventure filled with British wit, playful banter, and enough tech talk to make your CPU overheat. Don't miss this episode - it's more entertaining than watching a Clanger try to use Twitter!​​​​​​​​​​​​​​​​

If you haven’t already, we’d love it if you would contribute to our listener survey.

Links

..and you should email us, either at TechnologYeeyores@whatalotofthings.com or, for the more timid, IanAndAsh@whatalotofthings.com.

Creators & Guests

Host
Ash Winter
Tester and international speaker, loves to talk about testability. Along with a number of other community minded souls, one of the co-organisers of the Leeds Testing Atelier. Also co-author of the Team Guide to Software Testability.
Host
Ian Smith
Happiest when making stuff or making people laugh. Tech, and Design Thinking. Works as a fractional CTO, Innovation leader and occasionally an AI or web developer through my company, craftscale. I'm a FRSA.

What is What A Lot Of Things?

Ash and Ian talk about interesting Things from the tech industry that are on their minds.

Ash:

Who is the evil scientist on what lot of things?

Ian:

You.

Ash:

Me. That's exactly what an evil scientist would say.

Ian:

Dahl. I'm the Homer Simpson on this podcast.

Ash:

The Homer Simpson and the evil scientist

Ian:

podcast. Yes. Yes. Alright. Oh, dear.

Ian:

I think we'll just go back to technology Eeyores. Another kinda light to that.

Ash:

But not as an email address? Yes. On the to do list, that one.

Ian:

Yeah. I think what I'm gonna do is just put an alias or something like us or Ash and Ian that also has the same effect.

Ash:

Yeah. It's just that technology also look like technology, which just made it amazing for me.

Ian:

I I I refuse to delete that email address, but I will consent to set up a forward or something simpler that points to it.

Ash:

So maybe people would find it easier if they thought of Technolog. You yours.

Ian:

How could anybody possibly possibly think that? I mean, I'm all in favour of empathising with people's states of mind when they try and do these things. But to to to get along, you you

Ash:

you yours.

Ian:

I don't think that's any better, Ash. I think it's actually slightly worse.

Ash:

But much more enjoyable.

Ian:

No. For me. For you. Yeah. Possibly.

Ian:

Yeah. I'm afraid I can't agree with you there. Right.

Ash:

Well, I guess Oh, we've done

Ian:

it. We've disagreed.

Ash:

We've disagreed. As long as it it's still gonna exist though, isn't it? So I can still think about it.

Ian:

I'm I'm still gonna promote it. Yeah. I I don't care.

Ash:

So just email those on techno logyeyours@whatalotofthings.com.

Ian:

Or if you can't be asked to type all of that because you're lazy, feckless I'm trying to think of a third thing. You need 3 things, aren't you? Lazy, feckless, ignoramus. Then you can send your email to Ian and Ash at what's a love of things dot com.

Ash:

A live commitment to an email forwarding address there.

Ian:

Yes. Dear. It can always be edited out. Will be edited out. We should start doing things.

Ash:

Yes.

Ian:

And I've lost all track of the fairness algorithm.

Ash:

Oh, you went first last time. So I'll go first this time.

Ian:

Okay. In that case, Ash, tell us what is the nature of your thing?

Ash:

So the very nature of my thing. So an article caught my eye about something called r and d tax credits. So research and development tax credits in the UK. Yeah. And this is a process that I've seen quite a few people go through the pain of submitting.

Ash:

So you have to qualify for it and fill in a bunch of forms in order to get it. But the reason why this sort of caught my eyes because I had I had a slightly sort of dark dark side. It's probably a bit too strong.

Ian:

I find your lack of faith disturbing. Sorry. It's alright. So r

Ash:

and d tax credits. So they give tax rebates for companies based on their research and development spending.

Ian:

Right.

Ash:

But it must qualify as innovative, which I guess there's a whole kind of worms to open there about, like, what is innovation, which is quite a big topic.

Ian:

When I, used to do innovation stuff at IBM, the Arts World, it's whatever the client says it is. But I'm pretty sure that HMRC won't take that view.

Ash:

No. It's whatever the client already does. Yes. Yes. It's innovation.

Ian:

Yes.

Ash:

So in this article, they spoke to a bunch of startups who believe that what they were doing satisfied the innovation criteria, which I'll come on to in a moment. But it seems to have been a bit of a, you would put in your claim and it would be scrutinized very little, and then you would get quite a lot of money back for fairly mundane work sometimes. Yeah. Like, for example, if you spent a week building a set of APIs over HTTP, which return JSON, which were deployed on AWS in node, and people would claim that as innovation, whereas it's not exactly the most innovative. It's probably one of the more standard things that you would do in a technology company.

Ian:

Yeah. That's true. But one might argue that anything novel that you create with software Yeah. With with a programming language can be viewed as but it's well, it's a new thing that didn't exist before.

Ash:

Yeah. Yeah.

Ian:

You don't get any credit for import react from react, but anything you do once you've done that underneath might be novel.

Ash:

Yeah. Yeah. So I guess you got 2 things. I mean, you've got the actual activity and then what it's contributing to. Yeah.

Ash:

So whether or not it's contributing to an idea, which is novel. Because, obviously, you can have mundane parts of a novel idea

Ian:

You can.

Ash:

Of the mechanics of it to achieve the idea. So one startup is under investigation now, and they basically said it's gonna cost us, like, we're gonna have to give back, like, half a £1,000,000 because their 2021 claim is being investigated, which means their 2022 claim can't be paid yet and so on. And they're basically saying where's stuff?

Ian:

But they're also doing pretty well if they've basically been liable for half a 1,000,000 quid in tax. Yeah. Yeah. I mean, they must be doing alright in the first place.

Ash:

Yeah. Yeah. But I think what they have been doing is using it as financial planning to say we're definitely gonna get this money for r and d tax credits

Ian:

okay.

Ash:

Yes. Rather than saying, wouldn't it be nice? Or let's have a solid business plan which doesn't include this stuff which you may or may not get, but it absolutely does include that stuff. And now HMRC, you're investigate they used to investigate 1% a bit more deeply, but now it's 20%. Yeah.

Ash:

So and then the challenge is is that once they start investigating your claims from the past, they can either ask you for the money back and your subsequent claims go on hold. And if you are using that as your money to keep your company going because you're gonna get some money back from your corporation tax bill. You're then the money that you banked on being there from the tax credits 2 years ago is no longer gonna be there. So companies have started to complain that the rules are a bit vague. They argue they have innovated, and, HMRC say, no.

Ash:

You haven't. Although one got an award and a grant for innovation and then got their tax credits r and d tax credits investigated, and HMRC said you're not innovative enough. So either the thing that they did to get the award wasn't innovative enough or HMRC wrong or something else. It takes too long, and it hampers, like, cash flow. So the bit about the interesting bit is what qualifies you for r and d tax credits.

Ash:

So you've looked for an advance in the field, but not just for your company. So if you built a, you know, a, I don't know, a SaaS which solves some interesting problem, then that would qualify you.

Ian:

Mhmm. So

Ash:

you've had to overcome the scientific or technological uncertainty. So if you've had to build something really hard, an algorithm of some some description.

Ian:

I mean, that's kind of did something that might have failed. Yeah. Yeah. My significant chance of failing.

Ash:

Yeah. And then interestingly, the next one is you tried to overcome the scientific or technological uncertainty. So you give it a go.

Ian:

But you still But like the The world still learns from that,

Ash:

don't they? Yeah. Absolutely.

Ian:

I mean, that's actually quite good with government actually recognizing that failure can be Yeah. Yeah. Absolutely. Recognized as innovation in some way.

Ash:

Yeah. And then the the 4th one is could not be easily worked out by a professional in the field.

Ian:

Import React from React.

Ash:

I'll get my submission in

Ian:

now. Yes. Yes. That's what a lot of things. Unfortunately, we don't pay any tax for what a lot of things because the idea that we might make a profit is

Ash:

is It's fanciful to

Ian:

say, funnily. In the extreme. So we we could get all the tax credits in the world, but it wouldn't do us any good.

Ash:

Yep. So I guess my general sort of perception of this is I'm not sure that you should base your business on receiving a tax rebate for something that is it's fairly gray.

Ian:

Well, uncertain tax things. Yeah. Yes. Yeah. Or at least you have to, in your planning, recognize the uncertainty of it and and say, these are these things we'll do if this happens.

Ash:

Yeah. Yeah. And then also, I think sometimes some of the things that are claimed for are not tied to innovative ideas or new ideas. It's just, you know, the mundane. If you claim for, I don't know, using OAuth to authenticate your customers or using AWS amplify to set up a load of data storage.

Ash:

What this always makes me think of, it's like the quantification of innovation and then how much do you give back based on how you've quantified that.

Ian:

Because this to me is just government interfering in tech. I I mean, it's not just tech, is it? It's Alberta fields of endeavor. But it's just this was like governments are always trying to do things or get technology companies to do things. And normally, they have big sticks try and make them do them like we're gonna regulate you, like AI or Yeah.

Ian:

Or, app stores or something. You just think the government governments try to regulate these things or they try and do stuff, and it's just, oh, you've made it worse. You know, you've you're in some way serving one group of people accidentally screwing over some other group, and you're insisting on things that are impossible or stuff like that.

Ash:

Yeah. Yeah.

Ian:

I just feel like this is more of the same kind of thing. And what maybe governments want to make their they wanna make people more innovative. So, I mean, this is specific to to the UK, isn't it? Yeah. So maybe government the government wants to help companies be more innovative or reward them for doing that.

Ian:

Yeah. But but, you know, as soon as you have to write down these definitions, which, you know, they're not too bad. I I didn't think they were that bad. No. But it's just, all these companies are gonna start thinking, okay, what do we have to do to gain this system?

Ash:

Yeah. Yeah.

Ian:

And, actually, you know, maybe there are other things you could do that would achieve better results and be less complicated.

Ash:

Yeah. Because it like a whole industry has popped up around it to to do these things. So there's that specialist r and d tax credits consultancies now in order to help you to to do the to to submit the things that you need to do.

Ian:

So here's a question. Is there failed r and d tax credit application insurance we can get.

Ash:

I don't know, but I think I should start to offer it.

Ian:

Yeah. I think I think that'll be a money spinner.

Ash:

I'll I'll have to find someone to underwrite it.

Ian:

If the government doesn't give you the money, we will.

Ash:

Yeah. Yeah.

Ian:

Or a third of it or something.

Ash:

I always think it's weird that the governments want to encourage innovation. But this is like rather than just saying, well, a company is trying something and will back them with money, and it might come off and it might not. It's it's like a middle it's like a very poor middle ground where there's like a a big admin process in the middle of it, try and get them to claim it back. And that uncertainty for the companies that are trying to do something different is probably a bit too much to bear, isn't it?

Ian:

Well, yeah. I mean, especially in domains that are particularly baffling to to, you know, to governments. I mean, I don't know if tech counsels that, but you think you're going to be evaluated by somebody. I whenever I do anything to do with these kinds of things, I'm sort of thinking, you know what? You know?

Ian:

How how am I gonna categorize this transaction for my business? Yeah. I always have this kind of imagine this VAT inspector or somebody just saying the thing I've done in a really accusing voice.

Ash:

Coffee and cake?

Ian:

Exactly. Yeah. Exactly. And then I I generally don't do whatever it is. It puts me off.

Ian:

But, oh, dear. If any tax inspectors are listening to that, please don't please don't respond.

Ash:

There's so much coffee and cake on the company. Yeah.

Ian:

Yeah. I, for the record, very little money of of my companies has been spent on cake or coffee. In fact, none has been spent on cake. In fact, I've only

Ash:

spent hand grilled cheese

Ian:

on his sandwich. Yes. It kinda puts me off all these kinds of things. I mean, we were talking about when we talked about the DMA, how they've basically written these these laws that mean that you but there's no way for the apple in that example to find out Yeah. Whether a thing will be accessible.

Ian:

They just have to try and do it, and then and then the EU investigates them and tries to find them.

Ash:

Yeah. Yeah. So there's that sort of strange the, like, the wrong way around, isn't it? It's like you do something, and then you say it's innovative, and you try and claim it back. Then the government say

Ian:

Oh, now it's not. Yeah. Oh, yes. It is.

Ash:

So

Ian:

Oh, no. It's not.

Ash:

So the more sensible way would be to to do things the other way around and to have, like, a better relationship with companies. And when they try something in you know? So find out what that innovation is earlier rather than later.

Ian:

And that does happen. I mean, there are plenty of innovation grants that you can apply for, aren't there?

Ash:

Yeah. But in this in in the story here so someone got the innovation grant, and then HMRC said, no. No. No. No.

Ash:

Not innovative enough.

Ian:

Yeah. But was that because they tried to then have tax credits as well? I mean, if Yeah. Innovate UK give you a big load of money and they're for doing something innovative Yeah. And then you're also trying to get a tax rebate for the same money.

Ian:

Yeah. There is that. A bit a bit adventurous.

Ash:

A bit of adventures in accounting.

Ian:

Yeah. I mean, in in my head, there's a person going, for the same work?

Ash:

You wanna get paid twice?

Ian:

Twice? For the same work.

Ash:

Yeah. Yeah. That's true. I said it

Ian:

could come in that way.

Ash:

So so in if if you could encourage innovation through some kind of government type scheme, how would you how might you choose? What kind of path would you go down?

Ian:

So I think I would make it very easy to apply for small sums, first of all. So 5, £10,000 innovation project. You write down the project. You take it to somebody who's can easily just talk to the person and then make a decision without having to be Yeah. You know, enormously

Ash:

Go back to Whitehall, ask for the money Yes. Wait for 12 months. Someone else has done it.

Ian:

Yeah. Yeah. So that's one thing. Mhmm. And maybe this exists.

Ian:

I mean, to be honest, maybe it could well exist. Yeah. I would I would say explain your innovative project in advance and then get a maybe even a non tax credit. Yeah. The the other thing about tax credits is that you have to be making money before they're any use.

Ian:

So hearing about a start up expect getting stat tax credits is quite an unusual. You sort of think, well, how have they made enough money? I mean, if corporation tax is what? 20% or something, they must have to to be liable for £500,000 of it, they must have made

Ash:

Some money. Some positive amount of money.

Ian:

Yeah. More than a1000000 Yeah. Quid in kind of revenue Yeah. Profit, in fact. Yeah.

Ian:

So that's quite a big start up Mhmm. To to be able to get I mean, it is over multiple years, isn't it? It's probably over a couple of years. So but nonetheless, that startup's doing alright as startups go. I think a lot of startups, they were running on fumes or not much money.

Ian:

Yeah. What would be more useful to them is the ability to to get get grants to support their innovative work. Yeah. So, actually, I have a feeling, I would I would offer grants. Bigger grants must be in an area that the country needs in some way.

Ash:

Yeah. Sure.

Ian:

Smaller grants, quite easy to get. Still with accountability and all the rest of it, you can't just be giving money away and forgetting it. But maybe you could you know, you find ways to track the projects Yeah. That you're funding and keep a sort of weather eye on what's going on and asking to see the the results or at least the explanation about whether Why? Yeah.

Ian:

There's there's there's all sorts of things you can do, but I would make small grants easy to get and larger ones that were more targeted on areas we're interested in growing our capability as a nation. Yeah. And I would forget tax credits because who's got any money Yeah. To be taxed on? Yeah.

Ian:

If you've got enough money to be taxed on, then I Then

Ash:

I guess by its nature, it feels like you are manipulating the system somewhat in order to give yourself a bit more runway in your company. Yeah. That that's the way it feels to me. So 2 things always like

Ian:

But one way but you're making money. You're making a profit. This is the thing that that get and maybe the grants are maybe getting a grant is how you're making them. Maybe that that has to go into your books as as a taxable

Ash:

Yeah. Maybe.

Ian:

Income. I I obviously, not an expert. But, yeah, it just seems if you're make that making that amount of money, I just think tax credits is not the best way to do it.

Ash:

Yeah. Yeah. I thought, like, if like a venture capitalist organization will often fund multiple things knowing that you are unlikely to see a return from all of them. Maybe more in the in the past, they'd just be like, well, here's 10 startups, each with their own ideas about how to do things. We'll fund some of them, and one might might persist and become a decent sized company, and then we can sell it on in 5 years.

Ash:

So it's like that understanding of of risk and saying, well, I know that of all these things that I'm funding, I'm taking a risk on all of them, but I think one might come off and it'll be worth it. So it's like, whereas I think government wise, it's like trying to sort of pass off the risk versus the reward, and make sure that you've got, like, plausible deniability. So if you give a start up a grant for a few 1,000,000 quid, and then it just all goes wrong, then everyone's like, what a waste of money. So you so you don't do that. So you make you make them claim it back as part of r and d tax credits.

Ash:

And then sort of further to that as well. So you've got, like, the DARPA initiative in, like, the sixties seventies where the US government realized that they were, like, falling behind in terms of technologies to other nations. So they injected a load of money into a load of things, most of which didn't come off. But a lot of them came out with really, really good new technologies, which could be used to enrich the United States economy and culture. So I think it's hard for governments to get involved in these in areas of innovation because they're always doing it from a point of view where they're looking for return on investment rather than taking a risk and knowing that some of them aren't gonna come off and accepting that as part of being innovative because it is.

Ash:

I think you and I know that, like, failure is is part of it, isn't it? Because it's like, well, I've worked in 2 failed startups now. So but I've learned things from each one, and the next one's gonna be an absolute barnstormer, probably.

Ian:

You heard it here first, folks. Find out what Ash's next startup is and invest your cash so you can benefit from the barnstorming. The promised barnstorming. Yeah. So There's no deadline for that.

Ash:

No deadline. Open deadline.

Ian:

So That was an undignified sound.

Ash:

It was. It was. So apparently, a bunch of a bunch of companies now are just dispensing with the process entirely of r and d tax credits. I'm just saying, it's not worth it. Let's just plow our own plow our own furrow.

Ian:

I was a bit uncertain about something I said earlier.

Ash:

Okay.

Ian:

So quickly, I will just say, if your company is making a profit, you can deduct an extra 130% of your qualifying r and d cost from your profit, as well as the normal 100% deduction, giving a total of 230% deduction and the license to print money. But then it says if your company is making a loss, you can carry forward the loss or surrender the tax relief to HMRC in exchange for a cash credit up to 14.5% of the surrenderable loss.

Ash:

Okay. So that's the

Ian:

So you you can get a bit of money. Yeah. Not all you can get some of your money. Yeah. But I think not making a problem.

Ash:

That's what startups are probably using as part of their their runway for existence.

Ian:

Surrenderable tax. Yeah. Yeah. Yeah. Well, yeah.

Ian:

I I still think it stands though that I'm not sure that tax credits is a good way to do it. It's much better for companies to apply to do if they're doing something innovative Yep. And, you know, get support directly. Yep. There you go.

Ash:

So that was my thing, Egan.

Ian:

That was a a truly monumental thing. Momentous in every way.

Ash:

Momentous. Monumental.

Ian:

Yes. And other very flattering adjectives beginning with m. Thanks, Ian. I did enjoy you. I enjoyed that thing.

Ian:

Although, I kind of think why have I no not got any r and d tax credits. I've typed import React from React quite a few times in the last 12 months.

Ash:

It's just you do it for other companies that are gonna claim back their tax credits.

Ian:

Yes. They are indeed tax credits. Bloody hell. Goodness me. Well, ain't that a thing?

Ash:

It was a thing.

Ian:

So you may have noticed while you've been listening that we somehow moved very quickly onto the first thing. And you might have thought too quickly or perhaps unusually quickly. Why is why is that, Ash?

Ash:

It's because we got the professionals in. Well, a professional.

Ian:

Mission impossible.

Ash:

So we we thought we've been doing this for a while now, and we've somewhat fixed our consistency problem, as in this we haven't we're yet to have another 2 year gap.

Ian:

Still a bit lumpy.

Ash:

Yeah. But But it's a it's a little smoother than it was.

Ian:

It is. Yes. I I'm I'm quite proud of our consistency. Yeah.

Ash:

So we have a format, and we have consistency. And we have good podcasting gear, I think.

Ian:

I think so.

Ash:

Ian is is shows his expertise. He

Ian:

has no money, but

Ash:

No money. Good podcasting gear. And we wanted to well, I think it's important to get feedback Yes. On what you've what you've been doing. I don't think we ever launched into this thinking, let's get, like, a, you know, millions upon millions of listeners.

Ash:

Well, maybe Ian did.

Ian:

Yeah. I was gonna say, speak for yourself.

Ash:

Speak for yourself. But I think we wanted to create something that we are proud of. Yes. A nice piece of content, which everyone can listen to and think that's you know, it's good. It's relevant.

Ash:

It's well produced.

Ian:

He doesn't want millions of listeners. He wants everyone. Yeah. Everyone must listen to it.

Ash:

So we engaged the services of the excellent Mark Stedman.

Ian:

A very fine fellow. So he did a review

Ash:

of the podcast. He listened to the last three episodes.

Ian:

Yes. You heard it right. We're now paying people to listen to our podcast.

Ash:

So he listened to last three episodes and looked at the kind of supporting parts of the podcast as in show notes, social media, and then technical parts as well, like the loudness and the chapter markers and all those all the all the good stuff.

Ian:

And the artwork?

Ash:

And the artwork.

Ian:

And the title?

Ash:

And the title as well, which came up with some fairly spicy feedback, didn't it? Oh,

Ian:

yes. Apparently, if you're a new listener, you've overcome the very strong suggestion that this is a children's podcast given by the packaging and the title.

Ash:

Very well done. So thank you for sticking with this.

Ian:

Yeah. Yeah. Despite despite that.

Ash:

So, yeah, there was a few the on ramp onto the podcast was steep.

Ian:

Yes. Yes. The the more of a cliff face than a than a ramp.

Ash:

So based on Mark's excellent feedback, we're gonna try a few things, both in the packaging of the podcast and in the recording itself.

Ian:

And we did we didn't just get feedback from Mark, did we? We asked some of our listeners as well.

Ash:

Yes. Feedback is the breakfast of champions. We went out to some listeners and asked for their opinion and very hastily put together survey.

Ian:

Yes. Very scientific. In fact, what we could do is put the link to the survey in the show notes.

Ash:

Okay.

Ian:

And then if any of our listeners who've not filled it in want to and give us feedback, then they can, and we get some more results, which would be fantastic.

Ash:

Yeah. So over the next few episodes, we'll be trying a few things, seeing how they work. Yes. And then there was some sort of slightly simpler feedback, like episode numbers and things like that, which we've trimmed down and

Ian:

We've removed from the title of each episode because Yeah. You imagine people on some podcast players might know that it's episode with a number beginning with 2 before it gets trunk truncated. Yeah. Much better if they can see at least the name of one of the things. Yeah.

Ian:

Yeah. So So yeah. So one of the changes was about structure. We're trying to make the beginning of the podcast more clear about what what you're getting. And so rather than opening up with an enormous ramble, we thought we'd move the ramble to here, as you can probably tell, and try and get to the point of one of the things a bit quicker at the beginning.

Ian:

Yeah. So let us know what you think about that.

Ash:

Yeah. Please

Ian:

do. Some other feedback is that our email address is too complicated.

Ash:

Technologie yours? I can't I don't know what's complicated about that, Ian.

Ian:

It's technology e yours, not whatever you just said. So we're probably gonna put in some sort of alias

Ash:

Definitely technology.

Ian:

That redirects to technology eos at what's a lot of things dot com. So that those people who are not sure how to spell technology eos, which might be more people than we think, will have something that they can type instead. Although we are keeping technology yours. I'm sorry, but we are. It's just so great.

Ash:

Too good to pass up.

Ian:

Yes. So the structure of how we do it will change a little bit. We're still having 2 things and interludes and usual silliness. But, yeah, we'll be doing things a bit differently Yeah. But not wildly differently.

Ian:

You'll still know it's us.

Ash:

You'll still get the, the whiff of silliness. Yes.

Ian:

You will. We're going to encode our voices so that you can't tell who it is.

Ash:

That's Ian. You know it's my voice because I cannot do any of that. Because Ian, as we've discussed in the past, is is has been lovingly labeled as a tin pot despot for his hogging of the of all the podcast technology, which, to be fair, he bought.

Ian:

The buttons are all mine. So yeah. Yes. Indeed. So is there anything else about that that we should say aside from to thank Mark Steadman who has been absolutely super duper?

Ian:

And if you have your own podcast, we very strongly recommend his health check service.

Ash:

Absolutely. Absolutely. I did not feel like I was shortchanged for the, for the money that we paid for it. I think we got an extremely thorough service.

Ian:

Oh, absolutely. Yes. Yep. No. Very, very good.

Ash:

And he knows his he knows the podcast business very well.

Ian:

And he now knows that our artwork contains a clanger Yeah. Not an aardvark.

Ash:

Not an aardvark wearing a bra.

Ian:

An upside down bra.

Ash:

Makes sense to me. Right?

Ian:

Well, it makes perfect sense to me. I don't understand how anyone could look at that and think it's an hard work in an upside down bra, and it's obviously a clanger. So is is this where we say, are we ready for thing?

Ash:

That's slightly incoherent. Yes. I think that's where we this is where we say. So again, tell us of your thing.

Ian:

My thing. Well, Ash is just starting the time. I have to make sure we don't go on for 3 calls an hour about it. So my thing is well, the the sort of main title of it is the Ilkley Live website, and it's about that. The that that is a the website for Ilkley Live, which

Ash:

Thank you for that.

Ian:

And hence the name.

Ash:

This is this is why you're listening, everyone.

Ian:

Yeah. Yeah. I'll actually could build an AI that could translate things like the live website into that's the web website for ILC live. So I started it maybe 3 yeah. So we're on the 4th ILC live, and it was available first for the second one.

Ian:

Yep. So this is just had its 3rd outing for the festival. And as the years have gone by, I've developed it and developed it. At the beginning, it was quite basic, but it still uses Notion as its back end database, which is a questionable choice that I might change. So what about the Ilkki Live website?

Ian:

So the thing is that I don't really understand how it works. So I know I've got a very acute understanding of what it has to do. Right. And I pretty much thoroughly understand its data model in Notion, but it started off at a time when I knew a lot less about how to do a website in JavaScript than I know now. It's gone through several CSS frameworks in its lifetime, happily now on tailwind, which I Oh, yeah.

Ian:

Yeah. Trying to reuse as much as I can

Ash:

because I finally got

Ian:

to the point where I can do reasonably decent CSS with it. And it there's a lot of technical debt lurking in there. And, of course, it's it's not a a thing where I spend you know, I get paid for or anything like that. It's it's something I have to fit in. And every year brings a new raft of improvements that are needed.

Ian:

I've been thinking about how to get a grip on it

Ash:

Yeah.

Ian:

And make it easier. First of all, for me, I mean, I've also involved Tom, my youngest son, and so he's done a bit of work on it. But broadly, it's just me. Yeah. I'm always heavily involved in the things that he does as well.

Ian:

So I haven't got the friction of there being other people involved who I have to keep up updated with things and who might change things that I'm not expecting, except in the data, which is always fun. We've had a few interesting dramas of, people updating the Notion database. I'm looking at you, Dan Hammond, updating the Notion database in ways that the code was not able to understand. Yeah. But, you know, but

Ash:

Surely no user would do that.

Ian:

No. No. Absolutely not. The fact is that it's it would be extremely unfair of me to sort of blame anybody for any any such problems because it's a notion database, and people can edit it directly. It will actually harm very few people, but the people that can could just change anything in it.

Ash:

Yeah.

Ian:

There are no constraints in it to stop them from Mhmm. Breaking it. It's not designed for that. Yeah. And the fact I'm using it for this is is not really is not really designed for it.

Ian:

So but so there's

Ash:

all fulfill a purpose in that regard then, doesn't it?

Ian:

Yeah. I mean, it it gives

Ash:

easy for the user to change the data on-site, but that comes at a cost of the the code can't handle through a range of things that a a user might do to the data.

Ian:

Well, exactly. And there's no desire on my part to make the code that complex so that it Yeah. It it does do that. I think, I I suppose I'm just sort of looking at it now and thinking, okay. So the big area of data is is the performances.

Ian:

So if you want to play it live, there's no kind of barriers or curation. You just you just go to a sign up form during the sign up window. You say, I'm gonna be playing this type of music at this, what, three words place, which is my back garden and or front garden. Yeah. And I invite you to effectively to come and listen.

Ian:

And you've got lots of different artists or, you know, doing using that that form. But what's happened over year over the time is that venues have become a thing as well. So some of the local pubs and things

Ash:

Uh-huh. Right.

Ian:

Have, created, what we are now calling and and some people as well in their gardens have created stages where multiple artists go and play Yeah. All day. So the ticket office, for example, in Ilkley, I'm not going to give them a particular

Ash:

Yeah. But they're just an example of They're

Ian:

an example. The ticket office in Ilkley, they host hosted stages that were basically every hour all day for both of the days of the festival Yeah. Which was fantastic, and it was really great. But there's a kind of friction point between artists who is the only people that can sign up, and venues do not exist. There's no venue management in the whole Right.

Ian:

App. So the and and we really need that for next year. There's other enhancements. That's that's a big one. So I think what I'm thinking about doing is bringing the database inside the in into a proper database, so putting it in a Vercel.

Ian:

It it's hosted on Vercel, so I put it in Vercel, relational store, which is basically Postgres. So I I've got all these enhancements. I've got probably until next June or so, May, April, March to do all this, and I don't think I'm I'm on a very strong base. So it's JavaScript, not TypeScript Yeah. Which means that there's probably all sorts of subtle errors in it that Yeah.

Ian:

That I don't that that are managed by having stronger typing. There's it's, you know, using Notion as a data store. I do need to migrate it off that, but then I will need to build management tools for people to edit the data in the database. All of this, and I sort of think, well, it's it's, it's not a strong basis. So and I've done some big changes to it before.

Ian:

So I could start, for example, alright. I'm gonna before I do all this, I'm gonna move it all into typescript Yeah. And I'll just go through and change them all to TSX and TS files, and then then looking at the 400 errors and then then fixing them. Yeah. But it's a nontrivial task.

Ian:

And so I guess and it's more than a headful for one person now, and it's just me. So I suppose I just thought it'd be really interesting as part of this thing to talk about. Maybe we together can think of how to do it, and then if someone else is in a similar position

Ash:

Then they might be able to

Ian:

might be useful for them. Yeah.

Ash:

So there are any tests, Ian, of any level of any type.

Ian:

So I do not know. I I don't know how to do that. Right. So I could get AI to help me do it. So I could say, Claude, please write unit tests for this this code.

Ian:

But I'm not sure I'd be any the better off.

Ash:

No. I mean, I suppose it depends because it depends who you're sharing it with.

Ian:

Nobody at the moment.

Ash:

Yeah. Yeah. But I guess if you're saying migrate it to typescript or get a new database technology involved, then without tests, let's say you just you're not protecting the previous behavior.

Ian:

Well, I'm testing it myself. But, yeah, you're right. It's it's not the problem is not that I won't know what it's meant to do. Yeah. The problem is that there are side effects of things where I I I won't remember that over here uses that.

Ian:

Yeah. It's that kind of thing. And, you know, I'd quite like to learn how to do how how to effectively do that as well. Yeah. And I I think that maybe porting it to TypeScript will probably be will probably help a lot.

Ian:

And actually, I don't think I need I think I won't suffer too much from no tests what when I do that because it's unlikely I'll change anything. I'll just make sure that the types work all the way through and fix anything that

Ash:

That you can see.

Ian:

But but it seems like I should just nod along and say, yes, that I can see, but then I seem to be also consenting to ignoring all the things I can't see. Yeah. So it's a it's a trap. It's a trap.

Ash:

Because if you added some component tests for it's so it's built with componentized UI. Right?

Ian:

Yeah. It's, the it's basically Next JS and React.

Ash:

Yeah. So because the, the components would be, like, independent of the database. Yeah. Because all the data in the tests would be mocked. Yeah.

Ash:

So that would cover your migration from to TypeScript if you had tests for the components. And then that separates that out from the database side of it.

Ian:

So, okay. So I'm just trying to apply that to what I remember I've got there. Yep. So I've I've basically got all the data is is got by server react server components, the pages in Next JS.

Ash:

Okay.

Ian:

So the data is fetched by the page and then passed down into a client component that does stuff, shows it, or does stuff with it. So when you say component tests, are you talking about component with a capital c in React or component with a small c as in a modular piece of the

Ash:

No. The component with a capital c isn't the thing in React.

Ian:

Okay. So so are we saying here that if it was you that ruled the world in in the in terms of this anyway, your first thing would be to put tests in before anything else?

Ash:

Yeah.

Ian:

And that's not if I if I asked someone that was a a painter, would they say you should paint a picture before you do anything else? In other words, I'm asking someone who's an expert on testing, and their advice is do testing. Yeah. Is that absolutely. Yeah.

Ash:

Well, because, essentially, you've got, like, a you've got a a code base which you think you know what it does. Although you've already admitted that the implementation wise, you don't really understand it. You just know the behaviors. So, it seems like, some tests would be excellent to, shed some light on what's going on. And then also, if you if by adding those component tests, they probably help you explore the data model as well in terms of migration and get some real examples out of your notion database and use those in those tests.

Ian:

So tests are component tests are UI in some way. A component is a bit of UI. Yeah. And so you would have a test that said what? So for example, that sign up form, what what tests would Well, you gotta understand that.

Ash:

How do you test a form? So, you know, obviously, you have a a successful, and then all of the form validations, and then any error cases at which are easy to do in terms of a component test.

Ian:

So in my form, I have, I can't remember whether it's zod or yep. Yep. I've got validation schemers that go across the client and the and the server. I don't I I suppose the problem I've got is that I don't really know anything noticeable about testing.

Ash:

Yeah. Yeah.

Ian:

So I I'm probably doing myself down a bit too much here.

Ash:

Yeah.

Ian:

But there's, understanding, I guess, a high level about something, and then there's how do you actually do it. Yeah. And those seem to be 2 quite different things in

Ash:

I mean, I fully expect you to resist testing because you've already thought of the technical things that you want to do with it.

Ian:

Well, no. I I Yeah.

Ash:

Yeah. That's well, if you're asking me for my testing experience, that's exactly what happened.

Ian:

Okay.

Ash:

You have a project, and you've already thought of all the technical things you want to do. It has no tests, but you will launch into I'm gonna change the database to this, and I'm gonna migrate it to that. And that's exactly what happens repeated, add infinite item throughout my testing career. And and then when the thing doesn't do what it did before, because either you didn't understand it or you didn't have any tests, everyone's like, oh, no. It doesn't do what it did before.

Ian:

Yeah. But the You got but You got to remember that that because it this is only me, really.

Ash:

Yeah. I

Ian:

think Tom

Ash:

worked on it.

Ian:

Well, he did, but I worked with him when he was doing the things he did. So I know exactly I've basically looked at every thing that's ever been done to it in in detail, which means that I guess my risk profile is slightly different from a team of people, some of whom have varying levels of knowledge or maybe somebody knows that bit well and somebody else knows that bit well or, know, there's a a need for communication. There's there's a lot less need for communication because it's just me. Yeah. If I understood how to do that, that, I probably would go through and put tests into it.

Ash:

Yeah.

Ian:

I'm just finding it hard to understand what I have to do.

Ash:

Yeah. But you went through and did that with the actual site. Did what? As in you said, I've built this site. I didn't really know what I was doing, and it grew over time.

Ash:

Yeah. So you you can do that with the site, but with the actual project, but not with the tests. Is that what you're saying?

Ian:

No. I'm saying I can do it with the tests, but what I need to do is it's again the high level understanding and then knowing what actually to do. Yeah. So I might say, oh, yes. Okay.

Ian:

So I'm going to build component tests, but I I'm it's not even clear to me, and you're gonna this is gonna you're gonna just kill me when I say this, but it's not even clear to me where to go to figure out to to what YouTube channel to watch to to to figure out. Okay.

Ash:

You're right. That does kill me. Just any any

Ian:

Any any form of resistance

Ash:

to adding any tests is just Yeah. Ian, you're summarizing an entire career here for me.

Ian:

I'm I'm so happy to provide you with this example that you can give a good barreaking to. In our review, we, we we well, suggested to us that maybe we should be more, what's the what was the word? Which we should disagree.

Ash:

Should produce a polemic. This is my polemic.

Ian:

Yeah. Yes.

Ash:

I have an untested code base, and I want to make lots of changes to it, which I've already decided what those changes are gonna be. And I don't understand the implementation, but I understand the behaviors. Therefore, I'm not gonna write any tests.

Ian:

Alright. Alright.

Ash:

Am I right? Okay.

Ian:

I'll write

Ash:

If this was a contract to Ian, I would be like, this is gonna be a long

Ian:

6 months. But alright. Okay. Okay. I I will I will first before I do anything else, I will attempt to create component tests.

Ian:

Yeah. But I predict I'll I'll predict I won't be able to do it, or I won't understand what to do.

Ash:

Whatever it was that I was gonna do anyway.

Ian:

So what YouTube person should I be watching to tell me how to do this? I know you're just gonna say I should join the ministry of testing, but I probably

Ash:

Yeah. But I don't know. For a project like that, then maybe because tools like Playwright and Cypress, they have component and end to end test capabilities as well. So for especially for a, like, a hobby sort of project, it's quite nice because you don't have to faff around with loads of different tools.

Ian:

So which which one should I use?

Ash:

Depends what you wanna do, but

Ian:

Well, I don't Have you I don't I don't wanna do anything. I'm just gonna You

Ash:

don't wanna do anything?

Ian:

I'm gonna do it. I'm gonna do it because I I

Ash:

Well, then I suggest you do the database migration, break everything, and

Ian:

then No. No. No. No. No.

Ian:

I didn't say that. Oh, dear. I said I'm gonna do this. I don't want to do it, but I'm gonna do it because I know it needs to be done, which is why I'm kind of I suppose I'm here. Effectively, if I wanna keep this going without it taking up my entire life, I've got to get it onto a a footing where it's more maintainable.

Ian:

And I think I'm with you that more tests would really help with that. Yeah. So what I've got to do is discover how to go about doing that and and Sure.

Ash:

Yeah. I'm not saying you should not

Ian:

have to do that.

Ash:

Branch. Yeah. I just like, any any testing enhancements, tooling, whatever it is, you, you know, you look at some tools, you do a spike, you decide how it fits with your code base.

Ian:

Yeah. I think that's that's what I'm going

Ash:

to do. I mean, I accept it's not glamorous work, Kieran.

Ian:

I don't I there's no it has been glamorous work, this, for Yeah. Some time, to be honest. It's just hope and spit and Yeah. Sellotape and brown paper. You know?

Ian:

It's it's I I'm proud of it. It's the thing I've built that probably gets used most Yeah. Because, you know, thousands of people every year use it. I'm not saying I think it's a pile of poop because it does work. Thousands of people use it, but I do need to make it more maintainable.

Ian:

I need to get it so that I can bring Tom in to do more

Ash:

of it Yeah.

Ian:

Without you know, he he did a a fantastic thing where he accidentally removed a checkbox from a form that needed to be checked before the form goes up into the room. We're like scratching our heads. Why why why isn't the form Why why won't the button switch on?

Ash:

So, you know, a test to cover that scenario might be a nice thing to have.

Ian:

It might. Yes. Yeah. So

Ash:

So just to just to qualify this, I'm not saying that you should go and write tests for the entire application because that's not it's neither a good idea or particularly, like, sustainable because you'll just spend forever doing that.

Ian:

Yeah. I won't be tempted to do that.

Ash:

Yeah. No. But some some people are. Some people are like, well, we're gonna spend the next 3 months writing unit component whatever test is there.

Ian:

No. No. No. No. No.

Ash:

Just get the tooling in there that you want, and then once you've got that, then you can happily when you make a change, add some tests. And then over time, because like like you said, there's gonna be more changes. You're gonna then have a suite of tests that will run every time where you can have a a git hook locally to run them when you when you commit.

Ian:

Well, that'll be exciting.

Ash:

Yeah. And then you can have whatever it can run them in your pipeline.

Ian:

Well, it's on Vercel, so as long as I put something in my package JSON to run it, it will run it.

Ash:

Yeah. So, you know, and then you can you've got a few more safety nets there.

Ian:

Okay. So I said, which which tool should I use? And you gave me the look as if to say it depends, which, of course, is the true answer to any such question. Yeah. So what does it depend on?

Ian:

How should I how do I do tool selection?

Ash:

Have you got any money?

Ian:

For this? I well, okay. So I have some money Mhmm. I might choose to spend on this, but I'm not sure. I mean, if you said, will I spend £500 a year, I would say no.

Ian:

Yeah. If you said, would I spend a 5 for a month? Probably.

Ash:

Yeah.

Ian:

And then something in between.

Ash:

So what languages do they need to support?

Ian:

JavaScript and later TypeScript.

Ash:

Okay. And questions like that, kind of continuous questions like that. We might come up with, say, 5 things that it absolutely needs to do. I would sit down and say, right. What 5 things does it need to do?

Ian:

That's a lot of things.

Ash:

Yeah. Exactly. That's alright. So yeah. So language it supports.

Ash:

What works well with Vercel as well is probably

Ian:

a Oh, yeah. Is probably

Ash:

a good one. So we could come up with a few things which are requirements because it needs to work with the languages in the platform that you need. And then so how much money you've got, what sort of team is on it as well.

Ian:

There is a vacancy, by the way, for head of testing for Ilkki Live.

Ash:

It's another one of

Ian:

those If you know anyone.

Ash:

It's another one of those unpaid vacancies. Yes. Yes. Which the world is full of.

Ian:

Yeah. That that does seem to be a lot of them, doesn't it? It's astonishing. But they do good exposure.

Ash:

So and then also, it has a requirement of good exposure. I'll pay my mortgage with that. Yeah. Yes. Yes.

Ash:

But you said that Tom needs to be able to pick it up as well. Yeah. So that's another requirement for it. Yeah. So it's amazing.

Ash:

It's just like it's like almost like having a product with the requirements, and you come up with the requirements. And then you look at the tools, and then you say, well, you know, which one fits my needs the best?

Ian:

I don't know. I'll probably go on YouTube and find which which one has conquered YouTube videos better.

Ash:

Well, to be fair, community support and information around the tools is really important as well.

Ian:

It is. Yeah.

Ash:

Yeah. So it's like if you pick something that's open source, not not suggesting that you'd go and spend tens of 1,000 of pounds on a, I don't know, quick test pro license.

Ian:

I don't know if

Ash:

that still exists.

Ian:

HP, Qualcomm Center.

Ash:

So as a tester, I recommend that you spend tens of 1,000 of pounds on HP Quality Center.

Ian:

And and would I would I use the automation, or should I just write one test?

Ash:

Just That's right. Just write tests called verify that the thing does a thing, and then that's it.

Ian:

K. With

Ash:

no edge cases and no exploratory testing whatsoever.

Ian:

I I I'm absorbing your wisdom through every pore or something. Good god. So So

Ash:

I feel like I've slightly hijacked this and made it about about testing, but it wasn't all about testing.

Ian:

It wasn't, but your your timer that you kindly set at the beginning ran out about a while back. Ago.

Ash:

But I was enjoying myself. So

Ian:

Well, I I wouldn't like to get in the way of your fun, Ash, by by just going on about other aspects of it.

Ash:

Do you feel suitably chastised, dude?

Ian:

I I feel, like I've been beaten to an inch of my life. Actually, I'd probably be laughing

Ash:

Get on that machine.

Ian:

Laughing if that was actually the case. But

Ash:

So NPL install. Play right. Save dev. Get on that machine. Get going.

Ian:

Well, I'd I'm glad you've made the recommendation of playwright because now I can now I can go forward with that. And then when I'm crying, rocking in the corner of my office, as I try to conceptually have any idea about what the hell's going on with it, I can blame you.

Ash:

Well, think of it as a gift to Tom on his on beginning his path as a developer. You're actually gonna teach him about writing tests rather than just doing database migrations and TypeScript migrations.

Ian:

I don't know. I think TypeScript migration is quite like doing tests. It's it's it's Kind of. It finds a lot of, finds a lot of bugs. It's gonna find a lot of bugs.

Ash:

I guess it might be worth TypeScript migration, add some tests, and then get into the media, the bigger change. I would be if I was thinking about doing this, I think that would probably be okay. Oh. As from a pragmatic point of view.

Ian:

Yeah. It's like types it's like add a lot of tests and then type script migrate all the tests.

Ash:

Yeah. Exactly. So it's like there is, like, some we need to be pragmatic.

Ian:

There's some rationale in favor of doing it that way around. And that way, I've got a project I know how to to start on. Yeah. And then I'll do bun install playwright. Bun.

Ian:

Bun. I'll create a new bra. One thing about doing it on my own is that long running branches are less of a less of a problem. I don't I don't particularly need to do trunk development when it's just me.

Ash:

No. No. No. The Italia website is the same. It's just me.

Ash:

So

Ian:

Does it have tests?

Ash:

Yes. Of course it does.

Ian:

I mean, you know, if you told me it didn't, I'd make you go and stand in the corner and think about what you haven't done.

Ash:

Of course it does.

Ian:

Maybe I can look at that and see what your tests are like and and copy them copy and paste them. That won't work.

Ash:

It will fulfill the requirement of having some tests just for a different application.

Ian:

Yeah. Yeah. Well, eventually, if I did that, presumably, my website would slowly turn into the testing atelier's website.

Ash:

Yeah. It

Ian:

will. Can you get it to meet the my to pass these tests by no longer being about to music for a tour? Alright. Well, that'll teach me to, to to show up with a thing that's so close to my, my myself. Oh, dear.

Ian:

Good thing I don't take it personally. I don't think. Maybe. Only a bit.

Ash:

Only a bit. Well, that means that the the chastising was was gentle enough not to cause permanent offense, but harsh enough to get you to actually add some tests.

Ian:

Is that is that the delicate balance of the testing consultant?

Ash:

Yeah. Absolutely. 100%.

Ian:

Oh, dear. Well, that was my thing.

Ash:

I enjoyed that in a lot.

Ian:

Thank you. I can tell, Ash. I I I truly sense your enormous enjoyment of that of that thing. And I appreciate that you gave me a beating that you normally charge. Yeah.

Ian:

That's true. Actually. So a large amount of money for oh, God. There's got to be some, some market for that.

Ash:

So the other is the literally is. Just to

Ian:

go fill up. Got to come down from that. Oh, dear. I don't know what to talk about now.

Ash:

We need to close it out, don't we?

Ian:

How do we normally do that? Do we do do we say stuff about our email address?

Ash:

Oh, we did a lot of that the other day when we recorded the first part of this.

Ian:

Oh, did we?

Ash:

Yeah.

Ian:

Okay.

Ash:

So we did cold open my thing. Thank you to Mark. Lengthy interlude. Interlude, and then we've done your thing. So it's probably there's probably enough to be going on with that, isn't it?

Ian:

Oh, I'm sure there's there's always something you can go on about. I mean, we haven't we haven't made the what a lot of thing joke for a really long time. Yeah. We could return the last

Ash:

20 minutes.

Ian:

He's lost all interest in Twitter, but, or x, I suppose we ought to call it.

Ash:

No. No. No. You should just call it Twitter.

Ian:

Yeah. It's it's a small spark of rebellion against the billionaire oligarchical something or other. Come and see the violence inherent in the system. Help. Help.

Ian:

I've been impressed. Alright. Well, I'm I'm, I'm now punch drunk, so I can't can't can't figure out anything else to say. So I'm just gonna say thank you very much for listening to us.

Ash:

Yeah. Thank you very much, everyone.

Ian:

Oh, you said everyone. We've been told not to say that now. Why? Because people listen to podcasts as individuals Alright. On their own.

Ian:

Okay.

Ash:

Well, should we do it again then?

Ian:

I think we should keep all this. People could be instructed about how you meant to talk to your listeners by pretending in a sort of conspiracy with them that they're the only one.

Ash:

Oh, right. Okay.

Ian:

And it's not wildly untrue.

Ash:

Well, that's true, actually.

Ian:

So thank you. Thank you for listening to us.

Ash:

And thank you again.

Ian:

We love you. In an abstract kind of sense.

Ash:

It should be I love you because it's the only listener. You're supposed to talk to them as No.

Ian:

I'm I was speaking on behalf of you and me, but not me and Not

Ash:

you and the listener.

Ian:

Not me and arbitrary numbers of listeners. And I thought we wouldn't have anything to talk about for the outro, but it turns out Here we go. Turns out.

Ash:

And here we are. Yes.

Ian:

Here we are. Thank you, and goodbye. Goodbye.