Friday, December 9, 2016

CUDA

Compute Unified Device Architecture is a parallel computing platform and API to use a CUDA-enabled GPU for general purpose processing (GPGPU), which leads to dramatic increase in computing performance by harnessing the power of the GPU. 

The CUDA platform gives direct access to the GPU's virtual instruction set and parallel computational elements to execute compute kernels. Supports OpenCL programming framework.
~ Wiki

Friday, November 4, 2016

OpenGL

Open Graphics Library (OpenGL) is a low level abstract API to interact with graphics processing unit (GPU) to draw 2D and 3D graphics and is a cross-language, cross-platform API typically used to achieve hardware-accelerated rendering, which is faster over software rendering.

OpenGL deals with only rendering and provides, no APIs related to input, audio or windowing. 
~ Wiki

Wednesday, October 12, 2016

Synchronization Primitives

Critical section, Mutex, Event, Semaphore and Waitable timers are the different available synchronization objects on windows.

Critical Section

Synchronizes threads (/allows one at a time) to have an access to a shared resource with in a process that it is created in and hence cannot be accessed across processes - limited scope. The remaining primitives have got system wide scope and so can be accessed across processes too.

Mutex

As the name indicates, mutually exclusive, so if one thread gets an access, all others will be on wait (or restrained from accessing) until the first one relinquishes - allows one thread at a time as if the critical sections does but it can be accessed across processes or network boundaries.
e.g. Toll gate (one vehicle per ticket)

Event

Mutex, upon relinquishing, causes to release one thread from the wait to have its turn among all bunch of threads, whereas event releases all the waiting threads in one go. Event signals (/notifies) all the waiting threads when a current thread is done its job.
e.g. Traffic Signals.

Semaphore

It maintains a count between zero and some maximum number, which indicates how many threads can access the shared resource simultaneously. It means one can restrict the no. of accesses to a resource. The count is reduced every time a thread gets an access to semaphore and is incremented every time a thread releases the semaphore. When the count reaches ZERO, no more threads can access the resource. The semaphore state is set to signaled when the count is greater than ZERO and non signaled when it is ZERO.
e.g. Movie tickets

Waitable Timers

Notifies one or more waiting threads that a specified time has arrived. A waitable timer object is a synchronization object whose state is set to signaled when the specified due time arrives. There are two types of waitable timers that can be created: manual-reset and synchronization. A timer of either type can also be a periodic timer.

Saturday, September 10, 2016

Political Satire

Here comes another, the question was about Trump's plan to defeat ISIS. Matt Lauer (interviewed him in the Commander-in-Chief forum) quoted Trump's response of convening top General, who will have 30 days to submit a plan for soundly and quickly defeating ISIS, said, "The plan, you've been hiding this whole time, asking someone else for their plan?" to which, Trump said, when he does come up with a plan that he likes and perhaps, it would be agreed with or might be not. So, he might love, what general would come back with. Matt Lauer asked him further, if he does have, his own plan? to which, he said, he had a plan and a very substantial chance of winning to make America great again - not a convincing answer, at all.

"He has a plan, he has not come up with but if General brings him a plan that is similar to the plan he does not have, he may go with that plan, which he cannot tell us about because it is a secret plan he does not have, to make America great again", summarized by Stephan Colbert, the whole context in his Late Show.

Tuesday, August 30, 2016

Political Satire

The host reacting to Donald Trump's recent appealing to black voters that they do have poverty, no good schools and no jobs, what the hell, do they have to loose, if they would try something new, like him, summed up, "You're already on fire, so you may as well shoot yourself in the head".

-  The Late Show with Stephen Colbert

Saturday, July 9, 2016

Windows Programming

Windows NT began supporting multi-threaded applications as so it was fully re-entrant and makes applications to run on it based on the preemptive approach.

What is a difference between an interrupt and an exception?

Interrupt is an asynchronous event, which does happen out of the context ( Means not related to what the process is executing) and are majorly generated by I/O device, processor clocks or timers etc. Whereas an exception is a synchronous condition happens due to the execution of a particular instruction. And one can reproduce this by running the program second time with the same setup and environment used.

How is 'trap' different from 'interrupt' and 'exception'?

Trap is a processor's mechanism to capture an execution thread when an interrupt or an exception occurs and transferring control to a trap handler, which is a function specific to a particular interrupt or exception.

What are the advantages of using DLL’s?

DLLs can be loaded during run-time (or program execution) when it is needed and hence it will not be part of the executable binary image. So EXE and DLL can vary independently and NO need to recompile the EXE when DLL is changed. And can be reused in other Applications too.

What are the different types of DLL’s?

SDK DLL (without MFC): Is a old style of creating DLL with pure Win32 calls.
Regular: Is an MFC DLL and can be used by both MFC and Non MFC Applications like VB and other languages, which supports DLL access. 
Extension: Is also an MFC DLL and can be used by MFC Applications only.

Friday, June 3, 2016

WebMatrix

Microsoft WebMatrix is another website building editor(freeware) that enables developers to build and manage web sites.

Monday, May 30, 2016

Plunker

Plunker (https://plnkr.co/) is one of the online web development editors (free and open-source) that has been handy for writing HTML/JavaScript code and preview output instantly for my own coding exercises.

Thursday, April 7, 2016

SOLID

Single responsibility
Open-closed
Liskov substitution
Interface segregation and
Dependency inversion

are the five basic Object-oriented Programming and Design principles.        ~ Uncle Bob

Friday, April 1, 2016

HL7

Health Level-7 or HL7 refers to a set of international standards to transfer clinical and administrative data between software applications used by various healthcare providers. These standards focus on the application layer, which is "layer 7" per OSI model.
~ Wiki

Thursday, March 31, 2016

PACS

A picture archiving and communication system (PACS) is a medical imaging technology which provides economical storage and convenient access to images from multiple modalities (source machine types). Electronic images and reports are transmitted digitally via PACS; this eliminates the need to manually file, retrieve, or transport film jackets. The universal format for PACS image storage and transfer is DICOM.
~ Wiki

Wednesday, March 30, 2016

DICOM

Digital Imaging and Communications in Medicine (DICOM) is a standard for handling, storing, printing, and transmitting information in medical imaging. It includes a file format definition and a network communications protocol.

The communication protocol is an application protocol that uses TCP/IP to communicate between systems. DICOM files can be exchanged between two entities that are capable of receiving image and patient data in DICOM format. DICOM enables the integration of scanners, servers, workstations, printers, and network hardware from multiple manufacturers into PACS.
Wiki 

Thursday, February 25, 2016

OOPs!

The basic elements of Object Oriented Programming are:

Classes
Classifies/categorizes an object(=thing) or a group of objects in a context based on certain specifications - attributes and behavior.

Objects
An object represents a particular instance of a class. There can be more than one instance of a class. An Object is a collection of data members(=attributes/data) and associated member functions (=behavior/methods).

Data Abstraction
Abstraction refers to the act of representing essential features without including the implementation details.

a Car, for an instance, would be made up of an Engine, Gearbox, Steering objects, and many more components. To drive a Car, one does not need to know, how the different components work together internally but to control the steering and applying the gears (interfacing it).

Data Encapsulation
Wrapping up of data and its functions into a single unit is called Encapsulation. Data is not accessed directly in this case but through the methods inside the class.

Inheritance
Inheritance is the process of creating a new class from an existing class. Inheritance helps in reducing the overall code size of the program and promotes code re-usability.

Classified as 1) single and 2) Multiple (implementation) inheritances.

Polymorphism
In Greek, “Poly” means many, and “morph” means form. One name with many forms is called Polymorphism. It allows objects of different types to be treated similarly. This can be implemented in C++ via the inheritance hierarchy, also known as sub type polymorphism.

Monday, January 18, 2016

What is COM?

Component Object Model is an architecture for component reuse that allows dynamic and efficient composition of systems from independently developed binary of components. 
~ Don Box

Friday, January 1, 2016

Basics

Books for Visual C++

Programming Visual C++ by David J. Kruglinski is the most popular one and Ivor Horton's Beginning Visual C++ but Kanithkar's Visual C++ Programming was the one that I began with.

Files and Purposes

  • .sln file records information about the projects in the solution - names, relative paths, VS version used and configuration platforms such as debug/release defined for both solution and projects etc..
  • .suo file, in which user options that apply to the solution will be recorded.
  • .sdf contains data about IntelliSense for the solution. 
  • .opensdf captures information about the state of the project. One would happen to see this file only while the project is open and disappears soon the solution is closed.


Reference(s)
MSDN
Ivor Horton's Beginning Visual C++ 2013