Poor man’s website downloader

alias wgetr="wget -rSNpk -np --execute 
  robots=off -U \"Mozilla/5.001 (windows; U; NT4.0; en-us) 
  Gecko/25250101\" $@"

Monday, August 31, 2009 — 1 note

Mixins in Scheme

#lang scheme

(define person% (class object% 
		       (init name)
		       (super-new)
		       (define current-name name)
		       (define/public (set-name name)
			 (set! current-name name))
		       (define/public (get-name)
			 current-name)))

(define (talkable-person %)
  (class % (super-new) 
	 (define/public (talk)
	   "blah blah")))

(define talking-person% (talkable-person person%))

(define gg (new talking-person% (name "GG")))
(send gg get-name)
(send gg talk)

bash-3.2$ mzscheme mixin.ss 
"GG"
"blah blah"

Monday, August 31, 2009

Interfaces in Scheme

#lang scheme

(define person-interface (interface() get-name set-name))

(define person% (class* object% (person-interface)
			(init name)
			(define current-name name)
			(super-new)
			(define/public (get-name)
			  current-name)
			(define/public (set-name name)
			  (set! current-name name))
			))

(define gg (new person% [name "GG"]))
(send gg get-name)
(send gg set-name "Ganesh Gunasegaran")
(send gg get-name)

(is-a? gg person-interface)
(is-a? gg person%)


bash-3.2$ mzscheme oops.ss
"GG"
"Ganesh Gunasegaran"
#t
#t

Monday, August 31, 2009
Wanna fight?

Wanna fight?

while hungry 
       ping mom
end

while hungry
       ping mom
end

This is odd, github showing dev trace?

This is odd, github showing dev trace?

Announcing baby girl GA release :P

Announcing baby girl GA release :P

Easy comment/uncomment selection in emacs

Add this to .emacs

;; Comment/Uncomment region
(global-set-key (kbd "s-/") 'comment-dwim)

Toggle comment of the selected region by pressing Apple + /

Sunday, August 16, 2009

OOP in Scheme

#lang scheme

(define student% (class object%
                  (init name age)
                  
                  (define this-name name)
                  (define this-age age)                  
                  
                  (super-new)
                  
                  (define/public (get-name)
                    this-name)
                  
                  (define/public (set-name name)
                    (set! this-name name))
                  
                  (define/public (get-age)
                    this-age)
                  
                  (define/public (set-age age)
                    (set! this-age age))
                  ))
> (define gg (new student% [name "Ganesh"] [age 28]))
> (send gg get-name)
"Ganesh"
> (send gg get-age)
28
> (send gg set-name "GG")
> (send gg get-name)
"GG"

Saturday, August 15, 2009

parameterized procedures in Scheme

(define fav-color (make-parameter 'blue))

(define whats-ur-fav-color? 
  (lambda ()
    (fav-color)))
> (whats-ur-fav-color?)
blue
> (parameterize ((fav-color 'red))
             (whats-ur-fav-color?))
red

Friday, August 14, 2009