this

Amanjit Gill

Softwaredeveloper C++ / Java

amanjit.gill@gmx.de
Berlin, Germany


Last Update: 20140904



My Blog, My CV, My SkillsContact, My Projects, My Linkedin Profile, My Bachelor Thesis


Hi, I am a Software Developer (BSc Informatik). I was born and raised in germany (1974), german is my mother tongue. I am currently employed at PSI AG (Software Developer C++). I offer:
  • 10+ years of professional software development experience
  • C++ Systems programming/Desktop Application development on Windows and Linux.
  • Java/Web programming with up-to-date technology stack
  • I get things done.
Thanks for reading :-)

Projects

This is just a place where my coding snippets/private projects will be posted.

CV / Resume

Updated: 20140405

Publications

  1. Identification of diagnostic serum protein profiles of glioblastoma patients.
    Elstner A, Stockhammer F, Nguyen-Dobinsky TN, Nguyen QL, Pilgermann I, Gill A, Guhr A, Zhang T, von Eckardstein K, Picht T, Veelken J, Martuza RL, von Deimling A, Kurtz A.
    Journal of Neuro-Oncology, 2010 Jul 9
    link

Bachelor Thesis

Parallelisierung von Genetischen Algorithmen für Anwendungen der Finanzwirtschaft
Portfolio Optimisation Problem solved by using PGAs . Comparison of a C++ Implementation using MIT's GALib with a handwritten PGA implementation running on GPUs (written in CUDA C/C++). 
Grade for thesis: sehr gut (1,3)
pdf

Education

B.Sc. Informatik
Fernuniversität in Hagen
2011-2014 (6 Semester)
Grade: gut

Abitur (A-Levels)
1993
Gymnasium in der Taus, 71522 Backnang
Grade: gut (1,7)

Certifications

Professional Experience

PSI AG

         Software Developer C++ (2014-09 ... now)

  • C++ Developer Gas & Oil (Windows and Linux. Qt, Oracle, CORBA).

neofonie GmbH: Senior Software Developer Java/C++ (2005-04 ... 2014-09)

Customer project 9 - Business Website (2012-now)

  • Maintenance and further development of features of a popular web site providing reliable business information.
  • Technology: java, grails, maven, mysql, spring, ant, Apache POI, external Payment provider APIs, etc
  • I have been actively involved in most processes.
  • Update: 2014: Migration project from RDBMS + internal search engine to MongoDB + Apache SOLR. I am writing most of the SOLR part. Iterative, test-driven development with SOLR embedded server (> 70% code coverage).

Customer project 8 - News media-related Website (2011-2012)

  • Maintenance and further development of features of a popular web site.
  • Technology: java, grails, maven2, mysql, spring
  • Specified and implemented a filtering API in Java (more or less a Query/Criteria Builder; the principal implementation was RBMS, but some data was expected to be fetched by a search engine, hence an abstraction was needed).
Customer project 7 - ImageServer (2011)
  • Image Server (Java/Grails) . Serves images/thumbs and does image manipulation - circle, shadow, crop, rotate, scale, tile, picture framing, file format conversion, colorspace conversion. Support for multiple Imageserver backends. (Team Size: 2)
  • Technology: java, grails, mysql, native image manipulation libraries, JBoss Cache
  • Incorporated native image manipulation libraries (C/C++, java wrappers)
  • Grails webapp development: Integration of Imageserver into new webapp, views, controllers, etc
  • Ported an existing webapp to target the ImageServer, including multi-file uploader (Javascript/JQuery + plugins)

Customer project 6 - Business Web Application (2009-2010)

  • Port of a native Windows Desktop Application to the web
  • Technology: java, grails, xml schema, eclipse, intellij, maven, mysql, apache ibatis+ibator, aspose cells/word for java
  • Created XSD schema for database migration from an existing system
  • Implementation (Java) of basic formula (calculation) engine: infix input, postfix evaluation
  • Implemented enhanced calculation use cases based on engine (Java).
  • Created native word and excel files (Java) in based on existing word and excel templates and Aspose products, generic dispatch of report creation in an external calculation/reporting backend
  • Some basic web frontend development (Java/Javascript) : forms, controllers, services

Customer project 5 - SOAP WebService Layer for Searchengine (2009)

  • Implemented java based web-service (JAX-WS) for a search engine service. 
  • Technology: java, Apache CXF, PHP
  • Minimal overhead for exposing java services as a web service (PHP clients communicating with java backend).

Customer project 4 - Flash Livestreaming Conception/Implementation (2008)

  • Consulted customers on flash streaming technology: client and server for multi-hours livestreaming of a german tv channel for livestreaming and video on demand
  • Technology: java, grails, flash/flex
  • Set requirements and negotiated with multiple both german and international CDNs (content distribution networks).
  • Evaluated and implemented technology accordingly, both on the client and server-side.
  • Implemented java and grails based web ui for management of video-on-demand videos (upload, management, enabling/disabling)
  • Client webapp code: Video plaaer (flash)
  • Some code for streaming control: regional blocking of non-german website visitors, etc

Customer project 3 - Repostiory Component / Duplicate Detection Framework for Event Crawler (2007-2008)

  • Repository component for a duplicate detection framework. evaluation of existing DB configurations, conception and implementation.
  • Technology: Java, Maven2/Eclipse, JPA, Hibernate, relational database, XML parsing, JAXB2.
  • Standardized document format: documents stored are either crawled from the net or come from a reliable source. Universal import and export from/to XML.
  • Maintained and extended existing processing framework, adapted importers and exporters from different sources, fixed memory leaks and multi-threaded issues
  • Customized algorithm for duplicate detection based on statistics and information retrieval algorithms. Very, very few false positives, high precision and recall.

Customer project 2 - JNI Bridge for Messaging/Communication Agent  (2006)

  • Low-overhead C++ DLL calable from Java for Realtime System Status / C++ JNI Bridge Bridge for Messaging Agent
  • Technology:  Visual C++ 2003/2005 , Java, Maven2, Eclipse
  • Java/C++ Interoperability bridge using JNI. A heavily multithreaded Java application invokes functionality realized by C++ Dlls. The bridge dynamically loads C++ Dlls and exposes C++ objects transparently to java clients. The C++ dlls do not have any dependency/knowledge of the java/JNI use case (In fact, developed by a third-party). Asynchronous, non-blocking callbacks from C++ objects into concrete java instances (Active Objects implementation). Used in production in a commercial communication client on Win32.

Customer project 1 - C# Winforms Explorative Tool with Data Mining Features (Clustering) (2006)

  • Explorative Windows Data Mining Tool  Design and implementation of a project specific data mining algorithm (clustering) in C# / ISO C++
  • Concept and design of Middle thier (COM+)
  • Technology: Visual C#, .NET 1.1, C++
  • Custom Winforms UI Controls for display of clustering results (interactive, zoomable and pannable) Dendrogramm

neofonie internal products - C++ Searchengine / C++ Textmining Engine (2005-2006)

  • Position: Software Developer C++ mainly on Linux (backend internet servers and clusters of backend servers). Main responsibilty: Mainentance + further development of technology.
  • Successfully adapted and deployed C++ text mining / clustering solution for one of germany‘s biggest online service provider.
  • Technology: GNU C++, Linux

GHC Charité Lufthansa: Lead Developer C++ (2004-03 .. 2005-04)

  • Telemedical Computer for Aircrafts
  • Technology: No Info due to NDA
  • Position: Main developer (application/core libraries). Integration work with hardware vendors. No further info possible due to NDA signment

University Clinic Charité: Lead Developer C++/Java (2002-03 .. 2005-04)

  • Study Manager (using Data Mining) for Medical Studies
  • Integrated Data Mining Tool for Medics and Scientists. Created Anforderungskatalog, Systementwurf and Feinentwürfe (builds upon AMICI modules). Main Application built using Visual C++, AMICI Modules
  • Knowledgebase/Ontology Editor: Complete API and GUI for handling an Ontology: API and GUI (MFC) Visual C++, AMICI Modules
  • C/C++ API for UMLS Medical Dictionary API for National Library of Medicine‘s UMLS („Unified medical language system“), a huge Dictionary (~40 million db rows) and semantic network. Visual C++, AMICI Modules
  • C++ Database Access Layer Direct efficient C++ ODBC Access layer for major databases: (Oracle, SQLServer, Sybase ASA, Access) as an efficient MFC Database replacement. C++ Unit Regression test. Visual C++, direct ODBC programming;
  • Data Mining Tools Python scripts and C++/MFC GUIs for data mining analysis and Visualization (using VTK). Python, Visual C++, Data Mining Tools
  • J2EE Integration Benchmarking Project planning (Requirements, System Analysis and Design), Implem. / Evaluation of a three-thiered, Applicationserver-based architecture for genotype and phenotype data and logic (procedures). Benchmarking of Application server with Oracle and SQL Server. J2EE (JBOSS Application server), Netbeans, Ant, XDoclet.
  • LDAP Directory Server Engine and Tool Simple LDAP Authentification and Query Engine and Tool (Swing UI) to a central Directory Server (MS Activedirectory). JDK (JNDI, Swing), Netbeans

Trend Computerschulung: Teacher Java (2001-09 .. 2002-03)

  • Java Teaching: Teacher for a Java programming course - attended mostly by undergraduate CS students.
  • Softskills, Motivation

Ingene (Institute of Genetic Medicine): Software Developer C++ (2001-04 .. 2001-09)

  • C++ Frontend and/ Linux Cluster programming:
  • Worked as a C++ Programmer for Ingene, focus on bioinformatics (phenotype selected database) and clustering techniques (beowulf) for data mining.
  • Visual C++ 6, MFC, ODBC; Linux: GCC, M-VIA, High perf. kernel driver
  • Website programming:
  • Website updates for Ingene homepage.
  • Adobe GoLive

Software Solutions: Software Developer (2000-03 - 2000-08)

  • Website programming
  • Created some web-site scripting (Perl) for the MP3-Software Suite Amplay from Software Solutions.
  • Technoloy: Perl, Apache Webserver

DBPro GmbH: Software Developer (1999-06 .. 2000-06)

  • C++ Database Frontends
  • Worked for 12 months as a C++ Programmer for the DBPro GmBH, Stuttgart in the field of MFC GUI and ODBC database programming („Arbeitszeugnis“ available). Rational Rose UML tool for code documentation. Visual C++ 6, MFC, ODBC;

Skills

Methods
  • Software Development lifecycle, featuring Methods (Waterfall, iterative development OOA/OOD using UML Notation), Documents (Analysis and Design documents, functional specifications), Scheduling, Testing (Automated white box and black box).
  • Agile? Guess what, some people do some sensible planning and still meet their deadlines. And btw, who doesn't want to be agile? Not agile == lame duck.
Programming Languages (System Programming)
  • C++ Windows: MFC/Win32 Desktop Applications Development - Visual Studio, COM/ActiveX
  • C++ Linux: GNU Toolchain (autoconf,libtool).
  • C++ APIs: Boost, Multithreaded development, Socket API, GUI: MFC, Qt, FLTK, OpenGL
  • C# Windows: .NET 1.1, COM+ (.NET Enterprise Services), ADO.NET, Winforms GUI development.
  • x86 Assembly - Working Knowledge
Programming Languages (Web)
  • Java: JDK/JFC/JDBC, J2EE: JBoss.
  • Frameworks: Spring framework: Spring MVC, Spring ORM/Hibernate. JPA/JDO
  • Grails
  • Javascript: JQuery, JSON, JSON/P, some Qooxdoo
  • XML: JAXB, RelaxNG, SOAP Web services (Apache CXF)
Programming Languages (Common Programming)
  • IDE: Eclipse, IntelliJ, Plain Editor XEmacs
  • UML Case tools (Rose, Control Center)
  • XML: Xerces, Expat, Saxon, MSXML via COM
  • Databases: Oracle 8i/9i (Win, Linux), SQL Server 2000, PostgreSQL, MySQL
  • Source Code Control: CVS, Subversion
  • 3D: OpenGL (via C++ and C#) , VTK Visualization toolkit.
  • Perl/Python Skills: Bio-Perl, Tk, DBI. Python: Tkinter, XML, databases
  • C (1991), Pascal, Visual Basic, 68000 Assembly (1989), OS: Win32, Linux, Irix, GEM, Windows Servers (Windows 2000, Windows Server 2003)
  • IDEs: Visual Studio .NET 2003 (prior: VC6), Eclipse, Netbeans, XEmacs