You're welcome back. Right now, we're going to be talking about what the federal government intends to do. They say there's always been a yearly tax loss of 20 trillion naira, and the federal government has begun reform to end these. And to talk with us, we have Mr. Bolahan Olujide, a public policy analyst here in Lagos State. Good morning, and welcome to the program, Mr. Olujide. Thank you very much. Nice to be on the program. Okay. Now when we talk about losses being incurred by the government, 20 trillion is not a small thing. First of all, what gave rise to these losses, tax losses yearly, to the tune of 20 trillion? Okay. In our tax system, there's a huge collection in the fishes. A lot of people pay what they think is taxes, but these things are actually extortion and not taxes. So it doesn't go to the government, it goes to other parties. The other things include the fact that there are so many agencies of government at various levels that are collecting some of this payment. So some of them are absolutely incompetent at what they do. I'll give you a very good example. I remember a friend telling me about how a local government has brought a radio and television license fee to his office for about, I think, 100,000 naira. And he was like, what exactly is this supposed to be for? And then he gave the guy 10,000 naira cash to put it in his pocket. And that was the end of that taxation. And that happens at various levels, including what I'll call the official, more official collection windows of the government. So a lot of money are being lost every day via all sort of collection, corruption and collection inefficient. So it leaps away. The fact that there are multiple ways of collecting, multiple agencies involved, and multiple taxes, there are probably over 60 different taxes at various levels in Nigeria. So when you have such an unstructured tax environment, a lot of the money never gets into government coffers. If you check PE, which is closer to all of us, there are a lot of companies that deduct PE from their staff. They've already deducted it from the staff salary. But they don't give it to government, they just give it in their books. So if we structure this taxation better, reduce the number of taxes and the number of agencies that are involved in all this collection, generally improve the collection environment that collection efficiencies will develop most of those liquefied and be able to get more taxes for the government, even without increasing tax rate. Because there's a common belief that the only way those taxes would come up is if we increase taxes. Tax rate increase is the last on the list of getting more taxation into government coffers. Okay, so what the federal government is mulling now is that in the point newspaper, for instance, we have federal government based top customs NPA 61 agencies from collecting trillions in revenue. And we also have that same story on Daily Trust and FIRS said to take over 63 agencies tax collection mandate. Presidential committee is the one saying that. So are we expecting another Alphabeta in the nation? Alphabeta is a private agency. FIRS is the agency of government charged with tax collection. So those are two different situations. The reason for the question is that does FIRS have the capacity to take all these taxes? It should have. If it doesn't, it can acquire that capacity. It is part of the problem in tax collection in Nigeria. Most of those taxes that are collected by all these 1001 agencies of government, a chunk of those taxes are not going to the right pocket. We need to have a proper structure for tax collection. Apart from the efficiency, there's also the graft. I'm not saying that even FIRS itself does not have a lot of work to do when it comes to even graft issues. But you see, it is easier to work out a more effective system when you have a centralized agency and lean back. If I want to drive technology, for example, for collection, it is easier to do it when I have a single agency that is collected. Then when I have to deal with how to make all the various platforms across 10001 agencies to work together and deliver on the taxation policy that I desire. So that is why making FIRS the chief collector is a better deal. Anybody who has to deal with some of these other agencies that we are talking about will tell you exactly how inefficient these guys are at collecting those taxes. And if you are even talking of custom duties, for example, the kind of things that are going on with custom duties are unbelievable in terms of grafts. So I think that it's a more streamlined approach. I think it makes it easier for deployment of technology. It makes it easier for us to give it a focus. It makes it easier to streamline the 60 taxes or more that we have into a single window. Imagine some of these things so that a business owner, for example, does not have to be accountable to so many different agencies of government when it comes to the taxes that he has to pay. If I ask the taxes, look at the taxes for if your building is close to the ocean or to the sea in Lagos State. So Lagos State will ask you that the waterway tax. And then FIRA will come back again and ask you about the same taxation. And Lagos State will tell you that it is different. The waterway agency is different from the FIRA government waterway agency. So these are the kind of situations we must streamline to reduce the burden of multiple taxation and improve collection efficiency for taxes in Nigeria. Okay. You did mention something that we need a good tax collection structure. What would you describe as a good tax collection structure? It is that we do not need too much taxes on the table from collected. What we have right now, I have a favorite example of talking about taxes. If you take personal income taxes in the United States, the top 1% in us contributes approximately 40% of the personal income taxes in the US. In Nigeria, it is almost the opposite. The top earners, a lot of them don't pay anything. And a lot of them will pay as if they are fresh, gradually just hired as a tailor in the bank. That's the kind of tax. When you go and check the kind of taxes that some people or presidential candidates paid, when you go and look at the funding field and see the taxes they paid over the last three years, you will be embarrassed. A lot of top earners in Nigeria are not even paying the taxes. Whereas those top earners contribute 40%, like I said, of personal income taxes in a jurisdiction like the United States. So it is important that the collection efficiency improves significantly. Otherwise, we will keep on chasing only a segment of the market. And those are the only people that will continue to carry the unfair burden of taxation in Nigeria. If you talk of personal income taxes, there are the people in that salary bracket because their taxes are deducted before you give them the next. So those people carry a lot of weight. But the income of a politician or some other business people who are not in a structured kind of business, how do they, how do you, how much of their taxes do we actually collect? I remember the last head of FIR told us how many Nigerians are paying up to, I can't remember what, 10 million taxes in Nigeria. And he found out that in many states, no, there are many states where nobody is paying that level of taxes. If a legal state consumes the highest number of people contributing to that level of taxes. And it is not as if there are no billionaires in all these others that the question is where are their taxes? Okay, well, another issue is I asked the question, if FIRS has the capacity, you said even though they don't have the capacity, they can have the capacity. How do you think they should do this? Because I don't know, do you propose that they recruit people that will be able to do this? Or they co-opt some other agencies which will bring us to almost the same place that we are right now, having multiple agencies working and all that. What is the best way to go for them to acquire the capacity that they need to drive this process? As far as the technical staff, I'm a member of the Institute of Terrorization of Nigeria myself. I virtue of certain finance fraud that I've occupied. I've had to do the tax office. They have competent technical people to understand taxation. You're not likely to find a collection of that number of technical people in the collective agencies. In fact, in some of the collective agencies, the knowledge of taxes is minimal. This requires the responsibility of collecting taxes. So what we need to do with FRS is to revoke the capacity. So maybe they have 10 people working in this station and we need to make them 12 or 30. Let's do that. But most of the work is actually going to be driven by technology, not even human. So you have human beings with the right level of technical competence addressing issues that require human intervention. And you have technology driving all those parts of our collection that don't require human intervention. So this is the way it's going to run. Definitely, by the time FRS takes over, we will have more responsibility in doing more resources. And the resources are here. So we seem to be having problems with the audio of Bola... Why are they? What are you going to stop us in this situation? Go on, please. Okay. Well, let me just ask you a final question. We seem to be having some audio problems. We do hope that it will correct itself. Let me ask you this, Bola Hon. Will the exchange rate in any way affect this move by the federal government to whatever they're trying to do in the tax collection, will the exchange rate affect it in any way? Right now, a dollar is selling for 917 Naira in some places and in other places like Lagos, maybe 850 or something. So do you think this reform that the federal government is trying to put into tax collection will be affected by this dollar rate? Not in the short term. Not in the medium term. In the short term, there is no direct effect of how you collect your internalization and the foreign exchange rate. However, where it's been packed is that if your collection efficiency of taxation improves and you're able to collect more at a lower cost, then you have more pool of funds to spend as government. So government can be able to deploy more funds to issues around production. So you create infrastructure, it makes production much better and businesses to do well. You are able to invest in power in production and the more we start to produce and have more products to offer the world, the more we are in charge of the stability of our currents. Well, as of today, where we live in the country, the other time I heard people advocated that conventionally expand on the three items on the ban list for foreign exchange assessment through the CBI window. But when I look on the list of that for the three items, there is two to pick there. So which means we are still a country that thinks that we should be voting to pick and I can't understand that. So the only way it will impact is that if we're able to use the money, deploy the money that we're going to make from taxation to make it in the right environment for businesses to try to create infrastructure that will enable production so that Nigeria will reduce dependence on importation on one side and at the same time be able to reduce and export any benefits within Africa and foreign exchange. When our foreign exchange and is moved away from being 90% dependent on crude oil, we will improve our capacity to stabilize the Naira. But in the immediate there is no direct correlation between collection of the internet taxes and the foreign exchange. Okay. Well, thank you very much, Mr. Buolahono Lodgede for coming on the program today and helping us make sense of what is happening right now. The reform, we do hope every policy that has come will give us the air to breathe because that's the raining thing now, let the people breathe. And we thank you so much for your time this morning. Okay. That was Buolahono Lodgede, a public policy analyst talking to us from Lagos State here. We'll take a short break when we return. We'll be looking at how adoption of technology can help businesses in Nigeria to navigate in times of inflation. Stay with us.


Good morning everyone. Thanks for the introduction Ben. I'm so sorry that I can't be there with you in person this morning I'd like to say I'm in some fantastic exotic location, but I'm right here in Brisbane. I'm just very sick So I've got my tissues here, and I'm going to keep my germs to myself this morning Which I'm sure you all appreciate. So we're talking about leadership of technical teams and Why is that relevant? Well? We have a skills Shortage right now in the Drupal community So you may have noticed that there's a bit of a fight for talent. It's really hard to find talented Drupal developers in Australia But it's not just affecting Drupal it's not just affecting the tech industry It's actually the number one issue that's facing all Australian businesses at the moment And it's a global challenge very specifically in the tech industry Cornfairy have estimated that by 2030 We will be at a loss of over 85 million jobs, which is huge So the problem is not so much that robots are taking our job As there's not enough humans to fill the jobs. So how have we ended up in this situation? Why is this happening now? Well, some people say all businesses are software businesses we all need to use software in some form or other and that accelerates business growth and COVID has accelerated that Move to digital transformation. So a lot of organizations that were thinking well We need to do this digitally at some point in time Have gone ahead and started their projects and started their digital transformation journey So there's a global war on talent and it's not just affecting Drupal and it's not just in Australia So, how do we solve that problem? Well, we don't have much control over the supply But what we can do within our own organizations is create a workplace culture that will attract and keep The best employees. So that's what we're going to look at today This is going to be relevant for you if you're a business owner Currently a team leader Aspiring to be a leader or even if you're just looking for a great place to work or you want to improve the culture at your current workplace will give you the tips and tools to look at to assess whether an organization has a great workplace culture Before we dive into that just a little bit about me and about ATEC So I'm the managing director of ATEC We've been involved in the Drupal community for a very long time We started out in web development And now we're in cloud hosting as well and we've been utilizing Drupal since Drupal version 5 And what we do is Web development managed services and cloud hosting our data centers are right here in queen's land And we do offer Drupal as a service in Drupal as a platform as well We focus on mission critical websites and web applications and we work with the big end of town So the likes of virgin australia or the aviation safety authority And oftentimes that's in partnership with different organizations. So for example brisbane city council We provide the cloud hosting and managed services and we partnered with previous next who delivered the development for those sites So my technical leadership journey started a number of years ago. Um, I Actually started and grew ATEC from scratch and it kind of happened accidentally. I've always loved tech So I knew I wanted to work in tech and I went and did an IT degree and I thought great. I've got my degree Now somebody's going to hire me But nobody gave me a job. Um, so I ended up working in as a secretary in the property industry for a number of years and Then one day I met a very um handsome young man And he said quit your job and we'll go traveling around the world So I quit my job, but we didn't end up going traveling. Instead.  Um, so that's what happened to me Um, I would have done it for free because I I love everything tech But the people that needed help were sort of friends of friends of friends. I didn't really know them directly So I just started charging a low hourly rate building websites for um small businesses So that sort of grew and then um one day I thought oh hang on a second I've accidentally created a full-time job for myself. I was kind of working about full-time hours making about That amount of money and in time then I needed some people to help me so My leadership journey really started with my first hire who's pictured Right here in this picture in our one of our data centers So that was the beginning of my leadership journey before then I'd never managed a team And I really didn't know what I was doing. So it was a lot of reading books and and studying to Build the professional development and learn those leadership lessons along the way So I've learned quite a bit about leading technical teams And nowadays this is what my team looks like. So when I walk into the boardroom, these are the lovely faces Smiling back at me And our business is actually entirely remote. So we've always been remote and everyone Works from all around Australia This was them actually in a room together, which was unusual so We've actually done really well at Creating a good culture at a tech Um developer tenure is how many years did tech employees Stay in your organization on average as you can see Some of the the best companies in the world don't really have great tenure for their developers So google on average developers stay only 1.1 years At a tech we're well above industry average so Because we had such um good tenure of employees and we had really talented employees. They started to Ask questions. So I go to my team and I would say, you know, why Have you chosen to work at a tech? Why do you stay at a tech? Why do you like working here? and One of the most common responses Was people would say it's the culture. We've got such a great culture. I used to think well What exactly is culture? What does that mean? So I started to ask more and more questions Because if the culture is really good, how do we Make sure we protect that? And continue to have a good culture so That's what we're going to talk about today is your workplace the kind of place that will attract and keep the best employees And how can we create a culture that fosters that? well, it turns out That usually people leave managers and not companies So this responsibility for creating a good workplace culture actually falls to the leaders And some people have done some fantastic research in this area gallup research looked at 80 000 managers at all levels in companies of all different sizes across numerous industries And they tried to distill What makes the difference between an ordinary manager? and a great manager and a great manager is someone that can coax world-class performance Out of their team And it turns out great managers do four simple things really well We're talking about managers This term can also apply to leaders It's just a different mindset and language around how we apply that this research was specifically around managers, but it relates to leadership principles in general number one select employees based on their talent and values rather than experience Now i'm sure you can all relate to this If you imagine someone who has 10 years of experience But is not that great at their job Versus one of the most talented people that you've ever worked with If you imagine them with only 12 months of experience, who would you rather hire and work with? And everyone is talented at something so some people are really fantastic at writing code Not so good at documentation Some people are great at documentation, but they've got terrible time management skills Everyone has some kind of talent so it's about really Leaning in to find out what it is people love doing What is it that they do and they lose track of time because they're so engaged with it? That's where you start to find where people's talents lie So for example what a lot of people look for when they're recruiting developers are soft skills They want a coder who can do all of the other stuff project documentation and you know team Meeting reports But maybe we just need to focus down and understand What are the true key talents that we're looking for and making sure you're not Cutting out valuable talent from that pool Number two evaluate performance based on desired outcomes Rather than direct control over the way a worker performs his or her job So if you're dealing with talented people They don't want to be micro managed all of the way So your developers in particular you want to be breaking down the tasks to a level where they know You know what they're supposed to be working on but you don't need to micro manage those tasks down to a very granular level Give them the freedom to go and work out how they're going to execute that Three stop trying to Fix people focus on their strengths and work around weaknesses So we spoke about people's talents before Have a focus around what the team can deliver rather than trying to get everything 100% With each individual team member. It's kind of like when you're building your character in an rpg You know, everybody's going to be great in different areas But when we work together as a team or as a party Then the team can deliver what we need to do so What a lot of people as I mentioned before look for in recruitment is they're looking for That coder that has all of these other Skills that you know, maybe they don't really need if they're working as part of a team. We have a Coder on our team who is autistic and non-verbal. So he doesn't speak at all So in terms of written communication or verbal communication He's not a great communicator. That's not his strength However, when we've done analysis Um on our team members We actually found that he was the most profitable and productive member of our team By a huge margin So the quality of result that he's delivering is so far beyond Whatever everyone else is delivering because he's so good at what he does So what we do is we pair people up with complimentary skills There's a member of our team who's fantastic at written communication And absolutely obsessed with it. So as a team, we all work together and produce a quality result And number four find the right fit for your employee's talents So if you've got someone that's a great coder Well, why are we putting them into a management position if they love being on the tools and they're great at being on the Tools, let them do it Find other ways to reward them for being good at that So these things matter For talented and untalented people as well. So those people that are happy to show up to work And you know, they're not doing a fantastic job. They'll be showing up for pay Great senior management benefits. Everybody loves benefits and pay But as a leader we want to be focused on keeping the talented resources Not everybody else, you know, the quiet quitters and the ones that don't really Care about the work they're delivering So we look at, you know, the best place to work an example of that is google It's a great place to work. We hear about all of the cool benefits. They've got pretty good pay But you know best place for whom it seems like their tenure is not so great 1.1 years Maybe the culture is not great for talented employees So how do you attract focus and keep the most talented people and not just everyone? Well, it turns out there are some questions You can ask 12 questions that will help you identify a strong workplace As seen through the best employees Those talented employees this can help you create a culture And a workplace where talented people really want to stay So these are the 12 questions and we'll drill down into each of these Number one, do I know what is expected of me at work? This is the first one because it's the most important You need to know what you're supposed to be working on every day You need to know the level of quality that's expected of you So as a leader make sure you're communicating that out to your team 2. Do I have the tools I need to do my job well? Talented people love to do a good job So if they don't have the right tools, they're going to get frustrated Now this might look like, you know, CICD tools We don't want to be giving our developers just, you know An FTP server with no security, you know, poor Code editors Give them the tools they need Regression testing tools to make sure they can consistently deliver quality results Because that's what talented people care about They care about doing a good job Question three This starts to look outside of What do I get to the contribution to the wider team? 3. At work do I have the opportunity to do what I do best every day? If you've got an awesome coder You don't want to be, you know, spending all day Writing doco or spending all day in meetings You want to be coding every day So make sure if you're in a leadership position You want to be creating those opportunities For talented people to do what they love and what they're good at every day 4. In the last seven days Have I received recognition or praise for good work? Now this is something that for me, I'm autistic So communication is a little trickier for me I have to continually remind myself to state the obvious When people do a great job I have to, you know, make an effort to go and say Hey, you know, great job on that, you know, well done with that Because too often you can get involved in your work And just almost feel like it's a given That people know that you think they're doing a good job But you have to verbalize that So people are continually getting that positive feedback And once again, this is for talented employees Talented employees love to know that they're doing a good job 5. Does my supervisor or someone at work care for me as a person? Personally, I think this is the most important question out of all 12 If you care for the people on your team Then everything else is going to take care of itself This goes deeper than just, you know, are they delivering good results at work? This goes to the level of, hey, you know, how are you going? You know, this is happening at work But is there something going on at home? Understanding what challenges and circumstances people are dealing with outside of work So that can inform how you support them at work 6. Is there someone at work who encourages my development? This is about positivity This is about belief Identifying latent talents in team members And encouraging them to pursue those talents Hey, have you ever thought about doing XYZ? And this can go upwards as well You can be, you know, positively encouraging People that are in leadership positions above you Now the next question is around belonging And this question 7 is so critical At work, do my opinions seem to count? When you have team members that have a very quiet voice You need to be the amplifier You need to be the megaphone You need to be spotting people when they make their contribution To really engage with that So that people have that sense that their opinions are valued 8. Does the purpose of my company make me feel like my work is important? You may not have control over the overarching purpose of the company But you can certainly articulate the purpose to your team members And you can articulate the purpose of an individual project And the impact that that particular project will be having on other stakeholders So remember to engage with your team And keep them on track with the vision of why it is you're doing what you're doing 9. Are my coworkers committed to doing quality work? There's one thing talented employees really don't enjoy And that's working with people that aren't so talented and really don't care And I'm sure a lot of you can relate to this This is one of those ones that will really keep people engaged Is when you're surrounded by a team of high performers And you love what you're doing It's a really great culture and makes you feel like you belong as a talented employee Do I have a best friend at work? If you don't have a best friend at work, why not? Is it an unfriendly culture? So keep that in mind as a leader Making sure you're creating opportunities for people to connect socially If you're working remotely, which most of us are doing these days Those little water cooler type conversations We're on discord, we're having a chat We're talking about conspiracy theories Or off topic stuff Those are important because we're social creatures And we need to have that social connection with our team So these questions do I belong here? This is going to help us build an inclusive and diverse work environment And they help people to feel valued And that number one question is really do my opinion seem to count This one crops up a lot in gender discussions Where women may feel that they've raised an opinion And it's not heard by others or people claim that opinion as their own And so one way to tackle that is to be tuned in When people give an opinion to call it out And mention that that person came up with that idea Another idea is if you're in a meeting You may wish to sort of call out individual people And get a contribution and get them to speak during a meeting To make sure they're giving their opinions Is this my tribe? Does everyone look and speak the same here? Am I the other one out? And we talk about bias and discrimination and privilege And a lot of people are sitting there thinking Oh well, does any of that really exist? Is it really a problem? And I can assure you if you're one of those people that's thinking that It's because you have a lot of privilege And the problem with privileges oftentimes you don't really know And the way you can break yourself out of that cycle Is to put yourself beside a variety of people And see the world through their eyes As an example of that one of my team members was in a wheelchair And it wasn't until I spent a lot of time Walking around with him, booking accessible accommodation And venues for him that I started to really see That time I wheeled him home and the door to the hotel Is a big heavy door that you have to pull backwards to get in He couldn't do that in a wheelchair by himself Even though it was an accessible hotel So it's those sort of things that I would never have known How difficult it was unless I'd walked beside him And seen the world through his eyes Similarly going to the shops with a friend with quite dark skin And seeing how he was treated looking at jewelry and watches Versus how I get treated You can't see those challenges and those issues That people are facing every day Unless you have those opportunities to walk beside them And see the world through their eyes And similarly people from different cultures, different backgrounds I've heard people tell me that they have to adjust their accent And speak in a different accent when they're at work Because they're afraid A that people will judge them And think they're less capable than they are Or B that people simply won't understand them So just be mindful of the challenges that everybody is facing And when we create a workplace where there's a variety of different people We've got different cultural backgrounds, different abilities Then different groups and minorities Will feel like they belong as part of that tribe Because the tribe is so diverse An interesting thing to consider is the language that you're using In recruitment, particularly job ads At ATEC we had a requirement to maintain 51% females in a particular role Because of the grant we'd received from the federal government So the first ad we put out was completely non-gendered It didn't say anything about male or female We got 20% of applicants were female the rest were male And then we put the same job ad out and added a sentence at the bottom That said we're required to recruit female candidates for this role We got the same amount of applicants the second time around But 20% of the applicants were male and the rest were female So those ratios had switched But the really interesting thing was that the caliber of female applicants Was just phenomenal So they had really identified with the fact that we were looking for female candidates And we had some amazing responses So keep in mind the language that you're using in recruitment Is going to determine whether people feel like they can relate To the organization and it's also going to indicate to them Whether you're focused on diversity and inclusion Are they going to belong and feel welcome And the last two questions are about growth In the last six months have I talked with someone about my progress So I'm not getting check-ins on where I'm going about where I want to be going Make sure that is happening as a systematic process 12 at work have I had opportunities to learn and grow Talented people we don't want to be doing just the same thing over and over We want to be growing and getting better and learning new things So make sure you're giving your talented team members that opportunity for growth And that can come in a lot of different forms But firstly you need to make sure that your organization is providing access to resources Whether it's training or at ATEC everyone has access to LinkedIn learning And make sure you've got time and budget for professional development Some areas for potential professional development for For example developers that want to move into more of a leadership management role Project management process and procedure improvement if you want to head into operations Strategy and finance if you want to move into more of an executive role And communications for everyone if you're in a leadership position focus on your communications And so as a leader you're trying to find that match between What the organization wants which is value from your team members And what employees want which ultimately we all kind of want to get an identity from our work We're at a party and someone says what do you do we want to feel good about What we say we do so identity is really important when it comes to Delivering value for your employees And you can think about what everybody wants this relates to all relationships not just You know a leader You know managing team members this could relate to customers or Your partner at home or your children This is what everyone needs from a relationship and when these needs are met We'll keep coming back to that relationship. It'll be a strong relationship So those first three are the most important and everyone has different needs so some people Need to feel significant in a relationship. They need to feel like they're important and You know, you can't live without That relationship significance is important other people need Security they need to know they're you know, they're showing up to work or showing up to this relationship every time They know what to expect It's not going to be taken away from them Other people love variety, you know security and significance are not so important They just want stuff to be you know interesting and changing every day Once you've met those first three Needs then you can look at contribution and growth in any relationship People have a need to contribute So in an organization that's about you know contributing to the success of of the organizational contributing to the health and happiness of the team or something like that And growth everybody needs to be growing and improving and learning. So have a think about That framework if you want more information about that that's taken from a relationship Breakthrough by Chloe Medani's and Anthony Robbins highly recommend Reading that myth if i'm the best technically at doing this work that makes me a good leader Wrong That makes you an expert leader expert leadership is a trap An expert leader thinks well, I have to do this because no one else can do it as well as I can You're not willing to accept imperfection and so you create a bottleneck This is a huge risk for the organization if something happens to you No one else has been growing And learning to do what you do as well as you can do it And you're also the one that's usually in the spotlight because you're saving the day because you're so good at what you do That's not great. If you're a leader if you're a true leader This is what you need to focus on you need to focus on stepping out of that spotlight and helping other people And coaching other people to do The task as well as you can and the best way to do this is actually one on one coaching This can be really difficult if if you're a great coder. You just you know, you're used to being They're coding away So it's a very different skill set a different mindset if you're working remote, you know get on You know teams meets whatever and screen chat even spend a whole day just sort of looking at Somebody's screen and coaching them. It's so valuable And if you've got leadership ambitions, you're not currently in the leadership role It can be really difficult to break into that first role because you kind of need experience As a leader to be able to get experience as a leader. So how do you break out of that? And a lot of people think if they just do really well at that doing That their boss will promote them into a leadership position But that's not really true. You'll often get overlooked For leadership if you're just really really good technically Another myth is if you're sitting there, you're thinking well, you know, all that culture sounds great But I can't really do anything about that at my company wrong. You can be the catalyst for change Now somebody once said if you want something to happen, you need to start preparing for it to happen So the first step is to believe that this is a possibility So whether it's that you want to step into a leadership role Or you want the culture at your organization to change You need to start preparing for that. So the person that said this was a success talker And he came home from work One day and he walked in walked into his kitchen And he tripped over a bowl of water He said I put this bowl of water on the floor And his nine-year-old daughter said That's for the dog And he said well, we don't have a dog And she said yes dad, but you said if you want something to happen, you need to start preparing for it to happen So on and on this went she ended up buying a lead for the dog and she was you know, taking the imaginary dog For walks every day and you know, of course soon enough than the dog brought then the dad brought home a new Puppy So this is what we need to start thinking about if we want to be In a leadership position or we want to have a great culture at work We need to start preparing as if that is actually going to happen So we're going to start thinking and acting like true leaders We're going to start thinking about our 12 questions. I'm going to start creating an amazing culture So go and do it guys. Have fun. If you have any questions comments feedbacks There's my linked in So reach out That's all for me. Thanks guys


Okay, so We're going to be looking at a few spaceships Okay, we're going to look at a number of different things here both Well running our line will be running our line together with other languages and Also looking at observer, but how many people observe? some have So one of the things with the Alan system is very good at his introspective And observing does some of the introspection work do a lot more So we will start up the system So what I'm not going to show any more on this show But what I'm running in this show is actually a separate node under the run observer Observer in one hour like no looking at the node doing all the ships So we can start up server. Yeah, I'm not going to make this any bigger because all I'm all I'm writing now is Do anything so now I've popped up observer It's looking at itself. It's not doing anything. So for example, we have low charts But now if we go back to our This one here. I'll now start up the ship. Yeah, my system Starts the system. I'm gonna say I'm gonna have a space Universe of 400 by 400 and I'll run 2000 ships. Now we start up the universe there Yeah, there's nothing in it yet but now if I do a start run, I'm now going to start the run and 75 here is a tick time for each Now we start up now suddenly all these So now we're running 2000 spaces And these spaceships are very naive They go in a straight line Now this system is written now, of course It uses the SDL graphics graphics doing this very simple And the logic is written in law So each of these so I have an implementation law in our link and each of these ships run its own run So now I can go back to start Server here. Now it's okay. I'm looking at server. I now want to look at the other nodes I can see which node I want to look at the simulation So now we'll see your observer. It's getting yours in relation to the simulation Now we suddenly see that I can't unfortunately make that bigger But we can see here, for example, we can see the memory usage And most of it is in the processing How the memory allocation works? I cannot explain this I mean literally I cannot explain it There are a few people in the world know how the intelligent work is inside the processing So what I can do now is of course this code is written in In law, I can reload it I can change the code So what I can do for this certain number of ships is say now they should run some other type of code So we can change the logic And what we can do here is I can do set ships So we can set say the first 700 I can make them something called a run ship Now what a run ship does So the original one was default ship And what a run ship does is it still goes It sort of goes in a straight line But when it starts getting around near the edge of the universe It changes the logic around the edge of the universe And if we start these you'll see some of them are starting to go free Can you see that? But there are some green ships You can look at those and they do behaving different It's not a green program We saw the spike on loading code And now we see there's memory increase as well So yeah And again here is the thing is these are each ship Is a separate island process So if we go back and look here For example we can see in the system We are running 2049 processes So 2000 of those there The action of ships Now the 49 processes There's a few system processes Well there's a basic island system process It's about 28 when you start them up I'm running a few processes And it's very simple So when a ship changes position It just goes in right to the table We can do a lot more things here We can make some ships We can make them timid ships They're frightened They're very timid So when they go forward We can set these savers We can set savers We can make these timid ships You'll find they have another color They go slightly yellowish What a timid ship does It keeps going in a straight line It's a ship just in front of it Clips and goes back the other way I can show you the lower code after They also bounce And if we went back And look at our server here Our load charts We see there's another spike And I was loading those This is running in 3 slow Of course this is game And what you have to do to the game Is to kill them So we can make tax ships Now tax ships they also go in a straight line But when they get a ship They immediately in front of it They kill it I don't want to make too many Because otherwise they die Now they turn R&B red Unfortunately I don't have a sound in the face Every time a ship dies it goes boom We have sound We also can see Right zaps That means when a ship is shooting another ship And you see little yellow squares here They're exploding I'm not a graph So we see the ship is dying And if we go back and look at our observer here We can see well the load is going down Of course because ships are dying And if I look at the system Here we'll see the number of processes Gone down we've almost killed a thousand ships We've killed 800 ships I can do a lot more fun thing for the island system So if we go back to the load charts There So I can go here So we have this concept Of schedulers Basically there's one scheduler per course I can change this I can say how many I want to run So we can do our link Hold on System flag Change these And the flag I want to change is schedulers Online So I want to say in the load is dropping I don't want to run eight schedulers anymore So I can now run four schedulers And solve everything correctly So we see four schedulers are now Shut down and all the works Have been moved over to the other four schedulers So we saw some load increase here And we saw a decrease So I'm changing this wireless system I haven't deleted the schedulers I've just said move all the work Of four schedulers on the four schedulers This is basically what this is We still see even though the process Ships are dying we're still seeing Giving everything pretty well low balance It makes quite a lot of effort to give low balance We also see down here with sources Trains, things, and schedulers are dropping What it tries to do Occasionally when the load gets down too far It tries to say well I don't Act to run all these schedulers Maybe I can stop if you share this online We go back to look here we'll see We don't have any schedulers Yeah this doesn't go So these are some things though I want to stop this and start up again Show one other thing Those who are interested I can show you Show you the lower code Now we'll start this up again If I set this at 100 Okay so What was happening before With the timberships and the attack ships They were basically Especially attack ships what was happening Was that when you look at the universe And look at the university And then it would send them a zap signal A zap message Which would kill the ship And the ship would then die Explode and die It was just nacing and sending nacing If you do other things as well There are other versions of doing stuff Which will also communicate However we can try another one What would be nice Is if we can make the ships run in flocks So these are all running independently Maybe we can get them to operate So we can try that There is a flocks ship We can set it to ours After a while we notice things We can see things happening in our system Some of the ships are stuck Why are they stopping Well We can stop a few more if we want to They are doing secret communication So each ship When it finds a ship in front It sends it a message and says Tell me your position and your speed Then it sits and waits for reply So now we have ships sending Secret messages to each other And of course when they start talking With each other They'll be sending a message To another ship asking it's speed And someone else asking it to help So this is a very simple example Of the danger Of doing synchronous Message passing a remote procedure Of course it is so Extremely simple How could we go around and start putting it The easiest way is just not So instead of asking you should Send an message and say Send me or send me And we can see Look here on the load The system will eventually go online Eventually get on the guitar But need a bit of cleaning up What I'm doing now with So now we're running The logic is implemented in the door That was one of the purpose of doing this I'm now rewriting of course So I can implement the logic on the way Well running on the island system Either in the island or in the sea Or something like that I had a lower implementation I wanted to test it Well I was giving a talk on And I wanted to demo Two things both demoing the lower Of course and also demoing this is a way Another way of writing Gaming code Classic gaming code You have one central loop that runs through the object It's got a bit better now But it's still very much parallel It doesn't always show an alternative way of writing So each of these objects Each of these things has its own little loop It's only communicating with others There's no central There's no central loop in the system As I've said I have a ship behaviour almost done now Which means you can plug out like Or LXCN in the system And XT Anyone else? How much can you do in one line? Quite a lot I'll just queue myself That's fantastic So the question was how My name is Roger Huy This is what I can do Robert asks How much can you do in one line? It's what we call a plugin operator So depending on the data You can give it a different So for example you sort numbers You sort HSE So to further explain it Omega is the Write argument Write that you want to sort If it has One Or an item or less Then you just give Your sorting zero item Otherwise You go into this thing And what it does is it selects To select what's called Private And the offering function Dispect And so in this part it's selecting Where S is Rather than zero And then it's going to recursive these In the middle part It's just selecting Omega And then you're going to recursively Sort the items out Where S is negative There's two So here I have a I'm going to give it Which is the Signum of the difference Between the items that I'm comparing Sort it again Of course you can do the same thing Now I'm going to show you a different A slightly different quick sort To see it So what Q1 does is Instead of catnating The stranding And you'll see So instead of catnation The stranding It's going to provide Adjustable And then what that gives Structure The arguments that they encounter So at each level They're going to be triplets So overall there's a triplet The first triplet Are the items Less than the triplet In the middle one Items equal to the triplet Third triplet Recursively So if I do this again You'll get a different structure Because it chooses the pivot Right here This time the pivot is 4 That is it for Quick Sort If you want to see more There's a paper called History of APR-50 functions to do When I was here last year And it's now done And I'll give you the We have been running in production For now 3 months This is not specifically Directly related to our project But this is a very small portion Of what we thought We would be able to do Which is in our production system There are certain APRs Which you want to Generate on AROC And you want to run it In a chain environment And you want to take it off At your will You don't want to deploy code There are many ways of doing it But this is one small way of doing it Just to also demonstrate What Erlang is capable of In terms of people A lot of people who are new And they want to look at How these Erlang can actually compile Code or the fly Rotate it to memory You can actually store it You can bring back again As many functions as you want You can even tie them together You can do a lot of introspection All that power Plus you can also look at The complexity of a function You can find out the number of reductions It took While you execute the function You can do all sorts of things Which I think are useful And we would Definitely want to try that First in staging and then go to production This is a sneak peek of what That You want to achieve This is just a web socket interface Into Erlang And there are a couple of commands Which understand These are the functions Which are these functions that define If you ask something new So if you ask questions There is no function Which is like ORNLP Defined so it actually Doesn't know about it So why don't we define it Let's have the same question again So it's actually querying The Stanford project With ORNLP and getting all the results As a JSON format It's a simple function But you're defining on the fly Even if I shut down the virtual machine And start it up It's getting from a database So you can load it up It can even be shared across Likewise you can Just keep a couple of them If you've got the context here So what if a function Which are calling other functions So it doesn't know how to fetch a page Let's try maybe the website Something So let's define a function Which makes another function call Let's try that again So now this time it's supporting That it doesn't understand what it may get If we get called So far At the end of it I'll show you All these screen shots Which Now it understands Putting HTML within it So kind of you can do it As we're in under time You can call as many functions as you want Basically it's like a concept Of defining functions on the fly And you can actually delete the functions To whatever because it's all powered by a lang So there's hardly anything To do regarding this The biggest advantage of this approach Would be to run certain functions Which we need on a daily basis We have a lot of data stores And we want to query Number of them in unique ways For either debugging, recon Or whatever it is We don't want to pollute the Platform which Was compiled in So if you want to define on the fly On production in a safe manner That kind of workflow It was actually very fast But it just run through What was captured So it is in the reverse So it's basically Because of your real life is able to Identify And giving all the constructs where You know what is unknown And what are known So it is able to prompt What it doesn't understand And if you define it Pretty much These are compiled So they are loaded into memory And they are compiled into memory So you get the functions Like anonymous functions Eventually stored in a data store Like a t-value store Good that the internet is loading up So it's actually going over the internet Saving it in so you can Potentially have another application Which is also getting all the learning So technically if I were running in production My colleagues would have called that Option for it So the learnings are basically shared So the application If you want that function to be run In an application you have to define In a central store for cluster of machines So you can get that from any of those The applications which it's kind of shared Because these are not This is the logic It's not to be passed The logic is supposed to be something add up And something to do with So we get all the We get a lot of requirements all the time But we don't want to implement them in production Because they are just not right So we need a safe environment And with Erlang we can actually So if I were to show you the screen The debug screen you can look at the Functions that are being invoked So I don't know if you can see this You can see a local function call If I were to highlight that Is that clear enough So it's Erlang if you are A very nice functionality Of looking at Which function calls are being invoked And checking it at run time Whether it exists or not And there is a custom code which is written To intercept that And then you can either Allow those functions to be executed Or you can actually be empty and say No you have to get too much of time And you are not allowed or authorized To call certain functions And with distribution you can Disguise them because if you can Learn one function you can do anything Hello everyone I am Pani Mahesh And I want to give a quick Top on repeatable builds in Erlang The idea kind of came Today when I was listening To today's topic Where a few things were mentioned About rebar 3 being Better than rebar 2 in this one So you can get some repeatable Plays and that reminded me of a problem That I was solving very recently Less than a week ago So the title of my talk is Repeatable builds in Erlang land For the paranoid Actually no it is Repeatable builds for the Really paranoid Or not really It's repeatable builds for the Really really paranoid So we have a problem in the Erlang land When we build a release We get the same exact thing again Mostly because we have a few problems Before I go into that I will quit about myself I am working as a developer Happened I am also a system administrator One and all Mostly these days I am working On Erlang building my own K Gateway But the problem is Generate a release Given some Erlang code base And give some guarantee That you will be getting the exact Same release at any point of time In future when you repeat And by the exact same release I mean functionally identical The problem is this It's like a very simple problem People coming from other languages Might be laughing at this But how many of you have actually Deployed Erlang And what were the build tools That you were using To build your project Before releasing Previously there were Erl-C, Emake files Then there was Erlang MK Then Rebar-2, Rebar-3 These days Mix can also compile Erlang project We have a lot of tools at our disposal Barring some other esoteric Or rarely used tools I am going to say that Every one of them has an issue And mostly it's Erlang has a very serious dependency problem We still have Use dependencies or source dependencies And source dependencies Keep referring to source dependencies And we refer to branches Now imagine my surprise when Just a couple of weeks ago I had to deploy a project One of my dependencies somewhere had an update That I had not paid attention to in the last few months And everything broke Things were working just fine And they broke exactly When I was demoing in front of a client And I got really frustrated and set out to solve this So I will be referring to Some of these Visible So let's look at how Erlang MK Purchases and builds its dependencies It says that it will first Go to the first dependency And recursively It will try to build it If it has a makefile It calls the makefile The makefile might be calling Rebar-2 or 3 Or else it might Typically patches it And if it's an Erlang MK project It gets another depth folder under it And the depths get fully there and combined This is similar to how Node.js works We have node modules where each module has its own Node modules and so on But we have a very big difference between these You can have the same module With different versions And load it into the same Node.js process It's not the same thing in Erlang land You have a global module names You can have only one version of the code Barring hot code upgrades are not going there But When building here You can potentially have a single build folder Single project folder Where you are having multiple versions Of the same application Being brought in When you make a release You have a guarantee that exactly This is what is going to happen This is the version that is going to get used And why again are we using Different versions When building we cannot guarantee That they will be used simultaneously When running That's the problem with Erlang And it's clearly defined In the documentation Now rebar 2 was kind of good It had this Beautiful option If you build If you Manually Get every single dependency And add it to your system Erlips Or to the environment variable Erlips by setting the path And while using rebar 2 to compile If you just set this environment variable It will try to It will not try to use the dependencies Of itself It can use the dependencies from the Erlips on the system Which means that one by one very carefully doing You can have repeatable builds But as we saw in the morning It has it's problems and it's People are moving quickly to rebar 3 Unfortunately rebar 3 does not provide Any single dependency Rebar 3 wants to manage it's dependencies By itself And it does not give us any Serious helpful And while explaining while rebar 3 does What it does We have a very beautiful explanation It considers that the dependency management To be Using versions to be informational The semantic version is something cool It's something very recent It was not there when Erlang was around Erlang is Ancient, it's not old It's positively ancient Back then people relied on each other To keep their code compatible With each other But no longer everybody develops their own project Everybody moves fast And breaks things eventually So semantic version is out the window People use source dependencies And if you have a problem with some dependency Deep inside You'll have to start working it And everything that depends on it Not a viable option And not everybody is subscribed To the same versions things Git tagging is not prevalent And even then There is no guarantee that somebody Does not go back and update Their Git tags or whatever We have Hex these days Hex is kind of nice Hex we just prevents you from publishing To the same version Using some different code You'll have to increment the version or something But again People do not pin to specific Hex versions People use semantic version ranges And there is no guarantee that you get the same thing If the developer misses some update So even with Hex We have a problem that has not been solved So And Automatic versioning does not work But we introduce rebar.log Mixintroduce mix.log These are very recent These are a step in the right direction In terms that they store some References that they will try to repeat When building But using the same tools If any of your dependencies internally Are using Erlang.org Or so on It kind of works using plugins And bridges I recently had an issue where Beam files compiled using one version Of Erlang were not Usable By Dializer that is running on a different version Of Erlang This is an unholiness So what we Next to the recipe So we I am using something called mix To those people who do not Or haven't heard of it It's a fairly recent one But it means Is that it Allows you to do reproducible It has its own It mixes also its own language Where we define some expressions That define a derivation It's a logic on how to Build something The interesting part is You can read along the entire closure So I will skip over to the Here is the subject That I have done recently The next I could not load The exact mix file because of It's an issue What I am doing here Is that I have taken every single dependency Locked it down by its content hash And used some helpers That were defined within the mix ecosystem To wrap up building using Erlang and K, rebar 3 Or mix To ensure that I get the same repeatable And This is particularly Interesting because Even if I repeat the same thing 10 years on the line It is guaranteed that I get the same version Because I am locking not just The versions of the dependencies I am locking the Erlang compiler I will go one step further I will lock the GCC that was used to Build the Erlang compiler And the hash of the source code that was Used to build the Erlang I will go one step further So it startles all the way down To a strapping base I have complete guarantee That even a decade down the line I will be able to repeat everything By building GCC first, then Erlang Then Elixir first Then every dependency And I don't care if GitHub is down Or hex.pm is down If I have these contents cached Because the contents are verified By the content hash If I have them some way I can explode it Every of this has been patched To disallow any network calls It's a simple patch Made by the next ecosystem If you try using VBAR3 to build something You make a HTTP call The entire build fails Saying that you are violating my Policies It's not airtight because The response of the network is unreliable So this is just something that I wanted to do