<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
    <link rel="stylesheet" type="text/css" href="netbeans.css"
      media="screen">
    <meta name="author" content="Tinuola Awopetu">
    <meta name="keywords" content="NetBeans IDE, Community Docs Program,
      Tutorials">
    <title>NetBeans Speakers at JavaOne 2013</title>
  </head>
  <body>
    <h1>NetBeans Community Speakers: Who's Who at JavaOne 2013 </h1>
    <table border="0" cellpadding="2" cellspacing="2" width="100%">
      <tbody>
        <tr>
          <td style="vertical-align: top;" align="center"
            valign="middle"><a
href="https://oracleus.activeevents.com/2013/connect/search.ww?eventRef=javaone#loadSearch-event=null&amp;searchPhrase=netbeans&amp;searchType=session&amp;tc=0&amp;sortBy=&amp;p="><img
                alt="NetBeans at JavaOne 2013"
src="../../../../images_www/javaone/2013/netbeans_javaone_2013_banner.jpg"
                border="0" height="288" hspace="5" vspace="5"
                width="250"></a><br>
          </td>
          <td valign="top">Each year, you can expect to find members of
            the NetBeans Community at JavaOne adding their expertise to
            the mix as speakers and presenters. <br>
            <br>
            Find out how some plan to spend their time at JavaOne
            2013--talks they will give, sessions on their to-see list,
            and their tips for getting the most out of the
            conference.&nbsp; &nbsp; <br>
            <br>
            <ul>
              <li> <a href="netbeans-speakers-2013.html#almog"><b>Shai
                    Almog</b></a> </li>
              <li> <a href="netbeans-speakers-2013.html#bien"><b>Adam
                    Bien</b></a></li>
              <li><a href="#caliskan"><b>Mert Caliskan</b></a><br>
              </li>
              <li> <a href="netbeans-speakers-2013.html#heffelfinger"><b>David











                    Heffelfinger</b></a></li>
              <li><a href="#jiricka"><b>Petr Jiricka</b></a><br>
              </li>
              <li> <a href="netbeans-speakers-2013.html#kelemen"><b>Attila











                    Kelemen</b></a></li>
              <li><a href="#kubacki"><b>Radim Kubacki</b></a><br>
              </li>
              <li><a
                  href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_66"><b>Anton








Epple











                    and John Yeary</b></a> (NetBeans Podcast 66)<br>
              </li>
            </ul>
            <br>
            <a href="netbeans-day-2013.html"><b>Don't Miss NetBeans
                Community Day at JavaOne 2013!</b></a><br>
            <br>
            <a href="index.html"><b>See All NetBeans Related Sessions at
                JavaOne 2013</b></a></td>
        </tr>
      </tbody>
    </table>
    <br>
    <a name="almog"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img src="../../../../images_www/javaone/2013/almog.jpg"
              alt="Shai Almog" height="100" width="100"></th>
          <th align="left">SHAI ALMOG<br>
            CEO, <a href="http://www.codenameone.com/"><i>Codename One</i></a><br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10388">NetBeans































              Community Tools with JRebel, Jelastic, and More [UGF
              10388]</a><br>
          </th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            We will show our vision for the future of WORA--mobile
            devices (Tablets &amp; Smartphones) are already more common
            than PC's by a good margin. We leverage Java's WORA
            capabilities with our open source project to create native
            applications for all devices (including iOS, Windows Phone,
            Android etc.)<br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            Create native mobile apps in Java using the FOSS Codename
            One toolchain supports iOS, Android &amp; more.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            I hope to meet James Gosling, I think that what we are doing
            is a great extension of his vision. There are also quite a
            lot of Java champions that I would like to talk to. There
            are quite a few interesting sessions on my schedule, both in
            enterprise deployment and client development.<br>
            <br>
            <ul>
              <li> Practical Pros and Cons of Replacing Swing with
                JavaFX in Existing Applications - We have a lot of Swing
                code and are pretty much struggling with incorporating
                FX features such as WebKit. Plus great speaker list.</li>
              <li> High-Performance Java Applications Without Dynamic
                Code: Ahead-of-Time Code Generators for iOS - Sounds
                really interesting and relevant to what we are doing.</li>
              <li>Architecting Enterprise JavaFX 8 - I don't think
                JavaFX has a future, but if someone can convince me
                otherwise its Adam Bien.</li>
              <li> What's New in JavaFX 8 - Richard and Jasper always
                have an interesting demo.</li>
            </ul>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            Bring something warm. My first time around I picked free
            t-shirts from all the booths for additional layers of
            warmth.... There is a great small Thai restaurant on Geary
            st. not far from Jack in the Box. It doesn't look like much
            but its lovely and pretty authentic. </td>
        </tr>
      </tbody>
    </table>
    <br>
    <a name="bien"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img alt="Adam Bien"
              src="../../../../images_www/javaone/2012/adam.jpg"
              height="109" width="100"></th>
          <th align="left">ADAM BIEN<br>
            Java Champion, Consultant, Author<br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10369">Cool































              NetBeans Tips and Tricks for Java EE 7 Development
              [UGF10369]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2229">Architecting































              Enterprise JavaFX 8 Applications [CON2229]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2231">Demystifying































              Java EE [CON2231]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2196">Lean































              and Opinionated Java EE 7 Applications [CON2196]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2230">Unit































              Tests Don't Break: Stress-Testing Java EE Applications
              [CON2230]</a><br>
          </th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            In my Java FX talk, I would like to introduce my way of
            building Model View Presenter JavaFX applications with Scene
            Builder, Maven and Dependency Injection.<br>
            <br>
            In the Java EE related sessions, I'm intending to bust some
            myths at the beginning session "Demystifying Java EE". <br>
            <br>
            In the session "Lean and Opinionated Java EE 7
            Applications", I plan to discuss Java EE 7 architectures
            with some patterns and idioms. Consistency and simplicity
            are key. Code walk-throughs are included.<br>
            <br>
            In my "Unit Tests Don't Break: Stress-Testing Java EE
            Applications", I would like to stress test a Java EE 7
            application, live and on stage, and address some pitfalls at
            the same time. Don't expect too much slides in my sessions.
            I usually use source code to explain my intentions.<br>
            <br>
            ...and I'm really looking forward to the "Cool NetBeans Tips
            and Tricks for Java EE 7 Development" session. Last year it
            was fun to hack something on stage with NetBeans in the
            crowded room. Btw. I'm using NetBeans in all my projects as
            well, so to minimize the risk I will use NetBeans in all my
            sessions as well :-)<br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            Think. Delete. Write. Lean Code with Java SE / FX / EE.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            I'm really looking forward to attend the sessions and
            keynotes delivered by Oracle engineers. JavaOne is the
            unique opportunity to meet the engineers who actually build
            Java itself. It is always valuable to attend a session from
            someone who actually implements Java and not only talks
            about that.&nbsp; I'm also curious about the news /
            announcements around Java.<br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            JavaOne means to me one thing: technical content. Everything
            else is secondary. For that reason I enroll for the sessions
            early and attempt to attend as many sessions as only
            possible. This was my strategy from the first JavaOne I
            attended in 2000. I also try to avoid parties. They are not
            compatible with consumption of technical content.<br>
            <br>
          </td>
        </tr>
      </tbody>
    </table>
    <br>
    <a name="caliskan"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img alt="Mert Caliskan"
              src="../../../../images_www/javaone/2013/caliskan.jpg"
              height="100" width="100"></th>
          <th align="left">MERT CALISKAN<br>
            Principal Software Architect, <i>T2 Yazilim Ltd.</i><br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10369">Cool




























NetBeans


              Tips and Tricks for Java EE 7 Development [UGF10369]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3638">10
              Tips for Java EE 7 with PrimeFaces [CON3638]</a><br>
          </th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            I'll be co-speaking at the session: <i>10 Tips for Java EE
              7 with PrimeFaces</i>. In the session, we will take you on
            a JSF tour with the help of Java EE 7 together with
            PrimeFaces and NetBeans IDE. The tour will begin with an
            introduction of PrimeFaces and its features, such as UI
            components and themes. Focusing on Java EE 7, we will
            examine HTML5 friendly templates, resource libraries
            contracts, faces flow, EL operators, and lambda magic.
            Throughout, you will be shown how to apply the principles
            and concepts learned through working examples in NetBeans
            IDE. The talk will be brought to you "from the horse's
            mouth", that is, by engineers from PrimeFaces and NetBeans
            IDE. <br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            <span>PrimeFaces 4.0 - Sentinel will rock on at JavaOne with
              cools tips from JAVAEE7 side</span>.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            Sessions <span>mostly based on HTML5, GlassFish, NetBeans
              and specially Java EE. I don't have any specific people to
              meet, but definitely will get together with the JSF folks.
              I'll try to attend as much sessions as possible and meet
              Enterprise Java people between coffee breaks.</span><br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            <span>Breezy city! Make sure to keep warm--load up on free
              coffee. Be aware that shuttles between the venues provide
              free transfer. The exhibition hall is the best place to
              meet up and chat with new people. If you see me--I'll be
              wearing a PrimeFaces tshirt--come say hello! :)<br>
              <br>
              There are lots of places to wander around in San
              Francisco. The crab shacks and the pier are a must-visit
              for me! The seafood is worth trying if you're into that.
              And don't forget that this year <b>Maroon 5</b> will be
              headlining at Treasure Island for JavaOne and Oracle Open
              World folks</span>.<br>
            <br>
          </td>
        </tr>
      </tbody>
    </table>
    <br>
    <a name="heffelfinger"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img alt="David Heffelfinger"
              src="../../../../images_www/javaone/2013/heffelfinger.jpg"
              height="100" width="100"></th>
          <th align="left">DAVID HEFFELFINGER<br>
            CTO, <i>Ensode Technology</i>; Author<br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=9871">GlassFish






























              Community: The Foundation for Opportunity [UGF9871]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3692">So































              You Want to Become a Published Technical Author [BOF3692]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3475">Unlocking































              the Java EE Platform [CON3475]</a><br>
          </th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            I'll be giving three presentations at JavaOne this year. <br>
            <br>
            On Sunday morning I'll be talking about my GlassFish
            experiences during the GlassFish community Event. <br>
            <br>
            On Monday Night I'll be participating in a Birds of a
            Feather session about becoming a technical author.<br>
            <br>
            On Tuesday afternoon I'll be giving a demo illustrating how
            to build Java EE/HTML5 application using NetBeans.<br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            Speaker at 3 JavaOne sessions this year: GlassFish,
            NetBeans/JavaEE7/HTML5, becoming a tech author.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            There are so many highly talented members of the Java
            community that mostly get to interact online and rarely have
            a chance to meet in person. JavaOne gives me the opportunity
            to interact with these individuals in person. Additionally,
            I especially like the sessions that give a "sneak peek" at
            what's coming in the near future for the technologies and
            products I use day to day such as Java EE, GlassFish and
            NetBeans. <br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            I have been to JavaOne a few times. In no particular order,
            here are a few things that first time attendees may not be
            aware of:<br>
            <br>
            If your hotel is not walking distance from the conference,
            there are free shuttles provided to and from the conference,
            so no need to walk a few miles back and forth nor spend
            money on taxis.<br>
            <br>
            For those of us that need our caffeine fix, free coffee is
            provided at the conference.<br>
            <br>
            There is usually a 30 minute period of "down time" between
            sessions, use this time wisely and try to get to the
            sessions early so that you get a good seat.<br>
            <br>
            You will be getting a lot of information in a short time,
            like drinking water our of a fire hydrant. It's impossible
            to digest everything at once, but you will certainly go back
            home with lots of fresh ideas to apply to your software
            development projects. </td>
        </tr>
      </tbody>
    </table>
    <br>
    <br>
    <a name="jiricka"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img src="../../../../images_www/javaone/2013/jiricka.jpg"
              alt="Petr Jiricka" height="100" width="100"></th>
          <th align="left">PETR JIRICKA<br>
            Software Engineering Manager, NetBeans<br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3287">Coding
              for Desktop and Mobile with HTML5 and Java EE 7 [CON3287]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=7828">Red
              Hat and Oracle: Delivering on the Promise of
              Interoperability in Java EE 7 [CON7828]</a><br>
          </th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            <div>I will be talking about the great combination of HTML5
              on the frontend and Java EE 7 on the backend--it's as if
              they were made for each other. And of course about
              NetBeans, which supports both and helps you develop HTML5
              and Java EE 7 applications not only for the desktop, but
              also for mobile devices. <a
                href="https://netbeans.org/community/releases/74/">NetBeans
                7.4</a> contains many improvements for HTML5 developers
              (also known as Project Easel) as well as new support for
              Java EE 7. Hence, the title of my talk: <i>Coding for
                Desktop and Mobile with HTML5 and Java EE 7</i>.</div>
            <div><br>
            </div>
            <div>In my other talk with Max Andersen of RedHat/JBoss,
              titled<i> Red Hat and Oracle: Delivering on the Promise of
                Interoperability in Java EE 7</i>, we will highlight the
              interoperability and vendor-neutral focus of the new Java
              EE 7 platform and demonstrate how the same application
              works easily on both GlassFish and JBoss. While this talk
              is primarily concerned about server-side code, we will
              also touch on tools (including NetBeans 7.4) as well as
              client-side technologies.</div>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            HTML5 and Java EE 7 work great together, and NetBeans 7.4 is
            an excellent tool for both.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            As it is every year, JavaOne is a great opportunity to learn
            about the new exciting things that the Java community is
            working on, and to meet people who are passionate about
            Java.<br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            Try to be busy. Attend every session you are at least mildly
            interested in. Don't miss any opportunity to meet new
            people, and to chat with the people you already know. Tour
            the exhibition floor and stop at the booths. Go to parties.
            Don't be afraid to ask questions in the sessions. I know
            that doing all this is very demanding and tiring, and in the
            evenings you will be exhausted, but in retrospect you will
            find this very rewarding.<br>
            <br>
          </td>
        </tr>
      </tbody>
    </table>
    <a name="kelemen"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img alt="Attila Kelemen"
              src="../../../../images_www/javaone/2013/kelemen.jpg"
              height="100" width="100"></th>
          <th align="left">ATTILA KELEMEN<br>
            Gradle Developer<br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10388">NetBeans































              Community Tools with JRebel, Jelastic, and More [UGF10388]</a><br>
            <a
href="The%20Curious%20Case%20of%20JavaScript%20on%20the%20JVM%20[CON2952]">The























              Curious Case of JavaScript on the JVM [CON2952]</a><br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2653">Script























              Bowl 2013: The Battle for Supremacy and Survival [CON2653]
            </a></th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            I'll talk about the Gradle integration of NetBeans. As a
            short demonstration, it is quite challenging to choose what
            not to include. Therefore, I plan to demonstrate only
            features that are easy to miss. For example: How to specify
            using a particular Gradle version without (manually)
            downloading Gradle; Custom task variables, which can be used
            to create custom project wizards. Also, I hope to exploit
            the new Tooling API (currently being developed) of Gradle
            1.8 to significantly improve the plugin before JavaOne. <br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            Expect major improvements in IDE support in Gradle 1.8.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            I'll be meeting Hans Dockter (CEO of Gradleware); also other
            Gradle and NetBeans developers who I have been nagging with
            new feature requests. :) As for sessions, my favorite
            subject is concurrency, so I'm sure to attend to some
            related sessions (e.g.: CON7962).<br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            This will be my first time at JavaOne. I wanted to attend to
            JavaOne in the past but I was discouraged by the time
            required to travel to San Francisco. I hope Oracle will
            consider moving JavaOne to Budapest :). </td>
        </tr>
      </tbody>
    </table>
    <br>
    <a name="kubacki"></a>
    <table style="text-align: center;" cellpadding="5">
      <tbody>
        <tr class="tbltd1">
          <th><img alt="Attila Kelemen"
              src="../../../../images_www/javaone/2013/kubacki.jpg"
              height="100" width="100"></th>
          <th align="left">RADIM KUBACKI<br>
            Android Developer<br>
            <br>
            <a
href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=10388">NetBeans






















Community








              Tools with JRebel, Jelastic, and More [UGF10388]</a></th>
        </tr>
        <tr class="tbltd0">
          <td align="left"><br>
          </td>
          <td align="left"><b>What will you be presenting at JavaOne
              this year?</b><br>
            <br>
            I will talk about Android application development using
            NetBeans--showing a quick demo of what you can do and how it
            compares to other choices (Android Studio and Eclipse ADT
            plugins). There will also be notes about project evolution
            and future plans.<br>
            <br>
            <b>Extra Challenge: Give us all of the above in less than
              100 characters.</b><br>
            <br>
            How to develop an application for Android using NetBeans IDE
            with NBAndroid plugins.<br>
            <b><br>
            </b><b>What are you looking forward to at JavaOne?</b><br>
            <br>
            I'm looking forward to see a lot of interesting people and
            find about new interesting things and projects in Java
            world.<br>
            <br>
            <b>Do you have any tips to share about how to best enjoy the
              conference and San Francisco?</b><br>
            <br>
            Remember that BOFs (Birds of a Feather) are often more
            interesting than general sessions if you want to learn cool
            stuff. </td>
        </tr>
      </tbody>
    </table>
    <br>
    <h2>Spread the Word!<br>
    </h2>
    <table border="0" cellpadding="2" cellspacing="2">
      <tbody>
        <tr>
          <td valign="top"><img alt="NetBeans at JavaOne 2013"
src="../../../../images_www/javaone/2013/netbeans_javaone_2013_icon125.jpg"
              height="125" width="125"></td>
          <td valign="top"><img alt="NetBeans Community Day at JavaOne
              2013"
              src="../../../../images_www/javaone/2013/netbeans_day_2013_icon125.jpg"
              height="125" width="125"><br>
          </td>
          <td valign="top">Place these logos on your blogs and websites
            and help us promote <span style="font-weight: bold;">NetBeans






















              at JavaOne</span>!<br>
          </td>
        </tr>
      </tbody>
    </table>
  </body>
</html>
