The company recently spun-off its matrix Visual Tools (http://www.visual-tools.com), which is the leading manufacturer in Spain for digital video surveillance products. Both companies are part of the same Enterprise group.
Hi Miguel. You're creating an application on top of the NetBeans Platform. What does it do?
The NetBeans Platform application we're working on right now is used as a Management and Data Exploitation tool for our digital video based people counting system. Basically, we developed a number of Linux-based embedded devices which are able to count people traversing from one place to another via intelligent video analysis, and ranging from 1 to 8 video inputs.
These devices store the counting information on a Linux server running PostgreSQL and that's where our NetBeans Platform application comes into action.
The main purpose of this application is to query the database for the people counting information the user wants to extract. For example, consider a hall with several entrances and exit doors/areas. Place a camera on each one and define any combination of data you are interested in. Say, which doors people use most, what are the traffic patterns during a whole day, etc.
These kind of data sets are quite useful in retail for marketing strategies based on people patterns, and for public transportation systems, helping managers compare data with ticketing systems, dimensioning services for specific time periods, etc.
Other features are:
- Typical CRUD operations to add, edit, delete, etc. installed items, favorite queries, etc. for installation management purposes.
- Designing custom queries and fine-grained time interval selections.
- Exporting queries to images and/or spreadsheet formats.
- Support for configuring each particular camera for people counting (reference camera, frame rates, algorithm, detection area, and the like.)
- Support for auditing each counting process for configuration validation purposes.
- Support for user profiles and operation permissions.
- Clickable image maps to be able to locate counting areas and select them.
Some screenshots (click to enlarge them):
How and why did you choose the NetBeans Platform as the framework for this application?
I had been reading stuff and blogs on the NetBean Platform for quite a while before we started working with it. The kind of things the NetBeans Platform seemed to ship out of the box, such as versatile window management, views, modularization, and multi-platform support looked very compelling.
We had already developed a quite complex, pure Swing-based elevators and moving escalators monitoring application for one of our past projects and all the readings I kept doing on the NetBeans Platform presented (usually better) solutions to those we had to implement ourselves. So, after the experience we had on this project, I decided next time we would give the NetBeans Platform a try.
Also, the fact that it's all Swing-based made the choice even more appealing to us, since we did already have quite a lot of Swing expertise. In fact, and just for the record, I think Swing is a great toolkit, definitely really powerful once you spend some time learning it.
The NetBeans Platform also acts for me as the "Platform" layer on top of the "Toolkit", and I can now confirm it has saved us a lot of work allowing us to concentrate on the real business value of our software, and helped us get to a more comprehensible, maintainable, extensible design.
What are the main NetBeans APIs you are using? What are 2 or 3 things you like and 2 or 3 things you dislike about them?
In no particular order, Lookup, Window System, Progress API, Explorers, Editors, well, mostly all the basic stuff. More than anything in particular, I would say I like how easily and nicely it all plays together, I'm no expert but I feel it's quite well architected.
I do also value the plugin mechanism and update centers, thought we are not yet using that, and the Visual Library, which seems quite powerful but I did not find the time to play with. In fact, I now very much regret making a very basic "extend JLabel with an IconImage and @Override paintComponent()" implementation I made for our maps support, instead of considering the Visual Library. But, well, it all started about one year ago and I was busy enough learning other APIs.
Also: Maven support. For our next application I'm still playing with a Maven-based build and find it very useful.
On the contra- side, I wish the NetBeans Platform had better third-party look and feel support. Maybe now that JavaFX is out there, an "official" way to integrate it into NetBeans Platform applications would also be good. For the kind of video-based projects we usually work, some kind of "platform multimedia support" would be just great!
Also, I've often been a little misled by those error messages when something goes wrong in the build process and end up pointing to lines in the harness XML files, not really helpful for me at least.
If you could change one thing about the NetBeans Platform, what would it be?
Well, that's difficult to answer. I'm not saying that *nothing* needs a change, but I think I can't really tell a single thing to be targeted. Well, maybe not a change, but an addition: multimedia support (come on, it's Christmas time :)
When will your application on the NetBeans Platform be distributed to users?
It's already being used by some of our clients. Almost all of them are Windows users, so what we do is ship them a windows installer using Nullsoft's NSIS, which we generate from the Ant build file itself.
Right now, our customers are using the system in several public transportation centrals and as a prototype for measuring people flows in metro stations and train occupancy rates in the Madrid area.
We recently released the second major version, but we won't be using the update center because we upgraded the platform to version 6.7 and decided to just provide new installers.
Are you planning to distribute plugins too, after the app is distributed? What will these plugins provide?
Not for the moment, since the application is still in its first stages and most of what our customers expect already comes with it. However, as our customers' needs evolve, we will most likely be developing plugins for these specific cases, so that's a +1 again for the built-in NetBeans Platform support.
Anything else you want to tell us?
Yes, let me mention a couple of books I consider a must-read for NetBeans Platform newbies: "The Definitive Guide to the NetBeans Platform" and "Rich Client Programming: Plugging into the NetBeans Platform".
Also, and this is quite a compelling reason to try out the NetBeans Platform, the community support and NetBeans Platform site are great resources. Most of the NetBeans Platform staff is really active and they keep publishing very frequent, updated and relevant material, many thanks and congratulations to all.
Thanks Miguel and all the best with the further developments of your NetBeans Platform application!