<?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: Data Umbrella</title>
    <description>The latest articles on DEV Community by Data Umbrella (@data_umbrella).</description>
    <link>https://dev.to/data_umbrella</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%2Forganization%2Fprofile_image%2F6301%2Febc145a0-8576-41fd-954a-8fa386e67c1e.jpg</url>
      <title>DEV Community: Data Umbrella</title>
      <link>https://dev.to/data_umbrella</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/data_umbrella"/>
    <language>en</language>
    <item>
      <title>Serving PyTorch Models in Production</title>
      <dc:creator>Sangam SwadiK</dc:creator>
      <pubDate>Tue, 29 Nov 2022 14:39:06 +0000</pubDate>
      <link>https://dev.to/data_umbrella/serving-pytorch-models-in-production-1h5o</link>
      <guid>https://dev.to/data_umbrella/serving-pytorch-models-in-production-1h5o</guid>
      <description>&lt;p&gt;Summary posted by: &lt;a href="https://www.linkedin.com/in/sangam-swadi-k/"&gt;Sangam SwadiK&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro to serving models with PyTorch
&lt;/h2&gt;

&lt;p&gt;Machine learning/Deep learning models are rarely deployed across the industry. The polls (&lt;a href="https://venturebeat.com/ai/why-do-87-of-data-science-projects-never-make-it-into-production/"&gt;Venturebeat&lt;/a&gt;, &lt;a href="https://www.kdnuggets.com/2022/01/models-rarely-deployed-industrywide-failure-machine-learning-leadership.html"&gt;KdNuggets&lt;/a&gt;) indicate roughly 80-90 percent of the models developed never make it into production. This could be due to various reasons such as ROI, ineffective leadership, business needs or failure to incorporate MLOps.&lt;/p&gt;

&lt;p&gt;As a Data Scientist/ML engineer, one of your responsibilities is to ensure a well designed and functional pipeline. And model deployment is an important part of the pipeline.&lt;/p&gt;

&lt;p&gt;This is where the PyTorch ecosystem comes to rescue! PyTorch, TorchServe and many other projects built on PyTorch, can be used from model development until model deployment. There has also been an upward &lt;a href="https://trends.google.com/trends/explore?date=today%205-y&amp;amp;q=pytorch,tensorflow"&gt;trend&lt;/a&gt; in PyTorch  due to ease of usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro to Event
&lt;/h2&gt;

&lt;p&gt;This talk is for a data scientist or ML engineer looking to serve their PyTorch models in production. It will cover post training steps that should be taken to optimize the model such as quantization and TorchScript. It will also walk the user in packaging and serving the model through Facebook's TorchServe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fx_NaKwFYbg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/npatta01/pytorch-serving-workshop"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Section Timestamps of Video
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=0s"&gt;00:00:00&lt;/a&gt; About session&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=47s"&gt;00:00:47&lt;/a&gt; About Data Umbrella&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=258s"&gt;00:04:18&lt;/a&gt; Introduction&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=316s"&gt;00:05:16&lt;/a&gt; Session agenda&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=361s"&gt;00:06:01&lt;/a&gt; Machine learning at Walmart&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=731s"&gt;00:12:11&lt;/a&gt; Review of some deep learning concepts&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=924s"&gt;00:15:24&lt;/a&gt; BERT: Different architectures&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=967s"&gt;00:16:07&lt;/a&gt; Bi-LSTM vs BERT&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1319s"&gt;00:21:59&lt;/a&gt; Model inference&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1461s"&gt;00:24:21&lt;/a&gt; Load the model&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1521s"&gt;00:25:21&lt;/a&gt; Test prediction&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1681s"&gt;00:28:01&lt;/a&gt; Inference review(inference time vs accuracy tradeoff)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1757s"&gt;00:29:17&lt;/a&gt; BERT large&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=1803s"&gt;00:30:03&lt;/a&gt; Distilled-BERT&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2034s"&gt;00:33:54&lt;/a&gt; Optimizing model for production&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2043s"&gt;00:34:03&lt;/a&gt; Post training optimization: Quantization&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2150s"&gt;00:35:50&lt;/a&gt; Types of Quantization&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2255s"&gt;00:37:35&lt;/a&gt; Quantization results&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2303s"&gt;00:38:23&lt;/a&gt; Post training optimization: Distillation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2384s"&gt;00:39:44&lt;/a&gt; Distillation results&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2435s"&gt;00:40:35&lt;/a&gt; Eager execution vs Script mode&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2522s"&gt;00:42:02&lt;/a&gt; TorchScript JIT: Tracing vs Scripting&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2591s"&gt;00:43:11&lt;/a&gt; TorchScript Timing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2721s"&gt;00:45:21&lt;/a&gt; Optimizing the model(Hands On)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=2856s"&gt;00:47:36&lt;/a&gt; Quantization(Hands On)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3120s"&gt;00:52:00&lt;/a&gt; TorchScript(Hands On)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3393s"&gt;00:56:33&lt;/a&gt; Deploying the model&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3433s"&gt;00:57:13&lt;/a&gt; Options for deploying Pytorch model&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3462s"&gt;00:57:42&lt;/a&gt; Benefits of TorchServe&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3581s"&gt;00:59:41&lt;/a&gt; Packaging a model/MAR&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3600s"&gt;01:00:00&lt;/a&gt; Pytorch BaseHandler&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3780s"&gt;01:03:00&lt;/a&gt; Built in handlers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3855s"&gt;01:04:15&lt;/a&gt; Serving&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3910s"&gt;01:05:10&lt;/a&gt; APIs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=3932s"&gt;01:05:32&lt;/a&gt; Deploying the Model(Hands On)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=4931s"&gt;01:22:11&lt;/a&gt; Lessons Learned&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg&amp;amp;t=5030s"&gt;01:23:50&lt;/a&gt; Q/A&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About the Speakers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bio
&lt;/h3&gt;

&lt;p&gt;Nidhin Pattaniyil is a Machine Learning Engineer in Walmart Search.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with the Speaker
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nidhin's LinkedIn: &lt;a href="https://www.linkedin.com/in/nidhinpattaniyil/"&gt;Nidhin Pattaniyil&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Nidhin's GitHub: &lt;a href="https://github.com/npatta01"&gt;@npatta01&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/data-umbrella/event-transcripts/blob/main/2022/59-nidhin-pytorch.md"&gt;Event notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.meetup.com/data-umbrella/events/286639683/"&gt;Meetup Event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fx_NaKwFYbg"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/npatta01/pytorch-serving-workshop"&gt;GitHub repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deeplearning</category>
      <category>pytorch</category>
      <category>deployment</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Tutorial on Intro to Rust Programming</title>
      <dc:creator>Sangam SwadiK</dc:creator>
      <pubDate>Fri, 25 Nov 2022 18:04:55 +0000</pubDate>
      <link>https://dev.to/data_umbrella/tutorial-on-intro-to-rust-programming-146a</link>
      <guid>https://dev.to/data_umbrella/tutorial-on-intro-to-rust-programming-146a</guid>
      <description>&lt;p&gt;Summary posted by: &lt;a href="https://www.linkedin.com/in/sangam-swadi-k/"&gt;Sangam SwadiK&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro to Rust
&lt;/h2&gt;

&lt;p&gt;The Data Science community has greatly benefitted from the python ecosystem(scipy, numpy, scikit-learn etc.) which has tools at every step of the Data Science workflow. Under the hood most of these python libraries use C/C++ which has bindings with python to improve performance. Although this has reduced developmental time, it is not without the reduction in performance as python is not known for its performance.&lt;/p&gt;

&lt;p&gt;This is where Rust comes in! It provides performance similar to C/C++ but &lt;br&gt;
better memory use and concurrency. It can be used with python just as C/C++ but with improved speed and safety. &lt;/p&gt;

&lt;p&gt;There has been an upward trend in opensource tools written in Rust with interfaces to python eg: &lt;a href="https://github.com/pydantic/pydantic"&gt;pydantic&lt;/a&gt; (&lt;a href="https://pydantic-docs.helpmanual.io/blog/pydantic-v2/"&gt;moved to Rust in the recent release&lt;/a&gt;), &lt;a href="https://github.com/pola-rs/polars"&gt;polars&lt;/a&gt; which is very fast as indicated in the H2Oai &lt;a href="https://h2oai.github.io/db-benchmark/"&gt;benchmarks&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Into to event
&lt;/h2&gt;

&lt;p&gt;An introduction to Rust Programming for complete beginners. This 2-hour video tutorial covers:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what is Rust&lt;/li&gt;
&lt;li&gt;how to install Rust&lt;/li&gt;
&lt;li&gt;how to use Rust online&lt;/li&gt;
&lt;li&gt;basic structure of a Rust program&lt;/li&gt;
&lt;li&gt;core concepts of Rust&lt;/li&gt;
&lt;li&gt;a little CLI (command line interface) program&lt;/li&gt;
&lt;li&gt;Q&amp;amp;A &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Video
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7E8nLExn3WI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/rochacbruno/rust-intro/blob/wip/script.md"&gt;Event outline and notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a href="https://github.com/rochacbruno/rust-intro"&gt;rust-intro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Data science libraries in Rust: &lt;a href="https://www.arewelearningyet.com/"&gt;https://www.arewelearningyet.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rust book:  &lt;a href="https://www.rust-lang.org/learn"&gt;https://www.rust-lang.org/learn&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;micro (terminal editor): &lt;a href="https://micro-editor.github.io/"&gt;https://micro-editor.github.io/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Section Timestamps of Video
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=0s"&gt;00:00:00&lt;/a&gt; Beryl introduces Data Umbrella&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=335s"&gt;00:05:35&lt;/a&gt; Bruno begins presentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=780s"&gt;00:13:00&lt;/a&gt; Hello World&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=1090s"&gt;00:18:10&lt;/a&gt; Cargo and Projects&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=1490s"&gt;00:24:50&lt;/a&gt; Variable Definition&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=2160s"&gt;00:36:00&lt;/a&gt; Type Inference&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=2472s"&gt;00:41:12&lt;/a&gt; Mutability&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=2816s"&gt;00:46:56&lt;/a&gt; Strong Typing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=2940s"&gt;00:49:00&lt;/a&gt; Variable Shadowing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=3210s"&gt;00:53:30&lt;/a&gt; Constants&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=3501s"&gt;00:58:21&lt;/a&gt; Data Types&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=4440s"&gt;01:14:00&lt;/a&gt; Static, Stack &amp;amp; Heap&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=5038s"&gt;01:23:58&lt;/a&gt; Function&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=5162s"&gt;01:26:02&lt;/a&gt; Docs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=5323s"&gt;01:28:43&lt;/a&gt; Ownership&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=5676s"&gt;01:34:36&lt;/a&gt; Borrowing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=5857s"&gt;01:37:37&lt;/a&gt; Console Input&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6018s"&gt;01:40:18&lt;/a&gt; DEMO ERROR ignore this part :)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6182s"&gt;01:43:02&lt;/a&gt; Read user input&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6322s"&gt;01:45:22&lt;/a&gt; Combinators&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6361s"&gt;01:46:01&lt;/a&gt; Result type&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6600s"&gt;01:50:00&lt;/a&gt; External Dependency&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6727s"&gt;01:52:07&lt;/a&gt; Random numbers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=6878s"&gt;01:54:38&lt;/a&gt; Type coercion&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=7149s"&gt;01:59:09&lt;/a&gt; Complete program&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=7E8nLExn3WI&amp;amp;t=7307s"&gt;02:01:47&lt;/a&gt; Q &amp;amp; A&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About the Speaker
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bio
&lt;/h3&gt;

&lt;p&gt;Bruno is a Software Engineer who works developing the Red Hat Ansible Platform, he is member of the Python Software Foundation, creator of Dynaconf settings manager and a Rust enthisiast for 5+ years.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with the Speaker, Bruno Rocha
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@rochacbruno"&gt;@rochacbruno&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/rochacbruno"&gt;Bruno Rocha&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/rochacbruno"&gt;@rochacbruno&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/rochacbruno"&gt;@rochacbruno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
