Dmitry Shaporenkov I have 7+ years of experience in software engineering backed by solid theoretical knowledge in such fields of computer science as database systems, information retrieval, compiler construction, operating systems. I'm holding a PhD in Computer Science (in the area of Database Systems) from University of Saint-Petersburg, Russia. ---------------------------------------------- PROFESSIONAL OBJECTIVES Include but are not limited to: Information retrieval, emerging Web technologies (domain-specific Web search, extraction and integration of information in Web), database system internals (storage managers, query optimizers, index structures), compiler construction (code generation, optimization), operating systems. ---------------------------------------------- SKILLS Programming languages: C (5 years), C++ (5 years), Java (4 years), C# (4 years), Visual Basic, Assembler (x86), OCaml, Pascal. Operating systems: Linux, Windows Database systems: SQL Server, some MySQL. Programming environments: J2SE, .NET, GNU/Linux tools ---------------------------------------------- INDUSTRY EXPERIENCE -- May 2008 - present Researcher at Hewlett-Packard laboratories, Russia. I work in the areas of text analytics, semistructured data processing and related: - Generation of ontologies based on corpus of semistructured inter-linked documents (like Wikipedia) - Concept extraction from text - Recognition and intepretation of structured objects (tables, records) inside semistructured documents - Cleansing of noisy documents (e.g. removing anything from a Web news article except for its main content) etc. -- May 2003 - May 2008 Senior software engineer at JetBrains , Inc (Saint-Petersburg, Russia). Participated in the development of JetBrains ReSharper code assistance tool. Main responsibilities include - integrating ReSharper add-in into Microsoft Visual Studio IDE - creating a number of features of the product ( e.g. finding all references in code pointing out to a particular symbol; finding redundant dependencies between modules in the project etc.) - enhancing and maintaining the internal parser / AST generation tool (C#, Java, C++) - creating a tool for converting UI menus representation between different formats - developing a tool for API backward compatibility checking - participating in the overall design of the product by submitting a number of feature requests etc. -- Jan 2000 - May 2003 Software engineer at Lanit-Tercom, Inc (Saint-Petersburg, Russia). Was a member of the team developing the RescueWare (now Modernization Workbench), a tool for translating legacy applications written in Cobol, PL/I into modern systems in Java, C++ and Visual Basic. Responsibilities included - developing a Cobol code generation module (from AST into Cobol source code), - implementing program analysis (control flow and data flow, unused assignments and so on) algorithms for Cobol code - integrating the product with a 3rd party message queue system (IBM MQSeries) (C++, Cobol, Java) - designing and implementing a common library for algorithms on graphs which was used in program analysis module -------------------------------------- RESEARCH PROJECTS I participated in several research projects supported by various grants and organizations. -- Dec 2003 - present (but currently stalled). Supported by grants from RFBR (Russian Foundation for Basic Research) I developed Memphis (C#, C++), an environment for studying behavior of main- memory index structures and algorithms for executing relational joins. Memphis was used to conduct numerous experiments whose results are reported in several papers and in my PhD thesis. Currently the development is stalled due to lack of support and motivation. -- May 2002 - May 2003. Supported by grants from Lanit-Tercom, Inc I was one of the developers of the PADLA research project (OCaml). The objective of the project was to create an automatic tool for translating an abstract formal machine architecture description into a set of tools for this machine: assembler, disassembler, simulator. I created a generator producing disassembler, and also a powerful macro processor supporting loops etc (which was used and is still used for producing the resulting code). Now the project is alive but supported by other people. -- Dec 2001 - Jun 2002. Supported by a grant from Lanit-Tercom, Inc. My Master thesis is dedicated to a module of the PROMISE research project (C, C++) aiming to enhance the well-known LCC compiler by incorporating true optimization passes. I developed an interprocedural optimization module: function inlining, interprocedural constant propagation, function specialization by a fixed value of a function parameter. -- Dec 2002 - May 2003. Supported by a grant from Microsoft Research. I participated in the Janus project (C, C++, C#) which was an attempt to create a back-stepping debugger (that is, allowing a retrospective, "backward" execution of the program being debugged) on the Microsoft Rotor code base. I studied Rotor sources and got a deep knowledge of its internals. I also made some changes to the threading engine of Rotor necessary to support the debugger mechanisms. ----------------------------------------- EDUCATION I have a PhD (Candidate of Sciences in the field of Physics and Mathematics in Russian) from the University of Saint-Petersburg. My PhD thesis is called "Efficient methods for data indexing and query execution in main-memory database systems". -- Sep 2002 - Oct 2005 PhD study (Faculty of Mathematics and Mechanics of the University of Saint- Petersburg) in the field of database systems under supervision of Boris Novikov, a well-known Russian specialist. In the course of study I published several papers and participated in 5 conferences. In April, 2006 I presented my PhD thesis. -- Sep 1997 - Jun 2002 I obtained a Master degree with honours in Jul 2002 from the Faculty of Mathematics and Mechanics of the University of Saint-Petersburg. ----------------------------------------- MAIN PUBLICATIONS I have a DBLP record. The following are my main publications: * Dmitry Shaporenkov. Efficient Main-Memory Algorithms for Set Containment Join Using Inverted Lists. In Proceedings of ADBIS 2005, Tallinn, Estonia, 2005. This paper received the Best Student Paper award. * Dmitry Shaporenkov. Partitioning Inverted Lists for Efficient Evaluation of Set-Containment Joins in Main Memory. In Proceedings of SYRCoDIS 2005, Saint- Petersburg, 2005. This paper received the Best Paper award. * Dmitry Shaporenkov. Multi-Indices - A Tool for Optimizing Join Processing in Main Memory. In Proceedings of the Baltic DB&IS'2004, Riga, Latvia, June 2004 * Dmitry Shaporenkov. Performance Comparison of Main-Memory Algorithms for Set Containment Joins. In Proceedings of SYRCoDIS 2004, Saint-Petersburg, 2004 * Dmitry Shaporenkov. RPha - A High-Availability Distributed Data Structure Based on Range Partitioning. In Proceedings of MCO conference, Moscow, 2003 (in Russian) * Dmitry Shaporenkov. Automatic Generation of Assembler and Disassembler from Formal Architecture Description (with Andrey Simanovsky). Saint-Petersburg, 2003 (in Russian) ----------------------------------------- OTHER CONFERENCE ACTIVITIES I was a Program Committee member at the SYRCoDIS 2005 and SYRCoDIS 2006 conferences, and a Program Committee Co-Chair at the SYRCoDIS 2007 and SYRCoDIS 2008 conferences. I served as an external reviewer at the EDBT 2006 conference, and I am a PC member at the ADBIS 2007 conference. ----------------------------------------- PERSONAL INFORMATION Born: June 10, 1980, Leningrad, USSR. Nationality: Russian. Languages I know: Russian (native), English (fluent), Latvian (basic).