Category: Uncategorized

  • LSL: Newspaper Stand (Pull Data From an API and Display it in Second Life)

    Second Life news stand

    Second Life news stand

    One of the more popular objects that I created in Second Life is the News Stand. This charming device takes any query term and displays the two latest headlines from Yahoo! News. Clicking the news stand will load the top news story for the topic in a web browser.

    I’ve gotten more requests to customize the script than I can possibly keep up with, so I’ve decided to release the code under a creative commons license. I hope you find it useful! Please let me know if you make improvements, so that I can link to them from here.

    Unfortunately, parsing XML at all and RSS feeds in particular is extremely messy in LSL. This script doesn’t contain a general RSS feed parser — the parsing code was written specifically for the Yahoo! news feed.

    // News Stand script
    // by Ann Enigma
     
    string url="http://news.search.yahoo.com/news/rss?p=";
    key requestid;
    string current_url = "http://news.yahoo.com";
    integer gLine = 0;
    key data_card; // for settings notecard
    string query;
     
    integer mins = 10; // number of minutes between refreshes
     
    get_news() {
        llWhisper(0, "Refreshing the news...");
        requestid = llHTTPRequest(url,[HTTP_METHOD,"GET"],"");       
    }
     
    default
    {
        state_entry()
        {
            data_card = llGetNotecardLine("Settings",gLine); // load settings from notecard
        }
     
        // read data from the notecard
        dataserver(key query_id, string data) {
            if (query_id == data_card) {
                if (data != EOF) {    // not at the end of the notecard
                    if (gLine == 0) {
                        query = data;
                    } 
                }
            }
            state setup;
        }
        changed(integer change) {
            llResetScript();
        }
    }
     
    state setup {
        state_entry()
        {
            url += llEscapeURL(query); // set the url
            get_news(); // get the news!
            llSetTimerEvent(60*mins); // every mins # of minutes
        }
     
        touch_start(integer total_number)
        {
           llLoadURL(llDetectedKey(0), "Current Top Story", current_url);
        }
        http_response(key req_id, integer status, list metadata, string body) {
     
            integer count = 0;
            string display;
     
            if (req_id == requestid) { // parse the results (unfortunately messy)
                list result = llParseString2List(body,["<",">","\n","[","]"],[]);
                integer length = llGetListLength(result);
                integer i = 0;
                for (i = 0; i < length; i++) {
                    if (llList2String(result,i) == "title" && llList2String(result,i+4) == "/title") {
                        display += llList2String(result,i+3) + "\n";
                        if (count == 1) { 
                            current_url = llList2String(result,i+6);
                        }
                        count++;
                    }
                }
                llSetText(display, <1,1,1>, 1.0);
            }
        }
        timer() {
            get_news();
        }
        changed(integer change) {
            llResetScript();
        }
     
    }

    This script is released under Creative Commons License. Have fun!

    Create a notecard called “Settings”, with a single line containing your search term. For example:

    Educational Technology
    

    The original news stand comes with these instructions, which may come in handy:

    To set up the News Stand, simply open the "Settings" notecard, delete the default search term, and type in your own!
    
    This gadget will refresh every 10 minutes, and will display the top two headlines on Yahoo! News for any search term. If you click on the news stand, it will load the top story in a web browser.
    
    If you would like to build your own news stand, you can simply drag the script and "Settings" notecard into any object.
    

    If you want the no-assembly-required version, the News Stand is available for L$350 at Xstreet SL Marketplace or from the ICT Library on Info Island in-world.

    The original news stand object was created by (now former) student Kyle Pouliot.

  • Mobile app: WHEREAMI

    WHEREAMI is a mobile application that accepts a username as input, searches public profiles on various location-aware services, and returns the user’s last known location via text message.

    Just text 41411 with whereami <username>, where <username> is a username that you or someone you know is likely to use.

    results of WHEREAMI hmason

    For example, if you text whereami hmason to 41411, you’ll see a response much like the image to the left.

    This app works on the principle that people tend to use the same username for many applications. The WHEREAMI script will search through a variety of web services for a result for that username. All of the information is public and available without logging in.

    Right now, the script will search Brightkite, then Dopplr, and finally Twitter. If you know of another site with public user location information, please comment below and I’ll add it!

  • Twitter: A greasemonkey script to show who follows you

    A couple of days ago I saw @skap5’s comment:

    “Dear Twitter Is it too much to ask to add a follower marker so I can know if someone is following me and not just if I am following them?”

    I think that Twitter could benefit from displaying more information on the home page, and this idea was easy enough to code up. It should save some time and make the Twitter homepage that much more useful.

    twitter_showfollowers_screenshotThe script displays a tiny icon on top of the portrait of people who are following you back on your Twitter home page. It leaves your non-followers alone, though it would be easy enough to develop a version that puts silly mustaches on them.

    This is only a first version, and I welcome your comments and suggestions.

    If you already have Greasemonkey installed, get the script here, or install it from here as a Firefox extension thanks to the script compiler.

    The icon is a free icon courtesy of famfamfam.

  • Welcome

    Welcome

    Hello, and welcome to everyone who found this site via Torley’s story on the Second Life blog!

    I lead the Immersive Media Lab at J&W University. Several of our projects have utilized Second Life, including Virtual Morocco (cultural exchange and tourism promotion for the country of Morocco) and SLMetrics (a study of behavior modeling in virtual environments).

    This isn’t a Second Life blog, but you will find LSL scripts and other related ephemera around.

    You can subscribe to the RSS feed for this site, or find out more about me at HilaryMason.com.


  • The Essential Elements of Geek Culture (March, 2008)

    Office Space Movie Poster

    I was talking to my web programming seminar about regular expressions and made an allusion to the xkcd comic on that topic. Unfortunately, none of them had seen it, probably because none of them were familiar with xkcd.

    Students should become familiar with the concepts and practice of the discipline, but also with the culture and in-jokes that will help them fit in when they get into industry or graduate school. I also like to get people to laugh in ways that are relevant to the subject material (yes, I use a lot of cheesy geek jokes — ask me to tell you my LISP joke sometime).

    I asked the Twitter community what other geek cultural elements I should introduce the students to, and here are the answers:

    This list is thanks to (in order of appearance) @mediacrisis, @rubaiyat, @techpickles, @mattgillooly, @hempstyle, and @inkedmn.


    <!–

    –>