• keyword stuffing craigslist: still an easy task

    back in the heyday of craigslist spam, exploiters found simple methods of circumventing the site’s reliance upon community moderation. keyword stuffing, the act of loading a page with keywords to increase its visibility in search results, was super easy because craigslist stripped few html elements (and attributes) from posts.

    a user could create a post to sell, for example, a squier stratocaster, and pump related keywords into a hidden div. craigslist would index the hidden words even though they were kept from visitors’ eyes. someone searching craigslist for a les paul would find the squier posting because “les paul” was found inside the hidden div.

    keyword stuffing is both annoying and ineffective. anyone looking to buy a les paul is not going to be interested in a low-end squier. but, it’s a cheap and easy way to push content toward thousands of eyes. for this reason, spammers and scammers love it.

    eventually, enough users smelled something fishy in their serp and complained to craigslist. a year ago craigslist rolled out an update that blocked most html elements and attributes, permitting only a select few.

    the update stopped keyword stuffing dead in its tracks. nowadays, most craigslist keyword stuffing occurs through use of font elements with a color attribute set to a very light color, often lightyellow or honeydew. people notice this text and flag the ads. community moderation defeats it.

    but there is still a gaping hole in craigslist’s search engine: the values of attributes are indexed. attribute value types that aren’t checked for integrity, such as uri, can be keyword stuffed.

    instead of hiding keywords in a div, they can be hidden in the values of href and src. craigslist checks for whitespace so slashes must be inserted, but slashes are conveniently treated as spaces when pulling search results.

    here’s a live example i made to demonstrate keyword stuffing an html attribute on craigslist (note: craigslist posts automatically expire after a set number of days, so you may not see any search results in the previous link). the queried words don’t appear anywhere in the post. viewing the page’s source code reveals their location.

    craigslist needs to either check the integrity of attribute values or stop indexing them. novice users don’t flag keyword stuffed posts because they chalk their serp appearance up to bad search engine technology and not malicious posters. either way, the blame is on craigslist.

  • if javascript affects your ui, load it asap

    the javascript focus() method is often used to place a user’s cursor in the username field of a login form on page load. twitter uses this technique. after everything is loaded, a blinking cursor appears in the username field and you can begin typing your login credentials. viewing twitter’s source code, you can see the jquery snippet that shifts the focus. it’s at the very bottom of the page and is loaded after several javascript libraries (why the hell do they use three separate javascript libraries?).

      jQuery(function($) {
        $('#username').focus();
      });

    it is advisable to place a script just before the closing tag </body> tag unless the script affects the user’s experience on load. the javascript focus() method affects ux. when i visit twitter from a shotty connection (like when my housemates are all bittorrenting at the same time), focus is shifted to the username field after i have already typed in my username and i’m halfway through the password field. i have to re-click the password field to finish what i started. it’s annoying. load the script in the <head> or directly after the corresponding element. or just don’t shift focus.

    seriously, though, why does twitter jquery, prototype AND scriptaculous? old code? or maybe they’re just really indecisive and like to keep their options open.

  • james franco spends half an hour destroying his bedroom in wholphin no. 8

    wholphin no. 8 came in the mail yesterday. wholphin is a quarterly dvd magazine put out by mcsweeney’s. each issue is a dvd with ~ dozen short films from a variety of filmmakers.

    i love wholphin. the films are (generally) completely absurd and extremely thought-provoking. point-in-case: this latest issue has a 32 minute steady shot of james franco destroying his bedroom. the film begins, franco enters the room, he spends half an hour systematically wrecking the entire room, fade to black, roll credits. it makes little sense, answers no questions, is painful to watch at times (as he kneels in broken glass), but it remains 100% captivating.

    i’ve yet to watch any other films on the dvd but they look equally promising (and more involved). the nice thing about wholphin is that all the films are half an hour or shorter. they function more as inspirational mind fodder than entertainment. when i don’t have time for a two-hour feature-length movie i can watch a wholphin short and feel just as satisfied.

    in fact, i’m usually sluggish and tired after watching feature-length films because my body shuts down from idleness. feature films are like fast food: you enjoy them but you feel like shit afterward. shorts films are like ordering a salad at lunch: your friends question your decision but damn it, you just feel like a salad.

  • i bought a nev (neighborhood electric vehicle)

    pictures to come. it’s a 2002 ford think neighbor. essentially a beefy, street-legal, four-seater golf cart. 1,693 were made in 2002 before the line was discontinued and the remaining vehicles crushed. the ford think city was featured in the documentary “who killed the electric car?”

    it has no doors and looks completely ridiculous. it’s classed as a low-speed vehicle and can not exceed 25mph. it can legally be driven on roads 35mph and under (nearly every street in san francisco). it has a license plate and is registered and insured like any other vehicle. it’s 100% electric and i plug it into a standard 110 volt outlet to charge it at night. it gets 25 miles to the charge and costs $10/month in electricity.

    it is tons of fun. the previous owner installed a cd player and stereo system. i found a bike rack on the street and installed it. we drive around blaring chiptune. travis and i drive to the bike kitchen with our bikes on the back. we go to costco without having to get a city carshare car. we can go to rainbow grocery and buy all the vegan food we want without having to haul stuff back on the bus.

    wherever we go we park on the sidewalk and people assume the vehicle is owned by the city or a local university. no tickets, yet. i went to rsa at the moscone center. it was downtown san francisco in the middle of the day and parking was completely impossible (as expected). i drove into the yerba buena gardens and parked in an outdoor walkway. no one said anything and i returned three hours later.

    i am lucky to live in a small city (san francisco is only 7×7 miles) where such an obscure vehicle is practical. i encourage everyone in a similar situation to explore alternative means of transportation. electric vehicles have superb acceleration and drive like a go-cart. sooooo much fun.

  • don’t let keyboard shortcuts hijack user experience.

    one of the most frustrating aspects of myspace (and there a llloooottt of frustrating aspects) is the use of javascript keyboard shortcuts within their image viewing platform. when viewing an image from a user’s profile, hitting the left or right arrow on your keyboard will load the previous or following image, respectively.

    here’s the problem: it prevents users’ from using their arrow keys for purposes other than browsing images. this is problematic because the thumb buttons on modern mice navigate backward and forward through browser history by emulating keystrokes (alt/cmd + arrow).

    once a user clicks through to a myspace photo, attempts to traverse backward through browser history by clicking the ‘back’ thumb button prove fruitless. they have to manually click the ‘back’ arrow in their browser. this confuses the user and interrupts her experience.

    to make matters worse, many users (myself included) don’t have a ‘back’ arrow in their browser. i removed mine because i became so dependent on firefox’s keyboard shortcuts i found myself never using the ‘back’/'forward’ buttons. it allows more space for the location bar so i can read longer urls.

    the result is a blackhole. i navigate to a myspace photo album and can’t exit. i’m forced to open my browser history or right click > ‘back.’ it’s annoying and adds to the aggro myspace loves to evoke.

    all i ask for is an option to disable it. if you’re going to experiment with javascript keyboard shortcuts, please make them opt-out at the very least. opt-in (a la gmail) is ideal, and whatever you do, do not require them. what is helpful to one person can be a pain in the ass to another.

  • css tip: use :after pseudo-element to append copyright notices to printed material

    here’s some simple css code that’s useful if people frequently print portions of your website. when added to your print stylesheet it will append your site’s copyright notice to the end of any printed page. #content should be replaced with whatever element wraps your content.

    #content:after {
    margin-top: 40px;
    content: "Printed Material Notice: Any and all original material on this website may be freely distributed at will under the Creative Commons Attribution-NonCommercial License, unless otherwise noted."
    }

    i don’t recommend you append copyright notices unless your content is frequently printed and distributed. eff churns out tons of original, quotable material and i often have visitors email me asking what permission they have to cite and distribute our work.

    check out eff’s print stylesheet to see it in action. in the rest of the stylesheet we strip extraneous material (sidebars, navigation, etc.), change the formatting of blockquotes and anchors so they’re not color-dependent, and print the page’s url after the ‘permalink’ anchor using this snippet.

    a.perm:after {
      font-size: 90%;
      content: ": http://www.eff.org" attr(href);
    }

    over in print-notie.css we replace our header image with a printer-friendly version using a list-style hack.

    #logo img {
      display: none !important
    }
     
    #logo {
      display: list-item;
      line-height: 70px;
      list-style-image: url(images/print_logo.jpg);
      list-style-position: inside;
      width: 99%
    }

    this keeps everything kosher for the most part. here’s a screenshot of a blog post in a browser, the same post after printing, and the post after printing without a print stylesheet. without a print stylesheet it spans five pages and the only usable content is on page four.

    while eff’s print stylesheet is not perfect, it does a good job prepping web content for printing. the :after pseudo-element, while not fully supported in all browsers, fails gracefully and can add helpful features to alternative media.

    it’s weird to refer to paper as an alternative medium…

  • toward a deontological obfuscation of god.

    here’s a journal entry i wrote many years ago and recently found while organizing my computer’s archives. i thought i’d share it with the world. experiences like this led me to study philosophy at usf.

    Toward a Deontological Obfuscation of God

    God is a cheeseburger.  Or so I convinced myself when I was 16.  It was my junior year of high school and I decided my formal education was a total waste of time.  Rather than study for my pre-calc final exam (after only attending the class on occasion) I thought I would try an experiment: I’d pray for a passing grade.  But I wouldn’t pray to God; I would pray to a cheeseburger.

    I was raised in a traditional Roman Italian Catholic family.  I attended church every week and I had the Bible beaten into my brain.  My mother wasn’t a very good bible-humper, though.  She raised me to believe that all God cared about was my actions toward others.  She led me to believe if I was a caring, decent human who put others before myself, God would approve and take care of me.  She raised me to be a good person.

    So I defamed God.  I envisioned him/her to be a ridiculously juicy cheeseburger and I facetiously worshipped said entree for the week leading up to the exam.  I was under the impression that if God took offense to being burgerfied while I made a sincere effort to follow the Golden Rule, God was an arrogant douche bag with no sense of humor and not something I was willing to look up to.  I mean it was funny: God being a cheeseburger and all.  Come on.  (Yes, I trolled God).  If God wasn’t full of herself I’d get a decent grade on the exam and pass out high-fives all around.

    The episode taught me three things:

    1.  My teacher was an idiot.  The exam was a multiple-choice Scantron test.  I solved every answer by the process of elimination and scored an 82%.  It was the most poorly written test I had ever come across with each set of answers able to be reduced to one of two possible solutions.  Paired with one third the knowledge of pre-calc i should have had, I had ~75% chance of answering each question correctly.  I have no idea what the guy was thinking.

    2.  If God exists, she really only cares about the motives of my immediate actions.  If this were not the case she would have set me on fire because I blasphemed her mad hardcore-like.  Hey, I meant no harm, though.  My intended goal was good-natured enlightenment.

    3.  God is a cheeseburger.  If you fear God rather than befriend her, you are an idiot because how can you seriously be afraid of a cheeseburger?  Prayer should not be painful or scary.  If you worship God because you fear Hell, you are willingly imposing a sort of metaphysical totalitarianism upon your consciousness.  God means nothing unless you create meaning for her.  Why not choose something that will make you happy inside?  You should really reevaluate why you take the Bible so literally.

    God is a cheeseburger.  Or a glowing white ball, or a jar of mayonnaise, or an old man with a beard, or a sliced pickle, or two strips of bacon, or a thick slice of cheddar cheese, or a fresh sesame bun, or… mmmmmmm… God…

  • i’m pegan.

    no, not pagan. pesce-vegan. due to some pre-disposed genetic irregularities i fear might lead to problems when i grow old, i have chosen to remove animal products, with the exception of fish, from my diet. no more mammals, eggs or dairy products.

    according to its founder, “‘veganism’ denotes a philosophy and way of living which seeks to exclude — as far as is possible and practical — all forms of exploitation of, and cruelty to, animals…”. because i subscribe to a pegan diet for reasons of personal health and not ethical concerns, i probably shouldn’t borrow from the vegan name. but i am. so there.

    i think animals are great. but i think it’s okay to eat them if you understand and accept the methods by which they came to be on your plate. i also lament the day computers argue for rights aligned with animals. do animals have souls? do machines have souls? (hellll no.)

    it’s been about three weeks and so far avoiding mammals and dairy has been extremely easy.  hilary is on-and-off vegan and most of the meals she cooks are vegan. eating out is not a big deal because san francisco is super veggie friendly. the only time i run into problems is late at night when restaurant options are slim.

    it’s also simplified my life a lot. 50% of the supermarket is off-limits to me. i don’t spend nearly as much time grocery shopping and i’ve had to learn to cook or i starve to death — most packaged foods contain some speck of dairy. i buy fresh vegetables from the local farmer’s market and google a delicious way to prepare them. much of chinese and japanese cuisine is vegan so i now have a great excuse to eat lunch at cha-ya once a week.

    until i am confident my body is receiving enough protein to repair muscle tissue torn from biking, i have decided to continue eating fish. i would like to ween myself off but at this point in time i don’t feel i’m a “good enough” vegan to support regular exercise. rice protein, here i come.

    i encourage everyone to try being vegan for a week. if nothing else, it’s a great lesson in self control. exercise your wille zur macht. if nothing else it’s always fun to try new things.

  • traveling with a mini hd camera and depth-of-field adapter.

    last month i circumnavigated the globe in three weeks. it was a lot of fun.

    against many people’s advice i chose not to bring a still camera. i captured all my memories with a canon hf100, a small consumer-grade hd video camera that records to high-capacity sd cards. i used a depth-of-field adapter, a device used to force a shallow depth of field upon camera sensors too small to naturally achieve it, and a 50mm nikon nikkor-s f1.4 lens to achieve “film-like” quality with the recorded video.

    here is my footage from beijing.

    i’m rather pleased with the end result. the video’s graininess and color saturation emphasize the dream-like nature of the trip. the varying degrees of blurriness are the result of an improperly calibrated adapter (i should have rtfm before embarking on the trip) but the aesthetic doesn’t bother me very much. it was shot in 24p cine mode. the adapter btw is a total hack and was purchased from a nice guy in washington state.

    this was my first time traveling with video equipment. between the fist-sized camera, adapter, lens, dozen 4gb – 16gb sd cards, and a super-compact tripod, my entire rig took up an extremely small amount of space. surprisingly, i never used the tripod. i sanctioned off part of my backpack with cardboard to give the camera and sensitive parts a safe home and made sure to only place soft things (clothes) up against the cardboard shield.

    the most difficult part was keeping dust off the lens and moisture out of the adapter. it was sub-zero the majority of the trip with falling snow and frozen fingers. i should have brought a thin sheet of plastic to drape over the camera when using it outdoors in snow. i also should have brought some form of compressed air to clean the lens. i also found myself having to constantly remove the dof adapter from the adapter to align the ground glass plate. i should have tightened it before the trip.

    moving pictures with audio are capable of so much more than still photography. the story is inherent and the viewer can be controlled much more easily (not that i had anything in mind when shooting). my next trip i’d like to plan a vague storyboard ahead of time. a list of types of things that i (a) believe will be in the travelled area and (b) would be interesting subjects on film. perhaps a narrative can be developed that takes place in both the origin and destination. with enough thought and preparation one could make a short film that appears to have a relatively high budget with travel to exotic places.

    if anyone has any questions or insight about traveling with diy video gear, or using a dof adapter with an hf100, shoot me an email. i’d love to give or receive advice. i’m in the midst of choosing a location for my next trip.

  • the trans-siberian as a means to a means to an eventual end.

    i really enjoy commuting. both in the general sense (change) and the common usage (regular travel between home and an institution). commuting to work, via bus, bike or legs, imposes a bout of inward reflection that would otherwise be absent from my life.

    when i sit on a bus for half an hour i think about what i’m going to do that day, how my week has been, why my shoes are slightly soggy even though it’s been three days since it’s rained, etc.

    commuting is a lot like church. people put up with it because they believe it’s taking them some place important all the while quietly acknowledging it’s a waste of time on its own.

    i find commuting great, though. just like church it sits you down and forces you to do nothing for an hour. the mind wanders and is free to explore, separated from the bombardment that sits on the other side of the lcd screen. wikipedia, while fabulous, does not let your mind wander. its clusterfuck of user-generated linkage dams free association. hyperlinks divert streams of consciousness, leading the mind down courses others have chosen.

    commuting provides a nice pause in the day. for me, it’s a pool amongst rapid waters.

    so. what’s a whole lot longer than your morning commute? the trans-siberian railway. three weeks ago travis and i rode the seven-day route from moscow to beijing, via mongolia (it became the trans-mongolian railway at ulan ude). for 80 consecutive hours we were on a train, only to leave for five to ten minutes every three to four hours. it was the dead of winter so stepping off the train was like walking into a pain of glass. the temperature on board was a toasty 27 degrees centigrade. the temperature outside was between zero and -20.

    i brought my video camera with me and i have around five hours of footage (i’m a very selective shooter) that i’m slowly editing down to twenty minutes. i’ll eventually upload it to vimeo when i’m pleased with it. i’ll never be pleased with it, though, so i’ll upload random chunks to vimeo when i get fed up with nitpicking.

    the trip as a whole was a lot of fun. we spent a few days in dublin and munich before reaching moscow and we met some great people along the way. the bulk of the train ride was spent with a handful of swedish kids in the carriage next to ours. we ate lots and lots of instant noodles and mashed potatoes and panicked on day three when we ran out of food and money. fortunately, somewhere around omsk, we happened upon an atm at a train station.

    the most fascinating aspect of the journey is the total loss of time. with nothing to do all day you end up napping a lot. this irregular sleep schedule combined with passing through time zone after time zone completely obliterates your internal clock. after the battery in travis’ iphone died we no longer had a clock so days would go by where we literally had no idea what time it was or where we were. we knew we were moving east and that was about it.

    for those of you considering riding the trans-siberian in winter: i highly recommend it. it’s much less crowded than in summer and siberia is known for its winters… not its summers. there’s something magical about crisp siberian air.

    would i do it again? maybe some day. i’m done traveling for a while. i have a lot of projects i want to make some progress on at home. like editing that video footage. final cut: here i come.

  • i’m back. but without the map.

    hi folks. it’s been a while. i fell off the blogging wagon because i became busy and lazy and repetitive and lazy.  i also moved from nextel to sprint so i became mologogo-less. :( this made me very sad as i was no longer able to tell everyone where i was at all hours of the day.  google maps — you’ve been good to me, but i think we need a break.

    since my last update, i have taken to a new place of employment. i spend my days as webmaster of the electronic frontier foundation where i help lawyers and activists cross swords with the scourge of the interwebs. it’s a great place to work. EFF has been around for eighteen years and if you’re not a member you should consider becoming one — we’re a membership supported organization. ;)

    i’ve also begun biking a lot. i commute via bicycle around seven miles (roundtrip) to and from work everyday through city traffic. it’s a lot of fun. and really dangerous at times. which makes it fun. i ride my dad’s 1975 motobecane super mirage which is becoming exceptionally rickety and will soon be replaced by a beautiful 1979 colnago once i finish building it.

    i was debating whether i should port my old blog entries into this new blog and i decided not to. it’s nice to start anew and most of my old entries were painful to read. but that’s how it is with all old blog material. i think i’ll leave the old geoblog online for archival purposes and redirect the rss feed to this one. yes, that will do.

    you’ve probably noticed the ridiculousness of this blog. i’ve always been fascinated by horizontal layouts but i’ve never seen a fluid horizontal layout. with the help of jquery and a great plugin i think i’ve built a wordpress theme that will widen horizontally when necessary. it’s quite buggy at this point and makes ie6 cry. i’ll fix that over the next few days. when i get to it.

    in three weeks travis, my housemate, and i will be traveling from moscow to beijing on the trans-siberian railway. more on that later. i am going to eat dinner now.

    cheers.