<?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: Saron</title>
    <description>The latest articles on DEV Community by Saron (@saronyitbarek).</description>
    <link>https://dev.to/saronyitbarek</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%2F690%2F169fb8ff-f1e5-4b24-94ed-1aaa19a343dd.jpg</url>
      <title>DEV Community: Saron</title>
      <link>https://dev.to/saronyitbarek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saronyitbarek"/>
    <language>en</language>
    <item>
      <title>Deploying an ML model to Paperspace and creating an API</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Sat, 06 May 2023 18:08:57 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/deploying-an-ml-model-to-paperspace-and-creating-an-api-3516</link>
      <guid>https://dev.to/saronyitbarek/deploying-an-ml-model-to-paperspace-and-creating-an-api-3516</guid>
      <description>&lt;h3&gt;
  
  
  Background
&lt;/h3&gt;

&lt;p&gt;I thought deploying a model and making it accessible via an API would require a ton of complex steps and an intimidating level of ML and DevOps knowledge. But when I went through the process of turning my little toy image detector into an API, I was surprised at how few components were involved. &lt;/p&gt;

&lt;p&gt;So I thought I'd do a quick write-up and share, in case it helps you get started. At the very least, it'll give you a sense of the different pieces needed for accessing a model via API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Goal
&lt;/h3&gt;

&lt;p&gt;You have a model that's already trained and fine-tuned and now you want to use it to create an inference API (meaning it returns some sort of prediction).&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: Your model is trained, exported, (preferably tested locally) and ready to be used.&lt;/li&gt;
&lt;li&gt;Basic knowledge of &lt;strong&gt;Python&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Write Python script to interface with your model (this is the API part)&lt;/li&gt;
&lt;li&gt;Setup Paperspace machine&lt;/li&gt;
&lt;li&gt;Copy your Python script and your exported model to your Paperspace machine&lt;/li&gt;
&lt;li&gt;Run your Python script on your Paperspace machine (this exposes the API endpoint)&lt;/li&gt;
&lt;li&gt;Test your API&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;h5&gt;
  
  
  Python script:
&lt;/h5&gt;

&lt;p&gt;You’ll need to create a script describing how to use your model. It's a good idea to test this script locally and make sure it works before deploying. That makes troubleshooting easier.&lt;br&gt;
This script needs a few components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Setup&lt;/strong&gt;: After importing a bunch of methods and libraries we'll need (see &lt;a href="https://gist.github.com/sarony/a0f83f53eb8445ed23f04b3053d8c3eb"&gt;gist&lt;/a&gt; to view my scripts with all my imports), we need a few lines of code to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up &lt;a href="https://www.starlette.io/"&gt;Starlette&lt;/a&gt;, a tool we'll use to make async requests&lt;/li&gt;
&lt;li&gt;Load your model – I'm using &lt;code&gt;load_learner&lt;/code&gt; from the &lt;a href="https://www.fast.ai/"&gt;FastAI&lt;/a&gt; library to load my model as that's what's given to me. Your function might be different depending on how you built your model.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = Starlette()
app.add_middleware(CORSMiddleware, allow_origins=['*'], allow_headers=['X-Requested-With', 'Content-Type'])

# Our model is our 'export.pkl' file which will be located in the same directory
learn = load_learner('export.pkl')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;2. Create routes&lt;/strong&gt;: We need routes for our API. To simplify things, we’re going to define one route where we can receive a POST request with some information.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route('/analyze', methods=['POST'])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My example is an image detector, so the information it’ll be receiving is a link to an image. More on that next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Determine how to respond to your POST request:&lt;/strong&gt; Next, we need to tell it what to do with this request.&lt;/p&gt;

&lt;p&gt;We'll create an analyze method that will manipulate the data we give it and call predict on our model to get us a prediction.&lt;/p&gt;

&lt;p&gt;Note: What happens in this analyze method depends on what your model does and what predictions it returns. Since my example is an image detector, I want to send it a link to an image and get back a prediction of what category the image falls under.&lt;/p&gt;

&lt;p&gt;For my image detector use case, I need to do a few things to the image first, namely, turn it into an object that I can use with predict. I'm using predict because that's the method that FastAI gives me to get a prediction. Depending on your model, your methods might be different.&lt;/p&gt;

&lt;p&gt;Once I call &lt;code&gt;predict&lt;/code&gt;, I want to take that result and turn it into some JSON to send back as a response. My response gives me the image's category. That's what the last line in my &lt;code&gt;analyze&lt;/code&gt; function does.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async def analyze(request):
    img_data = await request.form()
    img = Image.open(requests.get(img_data['file'], stream=True, timeout = 10).raw) 
    pil_img = PILImage.create(img)
    prediction = learn.predict(pil_img)[0]
    return JSONResponse({'result': str(prediction)})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4.Serve file:&lt;/strong&gt; Finally, I need to call a method to actually serve this file and make it accessible online.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if __name__ == '__main__':
    if 'serve' in sys.argv:
        uvicorn.run(app=app, host='0.0.0.0', port=5500, log_level="info")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Set up Paperspace:
&lt;/h4&gt;

&lt;p&gt;Next, we’re going to get everything set up on a server using Paperspace that will host your API. &lt;br&gt;
That means that on Paperspace we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a machine&lt;/li&gt;
&lt;li&gt;Install any dependencies that your API needs on that machine&lt;/li&gt;
&lt;li&gt;Host your Python script on that machine&lt;/li&gt;
&lt;li&gt;Host your model on that machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start with setting up your machine.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click *&lt;em&gt;"Create a machine." *&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;It'll give you 3 options (as of May, 2023): ML-in-a-Box, Ubuntu, and Windows. Let's keep things simple and pick Ubuntu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick your "Machine Type."&lt;/strong&gt; You'll have the option of GPU, Multi-GPU and CPU. For our little toy model, you probably won't need to power of a GPU. If you tested and ran the model locally on your machine, you probably won't need specs more powerful than what you already have. So I went with C5 which comes with 4 CPUs and 8 GiB RAM.&lt;/li&gt;
&lt;li&gt;Click "&lt;strong&gt;Create&lt;/strong&gt;."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wait&lt;/strong&gt;. Paperspace should show that it's "provisioning" your machine and getting it ready for you. &lt;/li&gt;
&lt;li&gt;Once it's ready, click "&lt;strong&gt;Connect&lt;/strong&gt;" and it'll give you a command to ssh into your machine. &lt;/li&gt;
&lt;li&gt;Now &lt;strong&gt;setup your login&lt;/strong&gt; so you can access your machine from your local terminal. You can either use SSH or a password. Once you've set up how you want to login, you're in!&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Hosting your files on your Paperspace machine
&lt;/h4&gt;

&lt;p&gt;**1.Install dependencies: **Before you install dependencies, you'll need to run &lt;code&gt;sudo apt update&lt;/code&gt;. Then you'll need to run &lt;code&gt;sudo apt install python3-pip&lt;/code&gt; to install pip. Then you should be ready to install dependencies.&lt;/p&gt;

&lt;p&gt;Install whatever dependencies you need by running &lt;code&gt;pip install [DEPENDENCIES]&lt;/code&gt; in your terminal. I needed the following for mine: &lt;code&gt;pip install aiohttp asyncio uvicorn fastai starlette timm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Python script:&lt;/strong&gt; I found the simplest thing to do is just to open up vim on your Paperspace machine and copy and paste the contents of your script. You can also use the scp command, which I use below for my model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Model:&lt;/strong&gt; A different way to copy a file over is using the scp command. Here's what it looks like: &lt;code&gt;scp [PATH OF FILE YOU'RE COPYING] paperspace@[PAPERSPACE MACHINE IP ADDRESS]:/home/paperspace/&lt;/code&gt;. Then follow the prompts in your terminal.&lt;/p&gt;

&lt;h4&gt;
  
  
  Run your API
&lt;/h4&gt;

&lt;p&gt;Now you're ready to run your API. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your terminal, enter &lt;code&gt;python3 [FILENAME OF YOUR PYTHON SCRIPT] serve&lt;/code&gt; to run your script and expose your API endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Test your API
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;curl&lt;/code&gt; to test your API. Since I'm doing image detection, I'm going to send a link to an image as part of my POST request. Here's what I entered in my terminal: &lt;code&gt;curl -k -X POST -d "[IMAGE LINK]" https://[PAPERSPACE IP ADDRESS]:[PORT FROM PYTHON SCRIPT]/[API ROUTE FROM PYTHON SCRIPT]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything works well, you should get a JSON response back with your prediction as specified by your Python script. Good luck!&lt;/p&gt;

</description>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Fewer pipettes: Reflections on a web dev learning AI</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Thu, 04 May 2023 20:14:26 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/fewer-pipettes-reflections-on-a-web-dev-learning-ai-5gl8</link>
      <guid>https://dev.to/saronyitbarek/fewer-pipettes-reflections-on-a-web-dev-learning-ai-5gl8</guid>
      <description>&lt;p&gt;I’ve spent the past few weeks digging deep into AI. It’s not the ChatGPTs and bots that I’m interested in – it’s understanding how the technology works and what it takes for the rest of us to integrate machine learning into our products.&lt;/p&gt;

&lt;p&gt;We’ve been told for decades that AI was coming and it feels like, now, real progress is being made at unprecedented speeds. It’s a firehose of development, updates, information. It’s exciting, but also overwhelming. It feels like a new wave of tech has been bubbling and active for years and it finally burst open, breaking through to the masses.&lt;/p&gt;

&lt;p&gt;But it’s not the headlines about how AI will make my day-to-day life easier that excites me. For me, it’s the potential for dev tools to make it easier for coders to use AI that’s raised my eyebrows. But I don’t want to just use AI, I want to really understand it, break it down, respect the fundamentals. Right now, the headlines are too full of buzzwords that we pretend to understand.&lt;/p&gt;

&lt;p&gt;So I started on a journey of exploration. I figured with a solid background in web dev, the leap wouldn’t be too big. I was sure much of my skill set would carry over, would apply, and AI would be another branch on the tech tree, stemming from the same trunk, rooted in the same land. But this is not the same tree. It’s barely the same forest.&lt;/p&gt;

&lt;p&gt;It feels like just a happy coincidence that both web dev and machine learning require coding skills – that both necessitate speaking to computers to get anything done, but it feels like that’s where the similarities end.&lt;/p&gt;

&lt;p&gt;I always loved how user-facing web dev was. I make a screen, you see a screen. I make a button, you push a button. I make a form, you fill it out. AI is hidden, abstracted. My work is between me and the machine. I thought that would bother me, but there’s an intimacy in building this way that’s actually comforting. It feels almost safer to not have everything you do feel so exposed to the user. It’s just you and the code. At least at first, until you surface the results to your users. But I’m not there yet. I’ve got time.&lt;/p&gt;

&lt;p&gt;But it’s not just the exposure that feels so different, it’s the experience of building. Building web apps always felt like creating a journey. You type in a url, it takes you to a page. You take that page in, you press a button, and you’re transported to a whole new place. It’s your job as the dev to figure out all the stops and activities along the way, but you’re crafting an experience, an adventure. Machine learning feels nothing like that. It doesn’t feel like building. It feels like being in a lab.&lt;/p&gt;

&lt;p&gt;In a past life, I was a biochemistry research fellow. My team had a goal within an area we understood and we were using our knowledge to try to create something new. In our case, it was a new way to detect DNA. We had all these ideas of how we thought it could work, all these things we wanted to try to see if we could detect that DNA faster and with more certainty. We would experiment, fail, adjust, and try again. &lt;/p&gt;

&lt;p&gt;We spent months running experiments to take a step forward, other times, a big one back. We’d come up for air, look around at the developments that were happening to see if we could integrate new techniques to what we were doing. Sometimes we could. Most times, we had to work with what we knew and get more creative. It was tons of quiet iteration, having little to show along the way until a breakthrough had happened, a big step taken.&lt;/p&gt;

&lt;p&gt;Building my little toy models have felt a lot like that -- trying, failing, adjusting, trying again -- tons of little iterations to get my tiny hot dog detector to detect a hot dog with a bit more certainty. &lt;/p&gt;

&lt;p&gt;I didn’t expect to relive my days in the lab, to be taken back to a time where it took a lot to do a little, but how good that little would feel. It’s a completely different paradigm, trying to get a model to make a good prediction. It feels like nothing from my coding background.&lt;/p&gt;

&lt;p&gt;I wonder how my feelings on the two fields will develop, change over time, as I get deeper into the AI world. I wonder if, once I move into building something designed for someone else, some of that adventure creation will come into play, will apply. Until then, I’m happy to be back in my lab, with fewer pipettes and more screens, lost in a sea of quiet experiments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CodeLand 2022 is coming in June! Submit Your Talk Today🌈</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Tue, 01 Mar 2022 17:34:03 +0000</pubDate>
      <link>https://dev.to/codenewbieteam/codeland-2022-is-coming-in-june-submit-your-talk-today-4h4</link>
      <guid>https://dev.to/codenewbieteam/codeland-2022-is-coming-in-june-submit-your-talk-today-4h4</guid>
      <description>&lt;p&gt;&lt;em&gt;Cross-Posted From &lt;a href="https://community.codenewbie.org/codenewbie/codeland-2022-is-coming-in-june-submit-your-talk-today-2gnc"&gt;CodeNewbie Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CodeNewbie team is thrilled to share that the tech industry’s friendliest conference for early-career programmers and their mentors is coming back for 2022 as a virtual conference for the third year in a row!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We can't wait to see you all at CodeLand on June 16 &amp;amp; 17, 2022 🎉&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Read on for the information you'll need to join us at CodeLand as an attendee — including details on submitting a talk to &lt;strong&gt;our call-for-proposals (CFP) which is now OPEN.&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Jump to...
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CodeLand 2022 Overview&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Talk Submission/CFP Instructions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Important CFP Dates&lt;/li&gt;
&lt;li&gt;CodeLand CFP FAQ&lt;/li&gt;
&lt;li&gt;CodeLand 2022 Sponsorship Info&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  CodeLand 2022 Overview
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; CodeLand will be held virtually on CodeNewbie Community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dates:&lt;/strong&gt; Thursday, June 16 and Friday, June 17.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; Six hours per day – 4-10 PM UTC (check out  &lt;a href="https://www.worldtimebuddy.com/"&gt;World Time Buddy&lt;/a&gt; to convert to your local time zone). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format:&lt;/strong&gt; A mix of pre-recorded talks, keynotes, interactive activities, and live speaker panels on both days. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure:&lt;/strong&gt; Just like last year, the conference will be split between two days. You'll be able to view featured talks on your own time or watch alongside the global community on the livestream with emcee commentary. Keynotes and live-panels will be played on the community stream and distributed afterward for self-paced viewing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; Free access to all keynotes, talks, and panels. (&lt;em&gt;note registration will be required to be eligible to prizes and giveaways and experience CodeLand in its entirety&lt;/em&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registration:&lt;/strong&gt; Opens on April 26, 2022. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Changes to CodeLand in 2022&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More Breaks:&lt;/strong&gt; You spoke, we listened! CodeLand 2022 will feature more frequent and lengthier breaks, allowing you to stretch your legs, grab snacks, and reset without missing a moment of our livestream. As an emcee, I know firsthand how important breaks are 😉 &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Activities:&lt;/strong&gt; This year, we'll be featuring more opportunities to collaborate and engage in some healthy competition with your peers in real time. We'll be eliminating our hands-on workshops in favor of a more public and open activity format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined Chat Experience:&lt;/strong&gt; In 2022, we're planning to polish up the places and ways in which you can chat with speakers, organizers, and other attendees. The goal? A virtual conference that's full of human connection — in real time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This overview is just the beginning. Stay tuned for more updates on what the event will look like as June approaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talk Submission/CFP Instructions
&lt;/h2&gt;

&lt;p&gt;The CodeLand 2022 Call-For-Proposals (CFP) is now OPEN! This means that you can submit a talk proposal for CodeLand 2022 as of today. Our CFP closes on March 29, 2022 at 11:59 PM UTC. &lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  For instructions, full details, and to submit a CodeLand talk proposal through March 29, 2022 @ 11:59 PM UTC, visit &lt;a href="https://cfp.codelandconf.com/events/codeland-2022"&gt;&amp;gt;&amp;gt; cfp.codelandconf.com&lt;/a&gt;.

&lt;/h3&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  CodeLand CFP FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"What does CFP mean?"&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;CFP stands for "Call For Proposals". It's a fancy event/academic term used to indicate an open submission period for event talks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Who should submit a talk to the CodeLand 2022 CFP?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CodeLand's primary audience is early-career programmers and their mentors. If you feel you have something valuable to present to this group and you'd like to speak (virtually), we encourage you to submit a talk proposal! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How can I tell if my talk is the right fit?"&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;As described above, we're looking for software and career-related talks from people all over the world — and from all different communities! This year, we also have some particular themes that we feel would be especially valuable for the CodeNewbie Community to learn about at CodeLand. If you are curious about submitting a talk, you can learn all about our suggested themes on our &lt;a href="https://cfp.codelandconf.com/events/codeland-2022"&gt;CFP site&lt;/a&gt;. That said, we believe that the best events for CodeNewbies are diverse in all senses, including subject matter. If you have an idea for a tech-related talk that does not fit into one of our themes, we'd still love to see your proposal. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Who will be reviewing my talk?"&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;When it comes to CodeLand, creating a welcoming and inclusive environment is a non-negotiable. That's why we have carefully designed the CodeLand 2022 Program Committee (i.e. the folks reviewing talks) to be balanced in terms of gender, race, ethnicity, and level of coding experience. Our Program Committee includes members of the CodeNewbie Community, the &lt;a href="//forem.com"&gt;Forem&lt;/a&gt; team, and beyond. &lt;/p&gt;

&lt;p&gt;The first round of proposal reviews is anonymous, meaning that your name and biographical information will be hidden from reviewers. This is to eliminate bias as we select talks to appear on the CodeLand agenda.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What if I have a question about the CodeLand CFP?"&lt;/strong&gt;   &lt;/p&gt;

&lt;p&gt;If you have any questions about the CodeLand CFP, feel free to drop them below or email us privately at &lt;a href="//mailto:hello@forem.com"&gt;hello@forem.com&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important CFP Dates
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;March 1, 2022 –&lt;/strong&gt; CFP opens &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;March 29, 2022 –&lt;/strong&gt; CFP closes &amp;amp; reviewing begins&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;April  26, 2022 —&lt;/strong&gt; CodeLand 2022 talks and program, announced&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Where to Find CodeLand Updates
&lt;/h2&gt;

&lt;p&gt;Here's where to get all the latest information about CodeLand 2022...&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="//community.codenewbie.org"&gt;CodeNewbie Community&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;We will publish all important updates about CodeLand 2022 right here on CodeNewbie Community in dedicated posts. These individual update posts will be shared under a “CodeLand 2022 Updates” series, which you’ll be able to find via this post – so give this article a save! 🔖&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="//dev.to"&gt;DEV&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Because DEV and CodeNewbie are so closely related and have many members in common, we will be sharing CodeLand-related updates in a series of brief roundup posts on DEV as well. Depending on the week, these update posts might be full of info, or they might only have one or two reminders.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="//codelandconf.com"&gt;codelandconf.com&lt;/a&gt; &amp;amp; &lt;a href="//twitter.com/codelandconf"&gt;@codelandconf&lt;/a&gt; on Twitter
&lt;/h4&gt;

&lt;p&gt;If you attended CodeLand in previous years, you'll recognize our conference site and Twitter handle. We’ll be publishing basic information about CodeLand on both platforms in the months leading up to the event (like the schedule, speaker announcements and more). &lt;em&gt;Reminder that live CodeLand programming will be taking place right here on CodeNewbie Community, not on codelandconf.com.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  CodeLand 2022 Sponsorship Info
&lt;/h2&gt;

&lt;p&gt;If your company is interested in sponsoring CodeLand 2022, please fill out the form located &lt;a href="http://eepurl.com/hAJVkb"&gt;here&lt;/a&gt;. Once we receive your information, you will receive a copy of our sponsorship brochure via email.&lt;/p&gt;




&lt;h3&gt;
  
  
   Next steps…

&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Register for accounts on &lt;a href="//dev.to/enter"&gt;DEV&lt;/a&gt; and &lt;a href="//community.codenewbie.org/enter"&gt;CodeNewbie Community&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Follow &lt;a href="//twitter.com/codenewbies"&gt;@codenewbies&lt;/a&gt;, &lt;a href="//twitter.com/thepracticaldev"&gt;@thepracticaldev&lt;/a&gt;, and &lt;a href="//twitter.com/codelandconf"&gt;@codelandconf&lt;/a&gt; on Twitter&lt;/li&gt;
&lt;li&gt;If you have attended CodeLand in the past and would like to share a testimonial about your experience, simply comment below. We might reference your quote in future CodeLand promotion 😊&lt;/li&gt;
&lt;li&gt;Don't forget to submit your CodeLand talk by March 29, 2022 @ 11:59 PM UTC!&lt;/li&gt;
&lt;li&gt;Registration for CodeLand 2022 opens on April 26. Stay tuned!&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Cheers to &lt;a href="https://codelandconf.com"&gt;CodeLand 2022&lt;/a&gt;: a motivating community gathering for early-career software developers and their champions. 🌈 &lt;/p&gt;

</description>
      <category>codeland2022</category>
    </item>
    <item>
      <title>TLS Error configuring webhooks on Stripe</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Sat, 02 Jan 2021 22:34:40 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/tls-error-configuring-webhooks-on-stripe-5cg0</link>
      <guid>https://dev.to/saronyitbarek/tls-error-configuring-webhooks-on-stripe-5cg0</guid>
      <description>&lt;p&gt;I spent hours trying to figure out why my Stripe webhook was failing  and had to piece together little bits of internet comments to figure it out. So if you're coming across the same error, hopefully this will help.&lt;/p&gt;




&lt;p&gt;I was setting up &lt;a href="https://stripe.com/docs/webhooks" rel="noopener noreferrer"&gt;Stripe webhooks&lt;/a&gt; so that when someone bought a Disco product, it would ping my server and my app could save that information to the database as a new user and a new order and then send the user a welcome email. Everything worked well on local and I pushed it live. However, when it was live, I kept getting this very unhelpful error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsywvg6n0qo6rv105xj51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsywvg6n0qo6rv105xj51.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I knew it wasn't my code that was the problem, given that the error wasn't a 500 or other error that would indicate issues with my app. I didn't know what a TLS error was, but I know that TLS doesn't have to do with my code.&lt;/p&gt;

&lt;p&gt;Long story short, the issue ended up having to do with how my SSL certs were set up. I used &lt;a href="https://www.ssllabs.com/ssltest/analyze.html" rel="noopener noreferrer"&gt;this site&lt;/a&gt; to analyze my SSL configuration and it told me that there was a problem with my certificate chain.&lt;/p&gt;

&lt;p&gt;To fix it, I had to go to my hosting provider. I was using Heroku, so I looked up fixing SSL issues on Heroku and after doing some more searching, I found out that instead of letting Heroku manage my certs, I was doing it myself. So I updated my certs to have Heroku manage it.&lt;/p&gt;

&lt;p&gt;To do that, I ran the following command:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;heroku certs:auto:enable --app [APP NAME]&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Once I ran that command, I resent the Stripe hook and everything worked. Woohoo!&lt;/p&gt;

&lt;p&gt;So if you see that error and you're not sure what to do, check your SSL configuration and maybe don't manage it yourself.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What I learned from 6 years of building CodeNewbie</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Thu, 23 Jul 2020 12:00:22 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/what-i-learned-from-6-years-of-building-codenewbie-ba0</link>
      <guid>https://dev.to/saronyitbarek/what-i-learned-from-6-years-of-building-codenewbie-ba0</guid>
      <description>&lt;p&gt;In this talk, I share my learnings from the past 6 years of building &lt;a href="http://codenewbie.org/"&gt;CodeNewbie&lt;/a&gt;, the most supportive community of programmers and people learning to code. I cover: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to build a community&lt;/li&gt;
&lt;li&gt;What people &lt;em&gt;actually&lt;/em&gt; need to learn to code&lt;/li&gt;
&lt;li&gt;How we can help new and early-career developers&lt;/li&gt;
&lt;li&gt;How early-career developers help &lt;em&gt;us&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/1OvXuemGsWeB40" alt="1OvXuemGsWeB40 on slideshare.net" width="100%" height="487"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://drive.google.com/file/d/1xDKfzUvXIInCm-jLRWM_83VZ4wfjFPfY/view?usp=sharing"&gt;Here is a download link to the talk slides (PDF)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This talk will be presented as part of &lt;a href="https://codelandconf.com"&gt;CodeLand:Distributed&lt;/a&gt; on &lt;strong&gt;July 23&lt;/strong&gt;.  After the talk is streamed as part of the conference, it will be added to this post as a recorded video.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>codeland</category>
      <category>codenewbie</category>
      <category>community</category>
    </item>
    <item>
      <title>The CodeNewbie Journey Continues</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Wed, 22 Jan 2020 14:41:01 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/the-codenewbie-journey-continues-3h1n</link>
      <guid>https://dev.to/saronyitbarek/the-codenewbie-journey-continues-3h1n</guid>
      <description>&lt;p&gt;I’m incredibly excited to announce that CodeNewbie is officially joining the DEV family! We at CodeNewbie spend all of our time thinking about how we can better serve our community, and there’s no one better to go on that mission with than DEV.&lt;/p&gt;

&lt;p&gt;When CodeNewbie was started almost seven years ago, it was built as a simple weekly Twitter chat made to provide much needed support, love, and resources to people who are just getting started on their coding journey. Now, we’ve grown to include two podcasts, our annual conference, Codeland, added a Sunday Twitter chat, and done over 300 Twitter chats. Our podcasts have been downloaded over 4M times and we’ve helped countless people feel a little less alone as they work their way through their careers. But there’s still so much important work to be done to create a more inclusive and supportive tech community, and, now, we get to continue working on that mission with DEV.&lt;/p&gt;

&lt;p&gt;The DEV community is the embodiment of everything we believe a community should be: empowering, inclusive, and, most of all, kind. I’m so excited to continue working towards an even stronger tech community under the incredible DEV organization. &lt;/p&gt;

&lt;p&gt;I’ll continue to host the podcasts and serve as an editorial consultant for DEV. I could not have asked for a better home for CodeNewbie. We’re going to continue on our mission of building the most supportive community of programmers and people learning to code, and I can’t wait for you to see what we do next. Happy coding!&lt;/p&gt;

</description>
      <category>meta</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Make A Diff's "Workathon" Recap for 12/3 event</title>
      <dc:creator>Saron</dc:creator>
      <pubDate>Sat, 10 Dec 2016 15:04:31 +0000</pubDate>
      <link>https://dev.to/saronyitbarek/make-a-diffs-workathon-recap-for-123-event</link>
      <guid>https://dev.to/saronyitbarek/make-a-diffs-workathon-recap-for-123-event</guid>
      <description>&lt;p&gt;Here's a recap of our first Make A Diff workathon, an all day event where coders, designers, and techies worked on one of three featured, social good, projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Active Project Repo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt; &lt;a href="https://github.com/make-a-diff/civic-tech-projects"&gt;Civic Tech Projects&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stats&lt;/strong&gt; 27 commits, 2 branches (1 for hosting gh-pages), 6 issues worked on&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accomplished&lt;/strong&gt; By the end of the workathon, they had a complete project workflow setup (built for scale), an initial process for project submission/review, project cards with dummy text, and a hosted gh-page&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Involved&lt;/strong&gt; Backend workflow still needs to be formalized. Data should be pulled from various sources (API &amp;amp; static) using the standardized civic.json format. For more information, reference our more detailed issues on Github. &lt;/p&gt;

&lt;h3&gt;
  
  
  Code Corps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt; &lt;a href="https://github.com/code-corps"&gt;Code Corps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stats&lt;/strong&gt; We had 8 PRs opened from the work done during the day from 4 contributors. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accomplished&lt;/strong&gt; everyone keyed in on an area of the app which was underdocumented: authentication. Now we have an opportunity to improve the dev processes around that. So the team bubbled up a lot of onboarding roadbumps and also opened PRs for some outstanding issues from the two repos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Involved&lt;/strong&gt; Join the slack! It's the perfect entry point for anybody interested in getting involved: &lt;a href="http://codecorps.slack.com"&gt;http://codecorps.slack.com&lt;/a&gt;. Here's a sneak peek at our roadmap: Stripe managed accounts, UI redesigns, organization onboarding flows and of course code refactors. Our immediate goal is to bring the rest of the service online after the holidays so that we can start using the platform to manage the rest of its build out. If you want to have an impact on a project that's going to provide serious utility to a lot of people very quickly, now is a great time to get involved.&lt;/p&gt;

&lt;p&gt;If you've already jumped on the Code Corps project, We want to make it as easy as possible to get started, but we need to know from you what works. Right now we're trying different things and seeing what sticks. Please take two minutes and give us your feedback &lt;a href="https://codecorps.typeform.com/to/HPe83D"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fake News Detector
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt; &lt;a href="https://github.com/EricSchles/fact_checker_website"&gt;Fact Checker Website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accomplished&lt;/strong&gt; Built out the design of the website, developed and groomed a number of cards, set up an AWS instance, dockerized one of the repos, defined the content strategy, defined the tool's long term strategy, and started building the website's backend and frontend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Involved&lt;/strong&gt; There's a ton of stuff to do, so you can start by checking the issues and working on one you're excited about. Join our slack channel in the &lt;a href="http://make-a-diff.herokuapp.com/"&gt;make-a-diff slack&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>makeadiff</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
