This might be a bad idea, and normally I disapprove of this sort of
thing, but... does anyone want to take on the job of RACKET EVANGELISM
STRIKE FORCE, among a concentration of startup-types and other software
Specifically, you'd participate regularly in Y Combinator's popular
"Hacker News" Web forum, "https://news.ycombinator.com/", and, when the
not-unusual occasion to mention/show a strength of Racket presents
itself, do so.
I occasionally see Racket mentioned on HN, but not nearly as often as it
legitimately could be.
I may be out of place here as I am a total beginner to programing. In a matter of fact, I just pick up HTDP from Amazon to teach myself programing. Respectfully, IMHO if you want to increase the popularity of Racket. You can’t just place racket as another me too language like python, etc. You must show, what problems does Racket solve or make exponentially easier that makes the risk of spending the time to learn, apply and deploy a racket based software solution to solve real life problems worth it. A good example of what I mean is Yaron Minsky presentation about why Jane Street uses OCaml. Even someone like me, who can’t even program an excel spreadsheet and who has never used a computer for more than social media can understand clearly the reasoning behind Minsky choice of OCaml. Minsky clearly explains the problems that OCaml solves or makes exponentially easier and uses real life examples in his presentation. In short, he answers the WHY!
Why should someone choose Racket to learn programing as opposed to another language such as Python?
What problems do organizations, small business, and start up face that would make the risk of choosing Racket worth it?
What issues are prevalent in the software industry, that using Racket alleviates as compared to another language?
Where are the real world examples of Racket being used to solve problems?
What is a programable programing language and how does it make my life easier as compared to other languages?
What is language oriented programming?
If the racket community has already answered these questions, where would a person go to find out such things?
Etc, Etc, Etc
Respectfully, I would also concentrate on Rackets web presence. If I was to google any of the popular languages, I would find the answer to these questions in spades, with real life applications, and examples. You can also compare Pythons website to Rackets. Pythons website seems to be design more for advertising Python. If I go to the Pythons web page there is a section “use Python for” in it, it has various topics such as web development, GUI development, scientific and numeric, with all the applicable packages needed. If you knew nothing about Python, but where interested in using it for web development, it easy to see where to go, etc. Conversely if I was to google Racket, the answers are not as clear. If you go to the Rackets web page, it not clear what I can use Racket for. I would have to dig deeper into Rackets websites to see if Racket would be a suitable solution to the problem I am trying to solve. Respectfully Rackets website, while nice, seems to place Racket more towards educational/ toy language purposes, while Pythons website seems to place Python more towards industrial real world uses.
I am just a beginner, and I have nothing but a superficial knowledge of Racket, computing, or the software industry. My intention is not to attack or belittle the hard work put into racket by members, so I hope I don’t come off that way. As a beginner, I just wanted to share my perspective in the difficulty in choosing Racket as my first language to learn add my 2 cents to the conversation.
I may be out of place here as I am a total beginner to programing.
Respectfully, I would also concentrate on Rackets web presence. If I was to google any of the popular languages, I would find the answer to these questions in spades, with real life applications, and examples. You can also compare Pythons website to Rackets. Pythons website seems to be design more for advertising Python. If I go to the Pythons web page there is a section “use Python for” in it, it has various topics such as web development, GUI development, scientific and numeric, with all the applicable packages needed. If you knew nothing about Python, but where interested in using it for web development, it easy to see where to go, etc.
Where does Racket belong? I understand Racket community no longer
considers themselves as part of Scheme landscape, but I am unable to
say where I get this impression from. If I am wrong, then the first
thing for anybody willing to contribute to R* success would be to make
their blog being displayed on Scheme Planet (IMHO). If I am right (R*
not Scheme), then this is a pity.
Right now I am willing to write some scripts, with intention to run
them both on Linux and OpenBSD. A kind of stuff that is normally
written in Perl. … This means I will have to have source at my hand, just install *BSD,
compile Gauche, install my scripts, ready to go, before any network is
up I mean.
Does Racket match such a use case? I can compile it from sources
… but I wonder if it will
compile in a very limited, rugged environment - no network connection,
just what was there in base install (with C compiler, of course). I
might try one day, but it seems Gauche has less dependency on outside
packages than R*.
Like, I write a program
and hope it will keep working for the next few years without much work
(other than bug fixing). Thus, language stability is important to
me. Or backwards compatibility. Or at least knowing I can switch to
alternative implementation, should I ever feel such necessity.
As far as I can see it, Racket contributes to fragmentation of Scheme
scene (which is already a "everybody tends for oneself" kind,
There is no clear message if there is way to run in R* a code
developed with other Schemes or vice versa and a very minimalistic
effort to portability in a form of slib library is not going to work
in R*, am I right?
Another niche for which I would like to consider R* is mobile apps
(i.e. for smartphone). But, is it possible to do such thing, actually?
For this, Racket has to be more interoperable. Can it replace Java?
Can it work with Java libraries?
Python has an excellent "batteries included" motto. …
Something which can talk to and make use of existing Python,
Perl, Ruby code? Open up a spreadsheet, read data, feed it to Python
library, write back results. … utilities/system
programming and/or stuff like reading and manipulating data in files,
databases and spreadsheets … And showing some controls for mouse.
Here is the short version.
Rackets website does not sell Racket, it does not answer the WHY, someone should choose racket to solve problems. It’s not clear as to the benefits of using racket, it’s not clear what advantage I get for choosing Racket over something like Python for web development, etc. It seems as if Rackets website is more suited towards someone who already measure the pro and cons of using a lisp like language, an individual who has already consciously made the decision to go with Racket, instead of showcasing the strengths of Racket to the uninitiated. For example, let’s say you had some problem that you needed to solve and you had no idea about Racket or Python, and the only information you can get is from their respective web pages. Which language would you choose and why?
From my understanding, many of you use Racket to get real work done. What is the reason behind your choice? What benefits does using racket have above using a more popular language? Why are these reasons not highlighted on Rackets website? As I said in an above post, I am a just a beginner, I have little to no idea what it means to refractor your code, design patterns, or any of the other jargon used in the software industry. Don’t concentrate on the specifics of my critique, try to look at the overall point I am trying to make…..The Racket website does not sell Racket. Here is another example, many of you work in the software industry. If you where to ask your coworkers what macros are, what would they say? Would they even understand the benefits the macros system in Racket brings? If you ask them about language-oriented programming, what would they say? Would they truly understand what it is, and the benefits it brings? Do your coworkers even understand how special Racket is? Even If the answer is yes to these questions, in addition to what is already there, are some of the things that should also be highlighted on Rackets website.
Let me refine my critique of Racket web presence. We are talking about making Racket more popular, not the functionalities of the Racket language. There is a lot less noise around Racket than other more popular languages. This is an advantage that the Racket community can exploit. Because of the lack of popularity, IMHO the Racket community needs utilize Racket webpage to SELL the use of racket as a possible solution to various problems. For example, let’s look at Python. I choose Python here not to compare Python capabilities to Racket but because it is one of the most popular languages in use today. Imagine if you knew nothing about programing but had problem you needed to solve and you landed on the Python website. Out side of the tabs, you see that “Python is a programming language that lets you work quickly and integrate systems more effectively” Notice, it does not say that python is a scripting language or use some sort of computing jargon to describe Python. It use words that a non-programmer can understand. It simple, and to the point. If you would conduct the same exercise with Racket you see “Racket solves problems-make languages”. To me it reads that Racket solves problems by making languages. This sounds more complex than it needs to be. WHY do I want to complicate my problem by making a language? What I want to do is to solve my problem as efficiently as possible. Making a language seems like an unneeded extra step. Now my view of Racket is tainted by that statement. As I continue to explore the site, I learn that Racket is cross-platform, etc. I also learn that Racket has various packages for web applications, math and statistics, etc. Mind you my view of racket has already been formed, when I click on web applications I am greeted with an tutorial on web applications in Racket. But there is still no answer as to WHY solving problems by making languages would be beneficial in my use case. Compare that to Python website, when you click on Django, by the Web Development tab. You are greeted by “Django makes it easier to build better web apps more quickly and with less code” Which is totally in line with the mission statement above. We also learn that Django is “ridiculously fast, Reassuringly secure, Exceedingly scalable” again Python is answering the WHY, and its Answer is totally aligned with its mission statement. When you go to the racket website and explore it, you are greeted with “Racket is a general -purpose programming language as well as the world’s first ecosystem for language -oriented programming. Make your dream language, or use one of the dozen already available” What does that mean? What is language -oriented programming? How do these things help me solve my problems? The section powerful macros and languages seems to be able to answer some of these questions. When you roll over it, it claims that’s Racket crown jewel is it’s macro system. The problem here, again is that it does not SELL the use of macros. Are these macros similar to what you may find in another language? How does this “crown jewel” help me solve problems? What are the benefits of using macros? In short racket website is not clear as to why I should take more time in exploring Racket. It’s not clear as to why I should use Racket to solve problems. Racket website seems to be geared more to educating those who are familiar with lisp like languages on the use of racket, and not really about selling the use of racket. It does not attempt to educate an outsider on the benefits of using such a language. Rackets website does not answer the WHY behind using Racket.
On Sat, Dec 29, 2018 at 10:31 AM BD1 a <acate...@gmail.com> wrote:
Are you looking for more or different material, or was it not clear to you from the presentation on the website that these examples were what you are looking for? I guess I can see some potential issues for discoverability: you have to click to show any prose, even a heading (rather than just code), and introducing the examples with "Make your dream language, or use one of the dozens already available, including these —" may not make it obvious what kind of examples these are, especially to non-Racketeers, and especially since it's possible to write GUI and web programs in Racket without using a special #lang.
> On Dec 29, 2018, at 21:32, Philip McGrath <phi...@philipmcgrath.com> wrote:
>> Respectfully, I would also concentrate on Rackets web presence. If I was to google any of the popular languages, I would find the answer to these questions in spades, with real life applications, and examples. You can also compare Pythons website to Rackets. Pythons website seems to be design more for advertising Python. If I go to the Pythons web page there is a section “use Python for” in it, it has various topics such as web development, GUI development, scientific and numeric, with all the applicable packages needed. If you knew nothing about Python, but where interested in using it for web development, it easy to see where to go, etc.
> I would be interested to hear more about your experience with Racket's web site, because it tries to include these things, but evidently it did not succeed in communicating them to you. When I go to https://racket-lang.org/ and scroll down about one screen's worth, I see short, runable examples of a few flashy features including web development and GUI applications specifically, with links to tutorials and documentation.
The previous version of the Racket website (before its redesign two years ago) included such things more explicitly, in a format non-Racketters (which is who the homepage is for, after all!) are more likely to comprehend. It included, among other things, a clear purpose statement for the language at the very top of the page, a set of small, to the point code examples that showed off various kinds of general-purpose programming (with explanations), and a set of links to further resources clearly geared towards programmers of different skill levels. To give you a sense for how this website used to be targeted, here’s the aforementioned purpose statement, in its entirety:
> Racket is a full-spectrum programming language. It goes beyond Lisp and Scheme with dialects that support objects, types, laziness, and more. Racket enables programmers to link components written in different dialects, and it empowers programmers to create new, project-specific dialects. Racket's libraries support applications from web servers and databases to GUIs and charts.
>The concepts enumerated in the above statement are linked to the relevant sections in the Guide for those interested in learning more.
The following code snippets showed Racket doing mundane but useful tasks an “ordinary” programmer would likely understand. They included things like simple scripting using the filesystem, a small web server, basic terminal I/O, creating a GUI window, a toy web scraper, and even sending e-mail. Towards the end of this carousel of snippets, some of Racket’s language-oriented programming features start to sneak in — there’s a small Typed Racket program, a document written in Scribble, and even a tiny datalog database — but these are clearly secondary to the main point: Racket is a full-spectrum, general-purpose programming language, and if you already know how to program, it is grounded in things familiar to you.
If you are interested in seeing the old homepage, in all its late aughts design glory, it is preserved with full functionality here:
The redesign of the Racket website shifted the emphasis from Racket as a general-purpose programming language to Racket as a language workbench. There is no doubt that this shift has its advantages — Racket’s support for language-oriented programming is one of its features that sets it apart most significantly from other ecosystems. Unfortunately, I don’t think we’ve gotten far enough to really push #lang as a killer feature to the working programmer yet, so I don’t think the current design does much to convey why the average person should care (especially since it focuses a lot on building languages while the old homepage focused more on using languages). I expressed some of these concerns, among others, when the redesign was first proposed; if you are interested, you can read the discussion here:
This is one of the points I am trying to make. Why is #lang a killer feature? What benefits does it bring? What problem does it solve? These are some of the things that should be on the website. Here is an example, again I am a beginner so don’t concentrate on the specifics, concentrate on the general point. For example
What is language-oriented program and what benefits does it bring?
In addition to using the terms, respectfully racket website should highlight the benefits. Let’s say language-oriented program makes it easier to write more concise, readable, and maintainable code that directly addresses the specific of the target domain. Instead of highlighting language-oriented programing by itself. Something along the lines of Racket help programmers write more concise, readable, and maintainable code that directly addresses the specific of the target domain through rackets support of language-oriented programing. In this example we can see the benefits of using language-oriented programming. It makes code concise, readable, and maintainable. It also directly addresses the specific targeted domain. The description answers the WHY someone should choose Racket over other languages. Now I know my views on language-oriented program maybe off. But the point is the benefits of using Racket should be clearly articulated to those who may not be familiar with what make Racket special.
Now, admittedly, it’s easy to complain, but actions speak louder than words: I have put zero effort into making the website better, while I’m sure MB volunteered several days of his time. The website is open source, and perhaps if I truly cared, I would invest some of my own free time into suggesting (and implementing) concrete changes. I simply have not. I’m sure a pull request would be welcomed, should anyone submit one to clarify some confusion they bumped into. On the other hand, it obviously isn’t the responsibility of those outside of the Racket community to invest time into making Racket’s website better, especially given the effort involved, so it does not surprise me it has been left largely unchanged.
I hope my critique does not come across as complaining. People have put a life time of effort into building Racket up to where it is now and it would be disrespectful to all those who have work tirelessly to build this community. My goal here is try and add solutions to help Racket gain in popularity from the perspective of someone who is a total beginner.