<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6381946114717323081</atom:id><lastBuildDate>Wed, 16 Oct 2024 18:34:59 +0000</lastBuildDate><category>Episerver</category><category>Code Sample</category><category>Demo Code</category><category>Development</category><category>Microsoft Cognitive Services</category><category>Cloud</category><category>Component</category><category>Ektron</category><category>AWS</category><category>Ascend</category><category>Ascend2018</category><category>Attribute</category><category>Authoring</category><category>Categories</category><category>Code Bash</category><category>Face API</category><category>Find</category><category>Initialization</category><category>Lambda</category><category>Marketplace</category><category>Personalization</category><category>SMS</category><category>Security</category><category>Smart Forms</category><category>Translation</category><category>Troy Hunt</category><category>Twilio</category><category>Validation</category><category>Verndale</category><category>VisitorGroups</category><category>Weather</category><category>database</category><category>quick-tip</category><title>eGandalf&#39;s Happy Coding Corner</title><description>a web programmer&#39;s blog</description><link>http://egandalf.blogspot.com/</link><managingEditor>noreply@blogger.com (eGandalf)</managingEditor><generator>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-8367601360206450137</guid><pubDate>Mon, 09 Nov 2020 17:58:00 +0000</pubDate><atom:updated>2020-11-09T12:58:07.005-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Development</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Marketplace</category><category domain="http://www.blogger.com/atom/ns#">Verndale</category><title>Enabling Verndale&#39;s Verndale.ImpersonateUsers package in Episerver&#39;s Foundation CMS Application</title><description>&lt;p&gt;I recently needed to enable user impersonation for a prospective customer who wanted a better way to preview personalization for more complex scenarios where the in-editor Visitor Group Preview wasn&amp;#39;t quite sufficient. This is for a portal, where every user would be authenticated, so a fantastic workaround would be to simply impersonate a user. This may not solve for behavioral personalization, but theirs is primarily built around roles and profiles.&lt;/p&gt;&lt;p&gt;For example, what if we want to preview the home page as a member who belongs to the Human Resources team AND who also happens to be a new hire (&amp;lt; 30 days). If you had a visitor group that required both, and targeted it, that might work. But in this case, these are two separate visitor groups.&lt;/p&gt;&lt;p&gt;My chosen best option was to use a tool built by one of Episerver&amp;#39;s best partners, Verndale. Aptly named &lt;a href=&quot;https://marketplace.episerver.com/apps/verndale/impersonate-users-plugin/&quot;&gt;Verndale.ImpersonateUsers&lt;/a&gt;. It&amp;#39;s worth mentioning that Verndale has put a LOT of really nice add-ons in the marketplace and they&amp;#39;re worth checking out.&lt;br&gt;&lt;/p&gt;&lt;p&gt;There were a couple of bumps getting impersonation to work in Foundation, so here&amp;#39;s how to get up and running. &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a href=&quot;http://egandalf.blogspot.com/2020/11/enabling-verndales-verndaleimpersonateu.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2020/11/enabling-verndales-verndaleimpersonateu.html</link><author>noreply@blogger.com (eGandalf)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-3420390925024151663</guid><pubDate>Mon, 15 Jun 2020 13:58:00 +0000</pubDate><atom:updated>2020-06-16T10:31:19.333-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Demo Code</category><category domain="http://www.blogger.com/atom/ns#">Development</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Delivering Static HTML5 Apps from Zip Files in Episerver&#39;s Media Library using Partial Routing</title><description>Yeah, so the title seems like a mouthful but it&amp;#39;s really quite simple. A prospective customer of mine wanted to know if we could provide a better way of uploading some in-house developed HTML5 apps (large, searchable libraries of content made by another team, but I won&amp;#39;t go too deep into why they&amp;#39;re not just putting that content directly into the CMS).&lt;br&gt;
&lt;br&gt;
Their current solution involves a drawn-out process of replicating folders in SharePoint, uploading each folder&amp;#39;s files, go back, rinse, &amp;amp; repeat. Unfortunately, these apps are also updated every few weeks which means that the whole process must be repeated for every app, every month, every year. Sounds like a lot of work to me, so I wrote up a quick proof-of-concept solution that I think tidies up the process nicely.&lt;br&gt;
&lt;br&gt;
For this project, I&amp;#39;m going to use &lt;a href=&quot;https://github.com/episerver/Foundation&quot; target=&quot;_blank&quot;&gt;Foundation&lt;/a&gt; as the base site and add in a couple of models and a &lt;a href=&quot;https://world.episerver.com/documentation/developer-guides/CMS/routing/partial-routing/&quot; target=&quot;_blank&quot;&gt;partial router&lt;/a&gt; to get these things working. Let&amp;#39;s get started!&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2020/06/delivering-static-html5-apps-from-zip.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2020/06/delivering-static-html5-apps-from-zip.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhfNVhTsHf6cojKR1rTnLBEZofRB7B0fZCCI1sMkrpYd1wGuLn5AsXyapDwOYbQu9n-cUQojfh6Tyx4j9WSP5tQYLMXk9mNSb389VuIbrYTPt70dZnSObcbnvs8eFLXuM72IOkA2UHkjB-/s72-c/Screen+Shot+2020-06-05+at+3.27.21+PM.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-2015522044080241100</guid><pubDate>Thu, 28 Mar 2019 20:00:00 +0000</pubDate><atom:updated>2019-03-28T16:00:26.399-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Personalization</category><category domain="http://www.blogger.com/atom/ns#">VisitorGroups</category><category domain="http://www.blogger.com/atom/ns#">Weather</category><title>Personalize Content by Your Visitor&#39;s Current Weather Conditions</title><description>Over the past couple of years this need has come up in more and more of my demos and I decided to formalize some demo-ware code I had written previously.&lt;br&gt;
&lt;br&gt;
Personalization based on weather isn&amp;#39;t a new idea. There&amp;#39;s &lt;i&gt;some&lt;/i&gt; weather integration in the Alloy Demo Kit repo and I have seen weather personalization in other demos. However, it&amp;#39;s high time this was just as easy and available as any other criteria samples.&lt;br&gt;
&lt;br&gt;
Once you start to propose the idea - and start building it - the number of cases for this personalization start to grow dramatically.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2019/03/personalize-content-by-your-visitors.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2019/03/personalize-content-by-your-visitors.html</link><author>noreply@blogger.com (eGandalf)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-4071809368734789659</guid><pubDate>Tue, 16 Oct 2018 15:46:00 +0000</pubDate><atom:updated>2018-10-16T11:46:43.595-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Ektron</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Windows 2008 Support is Ending; What&#39;s Next for Ektron Customers?</title><description>With the end of support for Windows 2008 and 2008 R2 coming up in early 2020, customers of both Episerver and Ektron platforms may find themselves somewhat relieved to know that there are positive options that will help you move past this concern and onto a more up-to-date system with more capabilities and, for some, a more reliable and consistent upgrade path.&lt;br /&gt;
&lt;br /&gt;
My colleague, David Knipe, wrote a wonderful piece &lt;a href=&quot;https://world.episerver.com/blogs/David-Knipe/Dates/2018/10/end-of-support-for-windows-2008--what-this-means-for-you/&quot; target=&quot;_blank&quot;&gt;addressing EOL for Windows 2008 for Episerver customers&lt;/a&gt; running older versions, so, naturally, I decided to piggy-back on his awesome work (as usual) and provide similar coverage for Ektron customers. For implications of retiring support for a specific version of Windows, here are David&#39;s comments.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
If you are running an older version of Episerver then your site may 
be running on a version of Windows that is affected. This means you may 
be in a situation where Microsoft does not support the operating system 
your Episerver site is running. This means the operating system itself 
may be vulnerable to security threats or bugs in Windows that will not 
be fixed.&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
If you are running a recent version of Episerver then you are 
probably not affected, however some older versions of Episerver could 
run on Windows Server 2008 so you will need to check if you are affected
 using the list below.&lt;/blockquote&gt;
Ektron customers who are running older versions or perhaps have updated the CMS without simultaneously updating the server operating system to newer versions, similar concerns will apply.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The following Ektron versions will be directly impacted:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ektron CMS 8.0.x&lt;/li&gt;
&lt;li&gt;Ektron CMS 8.5&lt;/li&gt;
&lt;li&gt;Ektron CMS 8.6&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The following Ektron versions may be affected. These versions support Windows 2012, allowing you to buy a little more time. Windows 2012 support is currently scheduled to &lt;b&gt;&lt;a href=&quot;https://redmondmag.com/articles/2017/03/16/windows-server-2012-support-extended.aspx&quot; target=&quot;_blank&quot;&gt;expire in October of 2023&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Ektron CMS 8.7&lt;/li&gt;
&lt;li&gt;Ektron CMS 9.0&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Ektron CMS 9.1&lt;/li&gt;
&lt;li&gt;Ektron CMS 9.2&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Versions listed above include all patches and service packs.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are running on an older version of Ektron than 8.0, then you may already be affected by an end-of-life for your current operating system and therefore be more open to vulnerabilities that are unlikely to be patched by Microsoft.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Your Options for Ektron&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Upgrade.&amp;nbsp;&lt;/b&gt;At time of writing, the only Ektron version supported on the latest version of Windows (2016) is&amp;nbsp;&lt;b&gt;Ektron CMS 9.3&lt;/b&gt;, released on June 26, 2018. If you plan to stay on Ektron, then I recommend initiating a plan to ensure you&#39;re on the latest version of Ektron running on Windows 2016 servers by January 24, 2020.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Accept the risk&lt;/b&gt;. Sunsetting support is not the same as shutting the server off. Both the server and your version of Ektron will continue to run and operate. However, you will assume ever-increasing risk by running your digital applications in an environment that will no longer receive security patches and updates.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Your Options for Episerver&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you&#39;re running one of the versions of Ektron impacted by the sunsetting of Windows 2008 and are interested in the move to Episerver, then you should develop a plan for moving your digital applications to Episerver by January 24, 2020.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Doing less, for example, applying a minor upgrade to Ektron and putting it onto Windows 2012 servers, is a simple way to buy some time but may be wasted effort and capital if you plan to move to Episerver anyway.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When you move to Episerver, you have two options:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Migrate to the Episerver Digital Experience Cloud Service&lt;/b&gt;. The cloud service removes the need and risk of maintaining your own servers and ensuring they&#39;re up-to-date while making it easier to upgrade and adopt the latest Episerver has to offer in CMS, Commerce, Email, and Personalization in an entirely Episerver-managed cloud.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Migrate to the Episerver Digital Experience Cloud&lt;/b&gt; using your own infrastructure, whether hosted internally or through a 3rd party provider. This model is similar to self-hosting Ektron in that you (again) accept the responsibility for ensuring all systems are kept up-to-date.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
What Should You Do Now?&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Contact your Episerver Account Manager or, if you don&#39;t know who your Account Manager may be, then your &lt;a href=&quot;https://www.episerver.com/contact/offices/all-offices/&quot; target=&quot;_blank&quot;&gt;local Episerver office&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://egandalf.blogspot.com/2018/10/windows-2008-support-is-ending-whats.html</link><author>noreply@blogger.com (eGandalf)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-5869821085051019067</guid><pubDate>Wed, 07 Mar 2018 20:55:00 +0000</pubDate><atom:updated>2018-03-07T15:55:55.734-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ascend2018</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Sign Up for the Ascend 2018 2nd Annual &quot;Nerd Crawl&quot;</title><description>Last year, I put together a little group to hit the town during Episerver Ascend 2017. At the time, I was working with our partner, Brightfind, and managed to pull together about 15 people to join me on a tour of the pubs and sports bars in walking distance of the resort.&lt;br&gt;
&lt;br&gt;
This year... wow has this little enterprise grown! I sit here now typing about a get-together that has officially doubled in size (so far) and, well, I&amp;#39;d love to have more of you join in on the fun.&lt;br&gt;
&lt;br&gt;
If you&amp;#39;re already sold on joining, follow the magic hyperlink. If you&amp;#39;d like to know more, read on!&lt;br&gt;
&lt;a href=&quot;https://www.eventbrite.com/e/episerver-ascend-nerd-crawl-non-nerds-welcome-tickets-43725474070&quot;&gt;https://www.eventbrite.com/e/episerver-ascend-nerd-crawl-non-nerds-welcome-tickets-43725474070&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2018/03/sign-up-for-ascend-2018-2nd-annual-nerd.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2018/03/sign-up-for-ascend-2018-2nd-annual-nerd.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigE-2rZDeZM3TF69RpdhPHumAgf7pazrXKBchS1v7nOU67fLtUZKk8ewcRqQNUnPDI6-a8P8JmJplPBJuR0y3yC2iWAMk915LsmgQ8_hhr65fctQ5rw1rwnFeR4DKGKwuKMo-MwlDJjF-D/s72-c/IMG_1900.JPG" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-5416593422493884812</guid><pubDate>Wed, 10 Jan 2018 14:30:00 +0000</pubDate><atom:updated>2018-01-16T14:44:01.416-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Categories</category><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Making Episerver Categories More...Useful.</title><description>Episerver&amp;#39;s categories work fine for what they do, but they&amp;#39;re crammed into the legacy Admin area and, compared to the rest of the platform, feel a bit dated to me.&lt;br&gt;
&lt;br&gt;
Coming from the Ektron world, the comparative Taxonomy functionality was very front-and-center. While Ektron&amp;#39;s eventually came to be over-used (and abused) in any number of implementations, categorization of content using pre-defined lists and structures is still important to many organizations.&lt;br&gt;
&lt;br&gt;
If you need the hierarchy, then Episerver&amp;#39;s Category property works well for that. But sometimes I don&amp;#39;t really need hierarchy so much as I need to manage somewhat flat lists of categories - not all of which are really applicable to all content.&lt;br&gt;
&lt;br&gt;
In addition, I may sometimes want to allow multiple selections from that list while at other times it needs to be an exclusive selection. Enter &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ISelectionFactory&lt;/span&gt;.&lt;br&gt;
&lt;br&gt;
What follows is a bit of a thought experiment that shows how to use an external data source to feed a selection factory while experimenting with using Episerver Categories as the source.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2018/01/making-episerver-categories-moreuseful.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2018/01/making-episerver-categories-moreuseful.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAkrIgQVfKXLzKJilpthZjKbh5QYd0Eoc8q7sg91S0UrNkPk9bxzjV3BT1YIsCdfQuLGgD17-wFaLDUb4MKb7a4g-9clm5gcLFNqfB1yyrYBkZ2lTdYDSYUiDyOZq8UCdg6tRTurHIP66L/s72-c/Screen+Shot+2017-12-22+at+3.58.51+PM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-6575197773195502558</guid><pubDate>Wed, 03 Jan 2018 14:00:00 +0000</pubDate><atom:updated>2018-01-03T09:00:25.630-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Find</category><title>Hijacking Episerver Find&#39;s Unified Search Text</title><description>I&amp;#39;m going to sort of build onto &lt;a href=&quot;https://twitter.com/kennygutierrez&quot; target=&quot;_blank&quot;&gt;@kennygutierrez&lt;/a&gt;&amp;#39;s recent &lt;a href=&quot;https://world.episerver.com/blogs/kennyg/dates/2017/12/staying-under-the-document-limit-when-using-the-find-developer-index/&quot; target=&quot;_blank&quot;&gt;quick-tip post regarding limiting indexing with your developer Find index&lt;/a&gt; with a Find tip of my own.&lt;br&gt;
&lt;br&gt;
In the past few weeks, I&amp;#39;ve had a need to inject my own logic into how Find aggregates text for its &lt;a href=&quot;https://world.episerver.com/documentation/developer-guides/find/NET-Client-API/searching/Unified-search/&quot; target=&quot;_blank&quot;&gt;UnifiedSearch&lt;/a&gt;. I won&amp;#39;t get into the specifics of what I was doing (it would raise some questions as well as some eyebrows, to be honest), but I&amp;#39;d like to share the solution I found in the Episerver forums (sorry that I didn&amp;#39;t save which post and therefore can&amp;#39;t credit the poster, though I certainly owe them a drink).&lt;br&gt;
&lt;br&gt;
There will only be a couple of short code snippets with this as it&amp;#39;s really an elegantly simple, yet quite powerful solution.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2018/01/hijacking-episerver-finds-unified.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2018/01/hijacking-episerver-finds-unified.html</link><author>noreply@blogger.com (eGandalf)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-5716989921856483203</guid><pubDate>Wed, 08 Nov 2017 18:14:00 +0000</pubDate><atom:updated>2017-11-08T13:14:38.693-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ascend</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Security</category><category domain="http://www.blogger.com/atom/ns#">Troy Hunt</category><title>Get Schooled by Troy Hunt at Episerver #Ascend2018</title><description>It may be fair to say that most of the developer audience
going to Episerver Ascend in 2018 is already familiar with Troy Hunt (&lt;a href=&quot;https://twitter.com/troyhunt&quot;&gt;@troyhunt&lt;/a&gt;) and his, in my opinion, &lt;i&gt;amazingly valuable&lt;/i&gt; work. For anyone who
may not be familiar, I’m happy to elucidate the reasons I recommended we seek
Troy out to keynote our main event of the year.&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/11/get-schooled-by-troy-hunt-at-episerver.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/11/get-schooled-by-troy-hunt-at-episerver.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA0_DiNcWDj2MBRyaCDulsWeTCj_mOkcubPKULbpA2pBVYbfkm0whxA2gcXgcWWuniyP6XRp9Zkr7eKjZOm-nMyKn7OpoXDi6IJV9vKKNoFi2EbhAiM_bYDYtbDqNDgw4rf_ZWTQn8dcXI/s72-c/Screen+Shot+2017-11-08+at+11.32.54+AM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-329282843708948141</guid><pubDate>Wed, 06 Sep 2017 13:00:00 +0000</pubDate><atom:updated>2017-09-06T09:00:35.306-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Component</category><category domain="http://www.blogger.com/atom/ns#">Development</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Building an Episerver Component with Dojo including Localization and Context</title><description>I&amp;#39;m rather torn about whether or not to break this up into multiple, topical posts as it threatens to be a bit long. We&amp;#39;ll see how it goes... (ended up being one very long post)&lt;br&gt;
&lt;br&gt;
I recently released a new &lt;a href=&quot;https://github.com/egandalf/eGandalf.Epi.PagePreview&quot; target=&quot;_blank&quot;&gt;&amp;quot;Page Preview&amp;quot; package for Episerver 10+&lt;/a&gt; that adds a (somewhat large and obvious) Page Preview button to the author components / gadgets. The add-on is documented in the Git repo linked. This article (or series) is more about creating such a gadget - I&amp;#39;m going to keep it as high-level and logical as I can.&lt;br&gt;
&lt;br&gt;
My add-on uses a Partial Router to function, which is merely utilized by the functionality the add-on is meant to provide, not core to the fact that it is a component. So though that is in my code, it&amp;#39;s not covered here. I do cover building a partial router in &lt;a href=&quot;https://github.com/egandalf/Ascend17-Episerver-Lab-Code/blob/master/Lab%20Instructions.pdf&quot; target=&quot;_blank&quot;&gt;the docs I wrote for my Episerver Ascend 2017 presentation&lt;/a&gt; and the topic is definitely worth a Google if you&amp;#39;ve a mind to check it out.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/09/building-episerver-component-with-dojo.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/09/building-episerver-component-with-dojo.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSDGGfz9WGjHOCDAIf-8v_WLipURdTeju4yvfhKwoMbx3oyw_kmR-kUVtRJeksFeYiIJdpN1aLKh8b_npwBjbDUXa3nIklerW9QnsfiMc7aakwYp9WXaseyH46wlWrBG8EEoc5cyKSQ5U3/s72-c/Screen+Shot+2017-09-05+at+1.48.23+PM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-7959939441149436584</guid><pubDate>Thu, 31 Aug 2017 14:30:00 +0000</pubDate><atom:updated>2017-08-31T10:30:40.595-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Authoring</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Validation</category><title>Now Available: Episerver Property Validation</title><description>I&amp;#39;m trying to do more to get code wrapped up into packages and put into the Episerver Nuget feed.&lt;br&gt;
&lt;br&gt;
The first of these I&amp;#39;ve managed to get posted is a collection of validation attributes that can be applied to different types of content properties. Some of them affect strings, some affect media, and some affect lists/arrays, including ContentAreas.&lt;br&gt;
&lt;br&gt;
I won&amp;#39;t go into full detail for each here. For that, see the &lt;a href=&quot;https://github.com/egandalf/eGandalf.Epi.Validation&quot; target=&quot;_blank&quot;&gt;ReadMe on Github&lt;/a&gt;. What I will do is pick one or two and go through why I thought these were important to share and use.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/08/now-available-episerver-property.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/08/now-available-episerver-property.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitG9s1Ubzz_ODhw-KtBX-0nokyZzSh6qCOGwN0lOO_gPt2nkXK1VKSQiEr1nT6uxU_Uogx4NH74nRGn-OrSBnsCw1R9LnkDmUtKOnl7tB7f1EZkjYmR6fBzpzhm-dh5xQuqCoH9SlWkR-9/s72-c/Screen+Shot+2017-08-31+at+10.28.24+AM.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-8085449690725000943</guid><pubDate>Thu, 31 Aug 2017 13:31:00 +0000</pubDate><atom:updated>2017-08-31T10:46:48.334-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Attribute</category><category domain="http://www.blogger.com/atom/ns#">Component</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Translation</category><title>Quick Tip: Localized Strings in Episerver Attributes</title><description>I have a few blog posts I want to get done, but for now I&amp;#39;m starting with a quick tip I wanted to put out there for any newbie developers working in Episerver or working with translations in the authoring environment. I&amp;#39;m rather new to it at the moment, so every little bit helps.&lt;br&gt;
&lt;br&gt;
This post is a quick solution to providing translated (or translatable) text that&amp;#39;s being set within one of Episerver&amp;#39;s class or property attributes - where only constants are expected.&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/08/quick-tip-localized-strings-in.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/08/quick-tip-localized-strings-in.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtJIRRTYubf-RBb3vg9H_-d4NcXE9gzW5DoEA2Kx1lW8tbYRa9jT1LjZHs1tgJTYrH9cbLbE7D0lFB9zI-WBD92rPeqSr9B4j4YDV9hM2UaZQ0Fb-Sj7ljzvs8VwYq6AO_gMrXNJThKkq8/s72-c/Screen+Shot+2017-08-31+at+9.21.16+AM.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-3594752725904260790</guid><pubDate>Wed, 16 Aug 2017 14:17:00 +0000</pubDate><atom:updated>2017-08-16T10:28:14.644-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Demo Code</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><title>Episerver Shared Content with *Partial* Override Control</title><description>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;https://www.youtube.com/embed/mLpVf88rnOo&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
I was asked to create a quick proof of concept for sharing content between sites in Episerver. While there are many ways to do this, I wanted to create one that allowed for only part of the content to be overridden while the rest was enforced from the parent. The View shows how the output to the page can be determined on whether there is content available.&lt;br&gt;
&lt;br&gt;
I don&amp;#39;t claim it to be perfect nor production-ready. Just a bit of fun and a PoC.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/08/episerver-shared-content-with-partial.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/08/episerver-shared-content-with-partial.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/mLpVf88rnOo/default.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-6031605970948195990</guid><pubDate>Mon, 17 Apr 2017 14:46:00 +0000</pubDate><atom:updated>2017-08-16T10:28:43.419-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Initialization</category><category domain="http://www.blogger.com/atom/ns#">Microsoft Cognitive Services</category><title>Episerver Automatic Image Tagging with Microsoft Cognitive Services</title><description>I must admit I&amp;#39;m enjoying messing around with Microsoft&amp;#39;s Cognitive Services, as is probably evidenced by &lt;a href=&quot;http://egandalf.blogspot.com/2017/04/200-lines-or-less-combining-twilio-aws.html&quot; target=&quot;_blank&quot;&gt;the SMS App I made for my Dad&lt;/a&gt;, I also figured I could turn this into a practical application for work as well.&lt;br&gt;
&lt;br&gt;
I&amp;#39;m willing to bet that &lt;i&gt;most&lt;/i&gt; organizations are still a bit behind on the content strategy curve at this point and aren&amp;#39;t adequately tagging their content and images. So I decided to build out a demo-ware / proof of concept for auto-tagging images, which will soon grow into processing content text, possibly as an add-on for the community. We&amp;#39;ll see.&lt;br&gt;
&lt;br&gt;
It&amp;#39;s worth noting that the results that come back are suspect at best. Machine-based tagging should be looked at much like we look at machine-translation. It&amp;#39;ll get close, but if you use it then there should be some human moderation put into play. Either pre-publish or post-publish doesn&amp;#39;t matter, just know that &lt;b&gt;you&amp;#39;re not going to get 100% accuracy&lt;/b&gt;. You should expect some tags you&amp;#39;ll want to remove and that you&amp;#39;ll want to step in and add your own as well.&lt;br&gt;
&lt;br&gt;
Still, I find that the tagger inserts values that are likely helpful as well as likely un-thought-of by some authors.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/04/episerver-automatic-image-tagging-with.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/04/episerver-automatic-image-tagging-with.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggtMwvAS0yMudMpobbxKqMo58OStfMXb5GGSMZnOqE0K3FkQwLkzJ2hzlngfD6MP7nwuwetmcWCpD4d0kZ_5r0JYESmrtxMejeLHlkxs_MwnfKhk8exzAYTsKhtBmD4t-9WTbfgeEIG2hI/s72-c/monty-pythons-flying-circus-graham-chapmans-personal-best-20060412033759998-1466257.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-4389949131670342199</guid><pubDate>Thu, 13 Apr 2017 22:09:00 +0000</pubDate><atom:updated>2017-08-16T10:29:26.265-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AWS</category><category domain="http://www.blogger.com/atom/ns#">Lambda</category><category domain="http://www.blogger.com/atom/ns#">Microsoft Cognitive Services</category><category domain="http://www.blogger.com/atom/ns#">SMS</category><category domain="http://www.blogger.com/atom/ns#">Twilio</category><title>200 Lines or Less: Combining Twilio, AWS Lambda, and MS Cognitive Services into an SMS Image Analyzer</title><description>(Cool story. &lt;a href=&quot;https://github.com/egandalf/SMS-Image-Analyzer&quot; target=&quot;_blank&quot;&gt;Show me the code!&lt;/a&gt;)&lt;br&gt;
&lt;br&gt;
I&amp;#39;ve been doing a bit in the way of personal projects and a major source of inspiration for them is my Dad, who has been slowly but surely losing his eyesight for the past decade or so. I really want to help him navigate an intensely, naturally visual world as his affliction progresses. Through hours... and hours... of searching Google, I&amp;#39;ve found very few resources that are practical enough for every-day use.&lt;br&gt;
&lt;br&gt;
That&amp;#39;s not to say that there&amp;#39;s nothing out there. Apple has been doing a fairly great job making iOS accessible for him - he zooms and has text read to him all the time on his phone. He uses his phone camera to snap pictures of items he wants to zoom in on to read. Not to mention Siri and the help she/it has provided so he can stay in touch with family and friends. Siri also helps him find how to get home, which is pretty critical to a man who walks nearly everywhere and can&amp;#39;t read road signs. If he takes a wrong turn, it&amp;#39;s easy for him to ask &amp;quot;Where am I?&amp;quot; to regain his bearings.&lt;br&gt;
&lt;br&gt;
I&amp;#39;ve introduced my Dad, an avid reader all his life, to the wonder of audiobooks. He now has multiple Alexa-enabled devices around his condo that he uses to control lights, set timers, manage lists, and get tide schedules (he lives by the beach).&lt;br&gt;
&lt;br&gt;
So there&amp;#39;s not &lt;i&gt;nothing&lt;/i&gt; for him to use, but there are a lot of things that are not as good as they could be for him. And some of what I&amp;#39;ve found online, such as desktop magnifiers, that are simply absurdly priced as medical equipment rather than the convenient household electronics they could or should be. The cheap ones I&amp;#39;ve seen hover around the $1,500 mark. For a camera and a screen. I&amp;#39;m considering building one out of an old monitor and a Raspberry Pi with a camera. Maybe even a Pi Zero. I figure it&amp;#39;ll set me back about $200.&lt;br&gt;
&lt;br&gt;
The point is that the resources are few, expensive, or only moderately effective.&lt;br&gt;
&lt;br&gt;
What&amp;#39;s a developer to do? Why, build something of course!&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/04/200-lines-or-less-combining-twilio-aws.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/04/200-lines-or-less-combining-twilio-aws.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikPt-1oQd5KJKO6gJf0PulmQ2qYukOr_xu77e-FoD9oVBtGFXPPNTppfP5O0y2DH9mWCRVMsld4HPmPpdvFSU9nCqzUAH8OkohuTpVA5N7yXO_vIqRlPXcDiikumwIEstxIk4WR0PXDNvJ/s72-c/Screen+Shot+2017-04-13+at+6.00.12+PM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-3995287698641001537</guid><pubDate>Mon, 20 Mar 2017 14:05:00 +0000</pubDate><atom:updated>2017-03-20T10:08:51.499-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">database</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">quick-tip</category><title>Quick tip: Checking the version of your Episerver Database</title><description>Just a quick post on this one. A friend was recently having problems trying to make updates to his local Episerver site via Nuget. Even after running updates to the DB via the package manager console (update-epidatabase), he was getting errors and he was concerned that there was a DB version mismatch between what he had and what the code was expecting.&lt;br /&gt;
&lt;br /&gt;
(Note: he was trying to use the auto-create schema function in a version prior to when it was implemented.)&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you want to verify your DB version against what you should have for your code to work correctly, check the version for your DLL first and go to Episerver&#39;s nuget site, which has a handy &lt;a href=&quot;http://nuget.episerver.com/en/Comparedatabase/&quot; target=&quot;_blank&quot;&gt;Compare Database tool&lt;/a&gt;. Plug in values for the from/to that at least encompass your DLL version number. This will give you a list of DLL versions paired with DB versions, so you can see where changes to the database have been made.&lt;br /&gt;
&lt;br /&gt;
Next, open up SQL Server Management Studio and connect to your DB server. Navigate the tree to [YourDB] &amp;gt; Programmability &amp;gt; Stored Procedures and execute dbo.sp_DatabaseVersion. The return value of this function will be the version for your DB.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi39nOyM4uL6eCpqGwWEo5NhmdSWho9D4BAtBiI757YKHlRrEpc-FrZ6wOf9XSzpUdH59u_c4ukJHn1nieXkK0pkORyFSNjhfgZNB4HPyaFV6NyxaPvpn8sjiIdr20rC7y6I9kZnQsdATFF/s1600/Screen+Shot+2017-03-20+at+9.51.51+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;A screenshot of Sql Server Management Studio running the Database Version stored procedure.&quot; border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi39nOyM4uL6eCpqGwWEo5NhmdSWho9D4BAtBiI757YKHlRrEpc-FrZ6wOf9XSzpUdH59u_c4ukJHn1nieXkK0pkORyFSNjhfgZNB4HPyaFV6NyxaPvpn8sjiIdr20rC7y6I9kZnQsdATFF/s400/Screen+Shot+2017-03-20+at+9.51.51+AM.png&quot; title=&quot;Running Database Version Stored Procedure&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Compare and proceed accordingly.</description><link>http://egandalf.blogspot.com/2017/03/quick-tip-checking-version-of-your.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi39nOyM4uL6eCpqGwWEo5NhmdSWho9D4BAtBiI757YKHlRrEpc-FrZ6wOf9XSzpUdH59u_c4ukJHn1nieXkK0pkORyFSNjhfgZNB4HPyaFV6NyxaPvpn8sjiIdr20rC7y6I9kZnQsdATFF/s72-c/Screen+Shot+2017-03-20+at+9.51.51+AM.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-7497748417215146327</guid><pubDate>Mon, 06 Mar 2017 20:28:00 +0000</pubDate><atom:updated>2017-03-06T15:30:52.813-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Bash</category><category domain="http://www.blogger.com/atom/ns#">Demo Code</category><category domain="http://www.blogger.com/atom/ns#">Episerver</category><category domain="http://www.blogger.com/atom/ns#">Face API</category><category domain="http://www.blogger.com/atom/ns#">Microsoft Cognitive Services</category><title>Face-Based Login with Episerver and Microsoft Cognitive Services</title><description>Last week was Episerver Ascend 2017 and as part of the last day a good number of us participated in a Microsoft-sponsored Code Bash - a miniaturized hackathon, if you will. While the event itself was not without flaw (we could all have used more time and there were scheduling conflicts with other sessions), the technology employed was exciting and fun to work with.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2017/03/face-based-login-with-episerver-and.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2017/03/face-based-login-with-episerver-and.html</link><author>noreply@blogger.com (eGandalf)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHmRrRk7xg93evTj1NXp5TvPDXLCMxuYDgfZbMs0g40s6REULxO-ipoC0HhgzpJ_tZ0NSuPtQ1sYX_YHa1AbpML7O9ZNmqciRQH8xgi1_9-mVXx-GzeRgRr5cLjAkiAkSyboD7ticYk3rt/s72-c/Screen+Shot+2017-03-06+at+3.24.18+PM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6381946114717323081.post-1038164545118990697</guid><pubDate>Thu, 13 Oct 2016 21:46:00 +0000</pubDate><atom:updated>2016-10-13T18:31:39.447-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Sample</category><category domain="http://www.blogger.com/atom/ns#">Ektron</category><category domain="http://www.blogger.com/atom/ns#">Smart Forms</category><title>A Comprehensive Guide to using Generated .NET Content Types with Ektron CMS 8.5+</title><description>&lt;span style=&quot;font-family: inherit;&quot;&gt;The example I&amp;#39;m creating below is for output of images in a list, as though I were going to make a gallery. Keep in mind that there are other things I would do when &lt;em&gt;actually&lt;/em&gt; creating a gallery, so this is by no means completed code in that regard. It is, however, a very good and simple illustration for how to retrieve and handle content from Ektron in the most .NET way possible (without a lot more separation of concerns).&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://egandalf.blogspot.com/2016/10/a-comprehensive-guide-to-using.html#more&quot;&gt;Read more »&lt;/a&gt;</description><link>http://egandalf.blogspot.com/2016/10/a-comprehensive-guide-to-using.html</link><author>noreply@blogger.com (eGandalf)</author><thr:total>1</thr:total></item></channel></rss>