Tsvetan Zhivkov Robot enthusiast and tinkerer

Skills

For a formal and more complete review of my skills and experience please refer to my CV. This section is split into programming languages, software frameworks and operating systems that I am familiar with. I have split my level of expertise in 4 stages:

  • Beginner – I understand the fundamentals and have previously used/performed basic operations.
  • Intermediate – I understand some advanced concepts and feel comfortable using/performing daily tasks, while learning and advancing my knowledge.
  • Advanced – I understand advanced concepts, I can teach/assist others in the topic and I can work on novel concepts.
  • Expert – I understand a wide variaty of advanced concepts, I can teach others in the topic and I can work on novel concepts.

Programming Languages

Python (Expert)

I am self-taught in Python 2.7.X (since approx. 2015). After I finished my PhD (2020), I made a permanent switch to Python 3. I use Python daily for data visualisation, analysis and code development. Python is forever evolving at an unprecedented rate, even more than other popular programming languages. Therefore, it would be difficult for anyone to claim that they are truly an expert. I want to make it clear that I do not know everything there is to know about Python, however with the vast knowledge I do have of Python and the many cutting edge libraries I have used (and some that I have written), I believe that I am as close as one can be to an Expert.

C++ (Advanced)

I was taught C++ at the University of Liverpool and further developed my skills in my own time. C++ is my original daily programming language of choice. However, I do not use it as frequently as I used to and therefore I am not as up-to-date as I used to be with the state and advancements of the language. Moreover, I feel comfortable using and advancing in C++ if my job role requires it.

MATLAB (Advanced)

I was taught the fundamentals of MATLAB at the University of Liverpool. Furthermore, I specifically researched MATLAB application development, which I used in my 2nd year university project, and I taught a MATLAB based (Computer Vision) module at King’s College London University. I feel comfortable advancing my knowledge and teaching specific concepts in MATLAB.

JAVA (Intermediate)

I was taught JAVA at the University of Liverpool and I also taught it during my PhD at King’s College London University as a teaching assitant. I feel comfortable teaching the fundamentals and performing advanced programming. However, I do not use it frequently and I do not keep up-to-date with the state of the language.

Objective-C (Intermediate)

I am self-taught in Objective-C, mainly during a summer internship at the University of Liverpool. I have a good grasp of the fundamentals and some specific advanced programming techniques.

MYSQL (Intermediate)

I was taught MySQL and database techniques during my undergraduate degree. Moreover, I taught a databases module, that involved MySQL and SQLite, at King’s College London University.

JavaScript/HTML (Beginner)

Self-taught. I have good fundamental knowledge and can perform basic scripting.

Swift (Beginner)

Self-taught. As a tech hobbyist, I occasionally write basic iOS apps to test specific functions on the iPhone and Apple watch.

Software Frameworks

ROS (Expert)

The Robot Operating System is an open source framework that contains a collection of tools and packages that I learned to use on a daily bases for my PhD research. ROS is invaluable for the development and prototyping of robotic systems software.

Latex (Expert)

My choice of typesetting/word-processing tool for producing high-quality scientific research papers.

Git (Advanced/Expert)

As my programming projects’ complexity and size grew I choose to use version-control. Git was an obvious choice, as one of the industry standards when it comes to software development, engineering and management tool.

Operating Systems

Linux - Ubuntu (Expert)

The operating system I use daily for work and research. I have excellent understanding of the desktop environment, file system and terminal power user tools. I feel comfortable customising and expanding the OS to my personal requirements.

macOS X (Advanced)

The primary OS I use for writing my research documents and presentations. I have good understanding of the file system and knowledge of certain terminal power user tools. I feel comfortable customisng and expanding the OS to my personal requirements.

Windows 8/10 (Advanced)

The standard OS I use for occasional work and research that require specific GPU compute tasks, which are unsupported by Linux. I have good understanding of the file system and knowledge of certain command-line power user tools.

Debian (Intermediate)

Debian is a different flavour of Linux compared to Ubuntu. I have previously setup debian for a variaty of Raspberry Pi (mini-computer) models. My main use-case for debian is hobby projects.