5,736 pedestrians were killed in traffic crashes in USA in 2015. That is 15 people killed every day walking the roads.
37,461 people were killed in traffic crashes overall in USA in 2016. That is 102 people killed every day being on the roads. Additional (staggering) 2M+ were injured or permanently disabled.
There is nothing in the constitution, the bill of rights or the other amendments that guarantees an inalienable right for citizens, residents and other individuals to possess and operate a steel box at speeds that simply do not match our abilities to react in time to whatever may happen on the road at any given moment.
And yet, there is no public uproar. There are no petitions. There are no mass walkouts. There are no social media hashtags. There are no somber politicians sending thoughts and prayers. There is no government agency combing the aftermath of every single crash that resulted in a fatality to make sure that something like that won’t ever happen again.
Nobody gets in the car weighing their chances and deciding that yes, that trip to see their favorite team playing some other team is certainly worth the chance to die today.
Imagine getting on the plane knowing that there’s a decent chance that you’re not going to make it to your destination. Imagine a passenger plane crash happening every four days. Taking 400 lives. Twice a week or so. Because that is what is happening on the roads in this country. And every other country. More than 1.25 million people die every year world wide as a result of road traffic crashes.
And yet, there is no anger towards some kind of an organization that promotes the interests of big car manufacturers. Nobody is thinking to ostracize their friends for buying that shiny new car that can accelerate from 0 to 100 faster than ever before. There are no voices calling to raise the minimum driving age for bigger SUVs to, let’s say 21.
And here is where it gets really difficult. If self-driving / majorly-assisted technology could bring those numbers down, but not quite to zero, what would be deemed acceptable? Setting aside the juicy lawsuit targets and the initial wave of breathless headlines and rhetoric of the last few days, how little is still too much?
What happens when it’s no longer the weak excuse of “it’s fine because it was this frail human who lost their concentration for a second”? What happens when we are talking about machines of unimaginable complexity hurtling ever faster down our roads, as they take human lives on the monthly, weekly, daily or even hourly basis?
The advocates of fully self-driving future seem to never quite talk about this, pretending that somehow everything is going to be peachy and there are not going to be any human lives lost from some point going forward into eternity. This week is a rude wake-up call to regroup and start thinking about this ugly side of mass ground transportation.

Going with the biannual release cycle of my Swing projects, it’s time to do latest release batch.
Substance 8.0 (code-named Wyoming) is a major release that addresses technical debt accumulated in the API surface over the years and takes a major step towards enabling modern UI customizations for Swing applications. Full release notes and API listings are available, with the highlights being:
- Unified API surface (Project Cerebrum)
- Configurable title pane content (Project Visor)
- Folded laf-plugin / laf-widget (Project Corpora)
- Explicit instantiation of component and skin plugins
- Switch to Material icons + icon pack support
- Better support for fractional scaling factors
Flamingo 5.3 (code-named Liadan) has extracted the non-core functionality into two new projects:
- Ibis has the code for using vector-based icons in Swing apps. It supports offline transcoding of SVG content into Java2D-powered classes, as well as dynamic display of SVG content at runtime (powered by the latest version of Apache Batik)
- Spoonbill has the code for browsing SVN repositories with the
JBreadcrumbBar
component from the core Flamingo project. Future plans include extending this functionality to GitHub repositories as well.

If you’re in the business of writing Swing desktop applications, I’d love for you to take the latest releases of Substance and Flamingo for a spin. You can find the downloads in the /drop folders of the matching Github repositories. All of them require Java 8 to build and run.

Going with the new biannual release cycle of my Swing projects, it’s time to do the release candidates for the latest iterations.
The first major pillar for Substance 8.0 (code-named Wyoming) is Project Cerebrum – unified API surface. The API surface for controlling the visual appearance and behavior of various parts of Substance has grown organically over the years. Part of this growth process has been experimenting with various ways to express this control, from client properties to VM flags to APIs on a number of classes.
Starting with 8.0, the only officially supported entry point into configuring the behavior of Substance-powered UIs and for querying the state of such UIs is via the org.pushingpixels.substance.api.SubstanceCortex
class. The API surface of this class is broken into a number of scopes, with every scope applying at the specific granularity level of control
The second major pillar is Project Visor – configurable and custom title pane content. It provides a number of APIs to configure the layout in and around the title pane area of application windows. SubstanceCortex.GlobalScope.configureTitleContentGravity
is the API to globally configure the gravity (edge alignment) of title pane content – title text, control buttons (minimize, maximize, close) and app icon.

The following APIs on the SubstanceCortex.WindowScope
scope allow apps to extend the main content view into the title pane area – as can be seen in all the screenshots in this post:
extendContentIntoTitlePane(Window, SubstanceSlices.HorizontalGravity, SubstanceSlices.VerticalGravity)
to marks the specified window to have its content extend vertically into the title pane area.
getTitlePaneControlInsets(Window)
to query the insets that should be reserved for the main control buttons – close / maximize / minimize.
setPreferredTitlePaneHeight(Window, int)
to increase the preferred height of the title pane area in case the content you extend into that area is taller than the main control buttons.
createTitlePaneControlButton(Window)
to get a button that has consistent visual appearance and preferred size with the main control buttons.
Calling JFrame.setDefaultLookAndFeelDecorated(true)
on the specific window is the mandatory pre-requisite to be extend the window content into the title pane area with SubstanceCortex.WindowScope.extendContentIntoTitlePane
API. See the skeleton demo apps for sample code on how to use these APIs.
The third major pillar is Project Corpora. Up until version 8.0, Substance used to depend on laf-plugin
and laf-widget
. Those two projects were envisioned when the landscape of third party look-and-feels in particular, and Swing in general, was more vibrant. The goal was:
- For
laf-plugin
to provide a common mechanism for specifying look-and-feel plugins for components libraries
- For
laf-widget
to provide a collection of widgets that enhance the visual appearance and behavior of specific Swing components
The functionality of these two projects has now been folded into the main Substance codebase. The APIs for configuring animations and widgets are now part of the SubstanceCortex
class

In addition, Substance 8.0 comes with:
- Consistent package names for public APIs
- Removed automatic discovery of Substance plugins (that could be used for injecting unintended behaviors into Swing apps powered by Substance)
- Switch to Material icons for built-in components
- Support for icon packs
- Better support for fractional desktop scaling factors
Full release notes for Substance 8.0 are available here.
The biggest change in Flamingo 5.3 (code-named Liadan) is separating the non-core functionality into two new projects:
- Ibis has the code for using vector-based icons in Swing apps. It supports offline transcoding of SVG content into Java2D-powered classes, as well as dynamic display of SVG content at runtime (powered by the latest version of Apache Batik)
- Spoonbill has the code for browsing SVN repositories with the
JBreadcrumbBar
component from the core Flamingo project. Future plans include extending this functionality to GitHub repositories as well.
If you’re in the business of writing Swing desktop applications, I’d love for you to take the latest release candidates of Substance and Flamingo for a spin. You can find the downloads in the /drop folders of the matching Github repositories. All of them require Java 8 to build and run. The final releases are scheduled to happen in two weeks’ time, on the week of March 11th.
Going with the new biannual release cycle of my Swing projects, this week is seeing the latest official releases of Substance and Flamingo.

Along with a few visual polishes and tweaks, Substance 7.1 (code-named Vermont) brings support for using correct default system font on macOS 10.10+ when you’re running your app under the recently-released Java 9. In addition, your JOptionPanes will see a tweaked order and alignment of the buttons. By default, the order and alignment follows the interface guidelines for the specific platform. On a macOS machine, for example, the buttons will be aligned to the trailing edge of the dialog (right on LTR and left on RTL), with the default button placed as the trailing button:

Use the APIs on the SubstanceLookAndFeel class for app-specific control over the order and alignment of the JOptionPane buttons if you want to deviate from the platform guidelines.

The previous release of Substance brought full support for high DPI screens, and the latest release for Flamingo 5.2 (code-named Kennocha) aligns both libraries to be first class citizens on modern screen hardware. The unofficial release notes are:
- Full high DPI support for all components, including
- Command button icons and arrows
- Color selector popup menu
- Ribbon galleries
- Ribbon bands in collapsed state
- Support for vertical scrolling of secondary level content in ribbon application menu
- Better mouse wheel handling in command menu popups
- Addressed clipping issues on some transcoded SVG content
If you’re in the business of writing Swing desktop applications, I’d love for you to take the latest releases of Substance and Flamingo for a spin. You can find the downloads in the /drop folders of the matching Github repositories. All of them require Java 8 to build and run. Happy Swing coding!