Tuesday, January 10, 2017

C++ 17: A Newer Version of C++ to bring more power and simplicity

There is no programmer in the world who don’t know about C++ programming language. The updated version of C language with object orientation. C++ was introduced 33 years ago by Bjarne Stroustrup. As long as you keep it simple C++ is a good and reasonably modern object-oriented language that is still close enough to the machine architecture to produce programs that run about as fast as possible.
The new C++ 17 standards are introducing new features like structured bindings and if initialisers, making this vintage programming language “feature complete”. The C++ community is calling C++17 the start of a new era that will bring powerful technical specifications and overcome the known issues.
List of the most features that will be on C++ 17:
  • C++17 is based on C11
  • Dynamic memory allocation for over-aligned data
  • Guaranteed copy elision
  • Forward process guarantees (FPG)
  • Structured bindings
  • if (init; condition) and switch (init; condition)
  • constexpr if
  • Inline variables
  • A weaker version of fixed order-of-evaluation for expressions
  • Template argument deduction for class templates
According to the c++ community, this major update aims to make C++ an easier language to work with and brings powerful technical specifications.

Sunday, January 1, 2017

New Year Greetings 2017

Your success and happiness lies in you.
Resolve to keep happy, and your joy and you shall form an invincible host against difficulties.

Thursday, December 22, 2016

C# 7: New Features

C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. C# 7.0 adds a number of new features and brings a focus on data consumption, code simplification and performance. Perhaps the biggest features are tuples, which make it easy to have multiple results, and pattern matching which simplifies code that is conditional on the shape of data.
Feature List in C# 7.0
  • Local functions – code available currently in github
  • Tuple Types and literals
  • Record Types
  • Pattern matching
  • Non Nullable reference types
  • Immutable types
  • Binary Literals
  • Digit Separators
  • Type switch
  • Out var
  • Arbitrary async returns

Monday, December 19, 2016

Visual Studio 2017 Features

Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft.
Codename: Dev15
Version number: 15.0
Version of cl.exe: 19.10
Supported .NET Framework versions: 2.0 – 4.6.2; Core 1.0
Below is the list of features in Visual Studio 2017:
  • New Installation Experience:
  • Visual Studio IDE:
    • Improved Code Navigation
    • Connecting to Services Using Connected Services
    • EditorConfig Support
    • New Extensibility Format
    • Modify Extensions in Bulk
    • Ngen Support
    • Roaming Extension Manager
    • Sign in and Identity Improvements
    • Lightweight Solution Load
  • Debugging and Diagnostics:
    • Attach to Process Filter
    • Reattach to Process
    • The New Exception Helper
    • Add Conditions to Exception Settings
    • Debugger Accessibility Improvements
    • IntelliTrace Events for .NET Core
    • Diagnostic Tools Window Updates
    • Performance Profiler Updates
    • CPU Usage Tool Updates
    • Chrome Debugging Support
  • Team Explorer:
    • Connect to VSTS
    • Work Item Forms
  • C# and Visual Basic:
    • IDE Experience and Productivity
    • Language Extensions and Analyzers
  • JavaScript and TypeScript:
    • TypeScript 2.1
    • JavaScript Language Service

Monday, November 28, 2016

TypeScript : Javascript that scales

TypeScript is a free and open-source programming language developed and maintained by Microsoft. It is a strict superset of JavaScript, and adds optional static typing and class-based object-oriented programming to the language. Anders Hejlsberg, lead architect of C# and creator of Delphi and Turbo Pascal, has worked on the development of TypeScript. TypeScript may be used to develop JavaScript applications for client-side or server-side (Node.js) execution.
TypeScript is designed for development of large applications and transcompiles to JavaScript. As TypeScript is a superset of JavaScript, any existing JavaScript programs are also valid TypeScript programs.
TypeScript supports definition files that can contain type information of existing JavaScript libraries, much like C/C++ header files can describe the structure of existing object files. This enables other programs to use the values defined in the files as if they were statically typed TypeScript entities. There are third-party header files for popular libraries like jQuery, MongoDB, and D3.js. TypeScript headers for the Node.js basic modules are also available, allowing development of Node.js programs within TypeScript.
The TypeScript compiler is itself written in TypeScript, transcompiled to JavaScript and licensed under the Apache 2 License.
Starts and ends with JavaScript
TypeScript starts from the same syntax and semantics that millions of JavaScript developers know today. Use existing JavaScript code, incorporate popular JavaScript libraries, and call TypeScript code from JavaScript.
TypeScript compiles to clean, simple JavaScript code which runs on any browser, in Node.js, or in any JavaScript engine that supports ECMAScript 3 (or newer).
Strong tools for large apps
Types enable JavaScript developers to use highly-productive development tools and practices like static checking and code refactoring when developing JavaScript applications.
Types are optional, and type inference allows a few type annotations to make a big difference to the static verification of your code. Types let you define interfaces between software components and gain insights into the behavior of existing JavaScript libraries.
State of the art JavaScript
TypeScript offers support for the latest and evolving JavaScript features, including those from ECMAScript 2015 and future proposals, like async functions and decorators, to help build robust components.
These features are available at development time for high-confidence app development, but are compiled into simple JavaScript that targets ECMAScript 3 (or newer) environments.

Friday, November 25, 2016


Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
Git is a version control system (VCS) that is used for software development and other version control tasks. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows. Git was created by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development.
As with most other distributed version control systems, and unlike most client–server systems, every Git directory on every computer is a full-fledged repository with complete history and full version tracking abilities, independent of network access or a central server.
In computer programming, distributed version control, also known as distributed revision control or decentralized version control, allows many software developers to work on a given project without requiring them to share a common network. The software revisions are stored in a distributed revision control system (DRCS), also known as a distributed version control system (DVCS).
Distributed revision control takes a peer-to-peer approach to version control, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a complete repository. Distributed revision control synchronizes repositories by exchanging patches (sets of changes) from peer to peer. This results in some important differences from a centralized system:
  • No canonical, reference copy of the codebase exists by default; only working copies.
  • Common operations (such as commits, viewing history, and reverting changes) are fast, because there is no need to communicate with a central server.
  • Communication is only necessary when sharing changes among other peers.
  • Each working copy effectively functions as a remote backup of the codebase and of its change-history, protecting against data loss.
Why the 'Git' name?
Quoting Linus: "I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'Git'".
('git' is British slang for "pig headed, think they are always correct, argumentative").
Alternatively, in Linus' own words as the inventor of Git: "git" can mean anything, depending on your mood:
  • Random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • Stupid. Contemptible and despicable. Simple. Take your pick from the dictionary of slang.
  • "Global information tracker": you're in a good mood, and it actually works for you. Angels sing and light suddenly fills the room.
  • "Goddamn idiotic truckload of sh*t": when it breaks

Thursday, October 6, 2016

Threats to wireless security : Rogue access point

Of all of the threats faced by your network security, few are as potentially dangerous as the rogue Access Point (AP). A rogue AP is a WiFi Access Point that is set up by an attacker for the purpose of sniffing wireless network traffic in an effort to gain unauthorized access to your network environment. Ironically, though, this breach in security typically isn't implemented by a malicious hacker or other malcontent. Instead, it's usually installed by someone who is simply looking for the same convenience and flexibility at work that they've grown accustomed to using on their own home wireless network.
To prevent the installation of rogue access points, organizations can install wireless intrusion prevention systems to monitor the radio spectrum for unauthorized access points. Presence of a large number of wireless access points can be sensed in airspace of a typical enterprise facility. These include managed access points in the secure network plus access points in the neighborhood. A wireless intrusion prevention system facilitates the job of auditing these access points on a continuous basis to learn whether there are any rogue access points among them.
In order to detect rogue access points, two conditions need to be tested:
  • whether or not the access point is in the managed access point list
  • whether or not it is connected to the secure network
The first of the above two conditions is easy to test - compare wireless MAC address (also called as BSSID) of the access point against the managed access point BSSID list. However, automated testing of the second condition can become challenging in the light of following factors: a) Need to cover different types of access point devices such as bridging, NAT (router), unencrypted wireless links, encrypted wireless links, different types of relations between wired and wireless MAC addresses of access points, and soft access points, b) necessity to determine access point connectivity with acceptable response time in large networks, and c) requirement to avoid both false positives and negatives.