-https://github.io/mjamilfarooq
Muhammad Jamil Farooq
(Multi-platform Full Stack Development Engineer)
Looking for exciting opportunity that involves discovering new technologies, interaction with friendly peoples and open new horizons.
SKILLS
Languages
Java, C++, C++11, C#, C, PHP, Sql.
Testing
Boost Test, PHPUnit, Cppunit, Junit. JMeter
Scripting
bash, m-file scripting, python, Windows batch scripting.
Frameworks and Libraries
Spring Boot, JPA Hibernate, STL, Boost, Glib, Soup, curl, Qt4, MFC, Zend2.
Distributed Programming
Opensplice DDS, Redis, RabbitMQ, and socket programming.
Conceptual
Object Oriented Programming, Functional Programming, MVC, Design Patterns and Principles, Model Based Design. Agile sofware development, RESTful and SOAP services. Multi-threaded and Asynchronous Programming, SOA and Microservices Architecture.
Web Programming
Zend2, Bootstrap3, Wordpress, Opencart, CSS, HTML, JQuery2
Version Control and Task management
Git, SVN, Bitbucket, JIRA, Redmine, Trello, SmartGIT.
Operating Systems
Linux: Ubuntu, Mint, Centos, opensuse, Windows7, xpcTarget (RTOS)
Administration
Apache, Posfix Mail, xencenter virtualization and storage repository management. Asterisk PBX SIP configuration and dialplan writing. Cpanel, rsyslog.
Development Environment
Intellij, Eclipse, NetBean, Cmake, Makefiles, gcc, gdb, gprof, valgrind, Visual Studio.
Databases
MySQL, Sqlite, MS-SQL, Oracle9i
EMLOYMENT HISTORY
GorillaBox.Net (Gamigo) (March 2017 – June 2018 )
Sr. Software Engineer (Full Stack)
Vector Solutions (April 2016 – April 2017)
Sr. Software Engineer C++/Linux
Rockville Technologies (November 2014 – December 2015 )
Sr. Software Engineer
Classified (August 2010 – October 2014)
Application Developer C++/Linux
Classified (September 2006 – July 2010)
Software Engineer (HILS)
PROJECTS
Virtual Desktop Infrastructure (DaaS) – GorillaBox Software
Java, MySQL, Spring, Hibernate, XenAPI, Tomcat8, intellij, maven, Angular2, C++, C#, Stripe
DaaS (Desktop as a Service) provide desktop infrastructure to gamers, researchers with high-end graphics specs on Xenserver through XenAPI. Project involve customer portal, Remote Desktop Sharing through RTSP streaming client. Technology stack involve RESTful API at back-end with Java Spring Boot. Angular2 based Front-end and C++ based Streaming client.
Responsibilities:
Involve in complete SDLC of the project.
Mentoring other team members, monitor progress, and ensure timely delivery of the features.
Development of Java Spring based REST microservices. Following TDD methodology to unit and integration test modules before deployment using Junit.
ORM using Hibernate JPA.
Integration of hypervisor Xenserver 7.0 for automation of virtualization management task using xenapi.
Development of seamless clipboard sharing mechanism for Streaming client/server application in Win32 C++ using socket.
Integration of payment gateway using Stripe.
Cloud Gaming (Windows) – GorillaBox Software
Java, MySQL, Spring, Hibernate, Tomcat8, intellij, maven, Thymleaf, C++, C#
This cloud gaming project revolves around hosting games through hooking/desktop capturing on cloud and stream game play as RTSP on client side and accept user control input on network. Project uses multiple technologies/platforms including Java, C#, C++, XenServer7, Windows and Linux.
Responsibilities:
Following agile methodology using Atlassian JIRA, Bitbucket and SmartGit.
Involve in refactoring/modification of software modules, utilities and window services in .Net C#, WPF, and XAML for client side of the application and also performs optimization to improve performance.
Adding features, enhancements and bug fixing issues as reported by QA.
Administration of Linux/XenServer6.5/XenCenter that involves resolving storage repository issues, reclaim issues and extending storage repository.
Writing Build and Deployment using batch scripting to automate the build and deployment process.
Implementation of pull request based mechanism on Bitbucket.
Commissioning of streaming servers for production on Xenserver and Amazon EC2.
Development of scripts to automate deployment of streaming servers in bulk.
Documenting issues and operational procedures on Bitbucket wiki.
Performing Xenserver6.5 upgrade to Xenserver7.0 through Dell iDRAC.
Bug fixing on Spring Java based Management Server and Service.
Stress testing of Management Server web api using JMeter.
Implementation of ACL authentication and authorization using Spring security.
Refactoring JDBC based modules to adopt Jpa/Hibernate ORM.
Bug fixing in C++ based streaming client.
Few modifications in Analytics module and its front-end on Thymeleaf.
Algorithmic Trading System (Centos6.5) – Vector Solutions
C++11, Akela, libboost, Centos6, Bash, Redis, cmake
Sr. Software Engineer in team of 5 developers following agile practices using Trello and software version-ing using git and development stack of Centos6.5, Eclipse, C++11, libBoost, Cmake, Redis, Bash scripting, and wolverine trading gateway API. Application is design to support multiple trading accounts simultaneously for multiple symbols in pairs (long/short).
Responsibilities:
Involve in design, development and testing of Linux/C++11 console based application for investment management company in area of HFT Algorithmic trading.
Development of equity trading platform using STL, Boost, and Akela exchange connectivity API by Wolverine Technologies for NYSE.
Boost Unit Testing Framework to follow Test Driven Development methodology.
Design and Development of Market Data subscription, Order Management System, connectivity with exchange, and implementation of trading logic for multiple symbols.
Development of multi-threaded environment to exploit high end server at wolverine data center to trade for multiple symbols with minimum latency.
Ensure scalable design to support multiple gateways, venues, order thresholding, market data platforms and minimize effort to implement business/trade logic.
Calculation of important indicators spread, bars, open/close prices and etc for trade logic and support external library for indicator.
IPC using boost shared memory for command-line interface of the application for kill-switch, soft close, panic close and other commands to trading kernel.
Writing cmake2.8 scripts to control software compilation process.
Bash scripting for compilation, deployment and live trade monitoring through Redis
Bash based log processing script to enlist pending, canceled and executed orders per pair based.
Routinely involve in live testing of trading logic for equities with QA to validate business data flow implementation.
Leading a small team of developers and coordinates and collaborate with subordinates, delegate development tasks using trello.
Mentoring junior developers, review code, suggest improvements and identify potential design flaws.
Train and support subordinates on development stack used in the project.
Studying other FIX based APIs like cmegroup.com Market Data Platform MDP.
All of the code was written in C++11 standard and all main components including smart pointers, threads and lambdas were used along with some of the components from Boost library were also adopted.
Service Delivery Platform – Rockville Technologies (pvt) Ltd.
C, glib, LAMP, Zend2, Bootstrap3, JQuery2, CSS, HTML
Service Delivery Platform is designed to host Over The Top (OTT) content and value-added services for telecommunication industry. Platform is developed using C, SMPP gateway, Glib2, gsoap, libcurl, libsoup, syslog, Zend2, PHP, JSON, XML, Jquery2, CSS, HTML, Apache2, MySQL, Bootstrap3 and Linux. Platform is divided in to two modules namely, Service Delivery Platform (SDP) and Service Creation Platform (SCP). SDP host services, let end-user subscribe/un-subscribe to services, calls billing API and provide middle-ware to client as RESTful services for SMPP gateway. SDP is also designed to call client RESTful and SOAP services in the wake of the input from end-user. SCP is the web interface that let the client to create/configure/modify/monitor their services.
Responsibilities:
Involve in requirement analysis, design and development of SDP and SCP and Testing with QA.
Development of SCP (web) application front-end and back-end in Zend2/LAMP using specification given by Front-end Design team.
Develop and Document Unit Test Cases and perform testing with live SMPP gateways along with QA.
Document Software Configuration Management, writing init script for Ubuntu12.04 to host application as service.
BulkSMS – Rockville Technologies (pvt) Ltd.
C, glib, LAMP, Bootstrap3, Zend2, CSS, JQuery2, HTML
Project is designed to let user send SMS messages in bulk through web interface for campaigning, marketing and notifications. One part of the project includes messaging kernel application in C, glib, MySQL, to connect to smpp gateway and send SMPP messages as per user requested schedule and other part is web front-end in Zend2, PHP, LAMP to enable user to schedule, send and track the progress of their campaign and status.
Responsibilities:
Involve in designed, development and testing back-end, in C, PHP, MySQL and front-end in Bootstrap3, JQuery2, HTML and CSS.
Create project plan, tasks, deliverables and documentation to be approve by QA and management.
Follow agile process for development using Scrum, redmine, and Trello.
Development of the application as per specification given by front-end designer to develop responsive user interface using Bootstrap3.
Involve in regression testing by QA, addressing bugs and implement changes as proposed.
Modifications in SMS Messaging Kernel – Rockville Technologies (pvt) Ltd.
C, glib, Rabbitmq, Linux
Project is designed to enable applications, services and modules in Linux to connect to SMPPv3 gateway. It implements SMPP protocol on top of TCP/IP and provide the interface for application to send/receive SMS. Library uses C, Glib and sockets for implementation. And can be connected to multiple gateways, implements delivery receipt hashes, message thresholding. Also, it can be configure to connect to RabbitMQ to send/receive messages and delivery receipts to applications in other platforms. Kernel also implement Python adapter to let python scripts use the library.
Responsibilities:
Provide support to production team for the library.
Bugs removal and feature enhancements.
Provide RabbitMQ interface to the kernel to provide platform independent way to use the library.
Implement delivery receipt mechanism to confirm message delivery.
Implement PyAdapter to enable python script to use the library.
C-Adhearsion – Rockville Technologies (pvt) Ltd.
C++, libboost, Asterisk AGI
C-Adhearsion is library for call controller and router to implement Asterisk dialplan and uses Asterisk Gateway Interface AGI to provide a high performance calling interface in C++. Project is inspired from Ruby based open source project Adhearsion and replicate some of the functionality provided by the same in C++/libboost. It provide call router to route calls based on regular expressions to appropriate call controller and provide polymorphic interface to speak word, digits, audio files and text to caller which is the core functionality for IVR and other features of Dialplan such as call bridging and conference.
Responsibilities:
Project Planning, requirement analysis, and identification of deliverables for the project.
Design and development of library in c++, AGI, boost and Linux.
Integration of library with text-to-speech engine.
Development and documentation of unit test cases and perform testing along with QA to ensure delivery according to specifications.
Development of skeleton application to enable user jump start dialplan writing in C-Adhearsion.
Writing technical document on usage and compilation of the library.
Vivid-Asterisk – Rockville Technologies (pvt) Ltd.
C++, libboost, Linux
Vivid-Asterisk IVVR (Interactive Voice and Video Response) Application Programming Interface that uses C-Adhearsion. Application is designed to parse dialplan, let user navigate the multi-media content through Asterisk, stream multi-media content to user by parsing JSON based dialplan. Project scope also includes hosting of audio/video mp4 content on Asterisk server, compilation, porting and installation of open-source Asterisk module for hosting video content on Asterisk.
Responsibilities:
Project Planning, requirement analysis, and identification of deliverables for the project.
Design and development of application in c++, boost, JSON and Linux.
Identifying issues in hosting video content on Asterisk server, compilation of open-source module for asterisk to support relevant encoders and document procedure to create a required mp4 format that support streaming through Asterisk for IVVR.
Development and documentation of unit test cases and perform testing along with QA to ensure delivery according to specifications.
Other Projects – Open source and Private
MetaTrader MQL4 Scripting – Modifications of MetaTrader4 based scripts in MQL4 for implementing stop loss and take profit functionality and update in trade logic.
Intelligent Transport System – Prototyping of ITS on ARM based Linux, C++, OpenCV, IDS uEye Camera, mpu9160, GPS.
SMPP Library – Open-source library build using Linux/C++11, and TDD methodology. https://github.com/mjamilfarooq/smpp
Web – various project on CMS such as wordpress, bootstrap and e-commerce solutions for customization and template modifications such as http://www.zuel.ch.
Report2Xsls – Java spring-boot based web service to convert Oracle html reports to xlsx sheet using Apache POI and Jsoup. https://github.com/mjamilfarooq/html2xsls.
EDUCATION
Bachelor Degree (Computer Science) – Karachi University, Pakistan.
MS (System Engineering) -Pakistan Institute of Engineering and Applied Sciences, Pakistan.