<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Regev Golan on Medium]]></title>
        <description><![CDATA[Stories by Regev Golan on Medium]]></description>
        <link>https://medium.com/@look4regev?source=rss-7895d0fd23cd------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Y1aooxwH5uaEBGE_Yv1Ing.png</url>
            <title>Stories by Regev Golan on Medium</title>
            <link>https://medium.com/@look4regev?source=rss-7895d0fd23cd------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 21 May 2026 10:17:13 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@look4regev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[How to avoid 9 common mistakes tech professionals are doing in their career]]></title>
            <link>https://look4regev.medium.com/how-to-avoid-9-common-mistakes-tech-professionals-are-doing-in-their-career-de8da670b57b?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/de8da670b57b</guid>
            <category><![CDATA[personal-brand]]></category>
            <category><![CDATA[career-path-planning]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Mon, 05 Dec 2022 21:29:04 GMT</pubDate>
            <atom:updated>2022-12-05T21:29:04.351Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PGzffIaOzpXzG5OGhb1Qxw.png" /></figure><ol><li>“I got it all figured out. What’s next?”<br>Never stop learning. When you think you have got it all covered and there are no more challenges for you, think again.</li><li>“This is not what I have expected. What’s next?”<br>Don’t try only to make the workplace change for you. Adapt to be the best solution to what the workspace needs from you.</li><li>“Hiding your needs from your team lead.”<br>Just read what Iris Shoor wrote here <a href="https://irisshoor.com/blog/how-to-impact-your-manager/">https://irisshoor.com/blog/how-to-impact-your-manager/</a></li><li>“I don’t plan, I do”<br>Write design documents. Communicate in writing your plans to align expectations.</li><li>“Using the wrong people for guidance”<br>Search for 3–4 mentors. Always use your judgement when taking advices.</li><li>“Linkedin and GitHub are for seniors”<br>No they are not only for seniors, but for juniors as well. Invest in your personal brand and utilize popular professional social networks.</li><li>“Focus on the code, not on the system design”<br>Understand the context. See the bigger picture, not only on the task at hand.</li><li>“Stackoverflow is better than the docs”<br>Don’t be lazy. Understand the core, the “why”, the DNA of the tools you use. “Reading the docs” can be the perfect simple source of knowledge you need.</li><li>“I am a tech professional first, and a team member last”<br>Be your team lead’s right hand. Teach. Listen. Document. Show respect. Be open minded. Foster good relationships. Care about being a good team member. Work with people, not only with the code.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=de8da670b57b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I’ve Joined Check Point- This Is Why]]></title>
            <link>https://look4regev.medium.com/ive-joined-check-point-this-is-why-da138e99604d?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/da138e99604d</guid>
            <category><![CDATA[cloud-security]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[recruitment]]></category>
            <category><![CDATA[check-point-software]]></category>
            <category><![CDATA[hiring]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Mon, 18 Apr 2022 15:25:46 GMT</pubDate>
            <atom:updated>2022-04-27T09:57:38.528Z</atom:updated>
            <content:encoded><![CDATA[<p>Today was my first day at Check Point, and I am super excited to share why have I joined as an <strong>R&amp;D Group Manager</strong> of <strong>Cloud Infrastructure</strong> so others can better understand this unique group and company.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lMF-MzjzDBKI6x7Ww6ok5g.png" /></figure><h3>People</h3><h4>Friendly</h4><p>I have never had such a positive and <strong>friendly interviewing process</strong> as I had in Check Point. My jaw just dropped when I left the campus on the technical test day. Everyone who I met was so nice, professional and pleasant. I’ve heard so many great things about the people I will be working with. It was all so quick and professional. Check Point takes recruiting very seriously. The facilities in the TLV office are very impressive as well. Candidate experience makes the difference.</p><h4>Diversity</h4><blockquote>Check Point strives every day to increase <strong>female representation</strong> and continues to promote campaigns and partnerships with relevant organizations to increase the number of <strong>women</strong> in technology-related positions and train them to increase their skills in cybersecurity. <strong>More than half of Check Point’s top executive</strong> management today are held by <strong>women</strong>, such as the Chief Product Officer (CPO), Chief Financial Officer (CFO), Chief Operating Officer (COO) and Chief Commercial Officer (CCO)</blockquote><h3>Winning</h3><p>I love to win. To take part in a winning team. Something big is happening in Check Point and I expect big wins soon for this company for the following reasons.</p><h4>“You Deserve The Best Security”</h4><p>This^ is the new mantra leading Check Point, published earlier this year (Jan 2022). So many people, companies and institutions are suffering from cyber attacks. For example: It’s <a href="https://www.forbes.com/sites/chuckbrooks/2021/10/24/more-alarming-cybersecurity-stats-for-2021-/?sh=4b49bcc64a36">expected that <strong>ransomware</strong> costs to reach <strong>$265 Billion</strong> by 2031</a>. Check Point is focused on that domain for more than the past <strong>25 years</strong>. A <strong>giant that can lead the world</strong>. <strong>We deserve being protected</strong>. That’s a meaningful purpose to get up in the morning for.</p><h4>“Second Best Will Get You Breached”</h4><p>With the <a href="https://www.calcalist.co.il/market/article/sjhl01y0y">financial reports of 2021</a> published, Check Point shows to the world who is really the boss when it comes to the Israeli cyber industry, getting back to leading the board with the <strong>highest worth among all Israeli companies, $17B</strong>. It’s also not afraid to compare its offering to the competitors and shows how it has the <strong>widest and best products</strong> so any usage of others is a meaningful risk to get breached.</p><h4>“Best Security All The Way To The Space”</h4><p>Check Point hosted the control and communication of the first-ever commercial astronauts mission to space, and the biggest scientific expedition ever conducted in the international space station right from the Tel Aviv Headquarters. It has ended successfully utilizing the company’s products to protect this important mission. See the following video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIOZhm3008S4%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIOZhm3008S4&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIOZhm3008S4%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d58da70717d69386d193351f52772a9d/href">https://medium.com/media/d58da70717d69386d193351f52772a9d/href</a></iframe><h4>Size</h4><blockquote>Check Point provides the <strong>most comprehensive</strong> and cutting edge cyber security technology to more than <strong>100,000 organizations</strong> of all sizes and <strong>millions of users around the globe</strong> (including most of <strong>Fortune 500</strong> companies)</blockquote><p>Join that to the impressive but clear “Infinity Vision” unified solution:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ne85FlrOeuU9uIcFU9HiQQ.png" /></figure><p>As a Cloud Advocate I get especially excited from their cloud offering:</p><blockquote>Process efficiencies and increased network agility are driving SaaS, PaaS and IaaS technology adoption at a rapid pace. This new infrastructure is also presenting businesses with a unique set of security challenges. Check Point CloudGuard provides <strong>unified cloud native security for all your assets and workloads, giving you the confidence to automate security, prevent threats, and manage posture</strong> — everywhere — across your multi-cloud</blockquote><h4>Winners Everywhere</h4><p>Check Point has <a href="https://www.checkpoint.com/about-us/company-overview/">bought a couple of successful cyber security startups</a> (few examples: <strong>Avanan, Protego, Dome9</strong>) and especially <a href="https://www.checkpoint.com/press/2022/check-point-software-technologies-extends-its-cloud-security-offering-with-developer-first-security-platform/"><strong>Spectral</strong> just recently</a> (Spectral’s security tools support a wide range of automated code security use cases). Working in the same team with successful, capable and ambitious groups is an amazing experience. I was impressed they live to the standard of allowing many agile organizations within the backing of the corporate resources.</p><h3>My Role</h3><p>As mentioned, Check Point has a large offering in the Cloud Security domain. It has <strong>hundreds of developers</strong> pushing through products on that domain. All those products are using a unified <strong>infrastructure </strong>of authentication and “application marketplace”. I’m going to lead not only a group of highly skilled engineers that develop excellent products, but also connect with hundreds of engineers to let them plug into the infrastructure to be served to Check Point’s clients. We’re a versatile group of engineers using the state-of-the-art engineering tools- NodeJS, ReactJS, Kubernetes, AWS, Prometheus, Grafana and many others.</p><h4>Focal Point</h4><p>Developer relations, application workflows and reliable infrastructure are going to be meaningful pillars of my work. The best ingredients I enjoy working with. <strong>Being in the center between dozens of dev teams and the infrastructure connecting workflows and technology while we scale our offering</strong> is going to be an incredible challenge.</p><h4>Production All The Way</h4><p>Full stack development on SaaS products is not only writing code locally. Our engineers in the Cloud Infra group must <a href="https://betterprogramming.pub/the-path-of-getting-comfortable-in-production-c88456146f00">get comfortable in production</a>. Aside from making clean code one must also think on monitoring, metrics, alerts and cloud architecture.</p><h3>Join Me</h3><p>You felt this part is coming right? :) Here you go:</p><p><a href="https://careers.checkpoint.com/">The World&#39;s Leading Provider of Gen V Cyber Security Solutions</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6KNnh9gURESjbs7L.jpg" /></figure><p><a href="https://www.linkedin.com/in/shali-mor-9942645/">Shali Mor</a>, thank you for accepting me to join the ride and your assistance with making this article 💪</p><p>Yours,</p><p><a href="https://www.linkedin.com/in/look4regev/">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=da138e99604d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How To Convert Your MongoDB Single Instance Into a Cluster]]></title>
            <link>https://look4regev.medium.com/how-to-convert-your-mongodb-single-instance-into-a-cluster-94994068cd46?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/94994068cd46</guid>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[replicaset]]></category>
            <category><![CDATA[mongodb]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Wed, 24 Mar 2021 15:53:01 GMT</pubDate>
            <atom:updated>2021-03-24T15:53:47.521Z</atom:updated>
            <content:encoded><![CDATA[<p>Is it too much to ask to make my single instance MongoDB into a highly available cluster? Yes, if you trust only on <a href="https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/">MongoDB’s docs</a> to do that. Save a couple of hours of breaking stuff by following this quick tutorial instead.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wQnU9sNG6ZBOZWtl" /><figcaption>Photo by <a href="https://unsplash.com/@gerandeklerk?utm_source=medium&amp;utm_medium=referral">Geran de Klerk</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a> — Two is better than one, especially for mongodb instances :)</figcaption></figure><h3>Let’s start</h3><p>You have a working, <strong>in use with data</strong>, <strong>standalone mongodb server</strong>. Take an <strong>image</strong> from it and create <strong>another server</strong> from that image. It’s very useful to do so also to have a <strong>backup</strong> of course before you start messing with it. Now you have 2 identical standalone mongodb instances.</p><p>Now this is the <strong>most important point to follow that is not mentioned in the mongodb docs:</strong> They assume your new mongo instance is a <strong>clean</strong> one. A mongodb that was just installed without any auth, users or data. This is <strong>not true</strong> if you have created the new server from an image of course. So go ahead to that new server and stop the mongod, remove all of its data folder’s files and start mongod back again. Now it is running a clean mongo that is ready to become a secondary.</p><p>On both servers edit the mongo config to have a replSetName:</p><pre>replication:<br>  replSetName: myReplica</pre><p>On the designated primary (not the one from previous step of course), run:</p><pre>rs.initiate(<br>   {<br>      _id: &quot;myReplica&quot;,<br>      version: 1,<br>      members: [<br>         { _id: 0, host : &quot;mongo1.mydomain:27017&quot; },<br>         { _id: 1, host : &quot;mongo2.mydomain:27017&quot; },<br>      ]<br>   }<br>)</pre><p>This will make the new instance start getting data from the original instance. Now you have a working primary and secondary. It can be verified by running rs.conf()</p><h3>Wait, you are not done yet</h3><p>The final super important point to mention that is missed in MongoDB’s docs, is that a primary-secondary cluster is <strong>not good enough</strong> for mongodb’s high availability- meaning when the primary crash, the secondary won’t be able to “vote itself” to become the new primary. You must have <strong>2 secondaries at least</strong> for that to happen, or an <a href="https://docs.mongodb.com/manual/tutorial/add-replica-set-arbiter/"><strong>arbitrer</strong></a>.</p><h3>Option 1: Creating another secondary</h3><p>Just take again another server from the image you have, clean its mongo data files, update replica in mongo config and this time run on the primary rs.add(&quot;mongo3.mydomain:27017&quot;) to add the new secondary to the cluster. This means of course you need to pay for the same machine size and storage costs. If you don’t need extra survivability or read replica continue to the next option instead.</p><h3>Option 2: Creating an arbitrer</h3><p>Just take again another server from the image you have, clean its mongo data files, update replica in mongo config and this time run on the primary:</p><pre>rs.addArb(&quot;mongo-arbitrer1.mydomain:27017&quot;)</pre><h3>Summary</h3><p>Congrats! You have made a standalone into a replicaSet in a few clicks. Of course the best option is to write an automation to create replicaSet clusters from the first place but for a manual one time process for an already in use mongodb I hope this quick tutorial was nicer to follow :)</p><p>Yours,</p><p><a href="https://www.linkedin.com/in/look4regev/">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=94994068cd46" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to: Recover EC2 Instance Failing To Start]]></title>
            <link>https://look4regev.medium.com/how-to-recover-ec2-instance-failing-to-start-a65988181116?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/a65988181116</guid>
            <category><![CDATA[aws-ec2]]></category>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[nvme]]></category>
            <category><![CDATA[fstab]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Tue, 12 Jan 2021 22:34:53 GMT</pubDate>
            <atom:updated>2021-07-22T12:19:08.769Z</atom:updated>
            <content:encoded><![CDATA[<p>Your EC2 instance fails to start? Read here to fix it if it is a mount issue.</p><p>See the system log for errors:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/518/1*NIscO0YSm9dBJsIdnF4JFQ.png" /></figure><p>Seeing volume mounting issues? It means you need to fix the /etc/fstab using another machine. Follow these steps:</p><ol><li>Create a new machine with the same instance family you want to recover.</li><li>Before starting the new machine, detach the root volume from the machine you want to recover and attach it to the new machine. Rename it in case you have the /dev/sda1 in its Name tag (in AWS Console) to make sure AWS won’t attach it as a root volume to the new machine as well.</li><li>Start the new machine</li><li>If it is not started (due to the same root volume conflict probably), try to snapshot the old root volume, then create a new volume out of it, and then attach the new one. Sometimes volumes get messed up and the snapshot trick will fix it.</li><li>lsblk to see the name of the attached volume</li><li>mkdir /mnt/recovered</li><li>mount -o nouuid /dev/nvme1n1p1 /mnt/recovered <br>The -o here is to overcome the issue (mount: unknown filesystem type &#39;(null)&#39;) of root volumes having the same UUID</li><li>cd /mnt/recovered/etc</li><li>vi fstab</li><li>Add ,nofail after the defaults . This will allow the old instance to start and for you to do the right thing and change your /dev/nvme2n1 with a proper UUID to <a href="https://www.suse.com/support/kb/doc/?id=000019309">prevent it to change after a restart</a> (to get the UUID use blkid).</li><li>Shutdown the new machine. Detach the recovered volume and attach it back to the original machine (make sure to name it sda1 when prompted to be able to start it, otherwise you’ll get the “no root volume found” error). Start it. Done. You’ve saved the day :)</li><li>Remember to terminate the recovery machine $$</li></ol><p>Best,</p><p><a href="https://look4regev.com">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a65988181116" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Should I Use This Open Source? M.Sc CS Thesis]]></title>
            <link>https://look4regev.medium.com/should-i-use-this-open-source-m-sc-cs-thesis-7549403962ce?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/7549403962ce</guid>
            <category><![CDATA[masters-degree]]></category>
            <category><![CDATA[thesis]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Sat, 12 Oct 2019 21:47:44 GMT</pubDate>
            <atom:updated>2019-11-13T19:57:55.300Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/651/1*6WwTlrc0FYeIm35V1btoKg.jpeg" /></figure><h3>TL;DR</h3><p>We, users of open source, need <strong>better tooling to quickly assess security, quality, maintainability and legality of open source repositories</strong>. I am a Computer Science <strong>Masters</strong> of Science student who is <strong>researching open source</strong> and <strong>creating a system</strong> to answer current gaps. In this article I am “open sourcing” the <strong>kickoff</strong> of my work.</p><h3>Open Source</h3><p>Open source has become a huge <strong>community</strong> of developers. Only on GitHub for instance, as of Oct 19, there are almost <strong>33 million </strong><a href="https://github.com/search?q=type:user&amp;type=Users"><strong>users</strong></a>. To put in perspective, it may not sound a lot compared to social networks with +1B users so to better understand this 33M number- it’s 7M <strong>more</strong> than the entire population in <a href="https://en.wikipedia.org/wiki/Demography_of_Australia"><strong>Australia</strong></a><strong>! 🇦🇺</strong>). Those users are working on more than <strong>29 million</strong> <a href="https://github.com/search?q=is:public">public repositories</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xNT0tAi7-JC9ttxI" /></figure><h3>Our story begins in 1983</h3><p>In 1983, <a href="https://en.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a> launched the <a href="https://en.wikipedia.org/wiki/GNU_Project">GNU Project</a> to write a complete operating system free from constraints on the use of its source code. This was the kickoff for the <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GNU open source licence</a> which is one of the most popular licenses in use today (right behind <a href="https://en.wikipedia.org/wiki/Apache_License"><strong>Apache</strong></a> and <a href="https://en.wikipedia.org/wiki/MIT_License"><strong>MIT</strong></a> <a href="https://resources.whitesourcesoftware.com/blog-whitesource/top-open-source-licenses-trends-and-predictions">as of 2018</a>) for open source projects ever since <strong>Linus Torvalds</strong> released <strong>Linux</strong> to the world back in <strong>1991</strong>. People are using open source for <strong>more than 35 years</strong> now. Compared to a man’s lifespan- open source should now be in its golden time 👨 . Is it?</p><h3>README.md is not enough</h3><p>Meet Joe. Joe is an average developer who needs to build a <strong>web service in python</strong>. He doesn’t know which framework he should use. No problem. A bit of Google and Github scanning to find a nice article comparing all the most popular frameworks:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/687/1*yMnR8SjqhQxlwglqDh-_aA.png" /><figcaption><a href="https://nordicapis.com/8-open-source-frameworks-for-building-apis-in-python/">https://nordicapis.com/8-open-source-frameworks-for-building-apis-in-python/</a></figcaption></figure><p>Joe thinks to himself: “<em>OK, there are several here that can match my specific need. I’ll simply go for the most </em><strong><em>popular</em></strong><em> one</em>.”</p><h4>Wait, there is more</h4><p>How would you define “<strong>popular</strong>”? Github’s stars? ⭐️ Forks? contributors? PRs count? Latest commit date? Insights? How do people talk about it on Stack overflow ? Twitter? and what about security? Is it safe to use? Is the license 👨‍⚖️ suitable for me? How clean is its code base if I’ll need to understand it deeper? How well was it documented? You see where I am getting. It can take Joe hours and days to examine open source repos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7lIuY_748lq98oxQ.jpg" /></figure><p>Do you remember that commercial above? To educate against piracy of movies or music download, they used a car. Let’s go to the vehicle industry one more time to justify what I am about to say:</p><blockquote>You wouldn’t buy a used car without getting your car mechanic to vet it</blockquote><p>What makes Joe think he is qualified enough to vet an open source repository? There are so many things to consider, as I mentioned above. Where is the mechanic that can easily vet it all for Joe and give him a detailed report and summary on the repository in question?</p><h3>Innovative inspiration- sourcecred.io</h3><p>You can’t really get the picture of maintainers activity or community pulse by checking out the “committers count”. It is <strong>frustrating and misleading</strong>. Then came <a href="http://sourcecred.io">sourcecred.io</a> (let me help you read it- “<em>source-cred</em>” as in “<strong><em>credit</em></strong>”). The idea behind it is that <strong>you wouldn’t say the USA All-Stars basketball team equals to your high-school’s team just because both of them have 5 team members and are playing once a week, right?</strong> sourcecred is doing an awesome work in that domain using open plugins architecture and community endorsement to close the gap of correctly estimating the credit of the contributors to the repository’s life.</p><h3>This is what I need</h3><p>We have talked about the background and the problems with using open source. Let’s get down to specify the requirements from a solution:</p><blockquote>A system that will examine open source repository and will grade it for its quality, community, security, license, …. The list is too long. Every open source user cares about a couple of other things as well. We’ll need a pluggable system that will be easily configurable and extensible by the community. Each plugin will know to do a specific evaluation and the mother system will merge it all to a cohesive report and a final grade.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/317/1*pFj3G3U6j_rvqnnngGEjWA.png" /></figure><h3>Meet “vett”. The solution.</h3><p>vett will know to answer the following question:</p><blockquote>Should I use this open source?</blockquote><p>vett will utilize a pluggable design pattern to make it easy for the community to extend it with all the tools open source users need to vet open source repositories on all of the different aspects we have discussed. Each vett user will be able to assemble their own suite of plugins to look into what they care the most, or use the community/default standard to go through all the common practices.</p><h3>Don’t get excited yet. Just tell me what you think</h3><p>Nice to meet you. Thank you for reading thus far :)</p><p>My name is Regev Golan and I am a Computer Science Masters student who is starting his thesis project. I am researching open source and building this “vett” system. I will be happy to hear your thoughts. I believe in feedback prior to starting to code 💻</p><p>I am also a believer in experiencing from first hand any research you are doing, so if one is doing a research about open source- He or she should also <strong>open source the research itself</strong>. Right? :) Please see the following <a href="https://drive.google.com/drive/folders/1fSg0c1D49hBTT-Fus_8F0yAyZpwST28Q?usp=sharing">directory</a> of articles I have gathered to understand open source better.</p><h4>SoA</h4><p>Main question I am asking and welcoming specific feedback to is what is the State-of-Art practices regarding evaluating open source? How do you do it in your company? What do you care about when asking “should I/we use this open source”?</p><h4>Contact me</h4><p>I’ll appreciate your claps to know you like the direction I am taking 👏</p><p>Comment / <a href="https://linkedin.com/in/look4regev">connect</a> me / join the <a href="https://gitter.im/open-source-researchers/community#">gitter</a> channel. Let’s talk! 📣</p><p>Stay tuned. Hopefully I’ll be able to share a quarterly article about my progress and open sourcing my findings, materials and of course <a href="https://github.com/look4regev/vett">codebase</a> (star it⭐ ️and watch 👁 to be updated).</p><h3>Thanks</h3><ol><li>“<a href="https://www.mta.ac.il"><strong>MTA, The Academic College of Tel Aviv–Yaffo</strong></a>” — The college I have the privilege of learning for the M.Sc, and especially <a href="https://www.linkedin.com/in/judogo">Dr. Uri Globus</a> for his amazing mentorship.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*W8-nOou5El-QSwdE.jpg" /></figure><ol><li><a href="https://hiredscore.com"><strong>HiredScore</strong></a> — The revolutionising HR-Tech start-up I am a part of for the past 3 years as a software engineer. Thanks team for your support allowing me to expand my horizons with this academic degree.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/342/0*CdB7kkve7b4jjik4.png" /></figure><p>Sincerely yours,</p><p><a href="https://look4regev.com">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7549403962ce" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Speed Up Your Dev Skills With Using git Through The Shell]]></title>
            <link>https://look4regev.medium.com/speed-up-your-dev-skills-with-using-git-through-the-shell-abed05d44b7e?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/abed05d44b7e</guid>
            <category><![CDATA[zsh]]></category>
            <category><![CDATA[git]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[oh-my-zsh]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Sun, 16 Sep 2018 18:55:26 GMT</pubDate>
            <atom:updated>2018-09-27T10:44:12.513Z</atom:updated>
            <content:encoded><![CDATA[<p>Let’s say you are already convinced that using git through the terminal is best comparing to trusting a UI tool. This <strong>quick</strong> tutorial will cover 80% of the common actions for you to see how easy and fun git through the terminal is.</p><p>Assuming you work on a <strong>MacOS</strong>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/488/1*dKTPhQ_ToyBi6fbt4vyiiQ.png" /><figcaption>Terminal screenshot with a repo on oh-my-zsh shell</figcaption></figure><h3>It is hard to drive a car when you can’t see the road</h3><p>Do yourself a favour and install a modern shell first! I recommend <a href="https://medium.com/ayuth/iterm2-zsh-oh-my-zsh-the-most-power-full-of-terminal-on-macos-bdb2823fb04c">iterm2 + zsh + oh-my-zsh</a></p><pre>brew install zsh<br>sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)&quot;</pre><p>Now you can know immediately what is the current checked out branch you are on, the status, etc...</p><h3>Make the basic flow of development</h3><p>(starting with working directly on master for simplicity, later showing work with branch):</p><pre>➜  git clone <a href="mailto:git@github.com">git@github.com</a>:look4regev/git_lab.git<br>Cloning into &#39;git_lab&#39;...<br>remote: Counting objects: 58, done.<br>remote: Total 58 (delta 0), reused 0 (delta 0), pack-reused 58<br>Receiving objects: 100% (58/58), 2.18 MiB | 265.00 KiB/s, done.<br>Resolving deltas: 100% (12/12), done.<br>➜  cd git_lab<br>➜  git_lab git:(master) git pull -r # Pull latest with rebase<br>Already up to date.<br>Current branch master is up to date.<br>➜  git_lab git:(master) git status<br>On branch master<br>Your branch is up to date with &#39;origin/master&#39;.</pre><pre>nothing to commit, working tree clean<br>➜  git_lab git:(master) echo &quot;\n hello&quot; &gt;&gt; moshe.txt # Make changes<br>➜  git_lab git:(master) ✗ git status<br>On branch master<br>Your branch is up to date with &#39;origin/master&#39;.</pre><pre>Changes not staged for commit:<br>  (use &quot;git add &lt;file&gt;...&quot; to update what will be committed)<br>  (use &quot;git checkout -- &lt;file&gt;...&quot; to discard changes in working directory)</pre><pre>modified:   moshe.txt</pre><pre>no changes added to commit (use &quot;git add&quot; and/or &quot;git commit -a&quot;)<br>➜  git_lab git:(master) ✗ git diff<br>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────<br>modified: moshe.txt<br>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────<br>@ moshe.txt:6 @<br>Guess What ?</pre><pre>Oh My Fucking God !<br>\ No newline at end of file<br>Oh My Fucking God !<br> hello<br>➜  git_lab git:(master) ✗ git commit -am &quot;Add all files to commit in one command&quot;<br>[master 24ee76e] Add all files to commit in one command<br> 1 file changed, 2 insertions(+), 1 deletion(-)<br>➜  git_lab git:(master) git push</pre><p>Simple right? Let’s recape:</p><ol><li>Clone the repo</li><li>Pull it (if it was already cloned)</li><li>Check for status</li><li>Make changes</li><li>See the changes (Highly recommended to work also with <a href="https://github.com/so-fancy/diff-so-fancy">diff-so-fancy</a>)</li><li>Commit</li><li>Push</li></ol><h3>Now to work with a branch</h3><pre>➜  git_lab git:(master) git pull -r<br>Already up to date.<br>Current branch master is up to date.<br>➜  git_lab git:(master) git checkout -b mywork # Create a new branch and checkout<br>Switched to a new branch &#39;mywork&#39;<br>➜  git_lab git:(mywork) echo &quot;hello from branch&quot; &gt;&gt; moshe.txt<br>➜  git_lab git:(mywork) ✗ git status<br>On branch mywork<br>Changes not staged for commit:<br>  (use &quot;git add &lt;file&gt;...&quot; to update what will be committed)<br>  (use &quot;git checkout -- &lt;file&gt;...&quot; to discard changes in working directory)</pre><pre>modified:   moshe.txt</pre><pre>no changes added to commit (use &quot;git add&quot; and/or &quot;git commit -a&quot;)<br>➜  git_lab git:(mywork) ✗ git diff<br>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────<br>modified: moshe.txt<br>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────<br>@ moshe.txt:6 @<br>Guess What ?</pre><pre>Oh My Fucking God !<br>\ No newline at end of file<br>Oh My Fucking God !hello from branch<br>➜  git_lab git:(mywork) ✗ git commit -am &quot;Commit from branch&quot;<br>[mywork 01de354] Commit from branch<br> 1 file changed, 1 insertion(+), 1 deletion(-)<br>➜  git_lab git:(mywork) git push --set-upstream origin mywork<br>Enumerating objects: 5, done.<br>Counting objects: 100% (5/5), done.<br>Delta compression using up to 4 threads.<br>Compressing objects: 100% (3/3), done.<br>Writing objects: 100% (3/3), 315 bytes | 315.00 KiB/s, done.<br>Total 3 (delta 1), reused 0 (delta 0)<br>remote: Resolving deltas: 100% (1/1), completed with 1 local object.<br>remote:<br>remote: Create a pull request for &#39;mywork&#39; on GitHub by visiting:<br>remote:      <a href="https://github.com/look4regev/git_lab/pull/new/mywork">https://github.com/look4regev/git_lab/pull/new/mywork</a><br>remote:<br>To github.com:look4regev/git_lab.git<br> * [new branch]      mywork -&gt; mywork<br>Branch &#39;mywork&#39; set up to track remote branch &#39;mywork&#39; from &#39;origin&#39;.</pre><p>Pretty much the same except for the use of a new branch and pushing it to origin. Now to make a PR, let’s say in Github in this case- look how nice they are to suggest us the direct link to make a PR from this newly created branch. To merge the branch to master I recommend do it from the Github:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/432/1*Li9mbkmZvUNa31al5c5KyA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/810/1*FfEZoVfZKtW-PqaMhbbcXA.png" /></figure><p>Be advised, when you merged from github it means that now your local repo is out of sync so to get the latest master changes:</p><pre>➜  git_lab git:(mywork) git checkout master<br>Switched to branch &#39;master&#39;<br>Your branch is up to date with &#39;origin/master&#39;.<br>➜  git_lab git:(master) git pull -r</pre><p>Now that was easy.</p><h3>Aliases</h3><p>If it looks long and tedious to write all this text, remember you can have quick aliases for everything. For your few weeks with the terminal make the full commands to make sure you know what is happening but then you can move to use the suite of aliases that are automatically installed with <a href="https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh#L41">oh-my-zsh</a> such as:</p><pre>gpsup # git push --set-upstream origin mybranch</pre><h3>Problems</h3><h4>Get latest Changes from master</h4><pre>➜  git_lab git:(mywork) git checkout master<br>Switched to branch &#39;master&#39;<br>Your branch is up to date with &#39;origin/master&#39;.<br>➜  git_lab git:(master) git pull -r<br>git checkout -<br>Already up to date.<br>Current branch master is up to date.<br>➜  git_lab git:(master) git checkout - # Go back to last branch<br>Switched to branch &#39;mywork&#39;<br>Your branch is up to date with &#39;origin/mywork&#39;.<br>➜  git_lab git:(mywork) git rebase master # Put the branch ahead of master<br>Current branch mywork is up to date.<br>➜  git_lab git:(mywork) git push -f # You changed the history so must push force</pre><h4>Conflicts</h4><p>When getting changes from master or to master you’ll probably have conflicts from other people’s changes. Don’t be panic, this is how you handle it like a boss:</p><pre>➜  git_lab git:(mywork) git rebase master # Read what happens:<br>First, rewinding head to replay your work on top of it...<br>Applying: Commit from branch<br>Using index info to reconstruct a base tree...<br>M moshe.txt<br>Falling back to patching base and 3-way merge...<br>Auto-merging moshe.txt<br>CONFLICT (content): Merge conflict in moshe.txt<br>error: Failed to merge in the changes.<br>Patch failed at 0001 Commit from branch<br>Use &#39;git am --show-current-patch&#39; to see the failed patch</pre><pre>Resolve all conflicts manually, mark them as resolved with<br>&quot;git add/rm &lt;conflicted_files&gt;&quot;, then run &quot;git rebase --continue&quot;.<br>You can instead skip this commit: run &quot;git rebase --skip&quot;.<br>To abort and get back to the state before &quot;git rebase&quot;, run &quot;git rebase --abort&quot;.<br>➜  git_lab git:(549c327) ✗ cat moshe.txt # Git shows you the conflict:<br>123</pre><pre>Guess What ?</pre><pre>&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD<br>Oh My Fucking God !Big mess<br>=======<br>Oh My Fucking God !hello from branch<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Commit from branch<br>➜  git_lab git:(549c327) ✗ vi moshe.txt # Editing and fixing the file<br>➜  git_lab git:(549c327) ✗ cat moshe.txt # See how I want the final version will be:<br>123</pre><pre>Guess What ?</pre><pre>Oh My Fucking God !Big mess-&gt;hello from branch<br>➜  git_lab git:(549c327) ✗ git add moshe.txt # Mark the conflicts were resolved<br>➜  git_lab git:(549c327) ✗ git rebase --continue # Notice the branch is coming back to &quot;mywork&quot; after being on detached<br>➜  git_lab git:(mywork) git push -f</pre><p>Recap of conflict resolving:</p><p>I rebased master to my branch which made a conflict. After editing and solving the conflict I am adding the file and continuing the rebase. At the end important to notice to push force again because the history was changed. If something goes off in the middle of the rebase you can always cancel it:</p><p>git rebase --abort</p><h3>Summary</h3><p>The terminal is great and gives a lot of visibility to what you’re doing. With time you’ll figure it easily how to solve edge cases but this workflow I gave you is sufficient to get you started. The terminal is your best friend once you know how to use it. Hope that this article made you closer ;)</p><p>Feel free to give a clap^)^ and connect through my <a href="https://www.linkedin.com/in/look4regev">Linkedin</a> :) Regev.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=abed05d44b7e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Working in Tech: Start Your Fastest — Then Accelerate]]></title>
            <link>https://look4regev.medium.com/working-in-tech-start-your-fastest-then-accelerate-9d275958e814?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/9d275958e814</guid>
            <category><![CDATA[success]]></category>
            <category><![CDATA[work]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Thu, 22 Mar 2018 22:08:55 GMT</pubDate>
            <atom:updated>2018-03-24T10:35:59.590Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Lvz897QCIoq8ID_3MPn_cA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/uj3hvdfQujI?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">SpaceX</a> on <a href="https://unsplash.com/search/photos/spaceship?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Just like shooting a spaceship, you start working your fastest, and then reaching to new heights, environments and capabilities that push you to accelerate and to go faster. A great workplace, manager, a team and yourself are all critical to allow that. I work as a software engineer for a start-up named <a href="https://hiredscore.com">HiredScore</a> which I see as a place obligated to that principle. In this article I’ll try to get into the details on what makes HiredScore to be such a place.</p><blockquote>Management is about persuading people to do what they don’t want to do, while leadership is about inspiring people to do things they never thought they could. (Steve Jobs)</blockquote><h3><a href="https://hiredscore.com">HiredScore</a> — The Workplace</h3><p>We are an HR-Tech company trying to revolutionise how enterprises hire better. How can a group of 35 people can achieve that? You take each worthy opportunity, push it fast, than accelerate it. The people will follow.</p><p>One place that immediately pops into my mind as a role model for this attitude is the amazing Jack Ma, founder of Alibaba, from this very early inspiring speech to his employees back in 1999:</p><p><a href="https://www.youtube.com/watch?v=Up9-C4_8dVo">https://www.youtube.com/watch?v=Up9-C4_8dVo</a></p><blockquote>If you want to build a ship, don’t assign people tasks and work, but rather teach them to long for the endless immensity of the sea<br>(Antoine de Saint-Exupery)</blockquote><h3>Manager</h3><p>A lot has been said about the importance of a manager on the people’s abilities and results. A great manager puts you in places that keep surprises you to achieving them.</p><h3>Team</h3><p>One can believe when he sees other doing the impossible. Be in a team of great people and you’ll find yourself soon doing more by yourself.</p><blockquote>A bird sitting on a branch doesn’t fear that it will break- The bird trusts its wings and not on the branch that she sits on</blockquote><h3>You</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hTrG5dgGkNvfGkLUrYzDdA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/geM5lzDj4Iw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">sydney Rae</a> on <a href="https://unsplash.com/search/photos/you?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>People want to be all that they can be. I say there is no such thing “can”. Add or change something and you are in a new “can” state.</p><p>Work for a great company, be in a wonderful group of people, ask to be pushed and to help you go faster. Do it.</p><p>Thank you, my great TEAM at HiredScore, for empowering me to start fast and together to keep accelerating.</p><p><a href="https://www.linkedin.com/in/look4regev">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9d275958e814" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Better Code Quality with Python, PyCharm & Pylint]]></title>
            <link>https://look4regev.medium.com/better-code-quality-with-python-pycharm-pylint-a635e5b978d5?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/a635e5b978d5</guid>
            <category><![CDATA[linter]]></category>
            <category><![CDATA[pycharm]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[code-quality]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Tue, 02 May 2017 17:04:15 GMT</pubDate>
            <atom:updated>2017-05-02T17:11:49.621Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/725/1*F8yOY7v6hMb71rosTGHgbg.jpeg" /></figure><p>Have less bugs and better code style in Python with <a href="https://www.pylint.org/">Pylint</a> static code analysis- This is how to do that (With <a href="https://www.jetbrains.com/pycharm/">PyCharm</a> IDE):</p><p>Install pylint: pip install pylint</p><p>Use pylint as an external tool- unfortunately PyCharm doesn’t support changing its python linter:</p><p>Go to Pycharm &gt; Preferences &gt; Tools &gt; External Tools &gt; Add (“+” sign) &gt; Fill in the details of pylint:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KKp5qR_q0Y151hfnYaUIYg.png" /><figcaption>PyCharm configuration for pylint as an external tool</figcaption></figure><p>Pay attention I am not calling the pylint program, but a script I have. This script is in order to have one centralized place that holds the pylint run configuration, able to run on a single file or on a complete dir tree and finally it knows to work inside your python virtualenv (to be able to validate imports):</p><p><em>run_pylint_validation.sh:</em></p><pre><strong>#!/bin/bash</strong></pre><pre># No files argument will run on all dir tree<br>FILES=<strong>$</strong>{1:-&quot;*.py&quot;}</pre><pre># Should get path from inside the virtualenv<br>PYLINT_PATH=<strong>$</strong>{2:-&quot;pylint&quot;}</pre><pre><em># Disable common bugs with pylint 1.6.4<br>find </em>. -type f -name &quot;$FILES&quot; | <em>xargs </em>$PYLINT_PATH --reports=n --disable=C0111,E0401,W0621,E1129,E0202 --rcfile=~/.pylintrc</pre><p>One final very useful thing to be able to shoot up the pylint validation on the file currently active on PyCharm is to link it to a keystroke:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/605/1*fMUM9f5qwgMwSntyytN-Gw.png" /></figure><p>That’s it! Now you can mark your code on the editor &gt; right click &gt; tools &gt; pylint. This will show you a report of the errors.</p><p>Happy coding :)</p><p><a href="https://www.linkedin.com/in/look4regev/">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a635e5b978d5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why use Yarn over NPM? The brilliant yarn.lock file]]></title>
            <link>https://look4regev.medium.com/why-use-yarn-over-npm-the-brilliant-yarn-lock-file-fb64ba751429?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/fb64ba751429</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[yarn-package-manager]]></category>
            <category><![CDATA[npm]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Mon, 01 May 2017 19:41:59 GMT</pubDate>
            <atom:updated>2017-05-02T09:42:35.735Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*kNZ3I_SJ8Ify_rYh8YRI7w.png" /><figcaption>yarn logo from <a href="https://yarnpkg.com">https://yarnpkg.com</a></figcaption></figure><p><a href="https://yarnpkg.com/en/">Yarn</a> is the new Javascript package manager in town, created by Facebook, and it is so cool, useful and easy to adopt, that <a href="https://www.npmjs.com/">NPM</a> may soon become <strong>obsolete</strong>. In this short example I’ll try to clarify this key killer feature of Yarn, that is the hardest one to understand: The yarn.lock file.</p><p>Let’s say Alice did a small <strong>change in the package.json of our project </strong>and committed it to master.</p><p>Bob <strong>pulled</strong> <strong>locally</strong>, and did a `<strong>yarn install</strong>` but then his <strong>git showed uncommitted differences on the yarn.lock</strong> file even though Bob didn’t changed anything. Why?</p><p>yarn.lock file actually warned us that something is not right by showing the uncommitted changes. Alice touched the package.json but didn’t actually re-run the `yarn install` creating a “non synced” package.json and yarn.lock. This is exactly the big value of yarn over npm because Alice “caused” a situation in which our web-service is going to be different than what Alice have locally, which is a bad thing and can cause “<em>but it worked on my environment</em>” problems.</p><p>With the lock file, yarn shows the power of another layer of validation between environments.</p><p>See great further reading on this amazing package manager from <a href="https://yarnpkg.com/">https://yarnpkg.com/</a></p><p>Last point I want to share from my experience is that migrating all of our production services and development environments from npm to Yarn went very smoothly and easily.</p><p>Goodluck!</p><p><a href="https://www.linkedin.com/in/look4regev/">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fb64ba751429" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tips when starting to work in a software company as a developer]]></title>
            <link>https://look4regev.medium.com/must-know-tips-when-starting-to-work-in-a-software-company-as-a-developer-27584c1fbc86?source=rss-7895d0fd23cd------2</link>
            <guid isPermaLink="false">https://medium.com/p/27584c1fbc86</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[tech]]></category>
            <category><![CDATA[git]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Regev Golan]]></dc:creator>
            <pubDate>Sat, 08 Apr 2017 20:27:06 GMT</pubDate>
            <atom:updated>2018-02-06T20:25:01.679Z</atom:updated>
            <content:encoded><![CDATA[<p>The following are tips to spread your wings in your first work in an tech company as a software engineer.</p><ol><li><strong>GIT</strong> source control- learn to work with the <a href="https://git-scm.com/book/en/v2/Getting-Started-The-Command-Line">CLI</a>. Every company has their own set of tools so instead of learning yet again a new GUI, the CLI is unanimous and <a href="https://www.quora.com/Why-do-some-people-prefer-to-use-Git-via-Terminal-rather-than-GitHubs-Mac-App">powerful</a>.</li><li><strong>GitHub</strong>- learn to work with a known git repository such as GitHub and make a full common dev flow including <a href="https://help.github.com/articles/about-pull-request-reviews/">branch-PR-review-merge</a>. In addition to knowledge, your style is also important so use git like an open-source pro with following <a href="https://chris.beams.io/posts/git-commit/">git commit</a> <a href="http://karma-runner.github.io/0.13/dev/git-commit-msg.html">style</a>.</li><li><strong>Time is money</strong>- your time as a software developer is very expensive so every work you do should have a clear purpose and a problem that need to be solved so get used to thinking and acting that way.</li><li><strong>VPC</strong>- servers should not be freely accessed for obvious security reasons so most tech companies put their servers behind a <a href="http://gizmodo.com/5990192/vpns-what-they-do-how-they-work-and-why-youre-dumb-for-not-using-one">VPN</a> (Virtual Private Network). Worth a few minutes of read time.</li><li><strong>Cloud</strong>- <a href="https://aws.amazon.com">AWS</a>/GCP/Azure- cloud providers has so many services that tech companies use so go through them, understand their purpose and go attend a <a href="http://meetup.com">meetup</a> or a convention about it.</li><li><strong>CI</strong>/CD- get to know some continuous integration, build and deployment tools such as CircleCI, Jenkins &amp; Travis.</li><li><strong>Code style</strong>- learn the recommended style for your programming language and use it (for example <a href="https://www.python.org/dev/peps/pep-0008/">pep8</a> for python). You’ll get rejects and be ashamed if you’ll have bad style in your new work.</li><li><strong>Linux</strong>- learn Linux basic commands, basic <a href="http://linuxcommand.org/writing_shell_scripts.php">shell scripting</a> and using <a href="https://blog.interlinked.org/tutorials/vim_tutorial.html">vim</a> editor because most servers today are Unix based and with the DevOps methodology most companies adopted, you are likely to handle also some operations and deployments tasks.</li><li><strong>Scripting</strong>- you’ll need to do some quick tools so play around with scripts in Python for example, learn to use a <a href="https://en.wikipedia.org/wiki/Shebang_(Unix)">shebang</a> and <a href="http://askubuntu.com/questions/229589/how-to-make-a-file-e-g-a-sh-script-executable-so-it-can-be-run-from-termina">executable scripting</a> grants.</li><li><strong>Embrace</strong> tools to empower you- most people use <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a> add-on for the <a href="https://en.wikipedia.org/wiki/Z_shell">zsh shell</a> in your new workplace? It’s probable for a good reason, don’t fear from new tools, quickly adopt and use them to make you work faster. It’s accepted to have first weeks of learning, use it.</li><li>Request <strong>access</strong> before you start- when you get to know your future work place, you can start learn things prior to the first day, giving you a head start and the time to acquire the skills needed for your new job.</li><li><strong>Lastly</strong>, spend some time to learn cool tools and technologies to get to use to the shock of the full stack of technologies in your new workplace. Be at the top of your game.</li></ol><p>Goodluck,</p><p><a href="https://www.linkedin.com/in/look4regev/">Regev Golan</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=27584c1fbc86" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>