I've been a software developer for over 16 years. I'm a strong proponent of Open Source, TDD and humane work environments. Lately I've been focusing more on front-end and web technologies, but I always keep an eye out for interesting projects I can sink my teeth into.
I was born in 1983 in Ljubljana, Slovenia. Most recently I've lived in San Francisco where I worked for Celtra as Lead Software Developer working primarily on the ad runtime that powers creative display on browsers of all shapes and sizes. I'm taking some time off to figure out what my next challenge will be while moving back to Europe.
You can read a detailed account of my professional experience on my LinkedIn profile. If you'd like a more prosaic overview of my life, then by all means, grab yourself a hot beverage, get comfortable and read on.
This site is designed with comfort in mind, so you should have no trouble reading this on any modern phone, tablet or your desktop computer. It should also load fairly quickly (the CSS and JS are only 5kB unminified!) on any type of network. Responsive web design rocks.
Through the years I've worked on a number of different projects, slowly working my way up from implementing static website content for clients to leading development on applications that run billions of impressions on web devices every month while making sure that the error rate is kept well below 1%.
My interests drew me heavily towards user interfaces and multimedia experiences, which led me to explore game development as a way of drawing on my interdisciplinary knowledge of physics, mathematics and other sciences. It's also a fun and engaging way to building skills.
I've been involved in several theatrical productions and performances over the years, most of them in the form of improv theater sports as a performer, sound & lights engineer and MC. I've also produced several long-form improv shows and captained three teams, one of which won the national improv championship in 2009.
I also held Microsoft and Adobe Certified Instructor status during my stint as an instructor at Kompas Xnet where I held regular classes on the topics of graphics, UI, web design and .NET software development. I was also the principal graphics designer within the company, having worked on designing and printing the company's quarterly booklets and redesigning their company website.
Professionally I've spent most of my time working on user-facing projects, the vast majority of which are implemented using web technologies. To keep ahead of the curve, I've invested a significant amount of time researching, testing and implementing new and upcoming technolgies.
I've spent a great deal of time working on legacy and long-lived projects. In this capacity I've planned, supervised and executed refactoring and migration to newer and better software. This experience has reinforced the importance of test-driven development for me when dealing with regressions during refactoring and analysis of any complex system.
Having been exposed to so many different computer languages and environments has also given me a broader insight into API and language design. It has instilled a sense of fitness for a given language to a particular problem set. It's not enough to know how to do it with the tools you have, you have to know which tool to pick up to finish the job.
I believe that no knowledge gained is worthless if you're able to apply it, however esoteric it may seem. I remain active in my free time to pursue interests outside of software development. Being a generalist, I try to dip my toes in as many different topics as possible to get a more holistic experience, which led me to try my hand at playing musical instruments and performing on stage.
In my youth, I've had formal piano lessons for about 9 years, and I decided to learn the guitar on my own afterwards. The latter did result in being technically capable of playing, but I haven't really achieved any significant skill beyond reading tablatures and a couple of specific solos.
In theater, I've been involved with many troupes and productions, filling various roles as performer, director, sound & lighting engineer and coach. It gave me the opportunity to explore all the auxiliary activities involved in the production, marketing and performance of such events.
Words matter; communication is key in effective project management, development, teamwork, business, and establishing relationships. Being a polyglot also enables you to practice empathy and being able to assume different viewpoints when considering your options. It gives you the freedom to express yourself much more richly and precisely than being bound by a single cultural and linguistic frame of mind.
Also, it's so much fun switching back and forth. You should try it some time! :)
Open Source Projects
In addition to my professional, closed-source work, I've remained active in the open source community and I've released a number of projects over the years. I've listed a few notable examples.
A drop-in script to help with implementing and debugging Microdata for use in content markup and SEO. It uses jQuery as a utility for traversing and manipulating the DOM, with a carefully curated list of schemas to validate against.
The project's code is self-documenting for easy access and customization. Several people have made contributions to the project because of the straightforward structure, which was one of the considerations I've had in mind when designing the code.
This fun little game was a collaborative project with Marko Novak during the onGameStart 2012 conference in Warsaw. It was coded and designed from scratch in between sessions. I continued working on the code and adding inline documentation after the event to make the code readable and understandable.
I've used this example in my optimization classes to teach methods that help identify performance bottlenecks and it has served as a base for development of several other independent games.
I released a jQuery tool to help authors build simple and lightweight components that feature template customization and semantic event handling without the need to modify code. It was extracted from production code I developed to solve a templating problem for a client's website.
The presentation (Slovene) was given at Spletne urice #6 in 2011. Fun fact: the Flickr API did not flag some images as adult content during the live demo, so I ended up showing a couple of large dongs on the big screen.
This was a tool I built in 2012 and released in 2014 to enable designers to generate CSS animations that translate objects along a given Bézier curve.
The underlying code is modular and comprehensively documented, enabling anyone to use the base code in order to generate CSS blocks dynamically for real-time animation. It has no external dependencies and has a 5kB footprint when minified without gzip.
Talks, Webcasts and Written Works
Responsive Web Applications
Presented in December 2011 at Kiberpipa, the talk explores the vast range of dimensions and input devices available to the modern web platform.
This is a two-part presentation I gave at Celtra in 2011 to my fellow developers when we migrated the entire product code base from Subversion to Git. I helped drive the migration and directly supported the team during the transition.
The slide decks have since been used extensively when onboarding new developers, and I've shared them publicly to help others in their transition.
I gave this talk in March 2014 in front of a packed auditorium at University of Ljubljana's Computer and Information Science Faculty as part of Do nosu v blatu. The talk was a deep dive session that dealt with real-world performance bottleneck investigation for real-time graphics in desktop and mobile web browsers.
I single-handedly organized a meetup called H5C3 as a free event with over 60 attendees and held at Microsoft Slovenia headquarters in October 2010. I also gave a talk on applying HTML5 and CSS3 in practice using existing technologies at the time.
It was a worthwhile experience which gave me crucial insight into organizing events, coordinating speakers and venues, effective communication and the value of not working yourself into a bloody pulp. Which I totally did.
Out of frustration with the current state of WebKit I decided to document some of the nastier bugs I came across working on different versions of the browser engine in various mobile devices. The sarcastic tone of the posts illustrates the level of frustration one experiences when being forced to deal with these kinds of problems.
I regret nothing. It is also defunct, as I gave up trying to keep up with the number of curiosities I unearthed.
My now-defunct blog is the product of years of long-form blogging, back when blogging was The Thing. It was displaced in favor of more short-hand social networks, and is something I would like to get back to some day.
The blog documents all of my projects, covering a wide range of topics and interests. It also represents a vertical slice through my life, going back to summer 2006.
While I was still an active participant in Symfony development I kept a blog documenting some of the interesting parts of applying Symfony in practice. The blog was short lived and soon out of date as I couldn't keep up with the rapid pace of changes in the Symfony code base at the time.
Multimedia Projects and Performances
Kuli Muli 2009/10 Season Opening
For the opening of the 2009/10 improv season we decided to do a video recap of last year's events within our troupe and create a parody video based on a popular 90s TV series. You'll recognize it when you see it.
The entire production was an improvised team effort, filmed in a day on location near Kranj. I was responsible for video editing; I used Adobe Premiere Pro to do the job. It was my first project involving non-trivial video editing, which ended up taking about 2 days of severe crunching.
A follow up to our previous intro video, we decided to up the ante and make a video based on the Annoying Orange series that went viral at the time.
Everything was brainstormed and filmed in a day. I got to work on the individual scenes in Adobe AfterEffects and spliced together using Premiere Pro. As with the previous project, this was my first time working with special effects tools and compositing to achieve the superposition of faces onto fruit. While the effect may not be perfect, it was acceptable within the short production time of 2 days.
As part of our warmup introduction performances, we decided to enact a Daft Punk inspired music video comprised of a number of different music tracks. In order to do that, we designed and fabricated the helmet I am wearing in the video, along with a microcontroller that was fed a stream of animation frames from a netbook I was wearing underneath the leather coat via USB.
We won the match and went on to win the finals that year.
During my time performing in improv, we decided to form a spin-off group called Kivi Koktejl to explore long-form improv performances in a more open setting.
Our proudest achievement was the premiere production of Roadtrip in March 2007. We made up the entire story based on audience cues with no premade story arcs. We did all the production work ourselves with the administrative help from Društvo MIK. I was tasked with designing our visual brand and posters. We all performed on stage to make the magic happen. And thankfully, it did.
An impromptu performance
While performing as part of the Artizani group at a festival in the Czech Republic in April 2007 we were asked to entertain the other groups at a social gathering. We came up with the idea of using scenes from all of the participating shows in a mock lecture given by a nutty professor (me) and accepting topic suggestions from the public.
It was a fun experience performing a combination of physical and character comedy in front of an audience not very used to the English language (hence the impromptu translator). The beer is nice there, too.
In my time performing with the Artizani group I also helped produce and perform in a reimagining of the Wizard of Oz. A heavily visual and silent performance was set against a backdrop of drape fixtures and lighting used by the performers to produce scene transitions and provide context to the environment. An evocative soundtrack was complementary to the stark and minimalistic setup.