Talent without working hard is nothing.

The .Net platform:

The Net platform is a development framework created by Microsoft to provide a new programming interface to Windows applications, by integrating many technologies. The first version of the .net platform was released in April 2003[5]. However, the ideas behind.Net framework is to use a new strategy by enabling software as a service (SaaS).


The five main components of .Net Platform are Visual Studio .NET, .NET Enterprise Servers, .NET Framework, .NET Building Block Services, and Operating system on servers, at the top of the previous figure the bottom layer is the operation system (OS) such as windows XP, Windows Server and Windows CE [5]. The second layer on top of the OS layer is group of specialized server products, the required to develop large scale business applications, such as BizTalk Server, Exchange Server and SQL Server [5]. On the Top layer of the .NET is the development environment tool (IDE) Visual Studio, which is one of the best IDE on the development market, because of the feature that included in the visual studio make the development cycle easy to use. Also supporting many programming languages for example, C#.NET, VB.NET, F#, and more.

 History of ASP.NET MVC

The first release of ASP.NET was in 2002, at a time Microsoft company was trying to protect its position with controlling the market of desktop application development. At the same time, Microsoft realized the thread of the internet revolution on their technologies [3].

The following figure 2 showing the technology stack as it is showing then.




Using asp.net web forms Microsoft tried to support both the statelessness Hypertext Transfer Protocol (HTTP), also support the uncommon Hypertext Mark-up Language (HTML) at that time by many developers, by modeling the user interface (UI) and the server-side control object [3]. However, the huge support from Microsoft to build new technology to give the developer the ability to make web development just same as developing windows application, from this point Microsoft company opens a new door for the windows application developers called the world of web applications.

In General, the asp.net web form development as a principle was good, but the developer found it more complicated [3]. Because of,

  • View Stat weight: the actual amount of data transferring between the client and the server its was huge blocks, causing a slow loading for the web application.
  • Page life cycle: the code to link the front end with back end code to handle the event is part of the page life cycle it was very accurate and complicated.
  • Limited control over HTML: the ASP.net Server (IIS) is responsible to handle the rendering for the code, sometimes that causing failed to meet the standard HTML.
  • Low testability: the approach of the design was in asp.net web form was tightly coupled was not fitting for the unit test tools, that cause big effort on the developers.

The consequence for the last issues in the classic asp.net made Microsoft the find solution, Will demonstrate the solution as we are explaining the history of asp.net.[]




[4] Steve Smith, 2018, Overview of ASP.NET Core MVC, Microsoft Corporation, [Online] Available at: https://docs.microsoft.com/en-us/aspnet/core/mvc/overview?view=aspnetcore-2.2 , [Accessed 01 May 2019].

[5] Hoang Lam, Thuan Thai, 2009, .Net Framework Essentials,3rd Edition, O’Reilly.


Read more..


مقدمة عن منصة بلازور.

في مقالتي هذه سوف نتحدث عن منصة جديده مقدمة  شركة مايكروسوف  تسمح مطورين المواقع بستخدام لغات عالية المستوى مثل  C#   في تطوير صفحات الويب.

منصة بلازور Blazor framework   التي تسمح لك بتنفيذ كود بلغة الــ C# ضمن متصفح الويب دون الحاجة لاستخدام لغة الــ Java Script   التى كانت تحتكر موضوع في طرف العميل.

كما ذكرت كثير من المواقع ان قواعد اللعبة تغيرت.

طبعا يعتبر هذا انجاز كبير, حيث انه لا داعي لمطور C# ان يجيد Java Script   وبالاضافة لذلك استخدام مميزات سي شارب الكثير .

لكن السوال هو كيف تعمل Blazor   ؟

ليس كما جرت العاده في C# Razor يتم ترجمة كود السي شارب إلى كود جافا سكريبت حتى يتم تنفيده في المتصفح.

هنا تقوم بلازور بتحويل او ترجمة كود الـ C# إلى لغة منحفضة المستوى عن طريق استخدام WebAssembly .

الفرق المسؤل عن هذا العمل هو Mono   الذي تبنى مشروع بلازور .


الصوره التالية تبين بنية بلازور .


عند تنفيذ او تشغيل  تطبيق بلازور  Blazor App  في متصفح كروم. التطبيق  التى هو عبارة عن عداد يتضمن blazor.js.

والتى تستخدم mono.js  لتقوم بتهيئة المتصفح عن طريق Mono runtime (mono.wasm) في الــ WebAssembly.

بدورها تقوم بعمل تحميل لكل المكاتب المطلوبة .


تعمل بلازور مع فجوال ستديو 2017 النسحة ال 7 مع تحديث ASP.NET Core 2.1 .

 روابط التحميل .



•Install the .NET Core 2.1 SDK (2.1.300 or later).

•Install Visual Studio 2017 (15.7 or later) with the ASP.NET and web development workload selected.

•Install the latest Blazor Language Services extension from the Visual Studio Marketplace.








Read more..

You may be wondering what is Sparql?

What for? 

In this article will try to answer this question, and talk a bit about SPARQL.

According to W3C SPARQL is an RDF query language, that is, a semantic query language for databases, able to retrieve and manipulate data stored in Resource Description Framework (RDF) format.

it is instructions to query RDF, it is similar to SQL query.



I do not want to talk more IT jargon, let's make it easy.

many of us using Alex, google or Cortana this AI devises or software.

How they are understanding what is written in your HTML page.

How they will recognize this text is talking about Person, not about Place or Pace of hardware.

For example, if you google Hilton word, how google understand that is Person, not Hotel!

Rdf came to solve the problem, By giving a description to the text to make it has meaning.


By Using RDFa or Microdata and write our own ontology to describe things.

Example for RDFa with HTML:


In the Last HTML page, you may notice the new code in the red color.

This code describes the HTML page, telling Alex this is an Article, title and the body of the article.

So when you Ask Alex: Who is the creator of the Article?

Alex: will give the correct answer (Alice).

the subject is not that complicated, I just give you small or brief words to describe it to you.

and our main article was about SPARQL Query language.

I have developed web solution, through the website you can upload you owl file and query it.

demo: http://sparql.a-hamoud.com/Home/Index

 I have used dontnetrdf API and ASP.NET MVC 5 with SQL Server to store the owl files and manage the users.





Read more..

Most software has bugs. Is it possible to write software that does not have bugs? What techniques are available to help make software that is bug-free, and how do they compare with each other?


Software bugs mean those mistakes made by a developer during the life cycle of developing software. According to Davies (2014, p.1), it is important to fix those bugs which will have an effect on the developers’ time and on the cost of the software. By reducing software bugs, the developer will have more time to spend on adding new features and enhancing the software (Ibid). It is clear that the primary requirement for an end-user and software developer is software quality to be an error-free. Davies (2014, p.3) founds software bugs as defined by The Institute of Electrical and Electronics Engineer (IEEE) as an issue in software if not fixed can cause to an incorrect outcome or fail in an application. It would seem that the meaning of software bugs is still vague, there are many questions about the origin of a bug, how an end-user treat it if faced with bugs in a software, however, the most important question is how to prevent or deal with those bugs. There are several tools such as Bugzilla to help developers track the bugs in released software that has been detected by end-user (Davies, 2014, p.4).  It seems that it is impossible to have software free bugs. This essay will examine the possibility of software free bugs and will compare the techniques methods used to help software be free bugs.


One of the most effective techniques in bug life cycle is Bug Tracking Systems (BTSs). Pinzger, et, al. (2009, p.113) state that, BTSs is used to provide feedback on the system by developers and end-user, the feedback may be informed as an incorrect case or as a requirement to improve the system.

       The feedback or bugs are recorded in a Bug Tracking Systems (BTSs), for instance, Bugzilla which allows bug reporters (developers and end users) to report details of errors or bugs encountered while using an application (Davies, 2014, p.4). As a real example of a bug report from Mozilla is the most common internet browser, the report includes a full explanation of a bug, specific information such as a piece of code and screenshots to guide the developer, all previous information is collected together in a bug report (Ibid). It seems that the benefit of the bug report is to guide the developer to fix the bugs, using useful information provided by the report. However, the information provided by bug report is not enough to fix the bug or determine the reason for the bug (Ibid). It appears that the bug report is to help the developer to fix the bug which using one of the available techniques, at the same time, it can be stored as records to provide last update and the status of the bug to the reporter.

     According to Davies (2014, p.4), the bug report life cycle has a number of steps depending on the Bug Tracking Systems (BTSs) and the default stages of Bugzilla. The first step is an Unconfirmed status that created by a user during reporting about a bug, the decision back to the developer to be Confirmed and send it to the next phase or the bug does exist, after the bug has been confirmed will be assigned to a specific developer to investigate and fix the bug and change the status to In Progress, if the developer has finished fixing the bug the status will be Resolved, the final stages is to check and test the bug by a quality engineer and confirm that the bug has been fixed correctly then the status will be changed to Verified (Ibid). It is clear that the steps of the bug report life cycle provide more information about the bug and which techniques should be used to fix the bug by the developer.



One of the most important stages of the software development lifecycle is Software testing. There are many techniques in Software Development life cycle used to test the software by tester and developer. 

     Sawant, et al. (2013, p.981) indicate that static or manual testing is a type of test which can be done by a set of tools manually without executing the code to check the design and requirement documents to review it on the working document by the analyst and the testing team, when the system is inactive, the statics test executes security test to analyze the system without running the code. It is clear that the static testing technique provides to the developer the bug places in the application code on the early step of the life cycle. Meanwhile, static testing work with documents such as design, source code, and test plans documents, therefore, the content of the static testing technique has many steps, firstly, inspection is one type of reviewing the code to find the defects using the checklist, code walkthroughs are managed by a moderator, second, the walkthrough is meeting with the software users to describe the product, at the same time participants can ask questions as notes, another step, technical reviews to check the code if is identical to the technical specifications and standards, the final step, informal reviews to review the documents and comments on it using informal methods (Ibid).

     Currently, software’s are becoming more complex and traditional methods such as static techniques are not effective enough to reduce the bug in a software. Sawant, et al. (2013, p.981) indicate that dynamic or automated testing is executed while the software is active status. For example, the dynamic testing will be executed at the same time of inputting value, hence, the output will be compared with the final result (Ibid). The example shows the functional behavior of the application, during the runtime lifecycle of the application, thus, it is possible to check the system performance and the quality of the application while the application active. According to Sawant, et al. (2013, p.981) the dynamic technique has the following four types, first, unit testing is the tool to test the code for individual modules, second, integration testing is to test the join between the interfaces and the modules, also, system testing is to test the whole application performance, the last one, acceptance testing is testing was done by the end-user.


      Nevertheless, both of the dynamic and static techniques are important for the life cycle of the Software Development. Sawant, et al. (2013, p.981) claim that both of techniques have strong and weak points, which should be considered while executing these techniques on the application. Sawant, et al. (2013, p.981) demonstrate that it is different for both of techniques, the static technique is the first step on the software life cycle and it is effectively more than dynamic techniques, while the dynamic technique is the last step on the software life cycle. On the other hand, the static technique performed before executing the application whereas, the dynamic technique is performed at the same time of the runtime (Ibid). It seems that the static technique to test software, should follow certain steps: Firstly, Reviewing the documents, secondly, checking the interfaces of the software, finally, checking the database table before releasing the software, this should be done by the developer team, on the contrary, the dynamic technique test will be in the runtime of the software and the test could be checked by a developer or end-user during the software life cycle.

      In addition, mutation testing is a type of software testing or fault-based testing which supplies testing standards, by mutating some statements in the code and reviewing it to look for bugs, however, it can be used to check the functionality of a test in terms of the possibility to detect bugs (Jia,2013,p.14).A recent study by Jia (2013,p.15) founds that, mutation test compares between three commonly test such as prime path coverage, edge-pair coverage, and all-uses, the result of the study found that the mutation testing detects more bugs than another test with the more efficient test. According to Jia (2013, p.18), there are many popular programming languages has been used mutation testing such as Fortran programs, C programs, C# programs. Furthermore, mutation testing proves the ability to effectively value the quality of the test, undoubtedly, it still experiences a few problems, such as High computational cost, Trivial mutants, Equivalent mutants and Oracle (Ibid). It seems that mutation test is similar to the static test, both tests use the same strategies during the test life cycle to find bugs, in contrast, the dynamic test uses different strategies. However, the strategies and techniques of testing software is a significant requirement to enhance the development life cycle (Thakare, S. el at.,2012, p.686).




        This essay has examined the history of software bugs and the methods of tracking bugs. At the same time, discussing the static, dynamic and mutation techniques by comparing every one of the techniques. In addition, discussing the possibility of having free bugs software. Unfortunately, it seems that it is impossible to have free bugs software.  However, there are several methods to reduce software bugs and many techniques to solve it.




  • Davies, S., 2014, STUDYING THE LIVES OF SOFTWARE BUGS [Online] Glasgow, University of Strathclyde Glasgow. Available from: http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.632701 [Accessed 15/11/2017].
  • Sawant, A. A. et at.,2012, Software Testing Techniques and Strategies [Online] Mumbai, University of Mumbai, INDIA. Available from: http://www.ijera.com/papers/Vol2_issue3/FQ23980986.pdf [Accessed 22/11/2017].
  • Pinzger, M. et al.,2009, "A Bug's Life" Visualizing a Bug Database [Online] Glasgow, University of Lugano, Switzerland and University of Zurich, Switzerland. Available from: https://serg.aau.at/pub/MartinPinzger/Publications/Dambros2007-bugslife.pdf [Accessed 15/11/2017].
  • Thakare, S. el at., 2012, International Journal of Emerging Technology and Advanced Engineering [Online] Mumbai, Computer Technology Department, India. Available from: http://citeseerx.ist.psu.edu/viewdoc/download?doi= [Accessed 15/11/2017].
  • Jia, Y, 2013 Higher Order Mutation Testing [Online] London, University of London, United Kingdom. Available from: http://discovery.ucl.ac.uk/1401264/1/YuePhDFinal2013.pdf [Accessed 1/12/2017].



Read more..


This application working on Java RMI, to Query CSV file through the network.
the client will send the query to the server, the code will be executed on the server.
the server will use Apache Commons CSV  to read the CSV file.

the result of the query will be streamed to the client through the network.
the client will read the result and display it to the end user.


Snapshot of the result(Client).

I will record youtube video, how to run the server and the client.
this example just to show you the concepts of Java RMI.


Code gitHub

Read more..