Mikhail B. | Elance
Last Sign-in: Oct 6, 2015

Mikhail B.

Expert C#/C++/Java programmer
  |  11:35 pm Local Time


Professional programmer, 12 years experience.
I prefer backends, services, network protocols, small Windows desktop applications
Service Description
I work as a professional programmer since 2003.
I have done lots of projects since then, using many platforms, including, but not limited to: Java, C++ (MS VC++, gcc, Qt), C#/.Net, perl, php.

I was working for 10 years on full-time position in software company. Most of my working experience is complex software solutions, involving many technologies and combining different platforms.
It started in 2003, my first work was to rewrite existing Delphi code to C++. Existing code was huge and the requirement was to keep both parts working in process of rewriting. So I had to invent architecture and interface for both parts to communicate.
This year I first met MFC and ATL, ADO, OLEDB, and ADOX technology stacks.
One of the most interesting things was our own entity framework. It was creating tables in MS Access database using ADOX based on given field/keys description from another table.
This year I also first tried working with Oracle database and PL/SQL. The task was to send data from our application to external one (OIS), using PL/SQL procedures and small XML files of predefined structure.
Another achievement of this year - I have made installer for this software, self-written installer engine, using Windows Installer API. It worked and was tested even on Windows 95.
Later in 2004 I was hired by bigger company to work for enterprise-level solutions in Java. I also had numerous small tasks to write small ActiveX components, browser plugins on C++.
This and next year I was mostly writing code for web-based ERP systems using Java/Struts/Oracle technology stack.
I've also first met cross-platform programming, our systems were installed on Windows/Linux/Solaris OSes and had to work in the same way on all platforms.
I've developed my first scripts on bash/csh.
Another interesting thing I've learned this year is big data processing. I had to write applications to process all files of a big oil company stored in Oracle. I was building search index for text/word/excel files and archiving files in database to reduce storage usage.
In 2006 I was rehired by company which had bought my previous company.
This year I first met .Net and C#
From now it will be hard to remember all techologies I've used. My position has grown and I had to invent architecture of our solutions. My main achievement of this year was the architecture and framework for software solutions which were developed in the following 6 years. It consists of 3 parts:
1) Client part. C#-based framework loads modules (plugins) using reflection, maintains user login, user rights, and everything around. When it loads module, it requests interface information - which buttons/menus/navigation items module wants to add. When user clicks added button, framework constructs control using reflection, places it on form and shows this form to user.
2) Server part. IIS-based web service. To keep business logic on server side, and perform hard computations on better hardware.
3) Oracle, PL/SQL part. To keep complicated data processing close to database engine.
During development I had to integrate into many external systems - like accounting software, physical access control software, and so on.
I had to learn Perl for backup and data processing scripts.
Protocols, structures, data processing - is my native environment.
In 2009 I started my work on Elance. Small desktop applications, scripts, even asterisk configuration.
In 2010 I have learned Objective C and had first experience in mobile development industry. 2 big projects - card game and quiz app, and several small ones.
From 2011 I was working both on my regular job and elance, and in 2013 I've finally quit my regular job.
What I like on elance - is huge variety of technologies and languages, I have done applications in many areas - sound processing, data processing, potocol implementations, networking, digital signage, call processing, etc, etc. You can see in my job history.
I'm always overdelivering, because I like my work.
I hate the situation when I spend time and recieve money but the project dies immediately after release.
Thank you for your attention, fell free to contact me to make your project succeed.

Yours sincerely,
Tomsk Polytechnic University
Bachelor's Degree in Computer Science
1999 - 2004
Payment Terms
Projects less then 500$ are payed after work.

At least 50% should be deposited in Escrow.
If a project is big and lasts more then one month, it should be divided into several milestones (2weeks-1month each), and I start working on the next stage only after it is deposited at least for 50%.
Mikhail B. | Elance

Mikhail B.