Jakub Vrana - Curriculum Vitae
- School of Computer Science, Charles University, Prague (MFF UK) - alumni
9/1999 Bachelor's degree
2/2003 Master's degree, specialization: Database systems, Linguistics
- Diploma work: Restoration of Diacritics in the Czech Language (PHP, C, VBA Word), 2003
People in the Czech Republic write without diacritics mainly in e-mails. Restoration is quite difficult because there are many ambiguities. I used the EM Algorithm for balancing unigrams, bigrams and trigrams and the Viterbi algorithm for finding the most probable sentences. Results are quite usable and the web interface helps with fixing errors - uncertain words are shown in a different color. The core is written in C (for speed), web interface in PHP, there is also a simplified version for MS Word.
- Google - Software Engineer, Senior Software Engineer (promoted 10/2016), 8/2013 - present day
- Gigwalk - Senior Software Engineer (PHP, MySQL, ElasticSearch), 4/2013 - 7/2013
- Facebook - Software Engineer, 10/2011 - 3/2013
Developer Tools - Phabricator (PHP, MySQL)
Several improvements to a code collaboration tool: unbreakable XSS safety, localization framework, asynchronous and relative SQL queries, detection of copied code, opening files in local editor, background linting and testing, lint caching, Mercurial and git-svn improvements, ElasticSearch.
- Centrum Holdings - Python and PHP programmer Sítko.cz (Django, OpenSocial - Shindig), Amplion.cz (Nette Framework, NotORM), 4/2008 - 8/2011
- Athos Travel - presentation, administration and orders system for incoming travel agency in several cities (multilingual pages, search engine optimization, HTMLtmpl, PHP, MySQL+replication), cooperation with Booking.com through XML interface (web services), 12/2004 - 3/2008
- European Network Company - member of a team developing web applications (PHP, MySQL) - e.g. Návštěvnost.cz (comprehensive web statistics) or RegistrujWeb (semi-automatic registration to the search engines, automatic inspection of web pages accessibility for search engines, disabled people and alternative browsers), 3/2003 - 11/2004
- Talks and Teaching:
WebExpo - Code Reviews with Phabricator (9/2013, English talk)
Devel - Experience from programming at Facebook (7/2012)
WebExpo - Ajaxification (9/2011)
O'Reilly MySQL Conference - Replace phpMyAdmin with Something Better (4/2011, English talk)
OSI Days - NotORM Presentation, Adminer Editor Presentation, Open Source Databases Panel (9/2010, English talks)
WebExpo - Scalability, optimization and backup of MySQL database (10/2008)
MySQL 5 Mastery - expert correction of the Czech translation (11/2006)
IT Underground Conference - Basics of PHP Security (2/2006, English talk)
MFF UK - HTML and PHP seminars with couple of lectures (2000 - 2004), Internet course (2004 - 2008)
VOŠIS - semester course Advanced Internet Applications (2004 - 2005)
- Guide of Private Trainings (4/2006 - 9/2011)
Security of PHP Applications (own course)
Design and Usage of MySQL Database (own course)
Library jQuery and AJAX in Practice (own course)
Web Applications Performance (own course)
Configuration and Performance of MySQL (own course)
Introduction to PHP (Root.cz Academy)
PHP 5 Programming (Root.cz Academy)
PHP for Advanced (TrainTime)
Clients list includes: Internet BillBoard, Telefónica O2, PricewaterhouseCoopers, Vltava-Labe-Press, ČVUT, Univerzita Karlova, Kasa.cz, Seznam.cz, Volksbank, AutoCont, Kerio, NetCentrum, Patro.cz, GTS Novera, Military Academy, Fortuna, Symbio, Czech Television, Czech Radio, Kooperativa Insurances, GE Money, LMC and others.
Projects of Mine
- Adminer - Database management in a single PHP file (PHP, MySQL), 2007 - present day
Powerful web database management console packed in one compact file (formerly phpMinAdmin). Finalist of SourceForge.net 2008 Community Choice Awards, nominee of the Czech Open Source survey in category Software of the year 2008.
- NotORM (PHP), 2010 - 2014
Library for simple reading data from database with excellent support of table relationships.
Because syntax highlighting to HTML produces a long output then it is better to accomplish it on the client side. Syntax highlighting of web applications source code is a very complex task as five languages (HTML, CSS, JS, PHP and SQL) are embedded into each other. JUSH uniquely support this embedding and also adds links to the documentation of all languages.
- PHP triky - weblog about elegant programming in PHP for moderately advanced (PHP, MySQL), 2/2005 - present day
Programming language PHP is very easy to learn so it is used by several inexperienced novices. Over 500 articles about PHP on this server try tu educate how to program in PHP correct way with the aspect to the web applications. It also reveals often unknown parts of the language. Winner of the Czech Open Source survey in category Blog of the year 2008 and 2009.
- MySMS.cz - web interface for paid SMS sending (C, PHP, MySQL, GSM, security), 2003 - 2006
My cellular operator cancelled its web interface for SMS sending in 2003 so I built my own. I bought a GSM modem, customized my friend's low-level interface for communication with it, opened an account in a bank and programmed the web interface. There was a lack of time, so everything was done in about three weeks. As it deals with money, security was very important - I utilized HTTPS, client-side certificates and secure logging even through HTTP (challenge - response).
- Matfyz.cz - web and e-mail aliases for MFF UK students (PHP, MySQL, qmail, Apache), 2001 - 2014
When I came to the school, I got "nice" e-mail address firstname.lastname@example.org and web pages at http://www.ms.mff.cuni.cz/~jvra6670/. Nobody could remember it so I decided to establish a server for the e-mail and web aliases for all MFF UK students. It's quite popular, there are over 2000 aliases nowadays (there are about 3000 students on the school).
- Čtyřka - card game (Delphi), 1998 - 2000
It was a semester project originally and I decided to work on it a little bit more to be able to sell it. The most interesting part is the playing algorithm based on the rules used also by humans, so it's not the usual brute force approach. Good customizable environment and the network game are essential. It's shareware with 10,000 installations and more than 600 paying customers.
Participation on Open-source Projects
- PHP Manual - listed as one of eight current authors of the English PHP manual, work on the Czech version of manual (Docbook), 12/2003 - 5/2013
- Nette Framework - contributions to the database layer, security, templating and testing (PHP), 3/2009 - 8/2011
- SciTE - several contributions to the open source editor (C++), translation to Czech, 12/2001 - 12/2004
- PHP, Nette Framework, security issues
- SQL, database design, replication
- Git, Code review
- Natural languages: Czech, English (written, spoken), Slovak (passive), Russian (partly)
Published Books and Articles
- Book 1001 Tips and Tricks for PHP (Czech) - 456 printed pages of my web applications development know-how, 2010
- the Month of PHP Security: Variable initialization in PHP (5/2010), Context-aware HTML escaping (5/2010)
- php|architect: Architecture of Adminer (8/2009), Storing Multilingual Records in the MySQL Database (4/2009)
- Zdroják (Czech): Doctrine 2 and NotORM - videotutorial (1/2011), Elegant databases in PHP with NotORM (5/2010), phpMyAdmin VS Adminer (1/2010)
- Root.cz (Czech): Export to Open XML in PHP (2/2007), OpenSearch Searching (11/2006), Secure Users Login (4/2006), AJAX (10/2005), PHP Window Series (3/2005 - 8/2007), How to Show a Banner on a Secured Web Page (12/2003), Usage of Database Indexes (7/2003)
- Others (Czech):
Google Code Jam 2008 Series (Programujte.com, 8/2008),
PHP applications security (Crypto-World, 6/2008),
Delphi for PHP Review (Connect, 6/2007)