<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Software on Richard Borges</title>
    <link>/tags/software/</link>
    <description>Recent content in Software on Richard Borges</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 17 Nov 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="/tags/software/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Using Playwright</title>
      <link>/post/2021-11-18-using-playwright/</link>
      <pubDate>Wed, 17 Nov 2021 00:00:00 +0000</pubDate>
      <guid>/post/2021-11-18-using-playwright/</guid>
      <description>&lt;p&gt;At the recent dotNetConf 2021, amongst all the other goodies released and presented ( .NET 6 ; VS2022 ), there was a session covering Testing tools for .NET.&lt;/p&gt;
&lt;p&gt;One in particular caught my eye. &lt;strong&gt;Playwright&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This one merits further investigation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://youtu.be/oPyTZ-HGdn4?t=16394&#34;&gt;Testing Tools for .NET and cross-platform apps&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://playwright.dev/dotnet/&#34;&gt;https://playwright.dev/dotnet/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Azure SQL performance tuning</title>
      <link>/post/2021-09-30-azure-sql-performance-tuning/</link>
      <pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate>
      <guid>/post/2021-09-30-azure-sql-performance-tuning/</guid>
      <description>&lt;p&gt;After recently migrating an application from on-premises to Azure, I have been keeping a close eye on its performance.&lt;/p&gt;
&lt;p&gt;The application uses Azure SQL. The Azure portal puts forth recommendations to tune the database e.g. create new indices or drop duplicates.
That works well.&lt;/p&gt;
&lt;p&gt;However I found another SQL query, which provides more recommendations&lt;/p&gt;
&lt;p&gt;This site &amp;lsquo;Tune your database&amp;rsquo; &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/azure-sql/database/performance-guidance&#34;&gt;Tune applications and databases for performance in Azure SQL Database and Azure SQL Managed Instance&lt;/a&gt; provided some useful guidance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell prompt</title>
      <link>/post/2021-09-04-powershell-prompt/</link>
      <pubDate>Sat, 04 Sep 2021 00:00:00 +0000</pubDate>
      <guid>/post/2021-09-04-powershell-prompt/</guid>
      <description>&lt;p&gt;Previously I had tried to install oh-my-posh prompts and folder icons. It never quite worked for me and I kept trying to fix it on and off.&lt;/p&gt;
&lt;p&gt;When &lt;a href=&#34;https://www.hanselman.com/blog/my-ultimate-powershell-prompt-with-oh-my-posh-and-the-windows-terminal&#34;&gt;Scott Hanselman&lt;/a&gt; posted about it (again) in Aug, I had to have a look.&lt;/p&gt;
&lt;p&gt;However even this time around, I did not get it 100% correct. Could be my profile file was corrupted. I did try a few things ( uninstalling the fonts, recreating my profile ), however things did not improve.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automated UI testing</title>
      <link>/post/2021-06-12-automated-ui-testing/</link>
      <pubDate>Sat, 12 Jun 2021 00:00:00 +0000</pubDate>
      <guid>/post/2021-06-12-automated-ui-testing/</guid>
      <description>&lt;p&gt;Finally got around to using Playwright - a tool for UI testing. The official documentation is here &lt;a href=&#34;https://playwright.dev/&#34;&gt;https://playwright.dev/&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;I am using C# and Microsoft has a nuget package. I also wanted to use it in a NUnit project.&lt;/p&gt;
&lt;p&gt;The two sites that helped me get started were :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://dotnetthoughts.net/testing-web-apps-with-playwright-and-dotnet/&#34;&gt;Testing Web Applications with PlayWright and C#&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://auth0.com/blog/e2e-testing-with-playwright-sharp/&#34;&gt;End-To-End Testing With Playwright Sharp&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create a new NUnit project in VS2019 (make sure you use .NET 5 and above). Add the Playwright NuGet package.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jekyll to Hugo</title>
      <link>/post/2021-04-03-jekyll-to-hugo/</link>
      <pubDate>Sat, 03 Apr 2021 00:00:00 +0000</pubDate>
      <guid>/post/2021-04-03-jekyll-to-hugo/</guid>
      <description>&lt;p&gt;This blog &lt;a href=&#34;https://www.richardborges.net&#34; title=&#34;richardborges.net&#34;&gt;richardborges.net&lt;/a&gt;, has been running on GitHub (and Jekyll) since July 2018.&lt;/p&gt;
&lt;p&gt;As the number of posts increased, I felt the need for a search feature. Elasticsearch is one of my favourite tools, but that would be an overkill for this static site. I wanted something small and easy.&lt;/p&gt;
&lt;p&gt;I have been following Jeremy Likness for a while and was quite impressed by his journey, migrating from &amp;ldquo;Medium&amp;rdquo; to &amp;ldquo;Hugo&amp;rdquo;. In particular &lt;a href=&#34;https://blog.jeremylikness.com/blog/dynamic-search-in-a-static-hugo-website/&#34; title=&#34;Dynamic Search in a Static Hugo Website&#34;&gt;Dynamic Search in a Static Hugo Website - Jeremy Likness&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Underlying provider failed on open</title>
      <link>/post/2020-04-15-underlying-provider-failed-on-open/</link>
      <pubDate>Wed, 15 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/post/2020-04-15-underlying-provider-failed-on-open/</guid>
      <description>&lt;p&gt;I was working on a Web App which uses a SQL database and EntityFramework. The app is hosted in Azure.
I spent some time fixing up the csproj file so that the build and release pipelines work correctly i.e. once the code is committed to the repository, a build is kicked off and deployment takes place.&lt;/p&gt;
&lt;p&gt;So far so good. However on visiting the site I see this error:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Error        : The underlying provider failed on Open.
Stack Trace    : at System.Data.Entity.Core.EntityClient.EntityConnection.Open()
at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elasticsearch upgrade</title>
      <link>/post/2018-10-13-elasticsearch-upgrade/</link>
      <pubDate>Sat, 13 Oct 2018 00:00:00 +0000</pubDate>
      <guid>/post/2018-10-13-elasticsearch-upgrade/</guid>
      <description>&lt;p&gt;These are my notes on upgrading &lt;a href=&#34;https://elastic.co&#34;&gt;elasticseach&lt;/a&gt; from v5.3 to v6.4.2. This was done on Windows Server 2016 with 32GB RAM and 500GB hdd. The source data was about 300GB in size.&lt;/p&gt;
&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;elastic.co&#34; loading=&#34;lazy&#34; src=&#34;../../images/2018/10/elastic.co.png&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download elasticsearch + kibana from &lt;a href=&#34;https://www.elastic.co/downloads&#34;&gt;downloads&lt;/a&gt;. After extracting to my local drive, I used &lt;a href=&#34;https://nssm.cc/&#34;&gt;NSSM&lt;/a&gt; to run these as windows services. You should now be able to visit http://localhost:9200 (elasticsearch) and http://localhost:5601 ( kibana )&lt;/li&gt;
&lt;li&gt;Copy across the 5.3 data using robcopy. Install elasticsearch 5.3 ( update elasticsearch.yml ) to run 5.3 at http://localhost:8200 ( as 6.4.2 is running on port 9200)&lt;/li&gt;
&lt;li&gt;Create the new indices on 6.4.2&lt;/li&gt;
&lt;li&gt;Migrate the data from 5.3 to 6.4.2 using reindex&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;additional-resources&#34;&gt;Additional resources&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade &lt;a href=&#34;https://www.elastic.co/guide/en/elasticsearch/reference/6.4/setup-upgrade.html&#34;&gt;Elasticsearch&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>NDC Sydney 2018</title>
      <link>/post/2018-09-21-ndc-sydney-2018/</link>
      <pubDate>Fri, 21 Sep 2018 00:00:00 +0000</pubDate>
      <guid>/post/2018-09-21-ndc-sydney-2018/</guid>
      <description>&lt;p&gt;Attended NDC sydney and quite enjoyed it. This is a 3 day conference held at the Hilton in Sydney CBD. They even organise a childrens coding camp before the start of the conference. Thats a nice touch.&lt;/p&gt;
&lt;p&gt;Attended quite a few talks over the 3 days.&lt;/p&gt;
&lt;h3 id=&#34;the-sessions&#34;&gt;The sessions&lt;/h3&gt;
&lt;p&gt;The ones that stand out for me were&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASP.Net Core 2.1 - the out of the box benefits&lt;/li&gt;
&lt;li&gt;Using Async-Await correctly in C#&lt;/li&gt;
&lt;li&gt;Team culture ( e.g. no blame retrospectives )&lt;/li&gt;
&lt;li&gt;React + GraphQL + Docker&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Learning react</title>
      <link>/post/2018-04-14-learning-react/</link>
      <pubDate>Sat, 14 Apr 2018 00:00:00 +0000</pubDate>
      <guid>/post/2018-04-14-learning-react/</guid>
      <description>&lt;p&gt;To come to grips with react, I completing a few courses on react at PluralSight, which helped me get a better understanding of react.&lt;/p&gt;
&lt;p&gt;I also found the facebook maintained react page worth a visit.&lt;/p&gt;
&lt;h3 id=&#34;create-react-app&#34;&gt;Create React App&lt;/h3&gt;
&lt;p&gt;Visit &lt;a href=&#34;https://github.com/facebook/create-react-app/blob/master/README.md#getting-started&#34;&gt;Create React App&lt;/a&gt; which contains step by step instructions.&lt;/p&gt;
&lt;h3 id=&#34;additional-resources&#34;&gt;Additional resources&lt;/h3&gt;
&lt;p&gt;I was trying to add a react component to an ASP.Net MVC page. This page  &lt;a href=&#34;https://www.robinwieruch.de/minimal-react-webpack-babel-setup/&#34;&gt;The Minimal React + Webpack 4 + Babel Setup&lt;/a&gt; proved very helpful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving from Wordpress to github pages</title>
      <link>/post/2018-01-07-moving-from-wordpress-to-github-pages/</link>
      <pubDate>Sun, 07 Jan 2018 00:00:00 +0000</pubDate>
      <guid>/post/2018-01-07-moving-from-wordpress-to-github-pages/</guid>
      <description>&lt;p&gt;[updated] 13 Oct 2018&lt;/p&gt;
&lt;p&gt;I was finally prodded into action when my wordpress blog site certificate expired.&lt;/p&gt;
&lt;p&gt;Using a few excellent resources available on the interwebs, I was able to run (generate in jekyll) the site locally on a Windows 10 machine and then push it to github (richardborges.github.io), which hosts for free !&lt;/p&gt;
&lt;h3 id=&#34;running-the-site-locally&#34;&gt;Running the site locally.&lt;/h3&gt;
&lt;p&gt;The main steps where
0. Make sure you have &lt;a href=&#34;https://docs.microsoft.com/en-us/windows/wsl/install-win10&#34;&gt; Bash on Ubuntu on Windows&lt;/a&gt; and have visited &lt;a href=&#34;https://jekyllrb.com/docs/windows/&#34;&gt;jekyll on Windows&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing Testing - where is my database?</title>
      <link>/post/2016-06-10-testing-testing-where-is-my-database/</link>
      <pubDate>Fri, 10 Jun 2016 00:00:00 +0000</pubDate>
      <guid>/post/2016-06-10-testing-testing-where-is-my-database/</guid>
      <description>&lt;p&gt;Recently while creating a unit test (MSTest VS2015) to test my repository pattern, I hit a snag. Despite having defined the database in my app.config of the Test project, I could not locate my newly created database.&lt;/p&gt;
&lt;p&gt;Turns out I needed to initialise my db in the test class , like so:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;pre class=&amp;#34;wp-code-highlight prettyprint linenums:1&amp;#34;&amp;gt;// Declare this property - this is set by MSTest
 public TestContext TestContext { get; set; }

 // In test initialization 
 [ClassInitialize]
 public static void SetUp(TestContext context)
 {
 AppDomain.CurrentDomain.SetData(&amp;#34;DataDirectory&amp;#34;, Path.Combine(context.TestDeploymentDir, string.Empty));
 }&amp;lt;/pre&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Saw this useful tip at &lt;a href=&#34;http://stackoverflow.com/questions/12450515/when-to-use-mdf-and-when-sdf&#34;&gt;Stackoverflow&lt;/a&gt;, which also talks about the differences between sdf (Server Explorer does not show table schema) and mdf (Server Explorer displays table schema).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using SignalR to stream performance data</title>
      <link>/post/2016-04-01-using-signalr-to-stream-performance-data/</link>
      <pubDate>Fri, 01 Apr 2016 00:00:00 +0000</pubDate>
      <guid>/post/2016-04-01-using-signalr-to-stream-performance-data/</guid>
      <description>&lt;p&gt;I am still coming to grips with the power of SignalR. In this demo (from PluralSight.com “ASP.NET MVC 5 Fundamentals ” by Scott Allen), performance monitoring data is streamed to a browser client. SignalR is used in ASP.Net with MVC5. In this case windows authentication was used to authenticate the user on the client (understandably so). &lt;a href=&#34;http://smoothiecharts.org/&#34;&gt;http://smoothiecharts.org/&lt;/a&gt; javascript was used to display the graphs. All very nice.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;PerfmonSignalR&#34; loading=&#34;lazy&#34; src=&#34;../../images/2016/04/PerfmonSignalR-300x251.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I went from http to https</title>
      <link>/post/2016-02-10-how-i-went-from-http-to-https/</link>
      <pubDate>Wed, 10 Feb 2016 00:00:00 +0000</pubDate>
      <guid>/post/2016-02-10-how-i-went-from-http-to-https/</guid>
      <description>&lt;p&gt;From &lt;strong&gt;http&lt;/strong&gt; to &lt;em&gt;&lt;strong&gt;https&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Today I went from here (http):
&lt;img alt=&#34;no cert&#34; loading=&#34;lazy&#34; src=&#34;../../images/2016/02/http.richardborges.net_.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;to (https:)&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https&#34; loading=&#34;lazy&#34; src=&#34;../../images/2016/02/https.richardborges.net_.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Troy Hunt in providing the &lt;a href=&#34;%5Bhttp://www.troyhunt.com/2013/09/the-complete-guide-to-loading-free-ssl.html&#34;&gt;instructions&lt;/a&gt;. That post was written in Sep 2013. I had to conduct a few trial and errors to get https working for my site.&lt;/p&gt;
&lt;h3 id=&#34;background&#34;&gt;Background:&lt;/h3&gt;
&lt;p&gt;My blog ( richardborges.net ) is hosted on Azure site (richardborgesblog.azurewebsites.net). I have pointed richardborgesblog.azurewebsites.net to richardborges.net. Visit the excellent PluralSight course by Troy Hunt on how to do this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSL certificate for an Azure website</title>
      <link>/post/2016-02-08-ssl-certificate-for-an-azure-website/</link>
      <pubDate>Mon, 08 Feb 2016 00:00:00 +0000</pubDate>
      <guid>/post/2016-02-08-ssl-certificate-for-an-azure-website/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.troyhunt.com/&#34;&gt;Troy Hunt&lt;/a&gt; very informative article on how to load a &lt;a href=&#34;http://www.troyhunt.com/2013/09/the-complete-guide-to-loading-free-ssl.html&#34;&gt;free SSL certificate onto your Azure website&lt;/a&gt;.
Thank you Troy. Written in 2013, but still relevant.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
