Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-08-03 Thread Neil Van Dyke

Eric MacAdie wrote on 08/03/2017 01:16 AM:

I think it is a drag that a lot of people want to use JavaScript everywhere. I 
would like an actual alternative (not just yet another *js framework, or a 
language that transpiles to JS).


Agreed.

Here's an interesting relatively new thing to look at, for a new Racket 
backend: https://en.wikipedia.org/wiki/WebAssembly


If we could soldier on with things like WebAssembly (despite still being 
burdened by much of the unfortunate technical evolution of the Web), we 
do get some useful pragmatic properties, like programs being instantly 
runnable in a Web browser, and being able to bypass app store gatekeeping.


If you had a WebAssembly backend, the first two platform things you 
might make, for industry purposes, are a simple mobile-friendly GUI 
library, and a Web browser backend for the current Racket desktop GUI 
and filesystem.  (The latter, so that you could instantly get most 
desktop apps running on a tablet Web browser.)


At that point, developers can now use Racket, which is good.  But also, 
once Racket can be used there, then researchers/developers can use its 
strengths to innovate, doing things that people using other platforms 
are not doing.  (Analogous old example: once PLT/Racket could run a Web 
server, they made continuation-based server-side Web programming, which 
other platforms were not doing.  Or go back to when cross-platform 
DrScheme became possible, and was used to advance educational innovation 
thats now used widely.)


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-08-02 Thread Eric MacAdie
I did try to get it up and running and try the samples on Ubuntu. I
had to install quite a few packages to build the sample Android app. I
was not able to cross-compile the sample for Windows.

Porting LambdaNative to Racket would be a huge undertaking, and not
something I would try without a lot of other people trying too. But,
like the original author, I think it is a drag that a lot of people
want to use JavaScript everywhere. I would like an actual alternative
(not just yet another *js framework, or a language that transpiles to
JS).

= Eric MacAdie

On Tue, Aug 1, 2017 at 10:08 PM, Neil Van Dyke  wrote:
> Eric MacAdie wrote on 08/01/2017 09:54 PM:
>>
>> WRT mobile, maybe someone could port LambdaNative to Racket:
>> http://www.lambdanative.org/
>
>
> Do you have experience with LambdaNative?  I looked at it briefly a year or
> two ago, and it looked like they'd made reasonable and neat way to do what
> they needed to for world health projects.  But unclear that they were going
> to go any further with the underlying software platform.  (And, the Linux
> target for the first example/demo I tried crashed when built and run on
> Debian Stable.) Git today shows that there is maintenance going on, which is
> encouraging.  I'd be interested to hear of experiences with it.
>
> (I'm speaking of LambdaNative above; I've used Gambit a bit more over the
> years, and Gambit is a separate thing with its own other merits.)
>
> I'm hoping that the current Racket backend refactoring will make it easier
> to target different mobile platforms (JS/WebAssembly for online as well as
> either HTML5 Offline or Cordova, native for iOS and Android).
>
> In any case -- whether one is considering porting LambdaNative to Racket, or
> looking to do something different for mobile with Racket -- it's worth
> taking a look at what LambdaNative did and how they did it using Gambit.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-08-02 Thread 'Royall Spence' via Racket Users
A Reddit user wrote an interesting post about their experience
programming a mobile roguelike with Lambdanative:
https://www.reddit.com/r/scheme/comments/6hng3q/i_developed_a_medium_sized_cross_platform/

On Tue, Aug 1, 2017, at 11:08 PM, Neil Van Dyke wrote:
> Eric MacAdie wrote on 08/01/2017 09:54 PM:
> > WRT mobile, maybe someone could port LambdaNative to Racket:
> > http://www.lambdanative.org/
> 
> Do you have experience with LambdaNative?  I looked at it briefly a year 
> or two ago, and it looked like they'd made reasonable and neat way to do 
> what they needed to for world health projects.  But unclear that they 
> were going to go any further with the underlying software platform.  
> (And, the Linux target for the first example/demo I tried crashed when 
> built and run on Debian Stable.) Git today shows that there is 
> maintenance going on, which is encouraging.  I'd be interested to hear 
> of experiences with it.
> 
> (I'm speaking of LambdaNative above; I've used Gambit a bit more over 
> the years, and Gambit is a separate thing with its own other merits.)
> 
> I'm hoping that the current Racket backend refactoring will make it 
> easier to target different mobile platforms (JS/WebAssembly for online 
> as well as either HTML5 Offline or Cordova, native for iOS and Android).
> 
> In any case -- whether one is considering porting LambdaNative to 
> Racket, or looking to do something different for mobile with Racket -- 
> it's worth taking a look at what LambdaNative did and how they did it 
> using Gambit.
> 
> -- 
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-08-01 Thread Neil Van Dyke

Eric MacAdie wrote on 08/01/2017 09:54 PM:

WRT mobile, maybe someone could port LambdaNative to Racket:
http://www.lambdanative.org/


Do you have experience with LambdaNative?  I looked at it briefly a year 
or two ago, and it looked like they'd made reasonable and neat way to do 
what they needed to for world health projects.  But unclear that they 
were going to go any further with the underlying software platform.  
(And, the Linux target for the first example/demo I tried crashed when 
built and run on Debian Stable.) Git today shows that there is 
maintenance going on, which is encouraging.  I'd be interested to hear 
of experiences with it.


(I'm speaking of LambdaNative above; I've used Gambit a bit more over 
the years, and Gambit is a separate thing with its own other merits.)


I'm hoping that the current Racket backend refactoring will make it 
easier to target different mobile platforms (JS/WebAssembly for online 
as well as either HTML5 Offline or Cordova, native for iOS and Android).


In any case -- whether one is considering porting LambdaNative to 
Racket, or looking to do something different for mobile with Racket -- 
it's worth taking a look at what LambdaNative did and how they did it 
using Gambit.


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-08-01 Thread Eric MacAdie
WRT mobile, maybe someone could port LambdaNative to Racket:
http://www.lambdanative.org/

= Eric MacAdie


On Mon, Jul 31, 2017 at 6:53 PM, Neil Van Dyke  wrote:
> Two things to add to my comments from early this morning...
>
>
> * For servers, a nice don't-have-to-roll-your-own option sometimes is the
> Racket core Web Server.  I found it and SXML-ish HTML generation very
> productive for rapidly making an internal-use technical app -- probably more
> productive in that case than any other platform I could think of.  (For a
> prominent research organization, I'd developed specialized Web crawling and
> heavy scraping in Racket, to build a large text corpus database,
> and then I made a Web app for browsing the database and tagging it with
> semantic annotations.)  The Racket core Web Server also has an optional
> continuation-based state mode, which could be another one of those
> linguistic wins I mentioned.  What I haven't evaluated is how that performs
> at scale.
>
> Of the two biggest Web servers atop Racket that I know of,
> news.ycombinator.com might still implement HTTP directly atop a socket
> (presumably with something in front), and a non-public family of Web servers
> has its own layers atop "http://www.neilvandyke.org/racket/scgi/; (I'd
> actually made the `scgi` package with a particular user in mind, to help
> them migrate a big legacy CGI(!) application smoothly).
>
>
> * I mentioned linguistic properties as the reason one might use Racket for
> general industry use.  Another thing I've mentioned before is fuzzier: the
> developer community.  Racket attracts a small but strong mix of developers
> and researchers, and the culture is to welcome and knowledgeably help out
> others.  Do a quick Web search, then just ask your question on the email
> list, and you might get the actual developers or another expert responding.
>
> By contrast, I was a very early Java developer (I first saw it when it was
> called Oak, I advocated Java for real application development, and my first
> apps required me to write even basic GUI widgets from scratch), but, after
> the "enterprise" popularity surge, there came a time when any Web search I
> tried about a Java question just turned up an impassably vast wasteland of
> people who didn't know what they were talking about.  (Of course there are
> now small oases to be found, but it's tricky.)
>
> Racket doesn't have that curse of popularity and ecology of many levels of
> commercial jockeying. :)  I'd prefer more industry opportunity with Racket,
> but I'd like that to happen without compromising the caliber of the
> community much.  For general industry use, community support isn't the top
> selling point, but I think most engineers and at least some MBAs would
> consider it to have significant real value.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-07-31 Thread Neil Van Dyke

Two things to add to my comments from early this morning...


* For servers, a nice don't-have-to-roll-your-own option sometimes is 
the Racket core Web Server.  I found it and SXML-ish HTML generation 
very productive for rapidly making an internal-use technical app -- 
probably more productive in that case than any other platform I could 
think of.  (For a prominent research organization, I'd developed 
specialized Web crawling and heavy scraping in Racket, to build a large 
text corpus database, and then I made a Web app for browsing 
the database and tagging it with semantic annotations.)  The Racket core 
Web Server also has an optional continuation-based state mode, which 
could be another one of those linguistic wins I mentioned.  What I 
haven't evaluated is how that performs at scale.


Of the two biggest Web servers atop Racket that I know of, 
news.ycombinator.com might still implement HTTP directly atop a socket 
(presumably with something in front), and a non-public family of Web 
servers has its own layers atop 
"http://www.neilvandyke.org/racket/scgi/; (I'd actually made the `scgi` 
package with a particular user in mind, to help them migrate a big 
legacy CGI(!) application smoothly).



* I mentioned linguistic properties as the reason one might use Racket 
for general industry use.  Another thing I've mentioned before is 
fuzzier: the developer community.  Racket attracts a small but strong 
mix of developers and researchers, and the culture is to welcome and 
knowledgeably help out others.  Do a quick Web search, then just ask 
your question on the email list, and you might get the actual developers 
or another expert responding.


By contrast, I was a very early Java developer (I first saw it when it 
was called Oak, I advocated Java for real application development, and 
my first apps required me to write even basic GUI widgets from scratch), 
but, after the "enterprise" popularity surge, there came a time when any 
Web search I tried about a Java question just turned up an impassably 
vast wasteland of people who didn't know what they were talking about.  
(Of course there are now small oases to be found, but it's tricky.)


Racket doesn't have that curse of popularity and ecology of many levels 
of commercial jockeying. :)  I'd prefer more industry opportunity with 
Racket, but I'd like that to happen without compromising the caliber of 
the community much.  For general industry use, community support isn't 
the top selling point, but I think most engineers and at least some MBAs 
would consider it to have significant real value.


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-07-31 Thread Matthew Butterick

> On Jul 30, 2017, at 8:02 PM, Sage Gerard  wrote:
> 
> Those of you working on the web know that Javascript went everywhere.

Like a puppy never housebroken.


> I see Racket can be used for web development, but is Racket really what I 
> need to meet the demands of multi-platform development while competing in the 
> market? Does Racket (or similar) sit at the next stage of evolution for the 
> multi-domain developer stuck in Javascript? If so, why?

Sure — just don't tell your boss you're using it. [0]

The life of JS has continually recapitulated the circumstances of its birth. As 
its creator concedes, "I had to be done in ten days or something worse ... 
would have happened". [1] 

But the cost of this speed was that "JS has a lot of stupid in it". [2] And 
living with "a lot of stupid", for decades, has been expensive.

In that sense, JS was more than a language. It introduced the foundational 
axiom of web engineering: that fast & stupid beats slow & considered.

Personally, I loathe JS. But I accept that the fast-and-stupid principle is 
legitimate. Moreover, it's probably been a more appropriate principle for the 
web than slow-and-considered, despite the costs (e.g., a culture of disposable 
code and near-continuous upheaval). 

Nevertheless, it is IMHO the opposite of what Lisps/Schemes generally & Racket 
in particular are about. Though I've mused about why these languages haven't 
been more popular in web engineering [3], it's not really mysterious: Racket 
encourages you to program in a slow and considered way. This is not what the 
web wants. (Though the creator of JS does credit Scheme as a positive 
influence. [4])

Still, the grave irony of the JS ecosystem is that even though firms have 
"normalized" on JS, it's such an unruly environment that it's like normalizing 
on Brownian motion. 


[0] http://beautifulracket.com/jsonic-2/intro.html 


[1] 
https://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1021
 


[2] 
https://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1020
 


[3] http://beautifulracket.com/appendix/why-racket-why-lisp.html#a_OyaFm 


[4] 
https://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1089
 


-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-07-31 Thread Neil Van Dyke
You first have to ask yourself whether there's something about Racket 
that's a linguistic win for you -- say, you really benefit from the 
first-rate support for domain specific languages, or from having a very 
powerful Lisp family extension language, or you're doing nontrivial 
symbolic computation.


(My favorite example of this is from a public statement from ITA 
Software, who, paraphrased and IIRC, used the power of a Lisp to build a 
new node in the existing mainframe airline reservation system network, 
and they believed the only way it was possible was with a Lisp.)


That win from Racket has to be big enough you're willing to put in more 
effort on other aspects -- to figure out how to get Racket to do things 
for which you could easily find an off-the-shelf solution in some other 
language/platform.


If there's not that linguistic win, then you're better off using a more 
popular platform.


If there might be that win, rest of this email is more details...

Here's an example of the work: As a consultant, when I had to add a 
mobile app to one large and complex server-centric system that's 
implemented in Racket (and which had, speaking vaguely, a meta-model 
layer)... what I ended up doing was have the server generate the 
JS/HTML/CSS/etc. for an HTML5 app, from the current state of the 
meta-model.  In this case, I did it as HTML5 Offline stuff, including 
app updating, although I kept PhoneGap/Cordova as a backup plan.  Racket 
made this possible, because doing the generation was nontrivial, plus 
SXML is great for complicated HTML generation.  It was painful, partly 
because of the necessarily complicated nature of the system (no fault of 
Racket; you'd have this in any language, and it would probably be even 
harder there), and partly because Web apps are fundamentally an 
architectural mess right now (not Racket's fault, but bypassing Web 
technology and writing direct in Racket, with a nice UI toolkit, 
would've been much better).


To go back to your Desktop/Mobile/Server bullets, briefly and off-the-cuff:

* Desktop: Take a look at DrRacket on Windows/Mac/Linux, for a 
cross-platform desktop GUI app, from one source.  You can get a little 
more appearance polish and contemporary behavior, with work. The 
standard widgets are basic, plus a decent text editor one.  Not 
everything you see in DrRacket is easily reusable functionality. When 
the standard widgets don't do what you need, there is a canvas, and some 
3D support, so you can do *most* things, with some work.


* Mobile: This might see an improvement, in the future.  Matthew Flatt 
is doing hard reworking of the guts of Racket right now, and it's 
conceivable that sometime after, Racket could have a viable backend for 
targeting JS or Web Assembly.  For now, on Android, it's possible that 
Jay MacCarthy's recent work using Android NDK(?) might do what you need, 
although I think it's been focused on a particular user's needs.  I'd 
avoid the other education-oriented stuff.  Other than that, I think 
you're probably using any JS/HTML/CSS stack stuff talking to Racket Web 
services, and possibly having Racket help generate the JS/HTML/CSS.


* Server: This is most of what I've been doing as a consultant for many 
years.  There is a lot of rolling your own, but you can get it to do 
what you need.  For example, when a large system in Racket wanted to 
move to AWS, and do some unusual things, I had to implement the S3 
integration from scratch, and do some things to help move server and SQL 
to EC2, but it was doable, and I could also do the unusual things.  That 
AWS setup ended up being the first ever to get a particular fancy 
certification (I can't take credit for that).  In that example, the 
customer couldn't just install a new platform version or add-on that 
suddenly makes everything they needed to do work on this newfangled 
cloud thing, but, at the same time, they weren't captive to some 
off-the-shelf platform, and had the ability to do what they needed to 
do, and on their timetable.


Another thing to be aware of is that, right now, I don't think anyone is 
currently advancing Racket for industry work.  So, for the foreseeable 
future, you'll probably be rolling your own a lot, which can be good and 
bad.


Of course, as a technical consultant who prefers to work in Racket, I'm 
interested in a lot more industry uses of Racket happening, since that 
means some would likely pay me for advising, doing some of the 
architecture and/or trickier development work, and helping to fix 
problems that crop up elsewhere.  One thing I don't do is sales of the 
platform. :)


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Seeking expert opinion on how Racketeering tames web development chaos.

2017-07-30 Thread 'Alan Forrester' via Racket Users
On 31 Jul 2017, at 04:02, Sage Gerard  wrote:

> Hi!
> 
> New to Racket. Looking for expert opinion on my question, but I should give 
> some background.
> 
> I worked on software for about 11 years. Started on Win32 desktop 
> applications with C++ and then eventually moved to web, where I stayed on 
> front-end development for about 6 years. Moved to full-stack web dev then 
> finally architecture + web systems. I became a polyglot by necessity and am 
> now leading a UI team in a security startup.
> 
> Those of you working on the web know that Javascript went everywhere. In my 
> experience, I saw firms assume that they could now save on staffing by 
> normalizing to JS:
> 
> * Desktop devs (C++, C#, Go, etc.) were replaced by JS devs on Electron.
> * Mobile devs (Objective-C, Java Android SDK) were replaced by JS devs on 
> React Native or Cordova+Ionic.
> * Server devs (PHP, Python, Ruby, etc.)  devs replaced by JS devs on Node.js.
> 
> You get the idea.
> 
> The JS tooling explosion came tried handle the domain influx, only to 
> introduce the new problem of managing all of these domains. If you pull up a 
> large (~500k+ line) JS project, any one JS module could be read by a bundler, 
> a test runner, a transpiler, or Node. You have to maintain one script's 
> ability to function in N different domains.
> 
> This brings me to my questions, which I leave open-ended only because I'm not 
> experienced enough with Racket to be more specific. Please let me know if I 
> can elaborate more.
> 
> I found Racket while I was looking for a way to explicitly manage knowledge 
> domains while keeping a competitive edge. What I need your help with is 
> finding out if Racket is the tool in which I need to invest my time.
> 
> I see Racket can be used for web development, but is Racket really what I 
> need to meet the demands of multi-platform development while competing in the 
> market? Does Racket (or similar) sit at the next stage of evolution for the 
> multi-domain developer stuck in Javascript? If so, why?

There are some existing langs for compiling Racket to Javascript:

https://github.com/vishesh/racketscript
https://www.hashcollision.org/whalesong/

As far as I can tell, if you want facilities for iOS programming in Racket, you 
would have to write them yourself. Maybe it would be worth your while to do 
that.

If you want a lisp that has some existing tooling for every platform, your best 
option might be Clojure and Clojurescript. Clojurescript compiles to 
Javascript, has easy interop, has some integration with npm:

https://clojurescript.org/news/news

There is also a lot of material on using clojurescript to write iOS and Android 
apps using React Native:

http://cljsrn.org/

and apps using Clojurescript and React Native have been deployed to production. 
Clojurescript also has hot code reloading in both the browser and on iOS using 
figwheel.

Alan

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.