Archive

Posts Tagged ‘Tools’

Application Inspector

January 21st, 2020 No comments

Microsoft has recently announced an open-source application software source code analysis tool, Application Inspector. Modern software development practices often require building applications from hundreds of existing components, whether they were written by another team in the organization, an external vendor, or someone in the open-source community. Although this will bring many benefits, such as faster development progress, software quality, and interoperability, etc., it will also bring hidden complexity and risks.

In response to this situation, Microsoft introduced that its internally used tool is Application Inspector, which is a software feature source code analyzer. It can identify software source code features by using static analysis and a customizable json-based rule engine to understand the function of the program. (link)

Use cases of Microsoft Application Inspector

  • Identifying key changes made in a component’s feature over time to know about a potential a malicious backdoor or increased surface for attack.
  • To identify and scrutinize high-risk components and components with unexpected features

Using Microsoft Application Inspector is fairly easy as it is a cross-platform, command-line tool that produces output in multiple formats such as JSON and interactive HTML.

GitHub

Additional links

Windows Subsystem for Linux

November 22nd, 2018 No comments

Windows Subsystem for Linux (WSL) is a compatibility layer for running Linux binary executables (in ELF format) natively on Windows 10 and Windows Server 2019.

WSL provides a Linux-compatible kernel interface developed by Microsoft (containing no Linux kernel code), which can then run a GNU user space on top of it, such as that of Ubuntu, openSUSE, SUSE Linux Enterprise Server, Debian and Kali Linux. Such a user space might contain a Bash shell and command language, with native GNU/Linux command-line tools (sed, awk, etc.), programming language interpreters (Ruby, Python, etc.), and even graphical applications (using a X11 server at the host side). (wikipedia)

 

Hyperpolyglot

March 30th, 2015 No comments

Programming Languages – commonly used features in a side-by-side format.

Winginx – handy tool for web development

June 29th, 2014 No comments

Tails OS

May 3rd, 2014 No comments

Pocket C++

April 24th, 2014 No comments

Portable and easy to use editor to write and test C++11 snippets. It integrates Notepad++ and Stephan T. Lavavej’s MinGW Distro (GCC 4.8.1). You can use F9 key to compile C++ files, and Ctrl+F9 to execute the compiled program.

homepage

BigBlueButton

January 18th, 2011 No comments

BigBlueButton enables universities and colleges to deliver a high-quality learning experience to remote studies.

BigBlueButton is an active open source project that focuses on usability, modularity, and clean design — both for the user and the developer. The project is hosted at Google Code.

BigBlueButton is built by combining over fourteen open source components.

BigBlueButton

Additional articles:

about Tools

January 16th, 2011 No comments

Tools amplify your talent. The better your tools, and the better you know how to use them, the more productive you can be.

The Pragmatic Programmer: From Journeyman to Master

Andrew Hunt (Author), David Thomas (Author)

Tags: ,

Low Level Virtual Machine (LLVM)

October 6th, 2010 No comments

The Low Level Virtual Machine (LLVM) is a compiler infrastructure, written in C++, which is designed for compile-time, link-time, run-time, and “idle-time” optimization of programs written in arbitrary programming languages. Originally implemented for C/C++, the language-independent design (and the success) of LLVM has since spawned a wide variety of front ends, including Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, and others.

LLVM can provide the middle layers of a complete compiler system, taking intermediate form (IF) code from a compiler and outputting an optimized IF that can then be converted and linked into machine-dependent assembler code for a target platform. LLVM can accept the IF from the GCC toolchain, allowing it to be used with a wide array of existing compilers written for that project.

LLVM can also generate relocatable machine code at compile-time or link-time or even binary machine code at run-time.

LLVM supports a language-independent instruction set and type system. Each instruction is in static single assignment form (SSA), meaning that each variable (called a typed register) is assigned once and is frozen. This helps simplify the analysis of dependencies among variables. LLVM allows code to be compiled statically, as it is under the traditional GCC system, or left for late-compiling from the IF to machine code in a just-in-time compiler (JIT) in a fashion similar to Java. The type system consists of basic types such as integers or floats and five derived types: pointers, arrays, vectors, structures, and functions. A type construct in a concrete language can be represented by combining these basic types in LLVM. For example, a class in C++ can be represented by a combination of structures, functions and arrays of function pointers.

Additional links:

The Workspace Mechanic

May 16th, 2010 No comments

The Workspace Mechanic automates maintenance of your Eclipse environment by tweaking preferences, adding extension locations, and so on. You can use it to:

  • Create a consistent environment among groups as large as the entire company, your local team, or even among your own many workspaces
  • Save time setting up new workspaces
  • Create tasks that ensure your favorite new preferences are applied to all your current and future workspaces. (This is one of our favorite features!)

The key to the Workspace Mechanic’s behavior is the Task. A task describes a simple test and an action that, when run, changes the environment so the test will subsequently pass. Tasks can come in many forms: preference files, Java classes, Groovy scripts and Eclipse extensions. You can easily define your own Tasks.

On a periodic basis, the mechanic will scan your workspace’s environment, executing all the registered Tasks. If all Tasks pass, nothing happens. If some Tasks fail you are presented with the failed tasks, and may choose which of those to fix, or skip, or entirely ignore. This should be familiar to anyone who has run tools like virus and spyware scanners, or software updaters.

The Workspace Mechanic is capable of loading tasks in a variety of forms (compiled classes, preference files and through an extension point mechanism), and can do so from defined locations on disk.

Tags: ,