<?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: Soma Györe</title>
    <description>The latest articles on DEV Community by Soma Györe (@docoprusta).</description>
    <link>https://dev.to/docoprusta</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%2F48356%2F06187db8-a0e0-41a0-a3c9-f575ed16b138.jpg</url>
      <title>DEV Community: Soma Györe</title>
      <link>https://dev.to/docoprusta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/docoprusta"/>
    <language>en</language>
    <item>
      <title>[Entry] Dj Soma</title>
      <dc:creator>Soma Györe</dc:creator>
      <pubDate>Wed, 23 May 2018 21:06:42 +0000</pubDate>
      <link>https://dev.to/docoprusta/dj-soma-4mhj</link>
      <guid>https://dev.to/docoprusta/dj-soma-4mhj</guid>
      <description>&lt;h1&gt;
  
  
  What I built
&lt;/h1&gt;

&lt;p&gt;A "distributed" music player web application.&lt;/p&gt;

&lt;p&gt;The player is on the server machine and anybody on the local network can add songs to the playlist.&lt;/p&gt;

&lt;p&gt;If somebody adds a song to the playlist he/she can't add a new one for a given time (default is 1 minute).&lt;/p&gt;

&lt;p&gt;There is one device with administrator priviliges. With this device the waiting time can be changed and songs' deletion also possible with it.&lt;/p&gt;

&lt;p&gt;There is an autoplay feature (the application uses the youtube API for this) but sometimes I'm not satisfied with the provided next song. It should be improved so this feature is marked as beta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;Videos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/tz_K8ClsJMs"&gt;video1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/gRuZNHXfE1Y"&gt;video2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ES3oOVrdOCU"&gt;video3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to run this application
&lt;/h3&gt;

&lt;p&gt;I tested it on linux mint 18 but I think it should work on every linux distribution. (docker attaches /dev/snd volume and it's not available on windows)&lt;/p&gt;

&lt;h4&gt;
  
  
  Docker-compose
&lt;/h4&gt;

&lt;p&gt;Download &lt;a href="https://drive.google.com/open?id=1cPFyWOQXEXnErd0sHa8JGciLYz9BoQYg"&gt;Docker compose file&lt;/a&gt; and run &lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Without docker-compose
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;docker container run -d -p 8080:8080 docoprusta/dj-soma-frontend-pusher&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker container run -d --privileged -v /dev/snd:/dev/snd -p 5000:5000 dj-soma-backend&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/docoprusta/dj-soma-frontend-pusher"&gt;Frontend&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/docoprusta/dj-soma-backend-pusher"&gt;Backend&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How I built it
&lt;/h1&gt;

&lt;p&gt;Actually it was one of my half done side project. I tried to use flask-socketio but it's a bit unreliable and hard to use. I read about the pusher contest here and I realized it's perfect for my app :)&lt;/p&gt;

&lt;p&gt;I learned a lot during the development process i.e.: youtube API, how to use pusher, improved my angular knowledge, etc.&lt;/p&gt;

&lt;p&gt;I'd like to develop further the application, refactor the code, add tests, maybe add new features.&lt;/p&gt;

&lt;p&gt;Stack that I used:&lt;/p&gt;

&lt;p&gt;Backend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pusher.com"&gt;Pusher ❤️&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.python.org"&gt;Python 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://flask.pocoo.org"&gt;Flask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mpv.io"&gt;MPV player/libmpv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rg3/youtube-dl"&gt;youtube-dl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jaseg/python-mpv"&gt;python-mpv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pusher.com"&gt;Pusher ❤️&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io"&gt;Angular 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://getbootstrap.com/docs/3.3/"&gt;Bootstrap 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/youtube/v3/"&gt;Youtube API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I used pusher
&lt;/h2&gt;

&lt;p&gt;There is one channel for each client (the channel name is the internal ip address of the client) and one broadcast channel.&lt;/p&gt;

&lt;p&gt;The client channels are used for the remaining time notifications, the broadcast/admin channel for everything else.&lt;/p&gt;

&lt;p&gt;Broadcast channel messages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;song added: When somebody adds a new song, Pusher sends the data of the new song for every client.&lt;/li&gt;
&lt;li&gt;song deleted: similar to song added &lt;/li&gt;
&lt;li&gt;time position changed (current time position of the song): This message is sent 10 times for every song&lt;/li&gt;
&lt;li&gt;volume changed: When somebody uses the volume slider the other clients receive the message from pusher about the new value of the volume slider&lt;/li&gt;
&lt;li&gt;autoplay changed: If somebody checks/unchecks the autoplay checkbox, Pusher sends message for the clients with the new value (true/false)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>pushercontest</category>
      <category>angular</category>
      <category>python</category>
      <category>pusher</category>
    </item>
    <item>
      <title>Explain python global interpreter lock (GIL) Like I'm Five</title>
      <dc:creator>Soma Györe</dc:creator>
      <pubDate>Tue, 27 Mar 2018 06:42:32 +0000</pubDate>
      <link>https://dev.to/docoprusta/explain-python-global-interpreter-lock-gil-like-im-five-25k8</link>
      <guid>https://dev.to/docoprusta/explain-python-global-interpreter-lock-gil-like-im-five-25k8</guid>
      <description></description>
      <category>explainlikeimfive</category>
    </item>
    <item>
      <title>Open source contribution vs side project</title>
      <dc:creator>Soma Györe</dc:creator>
      <pubDate>Wed, 10 Jan 2018 14:26:41 +0000</pubDate>
      <link>https://dev.to/docoprusta/open-source-contribution-vs-side-project-36bk</link>
      <guid>https://dev.to/docoprusta/open-source-contribution-vs-side-project-36bk</guid>
      <description>&lt;p&gt;I think it's really hard to do both in the same time beside a full-time job.&lt;/p&gt;

&lt;p&gt;So my questions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From which can you learn more?&lt;/li&gt;
&lt;li&gt;Which one is better for your career? &lt;/li&gt;
&lt;li&gt;Which one is better for the community?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Small company vs large company?</title>
      <dc:creator>Soma Györe</dc:creator>
      <pubDate>Mon, 08 Jan 2018 12:33:55 +0000</pubDate>
      <link>https://dev.to/docoprusta/small-company-vs-large-company-15a2</link>
      <guid>https://dev.to/docoprusta/small-company-vs-large-company-15a2</guid>
      <description>&lt;p&gt;Currently I'm working in a small company (3 developers).&lt;br&gt;
I think these are the pros and cons:&lt;/p&gt;

&lt;p&gt;pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Freedom (we can choose the stack, the tools, etc.)&lt;/li&gt;
&lt;li&gt;There is no overtime&lt;/li&gt;
&lt;li&gt;I'm familiar with the code base (because I wrote half of them)&lt;/li&gt;
&lt;li&gt;I see and experience every part of software development (design, implementation, testing, deployment)&lt;/li&gt;
&lt;li&gt;There is no useless meetings and other interruptions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Worse salary (than in a big company)&lt;/li&gt;
&lt;li&gt;There is not many people to learn from&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you think about it? What do you prefer?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>job</category>
    </item>
  </channel>
</rss>
