{"id":2559,"date":"2015-03-05T13:15:46","date_gmt":"2015-03-05T11:15:46","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=2559"},"modified":"2015-03-02T14:36:04","modified_gmt":"2015-03-02T12:36:04","slug":"prototypes-event-scheduler-project","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/","title":{"rendered":"Prototypes for my event scheduler project"},"content":{"rendered":"<p>I\u2019ve written a lot about prototypes since starting my <a title=\"My software side project : an event scheduler\" href=\"http:\/\/blog.cindypotvin.com\/my-software-side-project-an-event-scheduler\/\">event scheduler project<\/a>, but I didn\u2019t go in deep about why I was doing it, so here is it. In short, there are many unknowns in my project, both technical and product-wise, and I don\u2019t want to go too far in a direction without knowing if it will work since my time is limited. Problems can still crop up but a few good prototypes about the harder parts will give me a good idea of what to watch out for.<br \/>\n<a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction.jpg\"><img decoding=\"async\" class=\"alignright wp-image-2565\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-150x150.jpg\" alt=\"ProblemsBeforeProduction\" width=\"200\" height=\"200\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-150x150.jpg 150w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-300x300.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-200x200.jpg 200w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-100x100.jpg 100w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction-42x42.jpg 42w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/ProblemsBeforeProduction.jpg 490w\" sizes=\"(max-width: 200px) 100vw, 200px\" \/><\/a><\/p>\n<p>This concept of prototyping is taken from Extreme Programming (XP) practices and they call it a Spike. It is meant to be a technical exploration of a concept to reduce technical risk, which is exactly what I\u2019m looking for.<\/p>\n<p>In my case, I\u2019m at ease with building web applications in ASP.NET MVC with jQuery so I don\u2019t need to explore further on that front. Given that, there are two big areas that I\u2019m aware of and that I want to explore:<\/p>\n<p><strong>Real-time updates<\/strong><br \/>\nSince the software will be used to adjust schedules in real-time, I\u2019ll need to investigate the best way to show modifications directly on the schedule without refreshing the whole page. This is necessary for a good user experience when multiple users will be working on the same schedule.<\/p>\n<p>I probably won\u2019t code support for multiple users right away, but I want to learn a bit more about what\u2019s involved in managing real-time and what are the impact on the client-side code so I can at least consider it in my design.<\/p>\n<p>SignalR is pretty much the default for ASP.NET MVC projects so I\u2019ll probably go with this My experience last week <a title=\"Starting the prototype : building the database\" href=\"http:\/\/blog.cindypotvin.com\/starting-the-prototype-building-the-database\/\">when I built my database<\/a> made me wary about going against the logical choice for a framework if I want to maximize my time.<\/p>\n<p><strong>Interacting with sessions<\/strong><br \/>\nInteracting with the sessions of an event is a major part of the application, so I wanted to prototype the UI for this with as little code as possible. The point for this prototype is to validate if the ideas that I had while working on my mockup makes sense and can be implemented. Also, given that the application is meant to be used while the event is going on, it needs to be easy to use on a tablet. I already spoke about this prototype last week since I started by building a basic data model so I had data to interact with. I completed it this week, integrating the following elements of the UI :<\/p>\n<ul>\n<li>Showing a list of sessions from the database.<\/li>\n<li>When clicking on a session, a menu with options to move the session 15 minutes later or earlier is displayed.<\/li>\n<li>The list of sessions for the room can be scrolled to show the full duration of the day and expanded\/collapsed.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/EventSchedulingPrototype1.gif\"><img decoding=\"async\" class=\"aligncenter wp-image-2566\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2015\/02\/EventSchedulingPrototype1.gif\" alt=\"EventSchedulingPrototype1\" width=\"700\" height=\"252\" \/><\/a><\/p>\n<p>I\u2019m glad to say that it worked very well on my desktop and on my Nexus 7. I now feel a lot more confident about going forward with this for real since this test was successful. Still, I already have a few things I know to watch out for:<\/p>\n<ul>\n<li>When a date is created in JavaScript, this date is in the current timezone of the browser, which is wrong for or the purpose of event scheduling. The time displayed as the start and end time of a session should be the same regardless of the location of the user editing or viewing the schedule. I\u2019ll have to be really careful about that one, managing times correctly in JavaScript is not that obvious.<\/li>\n<li>I used a few dirty shortcut in the prototype to move sessions, calculating the new position in the timeline from the existing position in CSS. This gets the data as a string and not as an integer, so I had to use <em>parseInt<\/em> in a few places to convert the position in string back to an integer. The final version will have something better but it\u2019s a good reminder to always be careful about data types in JavaScript, it won\u2019t always cast values as expected.<\/li>\n<\/ul>\n<p>I also need to be careful about setting expectations for the project: it may looks like I made a lot of progress, but there is a ton of work left to do to make this ready for production. Prototypes and real, robust applications are a world apart: this version doesn\u2019t even save modifications!<\/p>\n<p>This test also made me realize that I should add one last prototype to my list: <strong>testing JavaScript frameworks<\/strong>. Since I need to update a few places on the page with the same information, I want to take a look at what\u2019s available for two-way data binding. On the other hand, I don\u2019t want to spend a month just on evaluating JavaScript frameworks since there is a ton of them available. I\u2019ll probably just get a list of the most popular ones and test only those.<\/p>\n<p>Next thing up is to do a very small prototype of refreshing data on the page with SignalR using the data I already have from my previous prototype. Anything I should watch out for?<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/blog.cindypotvin.com\/prototypes-for-my-event-scheduler-project\/\">Prototypes for my event scheduler project<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Cindy Potvin at the <a href=\"http:\/\/blog.cindypotvin.com\/\">Web, Mobile and Android Programming<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short, there are many unknowns in my project, both technical and product-wise, and I don\u2019t want to go too far in a direction without knowing if &hellip;<\/p>\n","protected":false},"author":36,"featured_media":1865,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-2559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Prototypes for my event scheduler project - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prototypes for my event scheduler project - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-03-05T11:15:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Cindy Potvin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/CindyPtn\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cindy Potvin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\"},\"author\":{\"name\":\"Cindy Potvin\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/5c5df30ebfba793235473ab81edbd742\"},\"headline\":\"Prototypes for my event scheduler project\",\"datePublished\":\"2015-03-05T11:15:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\"},\"wordCount\":901,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg\",\"articleSection\":[\"ASP.NET\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\",\"name\":\"Prototypes for my event scheduler project - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg\",\"datePublished\":\"2015-03-05T11:15:46+00:00\",\"description\":\"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ASP.NET\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/asp-net\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Prototypes for my event scheduler project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/5c5df30ebfba793235473ab81edbd742\",\"name\":\"Cindy Potvin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/957776d6732b26df4f63c29c8a3cb127ef09eb38b9f5befec1840ee3a1abed32?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/957776d6732b26df4f63c29c8a3cb127ef09eb38b9f5befec1840ee3a1abed32?s=96&d=mm&r=g\",\"caption\":\"Cindy Potvin\"},\"description\":\"Cindy is a programmer with over 5 years of experience developing web applications. She also works on Android applications and share her knowledge via her blog and on Twitter.\",\"sameAs\":[\"http:\/\/blog.cindypotvin.com\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/CindyPtn\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/cindy-potvin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prototypes for my event scheduler project - Web Code Geeks - 2026","description":"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/","og_locale":"en_US","og_type":"article","og_title":"Prototypes for my event scheduler project - Web Code Geeks - 2026","og_description":"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,","og_url":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2015-03-05T11:15:46+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg","type":"image\/jpeg"}],"author":"Cindy Potvin","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/CindyPtn","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Cindy Potvin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/"},"author":{"name":"Cindy Potvin","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/5c5df30ebfba793235473ab81edbd742"},"headline":"Prototypes for my event scheduler project","datePublished":"2015-03-05T11:15:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/"},"wordCount":901,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg","articleSection":["ASP.NET"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/","url":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/","name":"Prototypes for my event scheduler project - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg","datePublished":"2015-03-05T11:15:46+00:00","description":"I\u2019ve written a lot about prototypes since starting my event scheduler project, but I didn\u2019t go in deep about why I was doing it, so here is it. In short,","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/asp-dotnet-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/asp-net\/prototypes-event-scheduler-project\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"ASP.NET","item":"https:\/\/www.webcodegeeks.com\/category\/asp-net\/"},{"@type":"ListItem","position":3,"name":"Prototypes for my event scheduler project"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/5c5df30ebfba793235473ab81edbd742","name":"Cindy Potvin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/957776d6732b26df4f63c29c8a3cb127ef09eb38b9f5befec1840ee3a1abed32?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/957776d6732b26df4f63c29c8a3cb127ef09eb38b9f5befec1840ee3a1abed32?s=96&d=mm&r=g","caption":"Cindy Potvin"},"description":"Cindy is a programmer with over 5 years of experience developing web applications. She also works on Android applications and share her knowledge via her blog and on Twitter.","sameAs":["http:\/\/blog.cindypotvin.com\/","https:\/\/x.com\/https:\/\/twitter.com\/CindyPtn"],"url":"https:\/\/www.webcodegeeks.com\/author\/cindy-potvin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/2559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=2559"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/2559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/1865"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=2559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=2559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=2559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}