Radiance 2.0.1

March 11th, 2019  |  Desktop · Flamingo · Substance · Swing · Trident

It gives me great pleasure to announce the second major release of Radiance. It was all ready to go as 2.0.0, but what’s a release really if a blocker bug doesn’t make it in? So instead, you get to get 2.0.1 for now – pending any other blockers that would require a couple more minor re-spins. Anyway, let’s get to what’s new. First, I’m going to use emojis to mark different parts of it like this:

💔 marks an incompatible API / binary change
😻 marks new features
🤷‍♀️ marks bug fixes and general improvements


  • 💔 Java 9 is the new minimum requirement for build time and runtime of all Radiance modules


  • 💔 Removed Spoonbill (SVNKit-powered implementation of Flamingo’s breadcrumb bar
  • 😻 Added Meteor – Kotlin extensions for core Swing APIs
  • 😻 Added Ember – Kotlin extensions for SubstanceCortex APIs
  • 🤷‍♀️ Renamed Kormorant to Plasma
  • 🤷‍♀️ All core Kotlin modules (Ember, Meteor, Plasma) moved under the top-level kotlin-ext folder
  • 🤷‍♀️ Jitterbug (visual tool for editing Substance color schemes) renamed to Apollo
  • 😻 Added Ion – sample walkthroughs for replacing SwingWorker with Kotlin coroutines


  • 💔 An almost complete rewrite of NeonIcon APIs
  • 💔 Most Flamingo and Substance APIs moved off of ResizableIcon and to ResizableIcon.Factory
  • 💔 Moved some icon colorization APIs from Substance to Neon
  • 💔 Removed usage of UITable from FontPolicy API


  • 💔 Removed default public no-argument constructor from bundled templates for Java and Kotlin targets


  • 💔 Moved to builder-based construction of timelines


  • 😻 New Graphite Electric skin
  • 😻 New APIs for working with complex renderers, including built-in animations
  • 🤷‍♀️ Fix for incorrect offsets of rotated texts
  • 🤷‍♀️ Fix for inconsistent font metrics between preferred size and rendering passes
  • 🤷‍♀️ Fix for incorrect vertical position of icons in JOptionPane
  • 🤷‍♀️ Fix for crash in showing JColorChooser dialog
  • 💔 Moved all three Office 2007 skins to the extras pack


  • 💔 Moved all lower-level components (command button, command button strip. command popup menu, command button panel) to the new world based on content models, presentation models and projections
  • 😻 Added support for placing any ribbon content (including components, application menu links and galleries) in the taskbar
  • 😻 Added support for taskbar overflow (including built-in horizontal scrolling)
  • 💔 Keytips for taskbar content are controlled by keytip policy
  • 😻 Added support for separate keytips on action and secondary / popup areas of command buttons
  • 😻 Added support for global contextual menu on the ribbon
  • 🤷‍♀️ Added complete documentation

The first Radiance release focused on bringing all the different Swing open-source projects that I’ve been working on since 2005 under one roof. This release (code-named Beryl) is about making them work much better together. And it’s also about making it just a bit easier to use Flamingo components in general, and the ribbon in particular, in what one might call serious, if not even boring, business applications.

There’s still a long road ahead to continue exploring the never-ending depths of what it takes to write elegant and high-performing desktop applications in Swing. If you’re in the business of writing just such apps, I’d love for you to take this second Radiance release for a spin. Click here to get the instructions on how to add Radiance to your Gradle / Maven / Ivy / Leiningen / Bazel builds. And don’t forget that all of the modules require Java 9 to build and run.

Middle ground

March 9th, 2019  |  Politics

Photo by Kimon Maritz on Unsplash

Jeff Jarvis’s BuzzMachine is one of my favorite sites to follow. It offers deep, thoughtful, approachable analysis of the current state of media and how it might (or should) evolve going forward.

Jeff’s latest post from last Sunday linked to his earlier Medium post on what journalism is:

Convening communities into civil, informed, and productive conversation, reducing polarization and building trust through helping citizens find common ground in facts and understanding.

Much scorn and derision has been heaped on Newt Gingrich a few years ago when he was talking about “What I say is equally true” line (seen in this clip from John Oliver’s show, with generous background laughter track from the audience).

It’s easy to dismiss that entire interview as somebody who is spinning the tale that his “side” wants to hear. A tale not supported by any of the facts, any of the numbers, anything of what is actually happening across the country. Looking back at it through the prism of “alternative facts” of the last 2-3 years, such condescending dismissal can be seen as an instinctive, gut-based, knee-jerk reaction. Reaction that is built on the same quicksand “foundation” as the narrative Newt Gingrich was trying to defend.

You can’t find middle ground when one of the sides argues with facts, and another argues with feelings. You can’t throw numbers and charts out there, and expect the other side to change the way they feel. That’s not how humans work, unfortunately. Maybe you can try to convince that other side that numbers are more important than feelings. Maybe you can try and dig deeper into understanding where these feelings come from. But that’s not quite what the new left seems to be doing these days.

The new left seems to be taking a page or two straight out of the new right’s book. Forget the facts. Forget the numbers. Go for that punch to the gut. Speak to the instinct. Speak to that primitive, lizard brain that lurks just under the surface, ready to spring into that sweet “us vs them” mode.

As much as I want to live in the world where political and social issues can be discussed in a “civil, informed and productive conversation”, the world that Jeff Jarvis imagines, I don’t see that happening in the next decade or so.

If you were to ask me – today – what is the social, fiscal and political platform of the Democratic Party going into the 2020 elections, I would struggle to answer that question. “We are not Trump” is a political platform of feelings and not facts. If you can even call it a platform.

Technology (r)evolution

March 7th, 2019  |  Technology

There was a time, just eight short years ago, when so-called tech pundits argued, vociferously and tirelessly, that a 3.5″ size is the perfect one for all-screen phones, and anything above that is a wrong industrial design decision that can only come from throwing ideas against a wall and seeing what sticks. Thing is, the billion or so consumers of smartphones have spoken strong, and these days one would be hard-pressed to find a decent flagship that is under 5″.

Here’s another thought. It’s easy to dismiss certain explorations in consumer electronics these days, especially a few years after the fact. One can write articles after articles that disparage every single device out there (apart from those made by your favorite company, of course), and build a reputation of being a fearless, analytical mind. Every once in a while you might also throw in random concept “designs” that show your own ideal hardware assemblage, no matter how infeasible some details might be from the hardware perspective. No worries, it’s the pretty pictures that count.

And then, a few short months later you get to write another article or two after seeing the next wave of flagships that are, apparently, “disappointing” because they didn’t quite match that fairytale concept that was shared in your circles, building up the anticipation to something that was never quite promised by the companies that are right there, in the middle of actually doing things.

Every once in a while you also get to link back to what you wrote some time ago, and pride yourself on being the astute judge of a certain piece of exploration. “You see,” you humbly write to the adoring masses, “I was quite right back then when I said that it would not go anywhere“. No matter that you had no real skin in the game. No matter that you take the anecdote of your own reaction and misinterpret it as an unmistakable sign of your deep acumen. “If only they listened to me back then” you sigh contentedly, leaning in to type yet another click-baity “opinion” piece about the first iteration of a brand new thing that is not quite up to your “visionary” standards. “But what is the job that this accomplishes?” cry you, with a satisfied smirk on your face. You know that if you don’t see one, it surely must be quite pointless to bring that device to market.

Evolution of technology in general, and of devices in particular, is not a straight path. It’s not even a path per se. It’s a patchwork of exploring weird ideas that might not lead you anywhere, back-tracking to revisit what was once infeasible but may now be quite within your reach, and not being afraid to put all kinds of ideas out there for the world of consumers at large to sample, try and, ultimately, vote with their wallets on.


Being a parent in the age of social media

March 4th, 2019  |  Technology

Photo by Daniel Cheung on Unsplash.

From this broad survey of growing up when your parents are obsessed over documenting your every step on social media:

Cara and other tweens say they hope to lay down ground rules for their parents. Cara wants her mom to tell her the next time she posts about her, and the 11-year-old would like veto power over any photo before it goes up. “My friends will always text or tell me, like, ‘OMG that pic your mom posted of you is so cute,’ and I’ll get really self-conscious,” she said. Hayden, a 10-year-old, said he realized several years ago that his parents used a dedicated hashtag including his name on photos of him. He now monitors the hashtag to make sure they don’t post anything embarrassing.

Once kids have that first moment of realization that their lives are public, there’s no going back. Several teens and tweens told me this was the impetus for wanting to get their own social-media profiles, in an effort to take control of their image. But plenty of other kids become overwhelmed and retreat. Ellen said that anytime someone has a phone out around her now, she’s nervous that her photo could be taken and posted somewhere. “Everyone’s always watching, and nothing is ever forgotten. It’s never gone,” she said.

It’s a rather fascinating time that we live in. On one hand, this is the first generation of kids whose lives are being documented in public – or semi-public – ways, all without their direct involvement in these decisions. And on the other hand, this might also be the first and only generation of parents for whom the immediacy of about what is happening in their daily lives – most of which revolves around their kids – is only one step away from sharing those moments, no matter how big or small they are, on the latest hottest social platform.

There’s this observation that certain parental approaches skip a generation. If your parents were strict with you in a certain area, you may probably grow up and be quite hands off in that area with your own kids – trying, in a way, to make up for what you consider to be a “lost” part of your childhood. And then those kids take it back to the other extreme again.

Makes me wonder if today’s generation of tweens and those who will become tweens in the next five-ten years will be much more reserved about creating those public digital trails of their own kids…