Monthly Archive for July, 2008

Responses to Infinite Wall

AGS writes:

But if the map was inside your app then wall creators could easely move their wall to the desired location even with a 2g phone.

I’ve brainstormed with a friend, and we came up with an idea very similar to what you proposed. I’ll discuss it in greater detail once its fleshed out.

Ross writes:

…I also think being able to see a wall across the country would be great if that’s even possible.

I don’t think this will be happening soon. To me, Graffitio is about exploration and discovery. You will have to be there. I may create a Google Maps mashup which just displays pinpoints wherever there is a wall, but you can’t see it’s name or the posts on it

kimonostereo writes:

Also would love to have a link that maps the actual location of the wall.

A detail view for walls is a planned feature that will include a link to open Maps at that location.

kreddig writes:

Maps Maps Maps!!!

There’s a lot of demand for Maps integrated into the application. I’m hesitant to pursue that now for two reasons. 1) I am after the most streamlined user experience possible. You just open the application and see exactly what you need to see. Details are one tap away. Maps involve a lot of dragging, pinching, tapping, etc. As we’ve seen in many current apps, it slows down user interaction tremendously. 2) Map functionality is an order of magnitude more difficult to implement than anything textual. I’d rather deliver much needed features as text first and then think about putting them on a map.

classic writes:

A truly elegant solution, as long as:

1) You can post anonymously at any time.
2) You can only vote a post up or down once [to prevent repeated voting].
3) You cannot vote on your own posts.

I don’t want to penalize users for registering, so allowing them to post anonymous comments is something I’d like to do. I also believe there should be a penalty associated with it. Either a lower starting score, as you mentioned Slashdot does, or maybe you lose the ability to rate other posts on that wall. We are in agreement on points 2 and 3.

Ali writes:

I’ve read the information about radii of Walls, etc… but was wondering if there would be a way to define different levels of Wall with different radii.

This is a tough problem. One one hand, I’d like Graffitio to get to a point where you’re really only looking at walls within walking distance. On the other hand, it’s a newborn, and users are frustrated when they open it up and see nothing. I have two potential solutions to this brewing in my head. More on it later.

Cville Bill writes:

Thinking down the road a bit…
You might want to start thinking about Wall obsolescence. There probably should be a group way to remove obsolete walls.

Oh, I’m thinking about it! It plagues me. (Although, it’s one of those “good problems”). I don’t like to throw away data, but there needs to be some sort of aging mechanism. There’s a field in Massachusetts that I may create a wall on and leave a note about my first kiss. Nobody cares about that except me, but it’s so important to me. I’ll probably come up with a way for users to access all of their posts in some standard format. It may not be accessible from the device, but it’s not gone forever.

Looking deep into the future, maybe as our devices become even more powerful and connections become faster, we can scrub across a timeline and watch the wall go back in time. Wow, I’m drooling. How awesome would it be to go to a venue and scrub back to a concert you went to ten years ago and read its wall?

Another factor to consider besides distance and activity is your attention. If you’ve posted to a wall ten times, you probably always want to see it, while others do not. As the database grows, the walls you see can be tailored to what you pay attention to.

JonO writes:

Using a wall at a concert? Dude, it’s around places. Places. Who makes a wall for a concert? Make the wall for the concert hall. Then friends can exchange messages during their concert and a period of time later, some other fans of some other band can do their thing. The wall persists, the bands and fans change.

JonO gets it.

Chris S. writes:

After this new version goes live, bugs are squashed, I would love to get on a beta test for painting-type addition to this app =] Maybe paint our own avatars?

Sorry Chris, but actually painting won’t happen from inside Graffitio. Now photos on the other hand… stay tuned. Of course, that will mean you can use a dedicated app like Sketches, save the drawing to your camera roll, and then stick it on a wall in Graffitio. This way, Sketches and Graffitio each do they do best. A Jack of all trades is a master of none.

Wanderfowl writes and writes:

I’d much prefer this service to be nameless, faceless wisps of smoke, which appear and disappear with impunity.

One other nice feature of having logins, though, would be to have a little indicator on walls which shows when there are new posts that you haven’t seen.

Namelessness will always be an option. A wall update indicator should actually be possible for both registered and unregistered users.

Lestatdelc writes:

So no matter where I am in my city, I have the “city” in-wall, “region” in-wall, and “state” in-wall and only allow the “infinite” posting to those 5 various “infinite” walls that are to me by my location?

Are you a mind reader? :)

Known Issues

I’ve gotten a little ahead of myself in the previous few posts. I keep forgetting that all of you are still using Release 1 (rel1 from here on out). I submitted rel2 to the App Store before it launched, and I’m still waiting for Apple to approve it. After launch, you discovered bugs that were in rel1, which were not fixed in rel2. They are fixed in rel3.

First, let me apologize to all of you. I wish there was something I could do, but I’m pretty powerless at this point. Once I put an application update in the queue, I have to wait for Apple to act on it before I can do anything. I can’t pull rel2 out of the queue and replace it with rel3. I can’t go ahead and queue up rel3 behind it. All I can do is wait for them to make a decision on rel2, and then immediately put rel3 in the queue. It sucks. It’s frustrating for me, and I know it’s frustrating for you.

First lets talk about things fixed in rel2:

  • New Icon!
  • Prevent some user interaction while Graffitio loads walls
  • Added a toolbar, activity indicator, and status message
  • Stability fixes with threading
  • Added Refresh Button to Posts page
  • Got halfway to fixing the location bug

And rel3:

  • Fix the bug where messages get cutoff on a long wall and the height of the cells is all weird. (I really wish this had made it into rel2, but I didn’t realize it was a problem until after rel2 was out the door)
  • Added activity indicator when refreshing posts
  • Fix bug where walls and long messages with punctuation in them get truncated
  • Add section header which separates Local and Everywhere walls. Shows radius being used
  • More tweaking of location code, which should greatly increase reliability

I’m going to try to squeeze in a few more small features for rel3. However, the moment Apple makes a decision on rel2, I’m going to push out the last stable build of rel3. In my testing, I’ve found rel3 to be production ready, so I should have some time on that to focus on substantial new features for rel4.

Finally, when Apple fixes the Ad Hoc Distribution method, I’ll be looking for beta testers. Quality comments on this blog put you at the top of that list :)

Infinite Wall: Part Two

I live in Charlottesville, VA, the home of Thomas Jefferson. We’re all pretty damn proud of T.J. around here. Yes, we really call him T.J. Everything around here is named after him, including The Thomas Jefferson Center for the Protection of Free Expression. You may know them from their annual Muzzle Awards. Two years ago, they erected The Community Chalkboard and Podium: A Monument to The First Amendment. I walked down there from my office during lunch today and took a fresh picture for you:

monument_small.jpg

You can click on it for a large version and read individual messages. Most of them are inane, some of them are thoughtful, and others are downright poignant. There was a lot of controversy when it went up, but I have always found it to be a beautiful thing. The monument was one of my inspirations for building Graffitio. Here’s what the T.J Center has to say about it:

As with all chalkboards, what is written on the monument’s chalkboard is constantly changing. The monument’s slate is cleaned in its entirety twice a week on a regularly scheduled basis. Private citizens may also clean all or part of the slate at anytime.

It can be written on, and it can be erased. If somebody wants to write something, they write it. If the next person doesn’t like it, they erase it. When you are limited by physical space, this solution makes sense. I think we can do better with Graffitio.

First, you want profiles. I hear you! Since day one, profiles have been part of the plan with Graffitio. Profiles will be fairly standard. You can choose a username, avatar, and any personal info you may want to share. Instead of a number in the post list, you’ll get a name that is a link. I know many of you are really excited about this.

Before the rest of you freak out, registration will never be required. It is important to me that Graffitio users can “pick up and play”. You will be welcome to use Graffitio just as you do now. Your posts will still be numbered, and that will be that.

Now on to content filtering. I don’t want to delete posts, and I don’t want to ban people. Like I said above, I love me some T.J. I’d like Graffitio to be a place where everyone is welcome, but different people have different comfort levels. My proposal is right in line with what many commenters suggested and how other sites work: Each post has a score, and by clicking an icon on the post, you’ll be able add or subtract one from a score. This score will represent the quality of the post.

This next requirement is something that has been given a lot of thought and will probably generate the most discussion. Only registered users will be allowed to score posts. If you’re not willing to stand behind what you say, you don’t get to express an opinion on what others say. My hope is that this requirement will result in higher quality ratings.

Finally, when these features go live, there will be two application preferences associated with them. The first is simply a switch to filter out all posts by unregistered users. That will probably take care of 90% of the noise. The second is a tolerance setting for the minimum score you want to see. I’ll pick some sensible default for this, but you can change it to whatever you want, including to not filter anything.

For those of you that like the free for all, turn off all the filters, and Graffitio won’t be any different. Those of you who want a higher signal to noise ratio can tweak things to your preference.

If you read this whole post, thank you! It’s entirely possible this proposal has holes big enough in that you could drive a truck through, so I’d like to know what you think. I also really appreciate all your comments in the last post. Many of them were exceptionally thoughtful. It’s only been a week, and I’m already so proud of this community.

Infinite Wall: Part One

I just posted this to the Infinite Wall:

OK. Let’s take a break…

I’m shutting down the Infinite Wall for the night.

The original idea was to let new users have a place to interact with other Graffitio users if they opened it up in a location without any walls nearby. It started out that way, but has quickly degraded into its current state.

For what it’s worth, I have not deleted a single post or banned a single user. I’ve been too busy fixing bugs and adding new features to Graffitio to deal with this crap.

I’ll be making a post to the blog tonight, and if you’d like to comment or have any ideas, feel free to post there:

So if you’re here from the Infinite Wall, I’d love to hear your opinion on how to proceed. Thanks!

Responses to radii

Thank you so much for all your feedback! I thought I’d take a second to respond to your comments:

One wonders if there could be user control over the radius, rather than something set by admin.

I would suggest 100, maximum. If walls are truly meant to represent what is in my immediate area then anything much larger than this makes the point moot.

My one suggestion regarding radius would be to leave it at 1,000 yards, but to sort walls by distance from my current location, and limit the total listed to 25 or so.

These are just three of dozens of comments I’ve received on this issue. Honestly, there is no right answer that will please all the people all the time. For people in NYC or SF, a small radius is much more desirable. At the same time, I don’t want someone in rural Missouri to open up Graffitio and see nothing. Using the radius provided by your iPhone is a good way to correct for this. In densely populated areas, it’s usually much smaller than in rural areas where people are only picking up EDGE.

TAClark’s comment makes the most sense to me, and I think I will probably implement it on the back end today. Walls get sorted by distance from you and you only get the top 25 within 1000m. In NYC, you only see the 25 closest walls, which are more than likely really close to you. Here in Charlottesville, I’d probably get stretched out to the full 1000m and still only come up with a half dozen walls.

Many of you want to set the radius yourself. I’m torn about this. Over time, I want the radius to keep getting smaller. I started with a base radius of 1000m because I simply did not expect the application to become so popular, and I wanted people to at least be able to see a few things when they opened it. I’m pleasantly surprised to see that is no longer an issue! One of the biggest reasons I’m torn about adding a radius preference is because features are a one-way street. Until we have a really good solution, I’m holding off on the preference.

And on a similar note, AkuKnives and I really share a vision for Graffitio:

I don’t know, I myself kinda of like the idea of 10 meters. When I envisioned what this app would be like, I romanticized of treasure hunts. Leaving clues to treasure hidden on walls that people could only see at very very exact locations. I imagined all the fun I would have trying to hunt to find cool little secrets that I would have to be very close to in order to find.

To me, Graffitio is about discovery. I envision invisible time capsules scattered all over the earth waiting to be unlocked by anyone walking by. In a perfect world (for Graffitio), we’d all have an iPhone 3G and this wouldn’t be an issue. Unfortunately, we’re not there yet. One idea I had is being able to flag a wall as “Pinpoint” or “Local” when you create it. Only an iPhone 3G would be able to create and access Pinpoint walls and you’d have to be standing pretty much on top of it to see it. Of course, I still have an old iPhone so this would make me sad (but also give me a good reason to get a 3G!). How do all of you feel about this?

Sneak Peak: A screencast of Release 3

Release 2 was submitted to the App Store two days before the launch last friday, but is still waiting for Apple’s approval before you can get your hands on it. In the meantime, I’ve been hard at work on Release 3. I put together this screencast which fixes known bugs in Release 2 and adds some new features. I hope you enjoy!

What’s the radius?

“What’s the radius?” is the most asked question about Graffitio. This post is my attempt to answer it.

First, let’s talk about Core Location. We were all thrilled when Apple announced that location would be a central feature of the iPhone SDK. One of my friends put it best:

I hope this means I never have to enter my zip code again

Here’s basically how Core Location works:

  1. You ask iPhone to start telling you its location.
  2. It immediately tells you its last known location.
  3. Then as it gets more accurate, it tells you that.
  4. When you’re happy with the data, you ask it to stop updating.

The bug in the first release is that Graffitio asks the iPhone to stop updating too soon, and in some cases, that first location it returns is very, very stale. I developed the software at home and in my office which are a couple miles apart, so my iPhone was able to very quickly determine my location. As a result, I never saw any of the issues others have seen. This is fixed in the second release and refined even further in the third release.

Now moving on to the geometry of Graffitio… Among other things, Core Location returns a latitude, longitude, and accuracy. So stick a pin on a map, draw a circle around it with a radius equal to the accuracy, and Graffitio knows that you are somewhere in that circle. You’ve all seen this when you locate yourself in Maps. Graffitio then reports back all the walls that have been created within your circle.

An important point to remember is that walls do not have a radius, you do. Graffitio uses the radius provided by your iPhone unless it’s below 1000 meters, in which case it just uses 1000 meters. I didn’t want iPhone 3G users to only see walls within 10 meters of them.

Unfortunately, this method has pitfalls. I put together this highly artistic diagram to explain them.

radii.png

OK, in this scenario, let’s say Kate sitting at Lee’s Grill and opens up Graffitio and creates a wall to tell the world how delicious their Chicken Teriyaki is. Her iPhone tells Graffitio she’s located in the left circle with a radius of 1799 meters, which is a pretty common radius for it to return when you’re on EDGE. Graffitio then creates a wall at the returned latitude and longitude, which is the center of the circle, which I marked in green. Now I open up my iPhone, and it puts me in the circle on the right. The way the circles are overlapping, I see Kate’s wall, even though I am 5000 meters (over 3 miles) away from Kate actually is.

If we all had an iPhone 3G, Graffitio wouldn’t have this problem because the location data for walls and users would all be accurate from the beginning. As the original iPhones of the world start dying out, the location data for users will be accurate, but there will still be a lot of misplaced walls that were created on these iPhones. I use a minimum radius of 1000m to try to minimize the number of times an iPhone 3G user could be standing at a location and not see the walls there. I’m putting a lot of thought into a solution to this.

I did not expect to write that much. Now back to coding! If you have any comments or ideas, please comment below. I’d love to hear how you would solve these problems.

The good, the bad, and the ugly…

It’s been about a hundred hours since all of you started using Graffitio. I thought I’d post a quick summary of its progress:

The Good:

  • The response has been overwhelmingly positive. Thank you so much for all your comments. I’ve read every one and I’m taking all of your suggestions under consideration.
  • People are using it! You have created thousands of walls and posts all over the world.
  • This weekend I was in Chicago and on Friday afternoon the first wall I’d seen created by another user appeared. That was awesome.

The Bad:

  • The app is buggy. I submitted a new version to Apple which is much better before the launch hoping it would make it in, but it did not. The process for submitting application updates is slow and completely out of the developers’ control. Luckily my situation is not as bad as the developers of Fit. Just consider this one a beta :)
  • It is missing some obvious features. I’ll get into features (and your requests) in a later post.
  • I have not been good at describing the application and how it works. This blog is meant to correct that.

The Ugly:

  • The first release of Graffitio contains a nasty location bug. Right now, if you open the application about 450 miles off the coast of Ghana, you’d see 2011 walls. What’s special about that point? It’s latitude and longitude are both 0.0. If you’ve had walls you’ve created disappear, there is a workaround. Close Graffitio and open up Maps. Hit the locate button and wait for it to locate you. Finally, go back to Graffitio, hit refresh, and create the wall. It’ll be in the right place.
  • While walls created in the middle of the ocean seem bad, they are just an annoyance. The real killer is walls that have the wrong location entirely. The same bug sometimes also causes a wall to be created with out of date location information. I’d love to hear your ideas on ways we could review location information.
  • There was some drama on the Infinite Wall yesterday prompting me to stick the following message to the top of the list:

    i knew we’d get to this point eventually. i didn’t expect it to happen within 48 hours.

    i don’t want to police these walls, but i also don’t want them to be inhospitable spaces. so right now, i am asking everybody to please think about our eventual goal of having a rich and vibrant community. thank you.

    if asking doesn’t work, i do have the ability to ban individual devices. i’m hoping after this warning, it will never get to that point.

    I have a lot I want to say about this, so I’m going to save it for a future post.

  • That’s it! My next post will discuss how Graffitio works and will answer the most common questions concerning walls, locations, and radii.

Around Places

Graffitio has launched! Download it from the iPhone App Store today. Here’s the description:

Attach conversations to the places you go and the things you see! As soon as you open Graffitio, it looks around you for Walls created by other users at restaurants, bars, stores, parks, events, or anywhere else you could imagine.

Read what other people have to say, and leave your own thoughts behind for others to find later. You can even create your own Walls. Graffitio connects you to people who have been there before and those who will follow.

Now on to more substantive posts…