Time Traquer


Published on

Powerpoint presentation for my semester project TimeTraquer. Free easy to use time tracking applicaiton.


Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Time Traquer

  1. 1. Time tracking application<br />Takayuki Hoffman<br />TimeTraquer<br />
  2. 2. What is TimeTraquer?<br />Easy to use time tracking application<br />Fully dynamic and cross browser compatible<br />Allow you to manage multiple projects, and it keeps track of the total amount of time you spend on each project. <br />Keep track of multiple tasks and create new tasks as your project grows. <br />
  3. 3. Technologies Used<br /><ul><li>ASP.NET MVC 3.0 (C#)
  4. 4. Entity Framework Code First 4.1 (O/RM)
  5. 5. REST (JSON)</li></ul>SQL Server (Database)<br /><ul><li>SQLite (Flatfile Database)
  6. 6. LINQ(Database access)</li></ul>HTML 5 (Presentation)<br />CSS (Presentation)<br /><ul><li>Javascript (Presentation)
  7. 7. Jquery (Presentation)
  8. 8. IIS (Middleware)
  9. 9. Git (Version Control)</li></ul>Visual Studio 2010 (IDE)<br />
  10. 10. Design Methodologies<br />Object Oriented Programming<br /><ul><li>D.R.Y. principles (Don’t repeat yourself)
  11. 11. S.O.C. (Separation of concerns)
  12. 12. M.V.C. (Model View Controller)
  13. 13. Repository Pattern (Database Access)
  14. 14. Refactoring (Till you drop)</li></ul>Self Documenting Code <br /><ul><li>Agile Development</li></li></ul><li>What is MVC?<br />Model. The model manages the behavior and data of the application domain.<br />View. The view manages the display of information. <br />Controller. The controller interprets user actions, informing the model and/or the view to change as appropriate<br />
  15. 15. ASP.NET MVC Benefits<br />Benefits<br />Separation of concerns (SoC)<br />Easier integration with client side tools (rich user interface tools)<br />Search Engine Optimization (SEO) Friendly / Stateless<br />Works well with developers who need high degree of control<br />Test Driven Development (TDD)<br />It’s Fun!!!<br />
  16. 16. Entity Framework<br />Microsoft’s O/RM (Object Relational Mapper)<br />Simplifies data access for the developer<br />Allows developer to avoid working directly with the database in the code<br />Allows developer to write queries against strongly typed classes letting (EF) to handle database interaction on the developer’s behalf<br />Saves the developer from having to write access code and then having to wire them up to objects<br />
  17. 17. LINQ<br />Language Integrated Query <br />LINQ provides a standard way to query a variety of datasources using a common syntax.<br />Benefits of LINQ<br />Standardized way to query multiple data sources<br />Compile time safety of queries<br />Optimized way to perform set based operations on in memory objects<br />Ability to debug queries<br />
  18. 18. What can LINQ query?<br />Linq to Objects which allows you to execute queries on any IEnumerable object. <br />Linq to Sql which allows you to execute queries against a database in an object oriented manner. <br />Linq to XML which allows you to query, load, validate, serialize and manipulate XML documents.<br />Linq to Entities<br />Linq to dataset<br />And more<br />
  19. 19. Example LINQ queries<br />var query = names.Where(filter) <br /> .OrderBy(extract).Select(project);<br />Full list<br />
  20. 20. SQL vs LINQ to entities<br />
  21. 21. SQL Profiler<br />
  22. 22. Results of the query<br />
  23. 23. Code Architecture<br />Architecture Goals<br />Maintainability<br />Extensibility<br />Clean separation of concerns<br />
  24. 24. Project Timeline<br />
  25. 25. Database Design - Application<br />
  26. 26. Database Design - Membership<br />
  27. 27. Original Mockup<br />
  28. 28. Prototype #1<br />
  29. 29. Prototype #2<br />
  30. 30. Final Design<br />Final design<br />
  31. 31. Problems and Solutions<br />Problem<br />How to store a duration of time?<br />How to get the stored milliseconds to the presentation layer?<br />Solution(s)<br />Store them as ticks <br /><ul><li>Store them as Milliseconds
  32. 32. Use Microsoft’s timespan library to convert the milliseconds into the required units then send that to the presentation layer</li></li></ul><li>Problems and Solutions<br />Problem(s)<br />Web host only allows one MSSQL database, but multiple are needed.<br />One database for user authentication<br />One database for application tasks<br />Solution(s)<br />Lump everything into one database <br /><ul><li>Use SQLite database for user authentication</li></ul>Flat file<br />Can handle a decent amount of requests without slowing down<br />Only one request per user, per session since once authenticated, username will live in an authentication cookie<br />
  33. 33. Open source uses and contributions<br /><ul><li>Project</li></ul>Datetime.js<br />Port for the timespan library from Microsoft to JavaScript<br />www.TODO.com<br /><ul><li> Contribution</li></ul>Bug fix<br />Time counted to :59 seconds then at 1:00 it would display 1:40:00 (hr:mm:ss)<br />Spent 8 hours finding bug and fixing it<br /><ul><li>Math when creating milliseconds was off (adding extra zeros)</li></li></ul><li>Open source uses and contributions<br /><ul><li>Project</li></ul>SQLite membership provider<br />Port for Microsoft’s membership provider to SQLite<br />www.TODO.com<br /><ul><li>Contribution</li></ul>Fixed security vulnerability<br />In Microsoft’s membership provider it uses a stored procedure to force user names to lowercase on creation however SQLite doesn’t support sprocs.<br />Gain user credentials by using a different case on user creation i.e. account name Bob would be able to view things created by account name bob<br /><ul><li>Go through membership provider and append .toLower() to all instances of username</li></li></ul><li>Open source uses and contributions<br /><ul><li>Project</li></ul>Stopwatch.js<br />www.TODO.com<br /><ul><li>Contribution</li></ul>Created open source stopwatch library that is reusable and extensible<br />Lightweight<br />9.99kb uncompressed<br />6.67kb compressed<br />375 lines of code<br />
  34. 34. Conclusion<br />The following picture sums up how I feel about programming<br />