Week 11 is ending busier than any since the start of this series. This week saw extensive readings (see the non-technical recap), progress in the AJAX course with the bootcamp, updates to a list of projects, and the start of the Chainlink Spring Hackathon.
By the way, I passed the Python Stack Exam! This was the penultimate step in my bootcamp journey, now I just have to build a couple of projects to graduate from the Coding Dojo.
<usual_enterance> If you're new here I'm creating this blog series as I go from coding newbie to working in web3. I'm creating this to reflect on the technical and non-technical growth and to leave it behind for others who might be interested in how they can follow a similar path. </usual_enterance>
In this week's technical recap:
- AJAX course learnings
- Project developments
- Chainlink Spring Hackathon status
- What's Next?
AJAX
As always, feel free to correct my understanding.
Fetching Data
Using the fetch method that is built into JavaScript, a GET request can be sent to an API server.
JSON
JavaScript Object Notation is a data storing and transport format with key:value pairs. Most APIs will return with JSON.
API Keys
These are keys to accessing some APIs; typically restricted APIs have limits on how many times per x period you can use them, or how and when you can call data.
Flask w/ AJAX
We can fetch data by communicating with our own servers via building a route+function in a controller file and another function in a static JS file.
POST FETCH
By disabling JS's default behavior in a form, we can send form data with fetch() to the Flask server to request data.
Hiding API Keys
Hiding the API key will help protect our access to the API and from being charged. This can be done by using dot-env and having the Flask server make the call.
Consuming APIs w/ Flask
Using a requests module in a controller file, API documentation should be consulted to understand exactly how to set this up. After the controller set-up, we just have to build the front-end part that invokes the method
Projects
I might have too many open projects...
Personal Portfolio Website
Tagline: The personal portfolio website hosts all relevant information about my project and professional history as well as some additional information for people looking to learn more about me.
This week I created the CSS for the technical skills section which holds the icons for the various languages, frameworks, etc. that I have been learning. Down the roadmap, I intend on creating additional sites from each of these icons where, once clicked, they will direct you to a new page where all of the projects tagged with that language or framework will populate.
Touched up the content for various sections and I sort of just brute-forced through the contact page with JS validation, another thing on the list to change once v1 is out. I'm pushing through a lot of this not so pretty code so I can just get this live and then start on refactoring. At this point, I think I'm ready for a quick read-through for cleanup and then I'll meet with someone from the program for a code review for feedback and to answer some questions.
The repo.
Doors vs Wheels
Tagline: A TA from the Coding Dojo and I are building a website that is requesting data from users about how many doors and wheels they have in thier homes as part of a TikTok trend.
This week, I went back to look at the code now that I've had some more practice creating Python applications. I updated the models and controllers for the project with validations, imports, and cleaner code.
The repo.
Bootcamp Ajax
Tagline: This project is the collection of assignments for the AJAX course.
Worked through the readings for this course and completed one of the assignments. These are all optional so they are not high on my list of priorities considering all of the competing interests.
The repo.
Algo Practice
Tagline: A collection of code snippets created by me while practicing prompts provided by websites like codewars.com.
Daily practice, at least attempted daily, made. I've been working on doing just one problem each day at code wars for JavaScript, Python, and now Solidity.
The repo.
Profile README
Not really a "project" per se, but I wanted to still note here that my GitHub has a fancy new update, thanks to Rahul Jain's GitHub Profile README Generator.
The repo.
Chainlinks Spring Hackathon
The project is getting its own section rather than being roped in with the other projects because I have a lot more to say about it.
The hackathon started on the 22nd and I went in with a full team of 5 members and a few different ideas for projects. Over the weekend we met to review the options and were able to come to a final decision on which idea we are going to pursue during the event. We ultimately decided to keep the project private during the initial development which does impact how I can talk about it here. The project will encompass a dApp and showcase some of the capabilities of dNFTs which I am particularly excited to explore. In the few days we've had since the event started we've also managed to get a draft wireframe built, drafted the README and a document to help guide the version 1 build.
The webinars provided by Chainlink during this hackathon included introductions to Solidity, Remis, Hardhat, Brownie, Foundry, Truffle, and Anchor/Solona development. I found these to be very helpful in understanding how to proceed in building the project and they built on the knowledge from all of the readings I talk about in the non-technical recaps.
What's Next?
In the next week, I'll have to finish the AJAX and hopefully the Flask Deployment courses. I'm attempting to finish v1 of my portfolio website and organize the next step for Doors vs Wheels. I'll also need to settle on an idea for the project portion of the bootcamp. This is the final track for me to graduate and requires that I complete two separate projects; one by myself and another with a group, I'll have two weeks to complete each. And lastly, the hackathon team will need to participate in the webinars and start to build out the ideas for the project, e.g. what smart contracts will need to be built.
If you'd like to join the learning community I'm building on Discord for web3, you can find the link for that here. It's a space that I am trying to build for myself and others to share their growing knowledge of all things web3.
You can also find me here:
LinkedIn | GitHub | Twitter | My Website