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).

Simple definition of a DSL

Simple definition of a DSL Credits: https://slideshare.com

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…


Signing out…