ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > N.A.N.Y. 2011

NANY 2011: Techniques, Tributes and Tribulations

<< < (3/3)

nharding:
DCDisplay

* Why were the NANY applications coded? (I mean why decide to code this particular app)I like CDisplay, it is easy to use but it has not been updated for a few years. I suggested a few improvements years ago to the author, but they were never implemented. I decided to write a replacement, that would add the things I wanted plus a database and some other features that are still in the pipeline.

* What IDE did you use, if any?Visual Studio Express.

* What language(s) is the application written in?C#

* Does it rely on any 3rd party libraries / code / graphics?Yes, I am using a few 3rd party libraries, Nunrar to extract files from rar files, ZipStorer to extract files from zip files, 7ZipSharp to handle a problem with Nunrar on certain archives. Speech Balloon code, and a BTree database implementation.

* Were any clever design principles used?No, I wanted to learn C# so I wanted a reasonably complex project to get used to the language.

* Or any really hairy algorithms that you'd like to boast about?The file sort took a few months to get working, since it does English language sorting. So A Tale of Two Cities sorts as Tale,2,Cities. It also extracts dates in a variety of formats, so Mar 2001 and 2001-03 are the same, when comparing it works on word by word basis, but some can be ignored. So Computer & Video Games (2001-11) 12.cbr and C&VG 13.cbr would sort correctly (it has abbreviations expansion before it generates the tokens for the name sort).

* What was the trickiest part?Handling all the possible naming of files I came across. Since I can't rely on names being a standard format it makes extracting the name and issue number awkward especially with a title like Babylon 5, I added a list of numeric titles that it uses to get the actual issue number.

* Would you like to make a mention of any other DC members who helped out?Mouser for some comments and a small donation :)

Neil

mouser:
I plan to do a longer writeup of the tribulations and lessons learned from one of my NANY projects (userquotes) but thought i'd get a start by writing some quick thoughts here.

   * Why were the NANY applications coded? (I mean why decide to code this particular app)
    * What IDE did you use, if any?
    * What language(s) is the application written in?
    * Does it rely on any 3rd party libraries / code / graphics?

I did two NANY apps this year, one was Webcam Video Diary, coded using C++ Builder (which is basically C++ with lots of visual component libraries); the other was userquotes.com, a website service coded in php on top of the open source Drupal CMS.

Both entries made HEAVY use of existing 3rd party components and code.

UserQuotes relies on Drupal to do all user/group management, combined with a custom set of modules for handling the quote items and sets, and then some drupal-free helper classes that were written to be drupal-independent so that they could be run without needing drupal.  Using Drupal no doubt saved considerable time in building an infrastructure for users and groups, and it's the second project i've done using drupal in this way.  I have *very* conflicted mixed opinions about Drupal, which i have vented about here.  My bottom line at this point, however, is that Drupal is probably a bad choice for projects like this that aren't really CMS-like at their core.  I find drupal completely unintuitive and extremely frustrating.  Their efforts at building a developer-friendly codebase is commendable, and Drupal does in fact have one of the very best interfaces to let developers write custom clean independent modules.  But trying to use Drupal as a kind of foundational framework for building something that isnt mostly a CMS is just too frustrating I think.

Webcam Video Diary grows out of existing code i've been writing to add video recording features to my Flipbook Printer application.  It relies heavily on a commercial video capture library to do the recording.  The main struggle I had with this program was dealing with the video capture libraries and the idiosyncrasies and options involved in video capture and compression.  There are just so many different things to tweak and configure, and options that affect audio sync, compression rates, etc.  I find such things, and working with any kind of hardware, exhausting and frequently frustrating.  Really makes me miss the days of straightforward platform-neutral code.

   * Were any clever design principles used?
    * Or any really hairy algorithms that you'd like to boast about?
    * What was the trickiest part?

I ended up implementing a bunch of code that does some hairy local proxy caching (actually on multiple levels) of data on UserQuotes, so that people could embed quotes on their pages in an efficient manner that wouldn't overload the main userquotes server even with huge numbers of page requests.  Unfortunately i have proven to myself once again that the more complex things get the harder they are to maintain and explain and configure, and the more things can go wrong.. so i'm currently trying to work out in my mind how much effort should be spend on this project.

   * Would you like to make a mention of any other DC members who helped out?

JavaJones worked closely with me on UserQuotes and it was a real pleasure to work with him.  The automatic thumbnail capturing functions are only working because dc server admin Gothi[c] was nice enough to spend some real time getting the code modified to run on the new server.

Navigation

[0] Message Index

[*] Previous page

Go to full version