Lonesome Road
June 14th, 2008TuxGuitar is a great piece of software. Here is my arraignment of Joan Baez’s Lonesome Road. It is in drop D and uses a steady alternating bass.
PDF
Tuxguitar File
TuxGuitar is a great piece of software. Here is my arraignment of Joan Baez’s Lonesome Road. It is in drop D and uses a steady alternating bass.
PDF
Tuxguitar File
Guitar workshop has been posting some videos from one of my favorite gutarist Steve Baughman. I spent a few months working through his version of greensleeves back in the 90’s. The funny thing was, above one of the bars about 4 pages into the song was a note that said “if you get this far call me” followed by his phone number.
Here is some javascript that takes a rss feed and creates a foldable summary list.
NOTE: Xcopy is now deprecated, please use Robocopy.
Wtf, is robocopy. No thanks, i’ll wait. I’m mean, come on it’s dos all of the commands are deprecated.
robocopy /? - made me laugh.. A little.

Donald Knuth would like a standard name for “Hightech Grief”. He is asking people to blog about their favorite term in the hopes that the best one will natural emerge as the winner. My personal favorite is the term “Technofear” coined by Neil of The Young Ones circa 1980.
“Technofear! It’s happening again! All the machines are ganging up on me. Vyvyan!”
I was writing some javascript the other night and became really frustrated. It appears that the concept of a closure in javascript is not the concept that I learned. A closure is suppose to bind the state of the variables at the time of the function definition. Let me give an example:
(defun foo ()
(let ((a 4))
(let ((func1 (lambda () (print a))))
(let ((a 6))
(let ((func2 (lambda () (print a))))
(funcall func1)
(funcall func2))))))
In the above lisp code, when func1 is define the value of the symbol a is 4 and when func2 is defined the value of the symbol a is 6. When I call (foo) I get what I expect, 4 is printed followed by 6.
For some reason (read on for my reasoning) this same concept about closures does not hold in javascript. Here is an example:
repl> var a = 4;
repl> var func1 = function() {alert(a)};
repl> var a = 6;
repl> var func2 = function() {alert(a)};
repl> func1();
repl> var func3 = function(a) {return function() {alert(a)}};
repl> var func4 = func3(a);
repl> func4();
repl> var a = 8;
repl> func4();
repl> func2();
First we set the symbol a to 4 and we then define func1. We change the symbol to 6 and define func2. When we call func1() a dialog box is displayed showing the value 6 not 4 which was the binding for the symbol a at the time func1 was defined. There is a fix to this situation, func3 is high-order function that has the same functionality as func1 and func2. In the last three lines you’ll see that I change the binding for a to 8. When func4 is called we get 6 which is the binding for a at the time that func4 was defined. When we call func2 we get 8 the new value of a.
The main gotcha here, for me anyway, is the fact that var does not create a new symbol. It destructively alters the value of the symbol a. I tried this same set of test using objects and new, thinking that surely new would return a “new” symbol. But the value gets destroyed as well. My guess is the only time javascript creates a new symbol is during a function call and that is why all closures have to be high-order functions in javascript.
BTW, you could duplicate javascripts behavior in lisp by using the following code:
(defun bar ()
(let ((a 6))
(let ((func1 (lambda () (print a))))
(setf a 9)
(funcall func1))))
This would print out 9.
Ummm. Wow. Sam Weber and Jillian Tamaki are really good.

I ported the GlAutomata screensaver, that I wrote in 2003, from unix to windows. You can get a copy of it here. After running the installer you will see glautomata listed along with your other screensavers.

I added the entry point instruction to the 6502 screensaver. It allows you to load code at any place in memory.
jmp $1000 *=$1000 lda #5 sta $603
The code above will start at the default address $600 and will immediately jump to address $1000 where the rest of the program is stored.
The funny screen shot above is from the Stefan’s santa clause demo(I know I’m a month late). It uses the entry point instruction to store the bitmaps in convenient locations.