﻿<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
<title>yoy.be Why-O-Why</title>
<link>http://yoy.be/coding.html</link>
<description>yoy.be &quot;Why-O-Why&quot; - coding</description><item>
<link>http://yoy.be/d64lvi.html</link>
<title>Delphi 64-bits: set your local variables!</title>
<description>
&lt;p&gt;I'm relatively new to programming for the 64-bits platform, and I ran into the same thing twice now, so I feel I need to write about this. This last time, it even first showed up as an exception that occurred with the release build only, not the debug build! But it showed up consistently, so it was something I could investigate. I found out the specific exception only occurred&amp;nbsp;with the 'Optimization' compiler switch enabled. Apparently 'modern' Delphi has the 'Optimization' switch set to off in default 'Debug' configurations, and on in default 'Release&quot; configurations.&lt;/p&gt;<br />
&lt;p&gt;'Modern' Delphi apparently also has 'Use debug DCUs' on for both 'Debug' &lt;em&gt;and&lt;/em&gt; 'Release', which I very much regret. Most especially because when I introduce newlings to the Delphi debugger, we invariably drop into a core .pas-file,&amp;nbsp;either causing confusion, or the need for an explanation of what that is and why you'd better never make changes there. Or also what's the relation to the program you're building on one side, and the resulting compiled&amp;nbsp;binary code on the other side. Any way breaking away from working with the debugger for the remainder of the lesson.&lt;/p&gt;<br />
&lt;p&gt;What I want to warn about is that apparently the 64-bit compiler no longer provides the internal scaffolding to clear the memory of the local variables in procedures and functions. It also doesn't warn that you're using an unintialized value &lt;em&gt;(1)&lt;/em&gt;. In my case I've seen bugs appear just by switching from 32-bits to 64-bits, so be careful to always have an assignment to local variables before using them. Even if it's integers to zero and booleans to false. (Strings on the other hand, because of them being a pointer-type by nature, are zeroed for you.)&lt;/p&gt;<br />
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;(1)&amp;nbsp;&lt;/em&gt;The compiler&amp;nbsp;does warn about you &lt;em&gt;not&lt;/em&gt; using a value set to a local variable. And there's also a difference there between 32-bits and 64-bits compiling there. If you have a superfluous assignment to set a default value at the beginning, and the following code also sets a value in all branches of &lt;em&gt;if&lt;/em&gt;s and &lt;em&gt;case&lt;/em&gt;s, I've found that the 32-bits compiler warns less about the unused assignment than the 64-bits compiler does. Perhaps because it's silently de-duplicating the assignments it's doing behind the scenes anyway? It's a minor inconvenience, but one I can live with, and one that reminds me to check if all local values get an initial value by my code.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/computers.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_computers.gif&quot; class=&quot;c&quot; alt=&quot;computers&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/dagboek.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_dagboek.gif&quot; class=&quot;c&quot; alt=&quot;dagboek&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/werk.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_werk.gif&quot; class=&quot;c&quot; alt=&quot;werk&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/d64lvi.html</guid>
<pubDate>Sat, 14 Feb 2026 09:43:29 GMT</pubDate>
</item><item>
<link>http://yoy.be/allsorts700.html</link>
<title>AllSorts 1.2.0.700</title>
<description>
&lt;p&gt;&lt;strong&gt;&amp;rarr;&amp;nbsp;&lt;a href=&quot;AllSorts.html&quot;&gt;AllSorts&lt;/a&gt;&lt;/strong&gt; (&lt;a href=&quot;https://github.com/stijnsanders/tools/releases/tag/rev700&quot;&gt;github release...&lt;/a&gt;)&lt;/p&gt;<br />
&lt;p&gt;Shell extension &quot;AllSorts&quot; had been switched back from Lazarus to Delphi Community Edition some time ago, but this also allows me to add something that I was thinking of for a while, but hadn't taken the time to get it done: an option to 'paste into' a new file any text content currently on the clipboard&amp;nbsp;&lt;em&gt;and&lt;/em&gt; have explorer switch to editing this new file, just like you get with the 'new...' content menu options.&lt;br /&gt;And lo and behold: &lt;a href=&quot;https://github.com/stijnsanders/tools/blob/master/AllSorts/shexAllSorts1.pas#L501&quot;&gt;it's just one API call away!&lt;/a&gt;&amp;nbsp;(Well, two actually, I need the path converted to an item-id-list first...) But it looks like it works (and it looks like it'll be one of those things I'll need a few times a day, just like the &quot;Copy UNC&quot; option!)&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/computers.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_computers.gif&quot; class=&quot;c&quot; alt=&quot;computers&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/allsorts700.html</guid>
<pubDate>Tue, 20 May 2025 21:06:25 GMT</pubDate>
</item><item>
<link>http://yoy.be/jdtestx.html</link>
<title>jsonDoc included in &quot;TestJSON&quot;</title>
<description>
&lt;p&gt;Nice! &lt;a href=&quot;http://github.com/stijnsanders/jsonDoc#jsonDoc&quot;&gt;jsonDoc&lt;/a&gt; got included into &lt;a href=&quot;https://github.com/hydrobyte/TestJSON&quot;&gt;github.com/hydrobyte/TestJSON&lt;/a&gt;&amp;nbsp;&amp;mdash;&amp;nbsp;actually I forked, added it and did a pull request, and that got accepted &amp;mdash; and it ends up about middle of the pack, nice!&lt;br /&gt;I wasn't expecting it to win over the top contenders, since the strong points of jsonDoc lie elsewhere. Mayby I should have a look to add a test to the test suite where jsonDoc&amp;nbsp;&lt;em&gt;does&lt;/em&gt; shine: in sequentially processing a series of&amp;nbsp;&lt;em&gt;possibly very similar&lt;/em&gt; documents in an array, which should use the same memory and provide a performance boost. The super concise syntax is something that's more of a challenge to write tests for, and&amp;nbsp;maybe best left for&amp;nbsp;personal preference to decide.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/jdtestx.html</guid>
<pubDate>Sat, 26 Apr 2025 10:32:40 GMT</pubDate>
</item><item>
<link>http://yoy.be/re670.html</link>
<title>RE v2.1.1.670</title>
<description>
&lt;p&gt;&lt;strong&gt;&amp;rarr; &lt;a href=&quot;http://yoy.be/re.html&quot;&gt;Regular Expression&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt;I've updated the target to &lt;code&gt;net9.0-windows7.0&lt;/code&gt;, but I've only been able to quick check if things still work, so use with the appropriate care.&lt;br /&gt;Download:&amp;nbsp;&lt;strong&gt;&lt;a title=&quot;RE_setup.exe 1.8MB&quot; href=&quot;http://yoy.be/freeware/RE_setup_670.exe&quot;&gt;RE_setup.exe&lt;/a&gt;&lt;/strong&gt; (~1.8MB)&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/dotnet.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_dotnet.gif&quot; class=&quot;c&quot; alt=&quot;dotnet&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/re670.html</guid>
<pubDate>Thu, 21 Nov 2024 19:44:56 GMT</pubDate>
</item><item>
<link>http://yoy.be/121patch.html</link>
<title>There's a Delphi 12.1 patch and no-one told me!</title>
<description>
&lt;p&gt;Well, &lt;a href=&quot;https://www.nldelphi.com/forum/vraagbaak/algemeen/570981-delphi-12-1-ce?p=571047#post571047&quot;&gt;&quot;Wok&quot; did actually,&lt;/a&gt; thank you &quot;Wok&quot;. But I didn't notice it on the several Delphi-themed RSS feeds I have on &lt;a href=&quot;https://github.com/stijnsanders/feeder#feeder&quot;&gt;my reader!&lt;/a&gt;&amp;nbsp;But then again, I'm always incredibly behind on unread items, since I've already got about 600 feeds...&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/121patch.html</guid>
<pubDate>Thu, 19 Sep 2024 19:09:36 GMT</pubDate>
</item><item>
<link>http://yoy.be/ccbcc.html</link>
<title>Clean Code: Big Chunks of Code</title>
<description>
&lt;p&gt;&lt;strong&gt;&amp;rarr;&lt;/strong&gt; &lt;a href=&quot;https://dev.to/alisamir/understanding-clean-code-functions-3f5k&quot;&gt;Understanding Clean Code: Functions ⚡&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;Sorry, but I strongly disagree. If you write a function and have it be called exactly only once, I dare to doubt the reason of existence of said function. I consider the call itself to be in the way. (Even if it's only because of the stack frame in memory and the extra line in the stack trace.) You may be better of with a raw file include (ugly!) or having the function be &lt;code&gt;inline;&lt;/code&gt;. What I typically do is have a big block of comment above and below such a section with explanation what it does and what its relation to sections above and below is. (Using &lt;code&gt;{$region}&lt;/code&gt; comes in handy here, as they are collapsed by default and may also provide 'overview readability' like the list of calls in the article, but without the code itself&amp;nbsp;&lt;em&gt;living somehwere else&lt;/em&gt;...)&lt;/p&gt;<br />
&lt;p&gt;It&amp;nbsp;&lt;em&gt;looks like&lt;/em&gt; good advice to split code in a series of calls, it&amp;nbsp;&lt;em&gt;looks like&lt;/em&gt; you're able to read from the list of names of functions that are called in sequence what is going on, but experience teaches this typically goes on an evolution of its own in the further progression of the project, and never sits quite right, causing more trouble than avoiding any. Especially when the functions themselves grow to do more things than their initial description.&lt;/p&gt;<br />
&lt;p&gt;What I&amp;nbsp;&lt;em&gt;usually&lt;/em&gt; do spend personal discipline on is making sure that the sections are independent among eachother, except for a limited set of references to objects that are operated on, and listed as such in the preceding comment. This is something that would get enforced by splitting in separate functions, but something that &lt;em&gt;should emerge&lt;/em&gt;&amp;nbsp;if you already think criticaly about the construction of larger chunks of code. Newer Delphi versions introduced the option to have a &lt;code&gt;var&lt;/code&gt; section in a &lt;code&gt;begin end;&lt;/code&gt; block, which could help with this, but I haven't grown accustomed to this yet. (Partly because I still keep a number of project fit to build with Delphi 7,&amp;nbsp; sorry. The difference in file size of exe's and dll's is just too big.)&lt;/p&gt;<br />
&lt;p&gt;One more thing: In most cases, when I have sequences of code (sometimes tens of lines), that have to happen in sequence for a big operation (that sometimes get to hundreds of lines), each section get's its own &lt;code&gt;try finally&lt;/code&gt; and/or &lt;code&gt;try except&lt;/code&gt;, so you clearly know&amp;nbsp;&lt;em&gt;where&lt;/em&gt;&amp;nbsp;something happens when something (inevitably) goes wrong at run-time.&lt;/p&gt;<br />
&lt;p&gt;This is ofcourse specific to Delphi (Object Pascal) and &lt;em&gt;your milage may vary&lt;/em&gt; with other programming languages and development environments. It goes to show that its heritage goes back to Pascal which was designed to be a (theoretical) developer's language, and goes further back than C and its extensive family of languages that were primarily designed to be an evolution over assembler just so to get code to be cross-platform* and thus eliminating specific assembler as much as possible. (*:&amp;nbsp; &quot;cross-platform&quot; here is PDP-7, Burrouhgs, Cray and punch-card-crunching machines from IBM; though it came in handy in the new Windows/&lt;wbr /&gt;MacOS/&lt;wbr /&gt;BSD/&lt;wbr /&gt;*nix/&lt;wbr /&gt;GPGPU/&lt;wbr /&gt;FPU/&lt;wbr /&gt;Embedded era we're currently in.)&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/ccbcc.html</guid>
<pubDate>Thu, 15 Aug 2024 10:35:09 GMT</pubDate>
</item><item>
<link>http://yoy.be/xxm510.html</link>
<title>xxm v1.2.8.510</title>
<description>
&lt;p&gt;&lt;strong&gt;&amp;rarr;&amp;nbsp;&lt;a href=&quot;http://yoy.be/xxm/&quot;&gt;xxm&lt;/a&gt;&amp;nbsp;v1.2.8.510&amp;nbsp;&lt;a href=&quot;https://github.com/stijnsanders/xxm/releases/tag/1.2.8.510&quot;&gt;(&amp;rarr;gh)&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://sourceforge.net/projects/xxm/files/v1.2.8.510/&quot;&gt;(&amp;rarr;sf)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt;A quick follow-up release. I've had more reports of xxmHttp*.exe being wrongly identified as a Trojan horse, so I did more work on the code around the LoadLibrary call. (A very big thank you to &lt;a href=&quot;https://www.virustotal.com/&quot;&gt;VirusTotal&lt;/a&gt;. But that still doesn't fully guarantee it won't get flagged again now or in the future.)The NT-service versions apparently were broken, so I had to fix that. (And found&amp;nbsp;a few more optimizations along the way!) I've been test-running a few days now and all works smoothly again. So be sure to update in case you've also ran into problems, otherwise nothing functional changed compared to revision 500.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/xxm510.html</guid>
<pubDate>Mon, 8 Jan 2024 16:48:43 GMT</pubDate>
</item><item>
<link>http://yoy.be/txsvc.html</link>
<title>tx as a service</title>
<description>
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;http://yoy.be/tx.html&quot;&gt;tx&lt;/a&gt;&lt;/em&gt; &quot;stand alone version&quot; is now available as an NT-service,&amp;nbsp;since I added &lt;a href=&quot;https://github.com/stijnsanders/xxm/tree/master/Delphi/conv/proto_http_svc&quot;&gt;the files for xxmConv for it&lt;/a&gt;. (If you're interested, it's &lt;a href=&quot;https://github.com/stijnsanders/tx/blob/master/tx_soSVC_conv.cmd#L5&quot;&gt;called from here&lt;/a&gt;.)&lt;br /&gt;The original&amp;nbsp;&lt;em&gt;tx &quot;stand alone version&quot;&lt;/em&gt; was intended as a show-case to see if&amp;nbsp;&lt;em&gt;tx&lt;/em&gt; could work for you (and/or your team?), so it would&amp;nbsp;&lt;em&gt;only&lt;/em&gt; bind to 'local loop addresses' ('127.0.0.1' for IPv4 and '::1' for IPv6, when available) for security.&lt;br /&gt;But if you like it &amp;mdash; and are not planning to do development on &lt;em&gt;tx&lt;/em&gt; itself &amp;mdash; this service version is what you need. You could install it on a server on the local network, so it's available to your entire team.&lt;br /&gt;If you do want to tinker with tx itself, &amp;mdash; it's an &lt;a href=&quot;https://github.com/stijnsanders/tx#tx&quot;&gt;open source project&lt;/a&gt; after all &amp;mdash; you're welcome to install &lt;a href=&quot;https://github.com/stijnsanders/xxm#xxm&quot;&gt;xxm&lt;/a&gt; to host &lt;code&gt;tx.xxl&lt;/code&gt; you build from source. (Hmm, should add a file with the steps in detail how to do that...)&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/txsvc.html</guid>
<pubDate>Fri, 5 Jan 2024 22:43:05 GMT</pubDate>
</item><item>
<link>http://yoy.be/re210.html</link>
<title>RE v2.1.0</title>
<description>
&lt;p&gt;&lt;strong&gt;&amp;rarr;&amp;nbsp;&lt;a href=&quot;http://yoy.be/re.html&quot;&gt;Regular Expression&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;strong&gt;v2.1.0&lt;/strong&gt;: I've added a HTTP library that can do GET and POST requests with data from inputs and to outputs. I also switched to .Net 7.0.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/dotnet.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_dotnet.gif&quot; class=&quot;c&quot; alt=&quot;dotnet&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/re210.html</guid>
<pubDate>Sat, 16 Sep 2023 20:59:32 GMT</pubDate>
</item><item>
<link>http://yoy.be/WinHttpWS.html</link>
<title>WinHttpWS.pas: connect to a websocket using winhttp.dll</title>
<description>
&lt;p&gt;I needed to fetch something from a WebSocket real quick, but the project didn't have anything like networking components included yet. So I decided a&amp;nbsp;&lt;em&gt;quick-and-easy-way&lt;/em&gt; to get to what I needed is using winhttp.dll... I share this hoping it may come in handy for anyone else...&lt;/p&gt;<br />
&lt;p&gt;&amp;rarr;&amp;nbsp;&lt;strong&gt;&lt;a href=&quot;https://gist.github.com/stijnsanders/9868e47f32a06784ac9a9fbc3f2692cb&quot;&gt;Github Gist: WinHttpWS.pas&lt;/a&gt;&lt;/strong&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/coding.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_coding.gif&quot; class=&quot;c&quot; alt=&quot;coding&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/delphi.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_delphi.gif&quot; class=&quot;c&quot; alt=&quot;delphi&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/internet.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_internet.gif&quot; class=&quot;c&quot; alt=&quot;internet&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://yoy.be/freeware.html&quot;&gt;&lt;img src=&quot;http://yoy.be/cat/cat_freeware.gif&quot; class=&quot;c&quot; alt=&quot;freeware&quot; width=&quot;50&quot; height=&quot;13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
<guid isPermaLink="true">http://yoy.be/WinHttpWS.html</guid>
<pubDate>Thu, 30 Mar 2023 22:02:00 GMT</pubDate>
</item></channel></rss>