Hi, I had previously told you guys that I worked with CypherCrescent as the Domain Specific Language (DSL) focal point for their software development team. Well I didn’t start off being the DSL focal point from day one; I started as a developer working with the DSL team… No, Not really, I started as a full stack developer with the web development team (I later became the HOD of that team).
I started my programming experience with Java (not the coffee but the language **smiles**) specifically with J2SE. I then went ahead to learn…… J2ME because I needed to develop an App for my failed startup then. From there I went on to learn J2ME Polish (it really helped in developing J2ME apps with very cool User Interfaces and small binaries). J2ME Polish was a b**ch, full of bugs and errors; I mean I virtually had to read a ton of materials to get it to compile my first code… but it was worth it **smiles**. Those were the days of “real” mobile development, you had to really “hustle” to get the compiler and linker to work; Now everything is so simple with Android .
Well let me get back on track here…
You see, my learning path also took me into PHP (I joined CypherCrescent as a full stack – the LAMP stack – software developer) before I finally started developing in C# (arguable my first .Net language). I did a stint of VB during my NYSC days, hustling things.. lool… a corp member gotta make some small extra cash on the side, right?… right?? Alright, never-mind, I guess current and previous corp members can relate to this… **smiles**. I also had another short romantic affair with JavaFx (I had to develop a mancala game — AyoAyo Game). So you see I hadn’t done C# as of the time I was joining their software development team (you wouldn’t blame me… I learn on demand). I not only had to learn C# within a short possible time, I also had to learn MVVM (I was used to MVC… I was coming from the web dev. side… shout-out to web developers reading this blog ) and compiler stuff and finally add value to the team.
It was challenging… seriously challenging (but I love challenges **smiles**, they make me feel alive), the roller coaster ride was awesome and high adrenaline too . One major issue I couldn’t just understand then (it seemed so magical), was how the binding was “mysteriously” working, I couldn’t just wrap my head around how the view was just gonna be automatically updated from the ViewModel (when I call the PropertyChanged event – using the INotifyPropertyChanged interface) or how the commands from the view “mysteriously” got consumed by delegates in the ViewModel. It was really fascinating to me then, I mean a lot of cool things happen underneath once you set the right DataContext object for your view. Microsoft and their magic… lol (but seriously, I have always considered Microsoft’s .Net languages too simple and not “real” programming… they have a habit of just abstracting everything away from you… Not too cool guys). I come from a background of being as low as possible to the machine (I don’t really fancy abstracted code… just my thing… I like to know what’s happening underneath the hood); did I tell you that I also do C (both GUI and embedded, but mostly embedded).
Lastly enter the world of parsers, compilers and dragons (those who work with and develop languages know what I am talking about here @dragons **smiles**). This was one of the coolest part of the journey for me, I got to apply my previous understanding of Binary Trees (very cool looking trees in the forest… lol). Also got to understand what a production rule was, and added some other patterns to my belt (Interpreter and Visitor). I also looked at the Command and the Memento patterns (for the undo/redo stuff) as well as the Rules pattern while working on the editor (every programming language – DSL or GPL – must have an editor, shey?). I think the height of it for me was when I made a simple scientific calculator (sorry guys, no source codes or binaries here. I wrote it using the company’s
BlackHole system assigned to me) that interpreted what was written and solved the maths while learning the “stuffs” required to be effective at my job.
Now I know what some of you guys might be thinking… What the f**k is wrong with Oseme! He didn’t even give a detailed explanation of the technologies he claims/claimed to use. He must be f**ked up or doesn’t know what the hell he is saying (maybe he doesn’t know all these things). Well I can assure you that I do know what I am saying, I will provide detailed explanations, use cases and sample codes for some of the issues I encountered/solved/encounter/solve while working as a software engineer (I guess that’s the theme/title of this blog, Right?). So watch this space…