My favorites | Sign in
Project Logo
                
New issue | Search
for
| Advanced search | Search tips
Issue 86: [Feature] Kick Spy
1 person starred this issue and may be notified of changes. Back to list
Status:  Fixed
Owner:  gavinjoyce
Closed:  Sep 2007
Cc:  kfricovsky
Type-Enhancement
Priority-Medium
Component-UI


Sign in to add a comment
 
Reported by gavinjoyce, Sep 13, 2007
Kevin mentioned that he would like to add a 'kick spy' page (similar to
http://digg.com/spy) using jQuery.

It would be a nice feature to have.
Comment 1 by gavinjoyce, Sep 13, 2007
I assume that we wouldn't need to store anything in the database to support this? It
could work store its data just in the cache?
Cc: gavinjoyce
Comment 2 by kfricovsky, Sep 13, 2007
it could work with the cache although, ideally i'd ping the db every few seconds to
get the newest posts. 

if you could run a quick report to see how frequently people are adding new posts,
then I can set the timer to ping on that default interval.

but if we're only getting new stories submitted every few minutes, or less, then
maybe a "spy" won't be useful to the application I'm now starting to think.

it's useful to digg because they have soooo many stories submitted every second.


Comment 3 by gavinjoyce, Sep 13, 2007
How about we just create a Spy cache - it can be added to every time an action is
performed on the site:

SpyCache.NewKick(hostID, userID, storyID);
SpyCache.NewUser(hostID, userID);
SpyCache.NewComment(hostID, userID, storyID, commentID);
SpyCache.NewStory(hostID, storyID);
SpyCache.NewSpamStory(hostID, storyID);

The SpyCache would maintain a list of the last n operations, and could easily be queried:

SpyCache.GetList()
SpyCache.GetList(hostID)

The nice thing about this is its simplicity. It is lightweight and should be easy to
implement.
Comment 4 by gavinjoyce, Sep 13, 2007
Dzone list page views as well : http://www.dzone.com/spy
Comment 5 by james.e.welch, Sep 13, 2007
Maybe add these, too.

SpyCache.UnKick(hostID, userID, storyID);
SpyCache.ViewStory(hostID, userID, storyID); // maybe not implement it right now, but
code it in
SpyCache.TagStory(hostID, userID, storyID, tagID);
Labels: Component-UI
Comment 6 by kfricovsky, Sep 13, 2007
ooooh...I like the idea of multiple spies (kick, comment, etc).

I'll make one page where the user can change the spy via a dropdown.

So, a little more work but once I get one the rest will be easy.

(ps. i don't think NewUser or NewSpamStory are worthy of a spy though.)
Comment 7 by gavinjoyce, Sep 13, 2007
I would like to see NewUser in there - it is a good indication of how the community
is growing. About 10 people joined DNK today (new users in green, spammers in red):

http://www.dotnetkicks.com/whoisonline

Are we agreed that this spy data does not need to be persisted in the db?
Comment 8 by kfricovsky, Sep 13, 2007
spy data doesn't not (and shouldn't) be persisted in the db.

agreed!

new user will be in there as well :)
Comment 9 by james.e.welch, Sep 13, 2007
How about just having 1 spy with checkboxes like DiggSpy?

You could select whether or not to show kicks, comments, story adds, etc.
Comment 10 by kfricovsky, Sep 14, 2007
sure, checkboxes works. I'll take a look at what I cook up and decide on the best UI.

I'm not going to rush this though, since it's really a "bonus" feature and more eye
candy then a true utility. and when you take into consideration the other priorities,
it's a little less important.

that being said, I hope to get to it sooner vs later.

thanks for all the feedback - now I need to talk to gavin about the new caching he's
discussing so I make use of that vs the old method.

Comment 11 by gavinjoyce, Sep 15, 2007
If you like I will create the cache for this? It will utilise a number of custom
List<T> types.
Comment 12 by gavinjoyce, Sep 15, 2007
I have made a start on the cache, you can see it in action here:

http://www.dotnetkicks.com/spy

I hope to have the caching finished tomorrow - the UI can then follow.
Comment 13 by james.e.welch, Sep 15, 2007
Nice. I built one of these a couple years ago. Was gonna blog a how-to on it, but its
a little more simple than this (didn't have C# generics back then, so I stored a
datatable as a application level var).


Comment 14 by james.e.welch, Sep 15, 2007
Also, noticed a small thing with spy.

* x submitted X: (31 seconds ago)
* x kicked X: (31 seconds ago)

so the story was kicked before it was submitted? Might need to make sure the the
submitted item goes in prior to the kick item.
Comment 15 by gavinjoyce, Sep 15, 2007
Yeah, the order is out of whack. I'm not going to show the kick or tag message when a
user submits a story.
Comment 16 by james.e.welch, Sep 15, 2007
Would it be possible to link to the comment in the kick spy instead of linking to the
article? (When a spy item says X commented on Y, etc.)
Comment 17 by gavinjoyce, Sep 15, 2007
It sure will, there are lots of improvements that can be made here.
Comment 18 by kfricovsky, Sep 15, 2007
great feedback. gavin I'll get the latest source early this week and work on getting
this rockin with the new caching you've implemented...also will include shouts, etc.

will also allow users to limit the spy via checkboxes as requested above.

should be cool little feature.
Comment 19 by gavinjoyce, Sep 17, 2007
Even at this early stage of implementation, the kick spy is a useful little tool. It
seems to tie the whole site together, following shouts or comments is much easier now.

Perhaps we should persist this data in the db after all. User profiles and stories
could have their own spy view too. These wouldn't need to auto refresh like the main
spy view. We could then add a friends spy which would list all the action that your
friends have taken.



Comment 20 by kfricovsky, Sep 17, 2007
with gavin's suggestions above - we just need to add a SMS api and we'll have a more
robust version of twitter soon :)

i like the idea of a twitter esque profile page where you see a trail of what your
"friends" are doing, etc.
Comment 21 by gavinjoyce, Sep 17, 2007
The old SpyCache has been replaced with a UserAction model and UserActionCache.

I have added a mini Spy to each user profile.
Comment 22 by james.e.welch, Sep 18, 2007
Nice. How bout a story spy? a mini Spy on story page. :)

It would make it easier to see when someone kicked it, etc. Might take up too much
room though. 

How many items per user are you saving?
Comment 23 by gavinjoyce, Sep 18, 2007
I am currently storing everything, so from now on there will be a full history. We
can easily have a story spy - as you say, integrating it into the UI is the hard part.
Comment 24 by kfricovsky, Sep 18, 2007

I'm willing to help with updating the UI and making it functional as well as clean
and sexy. but, I've got a good amount of stuff on my plate right now so it's not
gonna happen over night. if anyone else wants to jump in...feel free.

This is what I'm thinking UI wise as far as the spy "trail", if you will.

http://chieftwit.jaiku.com/

I also want to move some of the stuff on the profile page around so it's more like
jaiku meets twitter.

but maybe we can have a little shoutbox discussion about this at some point.




Comment 25 by gavinjoyce, Sep 18, 2007
I hope to finish the spy this week. The UI will a little more polished and will auto
refresh, but it wont have filtering.

Ping me anytime you want to have a chat about the profile page. If you wait a little
while, I'll have the DNK chats started and we could use that. 
Owner: gavinjoyce
Cc: -gavinjoyce kfricovsky
Comment 26 by gavinjoyce, Sep 18, 2007
(No comment was entered for this change.)
Status: Started
Comment 27 by james.e.welch, Sep 21, 2007
It's not auto refreshing for me today.
Comment 28 by gavinjoyce, Sep 22, 2007
Thanks, auto-refresh fixed for 403.
Comment 29 by gavinjoyce, Sep 30, 2007
I'm closing this issue now. We may still want to build a nice client for the spy data
in the future, but it should be a separate issue.
Status: Fixed
Sign in to add a comment

Hosted by Google Code