<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MoRoth</title>
    <description>The latest articles on DEV Community by MoRoth (@mzsrtgzr2).</description>
    <link>https://dev.to/mzsrtgzr2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F329363%2F91436438-0463-48c9-85a7-e03dac0c937a.jpg</url>
      <title>DEV Community: MoRoth</title>
      <link>https://dev.to/mzsrtgzr2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mzsrtgzr2"/>
    <language>en</language>
    <item>
      <title>How did I reduce project onboarding from 2H 😫 to 3 MINUTES 🔥🔥🔥 ?</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Sat, 04 Nov 2023 21:09:16 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/how-did-i-reduce-project-onboarding-from-2-hours-to-2-minutes--4m92</link>
      <guid>https://dev.to/mzsrtgzr2/how-did-i-reduce-project-onboarding-from-2-hours-to-2-minutes--4m92</guid>
      <description>&lt;p&gt;Following along "Getting started" texts for complex projects can be frustrating. It is also hard to write them well and also it requires the people following it to do many many manual actions.&lt;/p&gt;

&lt;p&gt;Taking for example &lt;a href="https://github.com/cocmd"&gt;Cocmd&lt;/a&gt;&lt;br&gt;
For someone to get stared it requires having&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git installed &lt;/li&gt;
&lt;li&gt;node installed&lt;/li&gt;
&lt;li&gt;vscode (or some other ide)&lt;/li&gt;
&lt;li&gt;cloning all the repos &lt;/li&gt;
&lt;li&gt;setting up git hooks&lt;/li&gt;
&lt;li&gt;going one by one and building with npm and cargo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of writing a long readme on how to do all that.&lt;br&gt;
We decided to use &lt;code&gt;cocmd&lt;/code&gt; own cli to create super fast onboarding experience for project contributors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install cocmd &lt;a href="https://dev.to/docs/intro"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;install and Run the Contributors onboarding packages:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cocmd &lt;span class="nb"&gt;install &lt;/span&gt;https://github.com/cocmd/cocmd
cocmd run cocmd.contrib-onboarding

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://asciinema.org/a/619310"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zFO_HInS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://asciinema.org/a/619310.svg" alt="asciicast" width="734" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;it's going to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install git&lt;/li&gt;
&lt;li&gt;install rust&lt;/li&gt;
&lt;li&gt;install node&lt;/li&gt;
&lt;li&gt;clone all Cocmd repos&lt;/li&gt;
&lt;li&gt;build the website&lt;/li&gt;
&lt;li&gt;build cocmd cli&lt;/li&gt;
&lt;li&gt;open vscode with all the repos&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  You can do the same for your own projects
&lt;/h1&gt;

&lt;h1&gt;
  
  
  and be the superhero of productivity in your workplace!
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;onboarding&lt;/li&gt;
&lt;li&gt;playbooks&lt;/li&gt;
&lt;li&gt;sharing cmd stuff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cocmd to make your dev life better &lt;a href="https://cocmd.org"&gt;cocmd.org&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cocmd.org/docs/contributing/"&gt;join the open source project&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you help?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cocmd/hub/issues/new"&gt;Add an Idea 💡💡💡 for a new playbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cocmd/cocmd/contribute"&gt;Code with us - 🔥features / 🔥bugs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cocmd/cocmd/issues/new"&gt;Report a bug 🐞🧨🐞&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Data teams can deliver 10x better to the rest of us</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Sun, 29 Oct 2023 14:01:11 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/data-teams-can-deliver-10x-better-to-the-rest-of-us-5hbh</link>
      <guid>https://dev.to/mzsrtgzr2/data-teams-can-deliver-10x-better-to-the-rest-of-us-5hbh</guid>
      <description>&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;This is a standard DBT project &lt;a href="https://github.com/dbt-labs/jaffle_shop" rel="noopener noreferrer"&gt;example data project&lt;/a&gt; "Getting Started", &lt;br&gt;
&lt;strong&gt;long long long list of instructions on how to setup and run everything. familiar right?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fassyk4ugux0trxg33ld4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fassyk4ugux0trxg33ld4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;with &lt;a href="https://cocmd.org" rel="noopener noreferrer"&gt;CoCMD&lt;/a&gt; you could install all dependancies, setup and run it with one line, for any operating system:&lt;br&gt;
&lt;code&gt;datateam.onboarding&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ixemjtqzozfnd63uo1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22ixemjtqzozfnd63uo1.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;behind the scenes, just one yaml and an awesome hub:&lt;br&gt;
&lt;a href="https://github.com/cocmd/cocmd/blob/master/examples/onboarding/data_team/cocmd.yaml" rel="noopener noreferrer"&gt;code&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting the stage
&lt;/h2&gt;

&lt;p&gt;Data teams are instrumental in data-driven organizations. &lt;/p&gt;

&lt;p&gt;A significant aspect of their role involves conveying to others how to manage data operations and services.&lt;/p&gt;

&lt;p&gt;A key facet of their responsibilities entails effectively imparting knowledge on managing data operations and services to others. This often takes the form of &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extensive how-to guides, &lt;/li&gt;
&lt;li&gt;documentation, &lt;/li&gt;
&lt;li&gt;archived Slack conversations, &lt;/li&gt;
&lt;li&gt;and the sharing of internal knowledge. 
They guide teams on various tasks, such as setting up machines for data operations, conducting queries, establishing connections, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Challenges Data Teams Face
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complex Toolchains:&lt;/strong&gt; Data professionals often use a range of tools for data collection, data processing, and analysis. Coordinating these tools and ensuring their proper setup can be a daunting task.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Onboarding:&lt;/strong&gt; New members joining the data team need to quickly adapt to the toolchains and workflows. A smooth onboarding process is crucial for their productivity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repetitive Tasks:&lt;/strong&gt; Data teams frequently deal with repetitive tasks, such as data preprocessing, model training, and report generation. Automating these tasks can save valuable time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; Effective collaboration within the data team and across departments is essential for sharing insights and results. This requires streamlined processes for sharing code, data, and documentation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How CoCMD Can Help
&lt;/h2&gt;

&lt;p&gt;CoCMD offers a simple and open command-line interface to address these challenges. Here's how data teams can benefit:&lt;/p&gt;

&lt;h3&gt;
  
  
  Streamlined Toolchain Setup
&lt;/h3&gt;

&lt;p&gt;CoCMD can automate the setup of the various tools and packages needed by data teams. With a single command, team members can have their development environments configured consistently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Effortless Onboarding
&lt;/h3&gt;

&lt;p&gt;New team members can be onboarded seamlessly using CoCMD. By following predefined onboarding playbooks, they can quickly become productive, eliminating the time-consuming process of manual setup and configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automation of Repetitive Tasks
&lt;/h3&gt;

&lt;p&gt;CoCMD allows data teams to create playbooks for automating repetitive data-related tasks. Whether it's data preprocessing, model training, or report generation, these tasks can be turned into repeatable, one-click processes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced Collaboration
&lt;/h3&gt;

&lt;p&gt;CoCMD playbooks and routines can be easily shared within the team and with other departments. This ensures that everyone is using the same tools and processes, leading to improved collaboration and consistent results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with CoCMD for Data Teams
&lt;/h2&gt;

&lt;p&gt;To get started with CoCMD for your data team, follow these simple steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install CoCMD:&lt;/strong&gt; If you haven't already, install CoCMD using the installation command provided on the &lt;a href="https://cocmd.org" rel="noopener noreferrer"&gt;CoCMD website&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Select Data Packages:&lt;/strong&gt; Choose the data-related packages you need from the CoCMD-Hub, which includes packages for data analysis tools, libraries, and more.&lt;br&gt;
Find in the hub what you need&lt;br&gt;
&lt;a href="https://cocmd.org/docs/packages/from_hub/" rel="noopener noreferrer"&gt;https://cocmd.org/docs/packages/from_hub/&lt;/a&gt;&lt;br&gt;
or write your own &lt;a href="https://cocmd.org/docs/intro" rel="noopener noreferrer"&gt;https://cocmd.org/docs/intro&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Data Playbooks:&lt;/strong&gt; Develop playbooks and routines specific to your data tasks. These can include data preprocessing, machine learning model training, and report generation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Share with Your Team:&lt;/strong&gt; Share your playbooks with your data team, making it easy for everyone to access and use them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With CoCMD, data teams can deliver 10 times more effectively, providing insights and solutions to the rest of the organization faster and with greater consistency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;great dev experience with cocmd cli&lt;/li&gt;
&lt;li&gt;private and secure&lt;/li&gt;
&lt;li&gt;re-use community knowledge&lt;/li&gt;
&lt;li&gt;automatic Docs generation&lt;/li&gt;
&lt;li&gt;automatic notifications system&lt;/li&gt;
&lt;li&gt;automatic recommendation system&lt;/li&gt;
&lt;li&gt;ready distributions to all operating systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vhvbx12f5furrb574d7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vhvbx12f5furrb574d7.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="https://cocmd.org" rel="noopener noreferrer"&gt;CoCMD website&lt;/a&gt; to learn more about CoCMD and how it can revolutionize your data team's processes.&lt;/p&gt;

&lt;p&gt;Contact the CoCMD team at &lt;a href="mailto:mzsrtgzr2@gmail.com"&gt;mzsrtgzr2@gmail.com&lt;/a&gt; for any questions or assistance.&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>productivity</category>
      <category>terminal</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>New opensource to replace long "Getting Started"s forever</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Wed, 18 Oct 2023 11:03:13 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/new-opensource-to-replace-long-getting-starteds-forever-c5c</link>
      <guid>https://dev.to/mzsrtgzr2/new-opensource-to-replace-long-getting-starteds-forever-c5c</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qibb1mnt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ftky106zbjy5hqpmejas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qibb1mnt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ftky106zbjy5hqpmejas.png" alt="Image description" width="640" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Do you find long readmes/wikis with complicated setup instructions frustrating?
&lt;/h2&gt;

&lt;p&gt;So Do I :)&lt;/p&gt;

&lt;p&gt;Instead of writing down long instructions with prerequisites, installation command, configuration changes and all this with operation system variations notes - let's create an amazing experience for the people who needs the software you created. No one cares about the "steps" along the way, just make it happen.&lt;/p&gt;

&lt;p&gt;So I created &lt;strong&gt;&lt;a href="https://cocmd.org"&gt;CoCMD&lt;/a&gt;&lt;/strong&gt;. A simple and open cli app to make the onboarding and playbooks experience amazing.&lt;/p&gt;

&lt;p&gt;here is the basic concept:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z2IroG2I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vhvbx12f5furrb574d7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z2IroG2I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vhvbx12f5furrb574d7.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How does it look?
&lt;/h3&gt;

&lt;p&gt;Let's take for example our &lt;a href="https://cocmd.org/docs/packages/from_hub/k8s/"&gt;Kubernetes package&lt;/a&gt;.&lt;br&gt;
I created several onboarding and playbooks that can be useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zMjI8o26--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cndn0zdqkyiggkk69sf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zMjI8o26--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cndn0zdqkyiggkk69sf1.png" alt="Image description" width="800" height="860"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Showcase
&lt;/h3&gt;

&lt;p&gt;It's important to talk about specific "stories" where the benefit of using CoCMD is obvious.&lt;/p&gt;
&lt;h4&gt;
  
  
  Project Onboarding
&lt;/h4&gt;

&lt;p&gt;Onboarding new hires is a very important process in any company. It's the first impression that the new hire gets from the company and it's the first impression that the company gets from the new hire. It's also a very important process for the new hire to get to know the company and the people in it.&lt;/p&gt;

&lt;p&gt;Read how to do it with CoCMD &lt;a href="https://cocmd.org/docs/showcase/onboarding"&gt;Here&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Playbooks
&lt;/h4&gt;

&lt;p&gt;Usually, every team has a set of routines and procedures that are executed on a regular basis.&lt;br&gt;
This can also be called "playbooks" or "runbooks". &lt;/p&gt;

&lt;p&gt;CoCMD can help you automate these routines and make them available to your team.&lt;/p&gt;

&lt;p&gt;Read how to do it with CoCMD &lt;a href="https://cocmd.org/docs/showcase/routines"&gt;Here&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Codebase CMDOps
&lt;/h4&gt;

&lt;p&gt;Any project can have CMDOps (Command Line Operations). Lets say for example, your project requires some installation steps, or you want to add some shortcuts for your team or community to use.&lt;/p&gt;

&lt;p&gt;Read how to do it with CoCMD &lt;a href="https://cocmd.org/docs/showcase/cmdops"&gt;Here&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Cocmd-Hub
&lt;/h3&gt;

&lt;p&gt;I created several public CoCMD Packages for Programming, Devops, Databases and general Machine setup. &lt;br&gt;
You can visit in &lt;a href="https://cocmd.org/#hub"&gt;https://cocmd.org/#hub&lt;/a&gt; &lt;br&gt;
or run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cocmd &lt;span class="nb"&gt;install

&lt;/span&gt;What Packages to &lt;span class="nb"&gt;install&lt;/span&gt;?:
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; zsh
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; vscode
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; jenkins
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; impala
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; git
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; k8s
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; python
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; osx
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; node
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; go
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; rust
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; aws-s3
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; docker
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and get the full list&lt;/p&gt;

&lt;h3&gt;
  
  
  Create your own
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;add &lt;code&gt;cocmd.yaml&lt;/code&gt; to your project&lt;/li&gt;
&lt;li&gt;follow along the guidelines &lt;a href="https://cocmd.org/docs/packages/package-specification"&gt;https://cocmd.org/docs/packages/package-specification&lt;/a&gt; (still WIP)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now your team/community can run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cocmd &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;your-repo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and get your onboarding and playbooks.&lt;/p&gt;

&lt;p&gt;Visit the project website on &lt;a href="https://cocmd.org"&gt;https://cocmd.org&lt;/a&gt;&lt;br&gt;
Visit the github repo on &lt;a href="https://github.com/cocmd"&gt;https://github.com/cocmd&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Help wanted
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/cocmd/cocmd/issues"&gt;https://github.com/cocmd/cocmd/issues&lt;/a&gt;&lt;br&gt;
there are interesting issues to work on, help me :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nmbYbZFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3u28vd0isp152zfeju4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nmbYbZFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3u28vd0isp152zfeju4t.png" alt="Image description" width="800" height="917"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;contact me on &lt;a href="mailto:mzsrtgzr2@gmail.com"&gt;mzsrtgzr2@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>opensource</category>
      <category>news</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Use the "right words" in interviews</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Wed, 11 Oct 2023 07:17:13 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/use-the-right-words-in-interviews-47oj</link>
      <guid>https://dev.to/mzsrtgzr2/use-the-right-words-in-interviews-47oj</guid>
      <description>&lt;p&gt;In one of my recent interviews as a Senior Software Engineer, I realized that no matter how experienced you are, it's essential to understand what interviewers are looking to hear. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HnpbvTDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lc08yvn6a0eygmv6nr8v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HnpbvTDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lc08yvn6a0eygmv6nr8v.jpg" alt="Image description" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before the interview, I did my research and discovered that they were interested not only in technical skills but also in problem-solving abilities, teamwork, and effective communication. &lt;/p&gt;

&lt;p&gt;My train of thought coming to my next interview was that the human brain is a remarkable organ, often likened to a vast library filled with books of words, each representing a key to an entire world of knowledge. It possesses an incredible capacity to correlate words and concepts, allowing us to access these worlds of information effortlessly. &lt;br&gt;
&lt;strong&gt;A single word can act as a gateway to a complex web of interconnected ideas&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;In the high-stakes world of interviews, where time is limited, and attention is at a premium, the choice of words can make all the difference. &lt;/p&gt;

&lt;p&gt;Interviews are intriguing scenarios where: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;time and focus are in short supply&lt;/li&gt;
&lt;li&gt;Your knowledge and expertise are crucial&lt;/li&gt;
&lt;li&gt;but the challenge lies in selecting the right words.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;These words serve as bridges, linking your responses to the interviewer's own experiences and understanding. &lt;br&gt;
When this connection occurs, it's like forging a meaningful connection in a limited timeframe, greatly boosting your success rate in interviews&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FvN3Dube--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zvafe6a45895lg3hs98.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FvN3Dube--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zvafe6a45895lg3hs98.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this context, think of your words as keys to unlock a shared understanding. Let's say you're discussing a complex data migration project. Instead of diving into the intricate technical details, try to use some of the words i wrote down in the following list (or create your own...)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;project success metric - daily active something… etc&lt;/li&gt;
&lt;li&gt;immutable / mutable&lt;/li&gt;
&lt;li&gt;“relational” / nosql&lt;/li&gt;
&lt;li&gt;consistency&lt;/li&gt;
&lt;li&gt;“blob database” - s3&lt;/li&gt;
&lt;li&gt;volume / scale - talk about data storage volume, data access volume&lt;/li&gt;
&lt;li&gt;“linear scale”&lt;/li&gt;
&lt;li&gt;partitioning&lt;/li&gt;
&lt;li&gt;index&lt;/li&gt;
&lt;li&gt;sorting&lt;/li&gt;
&lt;li&gt;pagination&lt;/li&gt;
&lt;li&gt;websocket when needed (streaming, pushes)&lt;/li&gt;
&lt;li&gt;cdn, edge&lt;/li&gt;
&lt;li&gt;bottleneck&lt;/li&gt;
&lt;li&gt;load balancing + lb metrics&lt;/li&gt;
&lt;li&gt;io / cpu&lt;/li&gt;
&lt;li&gt;data replication, avilablability, downtime&lt;/li&gt;
&lt;li&gt;storage data tiers - according to lifetime etc&lt;/li&gt;
&lt;li&gt;event bus&lt;/li&gt;
&lt;li&gt;“ACID requirements”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and overall good terms to put in your explanations:&lt;br&gt;
good terms to. use&lt;/p&gt;

&lt;p&gt;“good question”&lt;br&gt;
“lookout for”&lt;br&gt;
“tradeoffs”&lt;br&gt;
“Horizontally scaled”&lt;br&gt;
“offloading”&lt;/p&gt;

&lt;p&gt;I know that for non-native english speaker using these terms is not natural. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to come up with your own list?&lt;/strong&gt;&lt;br&gt;
Creating your own list is a simple process. Begin by delving into YouTube videos within your niche of expertise. Pay close attention to words and phrases that instantly resonate with you, clarifying complex explanations. These are the very terms you'll want to weave into your interview responses.&lt;/p&gt;

&lt;p&gt;For me, these type of Videos were perfect - &lt;a href="https://www.youtube.com/watch?v=M6UZ7pVD-rQ&amp;amp;ab_channel=IGotAnOffer%3AEngineering"&gt;https://www.youtube.com/watch?v=M6UZ7pVD-rQ&amp;amp;ab_channel=IGotAnOffer%3AEngineering&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jTyg6hB7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/747w4wp1fml16tww5fh8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jTyg6hB7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/747w4wp1fml16tww5fh8.jpg" alt="Image description" width="512" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some final words - &lt;/p&gt;

&lt;p&gt;I believe the secret sauce of Great interviews is making sure your explanations "click" with the interviewer. It's not just about what you say, but how you say it. By choosing words that resonate with their experience, you're not only showcasing your expertise but also building a connection. So, when your words "click," your interview rocks!&lt;/p&gt;

</description>
      <category>interview</category>
      <category>development</category>
      <category>psychology</category>
      <category>programmers</category>
    </item>
    <item>
      <title>cheapest code signing</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Thu, 14 Sep 2023 06:44:58 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/cheapest-code-signing-47ad</link>
      <guid>https://dev.to/mzsrtgzr2/cheapest-code-signing-47ad</guid>
      <description>&lt;p&gt;nice table to sort them out by pricing and features&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ssldragon.com/ssl-certificates/filters/secures/135/?orderby=price"&gt;https://www.ssldragon.com/ssl-certificates/filters/secures/135/?orderby=price&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Causal Profiling and Why</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Wed, 28 Sep 2022 12:05:57 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/causal-profiling-and-why-4gc8</link>
      <guid>https://dev.to/mzsrtgzr2/causal-profiling-and-why-4gc8</guid>
      <description>&lt;p&gt;Notes for interesting lecture on Performance and Profiling.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/r-TLSBdHe1A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance used to be easy (Moore's law) - just wait for hardware to improve and boom, there is a Performance boost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WnAav3yF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cc451ijwos6eii3dpnr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WnAav3yF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cc451ijwos6eii3dpnr4.png" alt="Image description" width="800" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vZjOFaMw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j80mnzcp7f64wbr3ychx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vZjOFaMw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j80mnzcp7f64wbr3ychx.png" alt="Image description" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance may be changed accidentally by input parameters, environment (stack/heap size), link order, function address, cache sizes etc - this is called "Layout change"&lt;/li&gt;
&lt;li&gt;Stabilizer is repeatedly changing all of this things while running and measuring Performance&lt;/li&gt;
&lt;li&gt;Explains something really interesting about "Null Hypothesis Significance" testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4fQUZ6rN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r88ivrzsn64mmhz6vtsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4fQUZ6rN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r88ivrzsn64mmhz6vtsh.png" alt="Image description" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating one random Layout and testing is not enough. It's required to do it many times with different Layouts to make sure the improvement is not by chance. &lt;br&gt;
If the speedup occures in low chance like &amp;lt;0.05 we reject the speedup. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qmZLb7aC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aflgcs0cwhvl7b7alfle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qmZLb7aC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aflgcs0cwhvl7b7alfle.png" alt="Image description" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Profiler - measures end to end runtime of components
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Co7GAR7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zd7yoen7q3on6192ox9.png" alt="Image description" width="800" height="574"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Profilers are not good at finding out important bottlenecks. Very general.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Causal Profiler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is like an oracle saying where to focus Engineering efforts to get whole Performance improvement for the App. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bUCxTP_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7g4mh3a58h9d36jku9a0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bUCxTP_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7g4mh3a58h9d36jku9a0.png" alt="Image description" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Virtual speedup - slow other components, this simulates one component being relatively faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you need to mark where to measure ("Progress Point").&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Lookout for Interviews Lies 🤨</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Wed, 17 Nov 2021 13:30:28 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/the-interview-pitfall-15c</link>
      <guid>https://dev.to/mzsrtgzr2/the-interview-pitfall-15c</guid>
      <description>&lt;h1&gt;
  
  
  Setting the stage
&lt;/h1&gt;

&lt;p&gt;My last places of work were really really ok, however I found that there was a gap between what I expected of the job and what happened in reality. And it can be pinned down to the very first interview call.&lt;/p&gt;

&lt;p&gt;The story goes like this - an "interviewer" tell you things you want to hear, name-dropping technologies, architectures and promises. Many times, these are future plans, wishes etc. I'm not saying these are intentioned lies. It's describing the job in future/partial terms, not talking about things you "don't want to hear" while hoping you will think "hey, this is exactly what I'm looking for, very soon this all be true".&lt;/p&gt;

&lt;p&gt;BTW there are many variations to this phenomenon - not just to technologies/architectures considerations... it can be really anything related to your day-to-day - responsibilities, terms of employment, work place conditions, team properties (size etc), product roadmap, people interactions and the list goes on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I will focus here on Developers interviews, but you can infer it to other domains as well&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Spoilers
&lt;/h1&gt;

&lt;p&gt;In reality, months go by (even years) and the promises don't happen. &lt;br&gt;
You mostly do things you didn't think you'd do.&lt;br&gt;
Every deviation of "the plan" is excused with a super important "Business requirement". &lt;/p&gt;
&lt;h1&gt;
  
  
  Do the thing
&lt;/h1&gt;

&lt;p&gt;Every "interviewer" (recruiter, hr-rep, founder) you talk to - describe a very bright picture - fitting the story to your "ultimate" job description. &lt;/p&gt;
&lt;h1&gt;
  
  
  Pitfalls
&lt;/h1&gt;

&lt;p&gt;Here are some aspects in the story you need to check before pursuing a job offer from any company:&lt;/p&gt;
&lt;h3&gt;
  
  
  Lookout for "future plans"
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;"This is going to be a distributed system...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;"The next release will be with XXX technology...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;"Eventually, there will be X people on the team...&lt;/code&gt;&lt;br&gt;
Many many aspects of your job can fall in these gaps - plans &amp;amp; promises with no definite roadmap or timeline. This is highly risky. &lt;/p&gt;
&lt;h3&gt;
  
  
  Lookout for % of focus
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;"The team works on...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;"The system uses...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Even if something is talked about during an interview it doesn't mean YOU will do that. This can easily be "name-dropping" for things you want to hear.&lt;/p&gt;
&lt;h3&gt;
  
  
  Lookout for on-going tasks/ technical debt / legacy
&lt;/h3&gt;

&lt;p&gt;NOT talking about on-going tasks, legacy system - should trigger a red flag.&lt;br&gt;
It can be very much not-intentional that an interviewer won't mention these things as they are not "sexy" to an interviewee. You need to make sure you understand what will be required of you for current systems that run. &lt;/p&gt;
&lt;h1&gt;
  
  
  Fireproof your decision
&lt;/h1&gt;

&lt;p&gt;Here is a list of questions to ask the interviewer to make sure the job description is what you think it is.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Disclaimer: Not all companies/people will like you asking those questions. They can think you won't be a team player or you have some hidden agenda just doing things you love or interest you. Try to get the answers to these questions even without actually asking out loud - pick up clues and make self notes.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Describe the team's last Sprint / assignments?&lt;/li&gt;
&lt;li&gt;What will be my first "serious" task?&lt;/li&gt;
&lt;li&gt;How do you do a... b... c... (in present tense) &lt;/li&gt;
&lt;li&gt;Look for facts / not promises or opinions - 

&lt;ul&gt;
&lt;li&gt;last week we did a.... &lt;/li&gt;
&lt;li&gt;this sprint we do x,y,z... &lt;/li&gt;
&lt;li&gt;last bonus check was X% of salary.... &lt;/li&gt;
&lt;li&gt;we hired 2 new people last month... &lt;/li&gt;
&lt;li&gt;last design review took X hours.... &lt;/li&gt;
&lt;li&gt;We deploy X time a week... &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Talk to a team mate in your level 

&lt;ul&gt;
&lt;li&gt;what is your day-to-day like?&lt;/li&gt;
&lt;li&gt;did you feel you have impact on decisions - new tech/framework/features?&lt;/li&gt;
&lt;li&gt;How many "on call"s you receive?&lt;/li&gt;
&lt;li&gt;How did your manager received a suggestion you had?&lt;/li&gt;
&lt;li&gt;how much time you spend coding / discussions?&lt;/li&gt;
&lt;li&gt;How do you solve issues in the team? - ask for a concrete example&lt;/li&gt;
&lt;li&gt;How do you solve issues with your manager? - ask for a concrete example&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Talk to your direct manager/supervisor
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Note: Some companies hide behind an NDA (non disclosure agreement) and can refuse to answer/show what you ask - This is straight up BS and I would recommend avoiding those companies altogether. NDA is not really a reason not to answer candidate's questions.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Why does this happen?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Human nature
&lt;/h3&gt;

&lt;p&gt;It's the interviewers job to bring good people in. &lt;br&gt;
Once he/she decided you fit - it's human nature avoid telling you things that will disarm you or even change the facts a little bit. It's mostly unconscious decisions (I want to believe that...).&lt;br&gt;
BTW, same goes for you: You're not telling things about yourself the other side doesn't want to hear, right?  &lt;/p&gt;

&lt;h3&gt;
  
  
  Urgent Business requirements vs Advancing / Fast vs Right
&lt;/h3&gt;

&lt;p&gt;Every project has a planned roadmap and things change as we go along. I'm not talking about complete Pivoting the company... I'm talking about what we do in the upcoming Sprint. this is ok of course. &lt;/p&gt;

&lt;p&gt;However, you don't want to be in a place of work where there is 0 new features, 0 new technology and 0 personal development. &lt;/p&gt;

&lt;p&gt;There is a spectrum of companies that behave differently - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keep a technology/code/etc even it doesn't fit anymore just because it requires "learning".&lt;/li&gt;
&lt;li&gt;avoiding refactoring "old/bad things".&lt;/li&gt;
&lt;li&gt;not listening to any suggestion for improvement by anyone.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a company/team is always busy with super urgent Business requirements it can never advance technically - which means you won't too. &lt;/p&gt;

&lt;h1&gt;
  
  
  Founders and Startup companies
&lt;/h1&gt;

&lt;p&gt;The behaviour I described varies between companies (and teams). Take an extra step of cautious with Startup companies and the Founders that run them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Founders are extremely optimistic
&lt;/h3&gt;

&lt;p&gt;Founders are the most optimistic people regarding the company/product/future. When it comes to avoid talking about un-pleasant issues, technical debt, decision-making, roadmap - you can hardly trust them to come forward and bring up hard things to talk about. &lt;/p&gt;

&lt;h3&gt;
  
  
  Unknowns
&lt;/h3&gt;

&lt;p&gt;Mostly, there is no way to verify the any thing they drop along a conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  It's mostly business
&lt;/h3&gt;

&lt;p&gt;As I already wrote, there is a spectrum of companies that will prefer Business requirements over "Innovation/New approaches/etc" - Most of times, Startup companies are 100% about Business requirements as they have very specific milestones and drastic changes in requirements.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hard code something for this client&lt;/li&gt;
&lt;li&gt;do that thing manually, you know what? let's do this manually every week - mark it in your calendar, cheers.&lt;/li&gt;
&lt;li&gt;we don't need to pay for this service we really need every day, let's all work like cavemen in the 90th...&lt;/li&gt;
&lt;li&gt;hey this database is a better fit for this - no time now&lt;/li&gt;
&lt;li&gt;refactor this module? - no time now&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  "It will be ok"
&lt;/h1&gt;

&lt;p&gt;When you spell out the words "it will be ok..." before you consider taking an offer - really think about that. YOU are taking the risk here. will it really be ok??? because it won't. &lt;br&gt;
&lt;strong&gt;You need to start your job feeling "It will be awesome"&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The 20-&amp;gt;80 rule
&lt;/h1&gt;

&lt;p&gt;You start the job interview process - after the first call you are 20% certain that you understand the job description and what your future there will be like.&lt;/p&gt;

&lt;p&gt;You need to take those 20% certainty and make it &lt;strong&gt;80%&lt;/strong&gt; (as it never can be 100% until you really work there for some time).&lt;br&gt;
How?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ask the hard questions&lt;/li&gt;
&lt;li&gt;check online - glassdoor, hr groups etc&lt;/li&gt;
&lt;li&gt;talk to past employees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;

</description>
      <category>interview</category>
      <category>jobs</category>
      <category>developers</category>
      <category>beginners</category>
    </item>
    <item>
      <title>FSX for Lustre</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Mon, 19 Oct 2020 18:44:25 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/fsx-for-lustre-2hm1</link>
      <guid>https://dev.to/mzsrtgzr2/fsx-for-lustre-2hm1</guid>
      <description>&lt;p&gt;AWS architecture of Sisense with FSX for Lustre for real time hot data queries with several datasources. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=SxFag4CMWU8&amp;amp;list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb&amp;amp;index=2&amp;amp;ab_channel=AmazonWebServices"&gt;https://www.youtube.com/watch?v=SxFag4CMWU8&amp;amp;list=PLhr1KZpdzukdeX8mQ2qO73bg6UKQHYsHb&amp;amp;index=2&amp;amp;ab_channel=AmazonWebServices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/fsx/lustre/"&gt;https://aws.amazon.com/fsx/lustre/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Spark Journey begins...</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Mon, 28 Sep 2020 10:14:44 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/databricks-spark-certification-notes-and-links-49mj</link>
      <guid>https://dev.to/mzsrtgzr2/databricks-spark-certification-notes-and-links-49mj</guid>
      <description>&lt;p&gt;As an engineer with several years of experience in Backend and Frontend projects it feels like the next natural step is big data challenges. &lt;br&gt;
In the big data world I expect to find computing, IO and scaling challenges not usually found in ordinary/plain/textbook architectures.&lt;/p&gt;

&lt;p&gt;I decided that Spark is the best way to get started. Specifically - the Databricks certification, which is focused on Spark programming and architecture. &lt;/p&gt;

&lt;p&gt;My game plan to pass the &lt;a href="https://academy.databricks.com/exam/databricks-certified-associate-developer"&gt;Databricks spark certification&lt;/a&gt; is to: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read "Learning Spark Lightning fast big data analysis" book and work through all the examples + summarising important insights and lessons so I can repeat those later.&lt;/li&gt;
&lt;li&gt;Go over the skeletons of Databricks Developer course that I found on GitHub from 15 months ago. Should be pretty updated - &lt;a href="https://github.com/vivek-bombatkar/spark-training"&gt;https://github.com/vivek-bombatkar/spark-training&lt;/a&gt; + &lt;a href="https://github.com/vivek-bombatkar/Spark-with-Python---My-learning-notes-"&gt;https://github.com/vivek-bombatkar/Spark-with-Python---My-learning-notes-&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Going through example questions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Please, If you can advice on any source of preparation - write in the comments it will help me.&lt;/p&gt;

&lt;p&gt;I will update as I go for others (and myself).&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Schedule
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Theory
&lt;/h3&gt;

&lt;p&gt;Reading throughly the book &lt;a href="https://laptrinhx.com/learning-spark-lightning-fast-data-analytics-2nd-edition-436517903/"&gt;"Learning Spark Lightning-fast..."&lt;/a&gt;&lt;br&gt;
I think it's reasonable to go through 2 chapters per week.&lt;br&gt;
this means: reading, summarizing and running important code snippets on my own.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Week 1&lt;/em&gt;&lt;br&gt;
Chapter 3 &lt;br&gt;
Chapter 4 &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Week 2&lt;/em&gt;&lt;br&gt;
Chapter 5 &lt;br&gt;
Chapter 6 &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Week 3&lt;/em&gt;&lt;br&gt;
Chapter 7 &lt;br&gt;
Chapter 8 &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Week 4&lt;/em&gt;&lt;br&gt;
Chapter 9 &lt;br&gt;
Chapter 10 &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Week 5&lt;/em&gt;&lt;br&gt;
Chapter 11 - Quick read it's not that important&lt;/p&gt;

&lt;h3&gt;
  
  
  Hands on coding
&lt;/h3&gt;

&lt;p&gt;Basics (4 notebooks)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-pyspark"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-pyspark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-from-pandas-to-spark"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-from-pandas-to-spark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-weather-df"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-weather-df&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vivek-bombatkar/spark-training/blob/master/spark-python/jupyter-weather-df/Weather%20Analysis%20Exercise.ipynb"&gt;https://github.com/vivek-bombatkar/spark-training/blob/master/spark-python/jupyter-weather-df/Weather%20Analysis%20Exercise.ipynb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Advanced topics (10 notebooks)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Windows (4 notebook)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-windows"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-windows"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UDF (3 notebooks)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-udf"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-udf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spark execution(1 notebooks)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-execution"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-execution&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caching (3 notebooks)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-caching"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-caching&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pivoting (1 notebook)&lt;br&gt;
&lt;a href="https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-pivoting"&gt;https://github.com/vivek-bombatkar/spark-training/tree/master/spark-python/jupyter-advanced-pivoting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;total 26 notebooks&lt;br&gt;
I hope to do 3-4 notebooks per week (some will be easy some harder, so taking the average). This will result in 8 weeks of going through the notebooks. Learning what I'm missing etc. &lt;/p&gt;

&lt;p&gt;Everything should take 3 months until I'm ready for the exam. &lt;/p&gt;

&lt;h3&gt;
  
  
  Books PDFs
&lt;/h3&gt;

&lt;p&gt;Learning Spark: Lightning-Fast Big Data Analysis&lt;br&gt;
First Edition&lt;br&gt;
&lt;a href="https://b-ok.asia/book/2493162/9b8d4f?dsource=recommend"&gt;https://b-ok.asia/book/2493162/9b8d4f?dsource=recommend&lt;/a&gt;&lt;br&gt;
Second Edition&lt;br&gt;
&lt;a href="https://laptrinhx.com/learning-spark-lightning-fast-data-analytics-2nd-edition-436517903/"&gt;https://laptrinhx.com/learning-spark-lightning-fast-data-analytics-2nd-edition-436517903/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spark: The Definitive Guide: Big Data Processing Made Simple&lt;br&gt;
&lt;a href="https://b-ok.asia/book/3505368/f04c83?regionChanged"&gt;https://b-ok.asia/book/3505368/f04c83?regionChanged&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spark in Action&lt;br&gt;
&lt;a href="https://b-ok.asia/book/3502170/d3383b"&gt;https://b-ok.asia/book/3502170/d3383b&lt;/a&gt;&lt;/p&gt;

</description>
      <category>spark</category>
      <category>python</category>
      <category>bigdata</category>
    </item>
    <item>
      <title>Don't mess with default Python scoping</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Sat, 05 Sep 2020 10:29:02 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/don-t-mess-with-default-python-scoping-5bg7</link>
      <guid>https://dev.to/mzsrtgzr2/don-t-mess-with-default-python-scoping-5bg7</guid>
      <description>&lt;p&gt;Using the &lt;code&gt;global&lt;/code&gt; and &lt;code&gt;nonlocal&lt;/code&gt; keywords shouldn't happen too often imho. I think it's hard to debug and read. Newcomers may not see the big picture as the original writer of a piece of code. So, when those are used - keep very tight set of tests to make sure it won't be broken in the future and also - more understandable. I tend to read tests to understand how to use. &lt;br&gt;
Why not use them? - I think it makes code less modular. So Use it only in the very same Unit of code.&lt;/p&gt;

&lt;p&gt;For example,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/aws-samples/aws-concurrent-data-orchestration-pipeline-emr-livy/blob/master/dags/airflowlib/emr_lib.py"&gt;https://github.com/aws-samples/aws-concurrent-data-orchestration-pipeline-emr-livy/blob/master/dags/airflowlib/emr_lib.py&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
def client(region_name):
    global emr  # &amp;lt;-- (1)
    emr = boto3.client ('emr', region_name=region_name)

... other functions...

def get_cluster_dns(cluster_id):
    response = emr.describe_cluster(ClusterId=cluster_id)
    return response['Cluster']['MasterPublicDnsName']

... other functions...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I won't call this a "good" example (I would rather gather those functions to a Class with an &lt;code&gt;emr&lt;/code&gt; property) - but at least it's "understandable". The writer intended for the "client" method to be called first for initialization before any other function in this file. &lt;/p&gt;

&lt;p&gt;If you can think of other examples to when it's right to use &lt;code&gt;global&lt;/code&gt; and &lt;code&gt;nonlocal&lt;/code&gt;, please comment in the discussion. &lt;/p&gt;

</description>
      <category>python</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Best Python GIL overview yet</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Fri, 04 Sep 2020 17:35:39 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/best-python-gil-overview-yet-2l12</link>
      <guid>https://dev.to/mzsrtgzr2/best-python-gil-overview-yet-2l12</guid>
      <description>&lt;p&gt;Most of Python experienced programmers know what is the GIL (Global Interpreter Lock) keeping Python code thread safe no matter what operations we make on shared memory. &lt;br&gt;
Most of python programmers know when to use Multiprocessing vs Multithreading and Asyncio for intensive IO operations. &lt;/p&gt;

&lt;p&gt;This article really opened my eyes to why GIL chosen as ultimate solution in CPython's interpreter architecture and how it affected the community when extending CPython/Python:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://realpython.com/python-gil"&gt;https://realpython.com/python-gil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article I found great example to how CPython is not thread-safe - look for the example with "reference counter", beautiful example. &lt;/p&gt;

&lt;p&gt;What I really like is how the writer suggests a potential solution: Use locks for all Objects in memory and lock/unlock every operation it goes through. &lt;/p&gt;

&lt;p&gt;In a nutshell, this solution is problematic because it will create dead locks and performance degradation (locks require cpu) - which can turn away many developers. &lt;br&gt;
So the GIL is THE ONE LOCK for all threading operation that can be released by CPYTHON code (mostly happens on IO calls and Thread exit).&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>Do your own Python's @property</title>
      <dc:creator>MoRoth</dc:creator>
      <pubDate>Mon, 18 May 2020 13:06:02 +0000</pubDate>
      <link>https://dev.to/mzsrtgzr2/doing-python-s-property-myself-42e5</link>
      <guid>https://dev.to/mzsrtgzr2/doing-python-s-property-myself-42e5</guid>
      <description>&lt;p&gt;After reading this chapter in "Expert Python Programming" - &lt;br&gt;
Advanced Attrbiute Access patterns - &lt;a href="https://subscription.packtpub.com/book/application_development/9781789808896/4/ch04lvl1sec39/advanced-attribute-access-patterns"&gt;https://subscription.packtpub.com/book/application_development/9781789808896/4/ch04lvl1sec39/advanced-attribute-access-patterns&lt;/a&gt;&lt;br&gt;
decided to implement @property partially.&lt;br&gt;
Here is the final result - &lt;a href="https://gist.github.com/mzsrtgzr2/46975900b8d7a8e6f8cc51d1a40ca940"&gt;https://gist.github.com/mzsrtgzr2/46975900b8d7a8e6f8cc51d1a40ca940&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class myproperty:
    def __init__(self, func):
        self.f = func

    def setter(self, func):
        self.setter_func = func
        return self # (1) why do we need this? read below on 

    def __get__(self, instance, klass):
        return self.f(instance or klass)

    def __set__(self, instance, value):
        self.setter_func(instance, value)


class Foo:
    def __init__(self):
        self._val=0

    @myproperty
    def temperature(self):
        return self._val

    @temperature.setter
    def temperature(self, value):  # (2) why need same name as getter?
        print('setting to', value)
        self._val = value

ins = Foo()

print(int.temperature)  # 0
ins.temperature = 6
print(int.temperature)  # 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's important to understand how decorators work. This is the key to understand this code. The &lt;em&gt;decorated&lt;/em&gt; function is REPLACED with an instance of your decorator (or a function in case you use a decorator function and not class). That being said, you can add functionality to your decorator class like &lt;code&gt;__get__&lt;/code&gt; and &lt;code&gt;__set__&lt;/code&gt;, like in the code above.&lt;br&gt;
&lt;code&gt;__get__&lt;/code&gt; - doing a "read" operation on the decorator class.&lt;br&gt;
&lt;code&gt;__set__&lt;/code&gt; - doing a "write" operation on the decorator class.&lt;/p&gt;

&lt;p&gt;This is another way to look at decorators - it can be used for "data descriptors" (when you access a field, as in &lt;code&gt;ins.temperature&lt;/code&gt;) and not just as function wrappers (implemented with &lt;code&gt;__call__&lt;/code&gt;, as in &lt;code&gt;ins.temperature()&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Important - why is the &lt;code&gt;decorated set method&lt;/code&gt; should also be named &lt;code&gt;temperature&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;A decorator works like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@dec 
def func1:
   pass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;actually converts to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func1 = dec(func1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so the name of the function is important.&lt;/p&gt;

&lt;p&gt;What happens if we don't use the same name in (2) or drop the &lt;code&gt;return self&lt;/code&gt; statement at the end of our decorator: what used to be &lt;code&gt;temperature&lt;/code&gt; in our class is overridden to &lt;code&gt;None&lt;/code&gt; - losing all the functionality we thought we built. We really happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Foo:
    def __init__(self):
        self._val=0

    def temperature(self):
        return self._val
    temperature = myproperty(temperature)  # instantiating myproperty class

    def temperature(self, value):  # (2) why need same name as getter?
        print('setting to', value)
        self._val = value

    temperature = temperature.setter(temperature)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the property field &lt;code&gt;temperature&lt;/code&gt; is always the &lt;code&gt;reference name&lt;/code&gt; and can't change it.&lt;/p&gt;

</description>
      <category>python</category>
    </item>
  </channel>
</rss>
