Marcel Popescu, .NET Developer in Târgoviște, Dâmbovița County, Romania
Marcel Popescu

.NET Developer in Târgoviște, Dâmbovița County, Romania

Member since June 13, 2014
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.
Marcel is now available for hire

Portfolio

Experience

Location

Târgoviște, Dâmbovița County, Romania

Availability

Part-time

Preferred Environment

Visual Studio

The most amazing...

...program I've written automates an error-prone, three-day-long manual database replication down to a two-minute console app.

Employment

  • Senior .NET Developer

    2014 - PRESENT
    Legality Software
    • Created a daily backup system for NetDocuments, a remote cloud that doesn't allow deletion (mandated by law for this particular customer).
    • Created an extensible system notification application that interacts with the LexisNexis TimeMatters application and provides additional information.
    • Worked on the application synchronizing TimeMatters database with legal cases in a few US jurisdictions. The synchronization can be done on a schedule and it allows the lawyers to be automatically notified of new cases, court appointments, and more.
    • Added an application for connecting the phone system with the TimeMatters database, so that the lawyers can automatically get case details when on a call with customers.
    • Worked on the application for identifying letters inside PDF files, extracting data from those letters, matching the letters to existing database records (based on various criteria), and updating those records accordingly.
    Technologies: WinForms, Web API, SQL, C#
  • Developer

    2018 - 2020
    Grab (via Toptal)
    • 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).
    Technologies: Model View Controller (MVC), Web Forms, C#
  • Developer

    2016 - 2016
    Quadrant.io (Investormill, Inc.) (via Toptal)
    • 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.
    Technologies: ZIP, Web, LINQ, Multithreading, Test-driven Development (TDD), C#
  • Python and Java Developer

    2015 - 2015
    Bank of America Merrill Lynch
    • 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.
    Technologies: Java, Python
  • Programmer

    2013 - 2014
    DeCare Systems Ireland
    • Automated the replication of data 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. This implied a number of changes to the existing workflow, because the AU/NZ market was the first one to support direct delivery of packages in addition to delivery by representative; as a result of that, it was also the first one that supported direct payment on the website (previously, the orders were paid on delivery to the representative bringing the package). The front end is a C# MVC 5 application and the back end is mostly WCF services.
    • Integrated a new payment system (PayPal Express) for the Avon Australia and New Zealand web sites. Even though I had never integrated with PayPal before, I managed to finish the task in two weeks, a week ahead of the estimate I had been given. This involved changes on both the client and the server sides to the logic to redirect to PayPal and accept the callback from their site to ours and integrating with our existing services to record the payment attempts.
    • Uploaded media files to a CDN (content distribution network) service in order to improve response times and reduce pressure on our servers. I used both the C# Rx libraries and Async/Await calls for this project. I also solved an issue where some of the paths were over 260 characters long; the .NET implementations of the file APIs in System.IO do not natively support that, so I had to replace some of them with direct calls to the Win32 APIs that allow for a path up to 32,000 characters long.
    • Rewrote an application to reflect the Avon UK branch’s change of shipping company, which was hard-coded into their previous VB6-based application. The new application was written in C# using TDD and trying to respect SOLID principles where possible. The process was complicated by not having a scanner, a printer, or access to the new shipping company’s web service for the first two weeks, so I had to fudge it in a process that actually worked to the application’s benefit because it forced abstraction of the endpoints.
    • Added a health monitoring system to a complex network of WCF services as a side project. The services were distributed on multiple servers and had dependencies on databases and possibly other services (including other servers). The application had to be as future-proof as we could make it, which led me to add a new interface to all services, plus a common DLL implementing the interface with a single method taking and returning a JSON string. The input string contained a hierarchical description of the services that we wanted to check so that each service would first confirm hat it was working before calling its dependencies; the result would either confirm that everything was working or help to quickly pinpoint problems. Since a lot of the web services were written in C# 3.0, this project didn't use any technologies besides WCF and a JSON parser.
    Technologies: ASP.NET MVC, C#
  • Branch Manager and Lead Developer

    1999 - 2013
    MicroBilt
    • 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.
    Technologies: Delphi, Windows Communication Framework (WCF), C#

Experience

  • Simple MVC View Engine
    https://github.com/mdpopescu/public/tree/master/SimpleViewEngine

    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
    https://github.com/mdpopescu/public/tree/master/Failover

    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
    http://mdpopescu.blogspot.com/2013/06/comparing-excel-files-take-two.html

    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
    https://www.coursera.org/course/algo

    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
    http://mdpopescu.blogspot.com/2013/07/posting-dynamic-master-detail-forms.html

    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.

  • C# Best Practices and Tips by Toptal Developers (Publication)
    This resource contains a collection of best practices and tips for C#, provided by our Toptal network members.

Skills

  • Languages

    C#.NET, C#, T-SQL, TypeScript, HTML5, JavaScript, HTML, Delphi, SQL, Python, Java, CSS
  • Frameworks

    ASP.NET Web API, ASP.NET MVC, .NET, .NET Core, ASP.NET, ASP.NET Core, gRPC, ASP.NET Web Services, Knockout.js, OAuth 2, Telerik Kendo UI, Windows Communication Framework (WCF), Bootstrap
  • Libraries/APIs

    WinForms, SignalR, iText, iTextSharp, NetDocuments API, Dropbox API, Reactive Extensions, jQuery, Entity Framework, Web API, LINQ, Twilio API
  • Tools

    C#.NET WinForms, Git, ReSharper, Visual Studio, Microsoft Team Foundation Server, GitHub
  • Paradigms

    Desktop App Development, Agile Software Development, Test-driven Development (TDD), Reactive Programming, ETL, ETL Implementation & Design, Model View Controller (MVC)
  • Platforms

    Telerik, Windows, Web
  • Other

    Web Services, Telerik WebForms Controls, Telerik for WinForms, Algorithms, APIs, NATS, WCF Web Services, OAuth, Multithreading, ZIP, Tesseract
  • Storage

    Databases, Microsoft SQL Server, JSON, Web Forms

To view more profiles

Join Toptal
Share it with others