Curriculum Vitae



Luka Napotnik
Software Developer

About

Always ready for new challenges and willing to experiment, learn and help others. I am generally a pragmatist where I believe there's always "the right tool for the right job". An open-source advocate at heart and know my way around the Linux operating system and Linux programming. I have a passion for computers and science & technology in general.

Skills

Architecture design

  • Scalability,
  • abstractions and encapsulations,
  • project implementation:
    • release and feature planning,
    • documentation system,
  • designing API.

Team work

  • review-based programming,
  • team leadership: task scheduling and assignment, setting time frames,
  • helping peers: with my experience, systems knowledge or design decisions,
  • working with various versioning control systems (VCS), mostly with git.

Programming techniques

  • object-oriented design,
  • debugging techniques,
  • concurrent programming,
  • test-driven programming,
  • practical knowledge,
  • TCP/IP protocol design and implementation,
  • micro-service design and inter-process communication,
  • auditing system and error reporting,
  • various UNIX/POSIX tool,
  • familiar with various work-flows that work
  • great with distributed VCS

Service reliability

  • managing Kubernetes clusters,
  • managing Google Cloud infrastructure,
  • Docker container deployment and administration,
  • telemetry tracking and alarming using Fluentd, Grafana and telegraf.

Experience

[2007 - present] Platform Developer

Position: Lead Platform Developer

Primarily developing platform software for V-Tablet which is an in-house built tablet that uses electronic paper technology for displaying content that the software pre-renders and optimizes. The content is later sent to the device under a proprietary network protocol which I co-designed.

Other work include:

  • various devops tasks (deploying and updating remote software, system administration),
  • writing helper utilities for internal use,
  • tier 3 customer support,
  • project lead.

Programming Languages

  • Pragmatist: "right tool for the right job",
  • Go: over 4 years of experience, proficient knowledge,
  • C over 5 years of experience, proficient knowledge,
  • C++: basic knowledge,
  • Python : basic knowledge,
  • ECMAScript: basic knowledge,
  • GNU Awk: less than one year, knowledge to process/manipulate large text files,
  • know my way with Bash scripting,
  • knowledge of "lesser" languages: HTML/CSS,
  • various libraries: Gtk+ programming, socket programming.

Activities

  • Ubuntu Release Party guest speaker (twice) with presentations explaining new desktop features.
  • Guest speaker for WebCampLj 2009 where I talked about how Visionect d.o.o. is using the WebKit engine for building a render farm.
  • Ljubljana Golang Meetup:
    • [December 2014] Guest speaker on the first meetup: talk about my experiences with programming in Go, practical advises and tricks and experiences when I was visiting the Go Conference in Paris in February 2014.
    • [January 2015] Organizer and speaker of the second meetup: talk about how Visionect d.o.o. migrated its software stack from C to Go and the deployment experiences that followed.
    • [March 2015] Organizer of the third meetup.
    • [March 2016] speaker at the fourth meetup: 'A simple way to migrate configuration files', talk about an idea how to automatically migrate configuration files if the user upgrade your software,
  • Visited FOSDEM 2014 in Brussels.
  • Visited the first Go conference in Europe - dotGo in October 2014.

Education

  • Years 2002 to 2007: technical middle school, posessing a formal professional title as Electro-technition of Computing.
  • Years 2007 to 2009: unfinished Bachelors degree, attended Faculty of Computer and Information Science at University of Ljubljana, Slovenia.