 <?xml-stylesheet type="text/css" href="https://ict.ken.be/Data/style/rss1.css" ?> <?xml-stylesheet type="text/xsl" href="https://ict.ken.be/Data/style/rss1.xsl" ?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
  <channel>
    <title>Technical Blog</title>
    <link>https://ict.ken.be/technical</link>
    <description />
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>mojoPortal Blog Module</generator>
    <ttl>120</ttl>
    <itunes:owner />
    <itunes:explicit>no</itunes:explicit>
    <itunes:category text="Extensions" />
    <itunes:category text="iTunes" />
    <item>
      <title>Vercel and Cloudinary giving INVALID_IMAGE_OPTIMIZE_REQUEST in Nextjs</title>
      <description><![CDATA[<p>When using Nextjs image they will work fine locally, but you need to configure the trusted domains for deployments on real domains.</p>
<pre>module.exports = {
  images: {
    formats: ['image/avif', 'image/webp'],
    remotePatterns: [
      {
        protocol: 'https',
        hostname: 'res.cloudinary.com',
        port: '',
        pathname: '/YOUR-ACCOUNT/**',
      },
    ],
  },
}
</pre><br /><a href='https://ict.ken.be/vercel-and-cloudinary-giving-invalid_image_optimize_request-in-nextjs'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/vercel-and-cloudinary-giving-invalid_image_optimize_request-in-nextjs'>...</a>]]></description>
      <link>https://ict.ken.be/vercel-and-cloudinary-giving-invalid_image_optimize_request-in-nextjs</link>
      <comments>https://ict.ken.be/vercel-and-cloudinary-giving-invalid_image_optimize_request-in-nextjs</comments>
      <guid isPermaLink="true">https://ict.ken.be/vercel-and-cloudinary-giving-invalid_image_optimize_request-in-nextjs</guid>
      <pubDate>Sat, 23 Dec 2023 09:16:00 GMT</pubDate>
    </item>
    <item>
      <title>Graphql</title>
      <description><![CDATA[<h3>Basics</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=etax3aEe2dA">Dan Schafer - GraphQL at Facebook</a> <strong>(efficiency and auth)</strong></li>
<li><a href="https://relay.dev/graphql/connections.htm">Relay Cursor Connection Specification</a> <strong>(pagination)</strong></li>
<li><a href="https://devblogs.microsoft.com/startups/corlife/">Creating a middle-layer</a> <strong>(bff)</strong></li>
</ul>
<h3>Modeling Errors in GraphQL (errors)</h3>
<ul>
<li><a href="https://blog.logrocket.com/handling-graphql-errors-like-a-champ-with-unions-and-interfaces/">https://blog.logrocket.com/handling-graphql-errors-like-a-champ-with-unions-and-interfaces/</a></li>
<li><a href="https://engineering.zalando.com/posts/2021/04/modeling-errors-in-graphql.html">https://engineering.zalando.com/posts/2021/04/modeling-errors-in-graphql.html</a></li>
<li><a href="https://itnext.io/the-definitive-guide-to-handling-graphql-errors-e0c58b52b5e1">https://itnext.io/the-definitive-guide-to-handling-graphql-errors-e0c58b52b5e1</a></li>
<li><a href="https://productionreadygraphql.com/2020-08-01-guide-to-graphql-errors">https://productionreadygraphql.com/2020-08-01-guide-to-graphql-errors</a></li>
<li><a href="https://www.apollographql.com/blog/graphql/error-handling/full-stack-error-handling-with-graphql-apollo/">https://www.apollographql.com/blog/graphql/error-handling/full-stack-error-handling-with-graphql-apollo/</a></li>
</ul>
<h3>Implement it yourself</h3>
<ul>
<li><a href="https://www.apollographql.com/">https://www.apollographql.com/</a> (javascript)</li>
<li><a href="https://dev.to/dotnet/learn-how-you-can-use-graphql-in-net-core-and-c-4h96">https://dev.to/dotnet/learn-how-you-can-use-graphql-in-net-core-and-c-4h96</a> (c#)</li>
<li><a href="https://chillicream.com/">https://chillicream.com/</a> (c# - the easy way)</li>
<li><a href="https://itnext.io/improve-your-graphql-schema-with-the-relay-specification-8952d06998eb">https://itnext.io/improve-your-graphql-schema-with-the-relay-specification-8952d06998eb</a></li>
<li><a href="https://chanind.github.io/2019/05/30/make-your-graphql-api-relay-compatible.html">https://chanind.github.io/2019/05/30/make-your-graphql-api-relay-compatible.html</a></li>
<li><a href="https://engineering.zalando.com/posts/2017/02/building-a-relay-compatible-graphql-server.html">https://engineering.zalando.com/posts/2017/02/building-a-relay-compatible-graphql-server.html</a></li>
</ul>
<h4>Mocking, Stitching, Scalars, Mesh, Inspector, ...</h4>
<ul>
<li><a href="https://www.graphql-tools.com/">https://www.graphql-tools.com/</a></li>
</ul>
<h4>Namespacing</h4>
<ul>
<li><a href="https://compiledexperience.com/blog/posts/stitched-graphql-rename">https://compiledexperience.com/blog/posts/stitched-graphql-rename</a></li>
<li><a href="https://github.com/graphql/graphql-spec/issues/163">https://github.com/graphql/graphql-spec/issues/163</a> </li>
</ul>
<h4>Security</h4>
<ul>
<li><a href="https://auth0.com/blog/build-and-secure-a-graphql-server-with-node-js/">https://auth0.com/blog/build-and-secure-a-graphql-server-with-node-js/</a></li>
<li><a href="https://www.apollographql.com/blog/graphql/security/9-ways-to-secure-your-graphql-api-security-checklist/">https://www.apollographql.com/blog/graphql/security/9-ways-to-secure-your-graphql-api-security-checklist/</a></li>
<li><a href="https://www.bugcrowd.com/resources/webinars/rest-in-peace-abusing-graphql-to-attack-underlying-infrastructure/">https://www.bugcrowd.com/resources/webinars/rest-in-peace-abusing-graphql-to-attack-underlying-infrastructure/</a></li>
</ul>
<h3>As a service with Hasura</h3>
<ul>
<li><a href="https://hasura.io/blog/creating-data-graph-graphql-mesh-hasura-remote-joins/">Mesh to create the ultimate data graph</a></li>
<li><a href="https://medium.com/plusteam/hasura-graphql-practical-guide-4fe438f2079a">On top of existing actor/film database with access control</a></li>
<li><a href="https://hasura.io/blog/building-customizable-ecommerce-backend-with-hasura-graphql-apis/">Simple ecommerce cart example</a></li>
<li><a href="https://hasura.io/learn/graphql/nextjs-fullstack-serverless/introduction/">Full stack tutorial</a></li>
</ul>
<h3>Why Graphql?</h3>
<ul>
<li><a href="https://42papers.com/p/rest-vs-graphql-a-controlled-experiment">https://42papers.com/p/rest-vs-graphql-a-controlled-experiment</a></li>
<li><a href="https://xuorig.medium.com/is-graphql-still-relevant-in-an-http2-world-64964f207b8">https://xuorig.medium.com/is-graphql-still-relevant-in-an-http2-world-64964f207b8</a></li>
<li><a href="https://medium.com/edge-coders/rest-apis-are-rest-in-peace-apis-long-live-graphql-d412e559d8e4">https://medium.com/edge-coders/rest-apis-are-rest-in-peace-apis-long-live-graphql-d412e559d8e4</a></li>
<li><a href="https://wundergraph.com/blog/where_in_the_hypecycle_is_graphql_in_2021_analyzing_public_data_from_google_trends_stackoverflow_github_and_hackernews">https://wundergraph.com/blog/where_in_the_hypecycle_is_graphql_in_2021_analyzing_public_data_from_google_trends_stackoverflow_github_and_hackernews</a></li>
</ul>
<h3>More</h3>
<ul>
<li><a href="https://dev.to/peternycander/a-year-of-large-scale-graphql-the-biggest-takeaways-3d5n">https://dev.to/peternycander/a-year-of-large-scale-graphql-the-biggest-takeaways-3d5n</a></li>
<li><a href="https://blog.devgenius.io/a-principled-approach-to-graphql-query-cost-analysis-8c7243de42c1"> https://blog.devgenius.io/a-principled-approach-to-graphql-query-cost-analysis-8c7243de42c1</a></li>
<li><a href="https://tech.okcupid.com/why-we-decided-against-graphql-for-local-state-management/">https://tech.okcupid.com/why-we-decided-against-graphql-for-local-state-management/</a></li>
<li><a href="https://blog.logrocket.com/graphql-variables-in-simple-terms/">https://blog.logrocket.com/graphql-variables-in-simple-terms/</a></li>
<li><a href="https://developer.ibm.com/open/projects/openapi-to-graphql/">https://developer.ibm.com/open/projects/openapi-to-graphql/</a></li>
<li><a href="https://www.apollographql.com/graph-champions/">https://www.apollographql.com/graph-champions/</a></li>
<li><a href="https://wundergraph.com/blog/solving_the_double_quintuple_declaration_problem_in_graphql_applications_how_to_not_repeat_yourself">https://wundergraph.com/blog/solving_the_double_quintuple_declaration_problem_in_graphql_applications_how_to_not_repeat_yourself</a></li>
</ul>
<p> </p><br /><a href='https://ict.ken.be/graphql'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/graphql'>...</a>]]></description>
      <link>https://ict.ken.be/graphql</link>
      <comments>https://ict.ken.be/graphql</comments>
      <guid isPermaLink="true">https://ict.ken.be/graphql</guid>
      <pubDate>Wed, 01 Sep 2021 17:40:00 GMT</pubDate>
    </item>
    <item>
      <title>Kubernetes</title>
      <description><![CDATA[<h3>Commandline</h3>
<ul>
<li>kubectl create -f &lt;pod-definition.yaml&gt;</li>
<li>kubectl apply -f &lt;pod-definition.yaml&gt;</li>
<li>kubectl delete pod &lt;pod-name&gt;</li>
</ul>
<ul>
<li>kubectl get pods</li>
<li>kubectl describe pods</li>
<li>kubectl describe pod &lt;pod-name&gt;</li>
<li>kubectl port-forward &lt;pod-name&gt; 8080:80</li>
<li>kubectl exec -it &lt;pod-name&gt; -- bash</li>
</ul>
<h3>Why Kubernetes?</h3>
<ul>
<li><a href="https://stackoverflow.blog/2021/07/21/why-you-should-build-on-kubernetes-from-day-one/">https://stackoverflow.blog/2021/07/21/why-you-should-build-on-kubernetes-from-day-one/</a></li>
</ul>
<h3>Why not?</h3>
<ul>
<li><a href="https://pythonspeed.com/articles/dont-need-kubernetes/">https://pythonspeed.com/articles/dont-need-kubernetes/</a></li>
</ul>
<h3>Deployment Strategies</h3>
<ul>
<li><a href="https://blog.container-solutions.com/kubernetes-deployment-strategies">https://blog.container-solutions.com/kubernetes-deployment-strategies</a></li>
</ul>
<h3>Templating with Kustomize</h3>
<ul>
<li><a href="https://blog.stack-labs.com/code/kustomize-101/">https://blog.stack-labs.com/code/kustomize-101/</a></li>
</ul>
<h3>Security</h3>
<ul>
<li><a href="https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF">https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF</a></li>
<li><a href="https://blog.gitguardian.com/how-to-improve-your-docker-containers-security-cheat-sheet/%20">https://blog.gitguardian.com/how-to-improve-your-docker-containers-security-cheat-sheet/</a></li>
<li><a href="https://github.com/armosec/kubescape">https://github.com/armosec/kubescape</a></li>
</ul>
<h3>Naming Conventions</h3>
<ul>
<li><a href="https://stepan.wtf/cloud-naming-convention/Lessons">https://stepan.wtf/cloud-naming-convention/Lessons</a></li>
</ul>
<h3>More</h3>
<ul>
<li><a href="https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/">https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/</a></li>
<li><a href="https://blog.gougousis.net/file-permissions-the-painful-side-of-docker/">https://blog.gougousis.net/file-permissions-the-painful-side-of-docker/</a></li>
<li><a href="https://vsupalov.com/rebuilding-docker-image-development/">https://vsupalov.com/rebuilding-docker-image-development/</a></li>
<li><a href="https://marcusnoble.co.uk/2021-09-01-migrating-from-docker-to-podman/">https://marcusnoble.co.uk/2021-09-01-migrating-from-docker-to-podman/</a></li>
</ul><br /><a href='https://ict.ken.be/kubernetes'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/kubernetes'>...</a>]]></description>
      <link>https://ict.ken.be/kubernetes</link>
      <comments>https://ict.ken.be/kubernetes</comments>
      <guid isPermaLink="true">https://ict.ken.be/kubernetes</guid>
      <pubDate>Fri, 11 Jun 2021 15:35:00 GMT</pubDate>
    </item>
    <item>
      <title>Kubernetes - Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.</title>
      <description><![CDATA[<p>When using <a title="Docker Desktop" href="https://www.docker.com/products/docker-desktop">Docker Desktop</a> it comes with an out of the box Kubernetes cluster.</p>
<p>However you might run into </p>
<p><strong>Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.</strong></p>
<p>when trying to run your first 'kubectl create -f some-pod-definition.yaml' command.</p>
<p>And that's just because you forgot to enable it: <strong>Setting &gt; Kubernetes &gt; Enable Kubernetes</strong></p><br /><a href='https://ict.ken.be/kubernetes-unable-to-connect-to-the-server-dial-tcp-18080-connectex-no-connection-could-be-made-because-the-target-machine-actively-refused-it'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/kubernetes-unable-to-connect-to-the-server-dial-tcp-18080-connectex-no-connection-could-be-made-because-the-target-machine-actively-refused-it'>...</a>]]></description>
      <link>https://ict.ken.be/kubernetes-unable-to-connect-to-the-server-dial-tcp-18080-connectex-no-connection-could-be-made-because-the-target-machine-actively-refused-it</link>
      <comments>https://ict.ken.be/kubernetes-unable-to-connect-to-the-server-dial-tcp-18080-connectex-no-connection-could-be-made-because-the-target-machine-actively-refused-it</comments>
      <guid isPermaLink="true">https://ict.ken.be/kubernetes-unable-to-connect-to-the-server-dial-tcp-18080-connectex-no-connection-could-be-made-because-the-target-machine-actively-refused-it</guid>
      <pubDate>Fri, 11 Jun 2021 15:27:00 GMT</pubDate>
    </item>
    <item>
      <title>Add existing Git repository to Github</title>
      <description><![CDATA[<ul>
<li>Create a new repository on github, without any files like readme, license, ...</li>
<li>Copy the Github repository REMOTE_URL</li>
<li>Open cmd in your existing git repository</li>
<li><em>git remote add origin  &lt;REMOTE_URL&gt;</em></li>
<li><em>git remote -v</em></li>
<li><em>git push --set-upstream origin master</em></li>
</ul>
<p> </p><br /><a href='https://ict.ken.be/add-existing-git-repository-to-github'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/add-existing-git-repository-to-github'>...</a>]]></description>
      <link>https://ict.ken.be/add-existing-git-repository-to-github</link>
      <comments>https://ict.ken.be/add-existing-git-repository-to-github</comments>
      <guid isPermaLink="true">https://ict.ken.be/add-existing-git-repository-to-github</guid>
      <pubDate>Sat, 30 Jan 2021 16:51:00 GMT</pubDate>
    </item>
    <item>
      <title>Adding new certificate remote access windows</title>
      <description><![CDATA[<p>You can get a new remote desktop self-signed certificate by removing the old and restarting the service.</p>
<ul>
<li>Goto certification store: Computer / Local Machine / Remote Desktop</li>
<li>Remove the current certificate</li>
<li>net stop SessionEnv</li>
<li>net start SessionEnv</li>
<li>Refresh store to check if new certificate is correct</li>
</ul>
<p> </p><br /><a href='https://ict.ken.be/adding-new-certificate-remote-access-windows'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/adding-new-certificate-remote-access-windows'>...</a>]]></description>
      <link>https://ict.ken.be/adding-new-certificate-remote-access-windows</link>
      <comments>https://ict.ken.be/adding-new-certificate-remote-access-windows</comments>
      <guid isPermaLink="true">https://ict.ken.be/adding-new-certificate-remote-access-windows</guid>
      <pubDate>Wed, 27 Jan 2021 18:36:00 GMT</pubDate>
    </item>
    <item>
      <title>Delete and purge last commit from Github on Windows</title>
      <description><![CDATA[<pre class="prettify">git reset --hard HEAD~1<br />git push --force</pre><br /><a href='https://ict.ken.be/delete-and-purge-last-commit-from-github-on-windows'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/delete-and-purge-last-commit-from-github-on-windows'>...</a>]]></description>
      <link>https://ict.ken.be/delete-and-purge-last-commit-from-github-on-windows</link>
      <comments>https://ict.ken.be/delete-and-purge-last-commit-from-github-on-windows</comments>
      <guid isPermaLink="true">https://ict.ken.be/delete-and-purge-last-commit-from-github-on-windows</guid>
      <pubDate>Sat, 10 Oct 2020 09:22:00 GMT</pubDate>
    </item>
    <item>
      <title>PKCE login sequence</title>
      <description><![CDATA[<p><img title="Understanding authentication process" alt="PKCE sequence diagram" src="https://ict.ken.be/Data/Sites/1/images/articles/auth-sequence-auth-code-pkce.png" /></p><br /><a href='https://ict.ken.be/pkce-login-sequence'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/pkce-login-sequence'>...</a>]]></description>
      <link>https://ict.ken.be/pkce-login-sequence</link>
      <comments>https://ict.ken.be/pkce-login-sequence</comments>
      <guid isPermaLink="true">https://ict.ken.be/pkce-login-sequence</guid>
      <pubDate>Thu, 10 Sep 2020 10:26:00 GMT</pubDate>
    </item>
    <item>
      <title>Enable TCP/IP on mssql</title>
      <description><![CDATA[<p>Let's say you want to use 'npm install mssql --save' but can't get connected to your local server.</p>
<p>You probably need to check these things:</p>
<ul>
<li>Ensure you can connect manually through SQL Server management studio</li>
<li>Provide connection info to clients by turning on mssql browser service</li>
<ul>
<li>Services &gt; SQL Server Browser</li>
</ul>
<li>Check Sql Server Network Configuration</li>
<ul>
<li>Start &gt; SQL Server Configuration Manager &gt; SQL Server Network Configurations &gt; enable TCP/IP</li>
<li>On property tab of protocol ensure IP ALL has no dynamics and 1433 as port with 127.0.0.1 enabled</li>
<li>Restart server instance</li>
</ul>
</ul><br /><a href='https://ict.ken.be/enable-tcpip-on-mssql'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/enable-tcpip-on-mssql'>...</a>]]></description>
      <link>https://ict.ken.be/enable-tcpip-on-mssql</link>
      <comments>https://ict.ken.be/enable-tcpip-on-mssql</comments>
      <guid isPermaLink="true">https://ict.ken.be/enable-tcpip-on-mssql</guid>
      <pubDate>Thu, 10 Sep 2020 10:13:00 GMT</pubDate>
    </item>
    <item>
      <title>npm WARN optional SKIPPING OPTIONAL DEPENDENCY</title>
      <description><![CDATA[<p>Depending on the operating system you are using, you might get warnings like these:</p>
<ul>
<li>npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules\fsevents)</li>
</ul>
<p>Warnings for sure are useful during development, but they just overload build servers with noise that should only be there when requested.</p>
<p>You could use <strong>npm install --loglevel=error</strong> to prevent the warnings to show up in your build logs.</p>
<p>In case you have hard time finding an issue, you could go with npm install --loglevel=silly</p>
<p>(loglevels: silent, error, warn, info, verbose, silly - see also <a href="https://docs.npmjs.com/misc/config">https://docs.npmjs.com/misc/config</a>)</p><br /><a href='https://ict.ken.be/npm-warn-optional-skipping-optional-dependency'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/npm-warn-optional-skipping-optional-dependency'>...</a>]]></description>
      <link>https://ict.ken.be/npm-warn-optional-skipping-optional-dependency</link>
      <comments>https://ict.ken.be/npm-warn-optional-skipping-optional-dependency</comments>
      <guid isPermaLink="true">https://ict.ken.be/npm-warn-optional-skipping-optional-dependency</guid>
      <pubDate>Thu, 02 Jul 2020 09:59:00 GMT</pubDate>
    </item>
    <item>
      <title>npx react-native start gives invalid regular expression</title>
      <description><![CDATA[<p>Most likely your '<em>node_modules\metro-config\src\defaults\blacklist.js</em>' has an invalid regular expression.</p>
<p>You can correct it with the expression below</p>
<pre class="prettyprint">var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
</pre>
<p>However, it's more likely that you just downloaded an older react-native example and are trying to run this with a different version than intended.</p>
<p>You could ensure that you install all the package.json dependencies fixed to the version the example was build with.</p>
<p>Or you could <a title="Upgrade nodejs dependencies" href="https://ict.ken.be/upgrading-nodejs-package-json-dependencies">upgrade all packages to their latest version</a> and fix any issues that might come from that.</p>
<p>At least with the second option you are ready to go with all the latest tools.</p><br /><a href='https://ict.ken.be/npx-react-native-start-gives-invalid-regular-expression'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/npx-react-native-start-gives-invalid-regular-expression'>...</a>]]></description>
      <link>https://ict.ken.be/npx-react-native-start-gives-invalid-regular-expression</link>
      <comments>https://ict.ken.be/npx-react-native-start-gives-invalid-regular-expression</comments>
      <guid isPermaLink="true">https://ict.ken.be/npx-react-native-start-gives-invalid-regular-expression</guid>
      <pubDate>Thu, 28 May 2020 07:35:00 GMT</pubDate>
    </item>
    <item>
      <title>Playstation</title>
      <description><![CDATA[<h3>Glossary</h3>
<ul>
<li>ELF: Extensible Linking Format is the file format commonly used for Playstation binaries. Eg. BOOT.ELF</li>
<li>ESR : This is not an abbriviation but a way to load dvd copies. I prefer using network loading with OPL as the whole point is to not only spare your dvd roms but also your playstation laser. Remeber that you need to patch your dvd iso before burning it.</li>
<li><strong>FMCB</strong> : <strong>FreeMcBoot</strong> allows for booting your playstation into software installed onto your memory card. Which allows you to copy software from a usb-drive. It's kind of catch-22 as to be able to install the initial software on your memory card you need to have a card that has FMCB installed. If you can't buy an initial copy there are tricks to exploit the dvd loading and install it like this, but that's kind of tedious.</li>
<li>GSM : Graphics Synthetizer Mode Selector you might need to get some specific games working. You can learn about the workings, but it's mostly enough to just <a href="https://www.ps2-home.com/forum/page/opl-game-compatibility-list-1">lookup the mode in the tables at PS2-home</a>.</li>
<li><strong>OPL</strong> : <strong>Open PS2 Loader</strong>, far the easiest way to manage playing games over the network. Doesn't work for all games, but use it whenever possible to spare your ps2 laser.</li>
<li>SMB : Server Message Block aka Samba allows you to setup a network between your PS2 and pc.</li>
<li>SMS : Simple Media System allows for playing videos. Nice, but not very useful since we all have tablets now.</li>
<li><strong>MagicGate</strong> : Brand of <strong>original PS2 memory cards that is needed to run FMCB</strong>, watch out as often the bigger ones are fake and will not work. Use an original 8MB for your first experiments.</li>
<li>uLaunchElf : Your basic file browser that allows you to run executables.</li>
</ul>
<h3>Configuration</h3>
<p><a href="https://ict.ken.be/playstation-2">Some screenshots of playstation 2 fmcb and opl settings over network</a>.</p>
<h3>References</h3>
<ul>
<li><a href="https://www.ps2-home.com">Playstation 2 - Forum : https://www.ps2-home.com</a></li>
<li><a href="http://members.casema.nl/eugene_plotnikov/en/index.html">SMS - Playstation 2 - Simple Media System Manual</a></li>
<li><a href="https://gamefaqs.gamespot.com/ps2">Game walkthroughs</a></li>
<li><a href="https://copetti.org/projects/consoles/playstation/">Playstation technical architecture</a></li>
<li><a href="http://glampert.com/2015/02-27/ps2-homebrew-setting-up-the-environment/">Setup Playstation 2 Development Environment</a></li>
</ul><br /><a href='https://ict.ken.be/playstation'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/playstation'>...</a>]]></description>
      <link>https://ict.ken.be/playstation</link>
      <comments>https://ict.ken.be/playstation</comments>
      <guid isPermaLink="true">https://ict.ken.be/playstation</guid>
      <pubDate>Mon, 25 May 2020 17:14:00 GMT</pubDate>
    </item>
    <item>
      <title>Reactjs</title>
      <description><![CDATA[<p>Just some basic react cheatsheet</p>
<ul>
<li>import React from "react"</li>
<li>use an expression to put comments</li>
</ul>
<pre class="prettyprint">{/* you can use this to commend inside your jsx */}</pre>
<ul>
<li>use a fragment if you want to quickly include an exiting html structure with more then one element at the root</li>
</ul>
<pre class="prettyprint">&lt;&gt;
&lt;h1&gt;Some header&lt;h1&gt;
&lt;h2&gt;Some subheader&lt;h2&gt;
&lt;/&gt;
</pre><br /><a href='https://ict.ken.be/reactjs'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/reactjs'>...</a>]]></description>
      <link>https://ict.ken.be/reactjs</link>
      <comments>https://ict.ken.be/reactjs</comments>
      <guid isPermaLink="true">https://ict.ken.be/reactjs</guid>
      <pubDate>Sat, 02 May 2020 15:36:00 GMT</pubDate>
    </item>
    <item>
      <title>Error: endpoint data missing from graphql config when using gatsby with vscode</title>
      <description><![CDATA[<p>Most likely you installed the <a href="https://github.com/prisma-labs/vscode-graphql">GraphQL extension for VSCode</a> to <em>add syntax highlighting</em> to your graphql queries. Then you noticed the codelens 'Execute Query' and got one of the following errors:</p>
<ul>
<li>Error: endpoint data missing from graphql config</li>
<li>ConfigNotFoundError: ".graphqlconfig" file is not available in the provided config directory</li>
</ul>
<p>To solve this issue, you need to create a .graphqlconfig file in your project root folder.</p>
<p>Tricky part is figuring out what you need to put in there for using Gatsby.</p>
<p>So here is an example:</p>
<pre class="prettyprint">{
  "name": "Gatsby Schema",
  "schemaPath": "schema.graphql",
  "extensions": {
    "endpoints": {
      "Remote GraphQL Endpoint": {
        "url": "http://localhost:8000/___graphql",
        "headers": {
          "user-agent": "JS GraphQL"
        },
        "introspect": true
      }
    }
  }
}
</pre><br /><a href='https://ict.ken.be/error-endpoint-data-missing-from-graphql-config-when-using-gatsby-with-vscode'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/error-endpoint-data-missing-from-graphql-config-when-using-gatsby-with-vscode'>...</a>]]></description>
      <link>https://ict.ken.be/error-endpoint-data-missing-from-graphql-config-when-using-gatsby-with-vscode</link>
      <comments>https://ict.ken.be/error-endpoint-data-missing-from-graphql-config-when-using-gatsby-with-vscode</comments>
      <guid isPermaLink="true">https://ict.ken.be/error-endpoint-data-missing-from-graphql-config-when-using-gatsby-with-vscode</guid>
      <pubDate>Sat, 02 May 2020 15:27:00 GMT</pubDate>
    </item>
    <item>
      <title>Upgrading Nodejs package.json dependencies</title>
      <description><![CDATA[<h4>Doing a minor update</h4>
<ul>
<li>npm update</li>
</ul>
<h4>Doing a major update</h4>
<p><em>Ensure you have the 'check updates' module installed, which will give you the ncu command.</em></p>
<pre class="prettyprint">npm install -g npm-check-updates</pre>
<ul>
<li><strong>npm outdated</strong></li>
<li><strong>ncu -u</strong></li>
<li><strong>npm update</strong></li>
<li><strong>npm install</strong></li>
</ul>
<p>If you keep getting: NCU Real Time Weather is Running......</p>
<p>You installed the module called ncu and will need to uninstall this one first.</p>
<pre class="prettyprint">npm uninstall ncu -g</pre>
<pre class="prettyprint">npm install -g npm-check-updates -- force</pre><br /><a href='https://ict.ken.be/upgrading-nodejs-package-json-dependencies'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/upgrading-nodejs-package-json-dependencies'>...</a>]]></description>
      <link>https://ict.ken.be/upgrading-nodejs-package-json-dependencies</link>
      <comments>https://ict.ken.be/upgrading-nodejs-package-json-dependencies</comments>
      <guid isPermaLink="true">https://ict.ken.be/upgrading-nodejs-package-json-dependencies</guid>
      <pubDate>Thu, 27 Feb 2020 08:48:00 GMT</pubDate>
    </item>
    <item>
      <title>Stop Teamcity build when other build starts</title>
      <description><![CDATA[<p>Most likely you want to stop running your long end-2-end tests when a new deployment is ready.<br /> You will lose the correlation between when the error happened, but at least you can move on.<br /> The easiest way to do this in Teamcity (as there is no support at this writing),<br /> is to <strong>add an additional step before the deployment build configuration using the following powershell script</strong>.</p>
<p>So you basically cancel the test build configuration when the deployment starts.</p>
<pre class="prettyprint">$buildConfigurationId = '%E2ETestBuildConfigurationId%'
If (![string]::IsNullOrWhitespace($buildConfigurationId)) { 
    Write-Host "Finding test builds"
    $user = '%system.teamcity.auth.userId%'
    $pass = '%system.teamcity.auth.password%'
    $pair = "${user}:${pass}"
    $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
    $base64 = [System.Convert]::ToBase64String($bytes)
    $basicAuthValue = "Basic $base64"
    $headers = @{ Authorization = $basicAuthValue; "Content-Type" = "application/xml" }
    $response = Invoke-WebRequest -Uri "http://teamcity.conseur.org/app/rest/builds?locator=buildType:($buildConfigurationId),state:queued" -Method GET -Headers $headers
    $postParams = "&lt;buildCancelRequest comment='Build was canceled because of new deployment.' readdIntoQueue='true' /&gt;"
    Foreach($buildId in ([xml]$response.Content).builds.build.id) 
    {
        Write-Host "Cancel queued buildId: $buildId"
        Invoke-WebRequest -Uri "http://teamcity.conseur.org/app/rest/buildQueue/id:$buildId" -Headers $headers -Method POST -Body $postParams
    }
    $response = Invoke-WebRequest -Uri "http://teamcity.conseur.org/app/rest/builds?locator=buildType:($buildConfigurationId),state:running" -Method GET -Headers $headers
    $postParams = "&lt;buildCancelRequest comment='Build was canceled because of new deployment.' readdIntoQueue='false' /&gt;"
    Foreach($buildId in ([xml]$response.Content).builds.build.id) 
    {
        Write-Host "Cancel running buildId: $buildId"
        Invoke-WebRequest -Uri "http://teamcity.conseur.org/app/rest/builds/id:$buildId" -Headers $headers -Method POST -Body $postParams
    }
}
</pre><br /><a href='https://ict.ken.be/stop-teamcity-build-when-other-build-starts'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/stop-teamcity-build-when-other-build-starts'>...</a>]]></description>
      <link>https://ict.ken.be/stop-teamcity-build-when-other-build-starts</link>
      <comments>https://ict.ken.be/stop-teamcity-build-when-other-build-starts</comments>
      <guid isPermaLink="true">https://ict.ken.be/stop-teamcity-build-when-other-build-starts</guid>
      <pubDate>Wed, 28 Aug 2019 12:25:00 GMT</pubDate>
    </item>
    <item>
      <title>Jekyll regeneration does not stop</title>
      <description><![CDATA[<p>Most likely your editor is writing settings to the folder you are running Jekyll from. For example, try running 'jekyll serve' and then open the folder with Visual Studio 2017 and you will see it starts regenerating.</p>
<p style="text-align: center;"><img title="Jekyll keeps regenerating" alt="Command line showing Jekyll regenerating issue" src="https://ict.ken.be/Data/Sites/1/images/articles/jekyll-regeneration-does-not-stop.jpg" height="117" width="715" /></p><br /><a href='https://ict.ken.be/jekyll-regeneration-does-not-stop'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/jekyll-regeneration-does-not-stop'>...</a>]]></description>
      <link>https://ict.ken.be/jekyll-regeneration-does-not-stop</link>
      <comments>https://ict.ken.be/jekyll-regeneration-does-not-stop</comments>
      <guid isPermaLink="true">https://ict.ken.be/jekyll-regeneration-does-not-stop</guid>
      <pubDate>Sat, 07 Jul 2018 10:52:00 GMT</pubDate>
    </item>
    <item>
      <title>Developer tools show only custom window properties</title>
      <description><![CDATA[<p>You can run this code in your browser console and then add a watch for the windowCustomized variable. It will have only custom added window properties or leaks.</p>
<pre class="prettyprint">windowCustomized = {};<br />var iframe = document.createElement('iframe');<br />iframe.onload = function() {<br /> var standardGlobals = Object.keys(iframe.contentWindow);<br /> for(var b in window) { <br /> const prop = window[b];<br /> if(window.hasOwnProperty(b) &amp;&amp; prop &amp;&amp; !prop.toString().includes('native code') &amp;&amp; !standardGlobals.includes(b)) {<br /> windowCustomized[b] = prop;<br /> }<br /> }<br /> //console.info(windowCustomized)<br />};<br />iframe.src = 'about:blank';<br />document.body.appendChild(iframe);<br />//inspect(windowCustomized);</pre><br /><a href='https://ict.ken.be/developer-tools-show-only-custom-window-properties'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/developer-tools-show-only-custom-window-properties'>...</a>]]></description>
      <link>https://ict.ken.be/developer-tools-show-only-custom-window-properties</link>
      <comments>https://ict.ken.be/developer-tools-show-only-custom-window-properties</comments>
      <guid isPermaLink="true">https://ict.ken.be/developer-tools-show-only-custom-window-properties</guid>
      <pubDate>Tue, 18 Jul 2017 13:47:00 GMT</pubDate>
    </item>
    <item>
      <title>Set network adaptor order for windows 7 or 2008R2</title>
      <description><![CDATA[<p><span>You can <strong>re-order the priority of your network connestions</strong> through the adapter settings window, but you need to know the secret key...</span></p>
<p><span>Control Panel -&gt; Network and Sharing Center -&gt; Change adapter settings -&gt; <strong>Press Alt Key to make the Advanced menu visible</strong> -&gt; Advanced Settings.</span></p><br /><a href='https://ict.ken.be/set-network-adaptor-order-for-windows-7-or-2008r2'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/set-network-adaptor-order-for-windows-7-or-2008r2'>...</a>]]></description>
      <link>https://ict.ken.be/set-network-adaptor-order-for-windows-7-or-2008r2</link>
      <comments>https://ict.ken.be/set-network-adaptor-order-for-windows-7-or-2008r2</comments>
      <guid isPermaLink="true">https://ict.ken.be/set-network-adaptor-order-for-windows-7-or-2008r2</guid>
      <pubDate>Sat, 04 Mar 2017 09:06:00 GMT</pubDate>
    </item>
    <item>
      <title>0x80004005 - CIFS SMB Sambo Network Share Error</title>
      <description><![CDATA[<p>So you are using windows 2008r2 or any of it variants and you are trying to connect to a <strong>network share</strong> in some workgroup.</p>
<p>You get this unspecified error when your network adaptor does not include '<strong>Client for Microsoft Networks</strong>', which is often forgotten when virtual network adaptors are created automatically.</p>
<ul>
<li>Control Panel &gt; Network and Sharing &gt; Change Adaptor settings &gt; Select your current network adaptor &gt; Install &gt; Client &gt; Client for Microsoft Networks &gt; OK &gt; ... &gt; restart or enable/disable network adaptor</li>
</ul><br /><a href='https://ict.ken.be/0x80004005-cifs-smb-sambo-network-share-error'>Ken</a>&nbsp;&nbsp;<a href='https://ict.ken.be/0x80004005-cifs-smb-sambo-network-share-error'>...</a>]]></description>
      <link>https://ict.ken.be/0x80004005-cifs-smb-sambo-network-share-error</link>
      <comments>https://ict.ken.be/0x80004005-cifs-smb-sambo-network-share-error</comments>
      <guid isPermaLink="true">https://ict.ken.be/0x80004005-cifs-smb-sambo-network-share-error</guid>
      <pubDate>Sat, 18 Feb 2017 23:42:00 GMT</pubDate>
    </item>
  </channel>
</rss>