<?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: David</title>
    <description>The latest articles on DEV Community by David (@davidgerva).</description>
    <link>https://dev.to/davidgerva</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%2F79997%2F36d10369-3e1b-4236-81c8-795aea4044c3.jpeg</url>
      <title>DEV Community: David</title>
      <link>https://dev.to/davidgerva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/davidgerva"/>
    <language>en</language>
    <item>
      <title>A Software Developer's (guide) gossips :)</title>
      <dc:creator>David</dc:creator>
      <pubDate>Fri, 24 Feb 2023 15:23:36 +0000</pubDate>
      <link>https://dev.to/davidgerva/a-software-developers-guide-gossips--fmj</link>
      <guid>https://dev.to/davidgerva/a-software-developers-guide-gossips--fmj</guid>
      <description>&lt;p&gt;As a software developer, staying up to date with the latest trends and technologies is critical to keeping your skills relevant and ensuring that you're always at the top of your game. 😎💻&lt;/p&gt;

&lt;p&gt;I've launched a newsletter specifically designed for software developers. Every two weeks (or something like that 😜), I'll be sharing a curated list of curious and useful resources that can help you stay informed, learn new skills, and grow as a developer. Something serious but never boring. 📰💡&lt;/p&gt;

&lt;p&gt;Here are some of the types of resources you can expect to find in my newsletter:&lt;/p&gt;

&lt;p&gt;📖 Articles and blog posts on the latest software development trends and techniques.&lt;br&gt;
👨‍🏫 Tutorials and video courses that can help you learn new programming languages and frameworks.&lt;br&gt;
📚 Books and podcasts that provide in-depth coverage of software development topics.&lt;br&gt;
🛠️ Tools and utilities that can streamline your workflow and increase your productivity.&lt;/p&gt;

&lt;p&gt;Whether you're a seasoned developer or just starting out, my newsletter is designed to provide you with the information you need to succeed in your career. And because I'm personally using (or reading) every resource I include, you can be sure that you're getting the best. 😃👍&lt;/p&gt;

&lt;p&gt;Subscribe to my newsletter here: &lt;a href="https://developergossip.substack.com"&gt;https://developergossip.substack.com&lt;/a&gt; 📩👀&lt;/p&gt;

&lt;p&gt;Cheers! 🥂&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Full-remote developers looking for a community!</title>
      <dc:creator>David</dc:creator>
      <pubDate>Sat, 23 Jul 2022 15:42:38 +0000</pubDate>
      <link>https://dev.to/davidgerva/full-remote-developers-looking-for-a-community-20ae</link>
      <guid>https://dev.to/davidgerva/full-remote-developers-looking-for-a-community-20ae</guid>
      <description>&lt;p&gt;I am a software developer working full-remote and moving around Europe for a bunch of reasons.&lt;/p&gt;

&lt;p&gt;I would like to find (or build one!) online community with a real-time chat or something like that: I would like to meet people for a virtual coffee-machine and also share technical ideas, questions and materials with other experienced developers.&lt;br&gt;
A community to refer to when I struggle with my code and where to help others, if I can!&lt;/p&gt;

&lt;p&gt;Do you know something like that? Would you like to be part of that if I create one?&lt;/p&gt;

</description>
      <category>remote</category>
      <category>community</category>
    </item>
    <item>
      <title>My takeway from the GitLab remote playbook</title>
      <dc:creator>David</dc:creator>
      <pubDate>Tue, 24 Aug 2021 09:29:05 +0000</pubDate>
      <link>https://dev.to/davidgerva/my-takeway-from-the-gitlab-remote-playbook-1ehd</link>
      <guid>https://dev.to/davidgerva/my-takeway-from-the-gitlab-remote-playbook-1ehd</guid>
      <description>&lt;p&gt;Basically a copy and paste of what I found really interesting: a TL;DR of &lt;a href="https://about.gitlab.com/company/culture/all-remote/"&gt;https://about.gitlab.com/company/culture/all-remote/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-- &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document the culture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you do not have a living, evolving company handbook, start one now. Consider each aspect of your company culture that is unwritten or implied, and document them. In a fully remote setting, there are no daily in-person interactions where cues are absorbed. It’s vital to over-communicate in detailing values that company culture is built upon.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure the company as if every team member is remote.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you intend to hire remotely but still maintain any physical office space, you must take added care to ensure that the usual downsides of hybrid-remote (see page 5) are not tolerated.&lt;/p&gt;

&lt;p&gt;To empower your people to make decisions and create a more productive future for your team, it's vital to prioritize documentation. It can be easy to procrastinate documenting something when urgent tasks are competing for your attention, but the more this becomes second nature to your team, the more productive and efficient you’ll be. This is something all companies should be doing, though it is even more crucial in an all-remote organization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look for qualities that make a strong remote employee.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those include timeliness, dependability, respect, collaboration, perseverance, empathy, kindness, and ambition. Look for candidates with excellent communication skills and an appreciation for self-learning, self-service, and autonomy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use video calls to engage with candidates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Knock down some barriers to communication with video conferencing. Inform candidates ahead of time that the call will be through video, to give them time to prepare and ensure a stable internet connection.&lt;/p&gt;

&lt;p&gt;Good communication habits enable team members to feel connected to others and aware of business decisions and operations. Communication is the solution to ensuring that teams don’t feel isolated and lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  async work
&lt;/h2&gt;

&lt;p&gt;In a remote setting, mastering asynchronous workflows is vital—even more so than in a co-located environment. Make it a priority to implement “async” work in order to increase efficiency and avoid creating dysfunction. The prerequisite to async is creating strong documentation. At its core, async ommunication is documentation. It’s  delivering a message in a way that doesn’t require the recipient(s) to be available—or even awake—at the same time. If your organization has no standardized method of documentation, establish that first.&lt;/p&gt;

&lt;p&gt;Async also means you’re not expected to immediately respond if, for example, a colleague or even your boss emails you on the weekend. Just reply on Monday. If something is urgent, team members can ping someone on chat whenever—that’s how people can filter through information to know whether something is urgent.&lt;/p&gt;

&lt;p&gt;Meetings are more easily made optional when each one (even social calls) has an agenda and a Google Doc attached to the invite. This allows people to contribute questions or input asynchronously in advance, and catch up on documented outcomes at a later time.&lt;/p&gt;

&lt;h2&gt;
  
  
  informal communication
&lt;/h2&gt;

&lt;p&gt;In a remote environment, leaders should formally organize informal communication, and to whatever degree possible, design an atmosphere where team members all over the globe feel comfortable reaching out to anyone to talk about topics unrelated to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gathering in person
&lt;/h2&gt;

&lt;p&gt;Even in a 100% remote company, leaders should be intentional about planning in-person elements as a way to build relationships and bolster culture. This is especially important in the post-pandemic world, when 1 in 3 workers say they feel disconnected from their peers. Whether it’s at an annual company summit or local coworking days, there are many ways your team can connect in person to build relationships that will help you operate even more effectively when you’re not physically together.&lt;/p&gt;

&lt;p&gt;Here are a few ideas for in-person gatherings:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Meetups
2. Conferences
3. Annual or regular summits
4. Holidays and celebrations
5. Local coworking days
6. Travel budget for team members to visit one another
7. Coworking excursions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;source: &lt;a href="https://gist.github.com/DavidGerva/f5171be872bf2e21b93e659f2a770a67"&gt;https://gist.github.com/DavidGerva/f5171be872bf2e21b93e659f2a770a67&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>gitlab</category>
      <category>remote</category>
    </item>
    <item>
      <title>SpaCy 3 on a Google Cloud Compute Instance to train a NER Transformer Model</title>
      <dc:creator>David</dc:creator>
      <pubDate>Tue, 06 Jul 2021 15:47:55 +0000</pubDate>
      <link>https://dev.to/davidgerva/spacy-3-on-a-google-cloud-compute-instance-to-train-a-ner-transformer-model-23hf</link>
      <guid>https://dev.to/davidgerva/spacy-3-on-a-google-cloud-compute-instance-to-train-a-ner-transformer-model-23hf</guid>
      <description>&lt;p&gt;Here you will find a step by step guide (last tested and working July 2021) on how to install and use Spacy 3.0 (and Cupy) on a Google Cloud GPU powered instance. I wrote this article in order to spare others whole days testing and installing packages. I've already wasted them, why should you? ;)&lt;br&gt;
I used this architecture to train a NER Transformer Model.&lt;/p&gt;

&lt;p&gt;Softwares versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cuda v11.2&lt;/li&gt;
&lt;li&gt;spacy v3.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GCloud instance creation
&lt;/h2&gt;

&lt;p&gt;Create a virtual machine instance: is a google cloud virtual machine with this setup&lt;/p&gt;

&lt;p&gt;GPU machine&lt;br&gt;
&lt;strong&gt;Serie&lt;/strong&gt;: A2&lt;br&gt;
&lt;strong&gt;Machine&lt;/strong&gt;: a2-highgpu-1g&lt;br&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: 1 x NVIDIA Tesla a100&lt;br&gt;
&lt;strong&gt;Image&lt;/strong&gt;: Debian GNU/Linux 10 (buster)&lt;/p&gt;

&lt;p&gt;WARNING: you must modify the standard disk space: 10gb are not enough (at least for my needs). I used 30gb.&lt;/p&gt;

&lt;h2&gt;
  
  
  NVIDIA driver installation
&lt;/h2&gt;

&lt;p&gt;Connect via ssh to the created virtual machine, update the system and install some useful packages with these commands&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade
sudo apt-get -y install pciutils software-properties-common wget g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Check if your gpu is cuda enabled. If not there is probably a problem with your architecture you need to investigate further.&lt;br&gt;
You should have at least one positive output.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lspci | grep -i nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Let's clean eventually previous installation and packages:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get purge nvidia*
sudo apt remove nvidia-*
sudo rm /etc/apt/sources.list.d/cuda*
sudo apt-get autoremove &amp;amp;&amp;amp; sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;gcc compiler is required for development using the cuda toolkit. to verify the version of gcc installed enter&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcc --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;if not present, install it&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get -y install gcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Install kernel headers needed by Nvidia drivers:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get -y install linux-headers-4.19.0-16-cloud-amd64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now download and install the latest nvidia driver for Debian 10. This is the most up-to-date drivers at the time I'm writing this article: &lt;a href="https://www.nvidia.com/Download/driverResults.aspx/173142/en-us"&gt;https://www.nvidia.com/Download/driverResults.aspx/173142/en-us&lt;/a&gt;. If you decide to install more up-to-date drivers (which I recommend) you'll also probably need to accordingly adjust something else from this guide.&lt;br&gt;
If you want to look for some other update / architectures: &lt;a href="https://www.nvidia.com/Download/index.aspx?lang=en-us"&gt;https://www.nvidia.com/Download/index.aspx?lang=en-us&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# download drivers
wget https://us.download.nvidia.com/tesla/460.73.01/NVIDIA-Linux-x86_64-460.73.01.run
# make it executable
chmod u+x NVIDIA-Linux-x86_64-460.73.01.run
# install the drivers
sudo ./NVIDIA-Linux-x86_64-460.73.01.run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When asked, do not install 32-bit compatibilty packages.&lt;br&gt;
Check that the drivers have been correctly installed with:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The ouput should be now something like this. If the command cannot find any GPU, there is something wrong (check for new drivers et similia) and continuing in this guide will be pointless:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--edXKUnAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ymkmok63i57v1h46uanr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--edXKUnAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ymkmok63i57v1h46uanr.png" alt="nvidia_ok"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CUDA11.3 Toolkit installation
&lt;/h2&gt;

&lt;p&gt;Install NVIDIA CUDA 11.3 toolkit packages for Debian 10. For other installations (not considered in this article) please refer to this useful NVIDIA link: &lt;a href="https://developer.nvidia.com/cuda-downloads"&gt;https://developer.nvidia.com/cuda-downloads&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/ /"
sudo add-apt-repository contrib
sudo apt-get update
sudo apt-get -y install cuda-11-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If asked to remove one NVIDIA package proceed with yes.&lt;br&gt;
Check that the drivers are still correctly installed with:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;output should be like the previous one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spacy installation
&lt;/h2&gt;

&lt;p&gt;We will now create a python virtualenv, install spacy and check if spacy can access the GPU.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# install useful package
sudo apt-get -y install python3-venv
# creates venv
python3 -m venv myvenv
# activate it
source myvenv/bin/activate
# upgrade pip
pip install --upgrade pip

# install spacy
pip install -U spacy
# download the trf model
python -m spacy download en_core_web_trf

# install other pip packages and dependencies
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
# point to the correct cuda folder
export CUDA_PATH="/usr/local/cuda-11"
# install spacy transformers info
pip install -U spacy[cuda113,transformers]

# and install the correct version of cupy
# here more info: https://docs.cupy.dev/en/stable/install.html#installing-cupy
pip install cupy-cuda113
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Test spacy and cupy: run python and the following commands&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python
&amp;gt;&amp;gt;&amp;gt; import spacy
&amp;gt;&amp;gt;&amp;gt; spacy.require_gpu()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;the output must be simply&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Another test you can do to be absolutely sure everything is correctly installed, always inside a python console:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import cupy
&amp;gt;&amp;gt;&amp;gt; a = cupy.zeros((1,1))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;this commands should give no output at all. If it does, it will probably be an explanatory error/exception.&lt;/p&gt;

&lt;h2&gt;
  
  
  The end
&lt;/h2&gt;

&lt;p&gt;You are now ready and you can use your GPU inside spacy or any other systems using cupy.&lt;br&gt;
Feel free (and please do it) to reach me out for any error you may find or any question you may have.&lt;br&gt;
This article is also a gist here: &lt;a href="https://gist.github.com/DavidGerva/86bba9a23e4376e4303d3ca02a422612"&gt;https://gist.github.com/DavidGerva/86bba9a23e4376e4303d3ca02a422612&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;p&gt;This guide is an adaptation to my needs and "today" of this material I found online and I tested over and over again till this working solution: should work "as is".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/Mahedi-61/2a2f1579d4271717d421065168ce6a73"&gt;https://gist.github.com/Mahedi-61/2a2f1579d4271717d421065168ce6a73&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/train-a-ner-transformer-model-with-just-a-few-lines-of-code-via-spacy-3-6d4c3339"&gt;https://hackernoon.com/train-a-ner-transformer-model-with-just-a-few-lines-of-code-via-spacy-3-6d4c3339&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.nvidia.com/cuda-downloads"&gt;https://developer.nvidia.com/cuda-downloads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spacy.io/usage/embeddings-transformers"&gt;https://spacy.io/usage/embeddings-transformers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>nlp</category>
      <category>machinelearning</category>
      <category>spacy</category>
      <category>gcloud</category>
    </item>
  </channel>
</rss>
