Hi, I’m Mikhail Kalugin.
I develop software and I do it well.


Résumé

SUMMARY

Passionate software developer currently focused at iOS apps. In past: co-founder of YourSway LLC, initial committer of Eclipse DLTK project, contributor to SWT/Cocoa project, organizer of a local NSCoderNight.

Key experience areas

experience

Google
Software Engineer, Oct 2011 — now

Yandex
iPhone software developer, Nov 2009 — Aug 2011

Worked on Yandex.Maps for iOS. I was responsible for core components and internal architecture of the application.

Mikhail Kalugin LLC
Freelance developer, Apr 2009 — Oct 2009

  • Implemented v.1 of ProChords, an iPhone songwriting application. On the App Store. [CocoaTouch]
  • Worked on Siine, an innovative solution for time communications for Windows, Mac OS X and iPhone. A short text on my participation in the project. [Cocoa, CocoaTouch, Google Calendar API, Google Maps API, Win32 API, Win32 Accessibility API]
  • Designed and implemented JustRandom. A stupid iPhone app for making random decisions. On the AppStore. [CocoaTouch]
  • Worked on my own the best ever yet another static analysis for Ruby. Unfinished. [Java, JRuby]
  • Gave 4 lectures on object-oriented programming for 2nd year math department students at Novosibirsk State University. (Sep 2009)

YourSway LLC
Co-founder, spiritual partner, Apr 2009 — now

YourSway LLC
Co-founder, senior software developer, Aug 2007 — Apr 2009

YourSway is a company co-founded by me and a couple of my friends. Here are my contributions:

  • Actively participated in design and implementation of YourSway IDE, the most important of our own projects. [Java, Eclipse, DLTK, Ruby, Python]
  • Developed most of a full-fledged in-house dynamic language IDE for one of our major clients. Key features: advanced debugger (with support of hot code replace and attach-to-process), JDT-grade navigation and content assistance, support for Windows and Mac OS X. [Java, Eclipse, DLTK, JNI, C, ANTLR]
  • Developed a proof-of-concept demo of a cross-language interpreted script debugger using Eclipse. Can be downloaded from GitHub. [Java, Eclipse, DLTK]
  • Regularly worked on Siine, yet another our consulting project. [Cocoa, CocoaTouch, Google Calendar API, Google Maps API, Win32 API, Win32 Accessibility API]
  • Designed and coded significant part of Taskus, one of our own projects. It's a plain-text task manager like TaskPaper, but with ability to sync with bug-trackers and apps like Basecamp. [Java, JNI, SWT/Cocoa, Carbon]
  • In order to build Taskus, worked on improving SWT/Cocoa and contributed numerous patches to it.
  • Designed from scratch and implemented YourSway Finance — our corporate finance accounting system. [AppEngine]
  • Occasionally helped with development of a Spring-based application for tours management. [Java, Spring, Maven, Hibernate]

Xored Software Inc.
Senior software engineer, Aug 2006 — Aug 2007

  • Worked on Eclipse DLTK project. I'm one of very first commiters. Designed and implemented: Tcl parser, Tcl and Ruby model, script launching, many views (outline, etc), editing features (folding, indenting), documentation access.
  • Developed final version (and participated in development of first versions) of type inferencing and content assistance for Ruby. These features helped DLTK Ruby a lot to become one the most popular projects of Eclipse Foundation.
  • Apart from DLTK successfully implemented a couple of eclipse-based projects for high-priority consulting projects. [Java, C, Eclipse, Carbon, Tcl/Tk, Ruby, Python, ANTLR, yacc]

FuzLez Software
Software engineer, Jan 2005 — June 2006

  • Developed RecordThisNow — a windows application for recording all sounds played on the computer. [C, C++, Win32API, Win32 Multimedia API, Lame, RSA, boost]
  • Implemented server-side CGI scripts for Desk2Desk — a tool to send pictures easily from one computer to another with one click. [C, CGI, MySQL, boost]

Both projects had been successfully selling as shareware and became major FuzLez's projects.

Novosibirsk State University
Jury member at West-Siberian Olympiad science committee, Sep 2006 — Jan 2008

  • Participated in preparation of problems for Potossin West-Siberian programming contest (writing problem statements, jury's solutions, tests).
  • Helped with development of contest's own automated testing system built on Ruby On Rails. [Ruby, RoR, memcached, C, Java]

A.P. Ershov Institute of Informatics Systems
Software engineer, Sep 2004 — Feb 2005

  • Worked on an automated testing system for school programming contests with support of distributed testing on Windows, Linux or FreeBSD. Designed and implemented core testing facilities for Linux/FreeBSD and also a PHP-based front-end. [C, MySQL, PHP]

A.P. Ershov Institute of Informatics Systems
Academic instructor at Summer Programming Schools, 2004, 2005, 2006

I managed projects on the following topics:

  • Java/J2ME (2004) [Java, J2ME]
  • XML Web Services (2005) [Java, J2ME, Tomcat]
  • Sound processing algorithms (2006) [C, Win32API, Lame]

buzzwords

Programming languages

Used in real life:
Objective-C, C, C++, Java, Ruby, Python, JavaScript, PHP.

Played with:
Prolog, LISP, x86 assembler, Smalltalk, Tcl, Lua, Perl, C#, ML.

Developed software for

Mac OS X/iPhone, Windows, Linux, FreeBSD, DOS, CP/M ;).

Programming techniques

Object-oriented, structural, functional, logical.

Apple World

Cocoa, Cocoa Touch.

Web World

HTML, CSS, jQuery, Google App Engine, Ruby On Rails, REST.

Java World

Eclipse (RCP, OSGi, SWT, JFace, JDT, DLTK, DSDP/TM), JUnit, EasyMock, Spring, Hibernate.

Databases

sqlite, MySQL.

Tools

Lots of different IDEs. Profilers. Different build tools. VCS: git, cvs, svn, hg.

awards

education

M.S. degree in applied mathematics and computer science, Novosibirsk State University, 2004 — 2009. Thesis: “Demand-driven static analysis for Ruby.”


About me

Hello again.

I'm a 24 year old guy from Russia, who wrote his first program for a programmable calculator when he was 6 and who haven't spent a day without programming since that time.

If you're considering me as a developer, please check out my résumé. You can also take a look at my code on GitHub.

Fortunately in addition to programming I have some other hobbies: cooking, traveling, photography.

If you're my friend or just want to learn more about me, you can check out the following things:


Contact information

E-mail: mikhail.kalugin@gmail.com

Skype: mikhail.kalugin

ICQ: 129412998

GoogleTalk: fourdman@gmail.com

LinkedIn


OOP Lectures (in Russian)

  1. Complex systems, programming paradigms, history, introduction to OOP principles. [.pdf] [.ppt]
  2. C++: basics. [.pdf] [.ppt]
  3. C++: templates, exceptions. STL, boost. Java. [.pdf] [.ppt]
  4. OO analysis and design. UML. Design patterns. Development process. [.pdf] [.ppt]