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 former question first in hopes that you forget about the latter. 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. My current position is 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. 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.

If you've found this site you probably came from one of my technical blogs on Java, JavaFX or fun JavaFX demos. First let me say: Welcome! I'm glad you are joining me in what I hope will be a fun and engaging site. This post is the first of what will be many posts and essays on the topics of design, usability, and aesthetics. So let me dive in and tell what this is all about. This blog is about Design with a capital D. More specifically user interface design for software, though I plan to cover topics generally applicable to many fields. By 'Design' I mean not just the making things pretty aspect of visual aesthetics (commonly called 'graphic design'), but also interaction design, usability, and human centered engineering in general. I'm not a graphic designer so making things pretty will be only a small portion of the blog (though hopefully our skills will improve over time together). Why another design blog? It's true, if you search for 'design blog' in Google you will find endless sources, mostly focused on how to do things in Photoshop and Illustrator, the two great tools used by virtually all graphic designers. Even when their focus isn't specifically on how to do things in those editing tools, they are still targeted at graphic designers. But not this blog. This blog is aimed squarely for software engineers. The people who code up real software used by real people. Now, why, you may ask, did I make a blog targeted at engineers? Aren't most engineers bad at design? Do they even care? Well, that is exactly the point. Software engineers are the ones most in need of some design education. And while they may not all care about design, my experiences writing and speaking has shown me that there are a great many engineers who do in fact care and want to learn more. Thus, this blog. What can you expect? 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 you *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. I think I will leave it there for now and enjoy some rare Pacific Northwest Sunshine (TM). If you choose to add my RSS feed to your reader, then I'll be seeing you again soon. Thanks! - Josh