Stanislav Arnaudov

About

Formal CV

A PDF of my real resume.

My character

I was born a human and I’m supposed to live on the planet till my body gives up and it’s no longer suitable for sustaining the social construct that one would call “life”… or at least I am said so. I reserve my right to have speculations about this whole “dying”-thing. I popped into existence in the almost ex-soviet republic of Bulgaria where I’ve spent a good portion of my development into a fully-fledged and normally functioning carbon unit. After almost a fifth of a century there I’ve decided to change my location to the vicinity of central Europe. Germany to be more precise. Here I am currently studying Computer Science at the Karlsruer Institut für Technologie (KIT). I quite like it here as for now it’s the place that allows me to extend my skill set, knowledge base and general level of awesomeness through learning about how computers work, how to tell them what you want them to do and other fun things about the surrounding world.

Relevant interests of choice

Tip

Read Update 1 for clarification on my current standings about me.

As previously implied, the delusion I’ve chosen to believe in is that I’ll do CS (Computer Science) related things till the rest of my conscious earth-life. With the years (I am not that old, just obnoxious) I’ve developed an interest in some narrower areas in the computer world.

  1. A special place in my heard is dedicated to Artificial Intelligence. No, not only the Machine Learning parts. The whole thing! The things in Artifcial Intelligence: A modern approach. Not only the parts that are rough and massive number-crunching by the CPU cores but also the parts that are plain old beauty. The parts that model the human brain. This quote summarises my views on AI nicely.

    Algorithms, enabled by constraints, exposed by representations that support models, targeted at thinking, perception, and action. – Patrick Winston

    I believe that this section deserves a subsection for its own! So, over the years I’ve acquired tastes for:

    • Computer vision and image processing and evaluation - I’ve had several times to write my own computer vision/image processing library in java at the time (but then some horrible events happened to my codebase so sorry, can’t back this statement with code 😥 ).
    • Machine Learning. Different types of perceptrons, neural networks, regression models, classification models, trees, support vector machines, deep networks… etc. Many of those I’ve implemented once for myself and the sake of learning and understanding how everything works
    • Linear Programming - while most people hated the course where this thing is learned at UNI, I kinda loved it. Simplex can be quite the gem. Sadly, I am yet to implement it for myself.
    • Generic Algorithms
    • Natural Language Processing
    • Autonomous agents and group behaviors - Man, this book (The nature of code) blew me away in unimaginable ways. Not exactly AI, but still!
    • Statistical Inference - Probability theory can also be a beautiful thing if you manage to push past the “statistics”.

    As much as I loved AI, I only had the opportunity to have the time and necessity to learn about all the cool tools that exist in the python ecosystem that enable you to make awesome machine learning and AI applications. Libraries and tool-kits as numpy, SciKit-learn, Tensorflow, Keras, Eward… etc.

  2. Computer Graphics/Game engine design - as every naive young boy at one point in my life I wanted to make games for a living. Unfortunately, I was also kinda smart enough to start doing something even thou I had no idea what was I doing. The first engines that I’ve “used” were Unity, Unreal Engine 3 and… Macromedia Studio 8. Myeah, that last one is a thing that existed and it’s not game engine at all but hell, I was pretty much making a flash game on it. Over the years my focus shifted and transitioned to programming but my interest in games stayed. Thanks to that, at some point I picked up a little OpenGL, a little general 2D/3D Rendering and concepts and a good amount of making a rudimentary engine that can run a “game”. At university, I took a course in Computer Graphics where I learned a whole lot of other interesting topics such as ray tracing, realistic image generation, seep-up structures, colors, and others. As far as I’m concerned - I still find everything in the subject incredibly exciting.

  3. EMACS! EMACS is everything. Emacs is an operating system, lacking a decent text editor. At my first job, I saw my supervisor using it and then a guy told me not to touch that thing ever. But I did! And I hated it! It was so difficult and unintuitive. Then I forced myself to use it because every other editor/IDE was a pain to use when programming in C++. I spend a good couple of days configuring Emacs and… I made it usable. Then I started investing more and more and it became second nature. An extension of my hands, if you will. And now I am writing this blog with Emacs. Be sure to check out my configuration file here.

  4. Web Development - it’s one of the things where you learn even that you don’t want. I am not proud of myself with this one but hey, it impresses the employers. I have my fair share with AnuglarJS, VueJS, Bootstrap, Foundation, JQuery, ExpressJS, and other little and big JavaScript libraries. On the back-end side, a have a little bit of experience with Flask

  5. Some small interests I’ve picked in recent times

    • Operating systems in general, Linux in general (Debian for life!) - It really help to know what is happening on OS-level when writing c++.
    • CPU-Design and what happens in the computer of relatively low level - a lot of effects that happen on a transistor-ish level are exploitable in code, if you know they exist, of course.
    • Compiler Design - that one course at uni! Compilers are technological marvels, lexers and parser are awesome.
    • Functions optimization, Non-linear optimization, Computational linear algebra, Numerical analysis. In my defense being a bigger nerd doesn’t really hurt your career.
    • Lambda calculus - a computational model that has a completely different way of reasoning about things. I love it. I fund the whole idea interesting, “fresh”, mind-boggling and…..just different and unconventional.

Update 1

Since about the end of 2020, I now primarily deal with real-time computer graphics and game development. There are also some other major things that have changed in my views on software development and I like to sum them up here as a soft amendment of my words in the previous section. In no particular order:

  • As I said at the beginning of the section, I now consider myself as “rendering engineer” in the context of the “game development industry”. Rendering has been a long-standing interest of mine and around the end of 2020 I got the chance to work in a company where this particular passion of mine was reignited. I never thought I would be working on computer graphics up that point so I never really pursued it by then (I thought I want to stay in Machine Learning/AI). Another more personal factor was me stumbling across Jonathan Blow and Casey Muratori and their ideas about performance-oriented good software that does not cause pain to the end user (as most software does these days). Now there is no doubt in my mind that my path forward includes real-time rendering in games

  • My interest in game development/game design has developed itself into something more than “I think about this sometimes”. Now I think about these things all of the time and I want to pursue a career in game development.

  • My views on how software should be developed, what should we expect from the final result, and how we should get there have shifted somewhat radically. I now much more emphasis on performance and overall quality is given to the end user. You can read more about that in my software philosophy post.

  • For the most part, I try to be minimalist in my development – I strive to use fewer tools, less software, fewer libraries, and less everything. This is again touched upon in the software philosophy post. To sum it up quickly – in my experience using more (of anything, software, technologies, third-party tools, libraries) always brings more problems while being unclear whether the problems that are solved are actual problems at all. By now my patience for dealing with all that complexity is paying off so I’ve decided to put conscious effort into removing dependencies on complexity in my software live.

  • I now put MUCH less emphasis on Emacs. As with most of the other software, Emacs has its flaws and I would gladly trade it for something that gives me the features that I want while having good performance (unlike Emacs). And no, I do not want to touch Visual Studio Code.

Supported Languages

  • C/C++
  • Java, Python,
  • HTML/CSS/JavaScript
  • Haskell, Prolog, ELisp
  • PHP, Scala, Processing

Expertise (#expertise)

  • Graphics Programming in the context of Game Developement
  • Performance oriented software design and implementaion
  • Game Engines Design and Implementation
  • Low level optimization (SSE2/SSE3/SSE4/AVX)
  • Data-Oriented Design
  • Interdisciplinary attitude
  • Working based on first principles
  • Ability to quickly pickup learn technologies/libraries/product implementation

Technologies

  • OpenGL, DirectX11, DirectX12, Vulkan, Metal, PS4/PS5, Xbox
  • Unreal Engine, Unity
  • Visual Studio, MSBuild
  • Cmake, make, g++, Robot Operating System(ROS), RabbitMQ, OpenCV
  • Tensorflow, SciKit-learn, Pandas, Jupytor, PyTorch
  • JavaFX/Java-Swing, JUnit, Maven
  • Frontend(AngularJS, VueJS), Backend(NodeJS, Express, Flask), Websockets, Karma, Jasmine, SQL
  • LaTeX, Emacs Org-mode, UML
  • git, JIRA

Current work

Previous work

  • Worked as a research assistant at Fraunhofer IOSB. I deal mainly with intelligent systems for detection and control in industrial setting.

  • Took part in a research-oriented practical course at my University. The goal was to write a research paper and publish it in two semesters. My work was dealing with the application of neural networks in the context of numerical simulations.

  • My Bachelor thesis had to do with Machine Learning, stochastic probability models (Bayesian Neural Networks and Mixture of Gaussian Process Experts) and data from pollution sensors. One of my supervisors currently working in HITS.

  • At Uni I took a Practical Course in Computational Geometry about drawing curves (with BSplines) in the plane, doing tricks with them (finding a parallel curve, creating a closed curve, interpolating curve) and extending those to surfaces(tensor product surfaces)

  • A practical course in software development - I and five other students, developing a Software product (a Web App) following the waterfall methodology (waterfall can be the better choice when you are new to everything)

  • Algorithms Teaching assistant in KIT - teaching basic data structures, algorithms for sorting, graphs and spanning trees, complexity, algorithm analysis, and algorithm engineering. Also, again, checking homework.

  • Linear Algebra Teaching assistant in KIT - teaching a bunch of people about basic mathematical notation, group theory, rings, bodies, vector spaces, and some other things. Also checking the homework of said people.