<?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 Joel Garcia</title>
        <link>https://joelgarciamartin.com/blog/post/</link>
        <description>Recent content in Posts on Joel Garcia</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Mon, 01 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://joelgarciamartin.com/blog/post/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Water Rocket</title>
        <link>https://joelgarciamartin.com/blog/p/waterrocket/</link>
        <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/waterrocket/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/waterrocket/waterrocket.jpg" alt="Featured image of post Water Rocket" /&gt;&lt;p&gt;TODO&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Edventures 2026</title>
        <link>https://joelgarciamartin.com/blog/p/hack26/</link>
        <pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/hack26/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/hack26/Hackathons.png" alt="Featured image of post Edventures 2026" /&gt;&lt;p&gt;The MIT&amp;amp;CIC&amp;amp;UPC Hackathon is an annual event organized by the MIT Edgerton Center in collaboration with UPC, where +240 HS students across three faculties ideate, design, and then build a project. In this blog post, I&amp;rsquo;ll go over the entire organization of a hackathon from the ground up—from documents used by the Edgerton Center to conduct design reviews to scheduling and ideating.&lt;/p&gt;
&lt;p&gt;This is the ideal case scenario, and there are many things I outline in this document that we currently do not do. Part of my reason for writing this post is to create a better organizational structure for the future.&lt;/p&gt;
&lt;p&gt;Additionally, I want to highlight Christian Cardozo and Aleksandra Kaminska for their amazing job during this last hackathon. As I&amp;rsquo;ll discuss below, this was a complicated hackathon in terms of experience and time, and I believe they were able to pull off the impossible.&lt;/p&gt;
&lt;h2 id=&#34;structure-of-a-hackathon&#34;&gt;Structure of a hackathon
&lt;/h2&gt;&lt;p&gt;The hackathon has five main parts:&lt;/p&gt;
&lt;h3 id=&#34;icebreakers&#34;&gt;Icebreakers
&lt;/h3&gt;&lt;p&gt;During Icebreakers, the goal is for students to break the dynamic of school and try to get them out of their comfort zone. We have done several activities in the past, including building tetrahedrons, bingo, rapid ideation, etc. However, I will go more in-depth into this topic in another post, as there are many lessons to be learned in this section alone. TL;DR: you need to break the kids&amp;rsquo; expectations and make them talk to people outside their school. Activities within this section should encourage the sharing of ideas and experiences. In the past, we have used Bingo, the Marshmallow challenge, the telegraph, tetrahedrons, etc.&lt;/p&gt;
&lt;h3 id=&#34;ideation&#34;&gt;Ideation
&lt;/h3&gt;&lt;p&gt;In this section, students must come up with ideas and discuss them with their peers. It is critically important that they do not join based on friendships or schools in this part, as we want to avoid groups being formed by friends rather than by the idea. During this part, we want students to see all ideas and learn about what is being thought of across the room. We usually start by asking groups to form ideas with people around them. Then, we form categories based on their ideas, and they go to discuss these ideas within those categories. After this, we ask them to visit a different category to see other ideas.&lt;/p&gt;
&lt;h3 id=&#34;project-selection&#34;&gt;Project Selection
&lt;/h3&gt;&lt;p&gt;After Ideation, students must join together into groups of 4 to 6 people, which cannot be formed by schools or friendships. Teachers are critical in this step as they know the students and we don&amp;rsquo;t. They have to upload a form containing the name of the group, their names, and a brief explanation and sketch of their project. This helps mentors organize them into common topics and assign them a mentor.&lt;/p&gt;
&lt;h3 id=&#34;project-building&#34;&gt;Project Building
&lt;/h3&gt;&lt;p&gt;This is the longest section of the hackathon by far, letting students build their projects. However, this section is actually divided into three parts:&lt;/p&gt;
&lt;h4 id=&#34;cardboard-prototype&#34;&gt;Cardboard Prototype
&lt;/h4&gt;&lt;p&gt;First, we give students cardboard and ask them to build a prototype that either looks like or works like their project. This is to ensure: 1. The viability of the project; 2. The dimensions and inner workings of the project; 3. That the group actually cares about the project itself. 99% of teams fail because they don&amp;rsquo;t feel passionate about their project, and this can be seen early on.&lt;/p&gt;
&lt;h4 id=&#34;design-reviews&#34;&gt;Design Reviews
&lt;/h4&gt;&lt;p&gt;After the cardboard prototype, groups undergo a design review by an experienced mentor. This serves the purpose of better understanding the project, making sure students know what their project is and will look like, and ensuring that materials make sense and the approach could work. One of my favorite questions to ask here is: &amp;ldquo;As a user of your product, how does it feel to use it? Or what would it look like to use it?&amp;rdquo; This question makes them think about all the details they want their project to incorporate.&lt;/p&gt;
&lt;h4 id=&#34;minimum-viable-product-mvp&#34;&gt;Minimum Viable Product (MVP)
&lt;/h4&gt;&lt;p&gt;After design reviews, we give groups a materials sheet and ask them to build a Minimum Viable Product or MVP. This serves to set a goal and some limits on what will and won&amp;rsquo;t happen at the end of the hackathon. Some projects may have a huge cardboard car while others may only have some electronics, but setting these boundaries is helpful, as students stop thinking about every single detail and just work towards a working prototype.&lt;/p&gt;
&lt;h3 id=&#34;presentations-and-closure&#34;&gt;Presentations and Closure
&lt;/h3&gt;&lt;p&gt;By the end of day three, we have a project fair where parents come to see their kids&amp;rsquo; projects. Students prepare slides and show their project working (or not) to their peers, teachers, and family members. After the fair, everyone goes to the auditorium where we have a roundtable with some students, teachers, and mentors, and we distribute diplomas to the students.&lt;/p&gt;
&lt;h2 id=&#34;the-2026-hackathon&#34;&gt;The 2026 Hackathon
&lt;/h2&gt;&lt;p&gt;This year&amp;rsquo;s hackathon was not the best we have ever done. I see several failures in both organization and execution that made the hackathon worse for everyone. Students do not realize these things because they are hidden, but we have observed several details that show a less-than-ideal hackathon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Also, I must remind the reader that this article is intended to further improve the hackathon. Everything I discuss here should not be taken as criticism, but as a list of possible improvements.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;groups-by-coalitions&#34;&gt;Groups by Coalitions
&lt;/h3&gt;&lt;p&gt;One of the main problems encountered during the hackathon was that sixteen out of eighteen groups (16/18) were formed by coalitions of schools (i.e., 3 students from school A and 3 students from school B). We made it clear during ideation that they couldn&amp;rsquo;t form groups by schools—that they had to mix—but students resisted being alone. This created coalitions of schools, as most groups were formed mainly by the joining of two schools. This may look &amp;ldquo;good enough,&amp;rdquo; but it shows that students were not joining by ideas, but were simply evading the &amp;ldquo;no single-school team&amp;rdquo; rule. This could be due to an issue during icebreakers and ideation, where students did not mix properly and tended to stay close to their friends.&lt;/p&gt;
&lt;h3 id=&#34;lack-of-communication&#34;&gt;Lack of Communication
&lt;/h3&gt;&lt;p&gt;The main issue encountered during the 2026 Hackathon was communication, or the lack thereof. Schools, mentors, teachers, and students had complaints about a lack of a clear messaging and communication system, resulting in conflicting information that complicated the execution of the hackathon. For future years, a clear communication system must be created, including documents outlining everything that a school, mentor, teacher, and student should know before, during, and after the hackathon. The most critical part of organization and team management is communication—not only from top to bottom but horizontally within the organizational structure.&lt;/p&gt;
&lt;h3 id=&#34;mentor-inexperience&#34;&gt;Mentor Inexperience
&lt;/h3&gt;&lt;p&gt;In Terrassa, out of 16 mentors, only four, including myself, had taken part in a hackathon before. This ratio is not ideal. Most mentors had very little knowledge of how to do their job or what to expect, making this hackathon feel a lot more like an actual school than it should have been. A ratio of 1:1 should be the minimum for a hackathon; last year we had seven new mentors with 11 experienced mentors, a ratio of 2:3, which is fairly balanced.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Hackathon&lt;/th&gt;
          &lt;th&gt;MIT Instructors&lt;/th&gt;
          &lt;th&gt;Experienced Mentors&lt;/th&gt;
          &lt;th&gt;New Mentors&lt;/th&gt;
          &lt;th&gt;Ratio (new:exp)&lt;/th&gt;
          &lt;th&gt;Number Of Students&lt;/th&gt;
          &lt;th&gt;Ratio Student to Mentor&lt;/th&gt;
          &lt;th&gt;Ratio Student to Exp. Mentor&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;2023&lt;/td&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;11&lt;/td&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;1:5&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2024&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;1:5&lt;/td&gt;
          &lt;td&gt;125&lt;/td&gt;
          &lt;td&gt;1:10&lt;/td&gt;
          &lt;td&gt;1:11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;2:3&lt;/td&gt;
          &lt;td&gt;114&lt;/td&gt;
          &lt;td&gt;1:6&lt;/td&gt;
          &lt;td&gt;1:10.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2026T&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;11&lt;/td&gt;
          &lt;td&gt;2:1&lt;/td&gt;
          &lt;td&gt;108&lt;/td&gt;
          &lt;td&gt;1:6.5&lt;/td&gt;
          &lt;td&gt;1:18&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2026E&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;8&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;1:2&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;1:6.1&lt;/td&gt;
          &lt;td&gt;1:8.9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2026F&lt;/td&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;9&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;1:3&lt;/td&gt;
          &lt;td&gt;90&lt;/td&gt;
          &lt;td&gt;1:5.6&lt;/td&gt;
          &lt;td&gt;1:7.5&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The table above shows an organizational issue with the distribution of mentors across hackathons. If someone had computed these numbers before the hackathon, we would have seen issues in 2026T before they happened.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Domains and websites - The creation of this portfolio</title>
        <link>https://joelgarciamartin.com/blog/p/portfolio/</link>
        <pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/portfolio/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/portfolio/cloudflare.svg" alt="Featured image of post Domains and websites - The creation of this portfolio" /&gt;&lt;p&gt;Over the last two weeks, I have started setting up my own domain and websites/urls for different projects and uses. Here is everything I discovered.&lt;/p&gt;
&lt;h2 id=&#34;buying-a-domain&#34;&gt;Buying a domain
&lt;/h2&gt;&lt;p&gt;There are hundreds if not thousands for offers for domains out there. Some of them include email, hosting of the website using something like wordpress, and others include fees for random stuff. I have come to realize that most of these are targeted to people that do not have the technical expertise to set up things themselves. Plans may be as high as hundreds of dollars per month or as cheap as five dollars. But all of these are still absurdly expensive in my opinion.&lt;/p&gt;
&lt;p&gt;Of course, if you do not have the technical expertise, you have no option. But if you do, this is how I setup things myself.&lt;/p&gt;
&lt;p&gt;First, I bought my domain from cloudflare for $10/year. It includes the domain plus every feature that cloudflare offers with their extremelly generous free plan.&lt;/p&gt;
&lt;h2 id=&#34;what-i-have-built&#34;&gt;What I have built
&lt;/h2&gt;&lt;p&gt;Only with the domain, you instantly get access to setting up DNS Records (using your domain to point to things).
This includes anything that is before your domain as a prefix (sth.joelgarciamartin.com) or after (joelgarciamartin.com/sth). With this in mind, this is my current setup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;joelgarciamartin.com&lt;/a&gt; -&amp;gt; Main website. Hosted in GitHub Pages.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://beta.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;beta.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Development website. Hosted in Cloudflare Pages.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://joelgarciamartin.com/blog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;joelgarciamartin.com/blog&lt;/a&gt; -&amp;gt; Blog, hosted in Cloudflare Pages.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://link.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;link.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Simple redirect links. Hosted in Cloudlfare Pages.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://go.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;go.joelgarciamartin.com&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://rsvp.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rsvp.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Redirect page with tracking. Hosted using dub.co.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://local.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;local.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Tunnel to my computer for local development. &lt;strong&gt;Requires authentication&lt;/strong&gt; using Cloudflare Auth.&lt;/li&gt;
&lt;li&gt;My own email addresses: &lt;a class=&#34;link&#34; href=&#34;mailto:me@joelgarciamartin.com&#34; &gt;me@joelgarciamartin.com&lt;/a&gt; &amp;amp; &lt;a class=&#34;link&#34; href=&#34;mailto:help@joelgarciamartin.com&#34; &gt;help@joelgarciamartin.com&lt;/a&gt; -&amp;gt; Using iCloud as the inbox with their custom domain feature.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cal.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cal.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Access to my calendar for scheduling. Used Notion Calendar and a redirect rule.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://hack.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hack.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Access to an app we plan to use for a hackathon. Requires username and password and the website is hosted using Google Cloud.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://files.joelgarciamartin.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;files.joelgarciamartin.com&lt;/a&gt; -&amp;gt; Access to a cloud file server hosted using Cloudflare&amp;rsquo;s R2 Object Storage. &lt;strong&gt;Requires authentication&lt;/strong&gt; using Cloudflare Auth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next sections, I&amp;rsquo;ll discuss the setting up of these URLs and what I used.&lt;/p&gt;
&lt;h2 id=&#34;dns-records&#34;&gt;DNS Records
&lt;/h2&gt;&lt;p&gt;Probably the most annoying/dauting feature in hosting your own domain is using DNS. Yes, it is incredibly powerful, but at the same time, it sucks.&lt;/p&gt;
&lt;p&gt;DNS (Domain Name System) is what the internet is based on to know where each website is. If you are trying to access &amp;ldquo;google.com&amp;rdquo;, your computer does not know where it is, so it asks your router. If your router doesn&amp;rsquo;t know either, then it asks your ISP, if your ISP doesn&amp;rsquo;t know, then it asks the &lt;a class=&#34;link&#34; href=&#34;https://www.iana.org/domains/root/servers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Root DNS Servers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What these will do first, is check the termination of the domain. So they will say: &amp;ldquo;I don&amp;rsquo;t know where google.com is, but I do know that this server handles .com&amp;rdquo;. Basically it will tell you to go knock another door. That other server will say &amp;ldquo;oh yeah, google.com is this server&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Finally, you will have an IP right? Well, not quite yet, you have now hit Google&amp;rsquo;s DNS Servers. Google wants to distribute traffic equally along it&amp;rsquo;s network. So if you are in the UK, it will tell you to use a specific server close to you, plus it will tell different computers to use different servers to distribute the load.&lt;/p&gt;
&lt;p&gt;A DNS request looks like this:
&lt;img src=&#34;https://joelgarciamartin.com/blog/p/portfolio/image.png&#34;
	width=&#34;1402&#34;
	height=&#34;957&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/portfolio/image_hu_bb99ec17dadadb79.png 480w, https://joelgarciamartin.com/blog/p/portfolio/image_hu_c8dbaefbb755083a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DNS Request&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;146&#34;
		data-flex-basis=&#34;351px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Here I asked my local ISP for where joelgarciamartin.com is located. My ISP handled the interaction with other servers to figure out the IP. In this case, 185.199.109.153. If we look closely at the answer section, we can see it &amp;ldquo;cached&amp;rdquo; the answer for 300 seconds (300 before the &amp;ldquo;IN&amp;rdquo;). So it does not have to ask every time to the DNS servers what IP to use. Basically, your computer, router and ISP will use that IP for the next 300 seconds.&lt;/p&gt;
&lt;p&gt;This is why sometimes something stops working for 5 minutes, if 185.199.109.153 stops working, your computer will still try and access that IP for the next 5 minutes. But once that time expires, your computer will ask again for the IP and will get a different one which works, solving the issue.&lt;/p&gt;
&lt;h3 id=&#34;setting-up-a-dns-record&#34;&gt;Setting up a DNS Record
&lt;/h3&gt;&lt;p&gt;Having said this, DNS servers need to know where to point (i.e. when a request comes for joelgarciamartin.com, it needs to know what to say). We do this by using DNS Records. These have multiple propieties:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Type&lt;/em&gt;: What type of Record we will use. This is because you could point at a specific house (an IP) or at another URL (something like dns.example.com) or others. &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/List_of_DNS_record_types&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Types of DNS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Name&lt;/em&gt;: What prefix you want to use for this record. For example, test.joelgarciamartin.com . That &amp;ldquo;test&amp;rdquo; is defined here.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Target&lt;/em&gt;: Where to point. This could be an IPv4 if we used type A or another domain if used CNAME.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;TTL&lt;/em&gt;: For how long should websites &amp;ldquo;cache&amp;rdquo; your target. If you set this to 24h and the server goes down or the target changes, you may have to wait up to 24h for your domain to work again. Usual times differ, you could set this to as low as 1min and up to 24h.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Proxy Status&lt;/em&gt;: A Cloudflare Only setting. This can be used to &amp;ldquo;protect&amp;rdquo; the real target. When someone tries to reach the URL, cloudflare will stand in the middle and act as a middleman, protecting the user of seeing the actual IP of the target. Useful for security reasons.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An example of a DNS Record, is the one I use for my GitHub Pages hosting (joelgarciamartin.com):
&lt;img src=&#34;https://joelgarciamartin.com/blog/p/portfolio/image-1.png&#34;
	width=&#34;1908&#34;
	height=&#34;216&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/portfolio/image-1_hu_933679e9427a55cb.png 480w, https://joelgarciamartin.com/blog/p/portfolio/image-1_hu_148705e4f1e58653.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;DNS_Example&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;883&#34;
		data-flex-basis=&#34;2120px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;I am basically redirecting people to &amp;ldquo;newtoniano20.github.io&amp;rdquo;. The URL will always show as joelgarciamartin.com, but the underlying IP for the URL is the same as newtoniano20.github.io . Basically, when your computer asks for the IP, clouflare will say &amp;ldquo;Go ask newtoniano20.github.io&amp;rdquo;, and will use the IP for that URL for mine. I disabled Proxy as for HTTPS and GitHub Pages, the Proxy messes up the connection.&lt;/p&gt;
&lt;h2 id=&#34;hosting&#34;&gt;Hosting
&lt;/h2&gt;&lt;h3 id=&#34;github-pages&#34;&gt;GitHub Pages
&lt;/h3&gt;&lt;p&gt;Probably the easiest to setup, the only thing you need is a github account, a static webserver and redirecting traffic to Github Pages.&lt;/p&gt;
&lt;p&gt;I know it might be dauting if you have never done anything before in HTML/CSS. But GitHub does have a fairly simple tutorial for setting this up: &lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tutorial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, going to Settings &amp;gt; Pages &amp;gt; Custom Domain. You can use your custom URL to access that site. You will need to setup the DNS Records to point to that website though.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>New Blog!</title>
        <link>https://joelgarciamartin.com/blog/p/new-blog/</link>
        <pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/new-blog/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/new-blog/showcase.png" alt="Featured image of post New Blog!" /&gt;&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;I have created this blog for publishing what I am doing or working on. Not sure how I will use this or how often I will, but the purpose right now is to create the platform and figure out it&amp;rsquo;s usage after that.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cardboard Airplane</title>
        <link>https://joelgarciamartin.com/blog/p/paperchallenge/</link>
        <pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/paperchallenge/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/paperchallenge/paper.JPEG" alt="Featured image of post Cardboard Airplane" /&gt;&lt;p&gt;TODO&lt;/p&gt;
</description>
        </item>
        <item>
        <title>The Blue Man Group (Foot Piano)</title>
        <link>https://joelgarciamartin.com/blog/p/piano/</link>
        <pubDate>Thu, 04 Aug 2022 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/piano/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/piano/piano3.png" alt="Featured image of post The Blue Man Group (Foot Piano)" /&gt;&lt;p&gt;TODO&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Shanking Hands Overseas</title>
        <link>https://joelgarciamartin.com/blog/p/sho/</link>
        <pubDate>Sat, 19 Feb 2022 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/sho/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/sho/sho.png" alt="Featured image of post Shanking Hands Overseas" /&gt;&lt;h2 id=&#34;a-message-from-the-future&#34;&gt;A message from the future
&lt;/h2&gt;&lt;p&gt;Hi there! This is Joel Garcia from 2026, I wrote this back in 2022, so there are things that might be a bit confusing. So, two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you have any questions, please feel free to contact me via email (&lt;a class=&#34;link&#34; href=&#34;mailto:joel.garcia1202@hotmail.com&#34; &gt;joel.garcia1202@hotmail.com&lt;/a&gt;). I completely understand if this is too vague or confusing. I wrote this a long time ago.&lt;/li&gt;
&lt;li&gt;If you want the prototype I used, I don&amp;rsquo;t have it! But you can request it to Alicia Lopez, who currently has it (&lt;a class=&#34;link&#34; href=&#34;mailto:aljornet@mit.edu&#34; &gt;aljornet@mit.edu&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction
&lt;/h2&gt;&lt;p&gt;In this project, we recreated a human hand which can be moved using a sensor glove, which sends information to our hand from the other side of the world. This project was done with help of the MIT Edgerton Center and we would like to thank the help of the people listed bellow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jordi Vidal ( Work experience at ESA )&lt;/li&gt;
&lt;li&gt;Lucas de Bonet ( MIT freshman 2021 )&lt;/li&gt;
&lt;li&gt;Edward Moriarty ( MIT Edgerton Center )&lt;/li&gt;
&lt;li&gt;Arnau Ortega ( CIC Student 2021 )&lt;/li&gt;
&lt;li&gt;Gerard Solanes &amp;amp; Bernat Gascón ( Thau SC )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a summary of the project, any questions feel free to ask :)&lt;/p&gt;
&lt;h2 id=&#34;supplies&#34;&gt;Supplies
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://joelgarciamartin.com/blog/p/sho/materials.png&#34;
	width=&#34;1024&#34;
	height=&#34;467&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/sho/materials_hu_54c44f008af7e60d.png 480w, https://joelgarciamartin.com/blog/p/sho/materials_hu_c52ce64c0a618e06.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Materials&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;219&#34;
		data-flex-basis=&#34;526px&#34;
	
&gt;
Materials Used&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;180 degrees servos &lt;a class=&#34;link&#34; href=&#34;https://www.amazon.com/-/es/engranaje-44-1-lbs-velocidad-inteligente-helic%C3%B3ptero/dp/B07NQJ1VZ2/ref=sr_1_5?keywords=180&amp;#43;degree&amp;#43;servo&amp;amp;qid=1649499650&amp;amp;sr=8-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arduino power supply / 12V to 5V converter + 12V battery&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3D printed hand &lt;a class=&#34;link&#34; href=&#34;http://inmoov.fr/hand-and-forarm/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arduino Uno or ESP32&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Potentiometers &lt;a class=&#34;link&#34; href=&#34;https://www.amazon.es/dp/B07ZJL91YP?ref_=cm_sw_r_cp_ud_dp_V6Z6T4C64MFXK98JZFKF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Badge Reels &lt;a class=&#34;link&#34; href=&#34;https://www.amazon.es/dp/B08DN9HPKX?ref_=cm_sw_r_cp_ud_dp_2GZ8AN4QFPSD7NSPDJWW&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WD40&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nylon Gloves or similar &lt;a class=&#34;link&#34; href=&#34;https://www.amazon.es/dp/B00MDIT82I?ref_=cm_sw_r_cp_ud_dp_DTJN65M47Q2APS43BNGR&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JST connectors &lt;a class=&#34;link&#34; href=&#34;https://www.amazon.es/dp/B08NDKZCY9?ref_=cm_sw_r_cp_ud_dp_CD746S82Z6XFHH3VTV8C&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Recommended Link&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fishing string&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;h3 id=&#34;step-1-download-all-files--3d-print-them&#34;&gt;Step 1: Download All Files &amp;amp; 3D Print Them
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://joelgarciamartin.com/blog/p/sho/hand.png&#34;
	width=&#34;1239&#34;
	height=&#34;447&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/sho/hand_hu_b9470ecc7345c98b.png 480w, https://joelgarciamartin.com/blog/p/sho/hand_hu_8e853cb12f757f2d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3D Printed Models&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;277&#34;
		data-flex-basis=&#34;665px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Download all necessary stl files from Inmoov (&lt;a class=&#34;link&#34; href=&#34;https://inmoov.fr/inmoov-stl-parts-viewer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Link&lt;/a&gt;) and from LucasVR glove (&lt;a class=&#34;link&#34; href=&#34;https://hackaday.io/project/178243-lucidgloves-vr-haptic-gloves-on-a-budget&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Then Proceed to build them following their steps.&lt;/p&gt;
&lt;p&gt;For our last prototype, we only used the hand from Inmoov and the servo holder, we then sticked them into a piece of PLA and used them that way, which is a much simpler way.&lt;/p&gt;
&lt;p&gt;If prefered, you could use a smaller version with a potentiometer and a single finger (&lt;a class=&#34;link&#34; href=&#34;https://inmoov.fr/finger-starter/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Link&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id=&#34;step-2-setting-up-the-envoirement&#34;&gt;Step 2: Setting Up the Envoirement
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://joelgarciamartin.com/blog/p/sho/infrastructure.png&#34;
	width=&#34;581&#34;
	height=&#34;471&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/sho/infrastructure_hu_8b8f1318ca67445.png 480w, https://joelgarciamartin.com/blog/p/sho/infrastructure_hu_5a6698fb06811e52.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Infrastructure Diagram&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;123&#34;
		data-flex-basis=&#34;296px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;To set everything up, we need 3 things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A server / API , this can be hosted locally for debugging, but it is crucial to have one outside your local wifi for overseas testing. &lt;a class=&#34;link&#34; href=&#34;https://github.com/Shaking-Hands-Overseas/API&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A Data Sender or glove&lt;/li&gt;
&lt;li&gt;And a Data receiver or hand&lt;/li&gt;
&lt;li&gt;(Optional) A Frontend to send debugging data to the API or using a tool like Postman&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the everything, you will need to use my driver, firmware &amp;amp; API cos, which usage are explained in the README file of each part. &lt;a class=&#34;link&#34; href=&#34;https://github.com/Shaking-Hands-Overseas&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Link&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;step-3-connecting-all-cables&#34;&gt;Step 3: Connecting All Cables
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://joelgarciamartin.com/blog/p/sho/diagram.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Wiring Diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;The hand should be set up following this diagram and the Glove following lucas instructions ( &lt;a class=&#34;link&#34; href=&#34;https://github.com/LucidVR/lucidgloves/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You must bridge the power supply ground with the arduino one, if not, it will not work.&lt;/p&gt;
&lt;h3 id=&#34;step-4-todo-list-before-shaking-hands&#34;&gt;Step 4: Todo List Before Shaking Hands
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://joelgarciamartin.com/blog/p/sho/terminal.png&#34;
	width=&#34;828&#34;
	height=&#34;420&#34;
	srcset=&#34;https://joelgarciamartin.com/blog/p/sho/terminal_hu_b30ebe72f9692751.png 480w, https://joelgarciamartin.com/blog/p/sho/terminal_hu_90909fc8caf543ec.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Driver Initialization&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;197&#34;
		data-flex-basis=&#34;473px&#34;
	
&gt;
Once you have a running server, proceed to connect the arduino to your computer and start the driver.&lt;/p&gt;
&lt;p&gt;If you run ./run.ps1 or ./start.sh, all dependencies will install and start the program&lt;/p&gt;
&lt;p&gt;Once that is done, you will see a selection between Receiver or Sender. In the case you are acting as a hand, type 1 and otherwise type 0.&lt;/p&gt;
&lt;p&gt;Then select serial port and it will start sending or receiving data. If your serial port is not present, type 9&lt;/p&gt;
&lt;p&gt;You must upload the firmware before selecting serial port.&lt;/p&gt;
&lt;p&gt;If you start seeing data coming in, you are ok, if not, check connections.&lt;/p&gt;
&lt;p&gt;If your server requests fail, check if the API URL is ok and that you are connected to the internet&lt;/p&gt;
&lt;h3 id=&#34;step-5-done&#34;&gt;Step 5: Done
&lt;/h3&gt;&lt;p&gt;If all of the above are done, it should work. If you encounter any issue, please contact me.&lt;/p&gt;
&lt;p&gt;Enjoy shaking hands overseas!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Airplane Launcher</title>
        <link>https://joelgarciamartin.com/blog/p/airplanelauncher/</link>
        <pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/airplanelauncher/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/airplanelauncher/airplane.jpg" alt="Featured image of post Airplane Launcher" /&gt;&lt;p&gt;TODO&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ROV</title>
        <link>https://joelgarciamartin.com/blog/p/rov/</link>
        <pubDate>Thu, 30 Jan 2020 00:00:00 +0000</pubDate>
        
        <guid>https://joelgarciamartin.com/blog/p/rov/</guid>
        <description>&lt;img src="https://joelgarciamartin.com/blog/p/rov/rov.jpg" alt="Featured image of post ROV" /&gt;&lt;p&gt;TODO&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
