<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Ibnulab</title><link>https://ibnulab.pages.dev/post/</link><description>Recent content in Posts on Ibnulab</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 04 Jul 2025 08:00:00 +0700</lastBuildDate><atom:link href="https://ibnulab.pages.dev/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Welcome to my world!</title><link>https://ibnulab.pages.dev/p/welcome-to-my-world/</link><pubDate>Thu, 05 Dec 2024 00:00:00 +0000</pubDate><guid>https://ibnulab.pages.dev/p/welcome-to-my-world/</guid><description>&lt;h2 id="welcome">Welcome
&lt;/h2>&lt;p>Phew, first off, I&amp;rsquo;d like to say that making a website isn&amp;rsquo;t as easy as I thought. But it was worth the effort!&lt;/p>
&lt;p>Welcome to my page! This website will mostly be used to write my own blog, my projects that I&amp;rsquo;ve done, or just to store my ideas and stories. Even though I&amp;rsquo;m not particularly someone who notes a lot, I hope this will give me the motivation.&lt;/p>
&lt;h3 id="notes-about-my-experience-making-website-with-hugo">Notes about my experience making website with Hugo
&lt;/h3>&lt;p>Wow the journey was kinda long and far. I&amp;rsquo;m finally able to deploy this static website on cloudflare pages. I&amp;rsquo;m really new to all these, and even with proper guide and template, I was lost quite a lot.&lt;/p>
&lt;p>With that said, I&amp;rsquo;m proud to have reached this far.&lt;/p>
&lt;h3 id="nasi-uduk">Nasi Uduk
&lt;/h3>&lt;p>Yes, it&amp;rsquo;s best food for breakfast, ever, period.&lt;/p></description></item><item><title>Comment System in Static Website Like Hugo</title><link>https://ibnulab.pages.dev/p/comment-system-in-static-website-like-hugo/</link><pubDate>Fri, 04 Jul 2025 08:00:00 +0700</pubDate><guid>https://ibnulab.pages.dev/p/comment-system-in-static-website-like-hugo/</guid><description>&lt;img src="https://ibnulab.pages.dev/p/comment-system-in-static-website-like-hugo/cover.png" alt="Featured image of post Comment System in Static Website Like Hugo" />&lt;h1 id="why-do-i-do-it">Why do I do it?
&lt;/h1>&lt;p>The reason why I was trying to make this was to enable interaction, engagement with the audience (well, one can dream to have some interaction right??). But trying to implement a comment system in here wasn&amp;rsquo;t easy, maybe not solely because it&amp;rsquo;s a complicated thing, but mostly of how inexperienced I am at this. You see, there are a lot of alternative ready to be implemented, like discus, giscus, gitalk, and remark 42 (and many more), but I&amp;rsquo;m not particularly fond of not having control over my own data/content. That&amp;rsquo;s also exactly why I build my website using Hugo and host it myself through cloudflare pages. &amp;ldquo;What if the website builder like wix or squarespace goes out of business?&amp;rdquo;, &amp;ldquo;What would happen to my website?&amp;rdquo;, those questions were in my head.&lt;/p>
&lt;p>So I set out my research on this, since I started making this in December 2024. But since it&amp;rsquo;s a hassle to host my own database for my comment section, I abandoned the project, UNTIL I heard about cloudflare D1 database recently. In short, I can have a simple table to store the comments in D1, and use cloudflare Workers to fetch and submit comments. Obviously I don&amp;rsquo;t work &amp;ldquo;alone&amp;rdquo;, with the help of ChatGPT, I managed to make this project finally a reality.&lt;/p>
&lt;p>You can try it out in the comment section of this post, please try it!&lt;/p>
&lt;p>Disclaimer though: I am not in any way proficient in any of this. I&amp;rsquo;m just a data analyst, I might know a bit about SQL and ETL process, but HTML and CSS is way out of my expertise. So while I have an idea, I mostly ask ChatGPT on how to do it and struggle through it. It might not be following best practices or anything like that, but I&amp;rsquo;m happy and proud of it, so I&amp;rsquo;ll be sharing about it.&lt;/p>
&lt;h1 id="what-made-this-possible">What Made This Possible?
&lt;/h1>&lt;p>As mestioned, I used cloudlflare D1 and Workers to build this comment system. Let&amp;rsquo;s talk about each one.&lt;/p>
&lt;h2 id="what-is-cloudflare-d1-and-workers">What is Cloudflare D1 and Workers?
&lt;/h2>&lt;p>At least to my knowledge, most SQL database needs to be hosted somewhere and/or managed by someone to be accessed. But just hosting it alone is a hassle and to make it not a hassle you need to pay some subscription like supabase or very limited by the free plan. I mean, it can work, but still, as I said, I don&amp;rsquo;t like not having control over my data. So this is where cloudflare D1 comes in.&lt;/p>
&lt;p>Cloudflare D1 is a lightweight SQL database that runs close to the users — perfect for small projects or dynamic data on static sites. Think of it like SQLite, but hosted and managed by Cloudflare. And the free plan IMO is really generous. Check out their pricing here: &lt;a class="link" href="https://developers.cloudflare.com/d1/platform/pricing/" target="_blank" rel="noopener"
>Cloudflare D1 Pricing&lt;/a>.&lt;/p>
&lt;p>But &lt;em>someone&lt;/em> still have to push and fetch the comment from my website to the database, that&amp;rsquo;s where Cloudflare Workers comes in. Most of the time, if you want to run some backend code — like handling form submissions or reading from a database — you’d need a server. That usually means spinning up something like Node.js, hosting it somewhere like Vercel, Railway, or DigitalOcean, and managing deployments or scaling.&lt;/p>
&lt;p>But for small projects (like mine), that’s &lt;em>&lt;strong>a lot of work&lt;/strong>&lt;/em> just to handle a few HTTP requests.&lt;/p>
&lt;p>Cloudflare Workers let you write JavaScript (or TypeScript) that runs on the edge — super fast and globally distributed. Together with D1, you can make a powerful dynamic backend &lt;em>without&lt;/em> needing a traditional server or hosting setup. You can write a function to handle POST requests (like comment submissions), or GET requests (to show existing comments), without needing a full backend or server. Plus, the free tier is pretty generous. It’s perfect for personal sites, blogs, and tiny apps. &lt;a class="link" href="https://developers.cloudflare.com/workers/platform/pricing/" target="_blank" rel="noopener"
>Cloudflare Workers Pricing&lt;/a>&lt;/p>
&lt;p>In short, here&amp;rsquo;s the summary:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>D1&lt;/strong> store comments in a table&lt;/li>
&lt;li>&lt;strong>Workers&lt;/strong> handle requests for posting and fetching comments in table inside D1&lt;/li>
&lt;/ul>
&lt;h2 id="how-they-work-together">How they work together
&lt;/h2>&lt;p>Basically the flow is like this:&lt;/p>
&lt;ol>
&lt;li>A visitor writes a comment on my site.&lt;/li>
&lt;li>The comment is then sent to a Cloudflare Worker (a simple JS endpoint).&lt;/li>
&lt;li>That Worker writes the comment to the D1 database.&lt;/li>
&lt;li>Another Worker endpoint fetches comments from D1 and renders them on the page.&lt;/li>
&lt;/ol>
&lt;p>There are other things they do of course, like parsing, checking for bots or malicious intent. But that&amp;rsquo;s the gist of it.&lt;/p>
&lt;h1 id="final-thoughts">Final thoughts
&lt;/h1>&lt;p>This was one of those projects that started just from curiosity like &amp;ldquo;can I even do this?&amp;rdquo; and ended up being a real learning experience. I had no idea how Cloudflare Workers or D1 worked before this, but just by asking questions, reading docs, and experimenting (with help from ChatGPT), I got something working. Is it perfect? No. But it&amp;rsquo;s mine, my own, &lt;em>&lt;strong>&lt;del>my precious&lt;/del>&lt;/strong>&lt;/em>, and it works! &lt;em>&lt;strong>&lt;del>GOLLUM GOLLUM&lt;/del>&lt;/strong>&lt;/em>&lt;/p>
&lt;p>If you&amp;rsquo;re like me, someone without a traditional web dev background, I hope this shows that you can build useful things with the right tools and support. You don’t need to know everything from day one.&lt;/p>
&lt;p>If you’re curious to try this setup yourself, feel free to comment and include your email so I can reach you out! Or simply email me through my email (&lt;a class="link" href="mailto:ibnura96@gmail.com" >ibnura96@gmail.com&lt;/a>) or my &lt;a class="link" href="https://www.linkedin.com/in/ibnu-rasyad/" target="_blank" rel="noopener"
>LinkedIn&lt;/a>. I’d love to see more people building lightweight, fast, and self-owned web tools like this.&lt;/p>
&lt;p>Thanks for reading! Let me kow what you think on the comment section below!&lt;/p></description></item><item><title>Guest Speaker - RevoU Masterclass Data Analytics</title><link>https://ibnulab.pages.dev/p/guest-speaker-revou-masterclass-data-analytics/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><guid>https://ibnulab.pages.dev/p/guest-speaker-revou-masterclass-data-analytics/</guid><description>&lt;img src="https://ibnulab.pages.dev/p/guest-speaker-revou-masterclass-data-analytics/cover.png" alt="Featured image of post Guest Speaker - RevoU Masterclass Data Analytics" />&lt;p>One month ago, I had the privilege of being invited as a guest speaker for an event focused on SQL and data analytics. It was an incredible opportunity to connect with students and aspiring analysts—especially meaningful because I once sat in their place, trying to figure out what “real” data work looked like outside the classroom.&lt;/p>
&lt;h2 id="session-1-sql-and-data-analytics">Session 1: SQL and Data Analytics
&lt;/h2>&lt;p>In the first session, we walked through the fundamentals of data and databases: what data means in the real world, how databases store and organize information, and why understanding this foundation matters for any data-related role.&lt;/p>
&lt;p>Then we dove into SQL basics, starting with:&lt;/p>
&lt;ul>
&lt;li>Simple SELECT statements&lt;/li>
&lt;li>Filtering with WHERE&lt;/li>
&lt;li>Sorting with ORDER BY&lt;/li>
&lt;li>Basic aggregations using GROUP BY&lt;/li>
&lt;li>Understanding how JOIN works and why it&amp;rsquo;s essential for combining data&lt;/li>
&lt;/ul>
&lt;p>Rather than focusing purely on syntax, it was aimed to explain the &amp;ldquo;why&amp;rdquo; behind each operation—why you would join tables, how filters help narrow down insights, and how grouped data can help summarize large datasets.&lt;/p>
&lt;p>After that, we transitioned into some hands-on exercises, where participants could apply what they&amp;rsquo;d learned right away. It was great to see how engaged everyone was during the exercises and the thoughtful questions that followed. It was also surprising how well everyone was doing, much faster in learning than what I used to be 3 years ago!&lt;/p>
&lt;h2 id="session-2-alumni-sharing-session">Session 2: Alumni Sharing Session
&lt;/h2>&lt;p>Later in the day, I joined the Alumni Sharing Session, where I spoke about my journey into data analytics. I shared:&lt;/p>
&lt;ul>
&lt;li>How I first got into data&lt;/li>
&lt;li>What helped me the most when learning&lt;/li>
&lt;li>The challenges I faced when transitioning into a data role&lt;/li>
&lt;li>I also shared stories from real projects—especially how mistakes and messy data often teach us more than clean, perfect datasets ever could.&lt;/li>
&lt;/ul>
&lt;p>We also talked about career paths, job interviews, and how to keep learning in a field that evolves quickly. One point I emphasized was that you don&amp;rsquo;t need to be a &amp;ldquo;data expert&amp;rdquo; to get started. If you understand the fundamentals, stay curious, and keep practicing, you&amp;rsquo;ll eventually grow.&lt;/p>
&lt;h2 id="final-thoughts">Final Thoughts
&lt;/h2>&lt;p>What I enjoyed most was the open Q&amp;amp;A and discussion that followed each session. It&amp;rsquo;s always encouraging to hear fresh perspectives and questions that challenge the way we think about data.&lt;/p>
&lt;p>Speaking at this event reminded me how powerful it is to give back. Helping others gain confidence with data—even in small ways—feels deeply rewarding. I&amp;rsquo;m grateful to have been part of it.&lt;/p>
&lt;p>Special thanks to RevoU and the team involved, I wouldn&amp;rsquo;t have been able to share what I have to others without their help. Thank you for inviting and giving me such an amazing opportunity, and I&amp;rsquo;ll always be ready to share any knowledge anytime.&lt;/p></description></item><item><title>MelonEats - Recipe Finder</title><link>https://ibnulab.pages.dev/p/meloneats-recipe-finder/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate><guid>https://ibnulab.pages.dev/p/meloneats-recipe-finder/</guid><description>&lt;img src="https://ibnulab.pages.dev/p/meloneats-recipe-finder/cover.png" alt="Featured image of post MelonEats - Recipe Finder" />&lt;h2 id="project-overview">Project Overview
&lt;/h2>&lt;p>I’m excited to share my latest project: a Recipe Finder Tool that helps users find recipes based on the ingredients they have on hand. This project started as a personal solution to a common problem I often face—staring at my fridge, wondering what I could cook with the ingredients I already have. If you’ve ever been in that situation, this tool might just be for you!&lt;/p>
&lt;p>&lt;a class="link" href="https://meloneats.streamlit.app/" target="_blank" rel="noopener"
>You can check them out here!&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://ibnulab.pages.dev/p/meloneats-recipe-finder/cover.png"
width="1797"
height="467"
srcset="https://ibnulab.pages.dev/p/meloneats-recipe-finder/cover_hu17874140920835279033.png 480w, https://ibnulab.pages.dev/p/meloneats-recipe-finder/cover_hu15047545983454423561.png 1024w"
loading="lazy"
alt="MelonEats UI"
class="gallery-image"
data-flex-grow="384"
data-flex-basis="923px"
>&lt;/p>
&lt;h2 id="key-features">Key Features
&lt;/h2>&lt;ul>
&lt;li>Back-End: Integrated with the Spoonacular recipe API to pull data on recipes based on user-input ingredients. Ensured correct data and data types are processed efficiently.&lt;/li>
&lt;li>ETL: Used Python to streamline the extraction, transformation, and loading (ETL) of data. I leveraged libraries such as requests to interact with the API.&lt;/li>
&lt;li>Front-End: Developed a user-friendly interface with Streamlit. As someone new to UI design, this aspect of the project was a fun challenge, but it gave me valuable hands-on experience in building intuitive web applications.&lt;/li>
&lt;/ul>
&lt;h2 id="why-i-built-this">Why I Built This
&lt;/h2>&lt;p>As someone who enjoys cooking, I wanted to create something that solves a personal challenge—finding recipes based on available ingredients. Initially, I intended to focus solely on the back-end, but I decided to expand my learning and integrate a front-end design. This has been a great opportunity to strengthen my skills in both development and UI design.&lt;/p>
&lt;h2 id="tools">Tools
&lt;/h2>&lt;ul>
&lt;li>Back-End: Python, Spoonacular API, requests&lt;/li>
&lt;li>Front-End: Streamlit&lt;/li>
&lt;/ul>
&lt;h2 id="future-improvements">Future Improvements
&lt;/h2>&lt;p>While the current version of the tool meets my needs, I know that I can add more advanced features in the future, such as complex filtering options and the ability to browse a wider variety of recipes. These enhancements would be possible by upgrading to a higher API tier, which I don&amp;rsquo;t have the plan for yet.&lt;/p>
&lt;p>Let me know what you guys think!
&lt;a class="link" href="https://meloneats.streamlit.app/" target="_blank" rel="noopener"
>You can check them out here!&lt;/a>&lt;/p></description></item><item><title>Customer Growth through Profiling</title><link>https://ibnulab.pages.dev/p/customer-growth-through-profiling/</link><pubDate>Sun, 17 Nov 2024 00:00:00 +0000</pubDate><guid>https://ibnulab.pages.dev/p/customer-growth-through-profiling/</guid><description>&lt;img src="https://ibnulab.pages.dev/p/customer-growth-through-profiling/cover.jpg" alt="Featured image of post Customer Growth through Profiling" />&lt;h2 id="introduction">Introduction
&lt;/h2>&lt;p>In 2023, TheLook Ecommerce experienced remarkable growth in gross merchandise value (GMV), reaching nearly $3 million, a fivefold increase from the previous year. This success was reflected in the exponential rise in the number of transactions and customer base expansion. However, this growth masked a concerning trend—customer acquisition was slowing down. By the end of 2023, the company saw a 24.43% decline in customer acquisition, with the second half of the year showing a sharp drop of up to 50%. This alarming trend posed a significant challenge: how to sustain business growth when the influx of new customers was dwindling.&lt;/p>
&lt;p>Read the summary below or visit the full report &lt;a class="link" href="https://docs.google.com/presentation/d/1G_4Q6J5wm3tIFckUGJes5LKb_MupIr_t71eNmy4eQmM/edit?usp=sharing" target="_blank" rel="noopener"
>here&lt;/a>&lt;/p>
&lt;h2 id="segmenting-the-customer-base">Segmenting the Customer Base
&lt;/h2>&lt;p>To address this challenge, the analysis focused on understanding customer profile and behavior through segmentation. Four distinct customer groups were identified:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VVIP:&lt;/strong> This group, representing only 5% of the customer base, contributed a significant 23% of the total GMV. These top spenders are the most valuable customers.&lt;/li>
&lt;li>&lt;strong>Premier:&lt;/strong> Comprising 22% of customers, this group had better spending power than average customers and accounted for 38% of the GMV.&lt;/li>
&lt;li>&lt;strong>Majority:&lt;/strong> The largest segment, making up 49% of the customer base, contributed 25% of the GMV. This group had high transaction volumes but lower average revenue per user (ARPU).&lt;/li>
&lt;li>&lt;strong>Churned:&lt;/strong> These customers, who had not made a purchase in over a year, represented 22% of the customer base and contributed 12% of the GMV.&lt;/li>
&lt;/ul>
&lt;p>The segmentation was achieved through clustering analysis, considering metrics such as GMV, ARPU, transaction history, and other behavioral data. The goal was to identify patterns within these groups to tailor strategies that could boost customer retention and acquisition.&lt;/p>
&lt;h2 id="key-findings-and-behavioral-insights">Key Findings and Behavioral Insights
&lt;/h2>&lt;p>The analysis revealed significant behavioral shifts in 2023. The &amp;ldquo;Majority&amp;rdquo; group saw a spike in activity and GMV, while the &amp;ldquo;Churned&amp;rdquo; group continued to decline. It was hypothesized that a business change in late 2022 or early 2023 might have contributed to these shifts—attracting more activity from the &amp;ldquo;Majority&amp;rdquo; while losing interest from the &amp;ldquo;Churned.&amp;rdquo;&lt;/p>
&lt;p>The impact analysis showed that focusing on specific customer groups could lead to measurable improvements in GMV. Targeting the VVIP and Premier segments was projected to increase GMV by 3.11%, while efforts to engage the Majority and Churned groups could yield additional increases of 1.27% and 0.63%, respectively.&lt;/p>
&lt;h2 id="strategic-focus-areas">Strategic Focus Areas
&lt;/h2>&lt;p>Given these findings, the analysis recommends a multi-faceted approach to drive growth:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Prioritize Top Customers:&lt;/strong> Focus on the VVIP and Premier groups to secure a substantial portion of GMV with relatively low effort. These customers are already high spenders, and nurturing their loyalty could yield significant returns.&lt;/li>
&lt;li>&lt;strong>Engage the Majority:&lt;/strong> While they contribute less per transaction, the Majority group is large and active. Maintaining their engagement and encouraging incremental spending could provide steady growth.&lt;/li>
&lt;li>&lt;strong>Reactivate Churned Customers:&lt;/strong> Though they currently represent a smaller portion of GMV, re-engaging Churned customers could be worthwhile. Even a small percentage of reactivation could lead to a meaningful increase in revenue.&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion">Conclusion
&lt;/h2>&lt;p>In conclusion, while TheLook Ecommerce has enjoyed substantial growth, the slowing rate of customer acquisition requires immediate attention. By understanding and segmenting the customer base, the company can implement targeted strategies that not only retain high-value customers but also re-engage those who have lapsed.&lt;/p></description></item><item><title>Passenger Satisfaction Analysis</title><link>https://ibnulab.pages.dev/p/passenger-satisfaction-analysis/</link><pubDate>Fri, 15 Nov 2024 00:00:00 +0000</pubDate><guid>https://ibnulab.pages.dev/p/passenger-satisfaction-analysis/</guid><description>&lt;img src="https://ibnulab.pages.dev/p/passenger-satisfaction-analysis/cover.jpg" alt="Featured image of post Passenger Satisfaction Analysis" />&lt;h2 id="summary">Summary
&lt;/h2>&lt;p>Revo Air passenger satisfaction is declining, and in order to engage more customers, we must improve our service quality. So, we launched a survey to our passengers about their experience flying with us. After the analysis, we found 3 services as our main priority to improve on, namely: Online Boarding, Inflight Entertainment, and Seat Comfort.&lt;/p>
&lt;h2 id="current-situation">Current Situation
&lt;/h2>&lt;div style="display: block;">
&lt;img src="current-situation.webp" alt="current situation of the business" style="width: 60%; height: auto; float: right; margin-left: 20px; margin-bottom: 20px;"/>
&lt;p style="text-align: justify;">
From the survey results, we find out that Revo Air only receives 43% satisfaction level which is pretty concerning for our business. So we have to improve the service to increase satisfaction level to 60% in 2023.&lt;br>&lt;br>
We managed to identify the characteristics of the dissatisfied passengers. They are within the age of 8-38 and 60+ group. They were in the Eco and Eco Plus Class. They were on a personal travel. Both our Member and Non-Member passengers. And that they were on a short-haul flight (Under 1000 Miles). The last part is the one that surprised us. Our initial hypothesis was that the longer the distance the more dissatisfied the passenger will be. The truth is passengers that traveled more than 1500 miles are satisfied with their flight, while passengers that traveled under 1000 miles (short-distance flight) are mostly dissatisfied.
&lt;/p>
&lt;/div>
&lt;h2 id="result">Result
&lt;/h2>&lt;p>We analyze the data using 3 methods: EDA, Correlation and Clustering Analysis&lt;/p>
&lt;div>
&lt;img src="average-score.webp" alt="Average Score" style="width: 100%; height: auto; display: block; margin-bottom: 10px;"/>
&lt;img src="correlation-score.webp" alt="Correlation Score" style="width: 100%; height: auto; display: block; margin-bottom: 10px;"/>
&lt;img src="clustering-result.webp" alt="Clustering Result" style="width: 100%; height: auto; display: block; margin-bottom: 10px;"/>
&lt;/div>
&lt;p>From the result shown above, we concluded 2 things:&lt;/p>
&lt;ul>
&lt;li>We need to focus on 3 services, namely: Online Boarding, Inflight Entertainment, and Seat Comfort.&lt;/li>
&lt;li>We need to focus on the 2nd cluster, which is where the majority of dissatisfied passengers are identified in.&lt;/li>
&lt;/ul>
&lt;p>As for our recommendation, you can read more details on our &lt;a class="link" href="https://www.canva.com/design/DAFBZzawX7Y/q30BuRiVnDIE-Xi0Iu4_cQ/view?utm_content=DAFBZzawX7Y&amp;amp;utm_campaign=designshare&amp;amp;utm_medium=link&amp;amp;utm_source=publishsharelink" target="_blank" rel="noopener"
>&lt;strong>Canva Presentation&lt;/strong>&lt;/a>.&lt;/p></description></item></channel></rss>