Archive for the ‘Web’ Category

As someone who recently liquidated about 9 boxes of books, the majority of which I read only once but lugged around for 10 years, let me recommend that you RENT your books through a service that’s kinda like Netflix, but for books: the public library!

Rising spire of the San Francisco public Library

Since I moved, every time I have the urge to buy a book (physical or Kindle) that I think I will read only once, I instead go to sfpl.org and see if the book can be rented. It’s a great way to be slightly more careful with your money and conserve living space.

Granted, there are times you want to have an artifact. For this I’m trying to use the Kindle, because I don’t want to move boxes of books again if I can help it.

The only down side with the sfpl.org site was that it didn’t preserve my login data. Regrettably, the site login ID is an un-memorable string of digits and my strong password is equally impossible to remember. You can access your account directly by making a bookmark with the following format.

https://sflib1.sfpl.org:443/patroninfo?code=patronID&pin=loginPassword

Obviously, storing your login ID and password in a bookmark presents some security issues, so caveat lector.

In March of this year I started the meetup.com group for the Ruby programming language. I wanted to meet some other people who were interested in exploring this elegant and rich system for the expression of thought.

Well, here’s the group!

Wisely, one of our members suggested that we work together on a learning project. Our project of choice was resolved last meeting and it is a ‘text-based adventure game engine’. The generic requirement is that by creating a scenario file ( i.e. the rooms, the contents of the room, etc. ) you can feed that file to the engine and it will give you a text-based adventure story along the lines of Zork or Leather Goddesses of Phobos.

I was so inspired by the discussion we had around this last week, that I wrote a basic set of classes for the construction and population of the universe. Our working model is that everyone will attempt the assignment and then at the next meeting we will compare approaches, decide on which model works, and then collapse those “winning” implementations into our main code branch.

Bit by bit we’ll all learn new aspects of Ruby and grow our own skills. Ultimately we may unleash our inner screenwriters and create a fun game or two.

Bring me the head of Alfredo Garcia

Sunday, August 20th, 2006

No, not the movie of the same title.

On second thought, bring me his attention this a-ways.

I have mailed him from my GMail account, my domain based email account, and now I’m making a banner post at the top of my blog.

As I told him in my mail:

Alfredo, ‘twas last night while i was lounging hollywood style at the hotel san jose that the musicologist delivered serge gainsbourg followed by choice cuts off of T. Rex’s slider, surely you shoulda been there. Give a fellow a mail when you can.

Steven

I’m suspecting that either there is an overactive spam filter involved

OR

the poor guy’s gotten busy.

If you’re not in the programming field, you likely got hit by a bunch of acronyms there as if you had been hit by a bus. Let me break it down:

  • AJAX : A technique that makes websites look fast and smooth, unlike “old” style application. Think about the way Google maps looks, or Netflix.
  • DOM: HTML (the language that web pages are written in) can be seen as a “tree-like” structure. This structure goes by the name of “DOM”, or “Document Object Model”
  • Javascript: A language for telling your browser ( Firefox, IE, etc. ), to do something to the HTML page sent from the server within your browser. Thus what’s on the server and sent to everyone else doesn’t change, just your particular ‘view’ in *your browser

So, anyway, if you want to write in the AJAX mindset, you need to understand the latter two ideas rather well. The last time I really looked at Javascript was for one of my senior-year classes (way) back in 2000. Javascript has come a long way (baby) and with the advent of the AJAX technique, it’s really the only game in town.

I wrote a very simple script to help me get the hang of the language, so for you, here it is.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="Steven Harms">
<!-- Date: 2006-08-19 -->
<script type="text/javascript" charset="utf-8">
    function configurePage(doTextChange){
        // doTextChange is a variable passed as a YES or NO argument that
        // is used to decide if the default text 'Moopy Hobo' is changed to
        // something else

        //Get the HTML <body> tag reference
        var htmlParent = document.getElementsByTagName('Body')[0];

        //Create a <p> tag element
        var childEl = document.createElement('p');

        // This is something subtle, you need to create a text node and bond
        // that to the <p> element.  In the DOM inspector, this shows
        // up as 'nodeName' = #text
        var tf = document.createTextNode("Moopy hobo");

        // Bond the text to the <p> element
        childEl.appendChild(tf);

        // Handle the argument
        if ( doTextChange == 'YES' ){
            childEl.firstChild.nodeValue="Monsier Hobo"
        }

        // This is for getting familiar with using the DOM to manipulate
        // text elments

        //Changing the style at the line level...
        childEl.style.width="200px";
        childEl.style.fontFamily="garamond; helvetica";

        //Changing the style at the line level, but with CSS
        childEl.className='graybackground';

        //add some other JavaScript events
        childEl.addEventListener('mouseover',changebk,false);
        childEl.addEventListener('mouseout',dazzle,false);

        //Finally, put this loaded up <p> tag onto the page by appending
        //it to the <html><body> node
        htmlParent.appendChild(childEl);

    }

    // A function for callbacks, the alert() is pretty annoying when
    // testing so I've commented it out, but enabling it makes things
    // a bit more obvious
    function dazzle(){
        //alert('you are dazzled');
        this.className='graybackground'
    }

    //Nifty!
    function changebk(){
        this.className='redbackground'
    }
</script>

<style type="text/css" media="screen">
    .graybackground{
        background-color: #BBB;
    }
    .redbackground{
        background-color: red;
    }
</style>

</head>
<body onload="configurePage('YES')">
<!-- Look Ma, no content! -->
</body>
</html>