February 23rd, 2017
Today is the day a bunch of my long-running Swing projects get officially back to life. If you’ve missed the previous post from late last year, those of you who are still in business of writing Swing applications might be interested to take a look at the latest releases of Substance, Flamingo and Trident.
Substance is a versatile, extensible and fast look-and-feel that brings a wide variety of lovingly tailored skins, as well as quite a few behavior augmentations to Swing applications. The major themes of release 7.0 (code-named Uruguay) are support for high DPI monitors, reduction of visual noise and improved visual consistency across all core skins.
Substance 7.0 also has three new skins. The first one is Cerulean skin which was part of the Insubstantial fork that was maintained by Danno Ferrin:
The other two were added to the Graphite family. The first one is Graphite Gold that uses gold highlights on active elements:
The second is Graphite Chalk that has increased contrast on all UI elements:
Flamingo is a component suite that provides a Swing implementation of the Office 2007 ribbon container and related components. All Flamingo components have been streamlined to look well under Substance skins, including full high DPI support. Flamingo’s latest release is 5.1 code-named Jileen:
Finally, Trident is the animation library that powers all the animation in both Substance and Flamingo. As this library does not have any user-facing features that directly touch pixels, there is no new functionality in this release. Much has changed since the last time I’ve worked on Trident, and the time has come to remove built-in support for both SWT and Android. With release 1.4 (code-named Enchanted) Swing is the only UI toolkit supported out of the box.
What is next for these libraries?
As the title of this post suggests, I am planning to do two releases a year. What is on that roadmap? I’m not going to make any strong commitments, but these are the rough areas for the next few releases:
- There once was time where I’ve hoped that other look-and-feels would adopt some of the pieces of Substance. That time is long gone, and splitting the functionality across multiple pieces is just overhead. The relevant functionality from both laf-plugin and laf-widget projects is going to be folded back into the Substance code base.
- It is highly likely that I’m going to move Substance away from “seamless” discovery of plugins based on classloader magic. For example, if you’re using Flamingo in your application, you will need to declare an explicit plugin initialization along with setting Substance as your look-and-feel.
- Speaking of Flamingo, I’m going to focus exclusively on how those components look and behave under Substance. Third party look-and-feels are not what they used to be. It’s just not worth my time any more.
- Having said that, there’s much work to be done in Flamingo to provide full support for high DPI monitors. This is the place to follow that work.
So, if you still find yourself writing Swing applications, I’d love for you to give the latest release wave a try. You can find the downloads in the /drop folder of the matching Github repositories. All of them require Java 8 to build and run.
December 22nd, 2016
This might be a bit of a surprise, but after almost six years of self-imposed hiatus I’ve decided to come back to some of the open-source Swing projects that have been frozen in time since late 2010. Part of it was a mild curiosity to see how much things have changed in the meanwhile, and part of it was somewhat of a challenge to get back to a code base that I once knew like the back of my hand.
Before delving into the rest of this rather lengthy post, a fair warning. The images seen here are only meant to be viewed on high-resolution / retina / 2x-density screens. Otherwise what you’re seeing is a scaled down version of the original images that has little to do with the actual visuals seen on those screens.
Having said that, what is you see above is what I saw a couple of months ago on my 2013 MacBook Pro that has a Retina screen. Having spent the last four years looking at crisp visuals of pretty much all the native apps (except for Eclipse that is just now starting to get there, but then again calling Eclipse a native app is somewhat of a stretch), this was painful. There are obvious line artifacts, with the two most noticeable being the light outline along left/top edges of the main window and a darker horizontal line across the selected tab. But other that that, everything is just too blocky, pixelated and way too fat.
Two months later, I’m happy to report that Substance is a fully fledged citizen of the Retina universe. Given the amount of work that went into making that happen, the next release will have a version bump to 7.0 code-named Uruguay. The three big themes of this release will be as follows.
Hi DPI support
Searching the web for the initial pointers on Hi DPI support in Swing got me to this post from 2013 by Konstantin Bulenkov. Konstantin is the team lead at Jetbrains – the company behind the IntelliJ platform and all the apps built on top of that platform. Did you know that IntelliJ IDEA is a Swing app? If you didn’t, now you know.
Lucky for me, the code referenced in that post is part of the community edition of IDEA and is available under the quite permissive Apache license. And even though some part of that code is using reflection to query the underlying capabilities, if it’s working for IDEA with its hundreds of thousands of active users, it’s certainly good enough for me.
This code now powers pretty much all the pixels you see in Substance 7.0 – once again, the same warning about images that are meant to be viewed only on retina / high-res screens applies to all the images in this post.
Continue reading »
July 12th, 2013
Andrew Lyons is a prolific illustrator with an impressive portfolio that includes client work for GQ, Inc magazine, Penguine Books, BBC, Google and Mercedes-Benz. In this interview Andrew talks about his influences, bringing a human touch to the world of predominantly digital media, the importance of personal work and his recent packaging branding for “Strong” line of nutrient supplements.
Kirill: Tell us about yourself and how you started in the field.
Andrew: Art was the only thing I was really good at in school, so I knew when I was younger that I wanted to be an artist of some kind. I choose to study painting at university in Cardiff, but when I came out of university I had really now idea what to do with myself, there was no career guidance at all, so I spent the next ten years in odd jobs mostly as a temp working in offices. After a move to France in 2005 I had lots of time on my hands while learning French. I took a graphic design course that taught me how to use Adobe creative suite, but designing logos and websites just felt to restrictive although I liked the aesthetics of clean design. This is when I decided I wanted to be an illustrator, to combine my interest in painting and clean graphics. So in 2010 I started to build a portfolio of personal work and had my first magazine commission 6 months later. From there I just learnt on the job.
Left – illustration for Inc Magazine, right – illustration for Financial Times Weekend newspaper.
Kirill: What informs and shapes your taste and style?
Andrew: So many different things shape our tastes I think, the more the better. I’ve recently realised that the cartoons I watched when I was very small have been an influence, British children’s programmes from the early 80’s like Mr Ben, and Trumpton. I watch these again with my kids and I can see how the visuals were ingrained in my mind, and see similarities with my work which is weird really!
Another big factor is my love for abstract art, and the kind of paintings I used to do in Art school. I was a little obsessed with squares and geometric shapes in flat colours. I admire artists from the St Ives school; Ben Nicholson, Patrick Heron and Barbara Hepworth.
Lastly comic book artists are a big influence, Hergé’s Tintin, and other artists like Yves Chaland, Ted Benoit, Ever Meulen and Joost Swarte. Abstract art and comic books are my big loves. I like the idea of putting comic book style figures into an abstract and geometric background and seeing how they can interact with that space.
Kirill: Do you want to carve out a consistent and recognizable style, or are you willing to push and explore different directions as time goes by?
Andrew: I don’t really try too hard to be consistent. The way in which I draw certain things seems to evolve naturally with time and I can see differences in the work I did two years ago compared to my current work. I so like to try new things, but I take little steps I guess.
Left – illustration for Spirig AG, right – personal work.
Kirill: Your illustrations are alive with strong human figures, and yet the facial features are reduced to bare minimum. Are you more interested in the shape than in smaller details that might distract from the overall composition?
Andrew: Yes I think that’s probably true, I think it might distract a little, I like simplifying things where I can. But what I like most about having simple features is that it makes the faces more iconic, and possibly easier for people to identify with. Also I like the ambiguity of simple features as it makes emotions difficult pin down exactly, which can be useful when dealing with difficult subjects.
Kirill: As you move from pencil-and-paper sketches to digital outlines and colorizing on computer, do you aim to preserve the imperfection of a human touch? Or is that brought back by textures and lighting?
Andrew: Yes that’s right, I like to conserve some element of the hand drawn in the final art. I’ll either throw in some hand drawn line, or the textures will help to do that a little. More recently I have started to use pencil saying on my characters to rough up their shadows a little, whilst keeping their contours super clean. I like the duality of that. It’s like a push and pull between the right and left side of my brain. There’s a part of me that wants to be Mondrian with super clean lines and colours, and another part of me that just wants to make a mess and throw paint around like Pollock. I try to contain both impulses when I’m working.
Left – illustration for Google’s Think Quarterly, right – cover illustration for “The Teller of Tales” book.
Kirill: How do you preserve colour fidelity when the final product is targeting print media, such as magazines, book covers or packaging labels?
Andrew: I think that it’s difficult to know exactly how the illustrations colours will look once printed as different paper stocks give different results. I work in photoshop in RGB and then covert to CMYK at the end because there are some layer effects that just don’t work in a CMYK file. So when I’m working I’ll click the little ‘proof colours’ option in photoshop to get a rough idea for how it’ll look once printed in CMYK, but apart from that there’s not much else to do.
Kirill: On a related note, you’ve done a lot of editorial illustrations for magazines. Do you see any changes that affect your work as that industry is exploring digital editions and a variety of smaller screens and different form factors?
Andrew: I’ll often supply a layered photoshop document to an editorial client so that it can be animated for the iPad, but I don’t do any animating myself. I know of some illustrators that do the animating themselves so perhaps it’s a useful skill for illustrators to learn these days. But apart from that I’m not sure how things have changed as I’ve not been illustrating long.
Packaging branding for “Strong” line of nutrient supplements.
Kirill: Walk us through the process of creating the packaging branding for “Strong”. How do you capture the essence of an individual product in a single animal, and yet maintain consistency and continuity for the entire line?
Andrew: Thanks, I’m pleased that you think I’ve captured some of the essence of the subject. I start by looking at dozens of photographs and video of the bird in question, and sketching a lot, just drawing the bird as it is to get a feel for it’s shape. Then I sketch again, but this time directly into photoshop where it’s easier to clean up the drawings, and edit them, flip them etc… It’s at this stage that I try to imagine the birds build from clean curves and geometric shapes. I send my drawings to the client for feedback. My Art Director for Strong very honest with her feedback. If something isn’t working she tells me frankly what needs to change, so I go back and redraw, sometimes from scratch until it’s looking right. Working in this way brings out my best work I think as. it doesn’t always look right at the first attempt.
As to consistency, it’s always at the back of my mind when I’m drawing so this comes through in the final work. I use the same textures in almost all the bird illustrations too which helps.
Left – personal illustration, right – personal illustration.
Kirill: What’s the weirdest client feedback that you’ve received so far, if you don’t mind sharing?
Andrew: That’s a difficult question as I’ve never really had any weird client feedback to be honest! The feedback I’ve had from clients is always quite useful. Sometimes the honesty of the feedback can be quite funny, but it’s usually spot on.
Kirill: How important is it to invest time in personal projects?
Andrew: It’s important for me, and my personal illustrations have brought me new work quite often. I sometimes think that personal work has a quality that some client work is missing, there’s a drive and passion behind a lot of personal work, and I can see it myself when looking in other illustrator’s portfolios. The only difficulty with personal work is getting feedback, and being your own critic. I have other illustrators I can speak to to ask their opinions because when you’ve your head in a piece of work, it can be hard to see things that aren’t working. So a fresh pair of eyes really helps.
Personal work is important too for moving my portfolio and style forward.
Illustration for Bspirit magazine.
Kirill: What do you do when you run out of ideas and get stuck?
Andrew: When I get stuck I’ll try and work through it for a time and I’ll keep at it until I just can’t get any further. Then I’ll do something totally different. I’ll take a walk or read a book. And it’s when my mind is elsewhere that the ideas often come. I’ll often use spider diagrams and write down words related to the subject first rather than drawing anything. Then when I’ve filled a page I try connecting words on opposite sides the page to find something unique, a new idea. Then with an idea in mind of what I want to draw, I try to figure out how I’m going to draw it.
If I’m working hard on finding a visual solution before bed, I sometimes wake up with a picture in my head in the morning, so I quickly sketch it down before I forget it. But it’s rarely that easy.
Kirill: What’s the best thing about being an illustrator?
Andrew: Well, my two favourite things about being an illustrator are being able to work from home and spend more time with my wife and kids. And learning about something new with each project, from Iron ore mining in Africa to William Morris.
Illustration for educational textbook.
And here I’d like to thank Andrew Lyons for his wonderful work, and for taking the time to answer a few questions I had about his art and craft. You can find his work online at his main portfolio site and his personal Tumblr stream. Select illustrations are available for sale at the Society6 shop. He’s also active on Behance, Dribbble and Twitter.
December 21st, 2010
Over the past 6 years I’ve hosted a number of my open-source projects on Java.net. Over the last two-three years the site admins kept talking about moving the hosting forward, enhancing both the visual and the backend functionality of the site. I have no insight into the complexity of the existing infrastructure and the amount of resources available. It thus thus be foolish – and pointless – to speculate on the reasons for the glacial pace at which things are happening.
After a lot of promises, early November brought the rather hostile announcement (emphasis mine):
This is an opt-in migration – we have thousands of junk, test, and abandoned projects on the site and we intend to leave them behind. Any project owner can request that we move their projects, and any community leader can request that we move specific projects in the community. Any project that is not specifically requested by name via the opt-in form by November 30, 2010 will be purged when the CollabNet site goes dark. We will be keeping tarballs of the CollabNet contents and will be able to distribute them after the site goes dark, however projects that request migration are our top priority.
Aptly named “Move it or loose it“, this is quite a threatening statement that makes not one, not two, but three direct references to the projects that will not opt-in to the migration. Even though i’ve put the development and maintenance of my projects on hold, i still want to have the sources, binaries, documentation and the source history available for interested developers. And so i promptly added all my projects to the opt-in form.
Fast forward three weeks after the deadline date. A couple of days ago a comment was left on my blog (thanks Eugene) – Substance look-and-feel is nowhere to be found. It’s no longer at substance.dev.java.net and certainly not on the new java.net/projects. Let’s look at my new profile page that lists some of the projects that i asked to migrate. Looks like java.net/projects/substance is the winner, except that it leads to an error page. Most of the project links on my profile page lead to errors, and some lead to the subset of the original content. Every page takes minutes to load, and i have no idea if the old forum postings and binaries will ever make it through. Top priority indeed.
So here’s the deal. Over the next few days i will upload all the sources, documentation and additional materials to my GitHub page. However, it will be up to you to build the binaries, run sample applications and browse the downloaded documentation. I simply don’t have time to untangle this horrible migration mess that was unilaterally forced on me and my users.
And yes, i know that Java.net was a free service, and that the same exact thing may happen to GitHub in five years. I’m not that naive.