Category Archives: Project Log

My collection of web development projects.

Mighty Morphin Data Structures, Part 1

Introduction

The goal for this season of AllWebSD is to deconstruct lessons learned from going head first into data structures. It’s my hope that I can translate a complex topic into an easy-going format and I’ll do so by channeling my inner 10-year-old self. You see back in my day, I was a big fan of the original Mighty Morphin Power Rangers series. So I’m going to take snapshots from that show and brush it with some code.

Information on data structures are abundant. To be honest, you don’t have to invent this. And frankly, neither did I. Hence, the code is pre-baked and available on Github.

The additional and intentional challenge here is that this is in audio only. If you can follow along, awesome. But remember, the source code is on the repo. I’ll upload a video as well, just in case.

That said, are you ready? Alright then. It’s Morphin Time!




The Situation

“Alpha, Rita’s escaped! Recruit a team of teenagers with attitude.”

The Data Structure

Okay, before I go into teleporting underage kids to the top of a mountain without their consent, I’m going to change the original storyline and instead ask Alpha to contact one person. Hopefully, that alongside word-of-mouth is enough to make a team.

I’m looking at the viewing globe and it looks like this guy Zack teaching Hip Hop Kido at Ernie’s Juice Bar is available. Okay, so I lied. I guess I’m going to have to teleport at least one person without their consent. Hopefully we can do some convincing and the remaining teens will follow.

Minutes pass and the convincing is done, Zack is going to rope in 4 of his other friends to see if they want in on this.

I’ve consulted with Alpha and knowing that we’re assembling this team, Zordon’s going to need a data structure which would allow him quick access to any Ranger should an emergency take place. Alpha offers me two choices, a linked list or an array.

Linked List

const linkedListOfRangers = {
	head: {
		value: 'Zack',
		next: {
			value: 'Kimberly',
			next: {
				value: 'Billy',
				next: {
					value: 'Trini',
					next: {
						value: 'Jason',
						next: null
					}
				}
			}
		}
	}
};

Array

const arrayOfRangers = ['Zack', 'Kimberly', 'Billy', 'Trini', 'Jason'];

Conclusion

Sirens are going off and the viewing globe just activated. Let’s pause on this for now and address the emergency on hand. For today, assembling the team was hard enough. Based on Zordon’s current need, we’ll conclude that an array data structure is the way to go.

Let me know your thoughts on this choice thus far and other paths that could’ve been considered.


Thanks again for listening in. Remember, I’m here to foster innovation through conversation. So if you’d like to continue this discussion or any topics previously discussed, join me at San Diego Tech Hub and go head first into the AllWebSD Group. It’s totally free. Just visit this link or click San Diego Tech Hub on the footer of AllWebSD.com. Thanks and Aloha!

Vue Components in 5 Steps or Less

What’s up everyone and welcome to Season 4, Episode 2. I guess this episode is more of a heads up in that, I’ve been revisiting VueJS. And with version 3 recently released, its’ once again become a premier option in JavaScript frameworks. I’ve noticed more so that Vue and React’s community continue to push each other’s frameworks into the next level, whereas Angular is definitely blazing its own unique path.

That said, I wanted to brush up quickly but I also didn’t want to spend any more money on subscriptions.

Hence, when I stumbled onto Vue School, I was very excited to see that they had an abundance of free courses designed for all levels. I encourage you to check them out at vueschool.io if you have a moment. I do not have an affiliation with them. This is simply a courtesy.

On my behalf I went ahead and did some of their tutorials – all of which were straightforward and under an hour to complete. It was well worth it!

Feel free to check out 2 articles I wrote with source code and demo attached regarding Vue components. The goal here was to get a grasp of reusable components and implement them in 5 steps or less.

Cheers and happy coding!


Thanks again for listening in. Remember, I’m here to foster innovation through conversation. So if you’d like to continue this discussion or any topics previously discussed, join me at San Diego Tech Hub and go head first into the AllWebSD Group. It’s totally free. Just visit this link or click San Diego Tech Hub on the footer of AllWebSD.com. Thanks and Aloha!

Vue Components: Bootstrap Card, Github API

I’m dabbling with Vue version 3. Here’s Part 2 of 2 in generating a reusable component. This time with an API call attached.


Introduction

Let’s build this. A simple Vue app which accesses Github’s REST API and prints a user’s profile into a Bootstrap 4 card interface.

What’s the Goal?

Create a reusable component that displays a person’s Github profile.

What will we need?

  • Stackblitz – to quickly prototype a Vue project and its dependencies.
  • Bootstrap 4 – to grab some ready-made user interfaces (e.g. cards).
  • Axios – the promise based library we’ll use to communicate with Github’s API.
  • Github API – the data source we’ll need to access and display a user’s profile.

Step By Step

Step 1: Create Vue App

Visit Stackblitz.com and click the Vue icon to automatically generate a default HelloWorld project.

Step 2: Install Dependencies

Enter additional dependencies such as axios and bootstrap (jquery and popper is optional but I added it anyway).

Step 3: Add Dependencies to main.js

const { createApp } = require("vue");
import App from "./App.vue";
import "bootstrap"; // Add this import.
import "bootstrap/dist/css/bootstrap.css"; // Add this import.

createApp(App).mount("#app");

Step 4: Create a Service for API Call

Create a new directory called services and add new file GithubAPI.js.

The Service Code

Debrief of the GithubAPI service code:

  • Line 1: Import axios library for promise based HTTP requests.
  • Line 5: Write a function called getGithubProfile() and pass in username as an argument.
  • Line 7: Leverage the get method and concatenate the username variable.
  • Line 9: Return the response object (component will consume this).

Step 5: Modify HelloWorld.vue Component

Out of box, Stackblitz generates a default Vue project paired with a component called HelloWorld.vue. Rename it.

We’ll repurpose most of this by first renaming it to GithubProfile.vue.

The Component Code

Debrief of the GithubProfile component code:

  • Lines 3-16: The Bootstrap card.
  • Line 20: Import the service made from Step 4.
  • Lines 23-28: The prop you’ll pass in (e.g. a profile name).
  • Lines 29-33: Setup Vue’s data object which will populate the card.
  • Lines 34-42: Setup the API call inside of the created lifecycle hook.

Debrief of the App component code:

  • Line 13: the prop passed in as a string (e.g. my profile name).

Key Takeaways

We’ve now created a reusable component which is dynamic enough to apply a Bootstrap card by passing in the Github profile as a prop. This will use Github’s API to make a call on their end which will print the profile data to the card.

Additional Resources