S N A I L Final Presentation

455 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
455
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

S N A I L Final Presentation

  1. 1. SNAIL – quick accesstoSocial Networks in EmAIL<br />Final Presentation<br />
  2. 2. The Problem<br />
  3. 3. TooMany<br />Emails<br />Hard tosearchthrough<br />Hard toprioritize<br />
  4. 4. The Goals<br />
  5. 5. Find Emails faster!<br />
  6. 6. Find Emails faster!<br />Develop<br />Contactoriented<br />Email Sorting<br />
  7. 7. Find Emails faster!<br />Develop<br />Contactoriented<br />Email Sorting<br />
  8. 8. Take<br />Social Networksinto Account<br />
  9. 9. Find Emails Faster<br />DistinguishImportantfromUnimportant Mails<br />
  10. 10. Our Plan<br />Extractrawmetrics<br /><ul><li>Gatherdata</li></ul>Consolidate Email Messages<br /><ul><li>Aggregate byContacts
  11. 11. Link threadedEmails</li></ul>IntegrateintotheContext Framework<br /><ul><li>Hook on to Email Events
  12. 12. Perform XML RPC Calls on Event</li></li></ul><li>Develop Outlook Plug-In<br /><ul><li>Grab Mail Information
  13. 13. Hook on to Events</li></ul>ProvideConvenient Interface<br /><ul><li>Sidebar Style
  14. 14. Contact List
  15. 15. Thread View</li></ul>Software<br />Development<br />Steps<br />
  16. 16. Concept<br /> Design<br />
  17. 17. Tools Of<br />The Trade<br />C#.Net<br /><ul><li>Modern object-orientedprogramminglanguage
  18. 18. Requiresthe .net framework</li></ul>Visual Studio Tools for Office (VSTO)<br /><ul><li>Provides Access to Microsoft Office
  19. 19. Datatypes
  20. 20. Events
  21. 21. Methods</li></li></ul><li>User Interface Design<br />
  22. 22. Whatwewant<br />
  23. 23. Sidebar<br />Here<br />
  24. 24. But!<br />
  25. 25. How do<br />We<br />achieve<br />This?<br />
  26. 26. VSTO providesform regionsfor Outlook, but no Sidebar feature<br />HowTointegrate a Sidebar?<br />Use Win32 methods<br /><ul><li>P/Invoke
  27. 27. Windows API</li></li></ul><li>Sidebar<br />Here<br />
  28. 28. NewMail Event<br /><ul><li>Triggers when a new Email isreceived</li></ul>ItemAdd / ItemRemove / ItemChange<br /><ul><li>Triggers whenan Item isaddedto a folder /removedfrom a folder / changed in a folder</li></ul>ItemSend<br /><ul><li>Triggers when an Item issent</li></ul>HookingUp<br /> Events<br />
  29. 29. Gettingthe Data<br />GenerateStatisticsfrom Outlook User Data<br /><ul><li>Iterateover all folderstoretrieve all Mail items
  30. 30. Pull Information from Mail Item Object
  31. 31. Sender
  32. 32. Recipient
  33. 33. Subject
  34. 34. Create a Hashtablewhere Messages arestoredwithContactsas Keys</li></li></ul><li>Outlook<br />File System<br />Folders objectsrepresent Outlook Folders<br />MailItemobjectsrepresent Email Items<br /><ul><li>Are identifiedbytheiruniqueEntryID
  35. 35. Contain all relevant Information forthe Email</li></ul>ContactItemobjectsrepresentContact Items<br /><ul><li>Are identifiedbytheiruniqueEntryID</li></li></ul><li>Outlook Object Model<br />
  36. 36. Gettingthe Mails<br />In Outlook Mails aresortedcontained in folders<br />Eachconfiguredprofileis a folderandhas subsequent subfolders<br />Iteration over all Folders necessary<br />
  37. 37. The<br />Problem<br />No simple waytoretrieve all MailItemsatonce<br /><ul><li>Iteration over all Items hastobedone
  38. 38. Identify Folders andperformrecursiveiteration
  39. 39. Save all MailItems in a Dictionary</li></li></ul><li>Contact Class<br />DisplayString<br />ContactString<br />ContactMessages Class<br />LastMessageReceived<br />LastMessageSent<br />LastMessegeReceived/Sent<br />ToMessages<br />FromMessages<br />ContactMessage Class<br />EntryID<br />MailDate<br />Savingrawmetrics<br />
  40. 40. MapsTo<br />Contains<br />Class<br />Relations<br />
  41. 41. Pullinginformation<br />From<br />Mailitem<br />MailItemprovidesuswith<br />Subject<br />Recipient<br />Sender<br />ConversationID<br />Allowsustotrackconversationsandaggregatethreads<br />
  42. 42. Adding Outlook Contacts<br />CorrelationofgeneratedContactswith Outlook Contacts<br />Find existing Outlook Contactsand link themwithgeneratedContacts<br />Create new Outlook ContactsfromgeneratedContacts<br />Development<br />Get all Outlook ContactItemobjects<br />RetrieveEntryID<br />Save EntryID<br />
  43. 43. Connecting<br />With<br />Facebook<br />Contactscan also befound on socialnetworks<br />Development<br />Facebook SDK pullsinformationfromyourfacebookuserprofile<br />
  44. 44. Serialization<br />Outlook Items can not beserialized!<br />But insteadtheEntryIDcanbestored<br />Retrieve Outlook Items fromEntryID<br />InvokeGetItemFromID(stringEntryID)<br />Store onlytheEntryIDofthe Outlook Item<br />.NET Serializationtakescareofautomaticsaving & loadingofdata<br />
  45. 45. SortingTechniques<br />Concept 1:<br />Order By<br />Unreadyes/no<br />Score = 1−Sent+0,00001Received+0,00001+0,1Sent+0,00001 The smallerthebetter<br />Concept 2:<br />Order By<br />Unreadyes/no<br />Last Message received / sent<br />Sent Mails<br /> <br />
  46. 46. Provide Property for Score calculation<br />SortContactlistwith Lambda Expressions<br />Sample<br />Contacts = Contacts.OrderByDescending(x =&gt; x.UnreadMails).ThenBy(x =&gt; x.RatingsScore).ToList();<br />Developingit<br />
  47. 47. Score samples<br />
  48. 48. Evaluation<br />Evaluation of Concepts yielded the following Results<br />Concept 1<br />very efficient at finding organic contacts (contacts that are perceived as important)<br />But does not take time into account, e.g. an old friend with tons of old emails can only slowly be topped by a new organic contact<br />Concept 2<br />Not very efficient at finding organic contacts (irrelevant contacts can be on the top of the list, only due to lastmessage)<br />Concept 1 is more efficient than Concept 2 (Relevance estimation is more accurate)<br />A mixture of Concept 1 & Concept 2 is even more efficient<br />Determine Score on the basis of all sent/received mails in a certain timespan<br />
  49. 49. Outlook 2007 Plugin – Main Window<br />
  50. 50. Outlook 2007 Plugin – Thread View<br />
  51. 51. Conclusion<br />&<br />Test Results<br />SNAIL has been able to improve email usage by making<br />Emails faster to find<br />Frequently contacted people easier to find<br />Handle incoming mails by contact priority<br />Showing Social graphing<br />Connecting social networks to email<br />Users testing SNAIL have said<br />That the contact rating is surprisingly accurate<br />That it provides an interesting new concept of writing & finding mails<br />They like it because it integrates seamlessly into their existing Outlook Clients<br />
  52. 52. Outlook<br />Evaluation of alternative sortingmechanismsmaybedone, considering<br />Takingsocialcontactsintoaccountwhencalculating score<br />Manual biasingof score bytheuser (votesystem)<br />
  53. 53. Graph Visualization<br />Show Contactrelationshipswith an Interface<br />UseNodeXLforVisualizationofSocialConnections<br />UseConnectedContact Property as Data<br />
  54. 54. Connectingto<br />The context Framework<br />
  55. 55. Tracks a user’s activities<br />Gets informations from various sensors<br />Is accessed via XML RPC<br />The context Framework<br />
  56. 56. XMLRPC<br />Requirement to interact with the context Framework<br />Consumption of XMLRPC services via C#<br /><ul><li>Use XMLRPC.NET library</li></ul>Create a proxy and define functions<br />Wire up to Outlook events and trigger XMLRPC calls<br />
  57. 57. Codeplex<br />Microsoft‘sSourceforge (mostly .NET stuff)<br />SNAIL ishosted on<br />http://snail.codeplex.com/<br />
  58. 58.
  59. 59. Questions<br />Anyone?<br />Qiong Wu<br />qiong.wu@studentpartners.de<br />+49-152-29845748<br />

×