<?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>Forem: Chukwuebuka (Gaus Octavio )</title>
    <description>The latest articles on Forem by Chukwuebuka (Gaus Octavio ) (@chukwuebuka2003).</description>
    <link>https://forem.com/chukwuebuka2003</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%2F1062125%2F51a32828-a6c4-428a-b3e1-4a115c9e3131.jpeg</url>
      <title>Forem: Chukwuebuka (Gaus Octavio )</title>
      <link>https://forem.com/chukwuebuka2003</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chukwuebuka2003"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Chukwuebuka (Gaus Octavio )</dc:creator>
      <pubDate>Fri, 12 Sep 2025 20:05:43 +0000</pubDate>
      <link>https://forem.com/chukwuebuka2003/-4e9a</link>
      <guid>https://forem.com/chukwuebuka2003/-4e9a</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jankapunkt/wasted-open-source-efforts-8ia" class="crayons-story__hidden-navigation-link"&gt;Wasted Open Source efforts 😮&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jankapunkt" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F157294%2F1c3c63fd-d0d4-4db4-97ca-2a3d825ece7c.jpeg" alt="jankapunkt profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jankapunkt" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jan Küster 🔥
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jan Küster 🔥
                
              
              &lt;div id="story-author-preview-content-2835969" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jankapunkt" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F157294%2F1c3c63fd-d0d4-4db4-97ca-2a3d825ece7c.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jan Küster 🔥&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jankapunkt/wasted-open-source-efforts-8ia" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 10 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jankapunkt/wasted-open-source-efforts-8ia" id="article-link-2835969"&gt;
          Wasted Open Source efforts 😮
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jankapunkt/wasted-open-source-efforts-8ia" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;55&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jankapunkt/wasted-open-source-efforts-8ia#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              16&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>opensource</category>
      <category>productivity</category>
      <category>python</category>
      <category>github</category>
    </item>
    <item>
      <title>How To Build A Spotify Playlist Analyzer</title>
      <dc:creator>Chukwuebuka (Gaus Octavio )</dc:creator>
      <pubDate>Mon, 10 Apr 2023 02:51:55 +0000</pubDate>
      <link>https://forem.com/chukwuebuka2003/how-to-build-a-spotify-playlist-analyzer-58dk</link>
      <guid>https://forem.com/chukwuebuka2003/how-to-build-a-spotify-playlist-analyzer-58dk</guid>
      <description>&lt;p&gt;The Spotify Playlist Analyzer is a Streamlit app that allows users to analyze a Spotify playlist using data visualization tools. The app uses the Spotipy library to access data from the Spotify API and the Plotly library to create interactive charts.&lt;/p&gt;

&lt;p&gt;To use the app, the user inputs the name of the Spotify playlist they wish to analyze in a text input box on the sidebar. The app then searches for the playlist ID based on the input name and retrieves the playlist data from the Spotify API. &lt;br&gt;
The playlist data is displayed in a table that shows the track name, artist name, album name, release date, popularity, and duration in milliseconds for each track in the playlist.&lt;/p&gt;

&lt;p&gt;The app also provides three types of analysis for the playlist data:&lt;/p&gt;

&lt;p&gt;Track Popularity Distribution - a histogram that shows the distribution of track popularity in the playlist.&lt;/p&gt;

&lt;p&gt;Bivariate Analysis - a scatter plot that allows the user to select two variables (popularity and duration in milliseconds) to plot against each other.&lt;/p&gt;

&lt;p&gt;Multivariate Analysis - a scatter plot that allows the user to select one variable to color the data points by (artist name, album name, or release date) and one variable to size the data points by (popularity or duration in milliseconds).&lt;/p&gt;

&lt;p&gt;In addition to the data visualizations, the app also provides a playlist summary that shows the most popular and least popular tracks in the playlist and a bar chart that displays the top 10 most popular artists in the playlist.&lt;/p&gt;



&lt;p&gt;Prerequisites&lt;br&gt;
To follow along with this tutorial, you will need:&lt;br&gt;
A Spotify account&lt;br&gt;
A Spotify Developer account&lt;br&gt;
Python 3.x installed on your machine&lt;br&gt;
Familiarity with Python programming&lt;br&gt;
Familiarity with the Pandas, Streamlit, and Plotly libraries&lt;/p&gt;

&lt;p&gt;Step 1: Setting up a Spotify Developer Account&lt;br&gt;
To use the Spotify API, you need to have a Spotify Developer account. If you don't already have one, go to &lt;a href="https://developer.spotify.com/dashboard/"&gt;https://developer.spotify.com/dashboard/&lt;/a&gt; and create an account. Once you've created an account, create a new Spotify application to get your client_id and client_secret.&lt;/p&gt;

&lt;p&gt;Step 2: Installing the Required Libraries&lt;br&gt;
We will be using the following libraries for this project:&lt;br&gt;
Streamlit&lt;br&gt;
Spotipy&lt;br&gt;
Pandas&lt;br&gt;
Plotly&lt;/p&gt;

&lt;p&gt;You can install these libraries by running the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
pip install streamlit spotipy pandas plotly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Authenticating with the Spotify API&lt;br&gt;
To authenticate with the Spotify API, we will be using the spotipy library. We'll need to create an instance of the Spotify class, passing in our client_id and client_secret . We'll also need to create an instance of the SpotifyClientCredentials class, passing in our client_id and client_secret.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'

client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4: Creating a Streamlit App&lt;br&gt;
We'll use Streamlit to create a simple UI that allows users to input a Spotify playlist name and displays various analyses of the playlist. To create a Streamlit app, we first need to import the streamlit library and call the title() function to set the title of the app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import streamlit as st

st.title("Spotify Playlist Analyzer")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5: Adding User Input with Streamlit&lt;br&gt;
We'll use Streamlit's sidebar to add a text input field for the user to enter the name of the Spotify playlist they want to analyze.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;playlist_name = st.sidebar.text_input("Enter the name of the Spotify playlist:")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 6: Retrieving Data from the Spotify API&lt;br&gt;
If the user enters a playlist name, we'll search for the playlist ID using the search() function of the Spotify class. We'll then retrieve data for each track in the playlist, such as the track name, artist name, popularity, duration, album name, and release date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if playlist_name:
    playlists = sp.search(playlist_name, type="playlist")["playlists"]["items"]
    if playlists:
        playlist_id = playlists[0]["id"]
    else:
        st.write("No playlists found with that name.")
        playlist_id = None
else:
    playlist_id = None
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 7: Retrieve Data from the Spotify API&lt;br&gt;
If we have a valid playlist ID, we can use the Spotipy library to retrieve data from the Spotify API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if playlist_id:
    playlist = sp.playlist(playlist_id)
    tracks = playlist["tracks"]["items"]
    track_names = [track["track"]["name"] for track in tracks]
    track_artists = [", ".join([artist["name"] for artist in track["track"]["artists"]]) for track in tracks]
    track_popularity = [track["track"]["popularity"] for track in tracks]
    track_duration = [track["track"]["duration_ms"] for track in tracks]
    track_album = [track["track"]["album"]["name"] for track in tracks]
    track_release_date = [track["track"]["album"]["release_date"] for track in tracks]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 8: Display Playlist Data in a Table&lt;br&gt;
We can use Streamlit to display the playlist data in a table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# display the playlist data in a table
    st.write(f"## {playlist['name']}")
    st.write(f"**Description:** {playlist['description']}")
    st.write(f"**Number of tracks:** {len(tracks)}")
    st.write("")
    st.write("### Tracklist")
    st.write("| Name | Artist | Album | Release Date | Popularity | Duration (ms) |")
    st.write("| ---- | ------ | ----- | ------------ | ---------- | -------------- |")
    for i in range(len(tracks)):
        st.write(f"| {track_names[i]} | {track_artists[i]} | {track_album[i]} | {t
rack_release_date[i]} | {track_popularity[i]} | {track_duration[i]} |")

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 9: Create a DataFrame From The Playlist Data&lt;br&gt;
Pandas can be used to the playlist data to a DataFrame that would be used for further analysis&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# create a dataframe from the playlist data
    data = {"Name": track_names, "Artist": track_artists, "Album": track_album, "Release Date": track_release_date, "Popularity": track_popularity, "Duration (ms)": track_duration}
    df = pd.DataFrame(data)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 10: Display A Histogram Of Tracks Popularity&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# display a histogram of track popularity
    fig_popularity = px.histogram(df, x="Popularity", nbins=20, title="Track Popularity Distribution")
    st.plotly_chart(fig_popularity)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;11: Bivariate Analysis&lt;br&gt;
Next, the user is prompted to select two variables for a bivariate analysis. The code then creates a scatter plot of the selected variables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# add a dropdown menu for bivariate analysis
    st.write("#### Bivariate Analysis")
    x_axis = st.selectbox("Select a variable for the x-axis:", ["Popularity", "Duration (ms)"])
    y_axis = st.selectbox("Select a variable for the y-axis:", ["Popularity", "Duration (ms)"])
    fig_bivariate = px.scatter(df, x=x_axis, y=y_axis, title=f"{x_axis} vs. {y_axis}")
    st.plotly_chart(fig_bivariate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;12: Multivariate Analysis&lt;br&gt;
The user is prompted to select two variables for a multivariate analysis. The code then creates a scatter plot of the selected variables, colored by one variable and sized by another variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# add a dropdown menu for multivariate analysis
    st.write("#### Multivariate Analysis")
    color_by = st.selectbox("Select a variable to color by:", ["Artist", "Album", "Release Date"])
    size_by = st.selectbox("Select a variable to size by:", ["Popularity", "Duration (ms)"])
    fig_multivariate = px.scatter(df, x="Duration (ms)", y="Popularity", color=color_by, size=size_by, hover_name="Name", title="Duration vs. Popularity Colored by Artist")
    st.plotly_chart(fig_multivariate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;13: A Summary Of The Playlist Data&lt;br&gt;
The code below displays a summary of the playlist data to the user. This summary includes the most popular and least popular tracks in the playlist, as well as a bar chart of the top 10 most popular artists and tracks in the playlist&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# add a summary of the playlist data
    st.write("")
    st.write("### Playlist Summary")
    st.write(f"**Most popular track:** {df.iloc[df['Popularity'].idxmax()]['Name']} by {df.iloc[df['Popularity'].idxmax()]['Artist']} ({df['Popularity'].max()} popularity)")
    st.write(f"**Least popular track:** {df.iloc[df['Popularity'].idxmin()]['Name']} by {df.iloc[df['Popularity'].idxmin()]['Artist']} ({df['Popularity'].min()} popularity)")
# display a bar chart of the top 10 most popular artists in the playlist
    st.write("#### Top 10 Artists")
    st.write("The bar chart below shows the top 10 most popular artists in the playlist.")
    top_artists = df.groupby("Artist").mean().sort_values("Popularity", ascending=False).head(10)
    fig_top_artists = px.bar(top_artists, x=top_artists.index, y="Popularity", title="Top 10 Artists")
    st.plotly_chart(fig_top_artists)    
# display a bar chart of the top 10 most popular songs in the playlist
    st.write("#### Top 10 Songs")
    st.write("The bar chart below shows the top 10 most popular songs in the playlist.")
    top_artistss = df.groupby("Name").mean().sort_values("Popularity", ascending=False).head(10)
    fig_top_artistss = px.bar(top_artistss, x=top_artistss.index, y="Popularity", title="Top 10 Songs")
    st.plotly_chart(fig_top_artistss)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;14: Running The App&lt;br&gt;
The final step is to run the Streamlit app. This allows the user to interact with the app and analyze their chosen Spotify playlist.&lt;/p&gt;




&lt;p&gt;Overall, the Spotify Playlist Analyzer is a useful tool for anyone who wants to explore the data behind their favorite Spotify playlists and gain insights into their music preferences.&lt;br&gt;
It retrieves data from the Spotify API, displays it in a table, and allows users to analyze it using data visualization techniques.&lt;br&gt;
The code is easy to use and provides valuable insights into the data of a Spotify playlist.&lt;/p&gt;







</description>
      <category>python</category>
      <category>datascience</category>
      <category>streamli</category>
      <category>documentation</category>
    </item>
  </channel>
</rss>
