Curriculum Vitae

Riksdalersgatan 25C
414 81 Gothenburg
073 767 50 03
andrej.lamov@gmail.com
https://github.com/andrejlamov

Education

MSc (Civilingenjör) Computer Science at Chalmers University of Technology

2008 – 2016

I study the Master's Program Computer Science - Algorithms, Languages and Logic. Relevant courses: Functional Programming, Advanced Functional Programming, Parallel Functional Programming, Algorithms, Advanced Algorithms, Discrete Optimization, Types for Programs and Proofs, AI and Concurrent Programming. In these courses I have used Haskell, Python, Erlang, C, Agda and Java.

Work Experience

Master Thesis

2015 October – current

The thesis explores different representations of string data in Erlang, in the context of Ericsson's SGSN-MME. The SGSN-MME is a massive concurrent Erlang system, running hundred of thousands of Erlang processes. I have examined Erlang and its virtual machine, BEAM, in detail. During the thesis I have mainly used Erlang, but also C, making changes to the BEAM, that is written in C. I have visited the OTP team, the main developers of Erlang, in Stockholm and received feedback on the ideas presented in the thesis.

Software Developer at Ericsson

2010 – 2015

I worked as a software developer at Ericsson in parallel with my studies at Chalmers. At Ericsson I had the freedom to learn new languages, libraries and tools, which provided me with a lot of coding experience, that I would not have gained by only studying at Chalmers. I mainly developed in Scala, Erlang, Python, JavaScript and C, learning libraries and tools such as Git, Pandas, D3.js, Flask, Node.js and JFreeChart.

Assistant for a disabled student at Chalmers

2011 – 2015

Employed by Chalmers to help a disabled student to get to different classrooms between lectures. It taught me to be flexible and improved my social skills.

Assistant at bookstore Antikvariat PAN

2007 – 2014

I sold books and movie-posters at a bookstore called Antikvariat PAN while studying at Chalmers and working at Ericsson. The job mainly involved interacting with customers, guiding them through book shelves and organize the inventory. I was often alone in the store, which taught me responsibility and to be customer-oriented.

Assistant repairman at Data Assistent

2007 – 2010

I occasionally helped repairing computers and configure Linux.

Telemarketing for Hörselskadades Riksförbund

2006 – 2007

Collected donations over telephone. The process taught me to be patient.

Programming Experience

Pit4 prototype

2015 January – 2015 February

A prototype web-application for log visualization at Ericsson. The motivation behind this application was to solve the problem of rendering interactive graphs with a big amount of data-points in a browser. The application automatically adjusts the level-of-detail without loss of significant data-point nor performance. The backend is based on the Python libraries Flask and Pandas, and the frontend on D3.js.

Project managing tool

2014 May – 2014 September

A web-application for planning and managing projects at Ericsson. It is currently widely used by managers and is currently being maintained by a team at Ericsson. The backend is implemented using Node.js and the frontend in D3.js.

Issue-ticket monitor

2013 May – 2014 December

A web-application for Ericsson that visualizes the flow of issue-tickets through the different teams and shows their productivity. The backend is written in node.js that communicated with the issue-report system through Perl, and generated data for the frontend written in d3.js.

TTCN logger for Titan

2012 January – 2012 September

I helped develop a logger for the Titan system at Ericsson. Titan is a toolset based on the TTCN-3 scripting language, that is used for functional testing of communication systems. The logger was written in C++.

Pit3

2011 January – 2015 May

I was the main developer of Pit3, a log visualization tool widely used at Ericsson. The application is written in Scala and uses JFreeChart as its graph library. It is able to concurrently parse a variety of in-house log-formats used by Ericsson, and render data in real-time. The program has some unique features for interactively exploring and working with a big set of time-series data. It has effective solutions to handle the memory consumption of the JVM, while at the same time using high-level functional data-structures and rich types in Scala.

Erlang to C

2010 June – 2010 September

I ported an Erlang library to C at Ericsson. The goal was to increase the performance, but also to explore the ability to reload NIFs (Erlang functions implemented in C) in an Erlang system during run-time.

Examined ETS in Erlang

2010 March – 2011 January

I explored the memory consumption of data stored in ETS-tables at Ericsson. The work resulted in a proposal for improvement to OTP, the main developers of Erlang. OTP implemented this change, and it is currently a part of the current OTP version.

Hobby Projects

deskel

2016 April – 2016 May

A multiplexer for Emacs desktops. Inspired by gnu screen and tmux. I applied Test-Driven Development by building a simple test environment that runs tests in an other Emacs instance, and communicates with the main Emacs I am developing in.

https://github.com/andrejlamov/deskel

portenv

2016 January – 2016 February

Portable environment based on Arch Linux. Portenv enables the usage of the package manager Pacman on any Linux host, by running a minimal Arch Linux distribution and a fake-root user in the home directory.

https://github.com/andrejlamov/portenv

isolol

2015 December – 2016 January

Fun with isometric perspective and canvas in JavaScript.

http://andrejlamov.github.io/isolol/

Worklog

2015 May – 2015 September

A prototype web-application for reporting time and assigning tasks. It is designed to be modular and is a real-time multi-user system. It uses web-sockets for real-time communication, and has a REST API and a publish-subscribe system, both reachable through web-sockets and GET and POST-requests.

you-can-call-me-cal

2015 March – 2015 April

A prototype of a calendar visualization written in d3.js. The events in the calendar are packed to take up as little space as possible.

http://andrejlamov.github.io/you_can_call_me_cal/

cursed-tetris

2015 January – 2015 February

Tetris written in C using the library ncurses.

https://github.com/andrejlamov/cursed-tetris

GitStore

2014 July – 2015 August

A prototype of a version-controlled database based on git, using git's plumbing commands. It was implemented with bash and node.js.

Node-in-a-node

2014 June – 2014 July

A proxy node.js server that is able to start other server applications. Node-in-a-node can start a specific version of the application which is passed to the proxy via url. Note that Node-in-a-node can start itself at a given version, hence the name.

mylxpanel

2014 May – 2014 June

I modified lxpanel, the main panel used in the desktop environment LXDE written in C, and used it with XMonad.

https://github.com/andrejlamov/mylxpanel/commits/taskbar

puzzle

2014 March – 2014 April The A-Star algorithm solving the n-puzzle problem, visualized with d3.js.

http://andrejlamov.github.io/puzzle/

TrunkBin

2011 September – 2011 October

A small Erlang program that converts a truncated binary to a term.

https://github.com/andrejlamov/TrunkBin

Languages

Fluent in Swedish, English and Russian.