[racket-dev] Racket 6.0.1 make install-both fails: "Racket virtual machine has run out of memory; aborting"

2014-05-15 Thread Neil Van Dyke
FYI, a 6.0.1 install from source failed.  I can't spend any time on it 
right now.


System: 32-bit x86 dual-core, Debian Squeeze, no virtualization, no 
swap, 3 GB RAM total, almost 2 GB RAM free.


$ ./configure --prefix=/usr/local/racket-6.0.1 --enable-both
[[...]]
$ make both
[[...]]
$ sudo make install-both
[[...]]
raco setup: 0 making: /htdp-lib/stepper
Racket virtual machine has run out of memory; aborting
Aborted
make: *** [install-both] Error 134

Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] for loops with interleaved escape continuations

2014-07-01 Thread Neil Van Dyke
If adding break&continue features to your fancy iteration syntax, I 
propose that any uses of these features in source code be somehow very 
prominent.


For example, perhaps there is a keyword that must be at the top of the 
fancy iteration form, something like 
"#:enable-continue-here-because-programmer-cannot-be-bothered-to-write-this-in-idiomatic-racket".


This prominence warns readers of the code to be on the lookout for 
surprise control flow (like they would on the rare occasion that they 
saw a "call/ec" around a loop).  It also hints to newbie programmers 
that they are discouraged from simply transliterating syntax from other 
languages (rather than learning better control flow and structuring 
techniques).


Neil V.

<>_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] for loops with interleaved escape continuations

2014-07-02 Thread Neil Van Dyke
Loop syntax and sugar is fine.  And having "#:continue" and "#:break" 
keywords at the top of the form is sufficient warning of surprises 
ahead, IMHO.


I do have a minor ongoing concern that people coming from other 
languages lately latch onto the "for" family of forms from the start, 
don't get enough exposure to named-"let", and/or mutually/self-recursive 
procedures, and then end up shoehorning problems into the "for" forms 
(with flag variables and redundant checks and such).  "break" and 
"continue" can be good shoehorns.


I still half-seriously like the idea of having unlockable language 
feature achievements, like unlockable equipment in video games.  I might 
play with that idea soon.


Neil V.

<>_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] generic API names considered harmful

2014-07-04 Thread Neil Van Dyke
For documented public API of modules that are part of core Racket, 
shouldn't pretty much all the identifiers be descriptive enough to be 
unique within the scope of core Racket?  (Excepting name conflicts from 
SRFIs and teaching languages?)


I've now noticed generic API names like "make" and "render" in core 
Racket modules written by, I think, 3 different very smart core Racket 
developers.  I don't understand why we're still doing this. Was it for 
use with the units&signatures (which are more trouble than they're 
worth, IMHO)?


For code using these APIs, for readability (since any generic names in a 
module are relative to what that module is about, not the possibly many 
modules that module uses), I end up using "prefix-in" on modules with 
generic API names, which is still harder to read than natural identifiers.


And even if I do the "prefix-in" like "foo-lib:", with a colon on the 
end, "foo-lib:make" is still harder for someone reading the code to look 
up the identifier in Racket doc search, compared looking up a unique API 
identifier like "make-foo" or "foo-make".


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] generic API names considered harmful

2014-07-06 Thread Neil Van Dyke


Roman Klochkov wrote at 07/06/2014 10:15 PM:

What about 3rd party modules?

For example, should 
http://planet.racket-lang.org/package-source/dherman/syntactic-closures.plt/1/0/syntactic-closures.ss provide
syntactic-closures-compile, syntactic-closures-execute and 
syntactic-closures-scheme-syntactic-environment ?


Idiomatic names might be "compile-syntactic-closures", 
"execute-syntactic-closures", etc.  If this library became a very common 
thing to use, familiar to most Racket programmers, maybe someone would 
come up with catchier names eventually (like 
"call-with-current-continuation" became "call/cc").




Collections may be renamed. Eventually collection names will become 
longer, because they have to be unique (like in 
java: org.apache.commons.lang.builder.ToStringBuilder). Besides we 
have modules and prefix-in.


I suspect that, in practice for the foreseeable future, if we use 
non-generic names, we won't have many collisions.  With the level of 
third-party reuse that I and my consulting clients have been doing over 
the last 10 years with Racket, I found that we only rarely use 
"prefix-in".  This is out of over 1,000 Racket modules and over a 
million of lines of Racket code, written by several people of varying 
background and style.


My recollection offhand is that, when we have used "prefix-in", it's for 
improving code readability when:
* using the profiler (due to its use of generic names like "render", 
used in large modules that often dealt with more prominent/likely 
``render'' concepts),
* using the old SSAX/SXML PLaneT packages (due to not-entirely-idiomatic 
API and packaging), and

* using some SRFI implementations (due to name conflicts),
* doing Scheme/Racket dialect language work (to keep straight what 
dialect's identifiers we're talking about in a module).
All other times I can think of, having sensible non-generic names and 
not needing the headache of "prefix-in" has seemed to be a win.


Granted, I have a research interest in much more heavy fine-grain reuse, 
and if that's ever realized, I assume we'll see more identifier 
collisions and more confusing overloading of terms (e.g., the several 
different kinds of "date" objects I've seen in various code).  I 
couldn't say for certain that generic names and "prefix-in" (or some 
other facility) wouldn't start to be practical at that time; I'd have to 
wait and see.  Of course, the programming language technology is not the 
only way that these problems are solved, but can be solved in the 
ecology of development and reuse (e.g., as development and reuse 
sophistication increases, we might actually see fewer different kinds of 
things called "date" than we see now, since one kind might mature more, 
and consequently people might less often have occasion to make an 
alternative one).


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


[racket-dev] new package system collections and conflicts

2014-11-30 Thread Neil Van Dyke
Given the example from the documentation, of the `tic-tac-toe` package 
and "conflicts" (quoted at end of this email), instead, why isn't the 
norm to do:


(require tic-tac-toe)

Or, when necessary:

(require tic-tac-toe/matrix)

Why, when one installs a package named `tic-tac-toe`, would one be 
referencing modules of the package as `data/matrix`?


I don't recall ever seeing a situation in which I wanted different 
third-party Racket packages to be stomping over each other's 
module-naming namespaces.


For people who want to release lots of well-behaved reusable packages, 
using good practices, with minimal effort and head-scratching, things 
like this are a problem.



2 Package Concepts

A package is a set of modules in some number of collections. Modules 
installed using the Racket package manager are required like any other 
modules. For example, if the package tic-tac-toe contains the module 
"matrix.rkt" in a "data" collection, then after tic-tac-toe is installed,


(require data/matrix)

[...]

2.5 Package Conflicts

Two packages are in conflict if they contain the same module. For 
example, if the package tic-tac-toe contains the module file 
"data/matrix.rkt" and the package factory-optimize contains the module 
file "data/matrix.rkt", then tic-tac-toe and factory-optimize are in 
conflict.


A package may also be in conflict with Racket itself, if it contains a 
module file that is part of the base Racket implementation. For 
example, any package that contains "racket/list.rkt" is in conflict 
with Racket.


For the purposes of conflicts, a module is a file that ends in ".rkt", 
".ss", or ".scrbl".


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


[racket-dev] new package system and versions

2014-11-30 Thread Neil Van Dyke
Any chance of revisiting the new package system's stances on versions -- 
specifically, on the two issues:
1. Can subsequent versions of a named package (which has an identity)  
be non-backward-compatible?
2. Can a Racket setup (and even an individual program) have multiple 
versions of a package at the same time?


Regarding #1, the requirement to never make a non-backward-compatible 
version of a package without giving up package identity is a burden, and 
a deterrent to third-party package releases.


For a real-world example, see "http://planet.racket-lang.org/";, where it 
looks like most of the familiar names (who were going to a good amount 
of trouble to release already), managed to release packages marked as 
non-backward-compatible (i.e., PLaneT major version number other than 
1).  Wouldn't requiring them to never break backward compatibility be a 
deterrent to releasing at all? Or, if they still released, would 
`dherman`, following the instructions of Racket to create a new package 
identity for any backward-incompatible version, have given us packages 
`javascript`, `javascript2`, ... `javascript9`, rather than `javascript` 
versions `1.x` through `9.x`.


No-backward-incompatibility might make sense for core Racket (although 
even core Racket has broken this multiple times), but it's a big 
deterrent to researchers, and to industry developers who are willing to 
open source components of their larger systems in lightweight ways.


Regarding #2, I suggest that should be revisited if #1 is revisited.

I think PLaneT got both of these a lot closer to right, at least for 
third-party packages.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-11-30 Thread Neil Van Dyke

Sam Tobin-Hochstadt wrote on 11/30/2014 10:55 AM:

Another example where this happens (and in a way that couldn't be
fixed by combining packages) is with typed versions of libraries. If I
release a package with the collection `foo`, and then someone else
produces a typed version of it, that will probably be named either
`foo/typed` (and thus be in the `foo` namespace) or `typed/foo` (and
thus be in the `typed` namespace).


Personally, I'd much rather have packages respect namespace boundaries, 
and have a simpler model, and let people call that TR library 
`foo-typed` or `typed-foo`.  (Or, TR comes up with a better scheme for 
providing TR and non-TR interfaces to a module, and reduces DRY problems 
in specifying APIs at the same time.)


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-11-30 Thread Neil Van Dyke


Jay McCarthy wrote on 11/30/2014 12:13 PM:
The documentation cited is making clear that there is NO connection 
between the name of a package and the provided modules. There is no 
such thing as a package namespace.


I'd really like there to be.  For third-party packages.



Packages may find it convenient to build and provide reusable 
functionality with many organizational names. This is particularly 
true of "data", as many packages may have useful data structures.


Of course, as such support code becomes very useful and developed, it 
makes sense to sprin it off into its own package.


Are you saying that `data` is some kind of classification of "what this 
module is about", and in this case specifically, "this module, which is 
part of some more specific package, happens to be regarding 
general-purpose data structures, so we're putting it over here in the 
`data` area of a shared namespace hierarchy"?  If so, I don't understand 
why that would be considered a good idea.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-11-30 Thread Neil Van Dyke


Jay McCarthy wrote on 11/30/2014 12:30 PM:
On Sunday, November 30, 2014, Neil Van Dyke <mailto:n...@neilvandyke.org>> wrote:



Jay McCarthy wrote on 11/30/2014 12:13 PM:

The documentation cited is making clear that there is NO
connection between the name of a package and the provided
modules. There is no such thing as a package namespace.


I'd really like there to be.  For third-party packages.


I do not know what a third party package is.


I'm thinking of *non*-core-Racket-developers.  Who have different needs 
than core Racket developers.  It's good that Racket is blurring the 
distinction, but the needs still aren't necessarily the same.  I say 
"third-party" as shorthand familiar to me, but perhaps there's a better 
term.






Packages may find it convenient to build and provide reusable
functionality with many organizational names. This is
particularly true of "data", as many packages may have useful
data structures.

Of course, as such support code becomes very useful and
developed, it makes sense to sprin it off into its own package.


Are you saying that `data` is some kind of classification of "what
this module is about", and in this case specifically, "this
module, which is part of some more specific package, happens to be
regarding general-purpose data structures, so we're putting it
over here in the `data` area of a shared namespace hierarchy"? 



Yes, although this is just for the benefit of search and reading docs; 
it has no technical enforcement.


If so, I don't understand why that would be considered a good idea.


It is a principle to create general purpose reusable code in the 
package ecosystem rather than little archipelagos with lots of private 
code that gets duplicated and has clever names.



I keep wanting to encourage lots-and-lots of packages, and they can be 
packaged and released in a very lightweight yet well-conceived manner.


To go back to your example, if it's a useful general-purpose data 
structures library, then that's another package, which should be very 
easy to do.  If the package author isn't ready to split it out, then 
they're not ready to split it out, so no sense talking about it.  As far 
as I can tell, in no case is this `data` namespace relevant.


Side note: I really don't think ontological classification of package 
topics belongs in package names.  Topical classifications evolve over 
time, and independent of the objects themselves. Classifications belong 
in directories, not in names.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-11-30 Thread Neil Van Dyke


Sam Tobin-Hochstadt wrote on 11/30/2014 12:52 PM:

Are you saying that `data` is some kind of classification of "what this
module is about", and in this case specifically, "this module, which is part
of some more specific package, happens to be regarding general-purpose data
structures, so we're putting it over here in the `data` area of a shared
namespace hierarchy"?

Yes, the idea is that it makes sense for `data/hamt` to come from the
"hamt" package, and for `data/fector` to come from the "fector"
package (this is currently the case on pkgs.racket-lang.org).


  If so, I don't understand why that would be
considered a good idea.

Because the client of these modules shouldn't have to think about
which package they belong in to use them. This gives the package
developer freedom to combine or split packages without requiring code
changes from clients.


I think this might be centralized, core-Racket-developer, thinking. I 
think that some people might be trying to herd decentralized development 
to build what looks then like a tidy, centralized library.


This would also explain why the new package system originally advised to 
use generic names for packages, which I think is not a great match for 
organic, decentralized development.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-12-02 Thread Neil Van Dyke
I think this "what's the matter with conflicts, and an arbitrary package 
putting things wherever it wants, and not having a notion of 
non-backward-compatibility" is similar to "what's the matter with using 
eval for everything" or "what's the matter with defmacro" or "what's the 
big deal about having subroutines in a language".


The questioner's position works for them, some other person thinks it's 
a very bad idea, and you can trot out hypothetical scenarios and 
anecdotes, but -- since it can be argued to reduce to pragmatic 
tradeoffs involving unknowns -- you can't (at least I can't) persuade 
someone who thinks they know better.


How about we just say that the module system was originally designed as 
something that core Racket developers would like to use, having a low 
friction to moving an individual core developer's side projects into the 
tidy-looking core, or to doing other kinds of shifting they would like 
to do in core Racket?  Without an acknowledgement that not all 
third-party package developers will be working like that, nor that 
everyone wants to make the substantial compromises to facilitate that 
low friction.


For third-party developers like me, I can layer something to work around 
some of the drawbacks, and, pragmatically, that's what I'll have to do.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] Line editing in the default REPL

2014-12-02 Thread Neil Van Dyke


Eli Barzilay wrote on 12/02/2014 09:31 PM:

On Tue, Nov 25, 2014 at 1:29 PM, Leif Andersen  wrote:

Just to clarify a bit, we were more thinking of extending the default
repl to have line editing features, rather then making xrepl the
default,

If you're talking about implementing line editing yourself, then my
personal reaction to that would be "wonderful", but doing it properly is
something that is difficult and easy to underestimate


I agree fully with Eli.

Also, separate from practical benefit of having basic `readline`-like 
line editing in pure Racket, you could go gratuitously coolness factor 
on this.  For example, I don't think I've seen a non-full-screen 
character-terminal REPL do syntax coloring, matching paren highlighting, 
and full up/down cursor navigation within a single REPL input.  That's 
labor-of-love coolness, and all who behold it will respect your name.


("http://www.neilvandyke.org/racket-charterm/"; would help with some 
primitives and device portability, but you'd still have to layer a lot 
of work atop that.  Offhand, the most nonobvious tricky part I can think 
of is not getting program confused about where text and your cursor are 
on the screen.  Different terminals will have different behavior when 
cursor is in the last column, or cursor is in the last row and column, 
or you're inserting/deleting characters or lines (which some terminals 
will support differently, and others not at all).  You also have to 
decide how you want to handle the user experience of some kind of Ctrl-L 
redraw, since terminal screens get corrupted often by text written by 
other processes, Ctrl-L also helps mitigate terminal quirks you don't 
yet handle, and terminal-savvy people will expect a Ctrl-L.  It's 
possible to make a self-healing character terminal display, on those 
terminals that permit reading screen addresses and that have sufficient 
idle bandwidth, but I haven't heard of anyone doing that yet, and 
everyone just has a Ctrl-L.)


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] new package system collections and conflicts

2014-12-03 Thread Neil Van Dyke

I don't think I need charity.

I thought the vision for the new package system had already been 
explained adequately.  I would be very interested to learn how the model 
is well-suited to third-party developers like me.


But -- I mean this constructively -- I'd be happy if someone simply came 
out and said "this model is great for core developers, we still have to 
figure out everyone else, and maybe the model isn't great for everyone 
else".  The reason is that I've looked at the new package system 
seriously 5-6 times since it was announced, and I keep being told that 
the model is intended for non-core people like me, and that someone else 
knows my needs better than me.  Open source reuse was an especial area 
of interest to me, the package system is very important, and I've given 
the benefit of the doubt 5-6 times now.  (This has actually stalled most 
of my public Racket work, one way or another, for about 2 years.)


I'm not harshing on Racket; just on how the new package system was 
sprung on non-core people, and the narrative.  It doesn't look typical 
of Racket.  Racket is usually in the position that it could say "we have 
a better idea" (on, e.g., module system sophistication, various syntax 
extension mechanisms and mixed languages support, various aspects of 
DrRacket, the related pedagogic projects, etc.), and usually that 
doesn't have to be said, because the superiority of Racket is 
immediately apparent.  That's why I've been a Racketeer for 13 years and 
counting.


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] having zo files from two versions

2015-01-06 Thread Neil Van Dyke

Dan Liebgold wrote on 01/06/2015 02:00 PM:
What is a straightforward way to designate the "compiled" directory to 
look for zo files in that can be based on the Racket version?  I'd 
like to have Racket 5.2.1 and 6.1 running in parallel to aid in 
upgrading our version.

Thanks!


I'd like for this to be the default behavior for Racket.

One possible way: Insert a directory level between the `compiled` 
directory and its contents, with the directory named with the Racket 
version number with which the code is compiled.  Only that Racket 
version will run that compiled code.


(When I've been using Racket version A to run a code tree, and then use 
Racket version B with the same code tree, I don't mind waiting for a 
recompile of the code tree, and I'd really prefer it not disturb the 
code compiled with Racket version A.  I also don't mind cluttering disk 
space with compiled code for Racket versions that I no longer use; I can 
always make a script to clean those up.)


Neil V.

_
 Racket Developers list:
 http://lists.racket-lang.org/dev


Re: [racket-dev] Feature suggestion

2010-06-04 Thread Neil Van Dyke
Perhaps also worth considering for inspiration is "elsoc", a useful hack 
that Emacs has had for arguments quick-reference.


"eldoc" does a transient display of the args to the innermost 
function/form that point is in.  This display appears in the ``echo 
area'' of the frame (roughly, status bar at the bottom of the window), 
so you can glance at it, but it doesn't get in your face while you're 
looking at the code and typing.


http://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Doc.html
http://www.emacswiki.org/emacs/ElDoc

I'm sure that DrRacket would do it not as a hack like "eldoc", but 
instead use some info that Check Syntax has. :)


Neil V.

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] comment boxes

2010-06-29 Thread Neil Van Dyke
I've been kinda hoping that someday the "binary" format is turned into a 
plain text format that's usable in any editor or other tool.


For example, DrRacket comment boxes could be stored as normal Scheme 
comments with a cookie token in the comment that is a hint to DrRacket 
to treat it as a comment box when loading.  (There could be a simple 
convention within this comment block for escaping 
non-comment-terminators that look like terminators.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] comment boxes

2010-06-29 Thread Neil Van Dyke

Eli Barzilay wrote at 06/29/2010 04:46 PM:

2. Gnats *does* know how to deal with attachements.  The problem is
   that our cgi library cannot handle a multipart/form-data encoding.
   (If you convince the author to add support for that, I'll do the
   rest and add a file attachement option to the web form, and
   changing drracket to send a file is probably easy too.)


I implemented "multipart/form-data" reading a couple years ago as part 
of robust CGI support for a proprietary application.


As I recall, the HTTP "post" MIME-reading code is only a little bit 
application-specific.  (It writes file attachments directly to disk, and 
adds metadata about the attachments to the form field alist in a certain 
application-specific (constraining) way.  It might also do some stuff 
with character encodings that are not strictly backwards-compatible with 
Racket's "cgi" library.)


If anyone has time and interest in adapting this HTTP "post" 
MIME-reading code to improve core Racket, I suspect that the copyright 
owner would be willing and able to contribute it.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] self-documenting feature

2010-07-19 Thread Neil Van Dyke

Robby Findler wrote at 07/19/2010 12:31 PM:

Sure, but if we have the manpower/energy for this, then it would be nice to 
have, no?
  


I've been wanting something docstring- or javadoc-like for Scheme and 
Racket since forever.


I have had my own kludges for this since forever, but neither myself nor 
anyone has had time to do it right.


If someone does this right, and it's pleasant to use, I will happily 
convert all my code over to it and shoot my old kludges in the head.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] haskell's 'hell of a lot of libraries', planet

2010-07-28 Thread Neil Van Dyke

To add to what Dave said, quick brain dump, hopefully not too unreadable...

Most important for me, I'd like to be able to define multiple (what I'll 
call for now) repositories (like Debian "apt").  So that I can have, for 
example, a repository for core official blessed Racket components, one 
for contributed (what's currently PLaneT), and one for packages internal 
to an organization or project.  (Note that Debian has a mess of features 
for managing using multiple repositories, which most people don't know 
about, and which aren't necessarily reliable because not all tools 
respect the policy and some of the policy is kludgey anyway.)


Then, somehow I would like to prevent packages in the contributed 
repository from overriding those in the core and internal repositories.  
Guaranteeing this through naming, like Java packages, is one way, though 
that could be cumbersome.


It would be nice to be able to set policy in one place, for what 
packages and versions may be pulled from the non-internal repositories 
for a particular large system.  For example, since there are 
cost/benefit tradeoffs, to each third-party package we use, including 
security and quality, a project team might want to declare "this project 
may only use package foo version 1.3 and package bar versions 2.1-2.3 
from the contributed repository, and no others at this time".  (I have 
started to partly approximate this in one large system by having an 
intermediary "planet-*.ss" for each permitted require from PLaneT, but 
that alone does not prevent programmers from adding requires directly 
from PLaneT.)


Package signing to authenticate the packager still seems useful, like it 
did in the beginning, but that could be revisited in context of whatever 
other improvements are made.


When pulling from the contrib repository, we sometimes also need some 
confidence that version 1.3 today is the same code as when we vetted 
version 1.3 six months ago.  Maybe that's satisfied by us pulling from a 
transparent copy we made at the time (and not accidentally pulling from 
the repository).  Or maybe we copy the code and permanently disentangle 
it from PLaneT, which is expensive and stodgy.  Or maybe we trust the 
PLaneT server and our link to it not to be compromised, which we can for 
some applications but certainly not for all.  Or something else.


Separately, breaking up the monolithic Racket distribution into 
PLaneT-ish packages has some appeal to me, though it is not as important 
to me as the things above.  This appeal is partly pragmatic, such as an 
assumption that the factoring into modules will have a side effect of 
fitting Racket onto smaller storage, and the (rare, in my case) desire 
to pull some released improvement into a production system that is 
mostly frozen at an earlier Racket version.  The other part of appeal, 
at least to me, is aesthetic, in the same way that a self-hosting 
language implementation is considered elegant, and we might expect 
practical benefits to someday fall out of that (or perhaps they don't).  
If numerous PLaneT requests were actually used for the normal way of 
installing core, however, either all-at-once or on-demand, that could 
result in a poorer install-time or run-time experience than currently.  
So I think a monolithic tarball/zip/etc/dmg/etc would still be a good 
idea, even if internally it's broken up into packages.


If breaking up core into packages, and still offering a monolithic 
distribution tarball, whatever policy affordances the implementation of 
that monolithic packaging adds to PLaneT caches might also be applicable 
to purposes mentioned above, like selectively using a few contrib 
packages and being confident they don't change.


I'm guessing that most of this is relevant only to people doing large 
development, and who are engineering-inclined and looking to safe effort 
and stress.  However, one does not necessarily need these things to do 
large development successfully in Racket and using contributed PLaneT 
packages.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] haskell's 'hell of a lot of libraries', planet

2010-07-28 Thread Neil Van Dyke
BTW, I said "repositories", roughly like they are used in Debian, for 
convenience of quick braindump, but this conflates several distinct 
concepts you might wish to have.


For example, you might want to have "authorities" (like "racket-core", 
individual roles of person/organization authors of contrib packages, 
one's own organization, etc.) that are the basis for identifying and 
authenticating packages, and then "repositories" are simply untrusted 
copies of packages in any of a number of places that bits may be 
represented.  Then, in this particular example, you have to make this 
setup, which I think implies some kind of signing, noncumbersome for 
programmers wishing to use or share packages.


I do not envy the person who undertakes some of the design problems 
involved in extending PLaneT to even greater heights. :)


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] P4P: A Syntax Proposal

2010-07-28 Thread Neil Van Dyke
Is the audience HtDP students/teachers, professional programmers, 
hobbyists, someone else, or all of the above?


And, if the audience includes HtDP students/teachers, would all the HtDP 
examples be revised to use P4P?  Or would P4P be something to point to, 
like, "Hey, students have to use the academic parentheses in the student 
languages, but Racket is not just an academic (i.e., parentheses) 
language once students graduate."


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] P4P: A Syntax Proposal

2010-07-28 Thread Neil Van Dyke

Jos Koot wrote at 07/28/2010 04:00 PM:

With a good editor, like that of DrSceme, pardon me, RdRacket, I experience no 
difficulty at all with parentheses.


As I believe Shriram said, the problem is the *perceptions* of people 
who think that parens are bad, not whether parens are actually bad.


For decades, Lisp people have been saying "Try parens!  You'll like 'em 
once you try 'em!" but that argument has not been as persuasive as we 
might've hoped in getting people to try.


Regarding P4P, I have no real opinion on whether offering people a 
parens-free syntax is a good idea, so long as people who wish to use 
parens are not somehow marginalized somewhere along the line.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] P4P: A Syntax Proposal

2010-07-28 Thread Neil Van Dyke

Everett wrote at 07/28/2010 06:06 PM:
  (map (lambda (x) ...) 
   lst)

is more readable in the Ruby form:
  map(lst) {|x| ... }
or even in Javascript with Prototype:
  lst.each(function(x) {
...
  });
  


I'll respectfully differ with that last assertion.

In my JavaScript experience the last couple years (with plain, jQuery, 
Dojo, and AIR), subjectively speaking, that boilerplate syntax quickly 
gets unreadable once you start nesting syntax nontrivially.  And nesting 
is commonplace when you're doing normal real-world AJAX-y things like 
finding a DOM element to attach a callback that does asynchronous 
XmlHttpRequest that has a completion callback that checks some status 
and conditionally iterates over some DOM query to apply some 
transformation...  Even without Scheme syntax extension to simplify 
things, the simple economizing of typing "" instead of "});});" 
would help, IMHO.


Here's a real-world example that I blogged earlier this year: I had just 
then typed the line of code "annosJson);});}});}".  (That break in the 
pattern is intended.)  Actually, I had typed that with JavaScript 
idiomatic line breaks and indentation before, and I felt it was even 
harder to get right and read with the line breaks.  In Scheme, I 
would've just hit ")" until paren-matching showed that I'd closed the 
syntax to the desired level.  And then the conventional Lisp-y 
indentation and/or paren highlighting would've made the code more 
'visual' than the JavaScript.  Again, IMHO.


Regarding the IMHOs, someone roll out the gaze trackers and brain MRIs 
already. :)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] P4P: A Syntax Proposal

2010-07-29 Thread Neil Van Dyke
These most recent examples with "let:", "let*:", and "letrec:" highlight 
that users of P4P still need to know about Racket semantic distinctions 
that other languages don't provide the programmer. (Instead, they might 
have a more familiar "var" or "def", for example.)


So I bet that Racket code in P4P is still looking obtuse to many of the 
same people who refuse to try sexp syntax.


(I'm not discouraging this P4P line of inquiry, and I'm curious to see 
where it goes.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] P4P: A Syntax Proposal

2010-07-29 Thread Neil Van Dyke

Shriram, you can disregard my point.

I didn't do a good job of making the small point I intended: if one of 
the goals is to remove the kneejerk objection to sexp paren syntax 
(which I think is a familiarity thing), even after dispensing with sexp 
parens, you still have the things like the 
whoa-another-punctuation-character-what-does-it-mean "let*:", etc. 
making code look unfamiliar.


But I see that you've already stated that as not being within your 
problem scope, and/or you also have the mitigating internal "defvar", so 
you can disregard my point.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] can racket-lang.org survive a slashdotting?

2010-08-01 Thread Neil Van Dyke
Can the racket-lang.org Web server(s) handle a huge spike in traffic, 
such as if it got on the front page of reddit.com?


schemecookbook.org somehow got onto the front page of reddit.com 
briefly, which seems to have killed schemecookbook.org.  This is no big 
loss, since I think schemecookbook.org gives a bad impression even when 
it's working.  However, I'd hate for racket-lang.org to get its 
potential 15 minutes of fame, but burn out before sifting a new batch of 
users out of the gazillion casual browsers.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] a pretty funny home page

2010-08-14 Thread Neil Van Dyke
At some big get-together of Racket developers and users, there should be 
a group photo, with everyone wearing black duster jackets and serious 
expressions.  Then label it with a logo: "League of Extraordinary 
Racketeers"


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] status of the new `racket/gui'

2010-08-16 Thread Neil Van Dyke
Matthew also made this work with the older GTK-related libraries on 
Debian Stable.  So if you tried before and were thwarted, it works now.  
(Thanks, Matthew.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Added Sierpinski example to wikipedia page

2010-08-16 Thread Neil Van Dyke
Could someone official please fix the introduction of that Wikipedia 
page when they get a chance?  The text seems to have suffered some bit rot.


http://en.wikipedia.org/wiki/Racket_(programming_language)

Racket (formerly called PLT Scheme) is a programming language based on 
Scheme, produced by PLT. It consists of four primary components:


* Racket is the lightweight, embeddable, scripting-friendly PLT 
Scheme runtime system and JIT compiler.

* DrRacket is the PLT Scheme program development environment.
* TeachScheme! is a PLT project to turn Computing and Programming 
into an indispensable part of the liberal arts curriculum.
* PLaneT is PLT's centralized package distribution system. Visit 
for a list of user-contributed packages.


(Is Racket a programming language and/or something else and/or a second 
something else?  Are those bulleted items really components of the 
Racket programming language?  Why does the text keep referencing PLT 
Scheme instead of the Racket programming language?  What is PLT?  As we 
get into the bullets, we see that something called Racket is a component 
of the Racket programming language, without acknowledgment of the 
overloading?  Etc.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Language selection considered harmful

2010-08-26 Thread Neil Van Dyke
Rename "Use the language declared in the source" option to "Declared" 
(if first-week CS students don't confuse that with "declarative language")?


"Automatic" or "Detected" sound a little bit grandiose, but aren't too 
bad either.


Ideally, only students ever have to change this setting, or even be told 
about it.


Also, if nobody uses the legacy language options, removing those would 
remove some confusion.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] stepper UI question

2010-08-27 Thread Neil Van Dyke

John Clements wrote at 08/27/2010 05:38 PM:

On Aug 26, 2010, at 11:09 PM, Ryan Culpepper wrote:
  

Another, less invasive, way of making the stepper-definition connection might 
be on every step to scroll the definitions window and highlight the term from 
which the redex is derived. For function application the function definition 
could be highlighted too in a different color. The highlighting would require 
some creativity for forms like cond (maybe de-highlight clauses as they're 
eliminated?), but it would be a more incremental approach than forcing the 
stepper UI into the definitions window.



This might be awesome, or it might be confusing; I can imagine students seeing 
the definitions window jumping around and at a minimum being distracted, or 
even think that the definitions were changing. I guess I'd want to see it, 
first.


If anyone wants to try out a simple stepper for Lisp-ish code that 
scrolls your window to highlight the current expression in your actual 
source files, your Emacs has EDebug:


http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/edebug.html

It actually only highlights if you have some kind of matching-paren 
highlighting enabled; otherwise it just puts the cursor on the first 
character of the expression.  My favorite for matching paren 
highlighting in Emacs is to have this in my "~/.emacs", and to elsewhere 
configure my cursor to be a full-size solid unblinking red background:


(setq show-paren-style 'parenthesis)
(require 'paren)
(show-paren-mode t)

In Emacs, experienced users are already accustomed to the current window 
switching which file/buffer it's showing, so EDebug just does that when 
moving between files.  I don't know whether that's appropriate for DrRacket.


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] stepper UI question

2010-08-27 Thread Neil Van Dyke

John Clements wrote at 08/27/2010 06:29 PM:

My earlier comment isn't suggesting that this isn't useful; it's asking whether 
doing this *simultaneously* with a separate display that's using substitution 
to evaluate an expression would cause cognitive overload.


If none of the languages people has a flash of inspiration, how about 
finding an HCI or visualization specialist in one of the universities, 
and enlisting them as a collaborator?


(I'd bet that these multiple views could be made intuitive, if 
approached as an interactive graphical visualization design problem.  
Maybe they can get a publication out of the approach alone.  Whether an 
alternative approach using only some arrangement of existing GUI widgets 
could be made accessible enough to students, I could not guess offhand.  
Were I not saturated with Racket consulting work at the moment, I'd love 
to tackle this HCI/viz problem myself.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket documentation

2010-09-22 Thread Neil Van Dyke

Eli Barzilay wrote at 09/22/2010 01:18 AM:

The punchline is that your desire to use a local copy is in direct 
contradiction with the desire to get community involvement in improving the 
docs. No matter what facility is available for the community to discuss and 
supplement the docs -- if you have to go out of your way to see it, then you 
(the collective) just won't do it (statistically speaking).
  


I think that you can make online docs sufficiently immediate value-added 
that people are drawn to use those.


This can be done without compromising local-copy docs.  If you did the 
online right, everyone knows that they get immediate benefit from the 
value-add of the online docs, so they must have a good reason when they 
use local copy.


For a simple example of docs similar to Racket's can be online and 
participatory to some degree, see PostgreSQL's.  They have their 
well-structured and well-edited manuals, and online you can browse a 
version with old-school community annotations at the bottom of each 
page.  I've found some of the annotations very helpful, and I'd hope 
that they feed future versions of the well-edited manuals.


You could also go more of a Wikipedia route.  But you don't have a 
million contributors, and you will be spending lots of effort on quality 
control, and with a relatively small contributor pool you have to be 
more cautious about alienating people when a contribution really needs 
to be excised.


Whatever you do, I hope that the goodness of well-edited local-copy docs 
is not compromised.


Also keep in mind that some of us think that, when working on library 
code or documentation, the interface should present both code and doc 
easily.  Usually, with dumb tools, that means JavaDoc-like embedded 
documentation.  I have a goal to make Racket support this better in the 
future, and I hope that any new online docs thing won't get in the way, 
and that I can be compatible with that.


The best that you'd get is yet another scheme cookbook 


I think that some of the problems that the Scheme Cookbook encountered 
are relevant to Racket.


One is that a few characters of Perl operators from some Perl Cookbook 
item, in the Scheme Cookbook could become a huge page full of different 
verbose, cryptic, and so-so quality attempts to do a comparable thing in 
Scheme.  (Which, in hindsight, should not have been surprising, when 
Schemers are involved.)  I finally decided that most of the cookbook 
entries would ideally mostly be pointers to reusable code libraries 
(*not* copy&paste&munge), which led to me to silly extremes like: 
http://www.neilvandyke.org/tabexpand-scheme/


There were also various quality control problems for various reasons.  I 
got disenchanted after realizing that messes were being created faster 
than good content, and that it would've been much easier for me to do 
something correctly from scratch than find a politic way to fix an 
existing entry or wrestle with the wiki software to reverse some bizarre 
structure change some user had done.  (This is actually much like 
software development in general.)


A problem that the Racket online docs *won't* necessarily have is that 
of scope: as I recall, the Scheme Cookbook was originally mostly 
PLT-specific, and some dork (me) advocated strongly that the Cookbook 
cover other Scheme implementations (e.g., R5RS whenever possible, then 
separate out the various implementation-specifics within an entry).  
This turned out to be additional mess and bulk.  Racket will still have 
to decide what to do about version differences, but any mess will be a 
lot smaller and simpler to organize.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket documentation

2010-09-22 Thread Neil Van Dyke

And also, the wiki software kinda blew in many ways.

One of the biggest ways was a small thing with, I think, big 
implications: the software would by default add an attribution line for 
each edit, encouraging people to view the page as a dumbed-down Web 
commenting forum to append a comment to, rather than as a coherent 
document to refine holistically.


Also, depersonalization can be good: when there are no authorship names 
at all on a page, some people will have less resistance to making 
improvements.  This also removes some of the incentive to contribute for 
some people, which can cost the document some good contributions but 
also scare off some low-quality contributions (see, as cautionary tale: 
Java sites).  I think that removing incentive alone is not a net loss, 
and that depersonalization overall is a big net win.


Neil Van Dyke wrote at 09/22/2010 03:53 AM:

Eli Barzilay wrote at 09/22/2010 01:18 AM:
The punchline is that your desire to use a local copy is in direct 
contradiction with the desire to get community involvement in 
improving the docs. No matter what facility is available for the 
community to discuss and supplement the docs -- if you have to go out 
of your way to see it, then you (the collective) just won't do it 
(statistically speaking).
  


I think that you can make online docs sufficiently immediate 
value-added that people are drawn to use those.


This can be done without compromising local-copy docs.  If you did the 
online right, everyone knows that they get immediate benefit from the 
value-add of the online docs, so they must have a good reason when 
they use local copy.


For a simple example of docs similar to Racket's can be online and 
participatory to some degree, see PostgreSQL's.  They have their 
well-structured and well-edited manuals, and online you can browse a 
version with old-school community annotations at the bottom of each 
page.  I've found some of the annotations very helpful, and I'd hope 
that they feed future versions of the well-edited manuals.


You could also go more of a Wikipedia route.  But you don't have a 
million contributors, and you will be spending lots of effort on 
quality control, and with a relatively small contributor pool you have 
to be more cautious about alienating people when a contribution really 
needs to be excised.


Whatever you do, I hope that the goodness of well-edited local-copy 
docs is not compromised.


Also keep in mind that some of us think that, when working on library 
code or documentation, the interface should present both code and doc 
easily.  Usually, with dumb tools, that means JavaDoc-like embedded 
documentation.  I have a goal to make Racket support this better in 
the future, and I hope that any new online docs thing won't get in the 
way, and that I can be compatible with that.


The best that you'd get is yet another scheme cookbook 


I think that some of the problems that the Scheme Cookbook encountered 
are relevant to Racket.


One is that a few characters of Perl operators from some Perl Cookbook 
item, in the Scheme Cookbook could become a huge page full of 
different verbose, cryptic, and so-so quality attempts to do a 
comparable thing in Scheme.  (Which, in hindsight, should not have 
been surprising, when Schemers are involved.)  I finally decided that 
most of the cookbook entries would ideally mostly be pointers to 
reusable code libraries (*not* copy&paste&munge), which led to me to 
silly extremes like: http://www.neilvandyke.org/tabexpand-scheme/


There were also various quality control problems for various reasons.  
I got disenchanted after realizing that messes were being created 
faster than good content, and that it would've been much easier for me 
to do something correctly from scratch than find a politic way to fix 
an existing entry or wrestle with the wiki software to reverse some 
bizarre structure change some user had done.  (This is actually much 
like software development in general.)


A problem that the Racket online docs *won't* necessarily have is that 
of scope: as I recall, the Scheme Cookbook was originally mostly 
PLT-specific, and some dork (me) advocated strongly that the Cookbook 
cover other Scheme implementations (e.g., R5RS whenever possible, then 
separate out the various implementation-specifics within an entry).  
This turned out to be additional mess and bulk.  Racket will still 
have to decide what to do about version differences, but any mess will 
be a lot smaller and simpler to organize.



--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket documentation

2010-09-22 Thread Neil Van Dyke

Eli Barzilay wrote at 09/22/2010 04:30 PM:

On Sep 22, Neil Van Dyke wrote:
  

I think that you can make online docs sufficiently immediate value-added that 
people are drawn to use those.



I don't believe that this will ever be effective enough.  We have a large 
number of newcomers (because it's being used in courses there's a constant 
stream of new students who later move on), and these people will never see it.

Can't the the online version can't be the default?

Just don't somehow break the local-copy for the people who want it, is 
all I'm asking.


It's OK if the local-copy docs require some savvy to get to.

(Also, when used in developing nations and such, online might not be an 
option.)


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Racket documentation

2010-09-25 Thread Neil Van Dyke
There is a privacy/security problem to address: as described, this is 
phoning home to the mothership, and effectively tracking each user's 
browsing and searching behavior within the manuals, page-by-page, even 
though they are using local copies.


The tracking situation on the public Web is crazier than even most 
techies realize, but not many companies put tracking capability into 
things like local copies of the documentation.  Just on principle, I 
think you wouldn't want Racket to be lowering the bar further, so I 
think you'd have to address the concern.


Everett Morse wrote at 09/25/2010 12:04 PM:
User-contributed comments should be annotations to the documentation.  They could then be fetched using JS (Ajax) from the local copy when an internet connection is available, 


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket documentation

2010-09-25 Thread Neil Van Dyke

Eli Barzilay wrote at 09/25/2010 01:41 PM:

Another possibly useful option is to use the local docs and fall back on the 
remote if they're not installed.  This might be a better default -- allowing 
people to install the local copy and forget about the on-line thing.
  


We don't have to forget about the on-line thing entirely.  Even right 
now, I'd like each page of my local copy of the docs to have a link to 
the corresponding online page, so that I can continue using my fast 
local docs but at any time easily give a URL to people.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] safe version of racket/unsafe/ops?

2010-09-27 Thread Neil Van Dyke

Jay McCarthy wrote at 09/27/2010 06:23 PM:

In principle I think it is a good idea, though I expect me and others will 
quibble over any name you pick.
  


This one is easy to name, for anyone who watched SNL a generation ago:

#lang racket/unsafe...NOT!!!

--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Possible build platform for ARM

2010-10-07 Thread Neil Van Dyke
I've found "qemu" to be a godsend for systems work, though very slow 
compared to real metal, unless you're using virtualization extensions 
like KVM.  I don't know how ARM "qemu" hosted on fast non-ARM hardware 
compares to native on typical ARM hardware, but I'm not too optimistic 
about that until someone has numbers.


For testing, I think you need not just the target processor but also 
various OS and chipset/firmware stuff.  And you still need to test on 
the real target device at least some of the time, since there are 
probably quirks, from which the OS might not insulate you.


If you really want to use the Racket collections builds as part of the 
testing process of Racket, maybe do your frequent Racket builds on big 
ARM boards or using an emulator on huge hardware, and only occasionally 
check it against a day-long build running on the real target device.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] #true and #false

2010-10-10 Thread Neil Van Dyke

Matthew Flatt wrote at 10/10/2010 09:39 AM:

Any other opinions?
  


No strong opinion, but misc. comments:

* When working data in sexps a lot, "#f" taking a lot less space than 
"#false" can make things a lot more readable.  Imagine, for example, a 
vector of 20 small integers and false values intermixed.


* "#f" is often used to represent something like ``none'' or ``null'' 
rather than ``false'', so spelling it out as "#false" will take some 
readjustment for some people.


* "#true" and "#false" do have the advantage of appearing more like a 
conventional friendly language.


* Regarding friendly languages "#true" and "#false" have the unfriendly 
"#" (ugly, visually dominating, harder to type, longer).  Some 
conventional programmers will prefer "#f" because, although not as 
friendly as "false", it's more terse.


* It's nice that "#t" and "#f" are the same length, for lining things 
up, such as in matrices.


* "#t" and "#f" can be hard to distinguish from each other visually.  
Look at a vector of mixed "#t" and "#f" values, for example.


* "#t" and "#f" should always be synonymous with "#true" and "#false", 
for compatibility with other Racket and Scheme code.


* There should be a print parameter to force printing as "#t" and "#f", 
for interoperation with Schemes.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] #true and #false

2010-10-10 Thread Neil Van Dyke

Jay McCarthy wrote at 10/10/2010 10:58 AM:

So overall I think that #true and #false are good there [in teaching languages] 
and I don't see any problem with them being available elsewhere... just not the 
default.


FWIW, I would occasionally like to spell out "#true" and "#false" in my 
code.  Mainly when giving a Boolean value, rather than "#f" as a 
``none'' value; and in something non-cramped, like a default for a 
variable, rather than each value in a matrix.  But for the majority of 
uses I would prefer to write "#f" in my code, and to also see that as 
the printed representation most of the time.


If "#true" and "#false" were just alternative read syntax for "#t" and 
"#f", and they always printed as "#t" and "#f" (except perhaps in 
teaching languages), that would make me happiest.


I think it's not too bad if a new programmer types "#true" in their code 
and later sees the value printed as "#t".  They'll figure it out within 
2 seconds the first time.  (It's a lot more intuitive than how the 
printing of a pair changes when its CDR is another pair or a null.)


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] fuzz testing the bytecode reader

2010-10-19 Thread Neil Van Dyke

Carl Eastlund wrote at 10/19/2010 04:51 PM:

Caveat Emptor: be wary of running code designed to produce random, unsafe 
results if the computer you are running it on has any data you really care 
about.


KVM+QEMU virtual machines are good for dangerous fuzz testing.

You can chain copy-on-write (COW) drives to make setting up and running 
the tests in clean, safe environments easy and (in some ways) fast:


Example, just to give to give the flavor to people who haven't used QEMU 
and KVM before:


* One "unchanging" COW drive with your Linux install and other things 
that don't change often.  This drive is represented as a normal file on 
any host Linux filesystem.


* When you want to test a build, make a "build" COW drive linked to the 
"unchanging" drive.  Start a VM and do your build on that drive.


* For every test or set of tests for which you want a clean, safe 
environment, make a COW drive linked to "build" and use that for the 
tests.  (You might use a RAM disk for this last layer of COW, to avoid 
real disk writes.)


Note that, if you're using lots of fresh VMs for tests, rather than 
doing your test suite in one VM, you do have to wait for each VM to boot 
Linux.  But if you have multiple cores, you can be running VMs in 
parallel, or just starting them up in parallel.


All these things can be done from simple command-line tools or library 
calls.


Whatever you do, avoid XenServer.  XenServer is a favorite of 
pointy-haired "enterprise" IT managers who want to say the 
"virtualization" buzzword and have a cheaper way to let people run MS 
Word, but KVM is so much easier to work with.  Also, in kernel 
evolution, KVM is preferred over Xen.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] highlighting function position with an underline.

2010-10-26 Thread Neil Van Dyke

John Clements wrote at 10/26/2010 02:33 AM:

Who thinks it would be helpful, though, if Check Syntax were to, say, underline 
the function position?


Not for the non-beginner languages, please.


After thinking about it for a while, I'm currently of the opinion that one 
serious shortcoming of our syntax is that we fail to distinguish the function 
position from that of the arguments, something that the traditional f(x) 
notation does pretty clearly.
  


FWIW, when I was first learning non-Scheme Lisps, I visualized the 
function name as part of the parentheses pair.  So, this is atomic 
syntax for the application of function "myfunc":


   (myfunc  )

With some background between the parens, and elastic to accommodate 
arguments, and with the name permanently fixed as part of the left 
paren.  Perhaps the "(myfunc" and its ")" are die-cast metal tags on the 
ends of a piece of elastic or on parts of a slide rule, though I never 
thought of it quite that concretely.  To reinforce: the ")" are like 
little handles on the very ends that you can pull and push, and they 
mark the very ends, too.


When I moved to Scheme, I gave up this fairly physical notion of the 
syntax, since clearly it would discourage me from thinking about 
procedures as first-class objects, which Scheme seemed to consider 
important.


However, if new students are somehow confused by this syntax, and you 
want to teach the noble lie that procedures always have names, and 
therefore that students could use the more physical/visual notion of the 
syntax that always has parentheses... I suggest that the first thing to 
do is to make the color of the parentheses pair match the color of the 
procedure name.


Hand-wavey cog-sci: By making parens a different color, as DrRacket 
does, they are more a different thing than the procedure name things, 
and then we have to think more about their semantic and spatial 
relationships with other things.


Optionally, in addition to making parens use the same color as their 
procedures, you could then use hue or brightness or something to 
indicate nesting depth or syntactic form identity, always keeping the 
parens matching their procedure.  (You have to explain what the color 
differences mean, then, and worry about whether they interrupt reading 
flow too much or complicate looking at more than one syntactic construct 
thing at a time.)


Or maybe you don't have change anything in DrRacket, and instead simply 
tell students some physical/visual ways to conceptualize the syntax 
itself.  Students who have trouble remembering the syntax could latch 
onto conceptualization that works for them, til they no longer need the 
training wheels.  Or til you have to teach that procedure are first-class.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] corrected sxml.plt 2 1

2010-10-26 Thread Neil Van Dyke

John Clements wrote at 10/26/2010 03:49 PM:

Is there any chance I can upload a new version of this package?
  


Normally, we'd want to have a clear and very restricted process for this 
(what Debian would call "non-maintainer uploads (NMU)").  PLaneT already 
has trust/security issues to address, and NMUs affect what trust we do have.



On a separate note, to dev: is there any way that schemeunit could be made 
slightly less of a very large install?


A few of use talked recently about PLaneT packages that are involved in 
extremely slow requires.  IIRC, there were multiple fronts on which to 
attack this:


* Make uncached PLaneT requires faster.  How documentation is built is 
probably involved in this.


* Encourage people to avoid totally gratuitous dependencies in reusable 
libraries.  (For an imaginary example, let's say that you really like 
using "if" without an else clause, so all your libraries depend on the 
"johnsmith/optional-else" PLaneT package, which depends on a test engine 
plus some utilites that are part of a large library, which in turn 
depend on a graph of 10 other PLaneT packages, and Racket spends 15 
minutes installing these.  Just using "and" instead in your package's 
code would save users a lot of pain.)


* Perhaps move some things into core.  For example, IIRC, it sounded 
like one of the expensive packages that multiple people used was 
believed to compensate for a defect in core, and was felt necessary to 
produce a correct packaging.  A good test engine in core might be 
another example.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-11-27 Thread Neil Van Dyke
* I'd like to efficiently support SXML, as well as my new union of SXML 
and xexprs, by writing while traversing the data structure, without 
introducing an extra copy by first converting to byte string.  Perhaps 
"response/c" could permit a closure to write the content and perhaps to 
produce or write the headers, or something similar?  (Ideally, this does 
not require plugging together components using units and signatures; 
sometimes those tools are indispensable, but they're also cumbersome.)


* I'd say that using SXML or xexprs for HTML and XML responses from a 
Web server is the normal and preferred way to implement most pages.  
Using these efficiently should be easy for people to do in substantial 
systems, such as by letting them define their own wrapper procedure or 
syntax for making a response of their preferred type.  Using SXML or 
xexprs for output should also "give good demo" in tutorials and pilot 
apps, so it would be nice if people doing "#lang simple-web-server" or 
whatever could have a simple and terse way of saying "send an HTML 
response from this SXML or xexpr, with all the continuation magic", such 
as using one procedure or syntax name, rather than two to four.


BTW, SXML and xexprs are a big win for Web development.  For one large 
system in PLT Scheme, the architects have repeatedly mentioned the 
productivity benefits of SXML for HTML pages as one of the major 
advantages of using Scheme.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-11-27 Thread Neil Van Dyke

Jay McCarthy wrote at 11/27/2010 05:39 AM:

I've just added response/port for this purpose, although it only provides the 
ability to stream the content, the headers must be produced beforehand. Is that 
a game breaker?
  


Thanks.  Sounds good.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-11-30 Thread Neil Van Dyke

Eli Barzilay wrote at 11/30/2010 06:36 AM:

The ones I ran into, at least with xexprs: they rely on lots of quasi/quotes etc and it's easy to end 
up with things like "nbsp".


I make errors of not getting my quotes, backquotes, and commas in the 
right place sometimes, but those errors tend to be discovered quickly.


BTW, in SHTML, my old SXML derivative for HTML, one does "(& nbsp)" 
instead of xexpr's just "nbsp" for an entity reference.  Perhaps there 
is a little less risk of confusion.


I think there would be even less risk of confusion if DrRacket syntax 
coloring assumed that the quote and backquote characters always 
introduced a normal Scheme quote/quasiquote context, and colored the 
literal parts green.



A related problem is the difference between contexts that expect a single value and contexts that 
expect a list of values -- with one solution of changing an `unquote' to `unquote-splicing' and the 
usual problems that this can lead to, or going with the bad 
"stuff" hack.
  


I ran into this potential pitfall when I was doing PLT servlets with 
xexprs.  It's not so much an issue in SXML, since (for better or worse) 
SXML permits unnecessary paren nesting, so you never have to splice.


Other solutions/workarounds:

* Just be careful, and test.

* When I was doing PLT servlets, I just had a naming convention for 
procs that produced xexprs, so "foo-bar-xexpr-elem" would get unquote 
and "blort-baz-xexpr-content" would get unquote-splicing.


* Ideally, I'd want static type checking of my HTML/SXML forms.  This 
might have been some of the attraction of Haskell to Oleg.


* My template language doesn't use unquote or unquote-splicing, and 
instead uses constructs that I think are less error-prone.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-11-30 Thread Neil Van Dyke
I don't have any important dependencies on the Web Server right now, but 
just wanted to add that even small backwards-incompatibilities in 
PLT/Racket have ruffled feathers of consulting clients of mine in the past.


When there are backward-incompats, it's *much* better that they be 
detected at compile time.  Example: renaming the hash table procedures 
was an annoyance when code wouldn't compile, but the changes to 
"open-output-file" and friends to use keyword arguments resulted in much 
more insidious runtime errors.


(BTW, Not using Typed Racket yet.  Large code base that has been 
evolving since PLT 1xx/2xx.)


When thinking about how you want people to be alerted to incompats, also 
remember that not everyone reads the release notes.  A few times I've 
seen a programmer install the latest version of PLT to try, which 
happens to constitute a jump of several versions, and s/he smoke-tests 
their code with the new version *before* going and reading the release 
notes for all the intermediate versions.  I think that having the 
platform inform them of incompatibilities through compile-time error 
messages or compile-time Java-like deprecation warnings gives more 
confidence in the platform than errors that occur significantly after 
time T0 in run-time.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-11-30 Thread Neil Van Dyke
Going back to a point I'm sure others have made already... Perhaps you 
guys have a good sense of how many people would be affected by any 
incompatibilities in this case?


Most people use "open-output-file" and hash tables, so you wanted to 
migrate all those people gently somehow.  A relatively small percentage 
of people used mutable pairs, at least outside of textbooks, so a harsh 
migration path was more acceptable there.


I assume that the Web Server is somewhere between "open-output-file" and 
mutable pairs in popularity.  If the tradeoff costs of 
backward-compatibility work and moving the platform forward 
expeditiously are unclear, perhaps you could poll the stakeholders.


Neil Van Dyke wrote at 11/30/2010 01:11 PM:
I don't have any important dependencies on the Web Server right now, 
but just wanted to add that even small backwards-incompatibilities in 
PLT/Racket have ruffled feathers of consulting clients of mine in the 
past.


When there are backward-incompats, it's *much* better that they be 
detected at compile time.  Example: renaming the hash table procedures 
was an annoyance when code wouldn't compile, but the changes to 
"open-output-file" and friends to use keyword arguments resulted in 
much more insidious runtime errors.


(BTW, Not using Typed Racket yet.  Large code base that has been 
evolving since PLT 1xx/2xx.)


When thinking about how you want people to be alerted to incompats, 
also remember that not everyone reads the release notes.  A few times 
I've seen a programmer install the latest version of PLT to try, which 
happens to constitute a jump of several versions, and s/he smoke-tests 
their code with the new version *before* going and reading the release 
notes for all the intermediate versions.  I think that having the 
platform inform them of incompatibilities through compile-time error 
messages or compile-time Java-like deprecation warnings gives more 
confidence in the platform than errors that occur significantly after 
time T0 in run-time.



--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-12-04 Thread Neil Van Dyke

YC wrote at 12/04/2010 04:19 AM:
After reading through the README, my vote is for a new "web-server2" 
collection and keep web-server frozen as is except to fix bugs.


I'm still wondering how many people are actually dependent on Web Server 
right now.  I think that this number might grow exponentially, but might 
be only a handful of people right now.


FWIW, my priorities regarding Web Server backward-compatibility, most 
important to least important:


(1) Keep moving Web Server development forward.

(2) Keep/make *new* Web Server development a good experience, including 
giving good demo.  ("web-server" is a little preferred to "web-server2".)


(3) Have an idea for how to do backward-compatibility in the future.  
Maybe this involves PLaneT-like specs of which version of the API is 
used (which, incidentally, would be useful for "#lang racket/base" as well).


(4) Handle migration somehow for people currently using Web Server.  
This should not require major changes, but might require them to change 
their source to point to a compatibility library/language.  The others 
are higher priority.


Again, most of my Web work is on architectures predating the Racket Web 
Server, and I've only done a couple small apps using Web Server 
(research data-browsing/labeling apps), so I'm mostly unaffected.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Removing Xexpr preference from Web Server

2010-12-06 Thread Neil Van Dyke

Stevie Strickland wrote at 12/06/2010 11:58 AM:

Every time I discuss contracts with a visiting researcher, the first or second thing they 
always ask is, "What if you coerced to a good value instead of throwing an 
error?", so I'm not surprised that Jay indeed wants just that.  I think he's just 
found an excellent first use case for it in our own system, and so now we should take a 
look at supporting such, as you have said above.
  


If you're talking about recovery from programming errors, I think that's 
an interesting and hard problem.  (Example: programming error results in 
a bad value, which is detected; you now know that something is wrong, 
but you might not know the cause or impact, and perhaps coercing to a 
believed good value just creates a bigger problem.)


Regarding the current backward-compatibility situation being a good use 
case for a desirable mechanism, it might be, but I think you will want 
to flesh out the rationale more at some point.  (Example devil's 
advocacy, just to clarify what I mean: "How is this preferable to simply 
making a new procedure for the new behavior?  How does this relate to 
multiple dispatch?  How is this preferable to the way practitioners have 
been doing backward-compatibility in mainstream OOPLs?")


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] spam & planet bug reports

2010-12-11 Thread Neil Van Dyke
One issue to consider with Recaptcha is that it's incidentally a Web bug 
that helps track people around the Internet.  If you don't already have 
Web bugs in your site, by adding one you increase the cross-site tracking.


In the case of PLaneT bug reports, the privacy and security cost of a 
Web bug seems negligible.


However, I think it is good to sanity-check every time you use one of 
these effective Web bugs.  I've seen sites like anonymous discussion 
boards on sensitive topics doing things like loading Recaptcha for not 
only posts (goodbye, posting anonymity), but also for every message a 
user views (hello, centralized detailed profiling).  In many cases, I 
believe that site operators who help implement the tracking are unaware 
of it, although in other cases they might be indifferent or believe that 
the tracking will be used only for certain purposes they consider to be 
good.


Now that I'm in my 30s, my interest in this is academic curiosity rather 
than activist, but I'd like to have at least Racket people aware of the 
implications when they decide to use an effective Web bug like Recaptcha.



FWIW, recaptcha is really easy to set up. Like less than 10 minutes from
not knowing anything about it to having a working system.

http://www.google.com/recaptcha
  


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] spam & planet bug reports

2010-12-11 Thread Neil Van Dyke
You could implement your own captcha.  This is hard if the captcha is on 
sites popular enough to be brought to the attention of very smart 
programmers who specialize in compromising captchas.  This is easy if 
you don't have to worry about those programmers.


Or you *might* be able to use Recaptcha in a privacy-friendly way by 
serving everything yourself to the client, so that no HTTP request is 
made by the client directly to Google and no plausibly identifying info 
is otherwise propagated.  That way, privacy-wise, Google gets little 
more than timing and scale info.  I'm not sure that this is permitted, 
technologically or contractually.  Serving it yourself is also more 
expensive to maintain, and, in absence of guarantees from Google, there 
is more risk that what works today will not work tomorrow.


Matthias Felleisen wrote at 12/11/2010 01:47 PM:
How difficult is it to implement one as a Planet lib that avoids tracking? 
  


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] (round), etc. in Typed Racket

2010-12-12 Thread Neil Van Dyke
Maybe someone can figure out a sensible way for modules to specify in 
which version(s) of the Racket language they are believed to work, and 
what to do with that information.


I'm not sure what's sensible.  I could see being able to specify "this 
module was last developed and working with Racket 5.0.42".  Then some 
person or program coming along later knows how Racket has changed since 
then and perhaps can inspect the module for problems that would not 
normally be caught by static checking, and give warnings.  Right now, 
I'm thinking static tools, rather than runtime compatibility modes.


Or perhaps instead of specifications of Racket language version used, we 
could use test suites to assess compatibility of a module with a given 
version of Racket.  If we have *really* good test suites.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] possible bug possibly involving planet development link requires

2010-12-27 Thread Neil Van Dyke
In case anyone masochistically-inclined wants to investigate a possible 
bug possibly involving PLaneT requires, or has heard a report of a bug 
like this but not been able to reproduce...


I don't want to overstate the importance.  I doubt that I'll see this 
problem again.  It could just be a freak problem with my system and not 
a bug.  Or it might be pilot error, especially given the late hour.


0. Use DrRacket 5.0.2.

1. I had PLaneT development link for package "me/lib:1:=1".

2. Package "me/lib" has a "main.ss" file that does: (require "lib.ss") 
(provide (all-from-out "lib.ss"))


3. In new file "use.rkt", there is a use of syntax "libform" and a 
require to get it: (require (planet me/lib:1:=1))


4. When running "use.rkt", get an error about "libform" not defined.  
It's defined in "lib.ss", but not provided.


5. Add provide of "libform" to "lib.ss".

6. Attempt to run "use.rkt", but it is still complaining that "libform" 
not defined.  THIS IS A CONFUSING FAILURE.


7. Spend 15 minutes trying in vain to get "use.rkt" to recognize 
"libform" from "lib.ss", by editing both files and trying many attempts 
to run, including restarting DrRacket.  Also attempt to reproduce the 
problem with minimal test case, but fail to reproduce.


8. Finally try changing the require form from "me/lib:1:=1" and 
"me/lib:1:=1/lib.ss".  THIS WORKS.


9. Change the require form back to "me/lib:1:=1", which hadn't been 
working up through moments earlier, but now works. THIS IS A CONFUSING 
SUCCESS.


I'm wondering whether there was a cache of compiled code or some kind of 
name resolution/linkage (PLaneT-related, or not) that was out of date 
for some reason.  (Note that I might have done a CVS commit of "lib.ss" 
at some point in there, and it looks like my clock is approx. 2 seconds 
behind server's.)  And perhaps asking for a different file in the PLaneT 
require caused that cache to be updated?


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] up-to-date libgtk for drracket on debian stable?

2010-12-31 Thread Neil Van Dyke
In case anyone is interested, following are versions of GTK-related 
libraries on one of my Debian Stable boxes.  The GTK API documentation 
generally tells you in which version an API feature was introduced.  I 
can provide shared library symbol dumps if someone would like that.


dpkg -l | grep libgtk
ii  libgtk1.21.2.10-18.1
The GIMP Toolkit set of widgets for X
ii  libgtk1.2-common 1.2.10-18.1
Common files for the GTK+ library
ii  libgtk2-perl 1:1.190-1  
Perl interface to the 2.x series of the Gimp
ii  libgtk2.0-0  2.12.12-1~lenny2   
The GTK+ graphical user interface library
ii  libgtk2.0-bin2.12.12-1~lenny2   
The programs for the GTK+ graphical user int
ii  libgtk2.0-common 2.12.12-1~lenny2   
Common files for the GTK+ graphical user int
ii  libgtk2.0-dev2.12.12-1~lenny2   
Development files for the GTK+ library
ii  libgtkhtml2-02.11.1-2   
HTML rendering/editing library - runtime fil
ii  libgtkmm-2.4-1c2a1:2.12.7-1 
C++ wrappers for GTK+ 2.4 (shared libraries)
ii  libgtksourceview-common  1.8.5-1
common files for the GTK+ syntax highlightin
ii  libgtksourceview1.0-01.8.5-1
shared libraries for the GTK+ syntax highlig
ii  libgtksourceview2.0-02.2.2-1
shared libraries for the GTK+ syntax highlig
ii  libgtksourceview2.0-common   2.2.2-1
common files for the GTK+ syntax highlightin
ii  libgtkspell0 2.0.13-1+b1
a spell-checking addon for GTK's TextView wi


dpkg -l | grep libpango
ii  libpango1.0-01.20.5-6   
Layout and rendering of internationalized te
ii  libpango1.0-common   1.20.5-6   
Modules and configuration files for the Pang
ii  libpango1.0-dev  1.20.5-6   
Development files for the Pango


dpkg -l | grep gdk
ii  gdk-imlib11  1.9.15-7   
imaging library for use with gtk


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] drracket and rectangles

2011-01-03 Thread Neil Van Dyke

A few things for which I switch to Emacs, even when using DrRacket:

* M-q to re-flow Racket comments that span multiple lines, to fill to 
some margin (like 79 or 80 columns).  Note that Emacs has fancy 
"adaptive-fill", but something simple and Racket-comment-specific would 
be fine.


* M-x quack-tidy RET to reindent all lines and tidy up extraneous 
whitespace.  Using the pretty-printer, DrRacket could go a step further, 
to line-breaking.


* Keyboard macros.  These can get pretty powerful.  Matthias's 
argument-reordering would be a simple example, and even for that, 
keyboard macros using sexp movement operations would be more robust than 
rectangle kill&yank.


* Working with (editing, viewing, or doing keyboard macros with) more 
than 2 or 3 files at once.


* Doing version control operations.

* Editing non-Racket/Scheme text files.

The first two have been on my mental list to add to DrRacket someday.  
But if any students are bored over winter break... :)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] A disassembler for Racket

2011-01-05 Thread Neil Van Dyke

Sam Tobin-Hochstadt wrote at 01/05/2011 05:28 PM:
I've been on-and-off working on a disassembler for jitted x86 functions in Racket, 
  


This is great, Sam.  Thank you.

Your problem now is that, while some CL-type people will like to see 
assembly dumps, they will grumble about any missed optimizations. :)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] server availability

2011-01-21 Thread Neil Van Dyke

I've noticed PLT/Racket servers down a few times over the years.

I don't know how frequent the downtime is, but I could imagine downtime 
of the PLaneT server in particular being disconcerting to someone whose 
software depends on PLaneT.


If anyone is thinking about server availability, for PLaneT, also keep 
in mind that there is still opportunity to improve the security and 
trust of PLaneT, and that how you choose to improve availability might 
complicate improving security.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] A curious question about quote

2011-01-26 Thread Neil Van Dyke
Like Joe said.  I think that this "quote" behavior is a very practical 
convenience that Scheme inherited, not something about which to hurt 
one's brain trying to discern the underlying pure truths.


There are some confusing bits.  For example:

#lang racket
(equal? (quote 1) 1) ;==> #t
(equal? (quote (quote 1)) (quote 1)) ;==> #f

This particular confusion, we can clarify or rationalize as "(quote 
)" being a very different thing than "(quote 
)".  Which, as you said, could be seen as conflating.


Taking another look at the above quirk suggests "quote" having 
simple-minded automagic to decide which of its multiple personalities 
(number or list) is triggered:


(quote 1) ;==> 1
(quote (quote 1)) ;==> (quote (quote 1))

I don't know/recall how CL philosophizes about this.  Emacs Lisp people 
talked about syntax like numeric literals, "nil", and "t" being 
``self-quoting.''  Scheme people tend talk about numeric literals being 
``self-evaluating,'' but I don't see how that explains the quirk above.


If you can work out a clean formalism for the syntax/reader that avoids 
quirks like these, yet still provides the list construction convenience 
that permits non-list constants/self-evals elements without extra syntax 
for quoting or unquoting them, I think that would be good.


As long as you're banging around in there, if you can also replace the 
names "unquote" and "unquote-splicing" (which I believe are hardly ever 
used literally in application code) with names/syntax that don't stomp 
on the space of names application code might want to use in, say, quoted 
or quasiquoteed embedded SXML, that would be even better.  :)  I wish 
that RnRS had gotten rid of these at the same time that it blessedly got 
rid of "nil" and "t".  What currently makes more sense to me in Racket 
is to move to "#unquote" and "#unquote-splicing" (or "#," and "#,@"), 
keeping the same "," and ",@" shorthand.  I suspect that changing to 
those would be backward-compatible for 99.9% existing code outside of 
Racket internals.  I could be overlooking some case that makes that 
change a bad idea, of course.


Joe Marshall wrote at 01/26/2011 05:17 PM:

On Wed, Jan 26, 2011 at 8:02 AM, J. Ian Johnson  wrote:
  

I have a historical question about quoted constants. Does anyone know why '1 = 
1? My intuition is that this is an artifact of conflating quote with list 
constructors. Is that indeed the case?



I doubt it.  More likely it was when someone realized that if (quote 1) is not 
the number 1, then everyone would be confused.  What else would it be?
  


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] [racket] tests/eli-tester feedback (Was: Racket unit testing)

2011-02-15 Thread Neil Van Dyke

Eli Barzilay wrote at 02/15/2011 07:32 AM:

* It uses TR -- but it has to be very minimal.  (*Extremely* minimal, since 
it's a candidate for inclusion in the `racket' language, which is why I was 
thinking of not much more than agreed structs and parameters.)


A related consideration is that, the more dependencies the test 
mechanism has, in theory, the more potential points of failure that 
could corrupt the test mechanism itself.


I doubt that TR, for example, is going to break in a way that causes 
tests that should fail to pass, but I think that the consideration 
should be mentioned.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] sxml package takeover/updates?

2011-02-15 Thread Neil Van Dyke
If Oleg, Kirill, and Dmitry would like someone to take over maintaining 
the Racket PLaneT packages of SSAX and the SXML tools, I would be happy 
to volunteer.


(Kirill and I talked recently about some changes to the Racket packaging 
of SSAX that I have done through a wrapper package.  Specifically, the 
wrapper converts SSAX exceptions to Racket "exn:fail?", and captures the 
SSAX stderr messages and uses them to annotate any forthcoming exception 
or sends them to "log-warning" calls if there was stderr but no 
exception.  Kirill is still waiting to hear from me.  Perhaps it would 
be easiest to merge this as changes at the same time I generated the 
Racket-specific packaging from the Sourceforge upstream version.)


Neil

Robby Findler wrote at 02/15/2011 03:11 PM:

On Tue, Feb 15, 2011 at 1:52 PM, John Clements
 wrote:
  

I understand that PLaneT is not currently set up to make it easy to migrate 
packages to new owners.



It shouldn't be difficult to download a .plt file and re-upload it
under another name. This ends up being roughly like a major version
increment (things could be better, yes, but at least that's
something?).

Robby


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Latex files

2011-02-19 Thread Neil Van Dyke

Robby Findler wrote at 02/19/2011 08:00 AM:

But I'm starting to think that Matthew's solution is easiest. Lets just punt.
  


FWIW, I see additional reasons to, as Matthew suggested, *not* bundle 
third-party La/TeX class/style files in with Racket:


* If user needs a different version of the file, avoid headache of 
getting LaTeX to pick up the desired version when there's a name conflict.


* If user needs a different version of the file, avoid accidentally 
getting the Racket-bundled version without knowing.


* For each paper, user should probably be archiving the exact 
class/style files used for the paper anyway, for future 
reproducibility.  So, if they care about versions, they probably 
shouldn't be relying on whatever version of Racket is installed.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Latex files

2011-02-19 Thread Neil Van Dyke



Robby Findler wrote at 02/19/2011 08:00 AM:



Thanks, Robby.  Sorry, I was being stupid, and not looking at enough 
message history to know what was being discussed.



--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] overwrite

2011-02-26 Thread Neil Van Dyke

Dunno whether this helps...

I haven't looked at the pertinent Racket code, but errors like this 
often happen in Unix applications because the mtime of the file is in 
the future relative to the current time clock.  Less commonly, because 
the mtime changed since the file was read by the app or since the app 
last checked.


The most common case can happen because a VC/CM system is updating the 
times (someone mentioned Git, and some other systems do this), because 
it's a network filesystem and the server and workstation clocks aren't 
synced sufficiently, or because NTP or some other mechanism dangerously 
jumped the current time clock in reverse (usually a good NTP daemon will 
slow the clock rather than jump in reverse).


Robby Findler wrote at 02/26/2011 01:39 PM:

Looking at the code, I don't see anything suspicious (assuming that 
after-save-file and file-or-directory-modify-seconds work properly, that is).
  


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] LGPL

2011-03-03 Thread Neil Van Dyke
For people wanting to make it easy for their PLaneT packages to be 
incorporated into Racket core... should we be using LGPL 2.1, or some 
other license?


(I've been using LGPL 3 for most things lately, but I don't mind going 
back to 2.1 if that's where Racket wants to be right now.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] LGPL

2011-03-03 Thread Neil Van Dyke

Eli Barzilay wrote at 03/03/2011 10:10 PM:

  Distributed under the same terms as Racket


Would it be good practice overall to pick a specific, more limited, 
license for contributors to use?


I believe that a copyright holder permitting the convenient "distributed 
under the same terms as Racket" essentially grants full (nonexclusive) 
rights to the unnamed distributors of Racket, potentially bypassing the 
intent of the open source licenses.  Some individual contributors will 
believe strongly in open source licenses, and there's various good 
reasons why licenses are used rather than public domain in most cases.  
I'd also bet money that the open-ended granting of rights would draw 
more consternation from corporate lawyers whose OK is needed to release 
code, compared to a well-trod standard license with limitations, like 
LGPL 2.1 or 3.


I didn't mind giving full nonexeclusive rights to that CSV parser as 
"same terms as Racket", just for the sake of expedience on that small 
contribution.  But, going forward in the Racket new world order, I'd 
like to be comfortable that license stuff is being done in the best way 
overall.


BTW, I think, but am not certain, that the "or (at your option) a later 
version" bit lets you upgrade the LGPL version without having to contact 
copyright holders.


--
http://www.neilvandyke.org/


_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] spam trac tickets

2011-03-22 Thread Neil Van Dyke

Robby Findler wrote at 03/22/2011 11:28 PM:

Looks like the spammers have found a way thru google's captcha thing.
  


That's frustrating.  I wonder whether a simple homebrew captcha (e.g., 
varying but simple Racket expression that even beginners understand and 
can do in their head) would be effective for a while.


This is easy for captcha-crackers to break if they look specifically at 
the Racket site, but it's not vulnerable to some spammer automatically 
detecting all the sites that are using ReCaptcha and then using their 
standard exploit for that site (machine vision, farms of humans).


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] spam trac tickets

2011-03-24 Thread Neil Van Dyke

Eli Barzilay wrote at 03/23/2011 04:20 PM:

But the obvious advantage of staying with the common captcha is that many other 
sites probably suffer, which means that it will get better.  (Or the internet 
will be shut down...)
  


Biodiversity.  After Java and Python are wiped out in the coming spam 
apocalypse, Racket will survive, like cockroaches. :)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Top ICFP authors

2011-04-12 Thread Neil Van Dyke

Eli Barzilay wrote at 04/12/2011 03:46 PM:

Do a bing image search on any of the names -- it's a disaster.  (One of the first images 
I get for "matthew flatt" without the quotes is your foot.)
  


Foot?  Could be worse: Google Image Search for my name doesn't show me, 
but the first page does show closeups of toenail fungal infections.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] my '312' this semester, how we compare to others

2011-04-21 Thread Neil Van Dyke

Matthias Felleisen wrote at 04/21/2011 01:07 PM:

-A- I demanded that students deliver their functionality via Unix shell 
scripts, and so I did so too. My tcsh scripts check the argument number and 
pass the arguments on to Racket. Firing up one of my clients or servers takes 
several seconds. All other language implementations appear to bring up their 
servers or clients instantaneously.
  


I only see slow performance like that from non-GUI Racket when the 
Racket code is not yet compiled, and perhaps when the files that need to 
be read (or ELF loaded) by the OS are not in OS caches.


The "racket" REPL executable startup *did* seem to get a lot slower a 
while ago -- a few seconds -- compared to the old "mzscheme" REPL.  But 
5.1 was less than 1 second to REPL prompt when I tried it just now.


Three shell script tips that shouldn't matter much, but might speed you 
up a little: (1) Consider using "/bin/sh" or "/bin/bash" instead of 
"tcsh", since the old rule is Bourne for scripting, C-shell for 
interactive; (2)  In the "#!" line, use command line options to disable 
shell features that load various system and user rc files, since these 
are slow to read and interpret, and can be huge like completion tables, 
plus in a production app other people's shell rc files can introduce 
instability; (3) After your script does the minimal stuff it has to do 
in shell rather than Racket, use an "exec" to fire off "racket", so that 
everyone can forget sooner that shell ever happened.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-22 Thread Neil Van Dyke

Vincent St-Amour wrote at 04/22/2011 04:26 PM:

With this patch, assoc and member are implemented in Racket. They are currently 
implemented in C. I haven't measured the performance impact of the change, but 
I can do it if someone believes it's necessary.
  


Testing performance impact of reimplementing these procedures seems 
appropriate to me.  For one thing, they are old RnRS procedures that 
performance-sensitive people have assumed are implemented about as fast 
as they could be for general-purpose linear searches.


Also, if it turned out that "assoc" (or "assq") took a significant 
adverse performance hit, that might create a big barrier to a particular 
production system upgrading its Racket version.


I imagine you might even make these procedures faster by moving from C 
to pure Racket implementations, where there is more info from which to 
optimize calls to the procedures.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-22 Thread Neil Van Dyke

Eli Barzilay wrote at 04/22/2011 05:09 PM:

One way to make it fast is to have it bound to a macro so (member f l eq?) 
expands to a `memq', and when used as a function have it dispatch to `memq' if 
given `eq?'.


If someone really wanted to do that optimization in a macro (at first 
glance, seems a little unSchemely to me, and I think a compiler or JIT 
should be able do that optimization, anyway), I'd hope they'd pick a new 
name for the macro.  "member", "assoc", and friends of course have been 
procedures forever.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Universe and Redex

2011-04-23 Thread Neil Van Dyke

David Van Horn wrote at 04/23/2011 09:12 PM:
was to define the language of client to server messages as a Redex 
language and then use Redex's random term generation to stress test 
our server.


Would be interesting to see how this work with Redex would be framed 
within related work.  There is a popular broad term, "fuzz testing".


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-24 Thread Neil Van Dyke

Thanks for the performance numbers and JIT enhancements, Matthew.

Do I read this correctly that (for whatever distributions of inputs you 
used) we can expect the new "assq" to be about twice as fast on 64-bit 
x86, and about half-again as slow on 32-bit?



Matthew Flatt wrote at 04/24/2011 10:44 AM:

32-bit run:

'kern:assq
cpu time: 23 real time: 23 gc time: 0
cpu time: 38 real time: 39 gc time: 0
cpu time: 39 real time: 38 gc time: 0
'assq
cpu time: 38 real time: 39 gc time: 0
cpu time: 60 real time: 61 gc time: 0
cpu time: 61 real time: 61 gc time: 0
  



64-bit run:

'kern:assq
cpu time: 36 real time: 36 gc time: 0
cpu time: 117 real time: 117 gc time: 0
cpu time: 118 real time: 118 gc time: 0
'assq
cpu time: 39 real time: 39 gc time: 0
cpu time: 66 real time: 65 gc time: 0
cpu time: 65 real time: 65 gc time: 0
  


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-24 Thread Neil Van Dyke

Matthew Flatt wrote at 04/24/2011 06:53 PM:

At Sun, 24 Apr 2011 12:48:53 -0400, Neil Van Dyke wrote:
  

Do I read this correctly that (for whatever distributions of inputs you used) we can 
expect the new "assq" to be about twice as fast on 64-bit x86, and about 
half-again as slow on 32-bit?



Well, here are some new numbers (32-bit):
  


Cool, Matthew.  The modest performance hit for "assq" on 32-bit (my 
workstation) right now is a small price to pay for doubling the speed on 
64-bit (lots of servers).  That should be a significant help to one of 
the production apps that uses Racket.


This is a nice spring holiday gift.

--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-24 Thread Neil Van Dyke

Matthew Flatt wrote at 04/24/2011 07:58 PM:

At Sun, 24 Apr 2011 19:24:18 -0400, Neil Van Dyke wrote:
  

The modest performance hit for "assq" on 32-bit (my workstation) right now is a 
small price to pay for doubling the speed on  64-bit (lots of servers).



I forgot to reply to that point before. Unfortunately, I don't think you're 
going to see the same effect on other machines.


Oh, you did say something about influence of a particular 64-bit 
compiler earlier, but in all my excitement, I didn't make the connection.


If, at the time this new "assq" makes it into a Racket release, the new 
"assq" turns out to be significantly slower than the old C one, can the 
old one ("kernel:assq"?) be exposed for programs to call directly?


A performance regression in "assq" would adversely impact some 
performance-sensitive legacy code that saw a lot of micro-optimizing 
last year.  Having the old "assq" available as a fallback option would 
be reassuring.


BTW, I do like the idea of "assq" being pure Racket code, where it's 
more amenable to ongoing work on optimizers, and I don't mean to sound 
critical of this process.


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Optional equality predicate for assoc and member

2011-04-24 Thread Neil Van Dyke

Eli Barzilay wrote at 04/24/2011 09:01 PM:

Related to the other thing I said: if you have code that depends on fast 
assoc-ing, and you don't have cycles, then rolling your own version is probably 
going to be faster anyway.
  


Good point.  I believe this was not case when I was profiling several 
different implementations of certain list procedures under PLT 4.2.x 
(e.g., calling C "assq" was faster on our large-ish alists than what 
should have been optimal Scheme code for doing the same on acyclic 
alists), but the JIT has improved since then.


I think this is not a showstopper situation, and I have a few 
app-specific optimizations ready in my back pocket if necessary, so that 
this app can upgrade to new Racket versions without giving up its 
pervasive use of alists.  (The original architect had good reasons to 
use alists that way, I have to mention.)


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] An occasional newline in the PLaneT install Log?

2011-04-27 Thread Neil Van Dyke

John Clements wrote at 04/28/2011 02:09 AM:

On Apr 27, 2011, at 12:10 PM, Robby Findler wrote:
  

There actually are newlines there in some ways the log is viewed. So
something looks buggy somewhere to me.



I'm not quite sure what you're suggesting.  I had a look with emacs, and I'm 
pretty sure there are no special characters in there. Perhaps I'm 
misunderstanding you.
  


My "~/.racket/planet/300/5.1/INSTALL-LOG" on GNU/Linux contains *zero* 
LF or CR characters, despite reflecting a few PLaneT packages having 
been installed.


First guess: someone is getting the log text line-by-line without 
newlines, and forgetting to add the newlines when sending the lines to 
the log file.


If Robby means that his log contains LF and/or CR characters, maybe he's 
using a different Racket version, or is on a different host platform.


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] racket vs. scheme vs. clojure (as it appears to others)

2011-04-29 Thread Neil Van Dyke
The Web is full of outdated and/or ill-informed references to PLT and 
Racket.  People see these, and the bad information propagates 
memetically -- perpetuating and increasing.


One thing Racket people could do is a one-time blitz of existing bad 
info all over the Web, to correct as many of these as possible, and 
promote the message of how Racket is positioned.  This can include 
updating various wikis, posting corrections or updates in otherwise 
stale Web forum threads, emailing maintainers of non-wiki sites 
suggested updates to their pages, emailing blog authors who do not have 
comments, etc.  This is a one-time thing, to update the static parts of 
the Web, distinct from the ongoing activities of participating in 
dialogs as they happen.


Before doing the blitz, an internal refresher course on the message 
wouldn't hurt, so that the blitzing by multiple people is fairly 
consistent.  Example of something to decide: Under what circumstances 
should Scheme ever be mentioned, and how should Racket's relationship to 
Scheme be characterized when it is mentioned?


I can tell you that the word "Scheme" is often useful when a prospective 
Racketeer starts out wanting "Scheme", and then they get pointed to 
Racket.  And I think "Scheme" might *sometimes* be useful when someone 
academically-inclined is asking about interesting programming languages 
and we can tout Scheme as part of our heritage (or, alternatively, just 
point to the PL research).  "Scheme" is usually a liability when someone 
used it in school years ago (other than with HtDP).  "Scheme" is also a 
liability when someone is almost in the Racket fold, but then goes 
Googling around for information on "Scheme" and gets all confused, 
time-wasted, and turned off.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] racket vs. scheme vs. clojure (as it appears to others)

2011-05-06 Thread Neil Van Dyke

Matthias Felleisen wrote at 05/06/2011 10:41 AM:
For what time period should we leave the description constant to test this conjecture? 
  


Someone mathematically-inclined did something similar-sounding a 
decade(?) ago, for US national political campaign fund-raising.  From 
what I could gather, the campaign Web sites would automatically 
experiment with varying the approach, *on a per-visitor basis*, to find 
optimal ways of presenting itself.  I think they were searching the 
combinatorics of different text, positioning, dollar amount 
alternatives, etc., and also correlating with messages in the news.  In 
one respect, they had it easy: dollars donated immediately through the 
site is an exceptionally good success metric.  I suspect that the party 
didn't publish on their setup (just guessing; I don't follow such 
things), and the person I'm thinking of has moved on to doing different 
kinds of work.  


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] breaking news nearly invisible

2011-05-24 Thread Neil Van Dyke

John Clements wrote at 05/24/2011 01:47 PM:

I saw a commit go by that seemed to suggest that the racket-lang web page now included 
some kind of "breaking news" item regarding RacketCon.  So I went to the web 
site but... nothing.
  


If you want an 10-second solution to make it more prominent for most 
everyone, you could change the background of the box to a yellow 
(Post-It Note metaphor), maybe with a thin red border.  It's OK if it 
doesn't quite fit in to the style, because it is new, temporary, and 
made to stand out.  You could make it complementary in style to the very 
noticeable "Download Racket" icon.


(I actually noticed the "RacketCon" graphic yesterday before the email 
went out, when I went to the home page yesterday to click on the 
"Community" link.  Probably because of visual memory that something had 
changed in the page, and/or because the italics were different than 
everything else, and/or because, textually, the word "RacketCon" was 
unfamiliar.  But, for people of all visual inclinations, and people not 
already familiar with the busy home page, the current graphic is a bit 
reserved.)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] problem running configure script

2011-05-24 Thread Neil Van Dyke
I don't know why you're getting those errors (are you using "zsh"?), but 
does "./configure" instead of "bash configure" work for you?


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] net/url and https

2011-06-19 Thread Neil Van Dyke
I appreciate the conscientiousness about backward-compatibility here, 
but, as a data point of one developer, I would be happy to incur the 
backward-incompatibility of option #1 in exchange for getting rid of the 
Cookbook HTTPS hack sooner rather than later.


I also think that Eli's option #1 could be done without breaking 
backward-compatibility, but I'm not sure it's worth the effort in code 
and documentation, and I don't want to discourage him moving forward 
with #1 by making the task harder than it has to be.


(Full disclosure: Breaking backward-compatibility in the option #1 way 
would generate approx. one billable hour of consulting work for me.  
Just to edit some "require" forms, quickly inspect the call sites with 
Emacs grep, test, and remove a Cookbook hack file from the CM branch.)


Thanks for tackling this, Eli.

Robby Findler wrote at 06/19/2011 06:26 PM:

I think we should not remove anything from the net/url library
(including the unitized interface) as I believe that will break old
code.
  



On Mon, Jun 20, 2011 at 5:57 AM, Eli Barzilay  wrote:



1. Looking at the code, there are only two tcp functions used
  (`tcp-connect' and `tcp-abandon-port'), so eliminating the unit
  interface and just hooking things up so that an "https" scheme uses
  the ssl functions is relatively easy.



--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] bug reporting system is not spam-protecting email addresses

2011-06-26 Thread Neil Van Dyke
The bug reporting system is not spam-protecting email addresses provided 
by bug report submitters.


It is putting submitters' email addresses unprotected on public Web 
pages, including with "mailto:"; links.


This is a great way to make users not only flee your platform, but track 
you down personally and set your house on fire.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] bug reporting system is not spam-protecting email addresses

2011-06-26 Thread Neil Van Dyke

Robby Findler wrote at 06/26/2011 08:06 AM:

I suspect we should fix this at least for appearances


Yes, I think it's first and foremost an etiquette issue.


 but do you think that that really helps avoid spam?


Keeping email addresses off of Web pages does still help, IME.  I 
believe that the email list I use to subscribe to most email lists still 
gets no spam.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Testing mode

2011-06-28 Thread Neil Van Dyke

I like the "testing" part, but am uneasy with the "deploying" part.

Unit testing is so commonplace, and sometimes you want to have unit 
tests of private stuff within a module, without having to break up the 
module to expose the private stuff for testing.  So, in that very 
common, almost universal situation, being able to embed unit tests in a 
module and have a way of switching them on and off at run time, seems good.


Beyond that, I think that talking about modes of running gets trickier 
and more application-specific.  Just a knee-jerk reaction without 
looking at it, but hearing that there's a construct "with-deploying" 
sounds seems like a dumbed-down, toy thing to do.  I'd rather see an 
extensible mechanism for run modes instead.


Just one example: just like some people might have mode called 
"deploying" or "production", I might have particular modules that have a 
run mode in which there are multiple implementations of the same 
function, and at run time both the simple and the fast-and-fancy 
algorithms are run and their results compared (and run modes in which 
only one of the two algorithms are run).  What modes I use for 
``production'' might change during the development lifecycle, on a 
per-module basis.  I also have modes for profiling information, 
including reports within the system.  We also have modes in which 
logging is done or not, and (ideally, though Racket's logging features 
don't directly support this), this is on a per-module or 
per-something-else basis.  Some of these modes were originally intended 
for ``development mode'' but were put into production at times.  Whether 
logging, profiling, algorithm-checking, etc. are done is not limited to 
non-"production".


Also, even though I just said that embedded test cases are so universal, 
and there is a convenience factor to being able to test unexported stuff 
from a module, even this mode wants to be more complicated sometimes.  
For example, sometimes tests are expensive, and you want to run a 
smaller subset of the tests.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket startup

2011-06-28 Thread Neil Van Dyke

Eli Barzilay wrote at 06/28/2011 09:52 AM:

This makes `MAIN' the Racket equivalent of Python's `__main__' thing.


As for the name, if you could promise me that this name isn't a slippery 
slope to a proliferation of all-uppercase variable names...  (By 
convention, I use all-uppercase for pattern variables in macro 
transformers, and that is the best use of them I've found so far.)


As for adding Python/Ruby/Perl-esque automagical behavior and hacks, I 
trust that people will do so with judicious hesitation.  Sometimes a 
hack is the most sensible way, but Racket is mostly not Hacket.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Testing mode

2011-06-28 Thread Neil Van Dyke

Jay McCarthy wrote at 06/28/2011 10:52 AM:

My patch was supposed to address this by setting up a protocol for
code to be test only or "not" test (that's what I intended by
with-deploying.)
  


It was "deploying" in the name that I thought was problematic.

"when-testing-mode" and "unless-testing-mode", or something like that?

--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] rename "Help Desk" menu item

2011-06-30 Thread Neil Van Dyke
Now that there is no longer a "Help Desk", can that menu item in 
DrRacket be renamed to something like "Documentation" or "Racket 
Documentation"?


I think lots of users are reluctant enough to go to "Help" menus, since 
they (Help menus, not users) are usually full of useless filler crap.  
If a user *does* open the menu, hopefully "Documentation" will catch 
their eye.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] ohloh page

2011-07-06 Thread Neil Van Dyke

John Clements wrote at 07/06/2011 08:53 PM:

2) I see that we're "in the top 2% of all open-source projects" according to 
ohloh.  Perhaps we should advertise this?
  


Below is very opinion-heavy seat-of-pants reaction.  I'm not familiar 
with Ohloh, and I could be off the mark...


The Ohloh site seems oriented towards PHBs who use 'analysis' like 
"decreasing year-over-year development activity" without wondering 
whether it's at all accurate and meaningful.  (Yes, that's what they say 
about Racket, with a yellow warning graphic.  And only 2 people on that 
site claim to use Racket, which just looks funny.)


A quick poll of open source developers I bumped into, including one 
loosely connected to Ohloh, said nothing positive about it.  Personally, 
I would invest a little effort in making Racket look good on Ohloh now 
that we're there, since that might serendipitously come in handy for a 
PHB someday.  But I don't know that I would link to Ohloh or mention 
them outside of their own site right now.  Too much like those tacky 
bogus "Top x% Web Site" awards in the late '90s.


--
http://www.neilvandyke.org/

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] interactive hack

2011-07-10 Thread Neil Van Dyke

4DOS.

Eli Barzilay wrote at 07/10/2011 01:51 PM:

Ok, `4racket' and a beer for anyone who knows why.

  

_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] interactive hack

2011-07-12 Thread Neil Van Dyke



Yes!  Name your favorite brand and I'll bring it...
  


I don't know a good beer to name, but I'm sure that the Bukowski Tavern 
near us has some sufficiently pricey imported craft ones. :)


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] intro videos

2011-07-14 Thread Neil Van Dyke

Eli Barzilay wrote at 07/14/2011 10:38 AM:

9 hours ago, John Clements wrote:

First thing: you can use ESC-(. That is: press and release ESC, type
(. That works, but it's a big pain.



Use Alt-( -- much less pain.  (And that works in Emacs regardless of
paredit, BTW.)
  


On a tangent, but an important one:

1. Text editors that involve Alt- combinations a lot should also support 
ESC.


2. People should be warned that the "ESC (" (two keypresses) might be *a 
lot* easier on their hands than "Alt-(" (multi-key combinations).


3. Other things you can do to make typing easier on the hands might be 
good, though there are tradeoffs.


The reason has to do with the stress of stretching/twisting people do 
with their hands for multi-key combination, is my layperson's 
understanding.  Around the time, when CTS and other RSIs were getting a 
lot of attention, I heard this from multiple credible sources, and the 
knowledge seemed to work for me.


Now, you can avoid the stretching by using alternate hands for this 
two-key combination, if you have two Alt keys.  But the alternate-hands 
approach doesn't avoid stretching when you get a Ctrl-Alt combination, 
which happens a lot in, say, Emacs.  So, if you forsee frequent Ctrl-Alt 
combinations


I had hand pain from typing, circa 1990, but I made a few changes, like 
switching to use ESC in Emacs.  Something in those changes solved the 
problem, and years later I can still type heavily without difficulty.


Back then, I was on a project team that had two people injure their 
hands from typing, to the point that they were advised not to type *at 
all* or they would lose all use of their hands.  We hired typists for 
them, and eventually they had to change careers.  Most of the rest of 
the team had wrist braces by the end.  It happens; we weren't really 
designed to sit down and press little squares a hundred times per 
minute, all day.


--
http://www.neilvandyke.org/
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] intro videos

2011-07-14 Thread Neil Van Dyke
Unfinished sentence: if you foresee frequent "Ctrl-Alt-" combinations, 
it might be easier to learn or teach just always doing "ESC" instead of 
"Alt-", rather than doing "Alt-" for 2-key and but doing "ESC Ctrl-" to 
avoid the 3-key.


Neil Van Dyke wrote at 07/15/2011 12:36 AM:

Eli Barzilay wrote at 07/14/2011 10:38 AM:

9 hours ago, John Clements wrote:

First thing: you can use ESC-(. That is: press and release ESC, type
(. That works, but it's a big pain.



Use Alt-( -- much less pain.  (And that works in Emacs regardless of
paredit, BTW.)
  


On a tangent, but an important one:

1. Text editors that involve Alt- combinations a lot should also 
support ESC.


2. People should be warned that the "ESC (" (two keypresses) might be 
*a lot* easier on their hands than "Alt-(" (multi-key combinations).


3. Other things you can do to make typing easier on the hands might be 
good, though there are tradeoffs.


The reason has to do with the stress of stretching/twisting people do 
with their hands for multi-key combination, is my layperson's 
understanding.  Around the time, when CTS and other RSIs were getting 
a lot of attention, I heard this from multiple credible sources, and 
the knowledge seemed to work for me.


Now, you can avoid the stretching by using alternate hands for this 
two-key combination, if you have two Alt keys.  But the 
alternate-hands approach doesn't avoid stretching when you get a 
Ctrl-Alt combination, which happens a lot in, say, Emacs.  So, if you 
forsee frequent Ctrl-Alt combinations


I had hand pain from typing, circa 1990, but I made a few changes, 
like switching to use ESC in Emacs.  Something in those changes solved 
the problem, and years later I can still type heavily without difficulty.


Back then, I was on a project team that had two people injure their 
hands from typing, to the point that they were advised not to type *at 
all* or they would lose all use of their hands.  We hired typists for 
them, and eventually they had to change careers.  Most of the rest of 
the team had wrist braces by the end.  It happens; we weren't really 
designed to sit down and press little squares a hundred times per 
minute, all day.


--
http://www.neilvandyke.org/


_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] intro videos

2011-07-14 Thread Neil Van Dyke

Guillaume Marceau wrote at 07/15/2011 01:02 AM:

One of the best such study is

 A Prospective Study of Computer Users, by Gerr, Marcus, Ensor,
Cohen, Edwards, Gentry, Ortiz, Monteilh, AJIM 41:221-235 (2002)
 http://www3.interscience.wiley.com/journal/91016561/abstract

Over a period of 38 months, they followed 632 computer professionals
  


Interesting that their concluding list of recommendations you quoted, 
was almost entirely the common folk wisdom a decade earlier. :)


The one factor in the folk wisdom that I recall at the moment, that 
wasn't mentioned in the quoted list, is stress.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


[racket-dev] Was: intro videos

2011-07-14 Thread Neil Van Dyke

Guillaume Marceau wrote at 07/15/2011 01:02 AM:

Yes, but paredit still gets its priorities backward. You want to have
the most commonly used edit operations on the easiest chords (or
without any chord at all, if you are trying to avoid RSI.)


BTW, I just started a tangent, on the "users" list.  "Subject: what kind 
of Racket editor operations would you like to see?"


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Racket DMG improvements

2011-07-17 Thread Neil Van Dyke

Jakub Piotr Cłapa wrote at 07/17/2011 08:25 AM:
Uncompressed HFS+ images may be mounted on Linux but I am not sure if 
there is a way to do it without being root.


If you want to access a filesystem image file *as a Linux filesystem*, I 
think you probably have to mount it with a "loop" device, which requires 
either root/sudo privs, or perhaps a fixed path that can be put into 
"/etc/fstab" with privs granted for normal users to mount it.  (There is 
another option, using FUSE, but I think "loop" will be easier.)


I would guess that any building of HFS+ images would be done on OS X, 
though.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev

Re: [racket-dev] Roogle?

2011-08-04 Thread Neil Van Dyke

Shriram Krishnamurthi wrote at 08/05/2011 12:17 AM:

This idea is proposed roughly every 2-3 years for at least 30 years.
I am not aware of anyone having made this idea "fly".


If you have a info retrieval method with useful precision&recall, but 
the barrier to adoption is the user's overhead in invoking the 
feature... you might help it fly by not requiring user to invoke it.


For general example, something done automatically, context-sensitive, 
that user can perceive in subtle visual annotations, or by glancing into 
another part of the window, or something.


For more specific, and potentially quite simple example: your 
editor/viewer/browser knows what bits of text you're editing or looking 
at (cursor, what's visible in window, document, movement, maybe even 
gaze-tracking), and in some little window provides a ranked list of info 
(perhaps document links/excerpts) it thinks might be relevant at the 
moment. People including myself have used this approach successfully for 
IR problems.


--
http://www.neilvandyke.org/
_
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev


  1   2   3   >