<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://baszerr.eu/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>BaSzErr - blog:2015:09:24</title>
        <description></description>
        <link>https://baszerr.eu/</link>
        <lastBuildDate>Thu, 30 Apr 2026 08:23:57 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://baszerr.eu/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>BaSzErr</title>
            <link>https://baszerr.eu/</link>
        </image>
        <item>
            <title>thoughts_on_corporate_tools</title>
            <link>https://baszerr.eu/doku.php?id=blog:2015:09:24:thoughts_on_corporate_tools</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;thoughts_on_corporate_tools&quot;&gt;2015-09-24 - thoughts on corporate tools&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
recently there was quite a discussion at work on tools. i&amp;#039;d like to share my thoughts on that subject. i&amp;#039;ve worked in quite a few places so far, and i see these issues reoccurring over and over again.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2015-09-24 - thoughts on corporate tools&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;thoughts_on_corporate_tools&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-259&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;the_problem&quot;&gt;the problem&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
corporates tend to use custom (either in-house developed or bought from company no1 ever heard of) tools for everything they do. in place i work, &lt;a href=&quot;https://en.wikipedia.org/wiki/Windows&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Windows&quot;&gt;windows&lt;/a&gt; is the official platform, but there are quite a few &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Linux&quot;&gt;Linux&lt;/a&gt; users as well. the problem is each time new tool is introduced, no1 checks for linux compatibility. by the end of day, as you can imagine, most of them do not work, or work in a very limited manner.
&lt;/p&gt;

&lt;p&gt;
an interesting class of tool is ones that do work in both environments, yet are either outdated, or there are commonly known and accepted replacements, that do far better job. as an example &lt;a href=&quot;https://en.wikipedia.org/wiki/Apache Subversion&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Apache Subversion&quot;&gt;svn&lt;/a&gt; vs. &lt;a href=&quot;https://en.wikipedia.org/wiki/git (software)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/git (software)&quot;&gt;git&lt;/a&gt; could be used. vast majority of ppl i work with prefer git (or other &lt;a href=&quot;https://en.wikipedia.org/wiki/distributed version control system&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/distributed version control system&quot;&gt;DVCS&lt;/a&gt;), yet until very recently svn was the only official one. if you used other things “underneath”, this was a tricky thing to keep it running – staying low profile was a huge helper… ;)
&lt;/p&gt;

&lt;p&gt;
the funny thing is also how these tools appear – out of thin air. you just get a brief information that from day X new tool Y will be used for Z. on the other hand there are users (mostly software developers and testers) who have their needs and expectations. ppl that do know what they want to use and how they want to use it. there used to be similar system in &lt;a href=&quot;https://en.wikipedia.org/wiki/Poland&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Poland&quot;&gt;Poland&lt;/a&gt; few decades back, while we were part of &lt;a href=&quot;https://en.wikipedia.org/wiki/USSR&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/USSR&quot;&gt;USSR&lt;/a&gt; – it was called &lt;a href=&quot;https://en.wikipedia.org/wiki/planned economy&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/planned economy&quot;&gt;planned economy&lt;/a&gt;. all the decisions, regarding every aspect of market, including prices, were made on top, and everyone had to comply. sounds very much like our “tools problem”, don&amp;#039;t you think? for thous unfamiliar with polish history – &lt;a href=&quot;https://en.wikipedia.org/wiki/planned economy&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/planned economy&quot;&gt;planned economy&lt;/a&gt; didn&amp;#039;t worked out that well… ;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;the problem&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_problem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;260-2021&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;a_different_way&quot;&gt;a different way&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
reality shows that ppl have a great potential for self organization. in &lt;a href=&quot;https://en.wikipedia.org/wiki/Argentina&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Argentina&quot;&gt;Argentina&lt;/a&gt;, around 2001 a huge economic crisis arose. many ppl lost their jobs and many factories declared bankruptcy. what looked to be the end, for many was merely a begging. in some cities ppl organized themselves to continue production in abandoned factories and continue to sell their products to earn for living. in worked out very well, and many of these factories are still operational today and have better financial results than they ever head. for more details i highly recommend following reading:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.observatorylatinamerica.org/pdf/event/2009_09_16/factories_without_bosses.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://www.observatorylatinamerica.org/pdf/event/2009_09_16/factories_without_bosses.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;factories without bosses&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.alternet.org/story/148808/worker-run_factories_in_argentina_continue_to_thrive,_boosting_the_economy_and_influencing_workers_in_other_countries&quot; class=&quot;urlextern&quot; title=&quot;http://www.alternet.org/story/148808/worker-run_factories_in_argentina_continue_to_thrive,_boosting_the_economy_and_influencing_workers_in_other_countries&quot; rel=&quot;ugc nofollow&quot;&gt;worker run factories in Argentina continue to thrive&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://atlismta.org/online-journals/0809-journal-intervention/the-rise-of-worker-cooperatives-in-argentina/&quot; class=&quot;urlextern&quot; title=&quot;http://atlismta.org/online-journals/0809-journal-intervention/the-rise-of-worker-cooperatives-in-argentina/&quot; rel=&quot;ugc nofollow&quot;&gt;the rise of worker cooperatives in Argentina&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Argentina is obviously not the only place in the world it happened. it was the scale though, that brought ppl&amp;#039;s attention.
&lt;/p&gt;

&lt;p&gt;
i&amp;#039;ve once read a series of interesting articles on management – “how it&amp;#039;s done in {Google,Facebook,Amazon}” style. the conclusion was: get a bunch of smart ppl, give &amp;#039;em task and do not interfere. that&amp;#039;s also how &lt;a href=&quot;http://www.casestudyinc.com/glossary/two-pizza-team&quot; class=&quot;urlextern&quot; title=&quot;http://www.casestudyinc.com/glossary/two-pizza-team&quot; rel=&quot;ugc nofollow&quot;&gt;two pizza team&lt;/a&gt; idea arose. small teams can achieve great things, when left alone. i believe this idea applies to tooling as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;a different way&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;a_different_way&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2022-3663&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;some_ideas&quot;&gt;some ideas&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
what&amp;#039;s the point of complaining, when you do not provide an alternative? i thought about what could be done and how could it be brought to life. here they are, one by one. they are more or less in a “self-organizing” spirit. from my experience, this tends to work the best, as one size does not fit all.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;some ideas&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;some_ideas&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3664-3992&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;self-provided_tooling&quot;&gt;self-provided tooling&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
if you need a tool – just use it. in software development there are plenty of tools, that are high quality, yet free. just join the club! :) as long as a company does not need to pay money for it, or release created software&amp;#039;s source publicly, most likely no1 will bother. if you think this will benefit you and your team team – go and get it! in fact, you can “legalize” them in your company – if they will work, you can report their usage and then paperwork departments will be happy as well. if some1 will cause problems, you can always provide an estimate for “rewriting things from scratch, on our own”, showing man-months/years of development. forcing others to make such a decision will scare away grumblers.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;self-provided tooling&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;self-provided_tooling&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3993-4744&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;each_project_use_own_tools&quot;&gt;each project use own tools&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
one size does not fit all. the same team, for different project may use different tooling, of their selection. consider &lt;a href=&quot;https://en.wikipedia.org/wiki/microservices&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/microservices&quot;&gt;microservices&lt;/a&gt; architecture approach – no problem having 5 different technologies for 5 different components. once they are clearly separated by an interface, deployed separately, who bothers what happens under the hood? this concept lays deeply rooted in modern architecture styles. i can only hope it will continue to grow in that direction.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;each project use own tools&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;each_project_use_own_tools&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4745-5253&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;towards_free-market&quot;&gt;towards free-market&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
a side effect of a good architecture is set of libraries, that are independent enough to be reusable by others. put your project in a publicly visible location – if some1 finds it helpful, let them use it! you need to provide support for bug-fixing any way (note: they will test your code for you, during every day usage!). if they wish to change something – it&amp;#039;s their call – fork-and-go, i say.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;towards free-market&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;towards_free-market&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5254-5684&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;no_common_cores&quot;&gt;no &amp;quot;common cores&amp;quot;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
most of the big projects in enterprise environments, that i have seen, started with creation of “cores”/“commons”/“foundation class”/etc. these usually are wrappers for things that do not tend to change, implementing typical functionalities that you can take of-the-shelves in open-source world or other means of reinventing the square wheels. if you can avoid them – do so. they will slow you down from day 1. they tend to have extremely limited and fixed working scenarios, often have been created years ago and does not comply with modern standards and provide their own restrictions, you might not be willing to live with.
&lt;/p&gt;

&lt;p&gt;
having “commons” looks nice on the paper, but the truth is there often is more fuss around making it work, fixing a bug in godforsaken component, that no1 touched in years, and especially when asking for a new feature or a change request. since these components are “common”, if their usage was enforced long enough, you&amp;#039;ll end up having a central architectural component, that is hard to move/modify, because so many different projects may depend on corner cases of its behavior or on sum undocumented APIs and side-effects.
&lt;/p&gt;

&lt;p&gt;
provide interfaces – the implementation should always be easily switchable.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;no \&amp;quot;common cores\&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_common_cores&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5685-6946&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;no_in-house_by_default&quot;&gt;no in-house by default&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
making a tool tailored specifically to your needs is not necessary a bad idea. keep in mind however that most of the time you will be inventing a square wheel as most likely there already is a tool that does the job right. it&amp;#039;s just a matter of finding it.
&lt;/p&gt;

&lt;p&gt;
i&amp;#039;ve worked for companies that had even such a simple thing as bug tracking implemented on their own. it was unintuitive, had horrible web UI and no &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; to build upon. literally the worst tool ever made for bug tracking. yet company continued to work on it wasting man-years on development and probably even more when ppl had problem to find their way through the tool. lack of features resulted in “usage conventions” and “e-mail bug fixes”, that were tracked only on ppls e-mail boxes.
&lt;/p&gt;

&lt;p&gt;
forget about “own tool”, unless you can really prove, that tool you need has not been invented yet and any invented tool cannot work for you, even with in-house plugin to solve your problem.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;no in-house by default&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_in-house_by_default&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6947-7918&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;opt-in_support_for_common_things&quot;&gt;opt-in support for common things&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
if many teams use the same tools, it might not be a bad idea to provide official support for them. say if 30% of developers use gitlab, why not provide support for per-project gitlab instances and save ppl time to create their own? the main difference is there is no need to use this service – if unused, it will be suspended/removed. if ppl do use them and they are happy, it will continue to grow. which leads us to another point…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;opt-in support for common things&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;opt-in_support_for_common_things&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7919-8398&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;support_for_devs_not_devs_for_support&quot;&gt;support for devs, not devs for support&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
it is very common for IT support in enterprises to suxx! in one of the companies my friend worked, IT&amp;#039;s target availability was as low as 90%!! imagine – one day every two weeks everything could go offline and it would be fine! even though, the target was so low, IT did not make it up to the task! it is like developers were testers for IT department, instead of IT department serving as a provided for developers.
&lt;/p&gt;

&lt;p&gt;
what is being supported starts with ppl. if they are willing to give away control over some tools to IT and they are happy with the support level, everyone gains. if IT support will not do they job, they&amp;#039;ll become penny less and its work will naturally be distributed to projects&amp;#039; insiders, until things return to how they should look like.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;support for devs, not devs for support&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;support_for_devs_not_devs_for_support&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;8399-9207&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;good_iaas-style_support&quot;&gt;good IaaS-style support&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
there is one thing that should be provided by IT and would be done well – infrastructure for work. if you need a server, one call should be enough. you get machine, you get a root and you can do whatever is needed to keep dices rolling. this will provided a good ground for doing everything else.
&lt;/p&gt;

&lt;p&gt;
if even this cannot be reasonably provided by IT, the only alternative i can think of is to give projects an extra budget to but the hardware they will run on. this is a last resort option, as this will cost company significantly more, but it that&amp;#039;s the price to pay – so be it. paraphrasing old song – “work must go on”. ;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;good IaaS-style support&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;good_iaas-style_support&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;9208-9869&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;obvious_or_not&quot;&gt;obvious or not?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
at first the whole idea of developers selecting their tools may sound strange to some. to make it clear, think about what would it be like, if the situation was reversed. now company is being commanded by developers and everyone need to comply. i wonder how would high level manager, and other non-technical employees react to uninstalling &lt;a href=&quot;https://en.wikipedia.org/wiki/power point&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/power point&quot;&gt;power point&lt;/a&gt; on all machines and providing them with &lt;a href=&quot;https://en.wikipedia.org/wiki/Beamer (LaTeX)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Beamer (LaTeX)&quot;&gt;beamer&lt;/a&gt; with makefiles to build their presentations from source code, in command line… or maybe replace their beloved &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft Outlook&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Microsoft Outlook&quot;&gt;outlook&lt;/a&gt; by &lt;a href=&quot;https://en.wikipedia.org/wiki/mutt (email client)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/mutt (email client)&quot;&gt;mutt&lt;/a&gt;. well – the nice thing would be that some of them would probably finally learn to stop using &lt;a href=&quot;https://en.wikipedia.org/wiki/top-posting&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/top-posting&quot;&gt;top-posting&lt;/a&gt;. ;)
&lt;/p&gt;

&lt;p&gt;
any way – you can imagine how much confusion would it cause among them. what a productivity disaster would it be… yet the same thing happens over and over again with tools for developers and for many it seems ok. so why not let developers choose their own tools instead of &lt;a href=&quot;https://en.wikipedia.org/wiki/micromanaging&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/micromanaging&quot;&gt;micromanaging&lt;/a&gt; them?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;obvious or not?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;obvious_or_not&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9870-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:31 +0000</pubDate>
        </item>
        <item>
            <title>when_order_does_not_matter</title>
            <link>https://baszerr.eu/doku.php?id=blog:2015:09:24:when_order_does_not_matter</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;when_order_does_not_matter&quot;&gt;2015-09-24 - when order does not matter&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
after quite a long break i finally share presentation materials from &lt;a href=&quot;http://www.ndcoslo.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.ndcoslo.com&quot; rel=&quot;ugc nofollow&quot;&gt;NDC Oslo&lt;/a&gt;: &lt;a href=&quot;https://baszerr.eu/lib/exe/fetch.php?media=docs:when_order_does_not_matter.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;docs:when_order_does_not_matter.pdf (8.4 MB)&quot;&gt;presentation&lt;/a&gt; and &lt;a href=&quot;https://vimeo.com/140311751&quot; class=&quot;urlextern&quot; title=&quot;https://vimeo.com/140311751&quot; rel=&quot;ugc nofollow&quot;&gt;recording&lt;/a&gt;. unfortunately first few minutes of the recording are lacking video and video is in a different format. fortunately it is still readable, so one knows what&amp;#039;s going on. :)
&lt;/p&gt;

&lt;p&gt;
during presentation i show how to implement a C++ function, that can take arguments in any order, and provide arguments for those, that are not given. for instance having function &lt;em&gt;foo&lt;/em&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; foo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;string&lt;/span&gt; abc&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;test&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; answer&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;double&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; values&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;1.0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
instead of having code like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;foo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;other&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* how to provide default value here?! */&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;double&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;1.1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu16&quot;&gt;2.2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
one can write something like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;foo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;other&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;double&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;1.1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu16&quot;&gt;2.2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
…or like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;foo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;double&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;1.1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu16&quot;&gt;2.2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;other&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
…or like this:
&lt;/p&gt;
&lt;pre class=&quot;code c&quot;&gt;foo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;std&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;double&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;nu16&quot;&gt;1.1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu16&quot;&gt;2.2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
…etc. i think you see the point now. :)
&lt;/p&gt;

&lt;p&gt;
why would you need something like this? in fact it proves to be very useful for testing frameworks, when you have common function calls, that can take many arguments, but typically users pass only some of them, keeping remaining as default/non-interesting. having such info, one can write nice comparators, that allow to ignore non-provided values! this make users&amp;#039; code very clean and, as a free lunch, does not require them to remember “the order” of parameters.
&lt;/p&gt;

&lt;p&gt;
i was thinking about writing an article about it, but taking into consideration how much overbooked calendar i have now (this is my first post in 4 months!) it ain&amp;#039;t gonna happen anywhere soon.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:31 +0000</pubDate>
        </item>
    </channel>
</rss>
