LiveJournal Meme Development
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 13 most recent journal entries recorded in LiveJournal Meme Development's LiveJournal:

    Friday, June 4th, 2004
    1:34 am
    [emosnail]
    connections
    I know nothing about programming and little about "memes," so please forgive my possibly completely foolish intrusion into this meme development community, but I was wondering if there currently exists or could be made a "meme" or otherwise simple programmatic tool that will show you how one username is connected to another (for example user_1 is friends with user_2 who is friends with user_3 who is friends with user_n).

    Current Music: flogging molly
    Wednesday, April 28th, 2004
    10:00 pm
    [ianiceboy]
    Interest Data
    Find a user's interests by ID and the number of people listing that interest:
    http://www.livejournal.com/misc/interestdata.bml?user=ianiceboy

    As mentioned in [info]featureannounce. (As mentioned in [info]news.)
    Saturday, March 13th, 2004
    2:17 am
    [datura]
    just a question.
    ~*~
    i figured this place would be the best place to ask it. i don't know anything about programming or even that much about Livejournal, but has someone, and if not, is it even possible, made a tool that can list the top ten (or however many) words used most in your entire journal? I've always been rabidly curious to be able to do that, but doing it manually would be so tedious..

    Thanks!
    Saturday, March 6th, 2004
    12:23 am
    [marnanel]
    Dalton, a Python fdata library
    LJ supports a protocol called "fdata" which lets you find the friends and friends-of lists of a user in a machine-readable format rather than using a scraper-- see [info]ianiceboy's post previously. Now that fdata is documented, I've taken Joule's fdata-reading backend and converted it to a Python library. This should make it pretty simple to write new fdata tools. The library also handles caching of the fdata automatically.

    This is still pretty experimental, and I'd really love feedback. What I have so far is here:

    http://marnanel.org/dalton/

    Current Mood: bouncy
    Friday, March 5th, 2004
    9:39 pm
    [ianiceboy]
    Friendly tools
    http://www.livejournal.com/misc/fdata.bml?user=ianiceboy
    Friend data presented in an easy to read (and harvest) way.

    http://www.livejournal.com/users/ianiceboy/data/foaf
    Friend of a Friend data. Learn more in [info]ljfoaf.

    And why not read the new bot policy.

    Now I've gotta write myself something that actually uses these files.
    Saturday, January 10th, 2004
    6:10 pm
    [mcfnord]
    Friendship relationship data
    We write these parsers to scrape friendship data, well, it seems like we should cooperate to share this data. Is this a crazy idea? Smaller memes might not care but larger ones might benefit. It could simplify data collection and lessen the load on LJ servers. I am not sure if it's too important the data is updated.

    Well nice to find this community. Nothing like a good meme.
    Wednesday, November 19th, 2003
    11:17 am
    [hutta]
    Request for Comments
    Since everyone reading this probably develops these things, I was hoping I could get some feedback on it before I put it in the wild.

    The Friends Quiz takes a username, and grabs excerpts from 10 of that user's friends' journals. The user can then guess (from a list of ALL friends) who said what.

    Known problems:


    • Friends-only journals, obviously.

    • Sometimes the excerpt will be non-entry parts of the journal, such as "Post Comment" links.

    • If all 10 friends are not yet in my journal cache (which is shared with the Gender Tool), it can be a little sluggish, depending on Livejournal's load.

    • The friends list parser hasn't yet failed for me, but it's only an hour old. Hah.

    Monday, November 3rd, 2003
    2:01 pm
    [rfreebern]
    Are they really "memes"?
    An unidentified person left a comment on one of my recent meme-posts, alleging that this type of LiveJournal toy isn't and shouldn't be called a meme, and by doing so I was merely using a "buzzword for drawing attention to" myself.

    Does he think I would get less attention if I called it, say, a frog?

    Anyway, after several other people debated the point for a while, I decided to chime in with my own thoughts on the matter. Here's what I wrote:

    The term "meme" is open to interpretation. Dawkins, who coined the term, identified a meme as "a cognitive or behavioral pattern that can be transmitted from one individual to another one. Since the individual who transmitted the meme will continue to carry it, the transmission can be interpreted as a replication: a copy of the meme is made in the memory of another individual, making him or her into a carrier of the meme. This process of self-reproduction (the memetic life-cycle), leading to spreading over a growing group of individuals, defines the meme as a replicator, similar in that respect to the gene."

    Assuming we take the current standard definition — an "idea virus," or an idea that propagates among humans much like a virus does, through interaction — the results of toys like this can still qualify if they are successful and spread, and here's why:

    The script itself isn't a meme. Its output, however, is. In the case of my recent Trick-or-Treat meme, the idea (the "cognitive pattern") is the concept of virtually trick-or-treating at your LiveJournal friends' houses. Again using the virus metaphor, people who use the toy are infected and become carriers. If they post it in a place where it is likely to be seen by others who are interested, they become contagious. If other people see it and follow the link to participate, they too become infected, and so the virus has spread. The idea of virtually trick-or-treating among one's LiveJournal friends has propagated via Internet communication to reach other humans' consciousness.

    I think you must agree that a LiveJournal toy that (as of right now) has received over 2 million hits has successfully propagated among a significantly large community, which establishes that the concept of LiveJournal trick-or-treating is indeed infectious. The fact that it may or may not spread beyond LiveJournal (which, incidentally, it has) has nothing to do with the matter — it's the concept and the act of propagation that matters.

    Current Mood: contemplative
    Friday, October 3rd, 2003
    10:18 am
    [rfreebern]
    On Meme Popularity
    Now that I've created, released, and dealt with four different memes of varying popularity, I've had some experience learning what LiveJournal users do and don't like when it comes to memes and propagation.

    Silliness wins out over all. LJers in general will click on a meme that provides goofy and amusing but nonsensical results before one that provides potentially-useful analytical information. Case in point: The LJSitcom meme and the LJPotion meme outperformed both the Pizza Arbiter and the Flesch-Kincaid Grade Level meme significantly. The first two provide utterly meaningless but fun results, whereas the second two provide actual meaningful data. A meme that provides useful information but presents it in an amusing way beats everything else, hands down.

    Simplicity of participation is also an important factor. The easier it is for a person to take part, the more likely they are to do so. If your meme required nothing but visiting a page, it would have an edge in simplicity over one that requires entering data, but wouldn't be able to provide much in the way of personalised results. Ones that just need you to give your username and click a button win out over ones that want you to answer a few questions. The Pizza Arbiter, with its huge list of toppings to go through, deters a large number of users.

    Inclusion of friends is a powerful draw. Including a selection of users in the results, especially in humourous combinations or situations, provides a topic of possible conversation among those included, which leads them to participate as well.

    Tying a meme's results into actual data (by grabbing and analysing the user's entries, for instance) also makes people feel more like it's a worthwhile toy. Memegen's cookie-cutter memes generate seemingly random results from pre-selected lists of words which have no bearing on anything, and therefore memes like LJ Haiku (which uses the first lines of users' entries) or the LJ Mood Ring (which analyses the "Mood" selections on the user's latest entries) will easily grow more popular than nearly any given quiz or Memegen-type toy.

    Taking all these factors into consideration when designing a meme will help you fine-tune its potential popularity however you desire.
    Wednesday, September 10th, 2003
    11:21 am
    [rfreebern]
    Perl's Cache::FileCache
    You can simply cache fetched data on the script's local server by using Perl's Cache::FileCache module.

    First, create a directory /home/user/cache and make sure it is writable by whatever user the script runs as. Then, in your script, add to the top:
    use Cache::FileCache;

    and to the data-fetching procedure:
    my $cacheDir = '/home/user/cache';
    my $url = "http://www.livejournal.com/userinfo.bml?user=$user";
    my $cache = new Cache::FileCache({'cache_root' => $cacheDir,
                                      'cache_depth' => 5,
                                      'directory_umask' => 022});
    
    my $page = $cache->get($url);
    
    if (!defined $page) {
        $page = &get;($url) or return undef;
        $page = &processPage;($page);
    
        $cache->set($user, $page, 'never');
    }

    If the fetched page (in this case, the user's LiveJournal userinfo page) is already in the cache, the procedure will return the cached data. If it's not in the cache, it will fetch it from the LiveJournal server (using LWP::Simple's get() function -- you'll need to use LWP::Simple; to access it), process it, store the processed data in the cache, and then return it.

    The code sample above sets the expiration date of the data to "never," which means the cache will always think the data is current. You can change this so the data expires after a few days or a week, or include in your script's data-entry form a checkbox to allow a user to specify that you should fetch the latest data from the server. This way you can be sure you always have the newest userinfo available, while minimising bandwidth usage and execution time.
    10:39 am
    [rfreebern]
    Using a cron job to help manage server load
    Another simple way to reduce a server's load, especially if you don't have access to the system-wide Apache configuration file, is by swapping the main script with a 'temporarily out of service' placeholder script every few minutes, and then swapping it back.

    In the script's directory, simply create a second script, temp.cgi that just returns an apology:
    #!/usr/bin/perl -w
    
    use strict;
    use CGI;
    
    my $q = new CGI;
    print $q->header, '<h1>Temporarily Out of Service</h1><p>Sorry, the script is
    temporarily down. Please check back in a few minutes.</p>';
    exit 0;

    Then, in your home directory, edit a file named .crontab:
    0-59/3 * * * *          cd /home/user/public_html/script/; cp index.cgi foo.cgi;
       cp temp.cgi index.cgi; mv foo.cgi temp.cgi

    (Make sure the above is all contained on one line in the .crontab file.) Then, at the command line, run crontab .crontab. This will set up a cron job that runs every three minutes which swaps the current /home/user/public_html/script/index.cgi with /home/user/public_html/script/temp.cgi.

    You can learn a little more about crontab syntax at this page.
    Tuesday, September 9th, 2003
    3:36 pm
    [rfreebern]
    Using mod_throttle with Apache to help control server load
    Apache ships with the mod_throttle module, which is designed to allow a server administrator to throttle specified resources on a webserver. It can be used to limit the number of requests for a resource in a certain time period, limit the bandwidth used by a resource or user in a time period, etc.

    It's simple to set up. Just uncomment the LoadModule line in /etc/apache/httpd.conf:

    LoadModule throttle_module /usr/lib/apache/1.3/mod_throttle.so

    Then add an IfModule section with specific Location directives inside it, implementing the throttle policies for each Location:

    <IfModule mod_throttle.c>
            <Location /~username/directory>
                    ThrottlePolicy Request 60 1m
            </Location>
    </IfModule>

    The above directive limits the server to a maximum of 60 requests per minute for anything located in http://server/~username/directory/. The 61st user to request it in the space of one minute will receive a 'limit exceeded' message telling them to try again later.

    For more information on using mod_throttle, look at the documentation at snert.com.
    2:02 pm
    [rfreebern]
    Welcome to memedev!
    Welcome to the LiveJournal Meme Development community. This community is meant to be a base for discussion of the design, development, and deployment of memes and other web-toys for use by LiveJournal users.
About LiveJournal.com