Articles on LeoCumpli21's Bloghttps://blogs.python-gsoc.orgUpdates on different articles published on LeoCumpli21's BlogenTue, 24 Aug 2021 18:02:29 +0000Wrap Up GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/wrap-up-gsoc-2021/ <p> The complete wrap up of my GSoC experience is here: <a href="https://github.com/PyAr/PyZombis/wiki/Leonardo-Cumplido-GSoC-2021-Wrap-Up">Leo Cumplido GSoC 2021</a> <br> </p> <p> Hi, I'm Leo Cumplido, an 18 year old data science student at the time I'm writing this. My Google Summer of Code (GSoC) 2021 has nearly come to an end. Here's a wrap up of what I did this summer working with Python Argentina, under the umbrella of the Python Software Foundation (PSF), on a project called PyZombis. <br> <br> Quickly, PyZombis is an attempt to make an interactive notebook regarding python basics. The overall goal of this project is to make a quality, and free content, kind of MOOC for Spanish speakers. The platform where it is landed is Runestone. The topics covered go from python fundamentals, like basic data structures, flow control, and loops, to web scrapping, accessing APIs, web development, and more. <br> <br> </p> <h2>Milestones</h2> <p> I worked on three milestones: <br><br> <a href="https://github.com/LeoCumpli21/PyZombis/milestone/1">1 - Fix Lessons 1 to 14, "revisiones" lectures, and add quizzes</a> <br><br> Originlly, it consisted of fixing lectures 1 to 14, and quizes 1 to 14 as well. I completed this milestone before the first evaluation period, but then I kept adding issues as they arose. During this period I learned GitHub basics, Playwright for web testing, and pytest for testing python code, correct python formatting following PEP8 rules, and open source best working practices. <br><br> <a href="https://github.com/LeoCumpli21/PyZombis/milestone/2">2 - Refactor Facebook API Lesson</a> <br><br> During my second milestone I worked with APIs principally. Also, I made use of Brython as the python interpreter for some exercises. The thing that took me more time was adding pytest-vcr to mock the requests to APIs in the tests. Here's a gif of the web test for a challenge of the course. It was the most advanced test because to make it I had to mock the API calls, and to handle the dialog boxes that appear. The web test is automated with Playwright. <br> <img alt="Most challenging test" src="https://github.com/LeoCumpli21/PyZombis/raw/MyStats/LeoCumplido_Stats_End_GSoC/Test.gif"> <br><br> <a href="https://github.com/LeoCumpli21/PyZombis/milestone/3">3 - Add more complex exercises</a> <br><br> This third milestone was about implementing new more complex exercises, as if they were challenges, to the course. <br><br> </p> <h2>Project</h2> <p> Here you can consult all the issues I opened and solved. <br> <a href="https://github.com/LeoCumpli21/PyZombis/projects/1">GSoC 2021 PyZombis Project</a> <br><br> </p> <h2>Commits</h2> <p> Here are all the commits I made during GSoC <br> <a href="https://github.com/PyAr/PyZombis/commits?author=LeoCumpli21">Commits</a> </p> <h2>Left to do</h2> <p> The course may be ready for a beta, not massive launch. However, there's still work to do. For example: </p><li> Pygame lecture can be adapted using Brython. This idea is to be explored. Here's an example of a game made in Brython. </li> <br><br><br><br> <p></p> <p> Now that the coding period has ended, I can say I accomplished my goal. Regarding code, I was able to lean and apply new tools quickly, like Playwright and Brtyhon. Regarding the overall open source project, I learned how to work on GitHub, how to apply a good work flow and how to approriately communicate with my working team. </p> cumplileo@gmail.com (LeoCumpli21)Tue, 24 Aug 2021 18:02:29 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/wrap-up-gsoc-2021/Final Post GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/final-post-gsoc-2021/ <p> HI EVERYONE. Today I finish the coding period, and begin the final evaluation week. This means this might be my last post summarizing what I've worked on during a specific week. Furtunately, I feel like I accomplished my expectations and those of my mentors. Hence, I am proud of myself and my work. <br> <br> During the final week I continued with changing the quizzes structure. Thirteen quizzes were missing, and I correctly changed them this week. Moreover, I researched how to refactor the pygame lecture using brython. It is possible, and requires more searching for me to do, mainly because I may have to understand some javascript concepts. This is something that's left to do, for me or for others. <br> <br> Once again, this week's work wasn't hard, so I didn't get stuck anywhere. <br> <br> Finally, I want to express my gratitude to my mentors and my co-workers who accompanied me during this experience. </p> cumplileo@gmail.com (LeoCumpli21)Mon, 16 Aug 2021 18:10:30 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/final-post-gsoc-2021/Tenth-week blog post for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/tenth-week-blog-post-for-gsoc-2021/ <p> Once again, hi everyone! Welcome to my 10th post already. I'm very proud of myself for keeping the good work since GSoC started. This weeks work has been random. I didn't focuse only on one thing, but several. Now we're entering into the final sprint, and I can't be more excited 😃 <br> </p> <h2>What am I working on?</h2> <p> So, let me tell you what I did. <b>Firstly</b>, I proposed a new structure on how the quizzes should be presented. My mentors loved it and accepted it. I already changed the quiz 1, 2 and 3 to follow the new structure. <br> <b>Then</b>, I realized that most of the tests for the project were written in a way that isn't bad, but could be better. So I decided to modify them. Here's a little example of what I did: <br> </p><pre> I changed this: <code> page.press("text=def function():", "Tab") </code> into this: <code> page.keyboard.press("Tab") </code> </pre> It is a simple modification, but useful. <br> <b>Finally</b>, one of my mentors asked me to look at a lecture of the project that involves Exceptions in Python. He told me to enhance it, becauase at that moment it wasn't working at all. So I worked on it and did a new introduction, with examples and exercises, to that lecture. <br> <p></p> <h2>Did I get stuck anywhere?</h2> <p> This week I didn't. Everything was pretty straightforward to accomplish. <br> </p> <h2>What is coming up next?</h2> <p> Now, I'll finish changing the structure of the 12 quizzes missing. Also, I'll take a look at Brython to see what I can do to implement something similar to the pygame lecture, but using Brython instead. <br> </p> cumplileo@gmail.com (LeoCumpli21)Tue, 10 Aug 2021 18:25:05 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/tenth-week-blog-post-for-gsoc-2021/Ninth-week check-in for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/ninth-week-check-in-for-gsoc-2021/ <p> Hi! This is my ninth post of my GSoC 2021 series 😃 <br> </p> <h2>What did I do this week?</h2> <p> This week I did 3 things. </p><ol> <li>I fixed some details of my third milestone PRs. Also, I added the final exercise that was missing in the second challenge. This was pretty straightforward.</li> <li>I reviewed the PRs of the other students.</li> <li>I had to research about <code>pytest-vcr</code>, a plugin for managing VCR.py cassettes, and to implement it in 2 tests of the project. See its docs <a href="https://pytest-vcr.readthedocs.io/en/latest/">here</a>. </li> </ol> To implement <code>pytest-vcr</code>correctly, I needed to undestand what a decorator is, and what it does, because to use <code>pytest-vcr</code> tools I had to add decorators to the tests functions. In a nutshell, this was necessary for a couple of tests that make API calls because sometimes this APIs are not active. What <code>pytest-vcr</code> does is that the fisrt time a test is run, the request to a web page is made, and a <code>.yaml</code> file is generated with the information of that request. Next time the same test is run, there will not be a web request. Instead, the data will be returned from the <code>.yaml</code> file. This not only speeds up the tests, but makes them less error prone. <p></p> <h2>Did I get stuck anywhere?</h2> <p> This week, I can't say I got stuck somewhere, because I didn't. However, I took more time than expected in the <code>pytest-vcr</code> thing. </p> cumplileo@gmail.com (LeoCumpli21)Sun, 01 Aug 2021 16:47:11 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/ninth-week-check-in-for-gsoc-2021/Eight-week blog post for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/eight-week-blog-post-for-gsoc-2021/ <p> Hi! This week in particular has been somewhat calm. I did exactly what I stated in my last post: I reviewed my peers PRs, and made changes to my third milestone PRs, based on what I got as review. <br> </p> <h2>What am I working on?</h2> <p> Fontunately, I've already done the hard work. Now, I'll do what my mentors consider the best to focus on. There are still small fixes in some lectures I need to check. This week I'll fix them. Also, I'll talk the other students to see if they need help. In addition, I may consider implementing more web tests with <code>playwright</code> to the quizzes exercises. <br> </p> <h2>What have I struggled with this week?</h2> <p> As I said, this weeks workload wasn't hard, so I didn't struggled with anything. However, I'm going through a special situation (personal), and I talked to my mentors to let them know this. Therefore, next week I'll catch up. <br> </p> cumplileo@gmail.com (LeoCumpli21)Sun, 25 Jul 2021 20:12:48 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/eight-week-blog-post-for-gsoc-2021/Seventh-week check in for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/seventh-week-check-in-for-gsoc-2021/<p> Hi! This weeks check in may be short but interesting. Firstly, I was given great news: I passed the first evaluation 😃. Now, the second period begins, and I plan to keep my good workflow ongoing. <br> </p> <h2>What did I do this week?</h2> <p> I focused on my <b>third milestone</b>. I made two challenges for the course. The first one is a called <i>Hangman challenge</i>, and it is about creating a hangman game. The hard thing was coding its web test. I'll explain this later. The second challenge is called <i>Pergamino challenge</i>, and it is about deciphering a parchment with Python code. This was very straightforward, even its web test. <br> </p> <h2>Did I get stuck anywhere?</h2> <p> Yes. The playwright test for the hangman challenge was tricky. Interacting with the exercises of this challenge meant dealing with several dialog prompts. I already knew how to accept one dialog prompt: <br> <code>page.on("dialog", lambda dialog: dialog.accept("sth"))</code> <br> But I had trouble when more than one needed to be handled in the same test. By looking at playwrights documentation I found a solution. First, expect for the dialog event to appear on screen. Then, accept that single dialog once. This, translated to code, is: <br> </p><pre> <code> with page.expect_event("dialog") as prompt1: page.once("dialog", lambda dialog: dialog.accept("sth")) with page.expect_event("dialog") as prompt2: page.once("dialog", lambda dialog: dialog.accept("sth")) </code> </pre> <p></p> <h2>What is coming up next?</h2> <p> I made two PRs this week. Both are regarding the new challenges. They are still awaiting review. So this week I will tackle the review suggestions, and will review my peers PRs. <br> </p>cumplileo@gmail.com (LeoCumpli21)Tue, 20 Jul 2021 16:04:14 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/seventh-week-check-in-for-gsoc-2021/Sixth-week blog post for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/sixth-week-blog-post-for-gsoc-2021/<p> Welcome to my sixth blog post about my experience in Google Summer of Code (GSoC) 2021. <br> </p> <h2>What am I working on</h2> <p> Last week I finished working with my second milestone. This is what I did. There is a lecture in the project called Hackeando con Pyhton that is supposed to teach how to access an API and retrieve information using pyhton. Before last week, this lecture had only one exercise because others were eliminated due to the APIs they used (They have changed a lot and they are no longer public). Now, this lecture has six new exercises. <br> You might know these two python modules to do HTTP requests: <code>urllib</code> and <code>requests</code>. For the new exercises I used both, mainly because I encountered a problem with Runestone and I had to change the python interpreter to solve this. <br> This week I will be working on my third milestone. <br> </p> <h2>What have I struggled with this week?</h2> <p> I had trouble with the <code>dumps</code> method from the <code>json</code> module. For an exercise I needed to display on screen the json data retrieved from an API. In order to print it with indentation I passed the <code>indent</code> argument. Like this: <br> <code>print(json.dumps(datos, indent=4))</code> <br> However, it wasn't working. </p> <h2>What solutions have I found?</h2> <p> So, I was using <code>requests</code> module before this. I had to change the python interpreter to <code>brython</code> for some exercises, because in Brython <code>json.dumps</code> with the <code>indent</code> arg works just fine, but Brython doesn't support the <code>requests</code> module yet. This is why I changed to <code>urllib</code>. In the Brython's console, the output finally dislplayed nicely with indentation. </p>cumplileo@gmail.com (LeoCumpli21)Tue, 13 Jul 2021 17:45:42 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/sixth-week-blog-post-for-gsoc-2021/Fifth-week check-in for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/fifth-week-check-in-for-gsoc-2021/<p> It's been a month since the coding period started. The upcoming week in particular is important because it's the last week before the first evaluation period, meaning I have to deliver everything I've worked on for the past month. <br> </p> <h2>What did I do this week?</h2> <p> I finally finished my <a href="https://github.com/LeoCumpli21/PyZombis/milestone/1">first milestone</a>. In total, for this milestone I opened 21 issues, and closed 16 so far. The missing 5 have linked pull requests (PRs) that are awaiting review. <br> For 2 lectures I had to use <a href="https://brython.info/static_doc/en/import.html">Brython</a> for their exercises. </p><blockquote> Brython is designed to replace Javascript as the scripting language for the Web. As such, it is a Python 3 implementation (you can take it for a test drive through a web console), adapted to the HTML5 environment, that is to say with an interface to the DOM objects and events. </blockquote> I use <b>Brython</b> beacause the current python interpreter of Runestone is <a href="https://skulpt.org/">skulpt</a>, and it doesn't support some python libraries that Brython does. So this past week I had to recall how Brython works. I had to read its <a href="https://brython.info/static_doc/en/intro.html">documentation</a> again, where I found the <code>browser.timer</code> module, which I found helpful. <br> <p></p> <h2>Did I get stuck anywhere?</h2> <p> Not really. I did take time to do the Brython stuff, but I didn't feel stuck. <br> </p> <h2>What is coming up next?</h2> <p> This fifth week I will be aware of my existing PRs in case the mentors suggest changes. Meanwhile, I'll continue with my second milestone. </p>cumplileo@gmail.com (LeoCumpli21)Sun, 04 Jul 2021 20:27:41 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/fifth-week-check-in-for-gsoc-2021/Fourth-week blog post for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/fourth-week-blog-post-for-gsoc-2021/<p> Once again, I'm writing this as part of my Google Summer of Code (GSoC) for Python Software Foundation (PSF). The third week has ended, and along with it I finished my <a href="https://github.com/LeoCumpli21/PyZombis/milestone/1">first milestone</a>... Or at least that's what I thought. <a href="https://dev.to/leocumpli21/third-week-check-in-for-gsoc-2021-4jon">Last post</a> I told you I was ready to tackle my <a href="https://github.com/LeoCumpli21/PyZombis/milestone/2">second milestone</a>, however, I forgot some lectures need to be checked as well. So, I did start my second milestone, but I had to pause it. Let the questions begin. <br> </p> <h2>What am I working on</h2> <p> I worked on 2 different things. First, regarding my second milestone, I worked on two tickets. Before ellaborating on them, let me introduce you to what this milestone is about: <i> It consists of refactoring Facebook's API lesson. The expected outcome is to have created new exercises with other APIs, public ones so that no special requirements are asked for. </i> </p><ul> <li>The <a href="https://github.com/PyAr/PyZombis/pull/113">1st</a> ticket was a piece of cake. I just had to debug a block of code that involved using Reddit API.</li> <li>The <a href="https://github.com/LeoCumpli21/PyZombis/issues/11">2nd</a> one wasn't as easy. Here's why: I had to create 3 exercises from scratch involving <a href="https://tastedive.com/api/similar">TestDive API</a>. Here's one of them: </li> </ul> <pre> <code> import requests import json api_url = "https://tastedive.com/api/similar" proxy = "https://cors.bridged.cc/" parametros = {"q": "Coco", "limit": 5, "info": 1} solicitud = requests.get(proxy + api_url, params=parametros) datos = json.loads(solicitud.text) resultados = len(datos["Similar"]["Results"]) print(f"resultados: {resultados}") peliculas_similares = [] for peli in datos["Similar"]["Results"]: peliculas_similares.append(peli["Name"]) print(f"Pelis: {peliculas_similares} len: {len(peliculas_similares)}") pixar = 0 for peli in datos["Similar"]["Results"]: for pal in peli["wTeaser"].split(): if pal == "Pixar": pixar += 1 print(f"Pixar: {pixar}") </code> </pre> I also added <code>unittest</code> for automatic grading to it. Apart from that, I made a web test with <code>playwright</code> for this same exercise. I learned about <code>page.keyboard</code> from <a href="https://playwright.dev/python/docs/api/class-keyboard/">Playwright</a>. <blockquote> Keyboard provides an api for managing a virtual keyboard. The high level api is keyboard.type(text, **kwargs), which takes raw characters and generates proper keydown, keypress/input, and keyup events on your page. </blockquote> Before this, to press a key or type something I used: <pre> <code> page.press("text=def remplazar_primer_caracter(s):", "Tab") page.type( "text=def remplazar_primer_caracter(s):", "return s[0] + s[1:].replace(s[0], '*')", ) </code> </pre> Notice the first argument, which is the "<a href="https://playwright.dev/docs/core-concepts/#selectors">selector</a>", an element to tell playwright where to apply an event. Now, I just have to place the cursor where I want to start typing and, with the <code>keyboard</code> class, tell it what to do. For example: <pre> <code> page.click("#ac_l45_5 &gt;&gt; text=parametros = {}") # Clear all code page.keyboard.press("Control+A") page.keyboard.press("Backspace") # Type something page.keyboard.type("Hello world") </code> </pre> The second thing I worked on was fixing 2 lectures. <br> <p></p> <h2>What have I struggled with this week?</h2> <p> Once again, git gave me trouble. I don't know why, but <code>git push</code> and all its variants decided to not work anymore. Regarding python, my major problem was when I wanted to clear all code with playwright using the <code>ctrl+A</code> &amp; <code>backspace</code> keys. <br> </p> <h2>What solutions have I found?</h2> <p> For the git problem, I had to install GitHub Desktop to push my local commits to my remote repo. For playwright doubts, I checked its documentation and found the <code>keyboard</code> class. <br> This is all for now :) </p>cumplileo@gmail.com (LeoCumpli21)Mon, 28 Jun 2021 02:32:12 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/fourth-week-blog-post-for-gsoc-2021/Third-week check-in for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/third-week-check-in-for-gsoc-2021/<p> Hi! Today June 21 I begin my third week for GSoC 2021. I am loving this experience so far. Now, I'm going to answer 3 questions regarding my work last week, what I struggled with, and what I will focus on this week. <br> </p> <h2>What did I do this week?</h2> <p> In my last post, I mentioned I was working on fixing the existing quizzes of the project. I kept doing that, and I finished. I started fixing some lectures. By fixing I mean: </p><ul> <li>Formatting all python code with <code>black</code>.</li> <li>Changing static snippets to <code>activecode</code>.</li> <li>Creating some exercises with automating grading using <code>unit test</code></li> <li>Creating some web tests (where needed), with <code>playwright</code></li> </ul> I've already finished fixing 4 lectures. This week I made 8 PRs, some of which were proposing simple changes. <br> <p></p> <h2>Did I get stuck anywhere?</h2> <p> Yes I did. As I've mentioned over the past posts, we use <code>pytest-playwright</code> as our web tester. I've been coding easy tests for the quizzes, and I thought that was enough. Until I got to program a test for a lecture that involved writing into a prompt box. I got stuck in there beacause I didn't know <code>playwright</code> had a special way to deal with dialog prompts. So I had to search in their documentation for an answer, and I got one. <br> Here's the piece of code I was looking for: </p><pre> <code> def test_TWP18_ac_5(page): # Deal with prompt box def handle_dialog(dialog): dialog.accept("una palabra") # Code to go to TWP18 page, do the exercise and run it. # Fill prompt box page.on("dialog", handle_dialog) </code> </pre> <p></p> <h2>What is coming up next?</h2> <p> Last Saturday (June 19), the team got together in a videocall to discuss what we've done so far and what is coming up. So, now that I've finished with the quizzes and the easy lectures, some of which are awaiting review, I will begin my <b>second milestone</b>. It consists on refactoring a lecture that involves accesing some APIs. My idea is to fix one existing exercise that uses <i>Reddit API</i>, and to create two exercises using two different public and easy to manipulate API's. Meanwhile, I'll continue searching for ways to make the SQL lecture work. <br> </p>cumplileo@gmail.com (LeoCumpli21)Wed, 23 Jun 2021 04:23:36 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/third-week-check-in-for-gsoc-2021/Second-week blog post for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/second-week-blog-post-for-gsoc-2021/<p> <b>Hi everyone!</b> This is my second post for <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> (GSoC) 2021. The coding period has started and so far my experience has been most enjoyable. As I stated in my first post, this week I began working on my first milestone, and I can say I've done wonderfully. <br> <br> </p> <h2>What am I working on?</h2> <p> This week, a fellow collaborator (Ybrahin) and I worked on fixing the existing <code>python</code> quizzes of the project <a href="https://github.com/PyAr/PyZombis">Python para Zombis</a>. We divided the number of quizzes each one would fix; I get to fix 7. From those, I've completed 5. So far, I've done <b>5 PR's</b>, 4 of which have been <i>merged</i> into the master branch, and 1 awaiting review. Completing a quiz fix also involves making a web test with <code>pytest-playwright</code> for an exercise in that quiz. Moreover, this weekend I did some research about Runestone <a href="https://github.com/RunestoneInteractive/overview/blob/main/_sources/ActiveCode/sql.rst">supporting SQL</a> language. This is relevant to us because there is a lesson in the project that is currently in standby due to the <code>sqlite3</code> python module used in there. To be clear, Runestone doesn't support that module, and that's why this lesson isn't working. <br>Do you remember I talked about <code>flake8</code> in my first post? Well, Ybrahin introduced me to another tool to automate code formatting, named <a href="https://github.com/psf/black">Black</a>. <br> </p><blockquote> <i>Black</i> is the uncompromising Python code formatter. <br> <i>Black</i> makes code review faster by producing the smallest diffs possible. </blockquote> <br> <p></p> <h2>What have I struggled with this week?</h2> <p> I had no bigger problems than trouble understanding <b>git commands</b>. I am still getting used to working with GitHub, and sometimes I don't know the exact sintax, nor the correct time to execute them. Regarding <code>python</code>, I haven't struggled. <br> <br> </p> <h2>What solutions have I found?</h2> <p> If any doubts come to me while programming I tend to do one of two things: </p><ul> <li>Ask my workmates and mentors.</li> <li>Try to find an answer from Google.</li> </ul> <p></p>cumplileo@gmail.com (LeoCumpli21)Mon, 14 Jun 2021 16:50:08 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/second-week-blog-post-for-gsoc-2021/First-week check-in for GSoC 2021https://blogs.python-gsoc.org/en/leocumpli21s-blog/first-week-check-in-for-gsoc-2021/<p>On <b>May 17th</b> I received the great news: Python Argentina, the organization I applied to, under the umbrella of Python Software Foundation (<b>PSF</b>), accepted me to contribute to their project titled <i>PyZombis</i>. Since then, all accepted students entered the community bonding period. For three weeks, I've been in touch with my mentors and with two other students. <br> <cite>PyZombis is intended to be a MOOC to teach Python to Spanish speakers.</cite> <br> This article is my first check-in of the journey I'm beginning. I'll answer 3 simple questions. Hope you enjoy. <br> <br></p> <h2>What did I do this week?</h2> So far, I've done solid progress. I got to know my working team and discussed everything around the project. We decided the techniques of how we'll be working this GSoC, and most importantly, we have separated our initial proposals into milestones and issues in GitHub. Also, as I'm new to GitHub, I had to learn its basics. I learned about PEP8, the Style Guide for Python Code, and about a tool that checks whether my code follows those rules, named <code>flake8</code>. I learned about <code>Playwright</code> as well, a tool to automate tests for web apps. Now, I feel ready to start the coding period. <br> <br> <h2>What is coming up next?</h2> Today, June 7th, the coding period starts. I'll be working for 2 months on this open source software project. These first two weeks, I'll focus on completing my first milestone: fixing existing code, adding python quizzes with unit test and adding minimal Playwright tests. <br> <br> <h2>Did I get stuck anywhere?</h2> Indeed. My second milestone involves using Brython and the Twitter API. My mentor recomended trying to combine both by integrating <a href="https://github.com/bisguzar/twitter-scraper">twitter-scraper</a> library in <a href="https://brython.info/static_doc/en/import.html">Brython</a>. Unfortunately, everything I have tried so far hasn't worked.cumplileo@gmail.com (LeoCumpli21)Mon, 07 Jun 2021 18:10:29 +0000https://blogs.python-gsoc.org/en/leocumpli21s-blog/first-week-check-in-for-gsoc-2021/