Meet Tomas Norre Mikkelsen, Danish Developer in Germany (Application Podcast S1E2)

Categories: Community , Podcasts Created by Jeffrey A. McGuire
Meet Tomas Norre Mikkelsen, Developer at AOE in Germany, on episode two of Application, the TYPO3 Community Podcast! We chat about his open-source life, maintaining the TYPO3 crawler extension and using TYPO3 every day since 2004! Tomas is also a very active contributor within the TYPO3 community and one of the maintainers of the TYPO3 Crawler. Tomas also has a passion for Continuous Delivery and DevOps, which can only be matched by his passion for golf!

Listen to the full interview in the audio player here, watch the interview video below, where you’ll also find a full transcript of our conversation. Don’t forget to subscribe and send us your feedback and ideas.

More Episodes on the Podcast Page

On Finding Your Way to TYPO3

If you’re wondering how to get started with TYPO3 CMS or how to join the TYPO3 community, Tomas Norre Mikkelsen has sprinkled nuggets of wisdom through this podcast. I’ll be the first to raise my hand and say that learning a big open source project can be daunting, but if you are thinking that you need to develop your skill level first, think again! Tomas’s views on the importance of the TYPO3 community and contribution as a path to mastery is inspiring: 

“You don't need to start to be a full-blown core developer. But if you start to get into TYPO3 by doing small commits to the TYPO3 website, and you see them go live the next day. If you think about it, ‘I'm using an open-source project and that’s the main website I'm contributing to’ … That's yeah, well, that's pretty cool.”

As a community, each contribution makes a difference and Tomas also touches on the importance of mindset when it comes to learning not only TYPO3 but anything that might appear insurmountable at the start: 

“It also comes to your perspective on how you see things because sure, I'm one kind of person and I learned in one way. You are a different kind of person you probably learn in a different way. And I totally accept the premise that TYPO3 could be difficult for a lot of people as a starter. Luckily, the community is on that and trying to improve that. So we can have more people joining also with less technical skills.” 

You’re never left on your own once you are part of the TYPO3 community. There are many helping hands waiting for you. Find out more about joining here. 

Maintaining the TYPO3 Crawler

Tomas has been working on the TYPO3 Crawler Extension since 2013, and a maintainer since 2015. Describing his relationship with it, he says, with more than a hint of affection in his voice:

“It's not my child, so to speak, at least I didn't give birth to the child, but I'm nurturing it now.”

Developed originally by Kasper Skårhøj and Daniel Pötzinger, the crawler was first released in 2005. So how does an extension released in 2005 lead to an exciting personal workshop with Anna Filina? Well you’ll have to listen to the episode to find out more!

Application on YouTube

 
Need More Reasons to Press Play?

This episode includes everything from ‘Your Favorite TYPO3 Features’ to ‘Suggest-a-Guest,’ along with a look at a TYPO3 project with 99 languages, the Sony PlayStation Network, and how the TYPO3 community came together to help the government websites of Rwanda. You won't want to miss this episode :-)

I’ll leave you with my favorite quote from this episode, summing up Tomas’ outlook on the TYPO3 community, contribution, learning, and mentoring: 

“And yet some of these initiatives that are going on right now from the people we just talked about, is something where we should help. I could see [that with] TYPO3, you cannot contribute necessarily, from day one, to the core. But let's say we go somewhere, and we need some frontend tasks to be done. We need some PHP stuff to be done, then do it in pairing. You don't need to have a person sitting next to you being 100% productive, as long as you can transfer a little knowledge and sprinkle a little interest, then. Right? Then you have won something.”

You can follow Application: The TYPO3 Community Podcast on iTunes, watch the behind the scenes recordings on YouTube, and join the conversation on Twitter here

Don’t forget to share the episodes with a friend! 

Gratitude

Application, the TYPO3 Community Podcast could not have happened without our special guest Tomas Norre Mikkelsen, b13 and Stefanie Kreuzer for our logo, and Maestro Patrick Gaumond for our wonderful, quirky theme music. 

And a huge thank you to the TYPO3 Association for sponsoring this podcast!

Subscribe! Get in Touch! Share!

Do you want to Suggest-A-Guest? Do you have ideas for topics that you’d like to hear? Join the conversation on Twitter. Let us know!

You can follow (rate, review, subscribe!) to Application: The TYPO3 Community Podcast on the platform of your choice.

Don’t forget to share the episodes with a friend!  

Meet your host

Jeffrey A. "jam" McGuire, Partner at Open Strategy Partners, helps organizations communicate and grow at the intersection of open source software, business, and culture. He connects the value and people behind the technologies to the people who need to know about them through inspiring conversations, keynotes, podcasts, and more. 

His approach to technology marketing—sharing the human context of complex technology solutions, and celebrating the expertise and success of their creators—has left its mark in business and open source communities over the last 15+ years.

Interview Transcript

Automatic transcript made by robots. May contain errors, but very few nuts.

Jeffrey A. McGuire  0:00
Welcome to application the TYPO3 community podcast 1212. I'm Jeffrey A. McGuire, most people call me 'Jam', and this is where we celebrate the TYPO3 community sharing your stories talking about your projects, and the difference you make in around and with TYPO3 CMS. This is indeed application the TYPO3 community podcast. My guest today is Thomas Norre Mikkelsen. You can call him Thomas Norre, you can call him Thomas Mikkelsen. You can probably even call him Thomas Norre, Mikkelsen, just don't call him late for his golf game. Thomas and I talked about a lot of things today, including the fact that Thomas has used TYPO3 every day of his life since 2004. His difficulty in deciding what his favorite feature might be and if that's even important. We talk about his professional life, his open source life, maintaining the TYPO3 crawler extension. And he has a nice metaphor for that saying, I didn't give birth to the child, but I am nurturing it now. There's a nice bit about refactoring, talking about the advantage of smaller code bases supporting innovation and we do touch a little bit on European weather, bicycling, golf, and what would a 2020 podcast be without some pandemic and lockdown humor? I hope you enjoy this episode. You have the window open for proper COVID ventilation. I was wondering because you're wearing a scarf.

Tomas  1:31
It's I'm easily cold. So I'm more of that kind of person. It's a better thing.

Jeffrey A. McGuire  1:39
Are you really Danish?

Tomas  1:41
Yeah, I'm originally from Denmark. Yeah, that's correct.

Jeffrey A. McGuire  1:45
How are you doing?

Tomas  1:46
I'm good. Thanks. Of course, this, I would not call it a new situation anymore. But the situation with their remote this, of course changed a lot. But for me personally, it's for the better. Because I've been actually dragged about doing remote for quite a while. So that's a good, it's a good test for me to see if it's actually something that fits me. And I must say that it suits me quite well. Yeah. I even though I only have to travel 11 kilometers to get to the office. It still costs me two hours a day,

Jeffrey A. McGuire  2:23
huh?

Tomas  2:24
Yeah. And, and that's

Jeffrey A. McGuire  2:27
How, yeah. How do you how do you usually travel that? or How did you use to travel that with their with with the train?

Tomas  2:37
So I went to their train station with bike, and then to the train, and then, but every time you have a small blue buffer, it costs time. So yeah, ideally, I could do it from door to door in 15 minutes. When I used to public transportations, if I go by car, in best case, I could do it in 25. But worst case is over an hour. And by bike, I could do it in probably 45 minutes. So it's in that range.

Jeffrey A. McGuire  3:08
Right? Right. So 45 minutes of 90 minutes of biking every day is incredibly healthy. But you know, if you're susceptible to getting cold, it's sub optimal in in the wintertime a

Tomas  3:21
Yeah, but but that's not the reason I just find it are annoying, so to speak to shower two times a day, the facilities in the office are there, or we have great showers. We have the bake parking area for bikes, everything is actually possible. But yeah, so far, I haven't done it that much I have done, but not that much. And right now I choose to do it like that, that I have one hour extra for sleep, and one hour extra for sport. Nice. So it's it's a win. For me.

Jeffrey A. McGuire  4:01
It sounds like a good combination. I've, um, I've been working remote effectively since before there was a word for it. I've been working remote since 2000. And, and I used to get when I was working in the film industry, I would get video cassettes and scripts delivered and floppy disks delivered by a courier and then I would do the work I had to do on them and then I would call the courier and they would come pick them up.

Tomas  4:29
I see though that was back then when freelancing was really freelancing.

Jeffrey A. McGuire  4:35
Yeah, yeah, yeah. That's cool. So this all kind of fits perfectly though. Why don't you tell us a little bit about yourself who you are and and what you do professionally.

Tomas  4:49
Yeah. I I don't know what to say about myself. But I would I would give it a go. Or my name Thomas. You know that already. And and I am Originally from Denmark, we established that too. I'm 40 years old. So it gives me a little experience. And I have been working professionally as a software developer since 2004. So that's also the time where I started with TYPO3. Uh huh. So I'm one of the older guys, so to speak. But still I sometimes feels lacking of there's really expert level, so to speak, because the task you do is not consistently the same challenging. And if you're not constantly get challenged, you don't get developed as a person as a developer in the same way as you if you always get challenged, I have a really challenging tasks and etc. But sometimes you feel like you're just standing still and not developing yourself. So from their year perspective, if you look like that, I should be a kick ass developer. I think I am in some it patient cases too. But yeah, it's, it still feels like something is missing. But I think it's the classic imposter syndrome.

Jeffrey A. McGuire  6:16
That you it's very common in our industry. Yeah. And when you have a when you have a when you have a you know, whatever you want to call it when you have a large software package like TYPO3, there are very few people who can know everything about it. And everyone has some specialties. Right. So I know that you've got some particular things that you focused on over the years, and then there's they're easily going to be places that you don't know so much about that you could figure out if you had to probably

Tomas  6:47
Most likely, I would expect that. Or and not least important, I would know whom to ask.

Jeffrey A. McGuire  6:55
Right. And that's, that's, that's when we can talk about open source community being so valuable. Yeah, exactly.

Tomas  7:02
Yeah. precise, and that professionally. I, I do PHP development logically. Because if you type of freak, I'm into DevOps, and continuous integration and delivery. So to automate things, because I'm a lazy developer. I did a talk some years ago, I think, four or five years ago, and I had a slide that even though I wrote even though I run marathons, I consider myself lazy. And people will just like, How can that be? How can you compare these two things, you cannot be lazy and run a marathon at the same time. But things I should do more than once I try to automate?

Jeffrey A. McGuire  7:41
Uh huh. So how do you get how do you automate the marathon?

Tomas  7:45
That I haven't succeeded yet?

Jeffrey A. McGuire  7:50
Of course, because we're because we're talking about technology, there's an XKCD comic about the number of times you need to do something versus the amount of time it takes to do it versus the amount of time it takes to automate it and whether it's worth doing or not. And how much of your life it eats. Yeah,

Tomas  8:06
I have. I've seen that too. I think, yeah, that's, that's a that's a good point. But I tend to do it probably too fast, sometimes. Too fast. Because I'm really annoyed when I have to do it too often.

Jeffrey A. McGuire  8:21
Sure. But yeah, that's uh, but that's actually that's actually really healthy trait. Um, and and DevOps is kind of an expression of that as a cultural tendency in in among developers, right. And the automation, frankly, removes human error. As long as the things that you automate are automated the right way, then it's actually safer, right. And the pitch that we always give people is, you know, now you can get on with the interesting parts of your job instead of the parts that you risk screwing up because you're, you're bored.

Tomas  8:49
So right. Yeah, that's also my part of my philosophy. Because I want to do new stuff. I don't want to do the same stuff. I know already. How to do it.

Jeffrey A. McGuire  9:00
Yeah. What's your What's your job and your job title? And what do you do on a daily basis?

Tomas  9:05
Are my job title is developer. We don't have titles in our companies. We have roles. So I'm a developer.

Jeffrey A. McGuire  9:16
What companies that?

Tomas  9:17
I am by AOE, GmbH, what's the Yeah, yeah, exactly. I just have to mention there the last part of the company then switch automatically to German even though I don't. I'm not German, but yeah, okay. But I'm at AOE since 2013 because they asked me to, then I joined. It is actually that simple. I do TYPO3 redevelopment 90% of my time. Mostly the last three years I do updates, tab free updates. I'm on a pretty big client of ours. Whichever TYPO3 instance that needs a lot of maintenance, so I don't do much features, I do more maintenance. So making sure that it's compatible with the next version of the next version of the next version, so that we can update. So I'm not really getting into new features and stuff like that. So that's also one of the reasons why I say that sometimes I feel like I'm not using my potential completely. I'm not, I'm not getting these challenging tasks, because replacing task A with task B, a lot of people can do, but it's something we can automate. And we we are trying to improve so that we can do it better and faster and make room for other tasks,

Jeffrey A. McGuire  10:46
Right? And the more systematic and the more consistent your teams are with how which which extensions they use and how they're configured, the easier it is for the whole company to do a better job for the clients over time, right? Because then eventually, you can automate how you use this and how you built that. And if you if you've implemented it on 10 projects, right?

Tomas  11:06
Yeah, exactly. Unfortunately, we don't have that many TYPO3 projects anymore, but we still have a few pretty big ones. Yeah.

Jeffrey A. McGuire  11:15
How long have you been in? How long? Have you been in Germany?

Tomas  11:18
Since 2013, I moved to Germany to join a way back then. And it's actually, it's actually quite fun story because I started working for the TYPO3 community actively around 2012, in 2012. And then there was a code sprint in 2013. And roughly at the same time, I saw online on Twitter, that AOE was looking for employees. So I replied, how do you feel about employees foreign employees that don't speak German? No problem. If your English is good, which I consider, then you can join us, or you can apply at least then I did. And they asked me for code tests, like a lot of companies do when they hire new people. They don't know that well. And, and I handled in the, the code, and I got feedback. And yeah, they would like me to do changes. And I wrote them, Hey, sorry, I can't do that. Right now. I'm on a way to a code sprint, but I'll take care of it when I get back home. And then I realized I was on my way to a AOE code sprint. So in the evening, the first day, I was in the office of a AOE, I got an email from their CEO. He was back then in San Francisco to build up the San Francisco office. And I got the email from him. Just to let you know, we want to offer you the job, we just want to see how fast you could adapt the changes. And that email, I got us sitting in the AOE office. And then the next day, I had my short interview with their CTO and another developer. And yeah, then three months later, I started work for AOE.

Jeffrey A. McGuire  13:10
Nice. And so if being remote works out for you, are you gonna move back to Denmark? Are you going to stay in Germany?

Tomas  13:20
And that's still up for discussion with my girlfriend? Uh huh. No, I really miss Denmark once in a while. I really like the nature I live in Denmark, you can basically not live there without being close to the sea. And that I really love to be honest.

Jeffrey A. McGuire  13:39
And you're in you're in Mainz right now, which is pretty far away from the ocean.

Tomas  13:43
Correct? As we talked about it yesterday in our daily and I think we estimated roughly 450 kilometers to the coasts or left of Amsterdam. That's the shortest distance I can get to the sea, I think. Uh huh. But we're not completely sure. But that's in around that numbers. And the Denmark it could not be more than 50 kilometers from the sea, regardless of where you are.

Jeffrey A. McGuire  14:07
Right. Exactly.

Tomas  14:08
So of course, it's, it's something we talked about. My girlfriend is just not really into she don't know, job wise and etc. See, she's a banker. And of course, the systems are different. She speaks Danish, but she's German. So yeah, that's still something we talk about once in a while.

Jeffrey A. McGuire  14:30
That Frankfurt area is probably a better place for bankers. Overall. There's a lot of banks there.

Tomas  14:37
Correct?

Jeffrey A. McGuire  14:38
Yeah. So you said you picked up TYPO3 in 2004. Right?

Tomas  14:45
Correct.

Jeffrey A. McGuire  14:46
What version did you first touch?

Tomas  14:49
That must be around 3.4 3.6. Something like that. So it's, it's it's a few versions back then.

Jeffrey A. McGuire  14:58
How did you encounter it? How did it How did it Come into your, your into your life or how did you come into its life.

Tomas  15:04
That's actually also a fun story. If I may say myself, it started with a Joomla project.

Jeffrey A. McGuire  15:11
Okay.

Tomas  15:14
The client contacted us there, I was self employed back then the client contacted me and asked for a Joomla project. And I, I had no experience with Joomla, TYPO3 or whatsoever, but I couldn't really get my head around Joomla back then. And then I looked for alternatives and see if I could pitch it as a project for the client instead. And I ended up selling them a TYPO3 solution instead. So my very first TYPO3 solution I sold was for 15,000 euros. And I had zero experience back then. But I still managed to sell it. Because I, I sort of felt like I was on my right spot quite fast.

Jeffrey A. McGuire  16:03
Uh huh. So what convinced you to offer them TYPO3?

Tomas  16:08
it's a few years ago. So I've might not be really on that edge anymore what it is, but I found there the possibilities on how to extend the system was good, because they had of course, a lot of basic CMS that every CMS system could could handle. Yeah. But I found there, the extensibility over the extensions are easier in there than in Joomla. back then.

Jeffrey A. McGuire  16:39
Right. Um, and I'm, in my experience, the style of Joomla, at least, I wasn't aware of Joomla that far back? And was it still mambo then or had been I don't even know when the split was anymore. But um, the Joomla the Joomla style seems to be very large, multifunctional extensions, where here's an entire solution for a kind of business or something. And then, and then it becomes quite hard to sort of swap out a piece or add another extension if somebody decided to do it in a different way. And I like the systems, like TYPO3 that provide standardized granular extension opportunities. Yeah. What do you remember about TYPO3, three? And would you How could you even would you compare it to TYPO3 10. Now?

Tomas  17:31
Though, of course, there are comparisons to be made, because there are things that didn't change. But but one of the first first things I remember back then, and some things that I still value is the page tree, the page module. It's it's actually pretty simple, straightforward, but it's something you know from other structures, like file structures. So you can build your navigation in a logic way that you can see in your back end that represent directly more or less in the front. And, of course, you can make a heightened menu and all these kind of things. But but that was one of the things that I found the easiest to start with. And, and the fact that I could change layouts, so that not every page had the same layout. Without rewriting my complete design, complete design. Back then Tim Lola was there the big, big thing, and it was so like, clicking points to, to map your, your HTML. So that was back then it was quite easy. Yeah. To get started, of course, TYPO3, you still get a lot of complaints about their their the hurdle to get started with TYPO3 is it's not that easy. But it also comes to your perspective on how you see things because Sure, I'm one kind of person I learned in one way you are different kind of person you probably learn in different way. And and I totally accept the premise that TYPO3 could be difficult for a lot of people as a starter. Luckily, the community is on that and trying to to improve that. So we can have more people joining also with less technical skills. Yeah, or different technical skills. It doesn't need to be less technical skills, it can just be different technical skills. I find it I found it quite easy to get started back then.

Jeffrey A. McGuire  19:26
Yeah, the page tree concept is one of the strong differentiators for me and it's such, it looks very simple, and it has quite a lot to it. That I that I think is really valuable for real, real projects in the world. It seems to me that TYPO3 is very, very good for very large information, heavy sites. So that's a really typical corporate use case. I need to put out a lot of information and I need to keep track of it. And if I have a visual hierarchy setup for me, just mentally like a file system that's easier to take care of. And I find it incredibly convenient that I can build a page structure and start to put in content and it doesn't matter that my front end system is not set up, or that it doesn't even exist yet. Because the managing content part works. And then it's such a nice set of shortcuts, if you want it to, it'll define your menus for you, it'll define the navigation for you, it'll define multi page URL structures for you all in that tree. And as far as I can observe people who work as content authors and editors, you know, they also recognize that instantly, and it makes it pretty easy for them to jump in and sort of keep track of where they are in their day to day work. I really like that. The thing about TYPO3 being complex to approach or, you know, with a steep learning curve, I think any system of a given complexity sort of can't be easy, by definition, right. But, um, I, I am involved in several different projects, personally and professionally. And I was thinking about this particular aspect for a long time, and someone on my team was installing TYPO3 a couple of years ago, and came across something strange in the installation process. And it's not, it's not the usual one that freaks people out that like, a successful infinite installation is when it shows you the error message at the end right? Which is funny enough, but um, you know, there's like, there's some point in the installation process where, at least at the time, you have to know to reload a page, but there's no instruction to do it. And there's something, something in the middle there, and we, we were thinking about filing a bug or trying to refine the process, and I brought it up. I brought it up with with him a much more experienced TYPO3 community member than me. And and they told me, Hey, why are you installing this yourself? type? Oh, three is a professional system for professionals, you hire someone to help you do type Oh, three, right. So there's some, it's really, really interesting. And that, that helped me define my, my vision of of who the TYPO3 community is. And I see it as a, as a community of professionals, you know, doing delivering client work. And then if, and then once I recognize that this is professionals doing client work, then it's pretty clear to see that what the, what the core delivers is so much of what you need to do a typical web agency client project. And sure, you can do fancy crazy stuff. And sure it's flexible and extensible. But there's this really solid toolkit in the middle to get big information rich sites out. And I find that you know, that's a really, really strong value proposition.

Tomas  22:45
Yeah, I agree with that. The biggest project I've done so far, was the Sony PlayStation Network. Not that small. But that was that was a setup with I think, around 99 languages.

Jeffrey A. McGuire  23:04
Wow. Nice.

Tomas  23:06
But in multi tree, so when we, we had the default page. And every time we published a new language, we copied the tree, because of course, you cannot have a single page tree with 99 overlays, that will not be possible.

Jeffrey A. McGuire  23:21
Right.

Tomas  23:23
So but it was quite good. So every language for instance, Mexico, of course, had Mexico, English and Mexico Spanish. Yeah. And if the same go for Brazil, etc. So the small pages were are made with overlays. And the rest was single three or multi tree, so to speak. But it was quite a big setup. And I remember one time we launched, I think it was 20 languages at one go. And that was quite interesting. Yeah.

Jeffrey A. McGuire  23:58
It's also pretty impressive that, that you can have sites that are that big and that complex, and it still remains performance and the user interface still supports authors and translators and everybody getting their job done in a pretty clear way.

Tomas  24:13
It was actually the requirements for the server itself, it ran back then on 6.2. That was the first project I did on 6.2. And it was even the the client was that there upfront and upstream that we lost with release candidate two. Oh, so we was not even stable yet. But they were they were really up for continuous integration and improvements and one nice cutting edge. So that was really a huge or cool experience, actually. And but yeah, we we lost it with the 6.2 release candidate two. But it was the server requirements back then, wasn't really a big thing. Of course, the servers are getting faster and stronger and everything. But I think that the entire setup ran on, was it four web servers and two database servers? It wasn't more than that.

Jeffrey A. McGuire  25:09
Wow.

Tomas  25:12
And, and yeah.

Jeffrey A. McGuire  25:15
And would you say it's fair that the performance bottleneck for those installations is less TYPO3, but more the more the data in the databases?

Tomas  25:24
we for sure saw that the database was an issue, or what to say was an issue that if you throw hardware at your database server, you might get an extremely performance setup.

Jeffrey A. McGuire  25:37
Or I guess the CDN, right, somewhere.

Tomas  25:39
Yeah, that to that we had, of course, do, but but they're their hardware. They're the database queries were fast. We, just by replacing our hardware, we managed to cut off. I think it was 45 minutes of our deployment time, because the import of the backup was that much faster. We switched from relatively simple database servers to database servers with their Yeah, back then it was 46 and a 64 gigabytes of memory and 24 CPUs. And it was just like, laughing fast.

Jeffrey A. McGuire  26:20
nice.

Tomas  26:21
And that was the standard. It was not even the database server that Sony bought in back then it was just the standard web servers that they bought back then. No, of course, it was also one pretty decent hardware. Yeah. And but yeah, that was back in 2015, or something like back. So this is not that far. But yeah, in 15, I think 2015 that they did this upgrade, and that was really fast. And that proved that the communication with the database was in our project. The bottom like, yeah, so

Jeffrey A. McGuire  26:53
yeah, let me ask you a new question. Yeah. How long have you been involved with the Crawler Extension?

Tomas  26:59
I have been involved since I joined AOE in 2013. But I've been doing the main maintenance since 15, I think. Yeah, the extension is developed, originally from Kasper Skårhøj who also developed TYPO3, together with Daniel Pötzinger from AOE. They had some ideas on cache warm up, and etc. And so it's actually the first release was done in 2005. So it's not that new extension,

Jeffrey A. McGuire  27:33
right.

Tomas  27:35
So it's not my child's, so to speak, at least I didn't give birth to the child, but I'm nurturing it now.

Jeffrey A. McGuire  27:42
So, so explain what it does. And then I'd also I'm really curious to know about the sort of the workload or the or the processes that go into taking something that's been in that the system sort of forever and keeping it up to date with the rest of the system?

Tomas  28:01
Yeah, we went through or we is the correct word, because I got help from outside, went through a really big rewrite, which wasn't really a rewrite, but more make it compatible change with their TYPO3 9.5 and 10.4. It's started November in 18, I think. And I managed together with their with other persons to have it released in together with the 10.4 TYPO3 so in April this year. And what the crawler does do is that it fills your your cache, so to speak, it's basically like a search bot, it visits your site. You generate a list of URLs gets visited. And then what happens on the system is your configuration that that size. So if I visit page A, your page cache for page A, it will be there. If you have allowed search index on that page, it will be there. If you have PDFs etc link there, they will get indexed, so they get into your search index as well. So cache warm up and search for people not using solar is probably the most common use cases for the crawler.

Jeffrey A. McGuire  29:20
And that's all internal to your installation.

Tomas  29:23
That's all internal to my installation or to their installation. Yep. And so it's actually from a purpose point of view, what it does do is actually really limited, but it has potential to develop to more. We have one of the latest features we have added is or earlier, the crawling was just happening first in first out. But it doesn't necessarily mean that it's the way you want your cache to be. warmed up, so to speak. So many people solved it by doing okay, then we have pre-deployment configuration that takes care of the root page, their contact page and stuff like that, so that they at least in the cache, but we have then implemented there so that it combines the information from the SEO optimization has the risk, or the risk of the likelihood that a page that is important to you in your SEO ranking is important to you and your cache is, is quite likely?

Jeffrey A. McGuire  30:34
Yeah.

Tomas  30:35
So when the crawler is processing the pages now they take the one with the highest SEO rankings, or not SEO rankings, but SEO priority. So that the cache gets warm up in their respect to use?

Jeffrey A. McGuire  30:52
Do I have to set that manually? Or does it do that automatically?

Tomas  30:56
It does that automatically. And if you don't use the SEO feature, and TYPO3 everyone, every page has 0.5 as a priority, and it will go first in first out, like it always did. So if you decide to go and say, Okay, my homepage has priority one, by contact 0.9, etc. These two will always be crawled first.

Jeffrey A. McGuire  31:21
Now does having my highest priority pages pre-cached then improve my search engine ranking, because there'll be more performance when the crawlers, the external crawlers hidden.

Tomas  31:34
I have honestly no clue. I don't know.

Jeffrey A. McGuire  31:39
But it makes them ready for when visitors are coming. Right? Exactly.

Tomas  31:42
They make sure that the one that is priority to you is there at first.

Jeffrey A. McGuire  31:46
Cool, that's super cool. Regarding the refactoring, we have seen, or refactoring making it compatible regarding to their nine and 10 version. We have seen that are way too much code for the functionality that provides that is custom that is custom written. So some of their initiative that their TYPO3 core is going through right now, I have to go through with the crawler as well. So to replace self written components, with well known components from the PHP ecosystem. Terrific.

Tomas  32:24
And that's something I'm working on on a regular basis. And so that their core functionality of the crawler will of course, be custom because you cannot outsource everything to other libraries. But I will make sure that only the logic that belongs in the crawler is in the crawler, and the rest is sub dependencies.

Jeffrey A. McGuire  32:46
And that ties in that ties in with the idea of only doing the interesting work and automating the rest.

Tomas  32:54
A little, yeah.

Jeffrey A. McGuire  32:56
The other thing from a from a business perspective. And this comes up when I'm talking with people about open source and TYPO3 and many other things. You want to keep as little liability and as little risk in-house as possible. So if you're maintaining a giant amount of custom code and functionality, you have to maintain the tests, you have to maintain the security, you have to do all of that. And if there are reliable, dependable well tested libraries. And other sorts of, you know, external projects that can do it for you then spreading that load is a sensible decision. Right? I saw that for the latest version of the crawler that you cut 22,000 lines of code out of the codebase. That is that roughly right?

Tomas  33:46
I don't remember I think that was the update from the one being compatible and not compatible with nine. So yeah, that was a lot of code removed. One of the things we did we we started using Guzzle as an HTTP client, instead of instead of using the one we have written ourselves, so that's a huge difference. And

Jeffrey A. McGuire  34:07
so many projects, wrote HTTP and messaging, all that stuff out. It's great that we can get rid of them.

Tomas  34:15
Exactly. And that's the steps I'm going through right now. I had a really nice workshop. Last week there on refactoring. With the Anna Filina who is in the PHP world, at least really known for that doing a lot of talks on that and I had a one on one workshop for a few hours with her on ho to refactor better. And that is something that I would share as a learning first take into the crawler but of course using my everyday work, and that was really, that was re lly interest She's really good at that. And I have had the advantage by AOE that I have an educational budget. So I use my budget for that this year, to do what I do. To do a one on one workshop.

Jeffrey A. McGuire  35:03
She calls herself the legacy archaeologists.

Tomas  35:05
Exactly.

Jeffrey A. McGuire  35:06
That's really cool. That's really cool.

Tomas  35:09
And that was a really cool workshop. And I learned a lot from it. And there were so many things that you sort of know, but don't think about and when someone from external inspects and audits your code. Oh, that's a good idea. That's a good idea. That's a good idea. And I saw how much I could actually do within a few hours. Because we actually managed a lot during the workshop itself

Jeffrey A. McGuire  35:36
And you were working on the crawler?

Tomas  35:38
We're working on the crawler. She had the crawler she could do the audit of it. And this, this, and this, and this, and this is this, some of the steps that I'm going through right now. Because the smaller and less complex the crawler gets, the easier it gets to replace components. And the easier it gets to develop new features. And even more important, it's getting easier to fix bugs. Yes, it happens to. So that's the part I'm going right now. I'm doing I have dedicated one evening a week for open source work. Most of it is this crawler. So every Tuesday night, I lock myself in in my room and do at least four hours of open source work.

Jeffrey A. McGuire  36:24
Nice. Although in 2020, there's been a lot of locking yourself in your room time hasn't there?

Tomas  36:29
That's right. That's right. But I've also done it before that.

Jeffrey A. McGuire  36:34
Yeah. What is your favorite feature of TYPO3?

Tomas  36:40
Hmm, that's a really good question. I, I use TYPO3 as an end user to for my private project. But I use it more like a standard CMS To be honest, I don't use many advanced features or anything like that. So So I actually find it difficult to answer. Because I think that 99% of what I use TYPO3 for as a Content Editor, with mostly every CMS that I have tried.

Jeffrey A. McGuire  37:14
So is it is it like saying, What's your favorite part of your house and you've lived in your house? so long? That it's it's just like, How could you? How could you say whether it's the tap or the doorway?

Tomas  37:26
I don't know if you could put it like that. But it's probably a good analogy, because I have, there are so many things that I take for granted with TYPO3 and don't know how we don't appreciate them. Because we get used that they they're there.

Jeffrey A. McGuire  37:42
All right. So So what is something that everybody should know about TYPO3, what do you tell people? If you if you're doing doing any of that sort of convincing?

Tomas  37:51
as a convincing or I like they're the new I like the fact that we got their site handling now and the page regarding their slots there so that we are not depending on our speaking URL module anymore from externally? Yeah, that is something I find highly valuable. Because it's something I see belongs in a core.

Jeffrey A. McGuire  38:18
Yeah, that's that that felt strange to me for a long time. Um, and other systems also didn't have it as a core function out of the box for a long time. But, um, the slug management making URLs that match for example, patterns that are good for SEO right, and titles and, and URLs and topics lining up. That is that's, that's, that's important.

Tomas  38:39
Yeah, I find their language handling, sometimes difficult, but I find it a really important feature. It also depends on who you pitch it to what key point and selling points that I will, I will, I will take out because a small sports club, or football club or something like that, they really just need the basic CMS. They they need to see, okay, here, you could build the new forms, which is, by the way, also a really great initiative that it's done easier. And here, you can do a quick contact form. So here, this is how you do images with texts, and etc. So the basics, and most people would be convinced by that, if that's what they need, of course, doing pitches for a project like your, the Sony PlayStation Network, I didn't do the pitch, but their idea of doing the pitch for them would be more like you have a system that is so modular, that you can basically extend it to whatever you need. That would be the pitch. So it depends on which spectrum you're in. And that's also a reason why it's difficult for me to say what is my most important feature because it really depends on my perspective, because my most important feature as a developer is different as the most important feature as a user?

Jeffrey A. McGuire  40:02
And then you're, you know, you also have a hat on as a community member and contributor, and yeah, probably a few others as well.

Tomas  40:10
The role I take the most is of the crawler developer, I try. I've been into TYPO3 core team, doing the extensions on trs since 2013, as well, or 12, perhaps. And that's what then my second role, of course, I have my job. But I'm talking about the open source part and not there. The paid work. And yeah, so yeah.

Jeffrey A. McGuire  40:37
So what do you do? What do you do in the TYPO3 extension repository, the TER?

Tomas  40:43
Actually, today, we have a TYPO3 remote sprint. That's also why I could allow myself to schedule during the normal hours. Because I have so many hours after hours today that it will be not enough to not be a problem. But today, I'm working on that their download numbers in the extension repositories get collected from packages as well, so that we have total downloads number, and not really useful. And not just how many times it is download from the Extension Manager, but also from

Jeffrey A. McGuire  41:18
wait. So here's a question I have for you. If you're going to put those two numbers together. Do you have any sense right now how many people still install out of the repository with the Extension Manager? And how many people install with composer through Packagist?

Tomas  41:35
In general, I don't have in general, but I can give you a number pretty fast.

Jeffrey A. McGuire  41:42
Not in general, but specifically. Yeah, exactly.

Tomas  41:48
One second, sorry, for my love keyboard.

Jeffrey A. McGuire  41:52
geek credit, if you have clicky keys

Tomas  41:55
are then I should have then I can pick out my my clicker here because they are even click here. Nice. You have to have something to decide which keyboard you go for. Right. From the crawler perspective. We have 114,000 downloads on Packagist Yep. And on the Extension Manager, we have 60,000. So roughly double as many on Packagist. And to be honest Packagist hasn't been out that long compared to the total time that the Extension Manager there was there. Yeah. So I don't know if it's a fair comparison to say that it's TYPO3 do it over Packagist. I think that the numbers are a little different. Because or actually, I could check it more generally, but don't go too much into clear details right now. But I think that it's 10%. That's my rough estimate percent is is which Extension Manager

Jeffrey A. McGuire  43:02
Still right? Okay, because a Packagist can come using composer, therefore pulling it from Packagist, of course fits with the development trends and standards and and and CI/CD of that have become so important and widely adopted in last few years. Right?

Tomas  43:21
Yeah. But I also think it depends, of course, it always depends, but I think it depends on which extension you look at. Because if you take an extension, like the block extension, or the news extension, that a lot of smaller websites would meet as well. Which, let's say a smaller Football Club, they will probably not have the same need for for caching for, of course, caching is nice, etc. But having the first request taking a little longer, and then have it cached, instead of having done automatically is probably not the same need so to speak. But having our new section or a blog post or whatever, could be something that also really small sites could benefit from, which probably don't, which could be the case that they don't have the technicals behind them to set up the site. So they right click through the Extension Manager install the plugin, configure the basic setup template and done. So really, they by

Jeffrey A. McGuire  44:20
They might not use version control, they might not use Yeah, they might not do all the all that fancy stuff.

Tomas  44:25
Yeah. So it really depends on which extension you're looking at. I think I think that would be at least the most fair way to to, to look at it. Because there are extensions that are more developer prone on their indications that they're more end user prone.

Jeffrey A. McGuire  44:47
Yes, for sure. Yes, for sure. Um, so what's your favorite open source project?

Tomas  44:54
or i o as it I would have to say TYPO3 because that's the one I use the most. I have used it every day since 2004. I think. And in some kind of way, I think, if if you if you forget, sometimes you forget some things when you say what do you favorite open source? I think when it comes to it, my favorite open source project or projects are Linux, Apache, PHP, stuff like that, because that's the projects that enables me to do what I love what TYPO3.

Jeffrey A. McGuire  45:31
Nice.

Tomas  45:32
So if you put a little more in perspective, without all these kind of things TYPO3 would never been there.

Jeffrey A. McGuire  45:37
Uh huh. For sure. Right? That and the web

Tomas  45:40
as well. So Exactly. So so I have to give a little more credit to to that.

Jeffrey A. McGuire  45:47
So I really care about more people discovering the project, and more people trying it out and more people building their careers on it in their companies and their businesses on it. And I feel very strongly that that project is is technically in a very strong position, and really worth having a look at it very up to date in terms of development standards. And it's an it has a set of capabilities that differentiate it from other legitimate competitors in the market. So different use cases, some of them I think, are absolutely fantastic for TYPO3. And I think, as of late 2020, that not enough people have heard of it. And I really care about spreading the word beyond Central Europe. So can you talk about TYPO3 not being a German project and talk about? Like, I don't know, what does it need? Or what are we doing? Or what do you want to see, so that more people find out about it?

Tomas  46:49
What I would like to see is us to go a little more global, because we are doing a lot of things, let me just put it straight in Germany, or because it's a lot of people think it's a German thing only, and you have to have a German development agency or developers attached to be able to even use it. And that is some of the strings that I would like to get rid of. And that we can achieve by going more global. I know we have to go small. But I we need to get started somehow which back then when I joined, there was a conference in USA somewhere?

Jeffrey A. McGuire  47:33
in Dallas?

Tomas  47:35
I honestly don't remember, I never joined it. I just know that was one. And I'm not saying that we should start with with going back to the US again. But we see if you're going to the east or they're, they're the developers and people behind and is doing a lot to try to do that TYPO3 forward there. What's it called Daniel in Romania is doing a lot to get it through. I don't remember his last name. I know the first name is Daniel. But he's doing Yeah, something like that. And he's doing a lot to push it through, not through but position towards Africa to get less developer countries to see the benefit from it. Because, of course open source, you have the big advantages that you have no license cost, you can spend every single penny you have on developing what you need.

Jeffrey A. McGuire  48:41
And that might be a feature or that might be people, right?

Tomas  48:44
Yeah, exactly.

Jeffrey A. McGuire  48:45
That's exciting. I was incredibly excited. When when whoever it was figured out that they were typo. Like most of the government websites of Rwanda, were running on TYPO3, and that they were outdated. And the you know, the association in the community organized the two or three trips of people to go down there and do training and enablement and help them get things up to date and secure and then move forward using it. And they I think that they found another country that's using a bunch of it in Africa. I think it's incredibly exciting. And Tymek Motylewski's company, Macopedia in Poland is doing great work, too.

Tomas  49:25
Yeah, exactly.

Jeffrey A. McGuire  49:26
I kind of think I kind of think there's a chance to sort of spread it out of Central Europe, east on the continent in a very natural way, with those home bases that we have, and the fact that Nitsan has also even run a couple of sprints in India. Yeah, I'm the Indian developers that I've met in. Both the people I've met from Nitsan and the people I've met from other communities are incredibly energetic and incredibly generous with their contribution. I would really love to see a strong base come out of there as well. would be really exciting there.

Tomas  49:59
But I think that's, that's some of the things that we should focus on there, seeing how we can get a little bigger, or small step by step. So like, like in kindergarten, when you drew a flower, you started with the center, and then little, or what's it called leaves on it, and then a little more and then so like your rings in the water start small.

Jeffrey A. McGuire  50:24
Yeah,

Tomas  50:24
we have a extremely strong base in Germany. there that will, that will be unfair to say differently. But we need to get a little further. And yet some of these initiatives that is going on right now from the people we just talked about, is something where we should help and I could see TYPO3, it shouldn't probably at first be the core Sprint's being relocated, so to speak, you cannot contribute necessarily, from day one to the core. But let's say we go somewhere, and we need some front end tasks to be done. We need some some PHP stuff to be done, then do it in pairing, you don't need to have a person sitting next to you being 100% productive, as long as you can transfer a little knowledge and take a little interest, then. Right? Then Then you have won something.

Jeffrey A. McGuire  51:21
you don't and then also, I guess if you if you enable someone to have a success experience, then they're gonna want to come back as well.

Tomas  51:26
Exactly.

Jeffrey A. McGuire  51:28
Nice. I'm gonna, I'm going to be finding out more about this mentoring program that's going on as it develops some really, I think that's another great opportunities to, to find to help people build some careers and improve their own lives. And then they, you know, some number of them will automatically become champions and advocates.

Tomas  51:48
Yeah, that's, that's something I, I would like to do myself as well. Because there, there are people on so many levels that need their input, or just are sparing and dialogue. And, hey, what does it cost me to take a few hours a week? talking to some person that would like some some feedback?

Jeffrey A. McGuire  52:13
Yeah. And it's, you have you have, even if you're modest about it, you have really deep, long experience and, and lots of things that to pass on that would help a lot of other people. So it's, it's I think it's one of the easiest ways that we can do do good in the world as as open source practitioners is, is make sure that somebody else gets excited about it, right?

Tomas  52:35
Yeah, yeah.

Jeffrey A. McGuire  52:37
I am doing a little thing on this podcast called the Sugest-A-Guest. And I would like to know, in TYPO3 but maybe also something near to TYPO3 or something different. Who else should I speak with on this podcast? Who should I invite? Who would you like to hear get to know better hear about show off?

Tomas  52:59
I know him really well, personally. So I would probably not be your main listener that day. But err, I like a lot. Thomas Löffler. Yeah, because he has a lot of things to contribute with. He's the definitely of their TYPO3 org team, and has been for close to as long as I've been in the team. And he's really good at taking hands on other people and mentoring them and helping them and trying to motivate them. Of course, he's doing a lot of contributions in himself. But he's also enabling a lot of people to contribute. And that's something that I think in respect to what we just talked about would be something that people could get motivated about and perhaps interested in. Because if they see that we have people like this, that's trying to help and is good at enabling people, they will probably see that the hurdle isn't that big.

Jeffrey A. McGuire  54:00
Hmm.

Tomas  54:00
Because you don't need to start to be a full blown core developer. But if you start to get into TYPO3 by doing small commits to theTYPO3.org website, and you see them go live the next day. I'm using an open source project and the main website of that I'm contributing to that's Yeah, well, that's pretty cool. Yeah,

Jeffrey A. McGuire  54:21
yep. And it's an incredibly powerful, proven psychological effect. As soon as you feel like you own something, it you value it much more. And the idea that you make up you, you you file a bug report, you submit a patch, you create a feature, you do something, and then you know, oh, I changed that. Even if it's like, I know I changed the text on that button or I chose, you know, the frame style or the color. It's empty, but you know that it's gone live and you know that it's part of 1000s 10s of 1000s peoples of experience today, daily experience on the web. It's incredible. It's that contribution drug. It's a really it's a really nice. High.

Tomas  55:06
It is. I'm not a front end developer or any kind, but I started doing CSS for for the TYPO3 back and styling in the back end. That was my first contributions. There you go. And then at some point I switched over to their, to their to the external repository. And yeah, yeah, so it can develop. But yeah, but the important part is to to get people interested. And I think that Thomas is a person that is good at that.

Jeffrey A. McGuire  55:37
Plus, not giving it away today. But Thomas Löffler has my favorite nickname in the whole world. So I'm going to definitely, definitely it's not a secret or anything, but I love it. So I'm definitely going to bring that up. Well, thank you, thank you, um, for your contributions, and thank you for taking the time to talk with me, it's really really great to get to know you better. Thank you for this and, and for being part of the community.

Tomas  56:00
Thank you, or I honestly didn't know what to expect us you wrote me just like, bit surprised. Yeah, I actually think we have we met once in person that was there at a conference type of free conference, where you're you held the talk, and we did some interviews, doing some some media things, and but actually talked in person, I think we we never did. But I have also suggested you multiple times for other keynote speaker,

Jeffrey A. McGuire  56:28
Thanks

Tomas  56:29
because I find I find the way you speak and your enthusiasm, and it's really motivating. And I think

Jeffrey A. McGuire  56:38
Thank you very much.

Tomas  56:39
I think that's what keynotes should be there should be motivations. And so actually suggested multiple times when people ask, "Hey, who would you suggest?" and your name is the first coming up most of the times? And so so yeah, it's it's not just me giving something you're also giving a lot or and it's having open source ambassadors is valuable, regardless of the stand on system A to system B. Yeah. In general, is good. That's, by the way, also one of the things that I've seen lately, that with their invention, so to speak, of composer, that their interactivity switch between the communities are getting bigger, because components from Drupal can be used in TYPO3 and vice versa, if they are built correctly,

Jeffrey A. McGuire  57:29
Right and security patches can also flow between the projects. Yeah. And I think the other the other equalizer on that front, it's gotta be a symphony, right? People picking up the low level components to and then, you know, any work you do there is automatically spread around.

Tomas  57:47
Yeah, that's right. That does but but that's something that has gotten way easier with Composer that was not easy before. And so so yeah, that's that's a really big. Yeah, dealbreakers not but are big game changer.

Jeffrey A. McGuire  58:05
Game changer. Yes, exactly.

Tomas  58:08
I'm still searching for the words, but it will not be better in German or in English, and in Danish, for that matter. But yeah, that's then when you're so eager to speak you.

Jeffrey A. McGuire  58:20
Nice. Speaking of enthusiasm.

Tomas  58:23
Yeah, exactly. I, yeah, I always say that I have two hobbies. One of them I'm fortunate enough to live from another one. Unfortunately, not golf. I have my hobby as my job TYPO3 and development. And that's the there are people of course, that can say that that fortune. But there are also a lot of people who has a job that is just a job. Yeah. So yeah. But I'm really happy about how it all happens.

Jeffrey A. McGuire  58:54
it makes life easier if we can combine making a living with finding satisfaction in what we do. That's a huge, that's a huge privilege. And I've had that a great deal of the time I've been involved in software and open source. Yeah, no, I think we're really lucky. So it's golf, your job and work is your hobby. Is that how you see it?

Tomas  59:18
No. Because then I would not get a paycheck every month. The actually the fun part is back then when I moved to Germany, I played that much golf that my friends was asking me if I move because of golf, or because of my job, because they're there. The conditions here is a little better than in the north of Denmark from where I'm from. So it actually would extend my season with about three months. The weather condition. Yeah. And so they actually asked me if it was that if that was the reason, but of course on my level, that's not the reason that's never the reason, but they thought it was funny to ask it like that. So yeah,

Jeffrey A. McGuire  1:00:00
okay, but you better be careful. If you ever move to Italy, or somewhere where the weather is really good. Most of the time. It's going to be really dangerous for you, you know,

Tomas  1:00:10
but I would love to be in the south. I've always dreamt of being in Spain and just playing golf. But

Jeffrey A. McGuire  1:00:16
you see exactly what I'm talking

Tomas  1:00:18
about, that I could never convince my girlfriend about.

Jeffrey A. McGuire  1:00:23
It's been so great to spend the time with you. Thank you so much. Thank you for this conversation. And let's hope that we get live community events again, sometime it will be it will be great. Great to hang out.

Tomas  1:00:34
I would, I would say so.

Jeffrey A. McGuire  1:00:35
Okay, okay. Thanks. Yes, you have a good one.

Tomas  1:00:39
Bye, bye.

Jeffrey A. McGuire  1:00:42
Thanks to the TYPO3 Association for sponsoring this podcast. Thank you b13 and Stefanie Kreuzer for our logo. Shout out to the magnifique Patrick Gaumond, TYPO3 developer and musician extraordinaire for the beautiful theme music. Thanks again to today's guest. If you liked what you heard, don't forget to subscribe on the podcast app of your choice and share with your friends and colleagues. If you didn't like it, please share it with your enemies. If you want to suggest a guest for us to have on the podcast, or if you have a question or comment. Reach out to us on Twitter @TYPO3podcast. You can find show notes, links and more information in our posts on TYPO3.org thanks as always for contributing. Music And then I'll drive one and then I'll bring you some on my electric bike. I'll come down to my seat. That's cool. Yeah. I'll go down the Rhine and then I'll go right there. Yeah,

Tomas  1:01:50
I don't know how well they're the bike tracks are along that road. But yeah.

Jeffrey A. McGuire  1:01:55
Oh, biking on the Rhine is fantastic. It is so so so so nice. That's been my that's been one of my big things this year is. So my pandemic activities have been a lot of bike riding. And I'm making jams, jellies and pickles, like stress therapeutic canning.

Tomas  1:02:17
I see. I see. I'm also getting more into riding my bike again. And I actually picked up my new bike Monday because I had to order a new I wanted to, I had to I have to do nothing, but I wanted to order a new one. So I am picking it up monday so I am ready for the winter. Nice because my racing bike is not suitable for winter training. Sure,

Jeffrey A. McGuire  1:02:38
sure. I have a sort of a Dutch bike style. Yeah. But without with a small motor on it to help you to help push it along and it's it's just so much fun. I'm gonna I'm gonna replace the battery on it and just keep going. Was that the one you picked up beer? Were

Tomas  1:02:56
there one selling you them said that could only be one beer and then but you managed to put two on them?

Jeffrey A. McGuire  1:03:02
That's correct. Exactly.

Tomas  1:03:06
I was not sure if it was you but I remember something about it.

Jeffrey A. McGuire  1:03:11
Yes, also posted that photo. Yeah, that's me.

More Episodes on the Podcast Page

Additional contributors for this article
  • Content Publisher : Mathias Bolt Lesniak