On GUI side, I'v been fine-tuning the transfer page somewhat - there were some issues with multi-selection while filters were enabled. Also, I added support for pasting links to the gui (to start downloads). Settings page saw initial layout today, but I haven't managed to review/discuss it with our designer yet, so nothing conclusive there yet. The current idea is to have settings page behave just like any other page - a PAGE, not a dialog. There are somewhat mixed feelings about this - on one hand, it's standard to have settings/preferences as separate dialog; on the other hand, it's bad practice to have a set of buttons (top navigation buttons) all having the same effect (change the content of the bottom side), and then have one button behave differently (open a modal dialog). You can find few entries in
GUI Design Hall of Shame on this very thing, yet many (all?) P2P client interfaces seem to do this.
I also gave thought on the comment in previous blog post, regarding the mentioned usability issue with the filter bar. Yes, I agree that having a search box on the top-right corner is a growing standard; however that means in order to maintain the UI balance, I will also need to put something to the top-left corner (as you'v noticed, the UI is meant to be center-balanced - the bottom buttons are also centered now). Only logical thing to put to the top-left corner that I can think of right now would be a global status indicator, along the lines of "Ok, Online, Core up" etc - roughly same-sized, multi-function display element as the search-box on the right.
As for the filter-bar after we implement the above changes, I don't feel it works at the bottom, since the bottom is reserved for "action toolbar" or "taskbar" - logic being that you move in the UI from top to bottom - switch to correct page, find the object you'r interested in by filtering and/or clicking on list entries, and then perform the operation at the bottom. If you move the filter-bar to the bottom, it moves away from the natural flow in which the user would "parse" the interface.
There are some alternative solutions to the filterbar; for example, some interfaces allow "search-as-you-type" behaviour - when you start typing, a small text-edit box is displayed and filtering applied. This would make the entire filter-bar obsolete - the drop-downs on the filterbar weren't really useful anyway, perhaps only Status was, but the plans are to introduce grouped-view to the entire listing, where downloads are grouped to Complete [finished], Active [Waiting/Downloading] and Inactive [Paused/Stopped]. Canceled downloads should probably be removed from the listing instantly, since there are no operations you can perform on a canceled download (where-as you can "open" a Completed download).
On core-side, I
finally added full support for XP/SP2 limitations workaround - there's a new configuration option, "ConnectingCount" (not the best choice of names, I admit), which basically limits number of concurrent outgoing (half-open) connections, defaulting to 9 on windows and unlimited on other systems. Users running Hydranode on other systems should be warned though that if you have an XP/SP2 box sharing internet, that TCP connection limitation apparently affects ALL systems behind it as well - so even if you'r running Hydranode on linux, but Windows box is sharing net, you still run into this limitation. At least this is what I noticed during my tests - don't take this as absolute truth though, I might be wrong here.
Related to the above, the "half-open" connections suddenly became a very scarce resource, which means I had to fine-tune both ed2k and BT code to lower outgoing connection timeout from 30s to 15s (ed2k) and 5s (bt). Regression tests didn't bring out any issues even when reducing the ed2k timeout to 5s, so it's expected we will drop it to 5s shortly.
I'm also tracking some memory-usage issues that I'v detected recently, with hydranode using 60+mb memory. Towards that end, I added new command in hnsh, 'memstat' (abbr. 'mem'), which displays the amount of memory used by PartData file buffers. In worst-case scenario this can be as high as 0.5*num_downloads (500kb per download), but the average should be much lower.
Madcat, ZzZz