<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Dennis Gorelik</title>
  <link>https://dennisgorelik.dreamwidth.org/</link>
  <description>Dennis Gorelik - Dreamwidth Studios</description>
  <lastBuildDate>Wed, 11 Sep 2019 23:00:56 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>dennisgorelik</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/14073028/2586985</url>
    <title>Dennis Gorelik</title>
    <link>https://dennisgorelik.dreamwidth.org/</link>
    <width>67</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/176624.html</guid>
  <pubDate>Wed, 11 Sep 2019 23:00:56 GMT</pubDate>
  <title>StackOverflow expertise indicator</title>
  <link>https://dennisgorelik.dreamwidth.org/176624.html</link>
  <description>~~~~~&lt;br /&gt;&lt;a href=&quot;https://www.quora.com/What-are-some-signs-that-you-have-become-a-better-software-engineer/answer/Ben-Podgursky&quot;&gt;https://www.quora.com/What-are-some-signs-that-you-have-become-a-better-software-engineer/answer/Ben-Podgursky&lt;/a&gt;&lt;br /&gt;When you start out, you’re confident “bah, any decent answer on StackOverflow has at least 1,000 upvotes”&lt;br /&gt;.....&lt;br /&gt;A few months in, you realize that mostly only the the “help how i code” questions have thousands of upvotes. There are tons of useful answers in the hundreds range&lt;br /&gt;.....&lt;br /&gt;Until you finally become a “senior” engineer. You try to drag one last sip from the StackOverflow Slurpee, and you get nothing but ice and disappointment&lt;br /&gt;~~~~~&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=176624&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/176624.html</comments>
  <category>programming</category>
  <category>stackoverflow</category>
  <category>expertise</category>
  <category>quora</category>
  <category>experts</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/168845.html</guid>
  <pubDate>Mon, 25 Mar 2019 06:52:31 GMT</pubDate>
  <title>Code reuse</title>
  <link>https://dennisgorelik.dreamwidth.org/168845.html</link>
  <description>From 11 years of maintaining &lt;a href=&quot;https://www.postjobfree.com&quot;&gt;my own codebase&lt;/a&gt; I learned that reusing fields is a bad idea that leads to poor code maintainability.&lt;br /&gt;If unrelated methods use the same fields, then graph of field references start looking like a maze that is very hard to understand.&lt;br /&gt;If &quot;UserId&quot; field is called by 19 methods from at least 2 distinct logical groups, then it takes long time to find out if we still need to load UserId from database record in JobAlertRequest().&lt;br /&gt;If count of UserId references was much lower, then such review would take much less time.&lt;br /&gt;&lt;br /&gt;Reusing fields (and local variables) is, generally, bad for maintenance.&lt;br /&gt;But reusing methods is, generally, good for maintenance: if we fix bugs in a reused method - all places that use functionality are getting fixed.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=168845&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/168845.html</comments>
  <category>programming</category>
  <category>software development</category>
  <category>software design</category>
  <lj:security>public</lj:security>
  <lj:reply-count>6</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/138616.html</guid>
  <pubDate>Sat, 12 Aug 2017 05:43:52 GMT</pubDate>
  <title>Code reuse abuse</title>
  <link>https://dennisgorelik.dreamwidth.org/138616.html</link>
  <description>--&lt;br /&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=14990587&quot;&gt;https://news.ycombinator.com/item?id=14990587&lt;/a&gt;&lt;br /&gt;I think it&apos;s more likely that your &quot;great programmers&quot; simply understand the difference between the same functionality and accidentally similar functionality. The latter is where you have two use cases that are very similar, so you spend all this time deduplicating. Then one of the use cases changes... The correct response would be to duplicate the code again, because the two use cases are no longer similar. In reality, they should have never been combined in the first case. They weren&apos;t the same; they were only accidentally similar.&lt;br /&gt;But instead what you usually see is minor tweaks to the common functions. Pass in a flag here, tweak the inputs there, add an if statement over yonder... And before you know it, it&apos;s all a terrible tangled mess that is full of branches and technical debt. The two use cases have the same functions, but don&apos;t even follow the same branches within the functions.&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=138616&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/138616.html</comments>
  <category>programming</category>
  <category>code reuse</category>
  <category>architecture</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/135111.html</guid>
  <pubDate>Thu, 22 Jun 2017 14:50:43 GMT</pubDate>
  <title>ElasticSearch Percolator Bloat - the Defense</title>
  <link>https://dennisgorelik.dreamwidth.org/135111.html</link>
  <description>ElasticSearch team defends the bloat in ElasticSearch Percolator 5.4&lt;br /&gt;--------&lt;br /&gt;&lt;a href=&quot;https://github.com/elastic/elasticsearch/issues/25308&quot;&gt;https://github.com/elastic/elasticsearch/issues/25308&lt;/a&gt;&lt;br /&gt;If you&apos;re not interested in ranking you can easily turn it off, by wrapping the percolate query in a constant_score query.&lt;br /&gt;.....&lt;br /&gt;The percolator tries to tag the queries automatically based on the containing query terms. However it can&apos;t do this for all percolator queries, because the percolator doesn&apos;t know how to extract meaningful information during indexing for all queries. This is a work in progress and will get better over time. It already has shown a significant performance improvement for cases where the percolator was able to analyze the percolator query correctly at index time.&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;1) Funny how in order to turn off unneeded feature, application developers have to create an extra wrapper around their query.&lt;br /&gt;&lt;br /&gt;2) &quot;work in progress&quot; did not stop ElasticSearch team from breaking backward compatibility and forcing their users to rewrite their legacy code in favor of &quot;work in progress&quot; ElasticSearch 5.4.&lt;br /&gt;&lt;br /&gt;3) &quot;a significant performance improvement&quot; is not quantified, and the cases where that improvement happened -&lt;br /&gt; not described.&lt;br /&gt;&lt;br /&gt;See also: &lt;a href=&quot;http://dennisgorelik.dreamwidth.org/134301.html&quot;&gt;ElasticSearch Percolator Bloat - part 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=135111&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/135111.html</comments>
  <category>software</category>
  <category>wtf</category>
  <category>bloat</category>
  <category>programming</category>
  <category>percolator</category>
  <category>elasticsearch</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/133985.html</guid>
  <pubDate>Wed, 14 Jun 2017 01:19:22 GMT</pubDate>
  <title>Spark Language vs Apache Spark</title>
  <link>https://dennisgorelik.dreamwidth.org/133985.html</link>
  <description>Today I learned that &lt;a href=&quot;http://juan-gandhi.dreamwidth.org/3963182.html?thread=110326574#cmt110326574&quot;&gt;Spark programming language has nothing to do with Apache Spark&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/SPARK_(programming_language)&quot;&gt;Spark Language&lt;/a&gt; vs &lt;a href=&quot;https://en.wikipedia.org/wiki/Apache_Spark&quot;&gt;Apache Spark&lt;/a&gt;&quot; confusion is even worse than &quot;Java vs Javascript&quot; confusion.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=133985&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/133985.html</comments>
  <category>programming</category>
  <category>java world</category>
  <category>wtf</category>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/125941.html</guid>
  <pubDate>Mon, 27 Feb 2017 07:32:43 GMT</pubDate>
  <title>Шкафы со скелетами в программировании</title>
  <link>https://dennisgorelik.dreamwidth.org/125941.html</link>
  <description>By &lt;a href=&quot;https://juan-gandhi.dreamwidth.org/&quot;&gt;juan-gandhi&lt;/a&gt;:&lt;br /&gt;---&lt;br /&gt;1) Мутабельные ключи в &quot;хашмапе&quot;. &lt;br /&gt;2) Стек для регистрации данных для последующей проверки, что мусора не осталось. Т.к. указатель на стек глобальный, а бегают несколько ниток, то чистый абсурд.&lt;br /&gt;3) Класс на 183 метода, 0 тестов.&lt;br /&gt;4) Регулярно, случайным образом, рушащиеся тесты, и святая вера, что &quot;за последние несколько лет у нас ничего не ломалось&quot;.&lt;br /&gt;5) Вера в то, что у нас все очень &quot;эффективно&quot; - и регулярные жалобы юзеров, что наш код очень медленный, в отличие от скального конкурента (!)&lt;br /&gt;6) &quot;Оптимистический мерж&quot; - &quot;это не мой тест упал, я тут не при чем, нам нужно релизить.&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;1) Интересно, зачем кому-то понадобилось делать мутабельные ключи в хашмапе?&lt;br /&gt;2) Мне лично не встечалось, хотя при работе в &lt;a href=&quot;http://dennisgorelik.dreamwidth.org/123635.html&quot;&gt;multithread environment&lt;/a&gt; каких только ляпов не сделаешь...&lt;br /&gt;3), 4), 5), 6) - мне в том или ином виде встречалось.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=125941&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/125941.html</comments>
  <category>programming</category>
  <category>software</category>
  <category>подвалы сознания</category>
  <category>шкафы со скелетами</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/125623.html</guid>
  <pubDate>Mon, 27 Feb 2017 06:57:37 GMT</pubDate>
  <title>No mistakes - means &quot;too slow&quot;</title>
  <link>https://dennisgorelik.dreamwidth.org/125623.html</link>
  <description>From &lt;a href=&quot;http://dennisgorelik.livejournal.com/127062.html?thread=2253142#t2253142&quot;&gt;&quot;Committing code often&quot; discussion&lt;/a&gt;:&lt;br /&gt;It is ok to make mistakes, especially in the first &quot;rapid-fire&quot; version of the code.&lt;br /&gt;There is no shame in it.&lt;br /&gt;&lt;br /&gt;Even more: if you are not making any mistakes while coding - that means you are way too careful and are working much slower than you can.&lt;br /&gt;(That does not mean, of course, that you should intentionally do mistakes. Just take greater risks in order to improve speed of programming/coding until you start getting occasional mistakes).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=125623&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/125623.html</comments>
  <category>mistakes</category>
  <category>programming</category>
  <category>code</category>
  <category>performance</category>
  <category>speed</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://dennisgorelik.dreamwidth.org/122151.html</guid>
  <pubDate>Thu, 26 Jan 2017 14:26:20 GMT</pubDate>
  <title>Uri parsing .NET bug</title>
  <link>https://dennisgorelik.dreamwidth.org/122151.html</link>
  <description>Normally, in case of invalid input Uri() code throws UriFormatException. But with really weird input Uri(baseUri, Url) overload can produce NullReferenceException:&lt;pre&gt;[TestMethod]
[ExpectedException(typeof(NullReferenceException))]
public void UriFailureTest()
{
    new Uri(
        new Uri(&quot;https://jobs.web.cern.ch/content/cern-jobs-insight/what-are-we-doing-while-you%E2%80%99re-waiting&quot;),
        &quot;https:/jobs.web.cern.ch/content/cern-jobs-insight/what-are-we-doing-while-you%E2%80%99re-waiting&quot;);
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=dennisgorelik&amp;ditemid=122151&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://dennisgorelik.dreamwidth.org/122151.html</comments>
  <category>microsoft</category>
  <category>c#</category>
  <category>wtf</category>
  <category>programming</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
</channel>
</rss>
