<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: The REGAL Architecture	</title>
	<atom:link href="https://jessewarden.com/2022/07/the-regal-architecture.html/feed" rel="self" type="application/rss+xml" />
	<link>https://jessewarden.com/2022/07/the-regal-architecture.html</link>
	<description>Software &#124; Fitness &#124; Gaming</description>
	<lastBuildDate>Mon, 25 Jul 2022 12:39:47 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: JesterXL		</title>
		<link>https://jessewarden.com/2022/07/the-regal-architecture.html/comment-page-1#comment-260657</link>

		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Mon, 25 Jul 2022 12:39:47 +0000</pubDate>
		<guid isPermaLink="false">https://jessewarden.com/?p=6369#comment-260657</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://jessewarden.com/2022/07/the-regal-architecture.html/comment-page-1#comment-260654&quot;&gt;Cezar&lt;/a&gt;.

My issues with Haskell are super small, and shouldn&#039;t dissuade people from choosing Haskell over ReScript:
1. `no native Lambda support`. This requires a custom runtime for Lambda. Not the worst thing as I&#039;ve tested Haskell for Lambda in the past and like F#, it totally works.
2. `low-level` Haskell is like Rust in that it&#039;s _mostly_ for lower-level stuff. Like Rust, you can get some terse, fast code if you&#039;re &quot;just&quot; loading JSON and parsing it which one would think would be a great target for Web API&#039;s in Lambda.
3. `server prejudice` Haskell, like any lower level language, is typically viewed as an EC2 target, meaning, it&#039;s assumed you&#039;ll be writing some kind of server or logic thing that is run in parallel on something like ECS or K8; compile, docker build, test, deploy. The idea of having &quot;many little Haskell&quot; programs hasn&#039;t permeated the tooling setup like it has in JavaScript/Python. Cabal and other tools are for &quot;building your app&quot; not &quot;building 1 or many of your little functions&quot;. I suck at Cabal so maybe there has been progress there when I last tried 2 years ago.
4. `different runtime`; having &quot;everything be Node.js&quot; simplifies the &quot;whole stack is Node.js&quot;. Yes, Elm and ReScript aren&#039;t JavaScript, but they all run on Node.js, so having the ability to check out a project and go `npm i` is huge. Node.js is so far, the easiest to install on people&#039;s machines with little to no configuration (_maybe_ like 1 entry into your .npmrc) so you avoid the whole &quot;works on my machine&quot; or the horrible experiences of setting up your development environment (a la Python). This pays dividends, too, on integration. AWS SDK and libraries heavily support JavaScript like Metrics and X-Ray support with little to no configuration in code, so I get a lot for free here despite not actually using JavaScript. At my job, we prefer Dynatrace and StatsD to X-Ray, and for that I can swap out using npm&#039;s hot-shots for example. Stuff like that that leverages the community of libraries is just super productive. Same for ReScript&#039;s ability to integrate with these libraries if need be.
5. `category theory` I thought I&#039;d enjoy learning about Monads, Functors, etc, but I didn&#039;t. While I like Math, I like Engineering more, and a lot of Haskell&#039;s core revolves around CT. I&#039;ve seen a lot of Haskell code that has zero to do with those things, and looks almost super similar to Elm &quot;just for a simple Lambda&quot;, but that&#039;s sadly not the norm. I just want to write code, not suddenly glean my map function isn&#039;t obeying functor laws, or I need a State Monad to emulate how I can just keep passing back tuples via Promise.all in JavaScript which is insanely easier. Maybe someday that&#039;ll change, but the learning curve didn&#039;t seem to have that much of a payoff. Yet?

Both Haskell and Rust have notoriously slow compilers. Someone once told me the older I get, especially with kids, I&#039;ll learn patience. The opposite has happened; I don&#039;t have patience for slow compilers.

My issue with Rust is it&#039;s, again, super low-level. I work for a fintech, sure, but JavaScript basically has 1 number type (not including BigInt) whereas Go has 11, and Rust has 4, ReScript has 2 (again, excluding BigInt). This flexibility can make your code super fast, AND super correct. Creating types for Annual percentage rates, for example, is tough when the UI shows one way, but the database stores another, and you need to format back and forth. Much easier in a language that supports all those low-level integer math things, I&#039;m sure. However, it also makes more crap you gotta think about, and having just 2 number types is just simpler. Again, we&#039;re doing simple calls to other microservices, JSON parsing, and a teency bit of if/then things; I&#039;m sure Rust would be faster, but 90%+ of our time is spent in I/O land, not running code.

If, however, you&#039;re good at Rust, I could totally see it working the same way we have many Go lambdas doing super fast serverless processing things. I just like correctness over speed and that passion hasn&#039;t really slowed my app enough to kill UX yet.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://jessewarden.com/2022/07/the-regal-architecture.html/comment-page-1#comment-260654">Cezar</a>.</p>
<p>My issues with Haskell are super small, and shouldn&#8217;t dissuade people from choosing Haskell over ReScript:<br />
1. `no native Lambda support`. This requires a custom runtime for Lambda. Not the worst thing as I&#8217;ve tested Haskell for Lambda in the past and like F#, it totally works.<br />
2. `low-level` Haskell is like Rust in that it&#8217;s _mostly_ for lower-level stuff. Like Rust, you can get some terse, fast code if you&#8217;re &#8220;just&#8221; loading JSON and parsing it which one would think would be a great target for Web API&#8217;s in Lambda.<br />
3. `server prejudice` Haskell, like any lower level language, is typically viewed as an EC2 target, meaning, it&#8217;s assumed you&#8217;ll be writing some kind of server or logic thing that is run in parallel on something like ECS or K8; compile, docker build, test, deploy. The idea of having &#8220;many little Haskell&#8221; programs hasn&#8217;t permeated the tooling setup like it has in JavaScript/Python. Cabal and other tools are for &#8220;building your app&#8221; not &#8220;building 1 or many of your little functions&#8221;. I suck at Cabal so maybe there has been progress there when I last tried 2 years ago.<br />
4. `different runtime`; having &#8220;everything be Node.js&#8221; simplifies the &#8220;whole stack is Node.js&#8221;. Yes, Elm and ReScript aren&#8217;t JavaScript, but they all run on Node.js, so having the ability to check out a project and go `npm i` is huge. Node.js is so far, the easiest to install on people&#8217;s machines with little to no configuration (_maybe_ like 1 entry into your .npmrc) so you avoid the whole &#8220;works on my machine&#8221; or the horrible experiences of setting up your development environment (a la Python). This pays dividends, too, on integration. AWS SDK and libraries heavily support JavaScript like Metrics and X-Ray support with little to no configuration in code, so I get a lot for free here despite not actually using JavaScript. At my job, we prefer Dynatrace and StatsD to X-Ray, and for that I can swap out using npm&#8217;s hot-shots for example. Stuff like that that leverages the community of libraries is just super productive. Same for ReScript&#8217;s ability to integrate with these libraries if need be.<br />
5. `category theory` I thought I&#8217;d enjoy learning about Monads, Functors, etc, but I didn&#8217;t. While I like Math, I like Engineering more, and a lot of Haskell&#8217;s core revolves around CT. I&#8217;ve seen a lot of Haskell code that has zero to do with those things, and looks almost super similar to Elm &#8220;just for a simple Lambda&#8221;, but that&#8217;s sadly not the norm. I just want to write code, not suddenly glean my map function isn&#8217;t obeying functor laws, or I need a State Monad to emulate how I can just keep passing back tuples via Promise.all in JavaScript which is insanely easier. Maybe someday that&#8217;ll change, but the learning curve didn&#8217;t seem to have that much of a payoff. Yet?</p>
<p>Both Haskell and Rust have notoriously slow compilers. Someone once told me the older I get, especially with kids, I&#8217;ll learn patience. The opposite has happened; I don&#8217;t have patience for slow compilers.</p>
<p>My issue with Rust is it&#8217;s, again, super low-level. I work for a fintech, sure, but JavaScript basically has 1 number type (not including BigInt) whereas Go has 11, and Rust has 4, ReScript has 2 (again, excluding BigInt). This flexibility can make your code super fast, AND super correct. Creating types for Annual percentage rates, for example, is tough when the UI shows one way, but the database stores another, and you need to format back and forth. Much easier in a language that supports all those low-level integer math things, I&#8217;m sure. However, it also makes more crap you gotta think about, and having just 2 number types is just simpler. Again, we&#8217;re doing simple calls to other microservices, JSON parsing, and a teency bit of if/then things; I&#8217;m sure Rust would be faster, but 90%+ of our time is spent in I/O land, not running code.</p>
<p>If, however, you&#8217;re good at Rust, I could totally see it working the same way we have many Go lambdas doing super fast serverless processing things. I just like correctness over speed and that passion hasn&#8217;t really slowed my app enough to kill UX yet.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Cezar		</title>
		<link>https://jessewarden.com/2022/07/the-regal-architecture.html/comment-page-1#comment-260654</link>

		<dc:creator><![CDATA[Cezar]]></dc:creator>
		<pubDate>Sun, 24 Jul 2022 19:54:42 +0000</pubDate>
		<guid isPermaLink="false">https://jessewarden.com/?p=6369#comment-260654</guid>

					<description><![CDATA[Amazing article. Thank you.

I&#039;d love to know more about how Haskell or Rust would affect this stack and why you didn&#039;t chose them.]]></description>
			<content:encoded><![CDATA[<p>Amazing article. Thank you.</p>
<p>I&#8217;d love to know more about how Haskell or Rust would affect this stack and why you didn&#8217;t chose them.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
