My name is Ivan Krechetov, and I'm a programmer. I was born in 1979, in Novosibirsk, Russia. I live in Winterthur, Switzerland with my family: a wife and two daughters.
Before I was 11 I didn’t even care if computers exist. Then, one day I randomly stumbled upon a book about BASIC, the programming language. And then it began… I was totally blown away by the idea that I could create my own worlds in code. I was eager to build smart, beautiful things, which are able to make their own decisions, and be… alive, sort of.
It was a constant creativity bliss: all those small programs and games I made and hardly really finished — because I was only 12, and because new shiny ideas appeared faster than I could code. Since the very beginning I had no doubts at all that I'll be coding all my life.
I've obtained a Bachelor's degree from Novosibirsk State University (NSU), graduated with honors, with 100% excellent grades in the diploma, which makes me one of the top-2% students.
I studied at the department of mechanics and mathematics. We had a lot of Math: mathematical analysis, theory of functions of a complex variable, mathematical logic, abstract algebra, computation methods, discrete mathematics, probability and statistics, you name it. Basically, the curriculum was: all the Math imaginable + the gym class.
In the last two years I did the research work at the chair of programming. My qualification work subject was “Forming the object-oriented data structures tailor-made for the search tasks”. In essence that was a rather simplistic exploration of how one would go about building an object-oriented database.
I continued at NSU, the same department and chair, and obtained a Master's degree, again with honors; however, the grades weren't that maxed-out anymore, as I already had in parallel a full-time job. My master's thesis subject was: “Effective RDBMS usage in an object-oriented application” — exploration on the topic of object-relational mapping. Regarding the curriculum, it was more of the computer science-related courses than during the bachelor's program.
Reference: Dr. Prof. Alexander Marchuk
I worked as a PhD Associate at the University of Twente in Enschede, The Netherlands. My subject was: “Aspectual Refactoring of Software Architectures” — research in the field of aspect-oriented software development: separation of concerns, architectural aspects, architectural styles, software architecture design process, formalized evaluation and refactoring.
Unfortunately, PhD research work didn't quite meet my expectations. It was too much of writing papers, and too little (almost none) of writing code. While, of course, the educational value was great, and I definitely learned a lot. Thus, in spite of rather promising initial results, I have quit the PhD in favor of a programming job in Switzerland.
Reference: Prof. Dr. Ir. Mehmet Akşit
I. Krechetov. Relational Data Storage Support in an Object-Oriented Application. / Abstracts of international conference of young scientists "Mathematical modeling and information technologies", Novosibirsk, 2002, pp. 61-61.
I. Krechetov. The Automated Building of SQL Queries for Object Data. / IIS SBRAS Preprint, vol. 118, Novosibirsk, 2004, 27 p.
I. Krechetov. Introduction of a Universal Persistence Layer for a Visual Basic Applications Suite. / Abstracts of conference-and-contest of students, post- graduates and young scientists "Microsoft technologies in informatics and programming", Novosibirsk, 2005, pp. 77-78.
I. Krechetov et al. Initial Version of Aspect-Oriented Architecture Design Approach. / AOSD-Europe NoE technical report D37, University of Twente, 2006, pp 1-57.
I. Krechetov et al. Towards an Integrated Aspect-Oriented Modeling Approach for Software Architecture Design. / 8th International Workshop on Aspect-Oriented Modeling at AOSD Conference, March 2006, Bonn, Germany.
Novosibirsk State University, 1st semester, 2001: seminars, selected lectures and exams for the course “UML, The Unified Modeling Language”.
JSZurich user group presentation "Street Magic with Functions".
WebTuesday Zurich lightning talks
Zurich Frontend Conference 2012 lightning talk "Rise against the state".
Zurich Frontend Conference 2015 lightning talk "Why React is different (no, really!)"
Presenting at XIAG AG the "Intro to React and the Elm Architecture"
Worked as a junior programmer on ActiveFrame and it's applications. ActiveFrame was a framework for the development of document flow support programs, which require rich data management. My part was the code generator, and the enhancement of some of the object-oriented database features. The ActiveFrame application I maintained most of the time was a customer contacts management program.
Tech: C++, Win32, MFC, Oracle.
References: Felix Berger, Hans Bärfuss
Left the position because of the limited period of the Swiss work permit L.
The company is known for creating ricardo.ch. However, I wasn't in Ricardo team, but rather working on something that was supposed to become “the next big thing” for the company, but never actually has: WeTellYou.com — a global expert advice system, meant to provide a communication platform for people asking questions and giving answers — via Web, e-mail, chat and telephone. The application supplied IP-telephony and billing, WAP and PDA adaptations.
I was responsible for the data layer, programmed the chat client, and have built an ad-hoc tasks scheduler — crontab appeared to be not good enough for us.
Tech: Java, Linux, Apache JServ, XSLT, Oracle, Java RMI
References: Gregory Entin, Adrian Pfister
Left the position because the project was declared a financial dead-end, and cancelled.
Developed a program for visual modeling in the field of seismic geophysics: drawing the earth and water layers, and assigning their attributes. Ultimately, the model is exported for computation handled by a different program.
Handled miscellaneous maintenance and integration tasks for the existing projects.
Tech: Java with Java2D and Swing, C++ on Win32, Visual Basic 5
Reference: Alexander Osipov
Left the position because the company projects situation wan't stable and too promising, which greatly influenced the salary. For me that appeared to be a quick temporary employment after Auktion24 crash. However, I did like the team, and the work was quite a bit of fun.
The company is one of the leaders in Russia in providing software and hardware solutions for finance and banking. I worked in the IBSO Platform team. IBSO is a banking applications platform: proprietary object-oriented programming language translated into Oracle PL/SQL, business model designer, screen forms editor, access rights manager, operator's module, and several utility applications.
I was responsible for the maintenance of the existing IBSO modules, implementation of the new features (primarily GUI). Re-engineering, refactoring, integration of the new development concept into the “old” code. Did the analysis, design, prototyping and implementation of the common persistence layer for the IBSO client modules.
Tech: Oracle, Visual Basic 6, C++ on Win32, COM
Reference: Anatoly Lisovoy
Left the position because of a lucrative offer from XIAG AG, and I thought that in a much smaller company, as a project leader, I'll be able to make a difference.
A custom Web applications development company. That was my first, and hopefully the last, experience as a manager. Not writing any production code for over a year was physically painful in the end. However, I believe I did a pretty decent job as a manager. I controlled multiple projects' progress, communicated with customers, and translated their concerns into engineers' tasks, evaluated the results, prepared the project proposals for potential customers, wrote specifications, interviewed job candidates.
After about a year I became desperate for coding. But I lacked the experience at the time with Web programming, and wasn't much inspired by PHP4 language. Luckily, we found a C++ project for me: a digital photo prints ordering software for Microsoft Windows. It had a custom look, simple image enhancement features, ordering Web GUI integration via an embedded Internet Explorer, network communication with the server for the photos upload, writing orders to CD/DVD for sending by post. When released, it was downloaded and used by tens of thousands of people.
Tech: C++ on Win32, WTL/ATL, GDI+
Reference: Andreas Graf
Left the position to do PhD in Holland.
Now I'm working at XIAG AG as a programmer and project leader. I'm taking full responsibility for projects, interacting directly with customers, specifying and estimating the projects' scope and iterations; I'm defining tasks for up to 4 other team members. But most of the time I'm writing code. I led the following Web applications' development from scratch.
Bruker BioSpin store. Online store of the scientific lab equipment.
Objects registration and tracking application for Homewinner.ch (retired) — a real estate agency.
I also maintained, or implemented new features for the following applications.
ifolor prints ordering software for Windows.
EngadinBooking.ch (retired) – an iFrame-able GUI for booking hotels, using an external Web-service.
A file upload Java Applet for a Web site.
SBB train tickets Web shop for foreign tourists visiting Switzerland. I also maintained the shop's administrative interface.
References: Andreas Graf, Max Moos
Miranda IM plug-in
Difference schemes for differential equations, Monte-Carlo methods, Genetic algorithms, Neural networks (C, C++, Pascal, Delphi)
Physical process modeling (ANSI C)
3D graphics – Displaying the linear and quadric primitives (C++)
I'm a test-driven development practitioner.
Deep knowledge of object-oriented analysis and design, awareness of software design and architecture patterns. Have to say though, I'm somewhat disappointed with the conventional OO — like in Java or C++, as it never delivered the true composability and scalability of abstractions.
I'm a functional programming enthusiast, being well aware of dangers of The State, and understanding that not everything has to be an object.
Programming languages I used professionally; sorted by my fluency as of today: best known — first, less known — last:
Other programming languages I used for fun and education: C, Scheme, Clojure, Erlang, Haskell, Elm, Ruby, Python, Pascal, x86 Assembler, Prolog.
Yes, I also know SQL, a bit of PL/pgSQL, HTML, some CSS, and XSL.
Databases used: CouchDB, PostgreSQL, Redis, MySQL, sqlite, Oracle, MS SQL Server.
Version control systems used: Git, Subversion, CVS, Team Foundation Server, Visual Source Safe
Literate writing in English and Russian, good communication skills. Spoken languages: Russian (native), English (fluent), German (B1)