Microsoft CRT: Deep Dive into Task Scheduler

The Task Scheduler schedules and coordinates tasks at run time. A task is a unit of work that performs a specific job. The Task Scheduler manages the details that are related to efficiently scheduling tasks on computers that have multiple computing resources.

Windows OS provides a preemptive kernel-mode scheduler, it’s a round-robin, priority-based mechanism that gives every task exclusive access to a computing resource for a given time period, and then switches to another task.Although this mechanism provides fairness (every thread makes forward progress), it comes at some cost of efficiency.For example, many computation-intensive algorithms do not require fairness. Instead, it is important that related tasks finish in the least overall time. Cooperative scheduling enables an application to more efficiently schedule work. Continue reading “Microsoft CRT: Deep Dive into Task Scheduler”

Bill Gates Legend: 40 Years Since Basic for 6502

Let’s first comeback in the past and discover what Bill Gates was doing in his beginning, here’s from Wikipedia a brief story:

After Gates read the January 1975 issue of Popular Electronics, which demonstrated the Altair 8800, he contacted Micro Instrumentation and Telemetry Systems (MITS), the creators of the new microcomputer, to inform them that he and others were working on a BASIC interpreter for the platform. In reality, Gates and Allen did not have an Altair and had not written code for it; they merely wanted to gauge MITS’s interest. MITS president Ed Roberts agreed to meet them for a demo, and over the course of a few weeks they developed an Altair emulator that ran on a minicomputer, and then the BASIC interpreter. The demonstration, held at MITS’s offices in Albuquerque, was a success and resulted in a deal with MITS to distribute the interpreter as Altair BASIC. Paul Allen was hired into MITS, and Gates took a leave of absence from Harvard to work with Allen at MITS in Albuquerque in November 1975. They named their partnership “Micro-Soft” and had their first office located in Albuquerque. Within a year, the hyphen was dropped, and on November 26, 1976, the trade name “Microsoft” was registered with the Office of the Secretary of the State of New Mexico. Gates never returned to Harvard to complete his studies.

Continue reading “Bill Gates Legend: 40 Years Since Basic for 6502”

Track the quality evolution of your C++ code base.

Each developer wants to have a clean code, easily readable and maintainable and with a few issues and bugs. And there’s no magic solution to achieve this goal. Each company has its own best practices and coding rules and try to define a process to keep the code very clean.

It’s not an easy task to measure the code quality of a project, many tools provide their algorithms to evaluate it depending on many factors: Continue reading “Track the quality evolution of your C++ code base.”

Write Efficient C Code: Learn from Linus Torvalds

Every project has its own style guide: a set of conventions about how to write code for that project. Some managers choose basic coding rules, others prefer very advanced ones and for many projects, no coding rules are specified, and each developer uses his style.

It is much easier to understand a large codebase when all the code in it is in a consistent style. Continue reading “Write Efficient C Code: Learn from Linus Torvalds”

Be aware of the programming language domination syndrome.

After years of using the same OS, the same programming language, the same technology, and the same tools. somewhere in our brain we will be convinced that our choice is the best, and we could reject any other alternatives, and somehow we became a slave to our choices. Regardless of the nature of the project or the client specifications, we use the same choices. Continue reading “Be aware of the programming language domination syndrome.”

OGRE Engine: A Case Study on OOP Principles

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics. The class library abstracts the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other high-level classes. Continue reading “OGRE Engine: A Case Study on OOP Principles”

We really need some safeguards against the richness of C++.

The AtomicObject team described well on their website the danger of the richness of C++:

C++ is an immensely rich language. This richness is both a blessing and a curse. A blessing, because of the expressive power and support for several programming paradigms; a curse because this richness means complexity, and there is much to master. C++ is a language to grow with, one for which each experience can teach new features, or better understanding.

Since each of C++’s features may interact with the others, learning C++ feels like gradually filling in a not-so-sparse matrix of knowledge formed by the cross product of the C++ feature vector with itself. No serious use of the language should be undertaken without good references at hand.

Continue reading “We really need some safeguards against the richness of C++.”

The first enemy of C++ is its past.

Before the initial standardization in 1998, C++ was developed by Bjarne Stroustrup at Bell Labs since 1979, as an extension of the C language as he wanted an efficient and flexible language similar to C

In 1983, “C with Classes” was renamed to “C++”, adding new features that included virtual functions, function name and operator overloading, references, constants, type-safe free-store memory allocation (new/delete), improved type checking. Continue reading “The first enemy of C++ is its past.”

The Importance of C++ Distributed Build Systems

As C++ developer if you have already build a C# or a java project you could be surprised by the speed of the build compared to C++. For some C++ projects it could take few minutes and for others, it could take many hours. It depends on the project size.
And even if the compilation phase is parallelized by using the cores available, the build still take too long compared to the other languages. Here are some reasons from this good stack overflow answer: Continue reading “The Importance of C++ Distributed Build Systems”