Me, My Books, and My Code

I am Josh Marinacci: software engineer, researcher, part-time designer, and general miscreant. I have a passion for great user experiences. I live in Oregon with my wife and toddler.

I speak professionally at conferences world wide and have written many technical articles for publications like Java.net, the Java Magazine, and the Palm Developer Blog. I have also published three books: Swing Hacks, Building Mobile Applications in Java, and HTML Canvas: A Travelogue.

Contact Me

You can reach me through

Bio

My brief bio starts with graphics programming at an early age on an Apple IIc borrowed from my mom’s school during the summer. By age 14 I was coding up a simple overhead dungeon game on my 286 in VB (scandalous!). I earned a bachelors in Computer Science at Georgia Tech (1997), specalizing in Graphics, Visualization, and Usability. It was there that I first learned Java thanks to my favorite TA, Ian Smith, getting me a copy of the early betas.

After graduation I spent 9 months as Xerox PARC intern, which I would definitely consider a formative place in my career. While I was just a code wrangler for the researchers, I had an amazing opportunity to see early versions of e-paper, blue lasers, MEMS (the tech behind things like on-chip accelerometers and embedded compasses), and computing embedded into non-traditional devices (from skyscraper i-beams to teddybears).

After PARC I worked in a few startups before the DotCom bust, then spent a few in large companies working on UIs for enterprise software. Growing tired of JSP programming I started writing articles for Java.net on a variety of topics, but focused on GUI programming. In 2005 co-wrote with Chris Adamson the book Swing Hacks, for O’Reilly, focusing on the cool ways you can push Swing to the limits.

Swing Hacks led to five years at Sun where I worked on many projects; including improvements to the Windows Look and Feel for Swing, the NetBeans GUI builder (Matisse), the doc tool and launch demos for JavaFX, and countless JavaOne demos. Finally I spent a year leading the desktop client for the Java Store.

After Sun I spent two years as a Developer Advocate for webOS at Palm. Though webOS has had a tragic history at HP, it’s still my favorite OS and I continue to support the Open webOS efforts.

In early 2012 I joined Nokia as researcher playing with fun future stuff that I can’t tell you about.

Throughout it all I’ve focused on graphics and usability, with a renewed interest in scene graphs, interactive ebooks, and how to make user interfaces better.

Portfolio

After nearly 20 years in the industry I’ve worked on a variety of both commercial and open source projects. Here is a curated selection. As you can see my passions circle around community building and beautiful user interfaces.

Swing Hacks

I co-wrote Swing Hacks for O’Reilly with Chris Adamson. It shows 100 ways to push Swing (the standard Java UI framework) to the limits and beyond. Though the book is over 8 years old now, it is surprisingly relevant as more and more people need to improve their Swing applications to look and feel modern, and meet the needs of a modern userbase.

HP TouchPad Launch

For nearly a year the webOS Developer Relations team worked to improve webOS and the development experience. For the launch of the first webOS tablet device, the HP TouchPad, we worked directly with developers to get their apps ready for the launch, and brought feedback about issues and bugs back into the core engineering team. At the launch on July 1st 2011, we had more than 300 apps specifically for the TouchPad in the catalog; which was significantly higher than Android 3.0 and the PlayBook at their launches. We have continued to grow the app catalog and increase developer sales even since HP’s announcement to no longer manufacture it’s own webOS hardware.

HotApps promotions

I lead the creation of two webOS HotApps promotions. These were competitions for our developers where they would win cash for having the highest sales or downloads (for free apps) in a certain time period. To support the promotion I also built a custom website to display the current winners as well as tracking who was moving up and down on a daily and weekly basis. The site had a custom webservice to let others embed the content in their own websites, as viral marketing.

Sun JavaStore

I was the client architect of the Java Store at Sun. This was a full application store with a server backend to sell Java applications directly to end users. Though Oracle later canceled the project, we went from initial concept to first payment in 9 months, including 3 redesigns of the user interface using the then new JavaFX technology.

JavaStore predated the Mac App Store by a year and featured browsing & searching, an app showcase, and drag & drop app installation with reliable in-place updates.

JavaFX launch

I was the developer community leader for the JavaFX launch. I organized a team to build 40 samples in time for the launch, including building about 20 of them myself. I was a JavaFX evangelist for it’s two first years, traveling around the world to present sessions on the topic as well as building JavaOne main-stage demos. JavaFX is now a core part of the JDK under Oracle.

Netbeans GUI Builder

I spent a year improving the NetBeans GUI builder for Swing apps. We integrated the then new Swing App Framework, letting developers create, bind, and view actions throughout their application. I also created a new visual menu builder to replace the old tree configuration tool.

Swing Windows Look and Feel

I spent my first year at Sun improving the Windows Look and Feel for Java 6. Our goal was to have pixel perfect fidelity of Swing applications to their native equivalents, which we achieved for both Windows XP and the then unreleased Vista operating system. We received rave reviews for improvements in native fidelity. This involved endless off by one pixel adjustments. Notice the baseline of the UI controls before and after:

before

after

Leonardo Sketch

Leo is an open source vector drawing tool. It lets users create simple diagrams and artwork, exporting to PDF, SVG, HTML Canvas code and much more. Leonardo Sketch is fully cross platform and standards compliant. Currently Leo supports basic shapes, stars, bezier curves, gradient and texture fills, and drop shadows. It also has Twitter and Facebook integration. It has translations into several other languages and aims to be the leading open source drawing tool. Leo can also be used as a minimal presentation tool.

Amino Javascript Scenegraph

Amino is a highly portable open source 2D scenegraph for both Java and JavaScript. It can be used to create graphical applications on the web using HTML 5 Canvas, and in client side apps using Java (supporting SDL, Java2D, and soon OpenGL). Amino has been used to create games, diagrams, charts, and other graphics applications.

AppBundler

a tool to generate native executables for client Java apps, including Mac, Windows, and webOS.

XML Utils

XMLUtils is streamlined Java API for common XML parsing and printing uses.

Flying Saucer, XHTML renderer

Flying Saucer is a 100% Java XHTML + CSS 2 Renderer. Think of it as the rendering engine of a browser, but it only handles spec compliant markup. I started the project in 2004 but haven’t been active it in for a few years. The project has since gone on to help developers embed rich content into desktop Java apps and generate PDF documents and reports on the fly.