{"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":1167,"url":"https:\/\/blog.eweibel.net\/?p=1167","url_meta":{"origin":835,"position":2},"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":[]},{"id":99,"url":"https:\/\/blog.eweibel.net\/?p=99","url_meta":{"origin":835,"position":3},"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":1033,"url":"https:\/\/blog.eweibel.net\/?p=1033","url_meta":{"origin":835,"position":4},"title":"Data quality as a business value","author":"Patrick","date":"3. Jun 2011","format":false,"excerpt":"It could happen, that you have to do some data migrations from time to time. If you are familiar with data migrations you know that it isn\u2019t an easy job. There are several concerns: Needed time to do the effective migration Cleaning up data Validate current data (consistency) Transform existing\u2026","rel":"","context":"In &quot;Software engineering&quot;","block_context":{"text":"Software engineering","link":"https:\/\/blog.eweibel.net\/?cat=14"},"img":{"alt_text":"DataQuality","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/DataQuality_thumb.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":367,"url":"https:\/\/blog.eweibel.net\/?p=367","url_meta":{"origin":835,"position":5},"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":[]}],"_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}]}}