Colr Pickr
June 21st, 2010
I’m currently working on a significant update to my classic Colr Pickr. Stay tuned.
![]() |
|
Colr PickrJune 21st, 2010
I’m currently working on a significant update to my classic Colr Pickr. Stay tuned. Apathy-GasMay 30th, 2010While waiting around at the local Michael’s, I picked up a 3 dollar copy of the Great Illustrated Classics version of The Time machine by H.G. Wells. I was surprised to open it to an illustration depicting a character from a cheaply made 1950s Sci Fi film — most certainly not a character from Wells’ original novel!
The time traveler is squirted with “Apathy-Gas” and interrogated, before making his escape. The book has a copyright date of 2009, but appears to have been written and illustrated in the early 70s. On making software with heartMay 12th, 2010
As a pointy-eared technical guy, I’ve long been resistant to this type of language, knowing it to be logically meaningless. After all, the heart is merely a muscle that pumps blood, right? But the heart is also a potent symbol, and I hope my meaning was clear to the programmers in the room: the software under discussion was intelligent, but lacking in emotional appeal. Increasingly, I find that one of the things that separates software that I love from software that is merely adequate is the presence of heart; and this is something that programming books (and the programmers who write them) tend to give short shrift. We programmers will discuss speed, efficiency, maintainability, and robustness till the cows come home, but very rarely will we admit that our software needs to be more likable. We are an army of tin men, hacking away at the thicket, with increasingly powerful hatchets, and hollow chests. What gives software more heart? What makes a user have a more meaningful and fulfilling relationship with a collection of ones and zeros? A few things that come to mind are personal relevance, simplicity, directness, judicious randomness, pictures and sounds and above all, a little silliness. Personal RelevanceProbably the most direct way to make software pull at the heart strings is to fill it with people that are at the center the person’s life. Social apps, such as those that use Facebook connect or the Flickr API, are a good example. Simply looking at a row of faces that are familiar to me can have a strong impact, and even more so if the software finds ways to deepen my relationships with other people. It is clear that a lot of people are aware of this simple trick, and we are now seeing a plethora of companies that seek to add personal relevance to their brands by using Facebook Connect and similar measures. Unfortunately, not all those brands necessarily make sense in a social context, and inappropriate and ungainly attempts to add social features may actually distance users (why does Levis want to connect me to my friends?), rather than endear them. SimplicityTo put it plainly, a simple elegant interface has more emotional appeal than an inelegant clunky one. It is hard to love a clunky interface (although I suppose pity can inspire love). More often than not, clunky interfaces make us angry and frustrated. Most good programmers are well aware of this counter-intuitive fact: Simple interfaces are harder to make. When a program seems busy and complicated, it probably took far less time to make than the competing program which accomplishes the same things with fewer moving parts. Programmers with heart work extra hard to insure that their software is as simple and direct as possible. Their interfaces become nearly invisible, and the user is absorbed in the experience, rather than the tool. Feature creep can make software needlessly complex and ungainly. Some programmers are turned on by complexity, and add needless DirectnessSoftware that directly communicates what I desire to know and doesn’t hide behind a layer of abstraction tends to have a more direct emotional appeal. The idea here is to reduce the involvement of higher reasoning and logic, so that the lower parts of the brain are more directly involved in the user experience. For most of us, to directly manipulate objects with our fingers, using a tablet, is more satisfying and simple than to issue text commands to manipulate those objects on a command line. Now, being a geek, I actually love the command line – but it’s not as counter-intuitive as it seems — I’ve gained a degree of facility with the command line that makes it a more direct means of getting things done. Judicious RandomnessNever avoid the opportunity to use a random number generator somewhere in a program! I say judicious, because, obviously, you don’t want to employ randomness in computing income taxes or rocket trajectories, but there is always an opportunity to use a little randomness as a means of adding surprise and delight. For years, I have considered the need for randomness to be one of the most direct predictors of how much I will enjoy working on a software project. When a program requires randomness, it is less likely to be serious and useful, and I am more likely to enjoy it. One of my favorite examples of Judicious Randomness is the Google logo, which surprises me, every few days, by appearing completely different. The Google corporation has engendered a huge amount of good will from that randomized logo. Pictures and SoundsAlthough they can be horribly misused, in general, pictures and sounds can make software more emotionally appealing, because they more fully involve the brain than text alone, and help to make the experience more direct. Well chosen icons, photographs, and subtle audio feedback can greatly improve the emotional impact of software. Example: I once traded up for a nicer cell phone. My wife got jealous, not because of the greater utility of the phone, but because it made more pleasing bell-like sounds when the keys were tapped! A Little SillinessFor me, injecting small amounts of playfulness is an important part of software design. Sadly, it is something that is often scrupulously avoided by serious-minded programmers, who, seeking to make their wares appear professional and useful, carefully drain them of all possible fun. I don’t care how serious the intent of a piece of software is – nobody deserves to live a life devoid of humor. Even accountants and morticians deserve a laugh or two – probably more than most! I’m not suggesting that everything needs to be hugely silly. But there is a huge difference between a little playfulness, and zero playfulness. When there is zero, I can’t tell that the software has a beating heart behind it. It is software made by mindless, joyless drones. Back in the 90s, I worked on an avatar chat client, and added a feature that removed all the “props” or additions to the base avatar. I labelled the button “Naked,” and I still believe that little button label was one of my best ideas. So there you have it – some random musings on software with heart. Got any examples of your own? Five PointsApril 1st, 2010The last few days, I’ve been obsessing over the island of Manhattan (which I’ll be visiting briefly in May), and Google Street View. I’m currently working on a few Street View related hacking projects in my spare time. Here’s one of them. I wrote some scripts that did an exhaustive search of the Street View information for Manhattan, and found that there are exactly 10 intersections which Street View treats as 5-way intersections on the island – in reality there are more 5-way intersections, but the ones shown here are the ones Google Street View knows about. The rest of the intersections are 4-way or smaller. I call this image “Five Points” to recall the notorious 19th century intersection depicted in Gangs of New York. These panoramic images were taken by the Google Street View camera. I’ve also constructed some interesting high-speed time lapse movies by using sequences of these photos that follow the car. You’ll find some others, made by other people, here. Krazydad, circa 1996.March 26th, 2010
My nephew Ben, a budding computer programmer, found this old picture of me in a book about computer programmers. The photo has the following caption: “Sometimes programmers play computer games when they need a break from their work projects.” What the author perhaps didn’t realize (the photograph was obtained from the Corbis Stock photography archive), was that the “game” on my screen was my work project… Benjamin tells me his friends told him “Your uncle’s a creep!” Sigh… Mining juicy wordsMarch 22nd, 2010This weekend, I counted all the words on Project Gutenberg. This has been done before, notably, here. My script crawled most of the English language books on Project Gutenberg (about 20,000 titles), and counted how often each word appears, and how many books each word appears in. The script ran for about 20 hours. You can download the resulting list, which contains over a million words, here. Each line shows how many books each word appears in. A second list, which shows how many times each word occurs in total, can be downloaded here. I prefer the list that shows the number of books each word appears in. It has the effect of pushing down words which appear a lot in only a small number of books, such as the names of fictional characters. I compiled these lists because I wanted to make some word puzzles. There are lot of free lexicons, or word lists out there, such as the ENABLE lexicon which is commonly used for scrabble-like games. However, for the purposes of making crosswords, word searches, and other puzzles, it’s very helpful to restrict the words to more commonly used ones, and to know how common each word is. The popularity number of the word correlates well with how ‘juicy’ the word is, or appropriate for a word puzzle. For example, using my book count list, words at the very top of the list are quite boring structure words. 18374 by As we head towards 10,000, we encounter most of the common bread and butter words. These are also kind of boring. 15095 case 10776 buried As we head from 10,000 to 200, the words get increasingly more interesting. 9781 plainly There is a sweet spot with a lot of very juicy, but still familiar words in the 300s. If I were selecting words for puzzle construction, this is the area I would favor. After the 300s, the words start to get increasingly more obscure. 359 pajamas At the 200 mark, we’ve only covered about 38,000 words. There are 1,236,759 words in the list total, so we are are still at the top of a very long tail! Below 200, words get increasingly obscure, archaic, misspelled and foreign. We also hit a lot of proper nouns. Still there are a few legit, but rarely used words mixed in. 99 tingeing UPDATE, March 23rd: I measured the average book-count of the words in all the New York Times crossword puzzles since 1997 (their online archive goes back to about 1996). For each puzzle, I averaged the book-counts of the words that appear in my list (typically, about 80%-90% of the words in each puzzle). For most years, the average book-count falls between 2,008 and 2,180, and from year to year, the results can be surprisingly consistent. Here are my averages: 1997 2070.93 There appears to be a marked shift towards more obscure words from 2004 – 2005. Interestingly, there are only about a thousand words that fall in that NYT-Crossword sweet spot. Here they are:
Mayor of the North PoleFebruary 15th, 2010[NOTE: I've posted some recent developments at the bottom. ]
Last Sunday, while checking into the Hill Street Cafe in Burbank using the foursquare iPhone app, I idly wondered, “Can I become the mayor of the North Pole?” So I tried checking into a nearby 7-Eleven. It worked. I tried the Griffith Observatory about 5 miles away. It worked. I tried Disneyland, which is about an hour away. It didn’t work, but I now had an afternoon hacking project. When I got home, I looked to see if foursquare had an api. They did. So I found a venue that was close to the North Pole, the “Top of the World” hotel in Barrow Alaska, and checked myself into it. This can be done on the command line using the curl program, like so: curl -u EMAIL:PASSWORD -d “vid=993842″ http://api.foursquare.com/v1/checkin Try it! You’ll need to substitute in your own email and password. 993842 is the venue id of the “Top of the World” hotel, as can be seen in the URL of this page: http://foursquare.com/venue/993842 This venue wasn’t actually in foursquare’s database, so I added it, using the ‘addvenue’ call. I also added a venue for the actual North Pole. It turns out it’s much easier to become the mayor of something if nobody else has ever checked into it. [ Edit: Some folks have rightly pointed out that you can easily do the same thing with the mobile website (mobile.foursquare.com). For my purposes, as you'll see in a moment, the API was more efficient... ] Here’s the North Pole venue I made: http://foursquare.com/venue/995274 Ultimately, I ended up adding a lot of venues. I used Google Earth to create KML files of interesting venues, and wrote a script to import them all into foursquare. I did the same thing with Yelp. I found that foursquare would rate-limit me if I added them too quickly, so I added them two and a half minutes apart. Later, I found that by rotating among multiple accounts while adding venues, I could add them much more quickly. At some point last week, I devolved into a 12 year old hacker, and I spent many spare hours (and my computer’s spare cycles) abusing the system with a set of scripts operating fake accounts. Not only did I add new venues like the North Pole, but I started persistently checking into coveted landmarks, like the Statue of Liberty. What can I say? It was fun, and foursquare’s incentives (badges and mayorships) spurred me on. Incentives invite abuse, even from mild-mannered folks like me. Eventually I amassed a huge number of mayorships, spread among multiple accounts, including the Statue of Liberty, Mount Rushmore, the Lincoln Memorial, Stonehenge and the Taj Mahal, as can be seen in this screen snapshot. I wrote a script that would walk through a list of venue ids, and check into them one by one. Then I created about 10 fake foursquare accounts, and had them take over different territories. I created five “Java Monkeys” which grabbed about 120 different Starbucks in different regions (east, west, midwest, south, intl). I identified and targeted hotly contested Starbucks by searching Twitter for recent oustings. My script automatically visited those ones, to the consternation of the new mayors. I created a fake Martha Stewart who checks into dollar stores and pawnshops when not visiting Martha Stewart Omnimedia and the set of her TV Show. I created a fake Simon Cowell who visits massage parlors and gets lunch at Hotdog on a Stick when not visiting the Kodak theater. I created a fake Tommy Chong who is mayor of 130 cannabis clinics. I created a fake Sammy Davis Jr who checks into casinos and bars in Las Vegas. I created a “random nerd” who checked into a number of large campuses in the Silicon Valley. The “Java Monkeys” got the biggest reactions. Foursquare users get far more irate when they lose mayorship of a Starbucks, as compared to a Statue of Liberty or Mount Rushmore. People are much more attached to the small places they visit over and over, and have some personal investment in. The smaller the venue, the bigger the value. I started collecting badges as well, by checking into places that have tags like “karaoke”, “photo booth”, “gym” and so on. I was able to get a swarm badge by monitoring Twitter for when a particular location got up to 40 check-ins (this happens at a couple of Tokyo train stations quite regularly) and then checking-in all my accounts at once to trigger a swarm (which occurs at 50 check-ins). This RSS feed is useful for detecting impending swarms. Finally, I started giving people free sailboats. I found that if you checked into a venue tagged “boat,” you automatically get the awesome “I’m on a boat” badge; and unlike the other badges, it only requires a single check-in. So I started identifying high-traffic places via the above Twitter search, and then adding the tag “boat”. Suddenly, visitors to metropolitan airports and various sports arenas got free sailboats for Valentine’s Day. My juvenile crime spree is now over, and I’ve “laundered” my foursquare account, by transferring the credentials to a new one. This URL used to go to the account that stole the Statue of Liberty, but now it goes to a new account, because foursquare allows you to reassign twitter accounts, and constructs the URL using your active twitter account. This is my original account, which is now inactive. It seems clear that foursquare is going to have some massive authentication issues to deal with if they are going to grow larger than their current size. Some things to consider: 1) Provide additional measures to detect that people actually are where they say they are. I imagine this is not an easy problem to solve: if I send you a set of coordinates, it doesn’t mean I’m actually there. At a minimum, they can measure the time of travel between successive check-ins by comparing the coordinates and time stamps. If I’m traveling close to the speed of sound, something is clearly up. 2) Make it less easy to create fake accounts. Right now, there’s not even a Captcha. 3) Don’t construct a permanent-looking URL from a twitter account (which can be transferred to a different foursquare account). This provides a method of “laundering” accounts. More generally, I think the combination of a poorly moderated and insecure folksonomy with incentives (e.g. badges, mayorships, free meals, etc.) is a fragile one. The greater the incentives, the greater the motivation for cheating. As it stands right now, foursquare has quite a few holes. If I were a restaurateur or coffee shop owner, I would be very wary of giving free meals or lattes to foursquare mayors, unless the employees know the mayor by sight. UPDATE My story seems to be getting some picked up in a few places. Here’s some reaction on Twitter. Mostly positive, I think, although a few foursquare insiders were a bit put out, as one would expect. Dennis Crowley was quite nice about it, thank god. If I stole your Starbucks, I’m really sorry about it, and I will gladly buy you a latte, if you find me in a Starbucks. UPDATE #2: My story was covered on TechCrunch this morning. MG Siegler was mostly on-the-money, except for this bit:
Um, not exactly. The problem is that you can’t trust the person who’s sending GPS coordinates to send the correct ones. This is a tough, tough problem, and it will become increasingly obvious as incentives increase. UPDATE #3: Foursquare founder Dennis Crowley has provided some thoughtful commentary in the comments, below. UPDATE #4: The LA Times interviewed me and got a few more details… UPDATE #5: Alison Cummings of the Montreal Social Media Examiner posted this reaction to the whole brouhaha. I’m going to call her “perceptive” because she called TechCrunch’s tone “whiny”. :) The GriddleFebruary 4th, 2010The Griddle is a beautifully designed puzzle site by David Millar. It will especially appeal to more advanced solvers who are bored with the same-old same-old. Two Crossfigure PuzzlesJanuary 12th, 2010
These numeric crosswords are similar to Kakuro and KenKen puzzles, but have greater variety in the clues. Here’s two to start with. I hope to post Yochanan’s complete set at a later date. GumbasiaJanuary 9th, 2010 |
|