BMV – Major Release 4.0
Funny, it all started with a simple question on the RB forum about the “Heekin Canning Company”. This innocent question led to major hours coding the “Give a moose a muffin” CanDB 5.0 release. Not sure how to describe BMV 4.0 other than essentially “keep everyhing well written that I like”, replace what I don’t (e.g. all old BMV print code replaced) and add new features that I have long thought about but never implemented. Well, now many more hours later, working until 3-4am, BMV 4.0 is now available.
Still the core BMV browser, just new content, new features, and I like even easier navigation.
Thank you to the different magazine editors!
Without you, there would be no new BMV conent to provide. This BMV 4.0 release the content for Rustlings, Foam Matters and Rainier is fully up-to-date to May 2024. BCCA content is up-to-date through May/Jun 2023. Again, thank you.
Please notice the biggest button on most keyboards - SpaceBar
While mouse point/click is “OK”, repeated click, click, click can get annoying. But what if you want to cycle through many pages, or many rows of a search results ouput? Well, don’t just keep using that mouse but make it easier and use the <SpaceBar>. I have attempted BMV to remember/anticipate the “next/prev” action, so for example, you ran a search, got 50 results, and would like to quickly view all 50. Well, one point/click on the next match, and from there, just spam that big <SpaceBar>. This example will jump to specific Page, <SpaceBar> to jump back to Search results with the next/prev row highligted, and hit <SpaceBar> again. So much easier my opinion to let the program anticipate.
New “Show Page Thumbnails button
What, you don’t like reading text lists, but are more a “big picture visual collector”? Well with BMV 4.0 use that new “Show Page Thumbnails” button. This will take the list rows, one to many, and display their magazine cover page, nice and visual.
For example, the Search/Results window of the following displays a list of nine rows.
One click on the “Show PageThumbnails” button and you get the following:
That’s nice but my vision is not so good anymore…
Man I hear yah. I often use reading glasses now days for anything close up, even with multi-focal contact lenses the eye DR is not able to correct both to both perfect 20/20 distance and perfect close up. To that end, with BMV 4.0 there is now a “Tools -> Options” dialog. Those thumbail images too small, make them bigger! This is the current Tools -> Options dialog
Simply change the number of columns for displaying thumbnails, and increase the pixel height for each, and good to go. Now the integer spinners only accept limited up/down columns/pixels, simply to prevent someone typing 10000000 pixel height and BMV running out of memory. Still, the Tools -> Options allows some user control.
Faster Navigation - Right-click popup dialog
All windows now have a right-click popup dialog. Depending on current window, there may be:
· 0..N “Jump To” options. No need to manually find the parent content type
· 0..N “Last Viewed” options. If not greyed out, take you back to last window of that type
· Standard Foreward/Backward Actions (if avaiable)
· Standard Next/Prev action (if available)
· The possible print actions if the current window is printable
For much of my BMV 4.0 testing, it was restart the program, quickly jump to where I left off, and repeat. Usage has already become so engrained, why didn’t I add this in earlier releases???
New magazine content!
BMV 4.0 welcomes synthetic magazines “Canning Companies”, “Advertisements”, and “Sponsors” (shout out to those dealers placing ad’s in our magazines). You can either view this new content from the File menu which goes from Year -> Month -> Page, or from the “View” menu which display quick lists of the given content. From either, quick filter and or point click.
Ther are some amazing 1930’s Canning Company or Brewery advertisements in magazines or news print. This is initial effort to capture many in a single location, and long term goal other collectors will to contribute many 1000’s more! If you have additional digital ads you would like to contribute, please let me know.
The “Sponsors” content is a catalog of major dealer hobby sponsorship from year 2000 to present. Interesting to see how the Rogalski’s owned the back page of the BCCA for years, then moved to vaccum tubes, then to selling their collection, and finally to hyping the next greatest www.beercans.com site that never seemed to materialize. Dan Morean has taken over the back page, and seems the Good Guys “Beer Cans Plus” now owns page 2!!! Thank you guys for sponsoring ads and donations to this hobby.
Complete replacement of BMV print code – All replaced
I never really liked the BMV “print logic” I was forced to add when a November 2018 Windows patch broke existing SWT logic. Only solution I could find was to have BMV “draw its content” to an Image, and then write that Image to a PNG file or send to printer. Google “swt gc” if you want to see the drawing API. While functional, so much added complication to BMV.
Well, with CanDB 5.0 I have learned a bit, did some more reading and design thinking, and created a nice “CanPrintable” API on top of the SWT GC drawing. CanDB usage for print was changed to simply layout some images/labels/buttons (super easy) and have the CanPrintable API do the real work. Since it worked so well with CanDB 5.0, this was added to the “must do” with BMV 4.0. All old BMV 3.x logic replaced with simple usage of the CanPrintable API.
Note: The CanDB supports printing of long/tall output. Ideal is limiting print output to a single page, no more than 1280 pixels tall. Leads to readable output with still nice border/margins. With some of the new, much longer lists (e.g. Views -> Canning Companies”) these don’t squeeze nicely into a single PNG. Yes, it can be done, but the resulting pixels package so tight might not be readable from file or printed page. The CanPrintable API for larger images now presents a popup dialog how do you want to proceed:
· Continue writing into one large PNG file
· Split the image into N appropriately sized PNG files
· Create N appropriately sizes PNG files and merge them into a single, multi-page PDF.
Note: Java has
no public domain API to create PDF. There are commerical available for purchase
if someone has $1,000 they don’t want. For CanDB I chose to use the amazing 3rd
party C/C++ “convert.exe” from:
ImageMagick,
http://www.imagemagick.org.
However, I have NOT currently bundled ImageMagick with BMV packages, and not sure will ever do so. If you really want PDF, you can just copy your entire CanDB/ImageMagick directory under BMV/ImageMagick and restart BMV, or you can download ImageMagick from their website and copy under BMV/ImageMagick. This C/C++ convert.exe can do some amazing image processing, Google “imagemagick convert” for tons of possible options.
New default format for the Year window
This displays cover pages for all magazine issues in a given calendar year. This was originally implemented assuming 12 magazine issues per year, one per month. Thus, default is 4 columns and uses the Cover.bmv 125 pixel tall images for fast display. Looks “OK” for years with 12 issues but not great.
Well the BCCA has always been just 6 issues, and all chapter newletters now seem to be just 4-6 issues per calendar year. Thus the existing display format looked somewhat bland. I have changed the default to assume 6 isssues per year and now display 3 column of Month.bmv 400 pixel tall images for fast display. I think this look might nicer, much easier to read images.
However, when viewing older content that has more than 6 issues per year, this means need to use vertical scroll bar to view the cover pages for issues 7 to N. Blah, that isn’t very friendly. Which to use? BMV 3.x format or newer BMV 4.0 format? I have chosen to default to BMV 4.0 Year format. You don’t like it, or need to quicky toggle between the two, either right-click popup on the Year window, or Tools -> Options to change. I leave the default up to you.
Some major performance improvements
The SWT API does not have a direct Image.scale() function and earlier releases were doing expensive pixel conversion from SWT -> AWT -> scale -> SWT. Good, but not the most effcient. With performance profiling this was major overhead loading the thumbnails for the CanCos, Advertisements, Sponsors, there must be a better way. Well, I found a solution to create a new Image object with blank canvas of the desired size, and with an SWT GC on the existing Image have it “draw itself” to the new blank canvas, which scales pixels up/down as needed. SO MUCH FASTER. The list thumbnails and month individual page thumbnails load so much faster with BMV 4.0
If you want more details on the speed improvements and BMV usage of JProfiler and Sleak, take a look at the following new help topic “Behind The Curtain”.
BMV - Behind The Curtain
Ever wonder how I catalog such vast quantity of 21 magazines and over 41,000 pages, all 100% error free each and every time? Well, I don’t do things manually if I can write software to do the job for me. Computers are damn reliable, and will do exactly how programmed an infinite number of times. If interested, once you upgrade to BMV 4.0, click on the “Help -> Help Index” and below the splash screen there is new help topic “Behind The Curtain”. After that, if still interested in more details, I am more than willing to discuss since both BMV and CanDB are world class, extremely clean Java programs. In fact, I have taken some code I implemented and tested for these two hobby programs and actually contributed to some real world, real life corporate sofware!
-Randy Karasek (RB 636) – March 09, 2024