Bill posted a bunch of notes here, that, based on what he said, might be interesting for a beginner.
Category: Link
If you want to change the world
If you want to change the world, you will need to learn how to sell. That’s just the way things are…
Python and Django
Implementing vector-for-each in PLT
François asked how one might implement vector-for-each. Here are two solutions that were provided:
Matthias
#lang scheme
(define-syntax for-each-vector
(syntax-rules ()
((for-each-vector proc vec ...)
(let ((len (min (vector-length vec) ...)))
(do ((index 0 (+ index 1)))
((= index len))
(proc (vector-ref vec index) ...))))))
(for-each-vector
(lambda (a b) (display (+ a b)))
#( 1 2 3) #( 1 2 3))
(newline)
;; functional, preferred
;; for-each-vector2
;; (All (A C ...) ((C ... -> A) (Vectorof C) ... -> A))
(define (for-each-vector2 p . vec)
(for ((i (in-range (apply min (map vector-length vec)))))
(apply p (map (lambda (v) (vector-ref v i)) vec))))
(for-each-vector2
(lambda (a b) (display (+ a b)))
#( 1 2 3) #( 1 2 3))
(newline)
#lang scheme
(require srfi/43)
(for ([a #(1 2 3)] [b #(1 2 3)])
(display (+ a b)))
(newline)
(vector-for-each
(lambda (i a b) (display (+ a b)))
#(1 2 3) #(1 2 3))
A Maven build number plugin
Here is a plugin to:
get a unique build number for each time you build your project. So while your version may remain constant at 1.0-SNAPSHOT for many iterations until release, you will have a build number that can uniquely identify each build during that time. The build number is obtained from scm, and in particular, at this time, from svn. You can then place that build number in metadata, which can be accessed from your app, if desired.
The mojo also has a couple of extra functions to ensure you get the proper build number. First, your local repository is checked to make sure it is up to date. Second, your local repository is automatically updated, so that you get the latest build number. Both these functions can be suppressed, if desired.
Optionally, you can configure this mojo to produce a revision based on a timestamp, or on a sequence, without requiring any interaction with an SCM system. Note that currently, the only supported SCM is subversion.
(via Maven)
A Maven token replacement plugin
An insane application of syntax-rules
Differences between the Chez and Ikarus module systems
An R6RS library and a Chez top-level module have similarities: they both have bodies that contain variable and syntax definitions, some of which can be exported, and you can import one module into another. So, they’re similar on the surface. But there are major differences.
1. Outer scope
Chez modules exist in some environment (typically, in the interaction-environment, but that can change) that contains bindings that include the module keyword itself. The outer scope in the environment in which the module is expanded is visible inside the module (unless you restrict it using the import-only keyword). R6RS/Ikarus libraries do not exist in an environment: they are stand-alone entities with their own syntax and so on.
2. Expansion and Evaluation
Ikarus libraries are automatically expanded/compiled when you import them (thus, there’s a mapping from library names to some storage that contains libraries’ code). Chez modules are not associated with any storage: if you import a module and it doesn’t already exist in the environment, you get an error. This means that in Chez, it is your duty to ensure that modules are “loaded” before they are used. Now “loaded” is a loaded term as it implies all of “compiled”, “visited”, and “invoked” (or “revisited” in the Chez lingua). Moreover, the load, compile, visit, and revisit are operations that operate on files, not modules, (such files may contain any code, not just modules) and work by modifying the environment in which such files are loaded, compiled, visited, or revisted. Operations on libraries in Ikarus do not modify the environment since no environment is required for performing these operations. In short, you need to manage the phase dependencies (when files are loaded/compiled/visited/revisited) yourself so that compile-time and run-time information are available when needed.
Aziz,,,
(via Ikarus)
What you do
We no longer care what you say.
We care a great deal about what you do.
If you charge for hand raking but use a leaf blower when the client isn’t home
If you sneak into an exercise class because you were on the wait list and it isn’t fair cause you never get a bike
If you snicker behind the boss’s back
If you don’t pay attention in meetings
If you argue with a customer instead of delighting them
If you copy work and pass it off as your own
If you shade the truth a little
If you lobby to preserve the unsustainable status quo
If you network to get, not to give
If you do as little as you can get away with
…then we already know who you are.
(via Seth)
A Brief Code Review of Wolfenstein 3D for iPhone
Here.
(via Reddit)