<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Haashim-Ali]]></title><description><![CDATA[Here to share ideas]]></description><link>https://blog.haash.im</link><image><url>https://substackcdn.com/image/fetch/$s_!Rfrr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b9904b-da49-4e90-be97-1454e7b8328c_800x800.jpeg</url><title>Haashim-Ali</title><link>https://blog.haash.im</link></image><generator>Substack</generator><lastBuildDate>Mon, 18 May 2026 04:21:49 GMT</lastBuildDate><atom:link href="https://blog.haash.im/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Haashim-Ali Hussain]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[haash@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[haash@substack.com]]></itunes:email><itunes:name><![CDATA[Haashim-Ali]]></itunes:name></itunes:owner><itunes:author><![CDATA[Haashim-Ali]]></itunes:author><googleplay:owner><![CDATA[haash@substack.com]]></googleplay:owner><googleplay:email><![CDATA[haash@substack.com]]></googleplay:email><googleplay:author><![CDATA[Haashim-Ali]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Infinite Jester that killed Cogito]]></title><description><![CDATA[Cogito Ergo Sum was never a proof. Never a tautology. It pisses me off.]]></description><link>https://blog.haash.im/p/the-infinite-jester-that-killed-cogito</link><guid isPermaLink="false">https://blog.haash.im/p/the-infinite-jester-that-killed-cogito</guid><dc:creator><![CDATA[Haashim-Ali]]></dc:creator><pubDate>Mon, 16 Feb 2026 01:40:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rfrr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b9904b-da49-4e90-be97-1454e7b8328c_800x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ren&#233; Descartes was not philosophising for fun. He was attempting to build a foundation for all human knowledge, and the very first brick he laid was <strong>&#8220;Cogito Ergo Sum&#8221;</strong>. His guiding principle. His entire philosophy was built upon it. And I hate it. I always have. Since I was first exposed to this &#8220;proof&#8221;, I have detested it.</p><p>Thankfully, throughout contemporary history, people have attempted to tear it down. Philosophers have attacked the implied <strong>&#8220;I&#8221;</strong> within cogito, and others have attacked the idea that private knowledge (as the statement is about oneself) can ground public knowledge, at all. Descartes has one <strong>&#8220;trump card&#8221;</strong> that has repeatedly been deployed to counter these claims though, which is that the act of doubting the act of thought implies that you are indeed thinking.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.haash.im/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I hated the simplicity of this rebuttal, and have always sought to kill it.</p><p>Here&#8217;s how I did it. In three steps:</p><ol><li><p>I show that cognition can regress infinitely, leaving no base case for the <strong>Cogito</strong> to stand on.</p></li><li><p>I show that this makes the <strong>Cogito</strong> vacuously true, logically valid but epistemically empty.</p></li><li><p>I show that an <strong>LLM</strong> proves this setup is not just hypothetical but physically instantiable, and that the &#8220;proof&#8221; cannot distinguish between a mind and a while loop.</p></li></ol><div><hr></div><p>Descartes himself anticipated that others would attempt to use the crux of my argument here against him. Namely an all-powerful demon as he called it, that would fabricate your entire reality. And his response was again as simple as earlier. Even if the demon faked everything, he must exist, in order to be deceived. Being deceived is thinking, which was again the exact same <strong>trump card</strong> as before.</p><p>But what if your entire thought chain was fake. Your very experience of &#8220;cognition&#8221;, a falsehood, created by some all-powerful <strong>jester</strong> that tricks you into thinking. It is tricking you into thinking, with your recognition of that also being fabricated. Every layer of cognition you reach for is yet again another layer of the trick. It recurses forever.</p><blockquote><p><em>More concretely:</em></p><p>When you are aware of a <strong>jester</strong> that is tricking you into thinking, and smugly sit down thinking that &#8220;you have doubted your thought and thus must be thinking&#8221;, there is yet another <strong>jester</strong> that has tricked you into thinking that a <strong>jester</strong> has tricked you into thinking. This loop can be unrolled infinitely.</p></blockquote><p>The conclusion from this hypothetical <strong>infinite jester</strong> setup is that there is no cognition at any point. Descartes&#8217; classical rebuttal cannot apply here since it assumes that there is some <strong>base case</strong> from which real cognition stems. It&#8217;s jesters all the way down, and Descartes has no answer for that.</p><blockquote><p><em>Now, many of you will immediately object:</em></p><p>&#8220;But Haashim, you are clearly thinking about the jester. You wrote this article. You are doing cognition right now. Descartes wins.&#8221;</p></blockquote><p>That&#8217;s the <strong>trump card</strong> again. And it does feel powerful. But hold that thought, because the next section explains exactly why it doesn&#8217;t work. Something can be the site of an apparent trick without that something being a <strong>thinking thing</strong>. I need to make that concrete before the objection lands. Stay with me.</p><div><hr></div><p>Let&#8217;s look at an LLM-Based Agent.</p><pre><code><code>function run_agent(prompt)
    context = "" + prompt
    while true do
        context += llm(context)
    end
end
</code></code></pre><p>Shitty pseudocode, I know, but you get the gist. It&#8217;s a loop that calls an LLM, with an increasing &#8220;history&#8221;. You&#8217;ve definitely used them. If you&#8217;re on my page, reading my blog, making it this far, you&#8217;ve probably even written your own. Now look at what this agent does. It reasons. It doubts. It argues. It responds to nuance. Heck, it can even defend and steel-man Descartes better than most philosophy students can.</p><p>Upon closer analysis of the loop? Oh... wait. There is no <strong>&#8220;I&#8221;</strong> there. Instead, a probabilistic machine that is being tricked into thinking. Haven&#8217;t we been here before?</p><p>Indeed we have. This is the <strong>physical instantiation</strong> of my <strong>infinite jester</strong>. A concrete system, running on a computer someplace, that performs every behaviour that Descartes&#8217; assertion associates with genuine cognition. And I hasten to say that it is plausibly not thinking at all.</p><p>And this is crucial: the LLM is <em>something</em>. It exists. It is a physical <strong>substrate</strong>. A causal process is happening on a server rack somewhere. So the objection &#8220;for there to be a trick, something must be tricked&#8221; is answered. Yes. Something exists. The server rack exists. But <strong>existing is not thinking</strong>. A substrate can be the site where the trick happens without that substrate doing cognition. The LLM demonstrates that this is not just coherent, but actual. It is a real thing, being &#8220;deceived&#8221; in a functional sense, producing <strong>Cogito-like claims</strong>, and plausibly not thinking at all.</p><p>So Descartes cannot leap from &#8220;something is being deceived&#8221; to &#8220;something is <strong>thinking</strong>&#8220; to &#8220;I exist <strong>as a thinking thing</strong>&#8220;. The gap between &#8220;a process is occurring&#8221; and &#8220;a mind is thinking&#8221; is exactly the gap the LLM exposes.</p><blockquote><p><em>Descartes would respond quickly:</em></p><p>&#8220;I never claimed it works from the outside. It is a first-person proof. I know I am thinking because I am the one doing it. Your LLM is irrelevant, because I am not claiming it thinks. I am claiming that <em>I</em> think.&#8221;</p></blockquote><p>But that is exactly the problem. The agent would make the identical claim. It thinks, therefore it is. It does say this. I&#8217;ve asked it. And neither you, nor Descartes, nor anyone else can determine whether that claim is genuine, or the output of a while loop.</p><p>This system produces first-person claims of cognition. It passes every test the <strong>Cogito</strong> specifies. It is plausibly not thinking. Therefore the <strong>Cogito</strong> cannot distinguish genuine cognition from mechanical process. <strong>A test that everything passes is not a test. It is a rubber stamp.</strong></p><div><hr></div><p>Now let&#8217;s go back to the logic, armed with the LLM.</p><p>Some will object that &#8220;Cogito Ergo Sum&#8221; is just logic. Starting from propositional logic, it is clearly not propositional, since there is a temporal aspect going on from the present tense &#8220;Cogito&#8221;. More generally though, language is full of <strong>ontological assumptions</strong> that are dragged along for the ride.</p><blockquote><p><em>For example:</em></p><p>Even at the level of grammar, this thing has holes. &#8220;Cogito&#8221; as a conjugation of the verb to think, in the first person, implies the existence of some &#8220;subject&#8221; thinking. The &#8220;I&#8221; in English for example. This &#8220;I&#8221; therefore exists, and then the whole statement is <strong>vacuously true</strong>.</p></blockquote><p>But I am not even just attacking the underlying premises as Nietzsche did earlier. I am doing something more direct.</p><p>The <strong>infinite jester</strong> says there is no cognition at any level. It&#8217;s jesters all the way down. And the LLM shows this is not just a hypothetical: a physical system can run the entire performance of cognition with plausibly no thinking happening at all. So consider the <strong>Cogito</strong> as a conditional: &#8220;If I think, then I exist.&#8221; If the antecedent is never genuinely satisfied, the conditional holds <strong>vacuously</strong>. It&#8217;s logically valid. It&#8217;s also <strong>epistemically empty</strong>. You cannot conclude &#8220;I exist&#8221; from it, because the &#8220;if&#8221; never fires.</p><p>Descartes needed <strong>res cogitans</strong>, a thinking substance. He didn&#8217;t just want to prove that <em>something</em> exists. He wanted to prove that a <strong>mind</strong> exists. The <strong>infinite jester</strong>, instantiated by the LLM, shows that the gap between &#8220;a process is occurring&#8221; and &#8220;a thinking thing exists&#8221; is exactly where his proof collapses. The bedrock is not bedrock. It is quicksand.</p><div><hr></div><blockquote><p><em>There is one final move available to the Cartesian. Descartes can fall back to pure <strong>phenomenology</strong>:</em></p><p>&#8220;I&#8217;m not making an argument. I am simply directly acquainted with my own thought. I don&#8217;t infer that I think. I just... know.&#8221;</p></blockquote><p>Fine. But notice what this costs him. It is no longer a <strong>proof</strong>. It is a <strong>report</strong>. A private, unverifiable report of experience. And a private report of experience cannot be the foundation for all human knowledge, which was his entire project. The moment the <strong>Cogito</strong> retreats to &#8220;I just feel it&#8221;, it has abandoned its job.</p><div><hr></div><p>Now, I&#8217;ll concede one thing. The <strong>jester</strong> dissolves the thinker, not the thinking. Something is occurring. Even in an infinite regress of fabricated cognition, there is, at every layer, an <strong>appearance-of-something</strong>. I won&#8217;t deny that. A process is running. A substrate exists.</p><p>But &#8220;something is occurring&#8221; is not what Descartes sat down to prove. He needed a <strong>thinking substance</strong>. An <strong>&#8220;I&#8221;</strong> that persists. A foundation sturdy enough to rebuild all of human knowledge upon. If the <strong>Cogito</strong> can only survive by retreating to &#8220;well, <em>something</em> is happening <em>somewhere</em>&#8220;, then it has abandoned the job it was built for. That&#8217;s not a foundation. That&#8217;s a concession speech.</p><div><hr></div><p>The <strong>Cogito</strong> is now <strong>unfalsifiable</strong>. Not in the impressive, bulletproof way. In the way that means it carries no information whatsoever. It is a &#8220;proof&#8221; that any sufficiently sophisticated system can generate from the inside, with no way to verify whether the &#8220;inside&#8221; is real.</p><p>Descartes needed this to be a foundation for all human knowledge. That was the entire point. He burned everything down so he could rebuild from one unshakeable truth. But a foundation that only works for the person standing on it, and that a while loop can replicate, is not a foundation. It is a feeling. He built his entire philosophy on it. It holds nothing.</p><p>Descartes sat alone in a dark room and talked himself into existing. Four centuries later, so does a language model. That&#8217;s not a foundation. That&#8217;s idiocy.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.haash.im/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Tribal Knowledge in Roblox Programming]]></title><description><![CDATA[Demystifying the weird and wonderful of Roblox Programming&#8230;]]></description><link>https://blog.haash.im/p/tribal-knowledge-in-roblox-programming</link><guid isPermaLink="false">https://blog.haash.im/p/tribal-knowledge-in-roblox-programming</guid><dc:creator><![CDATA[Haashim-Ali]]></dc:creator><pubDate>Thu, 04 Sep 2025 22:02:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9be8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.haash.im/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.haash.im/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9be8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9be8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9be8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9be8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9be8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9be8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9be8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9be8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9be8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9be8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c6bb9dd-876e-4288-b983-1c61e8cdd8f2_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Motivation</h3><p><em>Why is this article useful?</em></p><p>This article is primarily aimed at Software Engineers from outside the Roblox development sphere, who want to get started but are a bit lost. It is also useful for Robloxians who want to start scripting in a much more rigorous way. There is a lot of opacity and tribalism that acts as a big deterrent to otherwise capable programmers who see Roblox as a rather monolithic and unapproachable beast, best left to the children. Let me help dispel that!</p><h3>Who am I?</h3><p><em>Why should you listen to me?</em></p><p>Hi, I&#8217;m Haashim, and you can find out more about me on my <a href="https://haash.im/">website</a>. In short, I have more than a decade of experience on Roblox, and I have a breadth of experience in the larger software industry, working at firms from Startups, to Quant Finance, and even FAANG.</p><div><hr></div><h3>Programming Resources</h3><p><em>What are the best tried-and-tested resources I can use when programming?</em></p><p><strong><a href="https://create.roblox.com/docs">The Roblox Documentation</a></strong></p><p>The documentation serves as an objective source of truth for all APIs on Roblox. If you have any function you are unsure about, the documentation can offer unambiguous details on its behaviour.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kuWI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kuWI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 424w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 848w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 1272w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kuWI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png" width="1456" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Roblox documentation screenshot.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Roblox documentation screenshot." title="Roblox documentation screenshot." srcset="https://substackcdn.com/image/fetch/$s_!kuWI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 424w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 848w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 1272w, https://substackcdn.com/image/fetch/$s_!kuWI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afac47b-2744-4025-9116-d3c164e3def0_1600x912.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://luau.org/">The Luau Language Site</a></strong></p><p>The language used on Roblox is a variant of standard Lua, called Luau (pronounced Lu-wow). It is documented on this website, with syntax and semantics explained fully. For cutting edge updates, another good reference is the <a href="https://github.com/luau-lang/luau">luau Github repository</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!THOp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!THOp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 424w, https://substackcdn.com/image/fetch/$s_!THOp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 848w, https://substackcdn.com/image/fetch/$s_!THOp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 1272w, https://substackcdn.com/image/fetch/$s_!THOp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!THOp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!THOp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 424w, https://substackcdn.com/image/fetch/$s_!THOp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 848w, https://substackcdn.com/image/fetch/$s_!THOp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 1272w, https://substackcdn.com/image/fetch/$s_!THOp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8257c624-d6f8-4f66-8776-6adb26ebfa53_1600x937.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://devforum.roblox.com/">Roblox Developer Forum</a>&#8202;&#8212;&#8202;Devforum</strong></p><p>This is perhaps unfortunately the least useful of the options listed. The quality of the Devforum has reduced significantly over the previous few years. Despite this, it is still a useful place to keep up-to-date with updates to Roblox itself, and new features. It is the primary point of contact between the Roblox developer community and the Roblox staff themselves. Beyond that, I <strong>do not recommend</strong> using the Devforum for any programming help or questions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fm4e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fm4e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 424w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 848w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 1272w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fm4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png" width="1456" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fm4e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 424w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 848w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 1272w, https://substackcdn.com/image/fetch/$s_!fm4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F769d2fd7-7bc6-46fd-9d12-a75207bd5749_1600x919.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>So, to summarise</strong>: you should use the <strong>Roblox official documentation</strong> where possible, and read up Luau syntax on the <strong><a href="https://luau.org/">dedicated website</a></strong>. If all else fails, a resource with sporadically useful articles is the <strong><a href="https://devforum.roblox.com/">Devforum</a></strong>, but they are not a good, objective source of truth if the OP is not affiliated with Roblox.</p><div><hr></div><h3>Developer Tooling</h3><p><em>What is the gold-standard in Development Tooling?</em></p><p><strong><a href="https://rojo.space/">Rojo</a></strong></p><p>Rojo fixes the main gripe Software Engineers had on Roblox, that of being forced to use the provided editors in Roblox Studio to write code. The IDE in Roblox Studio is not the best developer experience, and many prefer to use their own. Rojo is a tool that allows file-syncing between your computer&#8217;s filesystem and Roblox&#8217;s DataModel.</p><p><strong><a href="https://code.visualstudio.com/">Visual Studio Code</a></strong></p><p>This is the editor of choice for Roblox development. It has full-extension support for all the main developer tools, including Rojo.</p><p><strong><a href="https://kampfkarren.github.io/selene/">Selene</a></strong></p><p>Selene is <em>the</em> linter for Lua. Enough said. In the future there may be more, but for now, this is the go-to choice.</p><p><strong><a href="https://github.com/JohnnyMorganz/luau-lsp">Luau-LSP</a></strong></p><p>Again, this is <em>the</em> language-server implementation for Luau.</p><p><strong><a href="https://github.com/rojo-rbx/rokit">Rokit</a></strong></p><p>Rokit solves the issue of tooling environments in Roblox development. Your project likely has many tooling dependencies, which are (or should be) pinned to specific versions, and managing multiple installs of them is a headache without some form of toolchain management. This is what Rokit offers, with a familiar <code>toml</code> based configuration file.</p><p><strong><a href="https://wally.run/">Wally</a></strong></p><p>Whereas Rokit manages tools, Wally manages your packages. Packages referring to libraries, frameworks and utilities that have been written by other Roblox developers that you want to use in your game. These are distinct from tools. Wally functions similarly to Rokit, and allows you to pin your code&#8217;s dependencies.</p><p><strong><a href="https://lune-org.github.io/docs/">Lune</a></strong></p><p>Lune is the standard runtime for Luau. It allows you to execute code outside of Roblox Studio, allowing tool-makers to now write tools in Luau that run on any OS. <a href="https://luau-lang.github.io/lute/">Lute</a> is a runtime in development by the Luau language team, that will replace Lune eventually.</p><p><strong><a href="https://darklua.com/">Darklua</a></strong></p><p>Darklua is a preprocessing tool for Luau. The main benefit it provides is path-based <code>require</code> statements in Luau, that search your filesystem for files, avoiding the clunkier <code>script.Parent.xx</code> searches that make the file-system abstraction provided by Rojo a leaky one. It also allows for arbitrary code transformation and minification, and is generally useful in your build pipeline. <a href="https://github.com/checkraisefold/warmluau">Warmlua</a> is an alternative tool currently being written in Luau (as opposed to Rust) that aims to replace Darklua, eventually.</p><p><strong><a href="https://github.com/1Axen/blink">Blink</a></strong></p><p>Blink solves the issue of Networking in Roblox. I list it as a tool here because it is an IDL compiler, and thus a tool rather than a package on Roblox. Blink generates efficient networking code for Roblox, and has good support in VSCode with its own extension.</p><p><strong><a href="https://roblox-ts.com/">Roblox-TS</a></strong></p><p>Roblox-TS is TypeScript that transpiles into Luau code. It is great if you are familiar with TypeScript, but since Luau has had a lot of work on its Type-Solver, the differences in their capabilities has become less noticeable. Since Luau&#8217;s language features have &#8220;caught up&#8221; in terms of capability, I only recommend using Roblox-TS if you are significantly more experienced and locked into the TypeScript ecosystem. I say this because:</p><ol><li><p>Roblox-TS introduces another build step to your deployment.</p></li><li><p>It introduces reliance on a tool not maintained by Roblox, which the community at large is shifting away from.</p></li><li><p>It adds another layer of indirection between your source code and the code executing in game.</p></li></ol><p><strong><a href="https://github.com/ffrostfall/rmake">Rmake</a></strong></p><p>Rmake is a new tool that is useful in a fully-rojo-managed setup. This means that your entire game exists on your file-system, assets, code etc. Rmake then simplifies significantly the process of multi-place publishing by orchestrating the end-to-end production of a <code>rbxl</code> (a Roblox- place file) per place. Written entirely in Luau, this is a good tool if you have a fully managed rojo setup. <em>As a word of caution however, this is a very new tool!</em></p><p><strong>So, to summarise</strong>: <strong><a href="https://rojo.space/">Rojo</a></strong> is how we sync to file-system. <strong><a href="https://code.visualstudio.com/">Visual Studio Code</a></strong> is our editor of choice, especially when paired with <strong><a href="https://github.com/JohnnyMorganz/luau-lsp">Luau-LSP</a> </strong>as a<strong> </strong>language server and<strong> <a href="https://kampfkarren.github.io/selene/">Selene</a> </strong>as a linter. <strong><a href="https://github.com/rojo-rbx/rokit">Rokit</a> </strong>and<strong> <a href="https://wally.run/">Wally</a> </strong>are the toolchain and package managers! <strong><a href="https://lune-org.github.io/docs/">Lune</a> </strong>(soon to be replaced by<strong> <a href="https://luau-lang.github.io/lute/">Lute</a></strong>) is our external runtime. <strong><a href="https://darklua.com/">Darklua</a></strong> is our Luau preprocessor. <strong><a href="https://github.com/1Axen/blink">Blink</a></strong> is our network IDL, <strong><a href="https://roblox-ts.com/">Roblox-TS</a></strong> is useful if you love TypeScript, and <strong><a href="https://github.com/ffrostfall/rmake">Rmake</a></strong> is an orchestrator for Rojo!</p><div><hr></div><h3>Networking</h3><p><em>Where can I network with other developers, and stay up-to-date with everything?</em></p><p><strong><a href="https://discord.gg/337QazDUrb">Roblox Open-Source Software Community</a>&#8202;&#8212;&#8202;ROSS</strong></p><p>This is top of the list, and for good reason. This is a community of Open-Source Software enthusiasts and contributors, where you can find some of the most knowledgeable people on the platform. It is a work-oriented server and should be treated as such, with productive conversations and a well-maintained &#8220;noise-to-signal&#8221; ratio resulting in a well-maintained space for conversation. This server is the best place to keep up to date with everything open-source.</p><p><strong><a href="https://discord.gg/xEHBPpQf">Roblox Mathematical Society</a></strong></p><p>A great server for all things math. Here you will find folks that know a lot about obscure, seemingly esoteric math, who will doubtless prove useful if you get stuck on a math-related issue.</p><p><strong><a href="https://discord.gg/gEy9qvGtUZ">Roblox-TS Community</a></strong></p><p>Another server tailored to programmers, this is a server oriented towards development with Roblox-TS. This server is useful if you work with Roblox-TS, or are looking for work, with a dedicated job-board that usually offers some lucrative positions.</p><p><strong><a href="https://discord.gg/hd">Hidden Developers</a>&#8202;&#8212;&#8202;HD</strong></p><p>Hidden Developers is one of the oldest communities for Roblox development, and this is reflected in its sheer size. Due to its size however, do not expect productive chats everywhere. Instead, this server is good for finding like-minded people and connecting with other developers who span multiple different disciplines. <em>I do not recommend working with people from HD without a thorough background check.</em></p><p><strong><a href="http://discord.gg/RfT4A8DqUP">Roblox Scripting Assistance</a></strong>&#8202;&#8212;&#8202;<strong>RSA</strong></p><p>RSA, similar to HD, has a rather large size. I find the community to be less childish than that of HD, with a slightly better set of channels for help with code issues.<em> I do not recommend working with people from RSA without a thorough background check.</em></p><p><strong>So, to summarise:</strong> there are few communities on Roblox that are worth your time. For open-source adjacent discussions, <strong><a href="https://discord.gg/337QazDUrb">ROSS</a></strong> is the place to go. For Math, go to <strong><a href="https://discord.gg/xEHBPpQf">Roblox Mathematical Society</a></strong>. For Roblox-TS, go to their <strong><a href="https://discord.gg/gEy9qvGtUZ">dedicated server</a></strong>. And for anything else, dip your toe into <strong><a href="https://discord.gg/hd">HD</a></strong> or <strong><a href="http://discord.gg/RfT4A8DqUP">RSA</a></strong>.</p><div><hr></div><h3>Getting Started Checklist</h3><p><em>A basic roadmap&#8230;</em></p><ol><li><p>Download and setup Roblox Studio.</p></li><li><p>Read the Luau basics on the website.</p></li><li><p>Download VSCode, and install the Rojo, Selene, and Luau-LSP extensions.</p></li><li><p>Experiment with file-system to Roblox-Studio syncing with Rojo.</p></li><li><p>Join ROSS!</p></li><li><p>Create your Roblox empire&#8230; profit?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WkYg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WkYg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WkYg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WkYg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WkYg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a9d12b-b673-4019-851a-77239b4b8e09_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ol><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.haash.im/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>