 I know I don't normally do video introductions, but just for this one, especially because it's very long, and I would like people who aren't familiar with the IDA community to watch this. I've been developing an IDA for about 14 years now, and this video covers my development history and just sort of how the community and how the leading IDA vendor is, how it's like to be an IDA developer, and why you don't want to be an IDA developer. There's better languages to learn. There's really only one benefit that IDA really provides, and not two benefits, and you can usually implement them in other languages a little bit differently, but you can still get them. So if you're interested in IDA, please watch this video and reconsider. So I know it's been quite a while since I've really done any kind of update, any kind of content, really. For many months I really didn't know what I wanted to do with the channel or exactly what direction I was taking with programming, and a big part of that wound up being because I just had enough with the IDA community. I detailed that in another video, and I just want to say that that was definitely not an emotional reaction. I still strongly feel that way, and it was a while feeling that leading up to eventually making that decision. That was something I mulled over for several months before finally deciding that. So I want to give a little bit of backstory about me as a developer and the sort of my experience with two very different worlds, because this isn't and has never been an argument about how things should be, but an argument about how things can be better. Which to be fair, they still should be, but it's not just like an ideal, they definitely can. I guess you could probably say that I really started programming just fiddling around with game development, just RPG stuff, some of the combat logic and how things work, damage calculations, shit like that. Nothing really that special, because we're talking very basic games with an engine that provides almost everything for you. That's where I first got exposed to programming. Now I've always been quite a bit of a gamer. The interest in it has died down a bit, but I still love the media. I definitely game more than I watch TV or movies or shit like that. You know, I'll buy a new video game before I go out to a concert. Different strokes, different folks though. So that started when I was about 14 and it died off pretty quickly. I sort of realized that I still have on the back burner just this ideal of I would like to develop a game at some point, but realistically it's probably not going to happen because there's a lot of work, a lot more work than people think that actually goes into it. For good one. But I realized through that I do enjoy programming quite a bit and from there I decided that I wanted to learn to program. So I dabbled a bit with some languages and one of the ones that I found that actually resonated with me was Aida. I really liked the syntax for the most part. I really liked a lot of the design goals of the language. Now with my experience I don't think a lot of those design goals were met very well. But overall I still think it's a great language. But that's... It was a pain in the ass to learn, which is a big reason why I started the channel and did so much Aida content. At the time there was pretty much nothing. And I have a video detailing this as well, but it was overwhelmingly just books and memorizing shit from the Aida Reference Manual. Which that'd be like going to the ECMA standard for C-sharp and that being how you learn C-sharp. That's really not an ideal way to do it. I mean you're going to wind up knowing a hell of a lot about the language and its intricacies. As you learn a language it's certainly a good idea to reference that for some of the specifics. But that shouldn't be your primary mode of learning. That's a really bad way to learn. So this pretty much started happening around the time where I was 15. So that means as of now I have about 14 years of experience working with Aida. But since it was so difficult to learn I would get frustrated and I kept dabbling in other languages. Like I'd said there was always something about the language that resonated with me. So I kept going back to it, but I dabbled in other languages. And I do wind up thinking that was highly beneficial because I wound up seeing concepts from other languages and what they did well. It's a big reason why I stand by my attitude of there are different tools for different jobs, not one superior language. That's okay. But one of the other languages that I had dabbled with that resonated with me was C-sharp. Now I really didn't start to take C-sharp seriously until I was about 16. Yeah. No. 17. That was later in that school year. I would have been 17. So that puts that at about 12 years of experience, possibly 13. So those two largely wound up being what I focused on. Still found myself very interested in language in and of itself. So I periodically check out languages, new stuff that had cropped up, extensions of other languages. For a while, like numeral was a sort of extension of C-sharp where it was basically C-sharp but added some stuff. Not in the same vein as typescript, which is more seriously of an extension. There were incompatibilities between numeral and C-sharp, but that idea or just radically different languages. That was how I got exposed to Snowball and the ICON group of languages, specifically Unicon. But again, IDA and C-sharp were largely the ones that I focused on. Now, as I had said, IDA always kind of resonated with me, so that was the one I had focused mostly on. And that was the one that I had done the majority of my development in. And, well, look, I deleted the ripos. I don't have the code anymore. I'll talk a little bit more about that in a bit, but you'll unfortunately have to take my word from it unless somebody wants to dig up the posts from Twitter or Facebook. I don't use Facebook anymore, but they were up on there. So there is proof out there on the internet, but it's not in the ripos anymore. The performance of some of the things I had written, especially the containers library, outperformed edicors in most situations. The performance of it was really, really good. While also providing just some nice features, like some basic support for queries. IDA doesn't have a nice language-integrated query link. It doesn't have to specifically be C-sharp's link, but that kind of concept. But did have some of the methods required, they don't call them methods in IDA, but the functions required to do some basic queries. And it's useful to have, but performance was good. I had also, the code quality of this one was absolutely terrible, but I had written a standards passing IDA compiler. Again, the performance was absolutely abysmal. At the time, I didn't know some of the stuff I know about good language, good parser design, good synthesizer design, and stuff like that. I had to pick recording back up on another day, so hopefully things aren't too broken as far as the flow goes. I think I pretty much got where I left off. So it was with containers and how the containers performed well. There were other utility libraries that I had worked on. One of the things I had mentioned in a lot of the IDA tools updates was that, get the fuck out of here. It was about how in IDA it's quite easy to make. Multi-target isn't quite the right word, although sort of, but package variants, I took to calling them. Where the specification is exactly identical, but the body is different. And as long as you're using a standalone library, you can just sort of swap them out. The thing I had mentioned is that a lot of the stuff that I had been doing is rewrites of old libraries. Those old ones I'm keeping closed source, I'm going to... The plan was to discard the old stuff once the new stuff was rewritten. But yeah, we'll get to that. The old stuff used some manual build scripts. That's how that worked. And that's what the IDA tools project basically was. Just taking a lot of the advanced logic in those build scripts and automating it. But one of the things, like the mathematics library, could have a normal implementation that did array or vector arithmetic. The way you would expect without any specialized support, so that it is iterate over the arrays and perform the operation element by element. But there was an implementation for the 80686, as long as it had... Well, actually it varied, but the various SSE instruction sets, for the most part, there were some additional stuff. But as long as it supported those, would actually break the thing into appropriate units that the vector component could work with and send it off to that and have it do it. But the interface was exactly the same. So some pretty fucking useful stuff. That happens to be, really I would say the biggest focus for me as a developer is making things that are very usable. Performance is probably second. It's way up there, but I would say usability is my single biggest concern as a developer. If it's not usable, people aren't going to use it. I mean, it's a tautology, but for some reason that needs to be reminded to a lot of people. This stuff has to be usable. People forget about user experience. A lot. So, I'm not sure what more I really want to say there. The disappoint is that I had done quite a bit as far as developing things for the community to use. And it definitely was used by the community. Not to a huge extent, all the awareness I had to basically do myself. I hate the guy and that's not something I want to get into. I'm trying to keep this to not be a negative video. Oliver Henley, him and I definitely don't get along. But to be fair, my stuff was up on Isada. Awesome Isada repo. That was basically the extent of any kind of acknowledgement from the community. Never anything in the complying Isada Usenet group. I could try, but me posting anything there kind of got... Went south a while ago. Older email account, if anybody is interested in checking on that. It's not the current email account I use now. I used to go by a different name and I'll... We need to talk about that. This will come up. This will come up, so I'll talk to about that when I get there. Those libraries really aren't the only thing I've done as far as the community goes. Obviously, if you're watching this, you're aware of the YouTube channel. But one of my earlier software projects was with the Aurora UX project. I found it quite neat at the time because I shared one of the unfortunately toxic attitudes that a lot of the ad community has in that Isada is somehow superior language and that other things could benefit by being written in Isada. Now, that's not true. Certain things that Isada excels at will obviously be better if written in Isada over a language that does not excel at those things. If it happens to already be written in a language that excels at the things it needs to excel at, rewriting it in another language that also excels at those things won't actually improve anything. But really, the thing that matters is your... a combination of company culture and engineering principles. Good engineering principles will lead to a well engineered design that, again, is basically a tautology but that needs to remind people of that. There's actually some things that, contrary to the... how it's sold, that Isada really needs some extra special care because it's vulnerable, very vulnerable to certain problems. So, good engineering principles, regardless of the language, are really what saves you. But also company culture. How much focus... how much resources do you really put towards dealing with bugs and stuff like that? No language will save you from no quality control. No language will save you from really no bug testing, no unit testing, no integration testing. You need these things. But also... no, there is no also. It was working on the Aurora UX project during some of the earlier stages. And specifically, the thing that I was focusing on was... and keep this in mind because this is going to come up later. I was one of the initial people working on taking Nat and Giggy, yanking it off, basically rewriting Giggy for something else. We were looking at LLVM and basically porting Nat onto a different synthesizer. So that is... When it's picking up, I'm going to move just in case. Porting Nat onto a different synthesizer. That is the component of a compiler that does the code generation. The other side being the analyzer, which is sort of the combination of the parser and lexer. Obviously, these things can vary a bit. But I had decided the project was kind of horribly mismanaged. One of the big things was that we had changed the source control management system. We were using three times before I had even finished planning. Yeah, that was bad. But inevitably, I did stick through long enough to get the plan down, get enough stubbed so that Nat and Giggy could be built independently. And then I abandoned the project. I was one of the original guys working on that. It's going to come up later, I promise. So, is there anything else I needed to touch on from my past? I guess not really. I'll mention it just because it'll be real quick. I've worked on other projects a bit, although not really all that much. I found that I really interacted quite a bit and did some minor bug fixes with Plan 9 and a little bit with Haiku OS. Some stuff here and there with some, I guess we'll call them indie compilers, small independent compilers. Sometimes for more major languages, sometimes unique languages. SEED 7 is one of those, although other than some very minor stuff, like two bug fixes, I don't think I really did much. Most of my stuff with SEED 7 was definitely just studying it. Oh no, I almost forgot one of the most important parts. Okay, so another one of those things that I did privately, and there were numerous revisions of this, more as learning experiences than anything else and is why I happened to know quite a bit about compilers and language and stuff like that, that one of the projects, what I'm talking about right now, obviously, was on an Aida compiler. A standard passing Aida compiler. Now it performed fucking terribly. Even the second revision of it was just bad. It's actually really difficult to write a compiler, not so much the working, although that depends on the language and Aida's a complicated language, so in that case, yes. But it's really, really difficult to write a compiler that performs well and generates code that performs well. If you think you're going to do it as part of like, hey, let's just do this for fun, please don't do it. Please don't. Literally the only reason I stuck with it for long enough to do that was just because I happened to... I mean, that was how I found out I really like working with language stuff. Well, the thing I've definitely found is I'm better, considerably better with the analyzer side than the synthesizer side. So in the future, if I do something, it's going to be building just the analyzer and attaching it to a synthesizer like GCCs or LLVMs, just building the front end. But I have a working Aida compiler. Again, it's bad. But clearly that's enough to demonstrate a substantial knowledge of the language. And again, from anybody watching this channel, you're not surprised by that at all. One of the things I had decided when I had decided that I had basically done with the RREX project was that it wasn't that NAT needed to be yanked off GCC and put on to LLVM because LLVM was somehow superior. I do think it is, but as far as code generators go, they both produce remarkably good code that is very competitive with each other, and you really have to benchmark your stuff, both of them, to know if your specific use case is faster in one than the other, because they are highly competitive with each other in that regards. The advantages of LLVM are elsewhere. They both have excellent synthesizers. Now, what I had felt after doing all that work was that it was NAT and GIGI that were the problems, that what really needed to be done is write a new front-end for Aida, not put NAT on to a different back-end. That's because of a lot of the ways they work internally. There's a lot of duplicated work. There's a lot of odd behaviors. One example of duplicated work, which happens to be a very easy one to investigate, which is why I'm bringing it up, strings, null-terminating strings. There are functions to do this inside of NAT. They work, they do the null-termination, but you don't need to. They're used extensively throughout NAT and GIGI already null-terminates strings. What you generate is actually a string with two null characters at the end of it. I'm not kidding. Run, like, attach a debugger to the actual GCC synthesizer and you'll wind up seeing that. That's fun. Now, when you pass those into the various C functions, and if you're using NAT's text.io stuff, you are still using the C functions as much as that's going to trigger some of you Aida people who despise C for some bizarre reason. You're still using that underlying behavior. So it gets written properly, but for a while there's two null characters that don't need to be there. But it's... NAT and GIGI are filled with those kinds of things that are just bizarre and... I think really demonstrate a lack of understanding for the people who are developing them. Oh, I need to partially rephrase that. I mean, lib NAT. There's a function to add null terminators to strings inside of lib NAT, and then that function is called extensively in... Oh, God. Freakin' wasps. And then that function is called repeatedly inside lib NAT. Not inside of the... Well, actually, I don't know. It might be inside of the NAT analyzer as well. I don't know. But I know it is definitely one of those cases where work is being duplicated still. I'm just trying to be as accurate as possible here. Because there's going to be some people picking this video apart. I don't know what to say now. So I had done this development for a while, gotten the... decent amount of libraries up. This was before any of them were open source. This wound up consisting of collections library or containers library which had stack queue, 40 queue, singly linked list, doubly linked list, both of which could polymorphically be referenced by just the list. So you could swap out implementations but not have to change your code. The only time you'd need to use specifically the doubly linked list as the actual value type is if you needed some of the specific enhancements. There was a skip list again would polymorphically be swapped out. I didn't get into trees. I'd wanted to but I didn't get into trees. That largely had to do with me not finding a good starting point. Because there's a lot of different types of trees. A lot, a lot. And then a few others. Ring buffers and stuff like that. There was the mathematics library which had general functions, trigonometric functions with a polymorphic array type. So that is you had an array type but then initialized it using like a degree type or gradient type or radian type basically to implement units inside of a language that doesn't have support for units. This wound up using some trickery with a base number that was actually an integer of a very specific range where it would convert cleanly into both degrees and gradients so that you didn't have any rounding errors. And it was specifically an integer one so that the rounding errors didn't happen but two for performance reasons but it happened to be a very large integer doing that whole trick that older games and stuff used to use where you'd have like an integer of range I don't know, zero to I don't know, 100,000 because it was intended to represent zero to 100 you actually had four extra digits that would be essentially the decimal place or the fractional part after the decimal place. I made use of a lot of little trickery where things would superficially be what you wanted and expected them as but for performance reasons you weren't doing the better things you know, the balance between usability and performance. There was the arrays and matrices combining them to get the entirety of vectors linear algebra and like I had said there was a patch gauge variant for that. There was a color model library so that I'd never gotten around to implementing color space support but the models were all polymorphic on a base color type with no actual representation but I'd implemented grayscale, RGB, HSL, HSV, HC, HCI or HCL, I don't remember actually on HEV and what is this one, RGBOG? RGBO red, green, blue, orange, cyan, magenta, whatever that last one was I don't remember anymore with all the appropriate conversion so that all of the properties that they had could be referenced so that even includes things like having just an RGB type and getting the orange channel as if it had the orange channel console library for convenience although that got a lot better in the rewrite the original one is kind of crafty but to be between that things that actually performed really well and the compiler which didn't perform well but was good learning experience and importantly demonstrated a very good grasp on the language I thought, I really like this language I want to contribute to it I want to be a professional programmer and try to get a job at ATACOR oh boy, that did not go well I got the interview, I got to that point I got told we don't think we can't see you as ever being a developer I led to a suicide attempt which obviously was not successful along with about a week in the mental ward a lot of therapy after that definitely one of the worst times of my life and eventually got to the point where it was like, alright, let's make him move on if they don't want me then they don't think I can be a good developer despite the proof, despite the benchmarks then I guess I'd do this on my own I guess, and I could try for one of the other Aida vendors but I really don't think it's appropriate to charge for your compiler charge for some of the additional stuff, sure, but your compiler and your IDE, I really don't think it's appropriate to charge for those you want people to use your language if there's a startup cost to just learning the language to decide if you even want to use it, that's rough and that's why certain languages just don't really catch on, that needs to be free I didn't really want to work for those companies, I didn't want to support that because that's something I fundamentally disagree with well, after that where I had sort of obsessively been going over everything that I had written trying to refine it, trying to learn as much as possible about performance improvements further performance improvements and really trying to educate myself as much about design principles the benefits of object oriented design and where you really benefit from that versus situations where you don't want to use that same with like fluent design and functional programming and so on and so forth I learned a lot during that period, definitely couldn't squeeze too much more performance out of the stuff that I had written but I'd still learned a lot of very useful stuff during that time so then after a bit of that what I had sort of switched to sort of not switched to focused on was they don't know what they're talking about, I have found all of these bugs in the past that I've sent patch reports not patch reports, I've filed bug reports and sent patches in fixing the problem for them and they tell me that oh that's not really a problem it's like well if it's not a problem how the fuck did I fix it that kind of thing I have a video on my biggest pet peeve on that one which was the Unicode support for Windows and I fixed that throughout the entirety of Libnat and got told that I didn't understand what I was fixing that you still can't get Unicode support on Windows even though I had fixed it even though I had demonstrated in that video that I can and even though Microsoft does it you think they know their own product if they can get it working then clearly you can get it working whatever, I guess Idacore knows more about Windows than Microsoft does that's not arrogant or anything they're gonna be like that they're gonna constantly reject these fixes I don't know if it's more arrogant but either way whatever, fuck them then I'm going to try to build up my own stuff whether it's my own company software solutions company or consulting service or something try that and I'd actually still really like to do that it just won't wind up being without it it's still windy out here I want to sit outside because it's nice but it's windy and microphone tends to pick up really badly for you guys I don't know, I have a new camera or new phone using as a camera so it might be better for that I know the video quality definitely is I don't know when it comes to picking up the wind how it would be with that obviously if you're going more the independent route you need to bring awareness to your stuff and so that's where I started working on getting everything that I wanted to be open source and took the opportunity to go through and audit all of it forcing myself to rewrite every single part so that I don't get lazy so that I absolutely am thinking about every single thing and if it could be designed better or should be renamed or whatever rather than just throwing it in a get hub repo there you go it's public actually that was originally up on chisel app which is for Fossil I think Fossil was actually the overall better source control manager but get hubs definitely the more popular one still keep using Fossil for internal stuff for stuff that I don't plan on sharing with everybody at least the source code doesn't get shared with everybody but the public stuff I mean it's not like it's bad because it's definitely not bad it works it definitely works even at scale the Linux project uses it to great success um so during it up on gay hubs fine it's not my preference but it's fine so that's how that started and from there most of you probably have an idea about the rest of this unfortunately this was where a lot of the recognition from newcomers and absolute hatred from existing members started and I'm not the only one who have experienced this I have received numerous comments over the two years I think two years pretty much all detailing the same kind of thing that I've encountered now some of these I'm not going to link to largely to protect the identities of the people that sent them because there's some stuff in the messages that are just give an idea of who said it but hopefully I haven't forgotten and have been linking or inserting some of the more public ones like if it was something somebody set up on YouTube obviously that's public I don't mind sharing it because they obviously decided that they were okay with it being public um you know I'm not the only person that's noticed toxicity in the community and the thing is I haven't really encountered that with other communities like I had said I have been programming in C sharp for almost just as long I really haven't encountered the problems in the overall dot-net community like I have with Ida I develop something even if it's basically competing and reforming something Microsoft has had and I actually have in one instance a team at Microsoft reaching out to me offering me help if I want it look at the difference in that for almost two years in development Ida Cork had never offered help even if it's just like hey I'm having some trouble figuring out how to use this there doesn't seem to be much documentation can you give a little snippet or explain something nah nah they won't do that they're trying to play a little bit of the good victim right now I'll say this first actually one of the other things and I had alluded to this was that there really hasn't been much shout out from the community and there is a community run twitter page it's not and to be fair it says in the bio but it's general presentation not really that it's run the Ida programmers twitter it's it's closes it is run by some Ida Cork employees but it's easy to miss that if you don't go and look at the twitter bio I definitely met some people who didn't realize that was the case they thought it was just general community members and I have it's been more than one or two people so there's definitely a misconception going on rather than somebody just being a little stupid um never a shout out from those guys I know recently and I'll fully admit I blew up I still think I'm in the right that being said I probably could have handled it better but I will admit that I blew up when they had said that they had implemented the first Ida in spark extension for VS code what the actual fuck no you haven't the first one was I believe his name was Alessandro Del Sol employee at Microsoft this is not an officially endorsed project at Microsoft it was probably like one of the Microsoft garage projects or something he just did in his own spare time um but he had done an Ida extension for VS code I had done it quite a while before mine and definitely before Ida core as far as I can tell his was the very first extension now there's also one from Luke guest or Lucrezia a guy I don't like but in being fair he had an extension out before Ida core his is not up on the VS code marketplace and I think that's a mistake on his part but again there is an extension that exists for it before Ida core that's three right there that's a three extensions for Ida right there this is not the first and it seems like they're trying to whitewash history a little bit using their sheer size and shitting on the community now I lost it a bit because they have a particular history of doing that that I have developed just a few weeks ago maybe months they announced hey guys we have ported NAT to LLVM are you fucking serious this video is already quite long and I don't want to put tons of these examples in there but so far I have counted seven of those and so help me fucking god if I find any of my code in there from anything other than the VS code extension because that one is public domain if they want to use that they can I'm a little salty about how they presented it but if they want to use my syntax highlighter they can and they probably should because there's really bad any indication of my code existing in their stuff I know it is not a license that they can integrate with that initial work I was doing was under the CDDL which is not compatible with anything that Idecor has used before so either they released that under the CDDL which I'm pretty sure they didn't none of my stuff better be in there but the amount of times that this has happened before makes me think that it probably is so the conclusion I have come to and it's before the shit today Idecor and the Ida programmers twitter for months now I've been mulling over whether I even really want to be an Ida developer anymore not a developer, I still love programming but whether I want to be an Ida programmer do I want to spend large amounts of my time contributing to a community that clearly does not respect me who has a company that is completely willing to copy things that I have done without giving me credit for or at least a nod willing to pretend that a prior work from myself and others doesn't even exist that they are somehow this saviour and the only ones doing anything and community members who are willing to do things like insult me from my race insult me for disabilities that I've had can't put a link for that one because I reported the comments in YouTube strip them I didn't want to screenshot them as reminders of what was said but it's happened all the while having programmed in C-sharp for almost just as long and never encountering any of this well no no I don't want to keep doing that so over the past few months I had ported pretty much all of those libraries to C-sharp there's still some finishing touches I'm making has to do with making sure that I don't reimplement anything that is already in the CLR without good reason so that means that my containers implementations are actually not getting implemented in C-sharp in any of the .NET languages because they don't really need to be Microsoft happens to already be using quite good performing collections and that's surprising to say because this is Microsoft but no they actually really are I'm sure some improvements could still be made maybe what I'll do is add in some of the missing collections some things that they didn't implement do my own approach to that but I really have no need to implement that because they're I benchmarked them extensively they're performing basically the same as mine some minor performance differences but not anything that I can say mine has a good use case for compared to theirs, theirs does really well so there was one exception my stackout performed theirs but for one container nah, it's not really worth it now that's not to say everything that Microsoft does is phenomenal the last video was stringier, an alternative approach to pattern matching parser generation stuff it's complicated because it's an engine and because it's an engine that can be used for different things but it really gave I mean it outperformed Microsoft's regex implementation in most situations and now the situations where I lost don't even matter because I have a regex adapter so yeah, the few times that Microsoft wins out well let's just use their implementation anyways because that's cooperation we can work together I don't mean to shit on them at all some of the stuff that I had uncovered when extensively benchmarking them they actually did a pretty goddamn impressive job seriously, it's surprising no, ultimately I think the regex approach in general has some faults but they did a really good implementation of all things considered so I know this isn't an issue with me and I know that because again I haven't encountered this at all in other communities, a lot of the criticisms that the EIDA community has levied against me are not criticisms that I have ever encountered in school, in the workplace or in other programming communities only from them, specifically now, if it was something like oh why does every girl I date got to be such a whore well that's probably because of me something about me I don't know, this is sort of an example because I like to watch a lot of the r slash nice guy and r slash nice girl compilation so that's just like the first thing that popped into my head but you know what I'm talking about if it's only happening in a very specific case it's not you, because it's not happening all the time, and I can further back that up because it's not just me having the same things to say about the general community nor about how EIDA core handles bug reports or handles criticisms of their product and so on there's a very large amount of consistency in the EIDA community very clear pattern very long video and for those of you who don't like very long videos I'm sorry but there was a lot that needed to be said because this is sort of a major deal but I feel it's for the best I really really do the stuff that I've been doing in .NET have been going over really well and honestly it gets a lot more criticisms than it really should, especially when it comes to performance because I think a lot of people look at those toy benchmarks and take them more seriously than they should it's toy benchmarks and there have actually been problems pointed out with a lot of the way the benchmarks are taken for many languages and much evidence from journals or just measure the specific thing don't look at toy benchmarks though I am still not entirely sure what I want to do with videos going from here there happens to be a lot of very excellent people doing videos on C-sharp and Visual Basic and F-sharp there just really isn't a need for another person doing those so I may still do videos for that with some of the oddities some of the unique approaches to things that really haven't been covered before I've got one on enum structs and enum classes that has not been covered I don't think I did that video maybe I did but there's others on how to get structural inheritance working because that's something you can do it's a little weird and there are some pitfalls but it's just like how you can get structs with reference semantics you can't use them exactly like classes but you have the reference semantics same idea you can get everything that you get from classes but you can get an inheritance and polymorphism setup with structs so I think maybe some advanced topic videos would be good to do because again I don't want to dilute the video ecosystem when there's already excellent videos from various .NET programmers they don't need more of that I'm getting much views anyways although they probably get more views than the other ones because oh boy is Aida shooting itself in the foot but one thing I also want to do because I'd be lying if I said I wasn't a bit salty and I know that's come across a few times in this video something I would like to do is a small little video series on Aida just to finish this up on pitfalls in Aida severe vulnerabilities it has and design decisions that make you feel good about your code but are actually very prone to bugs because those actually exist in either the big areas there's a lack of ceiling for classes for tag records that's really bad actually that you tend to design things thinking you're in a sealed environment and somebody can easily go and inherit it and inherit your type well because there's also fine grained visibility accessibility you have free access to everything inside that record once you've inherited it and oh boy you can break things you can really break things and then there are problems with how switch case statements they don't actually require you to have a default they go oh hey I checked this for every valid value and it looks like you handle all of them what about the invalid values because you can pass invalid values through it a lot of bad decisions a lot of really good decisions too again don't get me wrong I really like the language I would like to point out that it's not anywhere near as perfect as some members of the community think it is because at this point I'm done with the community so my last hurrah can be let's draw some attention to some of its problems until the next video have a good one guys