The Changelog: Software Development, Open Source - IronJS, F#, and .NET (Interview)
Episode Date: June 2, 2011Wynn caught up with Fredrik Holmström to talk about IronJS, F#, and open source in .NET....
Transcript
Discussion (0)
This episode is brought to you by Typekit, the easiest way to use web fonts.
Typekit pioneered the usage of CSS web fonts nearly two years ago
and continues to be the leading source for designers and developers today.
Sign up at typekit.com for as little as $4 a month
and get thousands of high quality fonts from the likes of Adobe, FontFont, Mark Simonson, and more.
The hardest part is deciding which font to use.
Try Typekit risk-free for 30 days at typekit.com.
And by Tasks from Idea Division.
Tasks for iPhone and iPod Touch is a simple yet sophisticated application
to keep track of your to-dos, notes, due dates, and priorities.
With Cloud Sync out of the box and coming soon to the web too,
it's their take on connected task management.
Learn more at taskapp.com.
Welcome to the ChangeLog episode 0.6.2. I'm Adam Stachowiak. Don't push me away! post some feature reposts from our blog, as well as the audio podcast. If you're on the Twitter, follow Changelog Show and me, Adam Stack.
And I'm Pinkwin, P-E-N-G-W-I-N-N.
Fun episode this week, talked to Iron.js with Fredrik Holmström,
way over in Sweden, about Iron.js that sits atop Fsharp,
which sits atop.NET.
Some really cool low-level stuff this week.
Nice to see some.NET coming into the stream here.
Yeah, hopefully we'll get some more of that.
Speaking of JavaScript, we'll be at Texas JavaScript.
At least I will.
Are you going?
I'm thinking about it.
Thinking about it.
On June 11th in sunny Austin, Texas,
Doug Crockford and others will be there
at the premier regional JavaScript event.
It was fun last year.
Wouldn't miss it again this year.
Speaking of regional conferences,
we'll be at Lone Star RubyConf in August.
Calls for proposals
are now open, so if you haven't submitted
to speak at Lone Star and you're a
Rubyist, then what are you waiting on?
That's right. We'll also be at RubyConf in Argentina.
Buenos Aires at
November. Well, we won't be there, actually.
We won't be there. Actually, we're trying to get a
special correspondent, Ernesto Tagworker, down in Buenos Aires.
He's hoping to cover that for us.
There you go.
Way down there.
November 8th and 9th. Check out rubyconf.com slash, that's not a slash, it's a dot, dot com dot ar. It's kind of odd.
You know, we love regional conferences. I think that's where the conversation happens
in a lot of these communities.
So if you're organizing a regional conference
and want to promote it on this here podcast,
let us know how we can work with you
to get the word out about those.
Absolutely.
Submit at thechangelaw.com.
What episode this week?
Should we get to it?
Let's do it. We're chatting today with Frederik Holmstrom from Iron.js.
So Frederik, why don't you introduce yourself and a little bit about what you do? Yeah,
okay. I'm a software developer at Crispin Porter Bukowski at my day job.
Just quit today, actually, but that's irrelevant.
I work on Iron.js in my spare time, which is really – I do pretty much only.NET programming nowadays.
I've done PHP, Ruby, JavaScript, you know, the whole shebang.
But I got stuck in.NET a couple of years back, and, well, I like it here.
So Iron.js is a JavaScript runtime for.NET written in F-sharp.
So for our listeners, there's a lot to unpack there.
So let's start with F-sharp.
What exactly is F-sharp?
Well, F-sharp is a functional programming language,
imported language from Microsoft from,
uh,
which was through the 2010,
which is like last April,
I think.
Yeah.
Uh,
I mean,
it's based on the ML style,
like ML O camel style languages.
I would almost call it like an O camel dialect,
but not quite.
It runs on.net,
uh,
interrupts with like C sharp,
uh,
VB,
whatever you can run on.NET
basically. But it's
functional, so you have the whole static
assignment, immutability,
stuff like that built in.
So Iron.js is a JavaScript
runtime built on top of that.
What's the use case for having
a different JavaScript runtime
on top of.NET?
I mean, on top of.NET,
when I started, there wasn't really any JavaScript runtimes available
if you wanted to use JavaScript as a
scripting language for your application or a game
or whatever. There's this
JScript thing that Microsoft
uses in IE,
but it's pretty bad, and the
integration with.NET is very
flaky and weird.
So I started Iron.js in December of 2010.
No, 2009, sorry.
Mostly, I mean, the original thing was that I was going to use it for a database,
like a NoSQL database I was working on.
But then I found the whole JavaScript runtime a lot more fun to work on,
so I just scrapped the other project, and I've been working on IronJS ever since.
So you support the regular.NET framework, but also Mono,
what was involved in getting it to run on Mono.
Not a lot, actually.
Like changing two references and compiling, basically.
It was almost painless.
I know you're on Windows as we're recording this podcast,
but are you playing around with Mono on Linux at all?
Yeah, I mean, I have a, what do you call it, a dual boot,
or whatever, Ubuntu, yeah, Ubuntu, whatever you call it,
that I run, usually just the latest version of everything.
I think it's like 11.04 or something.
And I run Monodevelop and stuff like that,
so I can make sure R&D is constantly
compiles on Mono.
So I got to ask you, the trend in naming
ported languages to Microsoft's
frameworks is iron something.
Where did that come from?
I think it's, what do you say, like a homage?
Yeah. Right. To the
original developer who developed the
original implementation of Iron
Python
like way back
before the dynamic language runtime existed i think that's the history of it i'm not quite sure
but i mean you had like iron ruby and iron python so when i was gonna name my old thing
i was just like okay iron js like why not it's the obvious choice. But I don't know exactly where the
prefix iron comes from.
So what about JavaScript support?
What version of JavaScript, or I guess
an ECMA standard, are you supporting?
Currently, just three,
which I'm very sad
about, but we're working on the ECMA Script
5 compatibility.
Yeah, compat.
And it's, I mean, it's truck i mean it will be it's going to be a
couple of months before it's fully in place uh we got i mean i have one guy helping me from the
states uh john thanks john by the way if you're listening to this he has helped tremendously um
so we're working but we sort of got sidetracked with performance because it's a lot more fun to work on.
Sure.
Going down and down and down
gives you a better gratification.
But we're getting back on the Equinus Script 5 horse
right now to get that done.
What's the practical impact of supporting through JavaScript 3?
What sorts of applications can be ported? Can you run Node on this? Yes, in theory. There's one guy I talked
to today, actually, that's working on Node.js for.NET using Iron.js. One of the things that
fascinates me about, I guess, the.NET framework is that it's kind of the inverse of a lot of
frameworks out there. The Unix community tends to find the best in breed tool for the job.
And with the.NET framework, you've got multiple languages that compile down to one framework,
right?
Yeah.
So in theory, you could do the same thing with, I guess, CoffeeScript that you're doing
with JavaScript, correct?
Yeah.
Without having to go through the JavaScript layer at all.
Yeah.
Have you played around with CoffeeScript at all?
You mean basically like getting a native parser for CoffeeScript that would run on top of Iron.js?
Or even bypass Iron.js and go directly down to the fsharp.net?
Oh, you mean like just parsing CoffeeScript basically straight off?
Right.
And going straight up.
Oh, I mean, I've been playing around with getting a native parser for CoffeeScript
because that speeds it up by a lot.
But I haven't touched CoffeeScript
in the regard of just compiling it straight to.NET
because that would have to be
a completely separate project from Iron.js.
So in the previous episode, we covered PyPy, and
it has some.NET extensions
that can be compiled
for Python.
Is there any sort of ability
to load.NET assemblies
using Iron.js?
Yeah, I mean, since I'm
using the dynamic language runtime,
you have pretty much access to all of C Sharp
inside of the JavaScript if you choose to.
Like if you're hosting it in an application or a game or something,
I mean, you probably want to limit what the user can do
because otherwise it could intrude.
I mean, you have the security implications
of letting the user do whatever they want.
But yes, you can access pretty much any functionality
from.NET inside of Iron.js. But this would be a great way to expose a scripting interface for your application to third-party developers.
Yeah, exactly.
And then you want to limit what they can do.
But that's a different issue.
But yes, you can access all of.NET inside Iron.js.
So back to Mono for a second.
Have you built anything with Mono?
Yeah, small things.
You know, like I use the, they have like the C-sharp scripting ability.
Like you can use C-sharp as sort of like a shell script language or something like that.
I played around with that a bit, you know.
But I mean, I haven't really built anything specifically for Mono.
I built a lot of stuff that I've made sure that runs both on Mono and on Windows,
or the canonical.NET implementation, but nothing Mono-specific.
We need to get Mono on the show.
It's a fascinating little application.
Yeah.
I mean, I've been speaking to Miguel, you know,
Miguel de Castro.
Sure, sure.
I probably butchered his name
to no end there,
but I mean,
he's a really nice guy
and there's the Mono team also.
The Mono product itself is,
I mean,
it's insane how well they're doing.
I mean,
they're backed by Novell,
but still it's,
I'm thoroughly impressed
by the progress and how good it's coming along.
You know, in your introduction email that you tipped me off to this project, it sounded a lot like a lot of the letters I get from folks in the.NET community.
And usually it starts out, you guys don't cover.NET much on the podcast, but here's a great project I'd like you to take a look at.
The reason we don't is because they're so hard to find. We're trying to make inroads into that
community. Talk a minute about the difference in, I guess, open source
philosophy between the.NET community and the rest of the
web world. I mean, I think the.NET community, and I can see this even
when I'm working professionally, is basically based
on closed source, on proprietary software.
I mean, there are usually like,
you can find the occasional open source plugin
to the CMS you're using or whatever.
I mean, there are a few open source CMSs
like Umbraco and a couple of others.
But I mean, the community as a whole
and like all the products that Microsoft sell
that concern.NET, it's all closed source.
There's very little open source.
I mean, F sharp is, I would say it's mostly open source.
I mean, even F sharp itself is open source actually.
So you can download the compiler and mess around and everything.
But looking at C sharp and VB, it's, it's all closed source straight through basically.
And I mean, I come, I mean, I learned programming like, C and PHP and Perl and Python and stuff.
So, I mean, I miss the open source perspective you get in those languages,
in the, like, Ruby JavaScript world and stuff.
You know, one of the things that I really enjoyed coming to the Ruby community
from the.NET community was just
RubyGems and the package management.
I know Python is
rather an easy install.
Is NuGet this answer
for.NET?
Yeah, I'd say it is.
I use it for pretty much
everything now.
As soon as I install Visual Studio, I install NuGet and use it for pretty much everything now as soon as I install Visual Studio
I install NuGet
and use it for pretty much everything
it's been working flawlessly
and what I like about it
is that it's not only for.NET assemblies
it's for pretty much anything
like JavaScript files, templates, whatever
it's not only for libraries
Do you know when you install packages via NuGet,
does it also put things into the registry?
Hmm.
Not the foggiest, actually.
That's just curiosity.
We should have those guys on the show,
but I guess with Windows,
even with the.NET applications,
there's still that registry component
still in Windows, correct?
Yeah, like the global assembly cache.
Right.
Or like registering it in the GAC.
The GAC.
Yeah, the people in the know say the GAC.
That's a word I haven't heard in quite some time.
Yeah.
I don't know.
I've never gotten used to how the whole assembly cache thing works.
It's just awkward.
I think the way they present it and the way
it's used is really awkward it's just like i like i want my dlls in a folder and like that's the
version i use and just be happy with them but they insist on putting them freaking everywhere
so nuget is the package management piece of that but if you're looking for open source and dot net
where do you go uh codeplex i saidPlex.com or is it.org?
Yeah, I think it's.com.
And that has most of the open source.NET stuff.
There's another place called,
oh, I don't remember the name,
but I mean, GitHub has a lot of C Sharp products also.
I noticed just a couple of days ago.
Sadly, not so much F Sharp,
but I suppose the language is sort of like a niche language.
But yeah,
I take GitHub and the codeplex definitely.
You know,
one aspect of,
I guess.net probably the eco center or the epicenter of that is the C sharp,
you know,
it's just the biggest footprint.
And it's just unfortunate that there is a special reserve character.
So it's just not search engine friendly when you're finding a lot of C Sharp stuff.
Yeah, I've had problems
because I've been looking for jobs
occasionally around Sweden.
And you can't search for it.
Like, you can't search for C Sharp
because the search chip input boxes
don't accept the pound sign.
What's the same with.NET?
A lot of times you'll see C Sharp spelled C-S-H-A-R-P, right?
And.NET spelled D-O-T-N-E-T.
Yeah, because you can't search for.NET either because it's like invalid characters, only alphanumeric plus the Swedish extension characters.
It's like, okay, well, but Java, of course, works.
So you mentioned a number of languages that you, I guess, learned on prior to.NET. What sort of perspective has that given you in writing.NET code?
I'd say the biggest impact that,
especially Python had on me,
or Linux as a whole,
because I did used to use Linux a lot
a couple of years ago,
or like five, six years ago,
is the whole async and many processes,
like one process with one thread compared to like monolithic process with like 40 threads, which is like the Windows model.
And sort of the asynchronous style of programming that, well, node use leverages, but also like that's very common, like biggest influence that I prefer to think in
async and processes instead of
threads and
I don't know weight handles I think they call it
in.NET yeah
What sort of advantages do you
think a.NET developer has over a
Unix developer? I'd say the
like how
because you get used to handling threads in.NET pretty
fast and I think that's the main thing like I mean multiple threading is really because you get used to handling threads in.NET pretty fast.
And I think that's the main thing.
I mean, multi-threading is really freaking hard.
And I mean, no one would ever claim to be good at it, I think.
But at least I'd say that I'm decent at it. And I have friends who are like Python or PHP.
And PHP might be a bad example, but Python and stuff like that.
And there's no real multi-threading there in the way you do it in.NET,
and you don't learn that because that's not the Unix model, basically.
Small tools, one process.
So you mentioned that F-sharp is a functional language.
Is it compiled or dynamic?
It's compiled. It's statically compiled, but it's type-in-fair,
so you basically don't have to type out the types, if you know what I mean.
So it infers most of the types from the way you use the variables and constants and stuff.
So you're writing JavaScript on top of this in Iron.js.
So you're straddling that line between compiled and
and dynamic what aspects of both of those worlds do you like i mean i have to say like if i'm using
it like c sharp i mean as i i grew up with like php python mostly it is some javascript you know
like when the dhtml come 2001 right which a lot of what we call AJAX is actually just
DHTML. If you're not making a network call,
it's DHTML, right?
Yeah. But I mean,
everyone remembers, and you'd search for this
little snippet on the internet to
scroll the status bar
and the text would scroll and stuff.
But, sorry.
Anyway, I mean, I think the main
drawback of the statically typed languages,
if you look at Java and C Sharp, is that they're so verbose.
It's the amount of physical code and characters you have to put down,
like, plink down on the keyboard to be able to produce something.
It's quite staggering if you compare it to, like, JavaScript or something.
But if you're looking at F sharp, for example, I mean,
it's a statically typed language and it has to be like,
you can't like make it dynamic where you want,
like with the dynamic keyboard and C sharp or stuff.
It's a statically type and that's it.
But I mean,
the amount of code,
if you look at lines or like amount of characters,
it's almost equal to JavaScript because it's such,
so tears.
So I,
if you have a language like that,
I mean, that includes like Haskell, Fsharp,
stuff like that,
I see very little benefit of being dynamic.
But if you're comparing dynamic
like JavaScript versus Csharp,
then I see a benefit of being dynamic
because of the amount of code
you don't have to write, basically.
So the last time I did.NET professionally, it was ASP.NET.
It was before the MVC release.
So are you doing much on the web with.NET?
Yeah.
I mean, my day job is pretty much, I mean, I do the heavy backend lifting.
But, I mean, I plunk some web lifting, but I mean, I plunk some like web
forms and stuff at time. Not a fan at all.
So it seems like that when.NET came out, Microsoft tried to take a desktop abstraction
or a paradigm and write an abstraction web forms, right, to expose the web to folks
that aren't used to writing web applications.
And it was just a crazy weird abstraction in hindsight.
Have you seen a philosophy change at Microsoft
over the last 10 years at all?
Are they really embracing the web
or is it still an embrace and extend philosophy?
I mean, with MVC3, i didn't use the first one but
the second and third one uh i just it's you know like but i mean coming from python and php like
the thing they sell in like asp.net mvc3 and stuff it's stuff i saw around like around like 2005
you know it's like like but this isn't really new like Like, Ruby on Rails did this six years ago or, like, five years ago or whatever.
So, I mean, I don't think they embrace and extend as much.
But the stuff they release is stuff that everyone else has been using for years currently.
That's the way I look at it, at least.
So, at least on the web, with Ruby and Python and other frameworks, there seems to be a myriad of server choices that you can deploy to, right?
Even in the Ruby world, there's Thin and Unicorn and Passenger,
and we just have a host of different choices.
On.NET, are you still tied to IIS?
Yeah, pretty much.
I mean, but I don't see it as a bad thing really
because at least when I do stuff for work and, you know, like you do applications for different companies and stuff, they, I mean, they pick.NET because it's a Windows platform.
And that's because they have a Windows network, which means they have an active directory.
You know, like they want everything integrated, you know, like the IIS and.NET and web forms.
It just works.
You know, you don't need to really do anything.
Like all the permissions work, like logins, everything just works. You don't need to really do anything. All the permissions work, like logins, everything just works.
So IIS brings a lot of benefits in terms of integration with other Microsoft systems like AD and stuff.
The other difference that seems to come up quite a lot between.NET developers and, I guess, open source or Unix developers,
and a lot of times this is more of a corporate versus startup type of mentality.
In.NET, a lot of times in Java, you're tied to an IDE, whereas in other languages, people
prefer text editors.
Where do you hang out all day?
I swear by Visual Studio.
Pride from my cold, dead hands.
Oh, yeah?
Oh, yeah. hands oh yeah oh yeah it's uh i mean once i got used to it i will not ever program without an id
ever again it's uh i mean i started doing.NET fully around 0405 maybe and i mean it took a
while to get used to visual studio definitely but now it's i mean the amount of help it gives
especially when you're writing code like c sharp code or java code which is very verbose uh the
amount of i mean it gives you so much assistance and even like if you're looking at someone else's
libraries you can just like jump around you know like the go to definition stuff and that's and
then when i at times have to open like a php project at work and i'm just completely lost
like i've i've lost the skill of navigating code without an ide sadly you know i used to be in at times I have to open a PHP project at work, and I'm just completely lost.
I've lost the skill of navigating code without an IDE, sadly.
I used to be in that camp where I couldn't do anything without a GUI menu to do it for me.
Since moving to Ruby and Rails and embracing the Unix philosophy,
I found myself writing my own little scripts
to automate a lot of what I do on a daily basis.
To what extent can you automate Visual Studio?
You can do pretty much whatever you want.
I mean, Visual Studio has a rich extension gallery nowadays at least.
I know it's been building up since 2008,
and now 2010 has it integrated even.
And I mean, there's extensions for pretty much everything
you could possibly get.
There's even a Git extension now that actually works.
So I'm using that for the small things like committing and updating.
I'm glad you brought that up.
So is there any traction for Git and Mercurial
and the open source.NET community outside of Team Foundation Server?
I mean, I think Mercurial, so I can pronounce that being Swedish,
has more traction in Git in the.NET community, I think,
because CodePlex has an HD repository option
next to the normal team foundation, I think.
But I mean, I use Git.
I know a lot of other.NET projects use Git also.
I mean, for me, I don't know.
Git just clicked, so I stuck with that.
So when you're not hacking on Iron.js,
what open source projects just have you dying to play with?
I've been meaning to get more into Node.
I love the whole async idea.
And I mean, obviously, a lot of other people do also.
I mean, I've been toying with a beta on my
Ubuntu
dual boot or whatever
but I don't know
I haven't had time to
fiddle around with open source projects for ages
because I've been working and then I've been doing
RNGs for like 8 hours every day
for the past year
so it's like I don't know.
I do look at some other C Sharp projects, though, like the Kayak HTTP server.
I've been meaning to play around with that because that's like an integral part in getting the,
or important part in getting the node for.NET running.
As a.NET developer, who's your programming hero?
Oh, I don't know.
I got to say Zed Shaw.
I like that guy.
He's a complete asshole.
But I like him.
I'm sorry.
We're fans of Zed.
Zed was on an episode, a highly edited episode.
But he plays in a lot of different, I guess, playgrounds.
I mean, he's made friends in Enemies and Ruby and Python,
and I guess now at least one friend in the.NET community.
So what's got you excited about what Zed does?
I mean, I just like his, like, brutal honesty.
I think that's what I mean.
First of all, he's a really good programmer, obviously.
But, I mean, like, more as a persona, like, I like his brutal honesty. I mean that's what I mean. First of all, he's a really good programmer, obviously. But I mean, like Marcel
Persona, I like his brutal honesty.
I mean, he goes overboard
a lot. But at least
from my perspective, I mean, I've never met the guy.
But yeah.
But if you're talking like programming,
it would have to be Miguel from
Mono.
I mean, he's such a nice guy and he's like
so scary smart. It's such a nice guy, and he's so scary smart.
At work, you think you're
the hot shot, and then you talk to someone like him, and he's like, oh, God, I need to go back to school
for 15 years to catch up with him.
So since.NET is backed by Microsoft, are most of the thought leaders in the.NET community
at Microsoft, or are there other folks in the community that are bearing the standard?
When you're talking about, like, I'd say if you talk about the core.NET stuff, of course, Microsoft, like,
the community doesn't have that much control.
But if you're looking at F-sharp, and F-sharp really is the oddball here.
There's, like, Don Syme, who's also, that's another programming here, actually, who's also, like, insanely smart,
who's the main architect behind F-sharp. I think it's also one of the main architects behind generics in dot
net uh i mean the f sharp community is very open and it's like there's a lot of discussions and
there are a lot of people from the community who are involved or f sharp i'd say the community has
more influence than the other stuff but like c sharpsharp vb and stuff i think it's
from my point of view it's all microsoft and you just have to live with that you know a lot of the
i guess sharing that happens in the ruby and python and and unix communities happens at user
groups are you involved in a dot net user group they actually spend my time in gothenburg uh i've
been trying to look them up,
but I don't know.
It's,
uh,
I don't know.
The thing is that it's mostly like those user groups are mostly like C sharp
and stuff.
I've been trying to like find an F sharp user group in Sweden,
but I think we're like three of sharp programmers in all of Sweden.
Yeah.
So it's like,
I don't know.
It's,
uh,
uh,
I mean,
those are mostly F sharp and they usually,
you know,
they talk about like this CMS systems and you know, like the CMS systems and the client, like CRM systems and stuff.
And that's not really what I'm interested in as a person.
I prefer the open source, more like the tech projects, like hacking on compilers and stuff,
compared to discussing the latest CRM system released by some company.
Do you have a favorite F-sharp feature you'd like to see in another language?
This is a functional feature, but it's pattern matching by far.
Discriminated unions and pattern matching.
Those things are just amazing.
I mean, those are the two features that made me choose F-sharp for Iron.js, basically,
because of how easy they make parsing and like building
syntax trees and stuff how large is the iron.js project roughly in lines of code it's tiny it's
like 11 000 lines this is nothing for a compiler or a runtime but i mean the runtime is dot net
but like a compiler how many contributors uh There's me and the guy named
John. I can't pronounce his name
though. I think it's
John Gitson.
He lives in the States, but he has a
really funky last name.
I'm sorry, John, if you're listening.
He helped a lot on the
ECMAScript
three conformance tests.
He did
I'd say about half the work there.
So looking at the Iron.js website
and the benchmarks that you've
published,
you mentioned earlier that these were fun.
So what makes benchmarking fun?
I don't know.
Isn't there just something inherently fun
over being fast? I don't know.
I don't know. I don't know.
I think it sort of gives you a receipt of your efforts.
That you actually made something that works and it's fast.
It's the own validation.
I've actually built something and it works and it runs fast.
And it runs fast compared to the competition or whatever you want to call it and seeing that little bar decrease even more i think
we're down to 2900 milliseconds now for all of sun spider you know i i think you asked me you
know isn't that fun for me no it would not be but you know i'm thankful for guys like you so
here's the deal i play where the user meets the machine right and if somebody has to have a business benefit for it for me to get excited
about what computing can do for them right but i am so thankful that guys play at the lower end or
the deeper end of the pool right and do things like this to make the whole effort faster yeah
i mean i don't know i just i don't even really know why I like it.
Like I said earlier, I drive a motorbike in my spare time, and I suppose that goes fast
also, so I suppose there's some correlation there.
So you just like speed in general?
Yeah, just speed in general.
So, Frederick, where can folks go to learn more about Iron.js and get involved?
Ironjs.wordpress.com or ironjs.net.
And, of course, github.com slash fhalm slash ironjs,
which is the main repository.
And follow on Twitter at ironjs.
Yeah.
And I am fjhalmstrom at Twitter.
And we'll put all of that in the show notes.
So thanks so much for joining us
and telling us
a little bit about
Iron.js and Fsharp
and giving us,
I guess,
a whole slew of projects
that we need to have
on the show
in the future.
Yeah, thanks for having me.
It's been a blast.