Giter Club home page Giter Club logo

llthw's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

llthw's Issues

Chemistry => just a question

Does Lisp have a library or is suitable to handle Chemistry and advanced Chemistry as Fortran is?
I know a young boy who just got into Chemistry in an University. And I thought of introducing him in programming through Lisp....
Although I am also a Lisp learner.
Also: Some links are broken...
Is thephoeron alive? Seems that he has given up the project...

Runaway ajax requests

There appears to be an issue with the jQuery code which loads the reference entry content into the modal, where it reloads all the scripts as well as the content several hundred times in some cases before successfully loading the content into the DOM.

This is affecting the performance of the web front-end, and skewing google analytics results.

Where to begin contributing?

I'm a fairly new Lisp hacker but I want to write notes as I learn and possibly turn them into parts of this book along the way as I research various topics for everyone's profit.
Where do I begin contributing to this though? LLTHW's webpage marks almost all chapters as pending review or incomplete. I'd also like some pointers from someone who's already working on the book so we don't duplicate each other's effort or otherwise miss each other's ideas and thoughts.

Exercise Formatting Guidelines

I'm thinking the format for every exercise should evolve to meet the following template:

  • Very brief intro to the subject, to close the problem domain
  • the code example
  • (if necessary) some brief notes explaining tricky code or new concepts
  • A "What You Should See" subsection, showing output from code run
  • Full explanation of new concepts, etc.

1-01-00 links broken

The links from this section do not have .md on the end... Not a big problem but it would still be good to fix it.
(In case it's needed, I am using Chrome on Android lollipop.)
I am an absolute newbie to Git... Can I edit the links or does LispTO have to?

Make for Gitbook

Considering this is already written in markdown. It wouldn't be hard to format it for gitbook and use that as a distribution method (not necessarily replacing the current method).

This is not a complaint, merely a suggestion.

website : 502 Bad Gateway

Hi,

This is probably not the right place to talk about it, but I couldn't find any better.
Since some days (maybe weeks), the llthw website is not accessible and returns a 502 Bad Gateway error. What is happening? Is there a new URL?

Best regards,

stoempsaucisse

This is not built for learning

Ostensibly, this is a book for learning lisp through examples, exploration, and experiments - i.e. the hard way.

I did lpthw and it was very effective. This is NOT effective. I'm incredibly frustrated with the writer's tendency to assume the reader is tracking 100%. That every time a concept is mentioned - even without an example - it will just stick. After wading through the earlier and debilitatingly long chapters I had thought it would get better.

Maybe this will one day be a great resource for learning lisp. For now, I am going to other resources.

A friendly word to the author: thank you for taking the time to write this to the degree you already have. Please, if you choose to continue this project do these three things to improve your pedagogical approach:

  1. Walk readers through the fundamental concepts many times and in useful examples. Take them to the edge of the concept - the place that defines an Atom from a Cons Cell and the functional difference between the two (like: why does this distinction matter? How will it affect me? What mistakes would I make if I didn't know this?)
  2. Answer the questions: why is this built like this? and Why does this matter?
  3. Use examples that are clear and easily parsable. This is a prime example of how not to do that:
    (with-output-to-string (out)
    (with-input-from-string (in ""Can I ask who's calling?"")
    (let ((io (make-two-way-stream in out)))
    (format io "~A It's the Jovian moon, Io!" (read io)))))

Why on someone's first exposure to streams in Lisp would you subject them to this complex, inscrutable, impractical atrocity? Oh yeah, you tell us: because we can. This is not the time to show off your clever lisp convolutions, nor your shitty moon puns.

At this point you haven't introduced anything about the difference make-string-input-stream and with-input-from-string, much less the make-two-way-stream, nor demonstrated any of them in isolated uses. You just throw them all together at once and tell us to swim. I understand that I can go try it myself, but then I could just go and read the documentation and do that anyway, the purpose of this is to learn - supposedly.

Teaching is not the time to be smart, it's the time to simplify so that your student can feel smart.

One final, unrequested feedback: Please think about the progression of topics. Make the development of these topics have some sort of logical progression. It currently feels like: here's another thing you might want to possibly know about a programming language in no particular order.

Alphabetical order is for documentation, motivated order is for education.

/rant

Lowering the barrier for entry in Common Lisp

To lower the barrier for entry into the Common Lisp ecosystem, consider including CL21 in the text of L(λ)THW from the beginning.

Considerations:

  • Is CL21 stable and mature enough to document in a teaching resource?
  • Will teaching CL21 from the beginning of L(λ)THW confuse new students of the language or help them understand ANSI Common Lisp better, by putting it in context?
  • What structural work will be necessary to the existing text of L(λ)THW to make it conform to CL21?
  • Are all discussed libraries compatible with CL21?

Web App Memory Usage

While performance of the web app appears to be snappy and responsive, no issues with serving static or dynamic content over ajax or standard requests at the moment, it is currently using far more memory than ideal, in some cases over 500mb.

This could lead to performance issues under heavy load, potentially exhausting the stack or having the app automatically terminated if it exceeds memory limits of the hosting account.

Various strategies for improving performance and limiting memory usage need to be investigated and implemented.

Part 3 Chapter on Typesetting

To extend the discussion of documentation and literate programming from Part Two, it would be ideal to include a new chapter early in Part Three focused on Typesetting with Common Lisp, to either leverage or fully replace the LaTeX stack.

Marc Battyani's CL-PDF + CL-Typesetting libraries are ideal candidates for discussion. A discussion on multiple output formats from single-source text, using CL-Docutils, CL-Markdown, and 3bmd will also be useful.

This chapter will be essential for typesetting Quantum Circuit Diagrams automatically from Lisp source for chapter 3.14, for feature-parity with Quipper and visualization purposes.

Chapter 1.12, Namespaces, Packages etc.

Extend the exercises on Packages to include an enlightening factoid from The Complete Idiot's Guide to Common Lisp Packages by Erann Gat:

"The most important thing to understand about packages is that they are fundamentally a part of the Lisp reader and not the evaluator."

This is essential to the understanding of macroexpansion across package namespaces, as pointed out by Doug Hoyte in regards to anaphoric macros; thus the namespaces and packages chapter should potentially appear before the new chapters in part one for Macros and Reader Macros, per issue #15.

ERROR: Function `PRINC' is undefined.

Working though the book and trying the princ example on the try-lisp page:

CL-USER> (princ "Hello, from Lisp!")
ERROR: Function `PRINC' is undefined.

Example in Exercise 1.1.5 gives an error

The last example in Exercise 1.1.5 that interacts with the new package that was just created gives two errors:

  1. the first line gives an error as the variable one has not been defined
  2. the last line gives an error because the nickname for the new package is newpack not new-pack

Chapter 1.10 too long

Chapter 1.10, Functions and Macros, would also be better if it was split into two, so that more detail can be provided on both functions and macros, especially macro-expansion and timing of the expansions. Very little emphasis is currently given on reader macros, and that seems to be a pretty important subject that shouldn't be glossed over.

Migrate LLTHW Web App to Asynchronous Server

The user experience for LLTHW could be vastly improved with an asynchronous web application; currently the application runs on Hunchentoot—a thread-per-request server—which is inherently greedy in terms of system resources. While useful for web applications that need to validate and process arbitrary user data in an isolated environment, LLTHW only needs to serve up content. An asynchronous web application will thus be able to maximize available system resources and provide a faster, stabler experience for all users even under the heaviest traffic spikes (such as the Hacker News fiasco this past July), and buffer against DDoS attacks.

This will also allow for a more sensible use of 3bmd to provide live-updated content, without specifically re-parsing each Markdown document for each user on request; only one copy of each parsed Markdown document needs to live in memory, which can be accessed sanely by all clients. As such this ties in with issue #3 to reduce application memory usage.

The most mature Common Lisp asynchronous server and web application framework appears to be Wookie. It is still in Beta, but it seems to be worthy of production use-cases, such as the official Wookie documentation, and the Turtl platform.

Alternative suggestions are welcome.

Deprecate Ch. 1.1, Common Lisp Bootcamp

Since it is out of keeping with Zed Shaw's LxTHW style, and seems to break the format, chapter 1.1 should be deprecated and the contents migrated to their appropriate exercises.

Loop does not work (under try lisp)

I don't know if it is a problem with jscl or something on your end, but loop is completely broken. Something as simple as:

(loop for i from 1 to 10 collect i)

gives "ERROR: Variable `FOR' is unbound."

Don't modify constant data in exercise 1.1.3

Not to teach bad habits to the reader, I'd like to suggest to build the example lists in exercise 1.1.3 using LIST instead of QUOTE. Maybe additionally use elements that are self-evaluating to avoid having to write too many quotes, so
(defvar test-list-a (list 1 2 3))
I don't know whether it's didactically better to change the way how test-list-b is constructed, too.

[website] Certificate expired

Mon Aug 6 09:18:27 BST 2018

The Let's Encrypt certificate has expired:

Expired: Sunday, 22 July 2018 at 19:21:20 British Summer Time

Regards,

Try Lisp does not go beyond "Let's do a little math"

While using "Try Lisp", I can't go beyond "Let's do a little math". When I press Next button, I see that AJAX request fires (request is sent to /math) and the content retrieved is the same. Tested in Firefox, Chrome and Safari on OS X

Chapter 2.3 too large

Chapter 2.3, Objects and Control Flow is too large and unfocused. It would be better to split the control flow exercises out to their own chapter, and the Struct exercises to another, allowing a full chapter entirely focused on CLOS. Chapters on Control Flow and Structs might fit better in Part One.

The single exercise on the Meta-Object Protocol is also deficient; it should serve merely as an introduction to the subject, with an extra credit chapter following immediately after to present MOP in full.

Last Modified timestamp on all exercises

It would be useful for reference to display the file-write-date timestamp at the top of all chapter and exercise pages, so visitors can quickly see if the text has been modified recently on a per-page basis. file-write-date returns a universal timestamp, so it will have to be formatted as a timestring with the local-time package.

DOM transformations with Parenscript

Per commit 293b267, the Parenscript-generated jQuery DOM transformations in the script module do not appear to be having any effect.

Find out what's blocking the header elements from being found and manipulated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.