{"id":835,"date":"2010-10-27T16:28:19","date_gmt":"2010-10-27T14:28:19","guid":{"rendered":"http:\/\/blog.eweibel.net\/?p=835"},"modified":"2010-10-27T16:42:05","modified_gmt":"2010-10-27T14:42:05","slug":"ntimeline-project-first-release","status":"publish","type":"post","link":"https:\/\/blog.eweibel.net\/?p=835","title":{"rendered":"NTimeline project &#8211; First release"},"content":{"rendered":"<p>I currently started on codeplex.com an open source project. It was inspired by my last project. In this project I was a lead developer and software architect and the domain was about a social assurance. I was responsible about several developers and also for a product of the assurance-suite. This product was about retirements benefits in case the insurant died, retired or become invalid. The project was an success (finished in time, all requested features were implemented) and it is now since two years in production. <\/p>\n<p>One problem came us multiple time across: Building a timeline based on several sources which deliver time points or time periods. The timeline was needed to calculate the retirements benefits or to validate the users input.<\/p>\n<p>During the last months I asked myself, if the problem of building a timeline in the business layer isn\u2019t more or less a common problem. So I asked my boss if it is a problem if I start an open source project about this problem. He gave the OK, so I started my first open source project:<\/p>\n<p><a href=\"http:\/\/blog.eweibel.net\/wp-content\/uploads\/NTimelineLogo1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"NTimelineLogo\" border=\"0\" alt=\"NTimelineLogo\" src=\"http:\/\/blog.eweibel.net\/wp-content\/uploads\/NTimelineLogo_thumb1.png\" width=\"330\" height=\"95\" \/><\/a> <\/p>\n<p>First I tried to migrate the ideas from the project into the new open source project, but after a few days I recognized, that the problem could be solved in a much more cleaner and sophisticated way. The current code base is now optimized to build timelines and I tried to follow the <a href=\"http:\/\/butunclebob.com\/ArticleS.UncleBob.PrinciplesOfOod\" target=\"_blank\">SOLID principles<\/a>. Feel free to help me to improve the code base by using NTimeline or even by contributing.<\/p>\n<p><strong>Short overview over NTimeline<\/strong><\/p>\n<ul>\n<li>Building the timeline slices by yourself by implementing an specialized builder for time periods <\/li>\n<li>Provide time sources which provide time points or time periods for the timeline <\/li>\n<li>Walk through the timeline with your own implementations <\/li>\n<\/ul>\n<p><strong>Internal details<\/strong><\/p>\n<ul>\n<li>Visual Studio 2010 and .Net 4.0 <\/li>\n<li><a href=\"http:\/\/nunit.org\/\" target=\"_blank\">NUnit<\/a>, <a href=\"http:\/\/code.google.com\/p\/moq\/\" target=\"_blank\">Moq<\/a> frameworks for testing <\/li>\n<li><a href=\"http:\/\/stylecop.codeplex.com\/\" target=\"_blank\">StyleCop<\/a> and <a href=\"http:\/\/www.jetbrains.com\/resharper\/\" target=\"_blank\">Resharper<\/a> <a href=\"http:\/\/stylecopforresharper.codeplex.com\/\" target=\"_blank\">Plug-in<\/a>&#160; <\/li>\n<li><a href=\"http:\/\/www.dofactory.com\/Patterns\/PatternVisitor.aspx\" target=\"_blank\">Visitor pattern<\/a> for walking through the timeline <\/li>\n<li><a href=\"http:\/\/www.dofactory.com\/Patterns\/PatternBuilder.aspx\" target=\"_blank\">Builder pattern<\/a> for creating time periods based on the provided data of the time sources <\/li>\n<li>Simple interface and base class to build time sources <\/li>\n<\/ul>\n<p><strong>Download<\/strong><\/p>\n<p><a href=\"http:\/\/ntimeline.codeplex.com\/\" target=\"_blank\">NTimeline on codeplex.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I currently started on codeplex.com an open source project. It was inspired by my last project. In this project I was a lead developer and software architect and the domain was about a social assurance. I was responsible about several developers and also for a product of the assurance-suite. This product was about retirements benefits in case the insurant died, retired or become invalid. The project was an success (finished in time, all requested features were implemented) and it is&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/blog.eweibel.net\/?p=835\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13,6,14],"tags":[],"class_list":["post-835","post","type-post","status-publish","format-standard","hentry","category-net","category-new-technology","category-software-engineering"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/plOV9-dt","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":705,"url":"https:\/\/blog.eweibel.net\/?p=705","url_meta":{"origin":835,"position":0},"title":"Tailoring Scrum","author":"Patrick","date":"21. Sep 2010","format":false,"excerpt":"During the last big project, duration more than a year, we used scrum. But it was a tailored scrum process. The reasons for the tailoring were: No scrum\/agile experience in the company Small team (4 developers) Knowledge of tailoring RUP or Hermes First project with agile methods Normally I was\u2026","rel":"","context":"In &quot;Agile&quot;","block_context":{"text":"Agile","link":"https:\/\/blog.eweibel.net\/?cat=17"},"img":{"alt_text":"Test 029","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/Test029_thumb.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":489,"url":"https:\/\/blog.eweibel.net\/?p=489","url_meta":{"origin":835,"position":1},"title":"Kaizen and Software Engineering","author":"Patrick","date":"27. Oct 2009","format":false,"excerpt":"Kaizen is a very interesting approach, also in the software industry. On Wikipedia you\u2019ll find the following description of Kaizen: Kaizen is a Japanese word adopted into English referring to a philosophy or practices focusing on continuous improvement in manufacturing activities, business activities in general, and even life in general,\u2026","rel":"","context":"In &quot;Agile&quot;","block_context":{"text":"Agile","link":"https:\/\/blog.eweibel.net\/?cat=17"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":99,"url":"https:\/\/blog.eweibel.net\/?p=99","url_meta":{"origin":835,"position":2},"title":"ASP.NET MVC arrived","author":"Patrick","date":"20. Mar 2009","format":false,"excerpt":"As you alreay read or heard Microsoft released the ASP.Net MVC 1.0. From my perspective it is a step in the right direction. MVC is not just a pattern, it is about software quality and professional software development: In my eyes a professional software developer is concerned that there exists\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1086,"url":"https:\/\/blog.eweibel.net\/?p=1086","url_meta":{"origin":835,"position":3},"title":"Grooming your code base","author":"Patrick","date":"1. Sep 2011","format":false,"excerpt":"When you're doing Test Driven Development (TDD), it's in the process: Red-Green-Refactor. Refactoring doesn't only mean to improve your new code, it is also important to make your existing code nicer. If you are a .NET Developer, then you should have the Visual Studio Add-on ReSharper. With this tool you\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"Fotolia_32643902_S","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/Fotolia_32643902_S_thumb1.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":367,"url":"https:\/\/blog.eweibel.net\/?p=367","url_meta":{"origin":835,"position":4},"title":"Reason of silence","author":"Patrick","date":"13. Aug 2009","format":false,"excerpt":"Why is there no blog entry for the July and for the half of august? Well, the answer is, that my current project where I'm the project manager and and also the leader of a team of software engineers, comes to an end. Currently we implement the last features like\u2026","rel":"","context":"In &quot;Private&quot;","block_context":{"text":"Private","link":"https:\/\/blog.eweibel.net\/?cat=9"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1167,"url":"https:\/\/blog.eweibel.net\/?p=1167","url_meta":{"origin":835,"position":5},"title":"Who should make decisions about technologies?","author":"Patrick","date":"13. Feb 2012","format":false,"excerpt":"One of the biggest problems of software engineering companies in Switzerland is currently to get new software developers. To get new employees there are several points as for example salary, environment, career possibilities and technologies. The last point looks easy but in reality it isn't that easy. Why are essential\u2026","rel":"","context":"In &quot;New technology&quot;","block_context":{"text":"New technology","link":"https:\/\/blog.eweibel.net\/?cat=6"},"img":{"alt_text":"Stay on course","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/Fotolia_36561464_S_thumb.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=835"}],"version-history":[{"count":12,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/835\/revisions"}],"predecessor-version":[{"id":876,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/835\/revisions\/876"}],"wp:attachment":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}