{"id":230,"date":"2023-02-18T20:08:54","date_gmt":"2023-02-18T20:08:54","guid":{"rendered":"https:\/\/nas01.tallpaul.net\/wordpress\/?p=230"},"modified":"2024-11-20T20:18:56","modified_gmt":"2024-11-20T20:18:56","slug":"quickly-deploy-net-game-on-power-x86-from-the-same-source","status":"publish","type":"post","link":"https:\/\/nas01.tallpaul.net\/wordpress\/2023\/02\/quickly-deploy-net-game-on-power-x86-from-the-same-source\/","title":{"rendered":"Quickly Deploy .NET Game on Power &#038; x86 From the Same Source"},"content":{"rendered":"\n<p id=\"onx86\">Learn how to deploy a simple arcade-style game written for x86 with .NET using source code shared on <a href=\"https:\/\/github.com\/paulchapmanibm\/stayingalive\" title=\"\">GitHub<\/a>. The same source code is used to deploy on Power with OpenShift, and Fedora on x86. Full guided instructions are provided.<\/p>\n\n\n\n<p><a href=\"#deploy-on-power\" title=\"Deploy .NET game on Power\">Deploy .NET game on Power<\/a><\/p>\n\n\n\n<p><a href=\"#deploy-on-x86\" title=\"\">Deploy .NET game on x86<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy on Power &#8211; GUI<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Create and deploy .NET game on Power\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/MzdtWk04PIk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Deploy .NET game using OpenShift Console &#8211; S2I &amp; Docker file<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-on-power\">Deploy on Power &#8211; CLI<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Deploy .NET game to OpenShift on Power - CLI\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/m6OThkOY50Y?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Hands-on lab walkthrough<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1. log in to OpenShift Environments<\/h3>\n\n\n\n<p>All Command Line Interfaces are expected to be on the Bastion node terminal with cecuser unless explicitly mentioned.<\/p>\n\n\n\n<p>If you are a Windows user, Putty is a great terminal to use.<br>For Mac users iterm2 terminal is available to you.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 1. Login to OpenShift RHEL Bastion <\/h4>\n\n\n\n<p>Using your preferred terminal method (iterm2, xterm, Putty) connect to your environment via SSH using the appropriate IP, cecuser and password for your environment.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 2. Login to OpenShift Console<\/h4>\n\n\n\n<p>Point your browser to your OpenShift Console. <\/p>\n\n\n\n<p>Click on the htpasswd option:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"218\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1.jpg\" alt=\"\" class=\"wp-image-1397\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1.jpg 441w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-1-300x148.jpg 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p>Add your user and password and Click login.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"206\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-2-1.jpg\" alt=\"\" class=\"wp-image-1399\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">  Section 3. Copy the login command for CLI use.<\/h4>\n\n\n\n<p>On the top right side, you will see the cecuser drop-down; click on it and then \u201cCopy login command.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg\" alt=\"\" class=\"wp-image-1402\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg 1024w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-300x140.jpg 300w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-768x359.jpg 768w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1536x718.jpg 1536w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-2048x957.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once again, click on the htpasswd option:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"218\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login.jpg\" alt=\"\" class=\"wp-image-1570\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login.jpg 441w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/11\/OCP-Login-300x148.jpg 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<p>Add your user and password contained in step 1 and Click log in.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"206\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/OCP-Login-2-1.jpg\" alt=\"\" class=\"wp-image-1399\"\/><\/figure>\n\n\n\n<p>Click on Display Token on the top left.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg\" alt=\"\" class=\"wp-image-1402\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1024x478.jpg 1024w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-300x140.jpg 300w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-768x359.jpg 768w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-1536x718.jpg 1536w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Copy-Login-Cmd-2048x957.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can use the oc login command whenever your Authorization is expired. You may need to use the API token to log in to the registry.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-1024x242.jpg\" alt=\"\" class=\"wp-image-1405\" srcset=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-1024x242.jpg 1024w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-300x71.jpg 300w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-768x181.jpg 768w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-1536x362.jpg 1536w, https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2024\/10\/Token-2048x483.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Copy the above &#8220;oc login&#8221; command and paste it into your Terminal (Putty, or iTerm)<\/p>\n\n\n\n<p><strong>Important: <\/strong>You may need these steps more than once during this training.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.  Deploy the .NET game, staying alive<\/h3>\n\n\n\n<p>This part of the demo will guide you through creating a new project, cloning the code hosted on GitHub, and building the .Net application using S2I via the command line interface. This part<br>of the demo will be completed using the cecuser user.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"> Section 1.  Add the .Net Builder image.<\/h4>\n\n\n\n<p>Follow the below steps to add the .Net 7 builder image to OCP.<\/p>\n\n\n\n<p>Log in to the OCP Bastion Server as the cecuser. Check you have the correct user. The whoami command should return cecuser.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>whoami<\/code><\/pre>\n\n\n\n<p>Switch to the OpenShift project.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc project openshift<\/code><\/pre>\n\n\n\n<p>Enable .Net S2I for ppc64le<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc create -f https:\/\/raw.githubusercontent.com\/redhat-developer\/s2i-dotnetcore\/master\/dotnet_imagestreams_ppc64le.json --as system:admin<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Section 2. Deploy the application using Source to Image<\/h4>\n\n\n\n<p>Log into the OCP RHEL Bastion using cecuser credentials and install the git command line.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>sudo dnf install git<\/code><\/pre>\n\n\n\n<p>Create a new OpenShift Project<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc new-project stayingalive --description=\"Simple Arcade Game using ASP.NET with Power\" --display-name=\"stayingalive\"<\/code><\/pre>\n\n\n\n<p>Creating the Application<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc new-app --image-stream=\"openshift\/dotnet:7.0-ubi8\"~https:\/\/github.com\/paulchapmanibm\/stayingalive.git<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/github.com\/paulchapmanibm\/stayingalive\"><img decoding=\"async\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2023\/02\/github-staying-alive-1024x501.jpg\" alt=\"\" class=\"wp-image-261\"\/><\/a><figcaption class=\"wp-element-caption\">Staying Alive .NET Source Code shared publically via GitHub<\/figcaption><\/figure>\n\n\n\n<p>Track the progress of the build<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc logs -f bc\/stayingalive<\/code><\/pre>\n\n\n\n<p>Once the build is complete, you will see &#8220;Push successful&#8221;. At this point, the resulting image has successfully been pushed to your registry. Check the status of your application:<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc status<\/code><\/pre>\n\n\n\n<p>Create a Route. An OpenShift Container Platform route exposes a service at a hostname so external clients can reach it by name. To create an external route to your new application, expose the application service.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc expose service stayingalive<\/code><\/pre>\n\n\n\n<p>View your new route<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>oc get route<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Test the application<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Section 1. Verify the application is running, browse the website and test the counters. Optionally, complete the survey.<\/h4>\n\n\n\n<p>Verify the Application is Running. To view your new application, paste the route location that you copied (in the previous section) into the address bar of your web browser and hit enter.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>echo \"The url to your new application is $(oc status | grep \"http:\/\/stayingalive\" | awk '{print $1}')\"<\/code><\/pre>\n\n\n\n<p>Copy the above link to the game and paste it into your favourite browser to start playing the game.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"StayingAlive Game Play\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/Fz-KTNcyNhE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Playing the .NET game<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. Wrap up<\/h3>\n\n\n\n<p>We believe in Sustainability and Cloud without lock-in. Customers may benefit from Cloud with greater sustainability, scale, security, performance, and economics when consolidating existing .NET applications from x86 to Power Systems.<\/p>\n\n\n\n<p>You should now understand how ASP.Net Core is used to power many websites, even games. You have seen how easy it can be to deploy a basic arcade-style game on Power using the same source code written on and for the x86 platform.<\/p>\n\n\n\n<p>Congratulations, you have added ppc64le S2I functionality to OCP and used this to simplify the deployment of an ASP.Net-based game that was written for x86 direct from GitHub to your OCP<br>using the command line interface.<\/p>\n\n\n\n<p>This lesson plan takes 1 minute and 10 seconds to deploy the application when scripted. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2023\/02\/staying-alive-script.jpg\" alt=\"\" class=\"wp-image-253\"\/><\/figure>\n\n\n\n<p>============================================<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-on-x86\">Deploy on x86 &#8211; CLI<\/h2>\n\n\n\n<p>It&#8217;s assumed that dotnet is already installed for your Linux distribution. I have used RHEL and Fedora with the below.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Quickly Deploy .NET Game from source on x86\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/GK1FKS-g8n8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Deploy .NET game from Source to x86<\/figcaption><\/figure>\n\n\n\n<p>Change to your home directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd<\/code><\/pre>\n\n\n\n<p>Create build directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>mkdir build<\/code><\/pre>\n\n\n\n<p>Change to the newly created Directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd build<\/code><\/pre>\n\n\n\n<p>Install git<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>sudo dnf install git<\/code><\/pre>\n\n\n\n<p>Clone the application source from GitHub<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>git clone https:\/\/github.com\/paulchapmanibm\/stayingalive.git<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/nas01.tallpaul.net\/wordpress\/wp-content\/uploads\/2023\/02\/github-staying-alive-1024x501.jpg\" alt=\"\" class=\"wp-image-261\"\/><figcaption class=\"wp-element-caption\"> The same Staying Alive .NET Source Code was used with Power <\/figcaption><\/figure>\n\n\n\n<p>You should see a new folder created:<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>ls -la<\/code><\/pre>\n\n\n\n<p>Change to the new application directory<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cd stayingalive<\/code><\/pre>\n\n\n\n<p>Copy the ppc64le docker file, which will be used to build the application container.<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cp Dockerfile.x86 Dockerfile<\/code><\/pre>\n\n\n\n<p>Copy the ppc64le csproj file, which will be used to build the application container<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>cp .\/stayingalive\/stayingalive.csproj.x86 .\/stayingalive\/stayingalive.csproj<\/code><\/pre>\n\n\n\n<p>Build the application container using Podman<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman build . -t stayingalive<\/code><\/pre>\n\n\n\n<p>Confirm that both dotnet and application containers are available<\/p>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman images<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-vivid-cyan-blue-color has-contrast-background-color has-text-color has-background\"><code>podman run -p 8080:80 stayingalive<\/code><\/pre>\n\n\n\n<p>Get in touch using social media<\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter has-huge-icon-size has-icon-color is-style-default is-layout-flex wp-block-social-links-is-layout-flex\"><li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-mail  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"mailto:paulchapman@uk.ibm.com\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19,5H5c-1.1,0-2,.9-2,2v10c0,1.1.9,2,2,2h14c1.1,0,2-.9,2-2V7c0-1.1-.9-2-2-2zm.5,12c0,.3-.2.5-.5.5H5c-.3,0-.5-.2-.5-.5V9.8l7.5,5.6,7.5-5.6V17zm0-9.1L12,13.6,4.5,7.9V7c0-.3.2-.5.5-.5h14c.3,0,.5.2.5.5v.9z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Mail<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/in\/chapmanp\/\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/@paulchapman1280\/videos\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/mrPaulChapman\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li>\n\n<li style=\"color: #ffffff; \" class=\"wp-social-link wp-social-link-wordpress  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/nas01.tallpaul.net\/wordpress\/\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">WordPress<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to deploy a simple arcade-style game written for x86 with .NET using source code shared on GitHub. The same source code is used to deploy on Power with OpenShift, and Fedora on x86. Full guided instructions are provided. Deploy .NET game on Power Deploy .NET game on x86 Deploy on Power &#8211; GUI [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":896,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,125,3,5,13,6,7],"tags":[23,40,55,62,65,66],"class_list":["post-230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-guided-hands-on-lab","category-ibm","category-open-source","category-openshift","category-power-systems","category-red-hat","tag-ibmpowersystems-2","tag-dotnet","tag-openshift","tag-red-hat-enterprise-linux","tag-redhatopenshift","tag-rhel"],"_links":{"self":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":0,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/media\/896"}],"wp:attachment":[{"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nas01.tallpaul.net\/wordpress\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}