Marcel P.

Marcel P.

Senior Software Engineer

Romania
Hire Marcel P. Hire Marcel P. Hire Marcel P.

About Me

Marcel is a senior developer with over 20 years of experience. He prefers back-end development, is great with algorithms, and prides himself on well-designed code. He has written an introductory book on TDD and is currently mentoring several junior programmers.

Work history

Renfield Software
CEO/CTO
2019 - Present (5 years)
Remote
  • Developed a Web API portal interfacing between restaurants and delivery services.

  • Developed a WinForms (desktop) application for transcribing and translating videos, using various AWS services, to help some of our employees who were not very proficient with spoken English.

  • Wrote an inventory application for mobile phones, allowing users to record inventory levels by going into the warehouse and scanning the product labels. A report would then be generated and sent to the configured recipients.

C#.NET.NET CoreNUnitMoqWindows TelerikETLETL Implementation & DesignEntity FrameworkReactive ProgrammingJSONReSharperReactive ExtensionsC#.NET WinForms Windows Forms (WinForms) Technical Leadership OAuth 2 Amazon Web Services (AWS)
Grab
Developer
2018 - 2020 (2 years)
Remote
  • Worked on a responsive Kiosk project supporting multiple restaurants (with different CSS/theming).

  • Developed a responsive web site for ordering at airports or train stations.

  • Improved the quality of the existing code, adding unit tests, and UI tests (using Selenium).

DeCare Systems Ireland
Programmer
2013 - 2014 (1 year)
Remote
  • Automated data replication from staging to production, changing a three-day, error-prone manual process to a two-minute automated one using SQL Server Data tools.

  • Worked on the Avon shop for the Australia/New Zealand region, changing the existing workflow to support direct delivery and direct payment on the website. The front end is a C# MVC 5 application, and the back end is mostly WCF services.

  • Integrated PayPal Express for the Avon Australia and New Zealand websites. This involved changes on both the client and the server sides.

  • Uploaded media files to a CDN (content distribution network) service to improve response times and reduce pressure on our servers. I also had to use low-level Win32 APIs for paths longer than 260 chars.

  • Rewrote an application to reflect the Avon UK branch's change of shipping company, which was hard-coded into their previous VB6 app. This required abstracting details about the label printer due to its unavailability at the start of the project.

  • Added a health monitoring system to a complex network of WCF services. Since many web services were written in C# 3.0, this project didn't use technologies besides WCF and a JSON parser.

ASP.NET MVCC#.NETMicrosoft SQL Server jQueryCSSHTMLASP.NETASP.NET Web APIAlgorithmsSQLREST APIs Web ServicesAgile software developmentAPIsDesktop App Development MultithreadingModel View Controller (MVC) C#.NET DatabasesMoqWindows Entity FrameworkJSONOAuth 2
MicroBilt
Branch Manager and Lead Developer
1999 - 2013 (14 years)
Remote
  • Switched the company's back-end applications in Delphi 5 to C#.

  • Reduced writing WCF services to about a week through practical experience, assisted by my CodeSmith template written to get the common parts out of the way, and allow everyone on the team to focus on what was new in each application.

  • Wrote the back-end application to create an in-house credit service for people who didn’t have a good standard credit report in a six-month project.

  • Wrote Enhanced People Search, which uses a combination of data sources to create a comprehensive history of a person. We had to do a lot of optimizations on this service due to a large amount of computation involved.

  • Developed the ID authentication service as a fraud-prevention measure using historical information databases to determine whether a person actually was who they claimed to be.

DelphiWindows Communication Framework (WCF) C#.NETMicrosoft SQL Server jQueryCSSHTMLASP.NET MVCASP.NETASP.NET Web APIAlgorithmsCTO SQLLeadershipManagementREST APIs Agile software developmentAPIsDesktop App Development WCF Web Services MultithreadingWeb APIModel View Controller (MVC) C#.NET DatabasesC#.NET WinForms Windows ETLETL Implementation & DesignWindows Forms (WinForms) Technical Leadership
Orion180
Senior .NET Developer
Present (2024 years)
Remote
  • Worked on an insurance application/MVC site, primarily on the rating engine, the part of the application responsible for calculating the insurance premium.

  • Started working on integrating the application with third parties, as a provider of insurance quotes.

  • Added reliable, automated tests to ensure that the hundreds of criteria used in calculating the insurance premium worked as expected.

Windows Forms (WinForms) Web APISQLC#.NETMicrosoft SQL Server jQueryCSSHTMLASP.NET MVCASP.NETASP.NET Web APIASP.NET CoreASP.NET Web Services AlgorithmsCTO LeadershipManagementREST APIs Web ServicesAgile software developmentAPIsTelerik WebForms Controls Telerik for WinForms Desktop App Development NATSTelerik Kendo UI MultithreadingModel View Controller (MVC) C#.NET DatabasesC#.NET WinForms .NET CoreNUnitMoqWindows TelerikETLETL Implementation & DesignEntity FrameworkiText iTextSharp Reactive ProgrammingJSONReSharperReactive ExtensionsOAuth 2
Quadrant.io (Investormill, Inc.)
Developer
Present (2024 years)
Remote
  • Built high-speed processing of large data files (up to 10 GB).

  • Wrote code to split a file in chunks with the additional requirement that the split happens on a line end (since they were line-oriented text files).

  • Facilitated multithreaded processing of large files without running out of memory.

  • Processed the data while downloading it so that processing was over in 1m 33s for a file where the download alone took around 1m 27s.

  • Made extensive use of unit tests.

Bank of America Merrill Lynch
Python and Java Developer
Present (2024 years)
Remote
  • Transitioned two internal projects from using SIC codes to NAICS, one written in Python and one in Java. The projects had an original estimate of six months. We managed to finish them in three.

  • Generated new aggregation reports based on risk industry groups and sectors (based on the newly added NAICS codes).

  • Added new permissions to enable finer control on who is allowed to make specific changes in the Java project UI.

  • Optimized a query that was taking a couple of minutes on the DEV server down to ten seconds by using a combination of temporary tables and JOINs (we were not allowed to change the existing tables, not even to add indexes).

  • Advised the rest of the team on design and testing issues.

JavaPythonAlgorithmsDatabasesWindows Technical Leadership

Portfolio

Simple MVC View Engine

A minimalistic engine for ASP.NET MVC that enforces the removal of logic from the views. Only "if," "foreach," and "include" are supported, so all data must be placed in the model instead of being retrieved by the view when it is rendered. The code was developed using TDD and uses Linq and reflection plus a dedicated parser. The engine can also be used independently of MVC (but alternative projects like SmartFormat might be simpler to use in those cases).

Fail-over Mechanism

An implementation of a fail-over mechanism, where several actions are sequentially attempted until one succeeds. Additional information can be found at http://mdpopescu.blogspot.ro/2013/06/fail-over-algorithm.html.

Excel File Comparison

An article presenting a console application for comparing two Excel files. The project was developed in C# using TDD and is available on GitHub.

TDD Book

This is my "TDD by Example" book, where I develop an expression evaluator (a class that can evaluate expressions like 2 + 3 * 5 - x), piece by piece using C# and TDD.

Professional Development – Algorithms: Design and Analysis

Completed Coursera's "Algorithms: Design and Analysis" courses in 2013 with a score of 97% on the first course and 74% on the second. The courses comprise approximately 100 hours of training and are designed and facilitated by Prof. Tim Roughgarden of Stanford University.

Dynamic Master/Detail Forms with Knockout

The article presents an interesting dilemma: Create a dynamic form, using MVC 4+ and Knockout, that nevertheless gets POSTed correctly, by generating the right form IDs.

Education

Triplebyte Certified Generalist Software Engineer - 2020
Triplebyte Certified Generalist Software Engineer - 2020
Triplebyte