Concerning the choice of technologies for implementing the projects, with the goal to acquire the master level proficiency in C++ eventually abandoned, the reasons for which I have discussed in the About section, I eventually switched to the study of the documents pertaining to front-end technologies. Consequently, despite my fascination with the C++ language and eagerness to implement almost all of the projects in C++, you would find that most of the projects rely heavily on the technologies developed purely for the creation of inviting, captivating, and compelling interfaces for the web. As for the order of the following list of projects, the technical challenge posed by the projects served as the criterion. The following facets of the discipline of software engineering broadly capture the term “technical challenge”: domain specific knowledge, problem solving skills, and programming competence required to complete the project. Based on that criterion, the projects appear in the descending order, with the most complicated attempted so far sitting atop the list and the least challenging finishing it off.

List of Contents

  1. Pascal2C++ — Language Translator
  2. Typing Tutor
  3. Emmet Customization
  4. Text Analyzer
  5. Progressvie BBC Frontpage
  6. Bash Scripts for Automation
  7. Typing Speedometer
  8. System Monitor
  9. Bitmap Viewer
  10. Chat Client

Projects – Past and Present

  1. Pascal2C++

    I started work on this program after completing the mandatory Compiler Construction course, in which the course conductor’s willful participation in derailing the progress, which should constitute a crime (not the first transgression on that individual’s behalf), resulted in an unacceptable grade. Undetered, I decided to push the envelope a little further and started work on the translator to assess the command of the subject matter and ability to architect solutions in C++. As I took the course a year or so after the epiphany, hence I had the essential skills and sound reasons for the requisite confidence.

    Developed using standard C++ in Visual C environment, the application analyzed (syntax analysis) and translated programs written in Pascal – ISO 7185:1983 – to equivalent C++ programs barring support for nested functions and structured types. Although I only used the Visual C++ IDE to develop the application, as at that time I had little to no exposure to Unix based systems, however, as I relied exclusively on the features provided by the then standard C++ (as described in the 3rd edition of The C++ Programming Language), so it should have compiled on the Unix based systems, as well.

  2. Typing Tutor

    After succumbing to the desire to become an efficient typist, I started work on this program to achieve the aforementioned goal without reliance on proprietary applications.

    As the development started after the premature and tragic end to the brief liaison with C++, I relied purely on the technologies developed for creating arresting interfaces for the web. To process user interaction and implement skill enhancement engine, JavaScript substituted C++, and to create the interface to facilitate interaction with the program, HTML and CSS replaced MFC, which I had used untill then for such tasks. The program has multiple levels to suit the needs of typing students at various stages of skill acquisition. In the last quarter of 2010, I incorporated support for Dvorak layout as well, and used the modified version to switch from Qwerty to Dvorak based typing.

  3. Emmet Customization

    Although undertaken at some point during 2014, with ample knowledge of the general CS principles and above-par dexterity in the use of computer systems, however, the effort to adapt Emmet, Mr. Sergey Chikuyonok’s highly regarded HTML utility, soon became indistinguisable from an effort to wade across a river that fails your expectations on at least a couple of counts, as it proves much deeper and far faster than your initial estimates.

    As I had scant knowledge of the design of the program, which makes heavy use of advanced JavaScript techniques, and until then, I had only used JavaScript for small utilities, hence, what I started with the goal to finish within a couple of days became a full-blown exercise in sleuthing through an alien codebase to pinpoint the code blocks requiring the necessary changes to permit the use of an ingenious solution to streamline workflow. After ten days and at least a few dozen misplaced breakpoints, I had finally carved out a version with most of the problematic sections disentagled and adapted to suit my needs.

    To satisfy any interested individual’s desire to know the reasons behind the aforementioned undertaking, I, for one, certainly do not appreciate code, of any type or kind, that lacks ample white space and places unnecessary demands on its users. Although some would consider it a matter of taste, however, irrespective of the nature of the issue, in case of some, it can certainly bring to a grinding halt the whole of the development process. Therefore, to benefit from its core functionality and to rid it of the irksome issues, I then went on to spend around ten days studying and fixing the codebase to suit my needs and style.

  4. Text Analyzer to Establish Typing Layout Superiority

    The reasons behind the inception and eventual realization of this utility checked-in via the digital highway, for it owes its existance solely to the narrator’s desire to stay abreast of the developments and discussions taking place in the wider world; in the connected world, what better way to do so by visiting news websites. One such visit brought to knowledge not only the existence of Stephen Fry[1][2]  but also his research into the development of typing techniques and enabling contraptions, and hence the introduction to Dr. August Dvorak’s patented typing technique and keyboard layout.

    As a skeptic, I decided to verify the claims made by Stephen Fry and in the Wikipedia article on the benefits of the Dvorak typing technique, and to do so, I started work on this utility. To develop the application, I once again relied on JavaScript for functionality and CSS and HTML for layout.

    When supplied with copious amounts of text, which the application accepts via a text box, it evaluates the frequency with which each letter occurs in that text. Based on those results, it then compares the arrangement of those letters in the respective layouts. With its results confirming the superiortiy of the Dr. Dvorak’s patented layout, I had the necessary stimulus for updating the typing tutor to support the Dvorak layout, as well.

  5. Progressive CSS + HTML Only Frontpage

    While studying and implementing techniques learnt from various sources, I encountered many a discussion promoting progressive enhancement as the preffered approach for making the web interfaces accessible to as many connected individuals as possible. To test the feasibility of this ideology, which has its proponents and opponents, and to put into practice all of the knowledge gained along the way, I decided to implement the front page of the BBC website in its entirety without any reliance on JavaScript.

    To provide you with an idea of the scope of the project, as the front page of one of the most visited news websites — it enjoys a global visitor ranking of 71st and 7th in the UK — it has a combined page size that exceeds 2 MB mark (images included) and HTML bytecount that surpasses the 230 Kb mark.

    Implemented using HTML5 and CSS3, the eventual replica not only provides all of the basic functionality offered by the website but also reduces the overall byte count by a staggring 643635 (67000 bytes of HTML and 576635 bytes of JS) bytes, achieving an overall reduction of approximately 643 Kilo Bytes of data. The aforementioned total excludes the reduction in CSS byte count.

    As much study and exploration of various materials permitted the aforementioned undertaking, meaning getting out of the comfort zone, hence, I rate it above another couple of utilities, the next on the list, that I also developed in the post C++ era, however, which rely on languages whose core constructs bear strong resemblance with those offered by C. Having previously mentioned that the progressive enhancement approach to developing websites has its proponents and opponents, I would like to add that I now firmly belong in the proponents’ camp.

  6. Bash Scripts for Automation

    After an unsuccessful attempt to switch to a Unix based system during the first decade of the second millinium, eventually, I had to make the switch because of what I can only describe as Microsoft’s attempt to inflate its profits by employing deceitful tactics. If the foregoing ruffled any patriotic American’s feathers, then to placate such an American, I would like to add that I have around half a dozen blatantly dishonest and disingenuous emails from their office in Ireland. Owing to the inability to use a licensed version purchased from one of Microsoft’s authorized partners, lack of acceptable alternatives, and some uncertainty surrounding the future, I eventually had to invest in an Apple MacBook. As the OS offered by America’s most innovative company relies on a 40 years old operating system, hence, in order to accomplish the tasks frugally and efficiently, I had no choice but to learn Bash Scripting.

    As the core programming constructs, with some oddities and some verbosity of syntax, bear strikingly close resemblance with that offered by C, and most of the other programming languages, hence, of the time spent on implementing those automation scripts, I spent a considerable portion on unravelling the mysteries of the inner workings of Bash, and in comparison, a tiny fraction on learning the syntactic peculiarities of the scripting language.

  7. Typing Speedometer

    Another utility developed in the post C++ era and born of the desire to master the keyboarding skills, it relies on JavaScript for the functionality: timing the user’s input; calculating speed based on established practices; and publishing the results. The magnificent pairing of HTML and CSS, perfect for rapid interface development, once again provides the constructs necessary to synthesize an acceptable interface.

    The interface of the utility comprises nothing more than a few items: a section (div in the HTML terms) containing unselectable text, a close approximation of disabled form elements, for use as test material; an edit box where the aspiring master typist can let his fingers do the talking; and some emptiness on all four sides. With some emptiness the subject of the preceding line, if while poring over the UI guidelines, you somehow missed the section discussing the importance of ample space between constituent parts of the UI, then now would be a good time to dust off those UI guidelines and not only unearth the overlooked informtion but also embrace the dictum wholeheartedly.

    When the time runs out, the utility presents the aspirant with the adjusted score, which takes into account the number of mistakes made during the session.

With only a few more noteworthy implementations preventing the list from reaching its impending conclusion, to lift the burden off of your shoulders, the following pithy disclosure states the reasons for not investing much time and effort in crafting their descriptions.

As I undertook the following projects with a 5 year long exposure to C++ and Visual C++, irrespective of the trivial nature of the projects or assignments attempted during that time, hence, the projects failed to provide the challenge necessary to merit an investment of time and effort into their description. The descriptions that await your already weary eyes and souls, to strain them just a little more, I have simply copied them, with minor alterations, from a CV prepared at some point between 2008 and 2010. Also, considering that to unearth the little gems, I would have to invest an unreasonbale amount of effort and time, so, for the sake of the narrative, let’s consider them lost.

  1. System Monitor

    Developed using VC, Win32 API, and MFC, the minuscule utility allowed taking static snap shots of the current system state. To gather information about the current state of the system and performance metrics describing the state of the currently active processes, the utility used to rely on the performance counters exposed by the Window’s performance registry.

  2. Bitmap Viewer

    Developed using MFC Doc/View architecture, application allowed viewing of bitmaps in an interface very similar to Windows File Explorer, making navigating the folders and locating the files much easier.

    Navigational facilities were provided using interfaces exposed by Windows Shell, and bitmaps were manipulated using Win32 API part of the GDI subsystem.

  3. Chat Client

    An extremely simple dialog based client for a chat server developed using Windows sockets, MFC, and Visual C.