freenode/lisp - IRC Chatlog
Search
11:21:49
dim
my goal here is to play at discovering programming with the kids, I'd like to do something visual for starters, maybe code our own little minesweeper game
11:35:41
dim
supposing that's ok, can I use it a a full IDE where you can live edit the code you're running?
11:37:28
beach
You have the CLIM listener, Climacs, Clouseau, the CLIM debugger (similar to the SLIME debugger, i.e., not a debugger at all).
12:02:22
dim
I just had the idea that MCCLIM might actually be exactly what I want, a kind of more visual Emacs environment where you can program and interact with your code and draw things
12:10:07
dim
I don't think you learn/teach the same things with scratch and visual blocks and with writing (pseudo-) code
12:14:58
varjag
programming in mcclim requires good command of common lisp and understanding of quite advanced ui concepts
12:23:19
fourier
Lisp yes, CL not. learn programming with CL is as hard as learn programming with C++
12:24:37
parjanya
who knows the effect of learning Lisp first would have, this might be a very interesting thing to test
12:25:26
varjag
pjb: there is no such environment and i don't see anyone on making it, so the point is moot
12:28:17
fourier
I would love kids studying "guide to packages" or reader macros, studying anaphoric macros in a mean time
12:32:31
pjb
If you're told about it, you may run the emacs tutorial, but otherwise you just jump into emacs: it's intuitive.
12:32:56
pjb
(ie. you type a letter, and it inserts a letter, contrarily to some other editor of the vi conviction).
12:33:39
pjb
varjag: now the only remaining problem for the age range discussed, is that scratch is in English.
12:36:56
_death
a kid should start with a retro machine.. logo, assembly, basic... but that's my path so I may be biased :)
12:37:13
pjb
pascal is a good programming language (way better than C). Of course, you could teach kids pascal (for the typed procedural kind of programming languages), but there are better choices, such as Modula-2, Oberon or Modula-3.
12:37:24
dim
_death: I want to transform my RPi here into exactly that, a lisp machine like environment would be a dream
12:38:41
pjb
Or, if we had a high level sophisticated professionnal programming environment, we could directly throw them on it, but that's not the case (Xcode is horrible for the languages it compiles, I won't even mention Android Studio).
12:40:25
dim
varjag: the fun thing about kids is that they don't have a clue about what is complex or sophisticated, they just want to have fun
12:42:44
dim
I just tried printing unicode characters on the termninal with several ncurses based lib and failed miserably
12:44:13
beach
dim: My application Transclime for learning Vietnamese uses McCLIM. The characters are displayed just fine.
12:44:49
dim
I have quite a TODO on my plate already but with some luck will get down to trying MCCLIM later today
12:47:25
fourier
pjb: I find XCode really good at what it does. Defining actions on buttons by drag&drop buttons to the parts of code where you want to have callback? awesome! don't remember any other environment like this. It has its downsides (like crashes on refactoring attempts), but it is really good integrated with llvm, and a profiler is great as well.
12:50:36
fourier
never tried Android Studio, but IDEA which it is based on is fantastic for Java and Android development. Nothing is better.
12:53:18
pjb
fourier: it's good, but what I mean is that for newbies, it drags a lot of history and "unintegrated" pieces. Assuming that AI won't do all our programming in 50 years, imagine what kind of development environment you would want to work with, and what kind of programming language!
12:58:28
beach
dim: I just double checked that it also works in the listener. It does: http://metamodular.com/CLIM-listener.png
13:01:21
fourier
for newbies as I said, it looks like there is nothing better than Scratch or DrRacket. I personally believe kids could get easy with Python as well - it is highly accessible, intuitive and its documentation is great
13:03:51
myrkraverk
fourier: python has some drawbacks when it comes to nontrivial projects though (but I didn't write what those were, and don't remember the details anymore)
13:03:53
dim
for kids my constraints are: 1. you control *all* that happens on the screen (console is great) 2. you can play interactively with the code you write 3. you don't have to learn what a file is and how to compile it and what is a binary image
13:05:09
dim
I don't think you can learn python without being introduced to the file system and what is a text editor first
13:05:50
dim
myrkraverk: true, but it's not visual enough for my taste and ambitions, which is on top of the constraints
13:06:43
dim
first, some pgloader bugs to get done with, then re-publish tapoueh.org, then my weekly reporting, then MCCLIM, tho
13:08:28
dim
a “nice to have” that I think I'm going to forget about is that it should be easy to show up to a friend's place with what you did and show them and play with it with them
13:09:15
dim
that implies your usb stick embeds a Portable self-contained thing that can run on windows, mac or linux --- even game studios don't make that
14:13:52
beach
He has contributed several things to McCLIM, and I think he uses the McCLIM tools and applications almost exclusively.
14:14:29
beach
My new tool "the USE finder" is a step in the right direction, but Emacs lacks the ability to distinguish between different roles of a symbol.
14:14:31
beach
So, even though I have a list of all the symbols in a file that do not have package markers and that have a different home package than the package of the file being read, it is still a lot of work to add explicit package markers.
14:15:45
Xach
many implementations make it hard to accidentally do that with the CL package, but package locking for other packages is uncommon
14:17:14
dim
it happens to me a lot when I evaluate code interactively (C-M-x or C-c C-l) with references to symbols from another package that are not yet exported/imported, and symbols are mistakenly interned into the current package
14:18:07
beach
Xach: I have already found some interesting problems. For example Drei, the input editor of McCLIM :USEs the CLIM package and then it defines a function named POINT, and it also exports that symbol.
14:19:48
beach
dim: My use case is basically the opposite from yours. I would like to add explicit package markers to avoid :USE-ing external packages other than the COMMON-LISP package.
14:19:52
Xach
dim: the case is more like beach is describing, where a package :uses another, and the using package defines something with the inherited symbol without intending to
14:21:34
Xach
Yes, doing it on purpose is also fine - it is the accidental use that can be the most surprising.
14:22:09
Xach
That is why I have taken to start off with explicit :imports, but then I sometimes also wish to check that I am only importing external symbols
14:22:27
dim
this one: https://github.com/dimitri/pgloader/blob/master/src/monkey/mssql.lisp --- it really should be turned into a contribution to the original lib...
14:27:47
beach
That won't be very hard, once I finish Second Climacs. But what know how to do is to find a list of such cases including file positions.
14:29:47
beach
I can customize the SICL reader to process tokens with two package markers so that it checks whether the symbol with that name is exported or not.
14:55:22
beach
Xach: It was a three line addition to my USE finder. No file position yet, but the symbol is printed.
15:41:04
pjb
beach: alternatively, you may configure C-x ` with the variables: compilation-error-regexp-alist compilation-error-regexp-alist-alist
16:18:23
parjanya
what is this? it looks very interesting. https://github.com/gabriel-laddel/masamune
16:22:10
dim
but now that http://tapoueh.org is back online I am almost there to be able to have a look ;-)
16:25:31
dim
if I had to start over I would use Markdown or something like from this list: https://www.staticgen.com
16:26:02
parjanya
dim: I was going to ask that : o ) I’m about to use markdown +pandoc, just because I wrote my dissertation using that too
16:28:16
parjanya
I had to make a pdf with a translation in facing pages, | original | translation |, and for that I parsed 2 markdown files with the same structure with pandoc, and parallelized (sp?) each chunk using the json output... quite ugly, hah, but it did work
16:31:41
|3b|
ACTION isn't sure if having a relatively large number of issues is good or bad though... sign of users if nothing else i guess
17:27:34
BusFactor1
Here's a collection of all my new CL synthesizer test tracks all in one place: http://busfactor1.ca/kruhft/
17:57:24
BusFactor1
Waves can take an arbitrary number of wave definitions, so I think I can make chords that way
17:59:05
BusFactor1
For now yeah, if someone came up with a platform agnostic play-sound function it would be portable.
18:00:25
BusFactor1
I don't want to depend on any external libraries. I'm trying to write stuff that's simple to package up to put into the App store and I haven't gotten to that part yet.
18:48:45
dim
beach: it looks like there's a whole set of additional packages I might want to install on-top of that, like maybe clouseau and climacs and clim-examples and maybe more, right?
18:53:10
dim
Connection failure to X2816.0 server private/tmp/com.apple.launchd.xDUYWf1Ys9/org.macosforge.xquartz display 0: Protocol version mismatch
19:01:08
beach
dim: Yes, Clouseau and Climacs are very useful. So is the CLIM debugger if you are going to run everything standalone. The CLIM debugger resembles the SLIME debugger.
19:09:03
BusFactor1
Eturia, my little 'lisp machine' is back online: http://busfactor1.ca/bin/eturia/
19:09:28
beach
dim: I am going to spend time with my (admittedly small) family the rest of the evening. I'll be back tomorrow morning (UTC+1). Good luck.
19:10:38
TruePika
I'm running Flight Simulator on my main system, and just came up the idea (again) to automate that ATC game in bsdgames IIRC
19:11:27
TruePika
anyone here have experience with capturing "screen" data (say, through screen(1)) in CL?
19:12:10
TruePika
e.g. able to access the character array as an array of stuff like codepoint, color, etc.
19:14:12
TruePika
with IIRC 192MB RAM, though that is unlikely to have much of an impact on compiliation time
19:15:15
TruePika
well, that's not useful; (ql:system-apropos :screen) ==> #<SYSTEM cl-glfw-opengl-rend_screen_coordinates / cl-glfw-20150302-git / quicklisp 2016-06-28>
19:20:22
TruePika
ACTION is in 2 IRC channels trying to come up with a backbone architecture for a program, meanwhile his airplane is just hovering in the air since FSX is paused >_>
19:35:08
raydeejay
is there anything similar to this thing http://paste.lisp.org/+7ADV that I perpetrated?
19:37:12
TruePika
okay, now I have an idea of how to interact with `screen`...now the big question is how to actually establish the required streams
20:03:07
pjb
TruePika: you interact with screen by typing the screen escape character followed by a screen command, as documented in man screen.
20:04:29
pjb
But anyways in general, the way to automate a terminal program, is to hook to it as a terminal.
20:05:33
pjb
Now, of course, you could run and drive screen with expect, and then write an expect script to create screen virtual terminals switch to them and run and interact with programs in screen virtual terminals. If that's what you want…
20:07:00
pjb
TruePika: Have a look at FlightGear. It has already an automatic ATC (and also, user driven ATC workstations).
20:07:53
pjb
Why stop at the terminal level? Hook a webcam in front of your screen, and do AI optical recognition. Or directly hook into the internals of atc.
20:10:00
TruePika
this isn't related to any flight simulators, except for my inspiration for restarting my project to automate it
20:10:58
pjb
Flight Gear is a flight simulator, but since it's realistic, they also have ATCs, and humans to direct traffic, and automatic atc controller because there are not so many human having fun with atc.
20:11:56
pjb
TruePika: then really consider using a camera and optical recognition, so that you can write your atc controller without being specific to atc(6).
20:13:32
pjb
One of the first lesson of robotics, is to direly avoid coding specific parameters. Control routines shall adapt to any hardware configuration.
20:13:59
pjb
Similarly, you will want to solve the air traffic control problem, it doesn't matter how the interface looks, or what are the particular of the system you hook to.
20:14:53
pjb
Yes. Then crack it open and add the hooks you need internally. It'll be easier to do that than to drive it from the terminal.
20:15:01
TruePika
(if I wanted to make a bot for general ATC, I'd hook into Flight Simulator via official APIs anyway)
20:15:59
TruePika
...you _are_ aware there is an official, public API for interacting with FSX, right?
20:22:07
TruePika
pjb: Just did some research, at this time, it isn't really worth it for me to switch away from FSX (especially considering system specs)
20:26:21
pjb
Really, take the sources of atc, add a socket interface where you send the strips and where you receive he commands, and you'll be set in one hour.
20:27:59
pjb
The you can: atc --listen-port 4009 # in a terminal, and control-atc --atc-port 4009 # in another
20:28:39
TruePika
it doesn't help that I've written _very_ little network code, but I'm trying (for now, at least)
20:29:16
pjb
TruePika: my point here is that it will be much easier to do that to passably successfully drive a program from its terminal interactive I/O with expect.
20:30:01
pjb
expect(1) is a last ressort tool, to be used only when no other solution can be implemented.
21:30:26
himmAllRight17
lol, I'm working on something and I want to check with people that it makes sense
21:35:22
edgar-rft
himmAllRight17: sorry, but I don't know if it makes sense that you're working on something
21:42:00
aeth
Does #'= behave specially for floats or should floats (almost) never use #'=, like the advice in most languages? The hyperspec doesn't mention it on the = page, so I'm thinking it's the latter, but (1) most implementations might do something that's not in the spec and (2) it might be described in some totally different part of the spec.