Curriculum vitae

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(Organizational Skills)
Current revision (15:44, 3 June 2026) (edit) (undo)
(Personal Profile)
 
(52 intermediate revisions not shown.)
Line 1: Line 1:
 +
[[Image:GeeCON2024Portrait.jpg|thumb]]
 +
[[User:JaroslavTulach|Jaroslav Tulach]]
[[User:JaroslavTulach|Jaroslav Tulach]]
-
Town: [[wikipedia:Prague|Praha]], [[wikipedia:Czech Republic|Czech Republic]]
+
* [[wikipedia:Prague|Praha]], [[wikipedia:Czech Republic|Czech Republic]]
-
 
+
* Phone/[[wikipedia:WhatsApp|WhatsApp]]: +420 602 684 426
-
Phone: +420 602 684 426
+
* E-mail: jaroslav.tulach (at) [[APIDesign|apidesign]] (domain) org
-
 
+
* [[wikipedia:Discord|Discord]]: [https://discord.com/users/874973327020658698 jaroslavtulach]
-
email: jaroslav.tulach (at) [[APIDesign|apidesign]] (domain) org
+
-
work: jaroslav.tulach (at) oracle (domain) com
+
<!--
 +
work: jaroslav.tulach (at) enso (domain) org
 +
-->
=== Historical Summary ===
=== Historical Summary ===
Line 15: Line 18:
! Mission
! Mission
|-
|-
-
| 2015-?
+
| 2022-2026
-
| [[Oracle]]Labs. On a quest ([[TwoYearsWithTruffle|for two years]] and counting) to make the world's fastest [[VM]] via [[Graal]] and [[Truffle]].
+
| Yet another startup experience. Making [[Enso]] dynamic compiler stable, fast & robust in [[Enso2026|four thrilling years]].
 +
|-
 +
| 2015-2022
 +
| [[Oracle]]Labs. [[TwoYearsWithTruffle|Making]] the [[OtherGraalAdventures|world]]'s fastest [[VM]] via [[Graal]] and [[Truffle]]. Invented [[Insight]] and spiced [[OracleDB]] with [[PostMortemDebugging]] thanks to [[Insight|it]].
|-
|-
| 2010-2014
| 2010-2014
-
| [[NetBeans]] Platform architect at [[Oracle]]. Alignment with [[JDeveloper]]. [[netbeans:Html4Java|Synergy]] between [[Java]] and [[JavaScript]] - use [[netbeans:Html4Java|HTML]] for user interface of [[NetBeans]].
+
| [[NetBeans]] Platform architect at [[Oracle]]. Alignment with [[JDeveloper]]. [[Html4Java|Synergy]] between [[Java]] and [[JavaScript]]/[[Html4Java|HTML]].
|-
|-
| 1999-2010
| 1999-2010
Line 25: Line 31:
|-
|-
| 1997-1999
| 1997-1999
-
| Founder and initial architect of [[NetBeans]]
+
| Founder and initial architect of [[NetBeans]]. First ever startup in former communist bloc sold to Silicon Valley!
|-
|-
| 1995-1997
| 1995-1997
Line 37: Line 43:
=== Personal Profile ===
=== Personal Profile ===
-
[[NetBeans]] founder and initial architect who remained (after being acquired by [[Sun]]) with the project for next fifteen years. Passionate about leading teams into projects nobody thinks can succeed, overcoming all obstacles and bringing them into production:
+
[[NetBeans]] founder and initial architect who remained (after being acquired by [[Sun]]) with the project for next fifteen years in the corporate world. Then switched to slightly more academic environment by working for [[OracleLabs]] (yet still delivering production ready [[PostMortemDebugging]] into [[OracleDB]]). Just to enjoy hard working startup experience for one more time with [[Enso]].
 +
 
 +
Passionate about leading teams into projects nobody thinks can succeed, overcoming all obstacles and bringing them into production:
* [[NetBeans]] IDE - first IDE for [[Java]] written in [[Java]]
* [[NetBeans]] IDE - first IDE for [[Java]] written in [[Java]]
-
* [[NetBeans Platform]] - first [[Swing]] based modular application framework
+
* [[NetBeans Platform]] - the first [[Swing]] based [[NetBeans_Runtime_Container#Manifesto|modular application framework]]
* [[NetBeans]] performance - speeding [[NetBeans]] 6.1 [[startup]] by 60%, eliminating memory leaks, improving scalability
* [[NetBeans]] performance - speeding [[NetBeans]] 6.1 [[startup]] by 60%, eliminating memory leaks, improving scalability
* [[Netbinox]] - changing [[NetBeans]] architecture to support [[OSGi]] by creating the fastest [[OSGi]] framework on the planet
* [[Netbinox]] - changing [[NetBeans]] architecture to support [[OSGi]] by creating the fastest [[OSGi]] framework on the planet
* [[JDeveloper]] - rebasing years of development on top of [[NetBeans Platform]] to gain [[startup]] speed and share functionality
* [[JDeveloper]] - rebasing years of development on top of [[NetBeans Platform]] to gain [[startup]] speed and share functionality
-
* [[TwoYearsWithTruffle]] - bringing initial product (with a [[Java]] [[API]]) aspects to a research project
+
* Attempt to bring [[Java]] back to browser via my [[Bck2Brwsr]] (e.g. [[JVM]] transpiling to [[JavaScript]]) project.
 +
* Winning [[Media:DukeChoiceAward.jpg|Duke Choice Award]] for [[DukeScript]] project contributions (including [[Bck2Brwsr]] effort & co. like [[Kotlin]] API design of [https://dukescript.github.io/kt-mvvm/ kt-mvvm]).
 +
* Bringing initial ''product aspects'' to a research project by [[TwoYearsWithTruffle|designing Truffle polyglot API]] & co.
 +
* Polishing [[GraalVM]] to be closer to production - [[AOT]], [[OtherGraalAdventures|PGO, JNI]], [[NetBeans|tooling]] integrations
 +
* Invented [[GraalVM]] [[Insight]] and used it for [[PostMortemDebugging]] in the [[OracleDB]]
 +
* turned [[Enso]] into stable, fast, robust, and rock solid, production ready [[Enso2026|live coding environment]]
 +
* Realized [[Dual JVM]] mode for [[Java]] applications - starting blazingly fast (the [[AOT]] compiled code part) while still using [[HotSpot]] [[JVM]] then
-
Based on success of previous projects I decided to bring [[Java]] back to browser via my [[Bck2Brwsr]] (e.g. [[Java]] virtual machine in [[JavaScript]]) project. Things seem to work quite well, but [[I]] haven't found executive sponsor to build up the necessary momentum.
+
=== Publications & Presentations ===
-
=== Theoretical Work ===
+
[[TheAPIBook|Practical API Design]], Apress 2008 - the first book about [[API Design]] describing all details related to API design published way sooner than the term [[API]] was kidnapped by [[REST]] and [[JSON]] guys.
-
[[Media:Typing_in_terms_of_graphs.pdf|Typing in terms of graphs]] - master thesis at [[MatFyz]] describing type system similar to what later became [[Generics]] in [[Java]] with a unique, graph based terms.
+
[[Paradoxes|20 API Paradoxes]], Walrus 2012 - shorter, more strictly organized continuation/summary of [[TheAPIBook|Practical API Design]] book.
-
[[RangeDependenciesAnalysed|Proofs of NP-Completeness]] of various topics related to [[modularity]] with practical implications for anyone designing or using a module system.
+
[http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802 Rich Client Programming: Plugging into the NetBean Platform] - contributed few ''philosophical'' chapters to book about [[NetBeans Platform]].
-
=== Publications & Conferences ===
+
Regular speaker at [[JavaOne]] and other conferences ([[GeeCON]], [[GeekOut]], [[Language|JDD]], [[CurryOn]], [http://javadays.cz JavaDays]).
-
[http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802 Rich Client Programming: Plugging into the NetBean Platform] - contributed few ''philosophical'' chapters to book about [[NetBeans Platform]].
+
Teaching at [[Charles University]]'s [[MatFyz]] for few years (during [[OracleLabs]] employment). My [https://d3s.mff.cuni.cz/teaching/nswi176/ Practical Dynamic Compilation] course attracted few interns into [[OracleLabs]]. At least two of them turned into regular employees then. See [https://denik.xelfi.cz/o/Dynamick%C3%BDP%C5%99ekladPrakticky twenty hours of video (in Czech)]
-
[[TheAPIBook|Practical API Design]], Apress 2008 - the first book about [[API Design]] describing all details related to API design published way sooner than the term [[API]] was kidnapped by [[REST]] and [[JSON]] guys.
+
=== Theoretical Work ===
-
[[Paradoxes|20 API Paradoxes]], Walrus 2012 - shorter, more strictly organized continuation/summary of [[TheAPIBook|Practical API Design]] book.
+
[[Media:Typing_in_terms_of_graphs.pdf|Typing in terms of graphs]] - master thesis at [[MatFyz]] describing type system similar to what later became [[Generics]] in [[Java]]. The paper is using unique, graph based terminology.
-
Regular speaker at [[JavaOne]] and other conferences ([[GeeCON]], [[GeekOut]], [[Language|JDD]], [[CurryOn]]) and universities.
+
[[RangeDependenciesAnalysed|Proofs of NP-Completeness]] of various topics related to [[modularity]] with practical implications for anyone designing or using a module system.
=== Technical Skills ===
=== Technical Skills ===
-
* Able to use [[debugger]] to analyze behavior of own or any foreign system
+
* Able to use [[debugger]] to gain [[insight]] into behavior of own or any foreign system
-
* Typing (without looking at keyboard) and thinking fast, yet concluding slowly/carefully
+
* Usually (almost) the most productive developer in any team
 +
** Typing (without looking at keyboard) and thinking fast, yet concluding slowly/carefully
* Knowledge of classical languages (especially [[Java]], but also [[C]] & etc.), functional languages (like [[Haskell]]) and logical languages (e.g. [[Prolog]]).
* Knowledge of classical languages (especially [[Java]], but also [[C]] & etc.), functional languages (like [[Haskell]]) and logical languages (e.g. [[Prolog]]).
-
* Knowing how to implement any language and make it run fast
+
* Knowing how to implement any language and make it run fast - just like done with [[Enso]]
* Knowing a lot of about [[API Design]] and almost everything about [[API Design]] in [[Java]]
* Knowing a lot of about [[API Design]] and almost everything about [[API Design]] in [[Java]]
* Understanding general implications of [[modularity]] and how to [[MultiGitRepository|organize a project]] in a distributed fashion.
* Understanding general implications of [[modularity]] and how to [[MultiGitRepository|organize a project]] in a distributed fashion.
Line 75: Line 90:
=== Organizational Skills ===
=== Organizational Skills ===
-
* Designing process for [[netbeans:APIReviews|API Reviews]] which allowed [[NetBeans]] to design [[API]]s in a ''committee style'' and still keep consistency.
+
* Designing process for [[APIReviews|API Reviews]] which allowed [[NetBeans]] to design [[API]]s in a ''committee style'' and still keep consistency.
-
* Designing, advocating and implementing [[netbeans:HgParallelProjectIntegration|parallel integration]] which greatly improved productivity of [[NetBeans]] developer teams
+
* Designing, advocating and implementing [[HgParallelProjectIntegration|parallel integration]] which greatly improved productivity of [[NetBeans]] developer teams
* Enabling, promoting and advocating [https://openide.netbeans.org/tutorial/test-patterns.html test driven development] to increase quality of [[NetBeans]] code base
* Enabling, promoting and advocating [https://openide.netbeans.org/tutorial/test-patterns.html test driven development] to increase quality of [[NetBeans]] code base
* Founded [[OracleLabs]] subsidiary in Prague
* Founded [[OracleLabs]] subsidiary in Prague
Line 89: Line 104:
* English - fluent
* English - fluent
* Russian - can read
* Russian - can read
 +
* Polish - passive understanding
* German - survival level
* German - survival level
=== Spare Time Activities ===
=== Spare Time Activities ===
-
Skiing and showboarding and other sports. [[Bck2Brwsr]] [[VM]]. Various [[open source]] projects (mostly hosted on [https://github.com/jtulach/ GitHub], but also for example [[DXR3|contributed]] to [[Linux]] kernel driver).
+
Skiing and [[snowboard]]ing and other sports. [[Bck2Brwsr]] [[VM]]. Various [[open source]] projects (mostly hosted on [https://github.com/jtulach/ GitHub], but also for example [[DXR3|contributed]] to [[Linux]] kernel driver).

Current revision

Jaroslav Tulach


Contents

Historical Summary

Time Mission
2022-2026 Yet another startup experience. Making Enso dynamic compiler stable, fast & robust in four thrilling years.
2015-2022 OracleLabs. Making the world's fastest VM via Graal and Truffle. Invented Insight and spiced OracleDB with PostMortemDebugging thanks to it.
2010-2014 NetBeans Platform architect at Oracle. Alignment with JDeveloper. Synergy between Java and JavaScript/HTML.
1999-2010 NetBeans Platform architect at Sun Microsystems. Primary focus APIs, APIReviews, later Performance.
1997-1999 Founder and initial architect of NetBeans. First ever startup in former communist bloc sold to Silicon Valley!
1995-1997 Initial member of student team which started Xelfi which later turned into NetBeans
1992-1998 Master degree in computer science at MFF UK. Specialization: compilers and data structures.

Personal Profile

NetBeans founder and initial architect who remained (after being acquired by Sun) with the project for next fifteen years in the corporate world. Then switched to slightly more academic environment by working for OracleLabs (yet still delivering production ready PostMortemDebugging into OracleDB). Just to enjoy hard working startup experience for one more time with Enso.

Passionate about leading teams into projects nobody thinks can succeed, overcoming all obstacles and bringing them into production:

Publications & Presentations

Practical API Design, Apress 2008 - the first book about API Design describing all details related to API design published way sooner than the term API was kidnapped by REST and JSON guys.

20 API Paradoxes, Walrus 2012 - shorter, more strictly organized continuation/summary of Practical API Design book.

Rich Client Programming: Plugging into the NetBean Platform - contributed few philosophical chapters to book about NetBeans Platform.

Regular speaker at JavaOne and other conferences (GeeCON, GeekOut, JDD, CurryOn, JavaDays).

Teaching at Charles University's MatFyz for few years (during OracleLabs employment). My Practical Dynamic Compilation course attracted few interns into OracleLabs. At least two of them turned into regular employees then. See twenty hours of video (in Czech)

Theoretical Work

Typing in terms of graphs - master thesis at MatFyz describing type system similar to what later became Generics in Java. The paper is using unique, graph based terminology.

Proofs of NP-Completeness of various topics related to modularity with practical implications for anyone designing or using a module system.

Technical Skills

  • Able to use debugger to gain insight into behavior of own or any foreign system
  • Usually (almost) the most productive developer in any team
    • Typing (without looking at keyboard) and thinking fast, yet concluding slowly/carefully
  • Knowledge of classical languages (especially Java, but also C & etc.), functional languages (like Haskell) and logical languages (e.g. Prolog).
  • Knowing how to implement any language and make it run fast - just like done with Enso
  • Knowing a lot of about API Design and almost everything about API Design in Java
  • Understanding general implications of modularity and how to organize a project in a distributed fashion.

Organizational Skills

  • Designing process for API Reviews which allowed NetBeans to design APIs in a committee style and still keep consistency.
  • Designing, advocating and implementing parallel integration which greatly improved productivity of NetBeans developer teams
  • Enabling, promoting and advocating test driven development to increase quality of NetBeans code base
  • Founded OracleLabs subsidiary in Prague
    • Attracted skilled developers by talks at universities, conferences and meet-ups
    • Helped to select and on board newcomers.
    • Convinced whole experienced team to join OracleLabs and contribute to GraalVM vision
    • Handed the responsibilities to professional manager when the team grew over fifteen.

Languages

  • Czech - native
  • English - fluent
  • Russian - can read
  • Polish - passive understanding
  • German - survival level

Spare Time Activities

Skiing and snowboarding and other sports. Bck2Brwsr VM. Various open source projects (mostly hosted on GitHub, but also for example contributed to Linux kernel driver).

buy