<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for adamralph</title><link>http://disqus.com/by/adamralph/</link><description></description><atom:link href="http://disqus.com/adamralph/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 02 Sep 2022 04:25:57 -0000</lastBuildDate><item><title>Re: I moved from LastPass to 1Password. I'm not happier</title><link>https://milestone.topics.it/2022/08/09/one-password.html#comment-5967307482</link><description>&lt;p&gt;👍 for BitWarden—I love it.&lt;/p&gt;&lt;p&gt;And, of course, I pay for a premium subscription.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 02 Sep 2022 04:25:57 -0000</pubDate></item><item><title>Re: Coding languages to learn and avoid for technology jobs in banks</title><link>https://www.efinancialcareers.com/news/2021/06/coding-languages-to-learn-and-avoid-for-technology-jobs-in-banks#comment-5432905147</link><description>&lt;p&gt;This is very context-dependent, and one of those things that six people may give six very different opinions on. Personally, I spent almost 2 decades in a very rewarding career in banking and I didnt write a single line of Python.&lt;/p&gt;&lt;p&gt;I advise treating opinions in this space with care.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 25 Jun 2021 11:38:58 -0000</pubDate></item><item><title>Re: 
Simplifying the Cake global tool bootstrapper scripts with .NET Core 3 local tools
</title><link>https://andrewlock.net/simplifying-the-cake-global-tool-bootstrapper-scripts-in-netcore3-with-local-tools/#comment-4698606490</link><description>&lt;p&gt;Have you seen Bullseye? Zero bootstrapping required: &lt;a href="https://github.com/adamralph/bullseye" rel="nofollow noopener" target="_blank" title="https://github.com/adamralph/bullseye"&gt;https://github.com/adamralp...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 22 Nov 2019 05:48:14 -0000</pubDate></item><item><title>Re: Does remote work slow company growth? </title><link>https://www.profitwell.com/blog/remote-work-tradeoffs#comment-4654170287</link><description>&lt;p&gt;I'm sceptical about everything that is written in the "tradeoffs" section.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;Communication, social interaction, and setting boundaries become much more difficult in a distributed workforce. The mechanisms that make these actions easier when working in an office don’t exist for remote teams.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Note sure about this. In offices there is usually a high level of "bums on seats". I.e. people who are there because they have to be there. Not necessarily because they are working.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;Going remote acts as a forcing function for documentation. Your product teams will need to be more diligent in how they talk through and record the development of new products.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I view that as a &lt;i&gt;benefit&lt;/i&gt;, not a cost.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;Working effectively on a remote team requires discipline from every employee, but especially from leadership. If leadership can’t do remote well, the whole company will fail.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I see that as more "If leadership can’t do &lt;i&gt;leadership&lt;/i&gt; well, the whole company will fail."&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 16 Oct 2019 04:51:03 -0000</pubDate></item><item><title>Re: Context is King: Finding Service Boundaries</title><link>https://codeopinion.com/context-is-king-finding-service-boundaries/#comment-4617471626</link><description>&lt;p&gt;Incidentally, I have a talk on this subject — Finding your service boundaries: a practical guide — &lt;a href="https://www.youtube.com/watch?v=tVnIUZbsxWI" rel="nofollow noopener" target="_blank" title="https://www.youtube.com/watch?v=tVnIUZbsxWI"&gt;https://www.youtube.com/wat...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Mon, 16 Sep 2019 05:03:02 -0000</pubDate></item><item><title>Re: NDC Oslo 2018 - Day 2 &amp;amp; 3</title><link>https://blog.csmac.nz/post/untitled/#comment-4111735348</link><description>&lt;p&gt;Thank you for the kind words about my talk.&lt;/p&gt;&lt;p&gt;BTW, the recording has now been published: &lt;a href="https://www.youtube.com/watch?v=tVnIUZbsxWI" rel="nofollow noopener" target="_blank" title="https://www.youtube.com/watch?v=tVnIUZbsxWI"&gt;https://www.youtube.com/wat...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Mon, 24 Sep 2018 12:05:13 -0000</pubDate></item><item><title>Re: Creating Simple Tasks in .NET with Bullseye</title><link>https://codeopinion.com/creating-simple-tasks-in-net-with-bullseye/#comment-4078717564</link><description>&lt;p&gt;Please see my previous reply concerning comparisons with Cake, psake, etc.&lt;/p&gt;&lt;p&gt;Here are some "real example cases":&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/SQLStreamStore/SQLStreamStore/blob/7c25fd3deb65cb8a3e35f34f87d8f0ef7a513f35/build/Program.cs" rel="nofollow noopener" target="_blank" title="https://github.com/SQLStreamStore/SQLStreamStore/blob/7c25fd3deb65cb8a3e35f34f87d8f0ef7a513f35/build/Program.cs"&gt;https://github.com/SQLStrea...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/FakeItEasy/FakeItEasy/blob/06fec4abfd1171ff500ddb4b11bda751fa3806d7/tools/FakeItEasy.Build/Program.cs" rel="nofollow noopener" target="_blank" title="https://github.com/FakeItEasy/FakeItEasy/blob/06fec4abfd1171ff500ddb4b11bda751fa3806d7/tools/FakeItEasy.Build/Program.cs"&gt;https://github.com/FakeItEa...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/blairconrad/SelfInitializingFakes/blob/205cf3b13f84a9c2129277982b3448b0a3514e15/tools/targets/Program.cs" rel="nofollow noopener" target="_blank" title="https://github.com/blairconrad/SelfInitializingFakes/blob/205cf3b13f84a9c2129277982b3448b0a3514e15/tools/targets/Program.cs"&gt;https://github.com/blaircon...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/xbehave/xbehave.net/blob/723d0de86ce026a6f16a80a3b3a99468038c0578/targets/Program.cs" rel="nofollow noopener" target="_blank" title="https://github.com/xbehave/xbehave.net/blob/723d0de86ce026a6f16a80a3b3a99468038c0578/targets/Program.cs"&gt;https://github.com/xbehave/...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/adamralph/liteguard/blob/d3f72f7aa96b0c40f5c91dba6c9d359c9f835b32/targets/Program.cs" rel="nofollow noopener" target="_blank" title="https://github.com/adamralph/liteguard/blob/d3f72f7aa96b0c40f5c91dba6c9d359c9f835b32/targets/Program.cs"&gt;https://github.com/adamralp...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 05 Sep 2018 09:06:26 -0000</pubDate></item><item><title>Re: Creating Simple Tasks in .NET with Bullseye</title><link>https://codeopinion.com/creating-simple-tasks-in-net-with-bullseye/#comment-4078711518</link><description>&lt;p&gt;The API itself is indeed inspired by the various 'ake tools that already exist. The origins can be traced back from Make, through Rake, psake, Fake, Bau, and more recently, Cake.&lt;/p&gt;&lt;p&gt;They key difference between Bullseye and most of these is that Bullseye is nothing more than library with a targets API. It doesn't come with a runner, or built-in build tasks, etc. It follows a more Unix style "lego pieces rather than monoliths" philosophy.&lt;/p&gt;&lt;p&gt;Other functionality, e.g. running commands, manipulating the file system, wrappers around common build tasks, etc. can and should be supplied by other libraries, e.g. &lt;a href="https://github.com/adamralph/simple-exec" rel="nofollow noopener" target="_blank" title="https://github.com/adamralph/simple-exec"&gt;https://github.com/adamralp...&lt;/a&gt; is a good choice for running commands.&lt;/p&gt;&lt;p&gt;Another clear advantage is that Bullseye doesn't require any bootstrapping. The only prerequisite (if you are using a regular .NET project as described in this article) is the .NET CLI, so you can execute your build "scripts" with dotnet run.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 05 Sep 2018 09:02:27 -0000</pubDate></item><item><title>Re: Creating Simple Tasks in .NET with Bullseye</title><link>https://codeopinion.com/creating-simple-tasks-in-net-with-bullseye/#comment-4078700534</link><description>&lt;p&gt;@Paul that's an interesting idea. I've raised &lt;a href="https://github.com/adamralph/bullseye/issues/82" rel="nofollow noopener" target="_blank" title="https://github.com/adamralph/bullseye/issues/82"&gt;https://github.com/adamralp...&lt;/a&gt; to look into it.&lt;/p&gt;&lt;p&gt;The way it works currently (string based dependencies only) matches Cake, Fake, Rake, and several other 'akes, but still, this could be worth looking into.&lt;/p&gt;&lt;p&gt;Thanks for the suggestion.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 05 Sep 2018 08:55:23 -0000</pubDate></item><item><title>Re: Packaging a package-specific Roslyn analyzer</title><link>http://www.adamralph.com/2018/05/19/packaging-a-package-specific-roslyn-analyzer/#comment-3912421143</link><description>&lt;p&gt;@Jonathon Marolf thanks for chiming in.&lt;/p&gt;&lt;p&gt;&amp;gt; Most projects won't want to upgrade their dependencies for tooling reasons..&lt;/p&gt;&lt;p&gt;In some scenarios, I'd argue against that. For example, we are currently developing an analyzer for NServiceBus which detects when people are ignoring tasks returned from our async API's, which is common source of support cases. In these cases, the analyzer will prevent possible message loss in their systems, which has real business impact.&lt;/p&gt;&lt;p&gt;&amp;gt;  Suppose I DO want to upgrade... ...but there is a bug in the analyzer...&lt;/p&gt;&lt;p&gt;I believe this depends on how you view the analyzer: a separate concern, or a first class concern of the main package. In the NServiceBus example, we are leaning toward treating the analyzer as a first-class concern of the main package, rather than a bolt-on.&lt;/p&gt;&lt;p&gt;For analyzers that are not so critical to the correct operation of the main package, I agree that both the points you mention are downsides to option 3, but then I would argue for option 1. While option 2 buys you an _initial_ install of the analyzer. Any updates to it are ineffective until the main package is updated to depend on the new version. Indeed, many people may get frustrated with bugs in the analyzer, without realising that they have to explicitly install it in order to receive patches.&lt;/p&gt;&lt;p&gt;I agree that we should investigate fixing VS or (preferably) NuGet itself to handle this better. Perhaps there should be some kind of facility for a "transitive package reference" upgrade. That could work by notifying the user that a transitively referenced package has new versions available, and when the user upgrades, it could add something like `&amp;lt;transitivepackagereference&amp;gt;` in csrpoj. This element could ensure that the desired version of the transitively reference package is used, but when the transitive reference no longer exists, i.e. the package referencing that package no longer has that reference, the transitive package reference disappears.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Tue, 22 May 2018 13:48:52 -0000</pubDate></item><item><title>Re: Semantic Versioning of Xamarin Applications</title><link>https://ghuntley.com/archive/2016/10/11/semantic-versioning-of-xamarin-applications/#comment-3109270885</link><description>&lt;p&gt;It seems like a reasonable versioning scheme but I'm not sure you should be calling this SemVer, or claim to be using SemVer. SemVer has a different meaning, and only has 3 version parts, not 4 (plus the pre-release and build metadata parts).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 20 Jan 2017 03:08:17 -0000</pubDate></item><item><title>Re: Researchers Use Hardware Queue Management To Vaporize Multicore Processor Bottlenecks</title><link>http://hothardware.com/news/researchers-use-hardware-queue-management-to-vaporize-multicore-processor-bottlenecks#comment-2984214862</link><description>&lt;p&gt;Why do you say:&lt;/p&gt;&lt;p&gt;&amp;gt; even our desktop computers usually at least have dual cores&lt;/p&gt;&lt;p&gt;?&lt;/p&gt;&lt;p&gt;Desktop computers typically have at least as many, if not more, cores than smartphones.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 04 Nov 2016 04:06:40 -0000</pubDate></item><item><title>Re: Strings and the CLR - a Special Relationship</title><link>http://www.mattwarren.org/2016/05/31/Strings-and-the-CLR-a-Special-Relationship/#comment-2711610170</link><description>&lt;p&gt;+1&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Sat, 04 Jun 2016 05:22:15 -0000</pubDate></item><item><title>Re: Beyond Code | Blog</title><link>http://beyond-code.com/blog/does-your-team-need-tech-lead#comment-2506743836</link><description>&lt;p&gt;See my related post - &lt;a href="http://adamralph.com/2014/03/15/no-tech-lead/" rel="nofollow noopener" target="_blank" title="http://adamralph.com/2014/03/15/no-tech-lead/"&gt;http://adamralph.com/2014/0...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I'm in agreement with most, if not all, of the sentiments you're expressing. In my experience, we didn't feel the need to formalise our shared responsibilities as a "federated lead" but we achieved the same effect; shared responsibility for all aspects of running the team, including those often expected of a single "team lead".&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 10 Feb 2016 14:42:20 -0000</pubDate></item><item><title>Re: Continuously Losing Internet Connectivity in Windows 8.1</title><link>http://www.adamralph.com/2014/01/24/continuously-losing-internet-connectivity-in-windows-8-1/#comment-2440495623</link><description>&lt;p&gt;&amp;gt; do you know what it is in Win 8.1 that causes the problem in the 1st place?&lt;/p&gt;&lt;p&gt;I wish I did.&lt;/p&gt;&lt;p&gt;&amp;gt; How often will the problem return?&lt;/p&gt;&lt;p&gt;It seems to be different for everyone.&lt;/p&gt;&lt;p&gt;&amp;gt; Do you recommend upgrading to Win 10?&lt;/p&gt;&lt;p&gt;I don't know if this will help. I've only upgraded one of my machines to Win 10 but it uses an ethernet connection and not wireless.&lt;/p&gt;&lt;p&gt;&amp;gt; Did they fix it in Win 10?&lt;/p&gt;&lt;p&gt;Sorry, I've no idea.&lt;/p&gt;&lt;p&gt;&amp;gt; Or in Win 10, SP1?&lt;/p&gt;&lt;p&gt;Sorry, I've no idea.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Tue, 05 Jan 2016 05:36:10 -0000</pubDate></item><item><title>Re: Chocolatey Software | Paint.NET 4.2.15</title><link>https://community.chocolatey.org/packages/paint.net#comment-2378760697</link><description>&lt;p&gt;Thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 25 Nov 2015 15:38:59 -0000</pubDate></item><item><title>Re: Chocolatey Software | Paint.NET 4.2.15</title><link>https://community.chocolatey.org/packages/paint.net#comment-2294341046</link><description>&lt;p&gt;Can we get 4.0.6 approved? Looks like a no-brainer in comparison with 4.0.5&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 07 Oct 2015 05:56:39 -0000</pubDate></item><item><title>Re: Moneyball of Hiring - You've Been Haacked</title><link>http://haacked.com/archive/2015/09/08/moneyball-hiring/#comment-2243849129</link><description>&lt;p&gt;I agree with the spirit, and I guess ultimate aim, of what your are saying. The crystal ball/tea leaf gazing practices are damaging or useless at best, but I'm having a hard time imagining the data which would solve this.&lt;/p&gt;&lt;p&gt;Can you give some concrete examples of the data points you would collect?&lt;/p&gt;&lt;p&gt;I'm not sure the analogy with baseball holds so well. Baseball is a highly constrained environment with very specific inputs (the actions you can take within the rules of the game) and desired outcomes (winning games). This doesn't describe software development very well.&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Wed, 09 Sep 2015 02:08:54 -0000</pubDate></item><item><title>Re: Disposing resources at the end of Web API request</title><link>https://www.strathweb.com/2015/08/disposing-resources-at-the-end-of-web-api-request/#comment-2187368542</link><description>&lt;p&gt;Nice. This reminds me of &lt;a href="http://xBehave.net" rel="nofollow noopener" target="_blank" title="xBehave.net"&gt;xBehave.net&lt;/a&gt;'s support for object disposal - &lt;a href="https://github.com/xbehave/xbehave.net/wiki/Object-disposal" rel="nofollow noopener" target="_blank" title="https://github.com/xbehave/xbehave.net/wiki/Object-disposal"&gt;https://github.com/xbehave/...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I guess there could be a similar extension method for this (perhaps even in the same namespace as `HttpRequestMessage`):&lt;/p&gt;&lt;p&gt;```&lt;br&gt;public static T RegisterForDispose&amp;lt;t&amp;gt;(this T disposable, HttpRequestMessage request)&lt;br&gt;    where T : IDisposable&lt;br&gt;{&lt;br&gt;    request.RegisterForDispose(disposable);&lt;br&gt;    return disposable;&lt;br&gt;}&lt;br&gt;```&lt;/p&gt;&lt;p&gt;to allow:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;var writer = new StreamWriter("c:\\file.txt", true).RegisterForDispose(request);&lt;br&gt;```&lt;/p&gt;&lt;p&gt;which would encourage people to register the object immediately, more closely emulating a `using` block.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Tue, 11 Aug 2015 16:20:07 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - NancyFX and hypermedia</title><link>http://blog.jonathanchannon.com/2015-08-07-hypermedia-and-nancyfx/#comment-2179684655</link><description>&lt;p&gt;Should the objects in the JSON example both have id 1?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 07 Aug 2015 12:05:07 -0000</pubDate></item><item><title>Re: Introduction to ConfigR, the solution to your application configuration problems.</title><link>https://cmatskas.com/introduction-to-configr-the-solution-to-all-your-application-configuration-problems/#comment-2159726806</link><description>&lt;p&gt;IMHO you shouldn't mix configuration and state persistence.&lt;/p&gt;&lt;p&gt;For me, configuration is a way to shape an application to run in a certain way. State persistence is a way to continue work between instances of an application.&lt;/p&gt;&lt;p&gt;If you want to save something into the config file during the running of an application then that is state persistence and you should use a mechanism designed explicitly for that purpose, rather than using config mutation to mimic state persistence.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Mon, 27 Jul 2015 14:09:54 -0000</pubDate></item><item><title>Re: Introduction to ConfigR, the solution to your application configuration problems.</title><link>https://cmatskas.com/introduction-to-configr-the-solution-to-all-your-application-configuration-problems/#comment-2154410792</link><description>&lt;p&gt;Generally, you can do whatever you like in the csx file.&lt;/p&gt;&lt;p&gt;What do you mean by "new element"?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Fri, 24 Jul 2015 04:07:56 -0000</pubDate></item><item><title>Re: sandbox1-strategy/github-usage.md at master · Particular/sandbox1-strategy</title><link>https://github.com/Particular/sandbox1-strategy/blob/master/github-usage.md#comment-2108388023</link><description>&lt;p&gt;test 1, against &lt;a href="http://github-usage.md" rel="nofollow noopener" target="_blank" title="github-usage.md"&gt;github-usage.md&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Tue, 30 Jun 2015 08:34:56 -0000</pubDate></item><item><title>Re: ConfigR: Look Mom, No XML</title><link>https://codeopinion.com/configr-look-mom-no-xml/#comment-2053133596</link><description>&lt;p&gt;Sorry, you're correct. I've not had to use separate debug/release configs for a long time and I forgot the purpose of config transformations ;-).&lt;/p&gt;&lt;p&gt;I even showed an example of how to do it here &lt;a href="https://github.com/adamralph/config-r-samples/blob/41f2958bc7415df831c02e5cc5b68c464e77dcf0/src/ConfigR.Samples.WebApplication/Global.asax.cs#L22-L26" rel="nofollow noopener" target="_blank" title="https://github.com/adamralph/config-r-samples/blob/41f2958bc7415df831c02e5cc5b68c464e77dcf0/src/ConfigR.Samples.WebApplication/Global.asax.cs#L22-L26"&gt;https://github.com/adamralp...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Instead of loading a separate file, another way to do this would be to set a variable in the app, and let the single default Web.csx switch according to that value.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Sat, 30 May 2015 08:31:48 -0000</pubDate></item><item><title>Re: ConfigR: Look Mom, No XML</title><link>https://codeopinion.com/configr-look-mom-no-xml/#comment-2053063877</link><description>&lt;p&gt;Settings files are all based on magic strings, it's just that there is code generated to wrap them. You could equally write similar code to wrap the magic strings you use when using ConfigR.&lt;/p&gt;&lt;p&gt;Also bear in mind that settings files rely on serialization of string values from app.config and thus only a limited number of types can be used. With ConfigR there is no serialization taking place so you have the entire type system at your disposal.&lt;/p&gt;&lt;p&gt;However, the true value of ConfigR is being able to defer all configuration decisions until runtime, and a complete decoupling of configuration strategy from application code, i.e. the config file can do 'anything'. With settings files you are essentially still limited to static key value pairs.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">adamralph</dc:creator><pubDate>Sat, 30 May 2015 07:28:46 -0000</pubDate></item></channel></rss>