I did some more work on the upcoming BCC 3.0 this weekend, which is going to coexist on the desktop and the Internet. (Feel the power of Web 2.0… several years late!)
The biggest challenge with BCC coding-wise has always been laying out the bleeping cards. Mostly, this is because Java has very primitive printing facilities. I render everything to a Swing canvas and then essentially print the canvas, and Swing is most definitely not designed as a printable format. This exacerbates some issues which are always going to be hard, such as “How do I automatically size text so that it looks visually appealing without requiring user input?”
Since printing in a web application is sort of hard to control (CSS and usability issues galore), I’ve opted to generate PDFs, which is a quite common choice. The Prawn library (a new-ish alpha-quality Ruby library for PDF printing) is an absolute lifesaver — I’ve got better behavior out of it in 8 hours of playing around then I’ve been able to coax out of BCC in 2 years. There is still some ugly spaghetti code hiding in the bowels of it, but its literally a quarter of the size of the stuff in BCC itself, and much, much more comprehensible.
Feast your eyes:
(I know, Roald Dahl’s name is screwed up due to some sort of encoding issue.)
Here’s the same card printed in Bingo Card Creator:
I really prefer the Prawn version to the Java version for out of the box behavior:
- prettier autosizing (particularly for the column headers)
- better line breaking logic
- better centering of the words in the squares
- capability to add titles (often requested by customers, never implemented in Java because it would essentially require a rewrite of code that I scarce dare to tread in)
- capability to add watermarks/footers (often requested by, erm, me)
Printing is, by my estimation, about 90% accomplished. (I still need to work out some internationalization kinks and then figure out how I’m going to generate the PDFs and store them outside of the web request/response cycle — I don’t want someone printing 800 cards for a Fortune 500 retreat to lock up the server accidentally, but I do want to support that use case.)
After I get printing done I still need to:
- Code GUIs for word entry, loading/saving lists, etc.
- Figure out user management (usernames/passwords, forgot password, restricting access appropriately, etc)
- Extend my admin interface so that I can address issues that people have, should they have any.
- Figure out how to integrate the web app into my site without confusing the heck out of people.
- Rewrite a whole lot of copy. (See the above point.)
- Sprinkle my pages with copious sign-up-for-webapp-now calls to action.
- Adjusting the BCC client for close-to-seemless integration with the website (save to/load from Internet)
Now that printing is mostly working the technical issues are all downhill from here. My biggest worry is the perinneal one for web applications: can I convince non-technical users that “web sites” are worth paying money for? This is one of the main reasons I’m not planning on deprecating the downloadable version anytime soon.


Interesting project bringing it over to the web. So how’s the pricing going to work? Are the desktop and web versions different as far as pricing is concerned? Or does buying one automatically get you access to the other?
Regarding PDF generation, I usually do that with iText on the Java side (typically HTML to PDF). Still, it’s funny the amount of libraries you’ll find for most anything in Java, yet PDF generation is always a pain. Just feels like it should be much easier.
Welcome to a crowded market.
I’ve been here for about 2.5 years now, Leslie, but thanks for the welcome anyhow ;) (I don’t really focus on bridal/baby bingo — everyone wants “pretty” for that. I don’t really do “pretty”. I mostly focus on educational bingo, because that is what I know.)
>>
So how’s the pricing going to work?
>>
All of the current customers of BCC get access to the web application for free. At launch, I’m going to make them a single unit. I might play around with that model, later.
>>
Just feels like it should be much easier.
>>
I hear you.
Hi, just a quick comment on the one thing that immediately attracts the eyes of a Dane: that you’ve misspelled the name of Hans Christian Andersen :)
Anderson is a Swedish surname. Andersen is the Danish surname.
Btw, we all find it really weird that you insist on the “Hans Christian” thing. People didn’t use their full first names back then unless with the closest family or if they were kids. Friends, even close friends, were on a last-name basis. In a greater sphere, to avoid confusion, the initials were used together with the last name. That’s why we only know him as “H.C. Andersen”. And his contemporary, the physicist, as “H.C. Ørsted”.
I’ve been wondering when you were going to bring Bingo Card Creator to the web … I’ll bet this will be a smart move on your part. :-) I really enjoy how you share your experiences of being a microISV. It’ll be fun to hear how this latest venture works out. Please keep us posted.
Regards,
Chris