<?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: Andrey Sobolev </title>
    <description>The latest articles on DEV Community by Andrey Sobolev  (@sobolev5).</description>
    <link>https://dev.to/sobolev5</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%2F990122%2F15085106-3295-4903-a0ab-7473cb10669a.jpeg</url>
      <title>DEV Community: Andrey Sobolev </title>
      <link>https://dev.to/sobolev5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sobolev5"/>
    <language>en</language>
    <item>
      <title>Free time tracker for developers</title>
      <dc:creator>Andrey Sobolev </dc:creator>
      <pubDate>Sat, 24 Dec 2022 11:39:29 +0000</pubDate>
      <link>https://dev.to/sobolev5/free-time-tracker-for-developers-33lh</link>
      <guid>https://dev.to/sobolev5/free-time-tracker-for-developers-33lh</guid>
      <description>&lt;p&gt;Friends, I would like to share with you my wonderful and free project that will be of interest to you.&lt;/p&gt;

&lt;p&gt;I have created a free time tracker &lt;a href="https://workhours.space" rel="noopener noreferrer"&gt;https://workhours.space&lt;/a&gt; for programmers (and not only) where you can easy track your time, calculate salary, make reports and many more.&lt;/p&gt;

&lt;p&gt;Forget about boring authorization.&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%2F0sizfzxl65xbs8ehf7go.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%2F0sizfzxl65xbs8ehf7go.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can register in two click via telegram or chrome metamask extension.&lt;/p&gt;

&lt;p&gt;After registration, a perfect profile account is available to you.&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%2F4pbj29fx3gkuzp7kjsb4.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%2F4pbj29fx3gkuzp7kjsb4.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can track your working time via telegram.&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%2F8buenbwkd3ccz6b8nicp.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%2F8buenbwkd3ccz6b8nicp.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or via web interface.&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%2Fkmr29oqwwx3itorm373l.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%2Fkmr29oqwwx3itorm373l.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your session list looks nice.&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%2Fjo3mr9gdkotkm49ucvt5.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%2Fjo3mr9gdkotkm49ucvt5.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also you can share session to your employer.&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%2Fiynwrjqotk2tw70g1ybv.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%2Fiynwrjqotk2tw70g1ybv.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy &lt;a href="https://workhours.space" rel="noopener noreferrer"&gt;https://workhours.space&lt;/a&gt;&lt;br&gt;
It is free and simple.&lt;/p&gt;

</description>
      <category>tracker</category>
      <category>timer</category>
      <category>work</category>
      <category>django</category>
    </item>
    <item>
      <title>Dating site for developers</title>
      <dc:creator>Andrey Sobolev </dc:creator>
      <pubDate>Fri, 16 Dec 2022 09:41:36 +0000</pubDate>
      <link>https://dev.to/sobolev5/dating-site-for-developers-59je</link>
      <guid>https://dev.to/sobolev5/dating-site-for-developers-59je</guid>
      <description>&lt;p&gt;Friends, I would like to share with you my wonderful and free project that will be of interest to you.&lt;/p&gt;

&lt;p&gt;I have created a free dating site &lt;a href="https://it-dating.org/" rel="noopener noreferrer"&gt;https://it-dating.org/&lt;/a&gt; for programmers (and not only) where you can find new friends, useful contacts, as well as a soul mate.&lt;/p&gt;

&lt;p&gt;Forget about boring authorization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F0alncxd4mc1w486hcvr0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0alncxd4mc1w486hcvr0.PNG" alt="Image description" width="492" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can register in two click via telegram or chrome metamask extension.&lt;/p&gt;

&lt;p&gt;After registration, a nice profile account is available to you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F3jr9y4rk50znvu3h8eti.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F3jr9y4rk50znvu3h8eti.PNG" alt="Image description" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to the map (your country will detect automatically)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffhwveshrbagvkcef4fbe.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffhwveshrbagvkcef4fbe.PNG" alt="Image description" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose city and looking for intresting person by tech skills&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fh5hjb3v2c4e4owp7h490.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fh5hjb3v2c4e4owp7h490.PNG" alt="Image description" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or by interests&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqfhiy2evxuljwcup4p4w.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqfhiy2evxuljwcup4p4w.PNG" alt="Image description" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy [&lt;a href="https://it-dating.org/" rel="noopener noreferrer"&gt;https://it-dating.org/&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Python print with line number and variable name</title>
      <dc:creator>Andrey Sobolev </dc:creator>
      <pubDate>Thu, 15 Dec 2022 12:01:28 +0000</pubDate>
      <link>https://dev.to/sobolev5/python-print-with-line-number-and-variable-name-35i0</link>
      <guid>https://dev.to/sobolev5/python-print-with-line-number-and-variable-name-35i0</guid>
      <description>&lt;p&gt;Sometimes you want to print something to the console (without breakpoints setup).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello = "world"
print(hello)
&amp;gt;&amp;gt;&amp;gt; world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While the program is small, there are no problems with this. Let's assume that you have started working with some class with ~ 3000 lines (legacy code) and you need to quickly look at any values. The number of "prints" increases, and it becomes not easy to understand from the first time which "print" refers to which variable. You can of course write 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;print('hello=', hello)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, that's better. But I would still like to see both the line number and the type of variable. And in some cases, the path to the file.&lt;/p&gt;

&lt;p&gt;For such cases, I have written a small (and very useful) utility that will make your life easier. Let's try to install it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install simple-print
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And print something.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from simple_print, import sprint

master = "yoda"

# Print the variable name with the line number
sprint(master) 

# Add blue paint
sprint(master, c="blue") 

# Add a white background
sprint(master, c="blue", b="on_white") 

# Add underline
sprint(master, c="blue", b="on_white", a="underline") 

# ADD the path to
sprint(master, c="blue", b="on_white", a="underline", p=True)

# Return as a string
s = sprint(master, s=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fy6fzfgyg08v7qhqh5tz8.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%2Fy6fzfgyg08v7qhqh5tz8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And of course you can use indents for debugging in forloops:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def test_indent():

    fruits = ["lemon", "orange", "banana"]
    sprint(fruits, c="green")

    for fruit in fruits:
        sprint(fruit, c="yellow", i=4)

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

&lt;/div&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%2Fg5um3icqk1nimmijisp3.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%2Fg5um3icqk1nimmijisp3.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source code can be viewed here &lt;a href="https://github.com/Sobolev5/simple-print" rel="noopener noreferrer"&gt;https://github.com/Sobolev5/simple-print&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Productive development for you. Thanks for reading.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>debugging</category>
      <category>flask</category>
    </item>
  </channel>
</rss>
