<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2011-04-09:771050</id>
  <title>Amber</title>
  <subtitle>gemelen</subtitle>
  <author>
    <name>gemelen</name>
  </author>
  <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom"/>
  <updated>2022-07-28T17:39:38Z</updated>
  <dw:journal username="gemelen" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:225179</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/225179.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=225179"/>
    <title>OCaml development setup</title>
    <published>2022-07-26T19:08:32Z</published>
    <updated>2022-07-28T17:39:38Z</updated>
    <category term="oss"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opam.ocaml.org/doc/Install.html"&gt;opam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;opam init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;opam install dune merlin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;opam install ocaml-lsp-server&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#ocamllsp"&gt;nvim-lspconfig/ocamllsp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gemelen/dotfiles/commit/33d324a8346b497052baae0c368d2ffade3c40ab"&gt;customized Neovim settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=225179" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:223893</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/223893.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=223893"/>
    <title>Development setup</title>
    <published>2022-07-13T08:54:15Z</published>
    <updated>2022-07-13T08:54:15Z</updated>
    <category term="oss"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">&lt;p&gt;Over the course of my software engineer career I continue to do code related tasks most of my time, so development setup is an integral part of my work environment.&lt;/p&gt;

&lt;p&gt;Even with my latest project, where I'm a "one-man army" of a data engineering unit and I oversee whole process and wear a variety of role hats, this is still true and setup efficiency affects me every day.&lt;/p&gt;

&lt;p&gt;For different reasons, including my detestment of the JetBrains company as elitist group no different from Google themselves and also being a Russian company, few years ago I left their products completely, after being a legit paying user for quite some time. I could not say that I didn't like IDEA at the time, but everything has an end and IDEA had its own point of no return to me.&lt;/p&gt;

&lt;p&gt;Since then I took more marginalized approach (which is more mainstream nowadays though) and base my setup on Neovim editor with relevant to a programming language of a moment set of plugins and configurations. One who's interested to see, feel free to roam through &lt;a href="https://github.com/gemelen/dotfiles/tree/master/neovim"&gt;its configuration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In short, my setup includes &lt;a href="https://neovim.io"&gt;Neovim&lt;/a&gt; (usually latest build from master branch) with all &lt;a href="https://microsoft.github.io/language-server-protocol/"&gt;LSP&lt;/a&gt; ecosystems wihin Neovim itself and from languages I use like &lt;a href="https://scalameta.org/metals/"&gt;Scala/Metals&lt;/a&gt;, &lt;a href="https://github.com/eclipse/eclipse.jdt.ls"&gt;Java/JDTLS&lt;/a&gt;, &lt;a href="https://rust-analyzer.github.io"&gt;Rust/Rust-Analyzer&lt;/a&gt;, &lt;a href="https://github.com/microsoft/pyright"&gt;Python/Pyright&lt;/a&gt; and others.&lt;/p&gt;

&lt;p&gt;Such an approach allows to unify editing experience while easily switching between very different programming ecosystems. And don't forget that it enables actual ergonomics in how you type and move your hands (so stuff like RSI is delayed).&lt;/p&gt;
&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=223893" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:164000</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/164000.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=164000"/>
    <title>gemelen @ 2016-01-24T14:28:00</title>
    <published>2016-01-24T12:31:33Z</published>
    <updated>2016-01-24T13:22:06Z</updated>
    <category term="office"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Забавно за пару недель (upd: за неделю) до ICE приводить в порядок программный продукт, который там должен быть показан :)&lt;br /&gt;Ровно обычная ситуация из этой нашей индустрии разработки ПО.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=164000" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:158052</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/158052.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=158052"/>
    <title>JB DataGrip (ex 0xDBE)</title>
    <published>2015-12-17T11:12:23Z</published>
    <updated>2015-12-17T11:12:23Z</updated>
    <category term="oss"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Не так давно поменял лицензию JetBrains IDEA на JetBrains Toolbox Subscription, и при релизе среды для разработки SQL-кода DataGrip (ранее известную как 0xDBE) решил попробоавить как она изменилась со времени ещё закрытого бета-тестирования (которое было на самом деле открытым, судя по расшаренным через пару часов линкам).&lt;br /&gt;Среду причесали, явных глюков/багов/неровностей ранних версий не наблюдается.&lt;br /&gt;НО! Среда по-прежнему коде-центрична. В чём это выражается? (чаще всего мне приходится работать с оракловыми базами, поэтому отталкиваюсь от такого взгляда на ситуацию):&lt;br /&gt;1. при открытия базы по умолчанию открывается консоль для ввода SQL команд (как и в OracleDeveloper)&lt;br /&gt;2. но ровно по тому же умолчанию виден очень узкий спектр объектов баз данных - только таблицы/вьюхи/сиквенсы. Всего того спектра, что ожидаешь увидеть, нет - индексы/пакеты/типы/процедуры, не говоря уж о тонкостях вроде дб-линков.&lt;br /&gt;3. пользуясь практикой "коннектимся как SYSTEM, сетим current_schema в кастомного пользователя и работаем", получаем очень неудобную среду: объекты этой схемы не синхронизируются и недоступны ни для обзора, ни для интеллисенса при наборе SQL-команд. То есть только по памяти.&lt;br /&gt;4. никакой диагностической/системной информации об объекте не видно.&lt;br /&gt;&lt;br /&gt;Надо заметить, кто к релизу поправили возможность открывать консоли к одной и той же базе данных, правда почему-то через опцию Open new console, которая рядом с Open console.&lt;br /&gt;&lt;br /&gt;В итоге, в ежедневной работе, когда чаще смотришь на таблицы чем пишешь запросы, DataGrip проигрывает вендорскому софту. Хотя для всяких более мелких систем вероятно эта среда будет лучше чем ничего (как например для H2/Derby/SQLite).&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=158052" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:150251</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/150251.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=150251"/>
    <title>gemelen @ 2015-10-25T14:58:00</title>
    <published>2015-10-25T12:00:18Z</published>
    <updated>2015-10-25T12:00:18Z</updated>
    <category term="programming"/>
    <category term="til"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;code&gt;&lt;br /&gt;SELECT &lt;br /&gt;    expression1, expression2, ... expression_n&lt;br /&gt;FROM &lt;br /&gt;    tables&lt;br /&gt;WHERE &lt;br /&gt;    conditions&lt;br /&gt;MINUS&lt;br /&gt;SELECT &lt;br /&gt;    expression1, expression2, ... expression_n&lt;br /&gt;FROM &lt;br /&gt;    tables&lt;br /&gt;WHERE &lt;br /&gt;    conditions;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Oracle's &lt;a href="http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm"&gt;minus&lt;/a&gt; operator.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=150251" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:147439</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/147439.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=147439"/>
    <title>gemelen @ 2015-09-27T13:13:00</title>
    <published>2015-09-27T10:14:09Z</published>
    <updated>2015-09-27T10:14:09Z</updated>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/982jJGgqPww" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=147439" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:137761</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/137761.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=137761"/>
    <title>Development cycle around Apache Felix OSGI-container</title>
    <published>2015-02-21T22:34:46Z</published>
    <updated>2015-02-21T22:34:46Z</updated>
    <category term="smartos"/>
    <category term="programming"/>
    <category term="java"/>
    <dw:music>Hol Baumann - Human | Live Nuit Hypnotique #4 (Full Set)</dw:music>
    <dw:mood>exhausted</dw:mood>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">With job change comes project change and some bizarre technologies like old-n-hairy OSGI.&lt;br /&gt;There are some steps to get comprehensive environment.&lt;br /&gt;&lt;br /&gt;All done with a lot of virtualization magic under SmartOS, thanks to Joyent and other guys whom deliver this amazing stuff.&lt;br /&gt;&lt;br /&gt;0. Create project with Maven and its maven-bundle-plugin to produce bundle jar.&lt;br /&gt;1. Make necessary changes to sources to start with. &lt;br /&gt;For example, simple Activator class only with start() and stop() methods like&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import org.osgi.framework._&lt;br /&gt;&lt;br /&gt;class Activator extends BundleActivator {&lt;br /&gt;    def start(bc: BundleContext):Unit = { Console.println("started") }&lt;br /&gt;    def stop(bc: BundleContext):Unit = { Console.println("stopped") }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;At this point you should be able to successfully package it locally.&lt;br /&gt;2. Add sources under VCS control (or do it from start). I use git and bitbucket service for this time.&lt;br /&gt;3. Here comes SmartOS:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@saule ~]# vmadm list&lt;br /&gt;UUID                                  TYPE  RAM      STATE             ALIAS&lt;br /&gt;...&lt;br /&gt;e810ea3c-ac05-48e5-9a80-0c42bca99a6e  OS    512      running           postgres&lt;br /&gt;3eb5876f-4577-4791-99d0-4b16b4cbe3d1  OS    800      running           nexus&lt;br /&gt;bea2edbb-443c-4291-8007-5d67cd038acf  OS    2048     running           teamcity&lt;br /&gt;e8bec698-0cdd-45f1-a039-dfbd591864e9  OS    4096     running           hq&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I have rented dedicated server to do dirty work at, and there are already all vm-instances for software production cycle. &lt;br /&gt;Everybody else can do the same with idea "one vm for one service" in mind.&lt;br /&gt;"hq" hosts working shell+vim, is ready to edit code and run Felix container.&lt;br /&gt;All used software is free and OSS (majority of them). &lt;br /&gt;I use Nexus OSS version and Teamcity free version (up to 10 users, 20 build configurations and 3 build agents).&lt;br /&gt;4. In Teamcity: create project, add vcs-root from bitbucket (with access via "deployment" key from "teamcity" vm), use auto-created or create by hand build configuration (which simply runs maven deploy).&lt;br /&gt;5. In Nexus: &lt;br /&gt;since OSS version shipped without some features, we should download and install plugin to be able create proxy repository from maven to OBR which will be used later in Felix.&lt;br /&gt;Read and repeat instructions from &lt;a href="http://books.sonatype.com/nexus-book/reference/osgi-sect-intro.html"&gt;Nexus OBR Plugin install&lt;/a&gt;&lt;br /&gt;Then login into Nexus and create proxy-repo. Again, instruction is already done by some good guys &lt;a href="http://books.sonatype.com/mcookbook/reference/ch01s09.html"&gt;Transforming a Maven Repository into an OSGi Bundle Repository&lt;/a&gt;&lt;br /&gt;6. Download and unpack Felix dustribution in your working place ("hq" in my case).&lt;br /&gt;7. Run Felix and add proxy repo from previous step via command&lt;br /&gt;&lt;code&gt;&lt;br /&gt;obr:repo add &amp;lt;repo-url/.meta/obr.xml&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;8. Push sources to remote repo, which will trigger build in Teamcity and deploy to some repo in Nexus (snapshots for example).&lt;br /&gt;9. In Felix&lt;br /&gt;&lt;code&gt;&lt;br /&gt;obr:list // to list all artifacts from proxy-repo added in step 7&lt;br /&gt;obr:deploy &amp;lt;artifact&amp;gt;&lt;br /&gt;felix:start &amp;lt;its id&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;With some other things under the hood (maven deployment configuration and settings) and a bit of luck, you will get continuous delivery infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=137761" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:135274</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/135274.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=135274"/>
    <title>gemelen @ 2014-11-21T09:47:00</title>
    <published>2014-11-21T06:51:41Z</published>
    <updated>2014-11-21T06:51:41Z</updated>
    <category term="programming"/>
    <category term="nb"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Если идея настойчиво показывает большой сгенерированный класс &lt;i&gt;красненьким&lt;/i&gt;, то стоит сходить в idea.properties за вот этим параметром&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;idea.max.intellisense.filesize=18000&lt;br /&gt;&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=135274" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:134496</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/134496.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=134496"/>
    <title>Functional Data Structures</title>
    <published>2014-09-28T08:35:24Z</published>
    <updated>2014-09-28T08:35:24Z</updated>
    <category term="programming"/>
    <dw:music>Destroid - Ruins (Edit)</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">via Александр Полозов @ lj&lt;br /&gt;&lt;a href="http://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki"&gt;What's new in purely functional data structures since Okasaki?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=134496" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:133922</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/133922.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=133922"/>
    <title>Wolfram @ strangeloop</title>
    <published>2014-09-21T19:50:17Z</published>
    <updated>2014-09-21T19:50:17Z</updated>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Все уже видели и обсудили, поэтому для истории и, может быть, слоупоков :)&lt;br /&gt;&lt;iframe width="560" height="315" src="//www.youtube.com/embed/EjCWdsrVcBM?rel=0" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=133922" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:133593</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/133593.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=133593"/>
    <title>ФП митап</title>
    <published>2014-09-07T19:40:26Z</published>
    <updated>2014-09-07T19:40:26Z</updated>
    <category term="video"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Нашел время и силы посмотреть всю запись с недавнего &lt;a href="http://youtu.be/iA7cgl59Q5U"&gt;митапа&lt;/a&gt; по ФП.&lt;br /&gt;В общем - молодцы, хотя я уже не попадаю в целевую аудиторию докладчиков - ничего нового, при всей скромности моих познаний, мне не довелось услышать.&lt;br /&gt;В частностях, безусловна видна разница между Лапшиным и остальными докладчиками, где фулл-стэк знания, опыт, всё такое (нового тоже ничего не слышал, потому как читаю его жж) и где полуподпольные приложения знаний. &lt;br /&gt;Больше всего потошнило от рассказа Александра Алексеева. Не знаю какой он программист, а докладчик - ну отстойный. Кривая речь сама по себе, неприятные и порой даже неграмотные обороты, безыдейный сам по себе доклад даже просто для обзора что такое Haskell.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=133593" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:131034</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/131034.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=131034"/>
    <title>Whoa</title>
    <published>2014-05-07T05:52:01Z</published>
    <updated>2014-05-07T05:52:01Z</updated>
    <category term="nb"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Читая &lt;a href="http://x-team.com/2014/05/10-secrets-to-becoming-a-great-remote-developer/"&gt;пост&lt;/a&gt; про то как быть хардкорным удалёнщиком, я вдруг осознал, что именно этим советам (с поправкой на специфику) следовал, будучи членом "пати" в одной небезызвестной MMORPG. &lt;br /&gt;У нас был режим партийной игры, расписание внутреннее и внешнее (клановое), цели, средства и тьма общения.&lt;br /&gt;Вероятно, такая аналогия может дойти даже быстрее озвученной в посте.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=131034" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:127030</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/127030.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=127030"/>
    <title>Scala Collections: Why Not?</title>
    <published>2014-02-23T07:57:27Z</published>
    <updated>2014-02-23T07:58:40Z</updated>
    <category term="programming"/>
    <dw:music>Frozen Plasma - Herz (Neurotic Fish)</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Всё тот же &lt;a href="http://www.youtube.com/watch?v=uiJycy6dFSQ"&gt;Paul Phillips&lt;/a&gt; жжёт глаголом в обновлённой версии своих сожалений о проблемах в скале.&lt;br /&gt;Подозреваю, что людям, близким территориально это видео уже не внове, но мы тут далеки от &lt;s&gt;народа&lt;/s&gt; митапов и вообще каких бы то ни было движух.&lt;br /&gt;PS: начали &lt;a href="http://ivan-gandhi.livejournal.com/2517092.html"&gt;отсюда&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=127030" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:126782</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/126782.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=126782"/>
    <title>gemelen @ 2014-02-23T00:36:00</title>
    <published>2014-02-22T20:36:53Z</published>
    <updated>2014-02-22T20:36:53Z</updated>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Действительно качественное объяснение. Даже я вроде что-то понял :)&lt;br /&gt;&lt;a href="http://www.confreaks.com/videos/1287-rubyconf2012-y-not-adventures-in-functional-programming"&gt;http://www.confreaks.com/videos/1287-rubyconf2012-y-not-adventures-in-functional-programming&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via HN&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=126782" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:123038</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/123038.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=123038"/>
    <title>Звонок животворящий</title>
    <published>2013-11-22T16:19:56Z</published>
    <updated>2013-11-22T16:19:56Z</updated>
    <category term="programming"/>
    <category term="office"/>
    <dw:music>Mike Oldfield - Crystal Gazing</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Сценка, юмористическая:&lt;br /&gt;Руководитель отдела (pl/sql-профиль) общается с другим программистом (бузинесс, pl/sql) по деталям нового таска. Дошли до технических деталей, о том что как куда передать запросу в умном оракыле. Мол вот у нас тут в груви-скрипте есть мап, а как его тудыть строкой аля "key=value" через колено? Спрашивают меня, мол ты тут растуси. &lt;br /&gt;Ок, мозх, не просыпаясь, выдаёт сниппет навроде &lt;br /&gt;&lt;pre&gt;
  def m = [1:1,2:2]
  m.collect {it -&amp;gt; it.key + '=' + it.value}.join(',')
&lt;/pre&gt;&lt;br /&gt;Другой программист видит, вдупляет, всё ок. Руководитель смотрит, думает, невыспанным мозхом не вдупляет. Красноречивый взгляд на две строки, мол как это... а это куда... а джойн чо...&lt;br /&gt;Раздаётся звонок, руководитель общается с минуту.&lt;br /&gt;Переводит взгляд на сниппет ещё раз и удивлённо так: ну да, это трансформ, а это джойн, годится.&lt;br /&gt;Поднимает голову и понимает, что всё понимает!&lt;br /&gt;&lt;br /&gt;Апплодисменты, актёры радуются.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=123038" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:121881</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/121881.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=121881"/>
    <title>неофитские грабле</title>
    <published>2013-11-07T12:10:35Z</published>
    <updated>2013-11-07T12:36:16Z</updated>
    <category term="programming"/>
    <category term="nb"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Сводя к минимуму встретившуюся ситуацию, получаем такой groovy-код:&lt;br /&gt;&lt;pre&gt;
  class B {List xs}

  def a = [1,2,null, 3]
  def b = new B()
  b.xs = a

  def c = b.xs.sum {i = it -&amp;gt; i != null ? i : 0}
  println c
// 6
&lt;/pre&gt;&lt;br /&gt;Однако, переходя в реальный код, когда объекты чуть сложнее слабанного на коленке, получаем уже мистическую картину.&lt;br /&gt;&lt;pre&gt;
  // структура из распарсенного xml
  // a.b.c.d.e, где e - интовое поле
  result = a.b?.c?.sum 
{ i = it?.d?.e  
  -&amp;gt; 
  i != null 
    ? i 
    : 0 
}
&lt;/pre&gt;&lt;br /&gt;Вуаля, в i у нас нифига не e, а как раз самое d и поэтому видим КРОВЬКИШКИ. Чинится банально, хоть и не так выпендрёжно.&lt;br /&gt;&lt;pre&gt;
  result = a.b?.c?.sum 
{ it?.d?.e != null 
? it?.d?.e 
: 0 }
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=121881" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:120601</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/120601.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=120601"/>
    <title>Зефирное</title>
    <published>2013-10-05T10:33:10Z</published>
    <updated>2013-10-05T10:33:10Z</updated>
    <category term="programming"/>
    <category term="office"/>
    <dw:music>Claire Voyant - Not Like Me</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Умиляет, право, вот &lt;a href="http://thesz.livejournal.com/1401367.html"&gt;такое&lt;/a&gt; возмущение по поводу чистоты речи.&lt;br /&gt;Свежайший контрпример, речь о задачах в системе управления ресурсами (ДА! я не написал багтрекер!): -Посмотри билет номер такой-то...&lt;br /&gt;Пока сижу без ушей, поэтому реплика шаблон рвёт неплохо.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=120601" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:120194</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/120194.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=120194"/>
    <title>Java</title>
    <published>2013-09-23T16:33:29Z</published>
    <updated>2013-09-23T16:33:29Z</updated>
    <category term="humor"/>
    <category term="programming"/>
    <dw:music>Gary Numan - We Are So Fragile</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;cite&gt;&lt;br /&gt;Java is a DSL for taking large XML files and converting them to stack traces&lt;br /&gt;&lt;/cite&gt;&lt;br /&gt;&lt;img src="http://www.coderanch.com/t/494714/a/1102/callstack.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=120194" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:117485</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/117485.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=117485"/>
    <title>Об CAP</title>
    <published>2013-08-15T16:30:09Z</published>
    <updated>2013-08-15T16:30:09Z</updated>
    <category term="internet"/>
    <category term="programming"/>
    <dw:music>The Alfee - Boy</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://ferd.ca/beating-the-cap-theorem-checklist.html"&gt;http://ferd.ca/beating-the-cap-theorem-checklist.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=117485" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:112729</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/112729.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=112729"/>
    <title>Грабельные записки, #1</title>
    <published>2013-06-13T22:43:30Z</published>
    <updated>2013-06-13T22:43:30Z</updated>
    <category term="android"/>
    <category term="programming"/>
    <category term="rakenote"/>
    <category term="nb"/>
    <dw:music>Blutengel - Vampire Romance (Solitary Experiments Remix)</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Вряд ли кому-то будет интересно.&lt;br /&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://gemelen.dreamwidth.org/112729.html#cutid1"&gt;Yandex.Mapkit in Android app&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=112729" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:106895</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/106895.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=106895"/>
    <title>Huyak Huyak Driven Development</title>
    <published>2013-02-14T16:59:51Z</published>
    <updated>2013-02-14T17:00:14Z</updated>
    <category term="programming"/>
    <category term="лулзы"/>
    <dw:music>Satyrian - The Dark Gift (Lygophilia)</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;cite&gt;&lt;br /&gt;-о, дядьку! є питання&lt;br /&gt;ви якісь "мєтодології/процеси" в свому хуяк-хуяк дрівен дівелопменті використовуєте?&lt;br /&gt;&lt;br /&gt;-Конечно. Процесс прост.&lt;br /&gt;Huyak Huyak in Production Process:&lt;br /&gt;1. Выписываем на одном листе список задач и все их закрываем.&lt;br /&gt;2. Нанимаем любых средних программистов, они через неделю пишут эрланг код.&lt;br /&gt;3. Показываем презентаху, выкатываем на тест.&lt;br /&gt;4. Даем рекламу, приходят пользователи, быстро по логам закрываем дыры.&lt;br /&gt;5. Увальняем прототайперов, вдвоем быстро переписываем код.&lt;br /&gt;6. Оптимизируем и в продакшин.&lt;br /&gt;7. Следующий цикл производства.&lt;br /&gt;&lt;br /&gt;-баг\ішьсю\фіче трекінг?&lt;br /&gt;ттд?&lt;br /&gt;&lt;br /&gt;-Не не слыхали. &lt;br /&gt;Все делается на расшареном двухстраничном документе со списком задач.&lt;br /&gt;Каждая задача одна строка. Используется цвет.&lt;br /&gt;...&lt;br /&gt;У меня нет времени клацать по сайту что бы узнать кто что сделал.&lt;br /&gt;&lt;br /&gt;-надо телевизор в офисе повесить, и на него выводить :)&lt;br /&gt;&lt;br /&gt;-Это жир и нанять чувака который кричать будет неистово. &lt;br /&gt;— Красные дисплей сука. Красный. Вы чо блядь совсем охуели! Быстро блядь убрать красный цвет!!!&lt;br /&gt;:-)&lt;br /&gt;&lt;/cite&gt;&lt;br /&gt;Весь огонь &lt;a href="http://maxim.livejournal.com/398507.html?thread=2319275#t2319275"&gt;отсюда&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=106895" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:98363</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/98363.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=98363"/>
    <title>Аналитическоэ</title>
    <published>2012-09-13T06:17:36Z</published>
    <updated>2012-09-21T20:24:15Z</updated>
    <category term="office"/>
    <category term="programming"/>
    <dw:music>ATB - One Small Step</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;b&gt;Аналитик:&lt;/b&gt; &lt;br /&gt;При сохранении клиентом выписки в файл обеспечить наложение на данный файл ЭЦП банка. &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Суровый разработчик:&lt;/b&gt; &lt;br /&gt;Хорошо сказано: &amp;quot;обеспечить наложение&amp;quot;. Коротко, точно, по-военному: &amp;quot;Поезд, стой! Раз, два...&amp;quot; &lt;br /&gt; &lt;br /&gt;Однако позволю себе обратить внимание на следующие аспекты: &lt;br /&gt;1. Подписание на серверной стороне аналитически никак не проработано, а технически возможно только при использовании встроенной крипитографической поддержки. То есть прежде всего должна быть решена эта задача. &lt;br /&gt;2. А &amp;quot;обеспечить проверку&amp;quot; не требуется? Для каких целей предназначается наложенная подпись? &lt;br /&gt;3. А что собственно понимается под &amp;quot;наложением&amp;quot;? Куда &amp;quot;накладывать&amp;quot;? Хранить в БД? Приписывать к файлу? Делать MIME документ с соответствующим контентом? Внедрять в соответствующую секцию файла Word или Excel? Частично ответ на этот вопрос должен дать п.2. &lt;br /&gt; &lt;br /&gt;Прошу дать конкретные разъяснения, что конкретно необходимо сделать по данному запросу. &lt;br /&gt; &lt;br /&gt;PS. Больше всего удручает то, что данная постановка исходит от сотрудника  аналитического отдела... &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Другой аналитик:&lt;/b&gt; &lt;br /&gt;Уточненная постановка приведена в документе, расположенном по адресу &lt;br /&gt;.../Docs/Черновики/Прикладные постановки/Защита данных/Порядок подписания выписки ЭЦП банка.doc  &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Суровый разработчик:&lt;/b&gt; &lt;br /&gt;Постановка не пригодна для реализации. &lt;br /&gt; &lt;br /&gt;Не указано, каким сертификатом банка производить подписание, как его задавать, где и т.п. Слова из п 3.3 &amp;quot;В глобальных настройках Системы добавить параметр &amp;laquo;Криптосистема для выписок по умолчанию&amp;raquo;.&amp;quot; не дают ответа на данный вопрос. Надо где-то задавать сертификаты, причем для разных криптосистем.  &lt;br /&gt; &lt;br /&gt;Не совсем понятны следующие слова: &lt;br /&gt;... &lt;br /&gt;В предлагаемом контексте мне вообще не понятна необходимость данной настройки как у клиента, так и у пользователя, поскольку ... должна различать подписи банка с использованием различных криптосистем, которыми пользуются банки-клиенты компании. А способа проверки подписи помимо ..., насколько я могу понять, данная постановка не предусматривает... &lt;br /&gt; &lt;br /&gt;Необходимо также уточнить, доработки ... должны выполняться по данному запросу или как? &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Суровый разработчик:&lt;/b&gt;  &lt;br /&gt;Задача сформулирована следующим образом: &amp;laquo;сделать на выписке кнопку, при нажатии на которую, отдавать пользователю архив с файлом выписки и подписью к нему, сертификат банка для подписи брать из глобальной настройки&amp;raquo;. &lt;br /&gt; &lt;br /&gt;Работы по модификации ... по данному запросу не выполняются.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=98363" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:94211</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/94211.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=94211"/>
    <title>Curiosity software</title>
    <published>2012-08-27T17:33:47Z</published>
    <updated>2012-08-27T17:33:47Z</updated>
    <category term="science"/>
    <category term="programming"/>
    <dw:music>PURPLE FOG SIDE - My Secret Friend</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://jlouisramblings.blogspot.com/2012/08/getting-25-megalines-of-code-to-behave.html"&gt;Getting 2.5 Megalines of code to behave&lt;/a&gt;&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;I cannot help but speculate on how the software on the Curiosity rover has been constructed. We know that most of the code is written in C and that it comprises 2.5 Megalines of code, roughly. One may wonder why it is possible to write such a complex system and have it work.&lt;br /&gt;&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;via Ingersol@Rusnet&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=94211" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:76052</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/76052.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=76052"/>
    <title>Смеялсо</title>
    <published>2012-04-25T21:08:08Z</published>
    <updated>2012-04-25T21:08:08Z</updated>
    <category term="humor"/>
    <category term="internet"/>
    <category term="programming"/>
    <dw:music>Trauma - Fractal 1</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;img src="http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0168eab74a7e970c-800wi"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=76052" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2011-04-09:771050:75979</id>
    <link rel="alternate" type="text/html" href="https://gemelen.dreamwidth.org/75979.html"/>
    <link rel="self" type="text/xml" href="https://gemelen.dreamwidth.org/data/atom/?itemid=75979"/>
    <title>Пост с шагающим негром</title>
    <published>2012-04-24T13:40:54Z</published>
    <updated>2012-04-24T13:40:54Z</updated>
    <category term="programming"/>
    <category term="hate"/>
    <dw:music>Black Heaven - Der alte Mann</dw:music>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Так как я отчаянно занимаюсь чем угодно кроме того, чтобы делать то что нужно на завтра, то вот очередной пост с хабра-хейтом.&lt;br /&gt;&lt;img src="http://www.bannedinhollywood.com/wp-content/uploads/2010/10/Haters-Gonna-Hate-Banned-In-Hollywood-11.jpg"&gt;&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: &lt;strike&gt;во-первых я не Господи&lt;/strike&gt;, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки&lt;a href="http://habrahabr.ru/post/142662/"&gt;…&lt;/a&gt;&lt;br /&gt;&lt;/cite&gt;&lt;br /&gt;Дальше следуют ОТКРОВЕНИЯ &lt;strike&gt;господни&lt;/strike&gt; о aligning, padding, packing наивнейшим образом. Не, ну вы понели?&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=gemelen&amp;ditemid=75979" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
