Curriculum Vitae
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.
- 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.
- isolol
2015 December – 2016 January
Fun with isometric perspective and canvas in JavaScript.
- 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.
- cursed-tetris
2015 January – 2015 February
Tetris written in C using the library ncurses.
- 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.
- puzzle
2014 March – 2014 April The A-Star algorithm solving the n-puzzle problem, visualized with d3.js.
- TrunkBin
2011 September – 2011 October
A small Erlang program that converts a truncated binary to a term.
Languages
Fluent in Swedish, English and Russian.