Check out the Latest Articles:

Who are you?

Who am I? Or, perhaps more importantly, why should you care what I say about design. Why don’t I address the first question in hopes that you forget the second.

I’m Josh Marinacci, a software engineer. My brief bio starts with graphics programming at an early age on an Apple IIc my mom borrowed from her school for the summer. By age 14 I was coding up my own simple overhead dungeon games on my 286 in GW-Basic and VB. I earned a bachelors in Computer Science at Georgia Tech (class of 1997). I specialized in GVU: Graphics, Visualization, and Usability. Ga Tech was one of the first universities to have such a program, something I consider a great asset. It was there that I first learned Java thanks to my favorite TA, Ian Smith, getting me a copy of the early betas; and since then I’ve coded almost exclusively for the Java platform.

After graduation I spent about 9 months as an intern at Xerox PARC (thanks again to my favorite TA), 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 stuffed animals).

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 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 my position at Sun where I have worked in a variety of positions, including improvements to the Windows Look and Feel for Swing, the NetBeans GUI builder (Matisse), and then joined the JavaFX team as soon as it was announced in 2007. Since then I’ve worked on a visual design tool, the JavaFX Doc tool, personally wrote about half of the launch samples, and endless JavaFX demos. Finally I spent a year leading the desktop client for the Java Store, which we hope will unlock the doors for millions of Java developers to make money selling their dream apps to the desktop, mobile devices, and TVs.

In February of 2010 I joined Palm as a Developer Advocate. My job is to help developers create kickass apps for Palm’s webOS phones (currently the Palm Pre and the Palm Pixi). Mobile is the future so I’m excited to be smack in the middle of it.

Throughout it all I’ve focused on graphics and usability, with a renewed interest in scenegraphs, 3D transitions, and how to make user interfaces better.

What do you know about design?

So now to the second question, why should you care what I say about design? Well, I’m not a designer at all. I am a software engineer through and through. I know some tips and tricks for building UIs but I’m not a graphic designer, and I’m certainly not an artist. I couldn’t draw my way out of a paper bag.

What I *do* have is a passion for great user experiences. Software has come a long way in the past 30 years since the dawn of graphical user interfaces, but we sill have such a long way to go. Most software is still horrible compared to real world analogs. No one asks how to use a new car. No one is worried about filing cabinets spontaneously losing data. We buy cars with sexy outlines, but (until recently) we don’t buy desktop software with outlines that a designer slaved over for 3 years.

Despite these failings, software is an increasing part of regular life. Soon almost every facet of your existence will be mediated in some way by software. This makes it our responsibility as software engineers to create products which protect, serve, and delight our users. If we can make even a small improvement in the usability of software through this website, then the results will be well worth the effort.

What can I expect on this site?

Well, besides asking my own questions that I then answer, I plan to cover many aspects of designing good human centered software. I’ll cover how to plan and build good user interfaces, how to effectively test software on real users, how to work with graphic designers, and yes: how to make things pretty.

What can I not expect?

First, I don’t plan to cover JavaFX or Swing. I certainly will use them in examples since my expertise in those technologies makes them effective teaching tools. However, no particular technology will be my focus. The point is to discuss and learn the timeless principles of design. Principles which apply whether you are using JavaFX, Silverlight, CSS, or paper and pencil. Good design is good design.