<?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: Oarabile Koore</title>
    <description>The latest articles on Forem by Oarabile Koore (@oarabiledev).</description>
    <link>https://forem.com/oarabiledev</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%2F1240707%2Fb2b4d890-202b-4568-904c-d757618a4c44.png</url>
      <title>Forem: Oarabile Koore</title>
      <link>https://forem.com/oarabiledev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/oarabiledev"/>
    <language>en</language>
    <item>
      <title>My First Full-Stack Hackathon: Lessons from Building a Mobile App</title>
      <dc:creator>Oarabile Koore</dc:creator>
      <pubDate>Tue, 01 Oct 2024 14:15:34 +0000</pubDate>
      <link>https://forem.com/oarabiledev/my-first-full-stack-hackathon-lessons-from-building-a-mobile-app-366j</link>
      <guid>https://forem.com/oarabiledev/my-first-full-stack-hackathon-lessons-from-building-a-mobile-app-366j</guid>
      <description>&lt;p&gt;This post has been sitting in my drafts for months, gathering dust. Finally, I’m ready to let it see the light of day and share the experience of my first full-stack hackathon with you.&lt;/p&gt;




&lt;p&gt;I will disclose that I am a self taught dev and this hackathon was the first time building a full-stack app.&lt;/p&gt;

&lt;p&gt;The task of this hackathon was to build a mobile application for a housing corporation, and implement basic functions like sending house reports, house applications, viewing rental statements, querying for help and to view the FAQ's.&lt;/p&gt;

&lt;p&gt;I was the android developer, and the other team mates went toe to toe battling with Xamarin for IOS and building the website portfolio for the project.&lt;/p&gt;

&lt;p&gt;Btw, don't ask me why we did not use Xamarin for all the platforms, we are quiche eaters.&lt;/p&gt;

&lt;p&gt;At the same time the competition rules did not take the fact that Apple binaries cannot be handed out without Big Brothers review.&lt;br&gt;
So we planned to build an Android app and compile it to an IOS platform binary through Xamarin.&lt;/p&gt;

&lt;p&gt;( ...one of my team-mates suggested this - I don't know what compilation magic is going on, i have built a language before and i know changing language bundles to another is not simple )&lt;/p&gt;

&lt;p&gt;For android we used Javascript running on the DroidScript Framework, additionally the other team-mates battled with another hackathon and being at my request for feature implementations.&lt;/p&gt;

&lt;p&gt;I chose DroidScript for its unique way of reducing ui complexity on android and its access to native api's while producing a small binary.&lt;/p&gt;

&lt;p&gt;Furthermore I chose it basing on experience with ui development using it, I had ported the material design 3 library to DroidScript as a plugin recently therefore ui won't be an issue.  &lt;/p&gt;

&lt;p&gt;I decided not to add Node.js for the client application, because Node is way too heavy but for the admin app I used node with esm flavorings everywhere.&lt;/p&gt;

&lt;p&gt;We completed the project in 4 days, and started drafting the admin app on the same day of submission but we didn't manage to complete it.&lt;/p&gt;

&lt;p&gt;So, what was the result? Well, we didn’t win or even make it to the final round. In fact, we never received any feedback or updates, which was frustrating. I’m not disappointed by the loss but by the lack of transparency.&lt;/p&gt;




&lt;p&gt;Despite everything, there were some valuable takeaways from this hackathon:&lt;/p&gt;

&lt;p&gt;Write Tests, Even in a Hackathon&lt;br&gt;
We skipped tests initially due to time constraints, but it came back to bite us. Testing would have helped us avoid making over 5000 Firebase calls during development. Lesson learned.&lt;/p&gt;

&lt;p&gt;Don’t Underestimate XML DOM in Android&lt;br&gt;
We struggled with UI performance, especially when adding multiple elements dynamically. The way Android’s XML DOM is handled by DroidScript turned out to be slower than expected. I should have used Enjine.IO, a web based version of DroidScript (written by core DroidScript Devs) but faster plus the benefits of being cross-platform.&lt;/p&gt;

&lt;p&gt;Think Twice About Excluding Node.js&lt;br&gt;
We thought excluding Node.js for the client app would save space, but it cost us functionality. Firebase was significantly slower when integrated as a script, compared to using it as a Node module. Next time, I’d reconsider the trade-offs.&lt;/p&gt;




&lt;p&gt;Thank you for reading! This blog post may have taken months to finish, but the lessons I learned will last much longer.&lt;/p&gt;

&lt;p&gt;You can check out the project here: &lt;a href="https://github.com/oarabiledev/bhc-mobile-application-hackathon" rel="noopener noreferrer"&gt;Hackathon Project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let me know your thoughts!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>hackathon</category>
      <category>learning</category>
      <category>droidscript</category>
    </item>
    <item>
      <title>I think the web is broken, or i am</title>
      <dc:creator>Oarabile Koore</dc:creator>
      <pubDate>Fri, 05 Jul 2024 19:59:35 +0000</pubDate>
      <link>https://forem.com/oarabiledev/im-definitely-a-certified-quiche-eater-a8p</link>
      <guid>https://forem.com/oarabiledev/im-definitely-a-certified-quiche-eater-a8p</guid>
      <description>&lt;p&gt;Huhhm... (a sigh of lost hope)&lt;/p&gt;

&lt;p&gt;The world of a quiche eater isn't openly documented, well here is everything looming in my mind at-least just about how&lt;br&gt;
i think ui dev should be.&lt;/p&gt;

&lt;p&gt;Here is the backstory :&lt;/p&gt;

&lt;p&gt;I started my development journey by building android apps using DroidScript (a javascript framework), the issue is it's not cross-platform.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NOTE : I refer to the native way of building ui.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The native way looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;OnStart&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;CreateLayout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;linear&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fillxy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;btn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AddButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;A simple Button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AddLayout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I've gotten so used to building ui this way it seems correct,&lt;br&gt;
I feel at peace, I feel at home.&lt;/p&gt;

&lt;p&gt;I have built direct copies of popular design schemes for DroidScript using the native android ui api's provided like &lt;a href="https://github.com/oarabiledev/material-design" rel="noopener noreferrer"&gt;Material Design 3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I find my-self having to compromise I hate the thought of typing so much HTML and CSS to get something i feel proud of, the switching between these too is annoying.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Well, you could say why not learn a framework like React or Vue.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They all have that xml syntax and i don't like it, while i love web components they make me hate the xml syntax so much more... &lt;br&gt;
now i have to add a f*** dash.&lt;/p&gt;

&lt;p&gt;I have tried a multitude of frameworks,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I did React and i love the way i can call functions and build ui, i just don't feel well with React Query and how much i have to learn and things don't come pre-built. I hate thinking about a which state management solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I did bits of Vue to be honest i did like it, but i feel so much away from the development i like, keep in mind i hate xml syntax so as Vue is catching strays Svelte isn't safe too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I did Solid online though, yeah i think I'm fine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before this, i did install Next.js i might give it a try looks fire, but i may have to swallow the hard pill this time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Okay but what have i done since i dread xml syntax&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I made my own framework i called it SquidBASE.js and i didn't go through with my promises, deleted it and gave up.&lt;/p&gt;

&lt;p&gt;The hate boiled up again,&lt;br&gt;
I tried a different approach, i built innerscope.js and it flopped i just&lt;br&gt;
couldn't get it to align with what i want.&lt;/p&gt;

&lt;p&gt;I previously even made an article about innerscope.js bashing how frameworks are getting it all wrong, i won't delete it though &amp;gt;3.&lt;br&gt;
Now i am on my third attempt viewml.js&lt;br&gt;
The motivation i will succeed is low, the development of it is a major &lt;br&gt;
blow to my ego, i hate having to ask that dreaded LLM for help.&lt;br&gt;
I'm just copying i want to be that 10X developer, but everything feels so hard.&lt;/p&gt;

&lt;p&gt;Anyway my plan is I'm not going to copy exactly how DroidScript operates, but i have figured out why it felt so good its the separation of concerns, lets you write ui, and up-to good ui without involving css nor html.&lt;/p&gt;

&lt;p&gt;Now look I'm not that bad of a quiche eater, CSS is great so i decided to call everything from the js side, embed element focused styles onto that element using a css-in-js way.&lt;/p&gt;

&lt;p&gt;Here is the hierarchy of the project :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* As a class glazer, Application class 
is the top level and we have an onStart function to be the start*/&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nf"&gt;onStart&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;vml&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addLayout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;linear&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vertical&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;bannerdiv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;vml&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addHtmlEl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center,vertical&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="cm"&gt;/* With Any Div, or Element, its children can be aligned
  *  a certain way thats why we got the center, certical options
  *  now you dont have to add the css for that, and call from
  *  a function
  */&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;banner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;vml&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addHtmlEl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bannerdiv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;banner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The framework for staying in the flow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;banner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;banner&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="nx"&gt;banner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt;&lt;span class="s2"&gt;`
  letter-spacing: 0.5px;
  margin-top: 15px;
  font-family: "Inter", sans-serif;
  font-wight: 700;
  font-size: 48px;
  color: #213547;
  text-align: center;
  overflow-wrap : break-word;
  `&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;I can't demonstrate this well, in a blog post but i'd advise you check the App.js code in the github : &lt;a href="https://github.com/oarabiledev/viewml/blob/main/App.js" rel="noopener noreferrer"&gt;viewml App.js File&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now all of this takes me in all different places.&lt;/p&gt;

&lt;p&gt;I feel like i have got everything mixed up, sometimes i think maybe it's not for me, or its just that maybe I'm the issue, the world loves that &lt;br&gt;
xml syntax and i haven't found someone who shares these thoughts.&lt;/p&gt;

&lt;p&gt;Also with job concerns this even takes me on a scare loop, will i find a job or this will be a hobby that cannot elevate me because i don't want to fit in the world that exists and the way it works.&lt;/p&gt;

&lt;p&gt;Or i am overthinking advise me.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>learning</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
